-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShortcodesConverterTask.php
More file actions
41 lines (37 loc) · 2.5 KB
/
Copy pathShortcodesConverterTask.php
File metadata and controls
41 lines (37 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
class ShortcodesConverterTask extends BuildTask {
public function run($request) {
if (!(DB::getConn() instanceof MySQLDatabase)){
user_error('Sorry this task only runs on Mysql for the moment');
}
if (Director::is_cli() || Permission::check('ADMIN')){
$dataClasses = ClassInfo::subclassesFor('DataObject');
$htmlTextClasses = ClassInfo::subclassesFor('HTMLText');
array_shift($dataClasses);
foreach($dataClasses as $dataClass){
$fields = DataObject::custom_database_fields($dataClass);
echo "\n Inspecting class ".$dataClass."\n";
foreach($fields as $fieldName=>$fieldType){
if (in_array($fieldType, $htmlTextClasses)){
echo "Field ".$fieldName." is of type HTMLText (or descendant) and is now converted\n";
DB::query("UPDATE \"$dataClass\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[sitetree_link%20', '[sitetree_link,')");
DB::query("UPDATE \"$dataClass\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[sitetree_link ', '[sitetree_link,')");
DB::query("UPDATE \"$dataClass\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[document_link%20', '[document_link,')");
DB::query("UPDATE \"$dataClass\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[document_link ', '[document_link,')");
if (Object::has_extension($dataClass, 'Versioned')){
echo "Class ".$dataClass." is versioned; converting live and versioned records too\n";
DB::query("UPDATE \"{$dataClass}_Live\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[sitetree_link%20', '[sitetree_link,')");
DB::query("UPDATE \"{$dataClass}_Live\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[sitetree_link ', '[sitetree_link,')");
DB::query("UPDATE \"{$dataClass}_Live\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[document_link%20', '[document_link,')");
DB::query("UPDATE \"{$dataClass}_Live\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[document_link ', '[document_link,')");
DB::query("UPDATE \"{$dataClass}_versions\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[sitetree_link%20', '[sitetree_link,')");
DB::query("UPDATE \"{$dataClass}_versions\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[sitetree_link ', '[sitetree_link,')");
DB::query("UPDATE \"{$dataClass}_versions\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[document_link%20', '[document_link,')");
DB::query("UPDATE \"{$dataClass}_versions\" SET \"$fieldName\" = REPLACE(\"$fieldName\", '[document_link ', '[document_link,')");
}
}
}
}
}
}
}