mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
BUGFIX Don't call LinkTracking/ImageTracking relationships in HTMLEditorField->saveInto() unless we have internal links/files to save. This helps to improve CMS saving times on records with many HTMLEditorField instances
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@114139 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
19f7484144
commit
eeed9ce189
@ -138,26 +138,33 @@ class HtmlEditorField extends TextareaField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Save file & link tracking data.
|
// Save file & link tracking data.
|
||||||
if($record->ID && $record->many_many('LinkTracking') && $tracker = $record->LinkTracking()) {
|
|
||||||
$filter = sprintf('"FieldName" = \'%s\' AND "SiteTreeID" = %d', $this->name, $record->ID);
|
|
||||||
DB::query("DELETE FROM \"$tracker->tableName\" WHERE $filter");
|
|
||||||
|
|
||||||
if($linkedPages) foreach($linkedPages as $item) {
|
if($record->ID && $record->many_many('LinkTracking')) {
|
||||||
|
$filter = sprintf('"FieldName" = \'%s\' AND "SiteTreeID" = %d', $this->name, $record->ID);
|
||||||
|
DB::query("DELETE FROM \"SiteTree_LinkTracking\" WHERE $filter");
|
||||||
|
|
||||||
|
if($linkedPages) {
|
||||||
|
$tracker = $record->LinkTracking();
|
||||||
|
foreach($linkedPages as $item) {
|
||||||
$SQL_fieldName = Convert::raw2sql($this->name);
|
$SQL_fieldName = Convert::raw2sql($this->name);
|
||||||
DB::query("INSERT INTO \"SiteTree_LinkTracking\" (\"SiteTreeID\",\"ChildID\", \"FieldName\")
|
DB::query("INSERT INTO \"SiteTree_LinkTracking\" (\"SiteTreeID\",\"ChildID\", \"FieldName\")
|
||||||
VALUES ($record->ID, $item, '$SQL_fieldName')");
|
VALUES ($record->ID, $item, '$SQL_fieldName')");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($record->ID && $record->many_many('ImageTracking') && $tracker = $record->ImageTracking()) {
|
if($record->ID && $record->many_many('ImageTracking')) {
|
||||||
$filter = sprintf('"FieldName" = \'%s\' AND "SiteTreeID" = %d', $this->name, $record->ID);
|
$filter = sprintf('"FieldName" = \'%s\' AND "SiteTreeID" = %d', $this->name, $record->ID);
|
||||||
DB::query("DELETE FROM \"$tracker->tableName\" WHERE $filter");
|
DB::query("DELETE FROM \"SiteTree_ImageTracking\" WHERE $filter");
|
||||||
|
|
||||||
$fieldName = $this->name;
|
$fieldName = $this->name;
|
||||||
if($linkedFiles) foreach($linkedFiles as $item) {
|
if($linkedFiles) {
|
||||||
|
$tracker = $record->ImageTracking();
|
||||||
|
foreach($linkedFiles as $item) {
|
||||||
$tracker->add($item, array('FieldName' => $this->name));
|
$tracker->add($item, array('FieldName' => $this->name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$record->{$this->name} = $htmlValue->getContent();
|
$record->{$this->name} = $htmlValue->getContent();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user