public function onAfterWrite() { parent::onAfterWrite(); foreach ($this->owner->Categories() as $category) { $category->HolderPageID = $this->owner->ParentID; $category->write(); } foreach ($this->owner->Tags() as $tag) { $tag->HolderPageID = $this->owner->ParentID; $tag->write(); } }
public function onAfterWrite() { parent::onAfterWrite(); $ID = $this->owner->ID; $className = $this->owner->ClassName; $subClasses = ClassInfo::dataClassesFor($className); $versionsToDelete = array(); $version_limit = Config::inst()->get('VersionTruncator', 'version_limit'); if (is_numeric($version_limit)) { $search = DB::query('SELECT "RecordID", "Version" FROM "SiteTree_versions" WHERE "RecordID" = ' . $ID . ' AND "ClassName" = \'' . $className . '\' AND "PublisherID" > 0 ORDER BY "LastEdited" DESC LIMIT ' . $version_limit . ', 200'); foreach ($search as $row) { array_push($versionsToDelete, array('RecordID' => $row['RecordID'], 'Version' => $row['Version'])); } } $draft_limit = Config::inst()->get('VersionTruncator', 'draft_limit'); if (is_numeric($draft_limit)) { $search = DB::query('SELECT "RecordID", "Version" FROM "SiteTree_versions" WHERE "RecordID" = ' . $ID . ' AND "ClassName" = \'' . $className . '\' AND "PublisherID" = 0 ORDER BY "LastEdited" DESC LIMIT ' . $draft_limit . ', 200'); foreach ($search as $row) { array_push($versionsToDelete, array('RecordID' => $row['RecordID'], 'Version' => $row['Version'])); } } $delete_old_page_types = Config::inst()->get('VersionTruncator', 'delete_old_page_types'); if ($delete_old_page_types) { $search = DB::query('SELECT "RecordID", "Version" FROM "SiteTree_versions" WHERE "RecordID" = ' . $ID . ' AND "ClassName" != \'' . $className . '\''); foreach ($search as $row) { array_push($versionsToDelete, array('RecordID' => $row['RecordID'], 'Version' => $row['Version'])); } } /* If versions to delete, start deleting */ if (count($versionsToDelete) > 0) { $affected_tables = array(); foreach ($subClasses as $subclass) { $versionsTable = $subclass . '_versions'; foreach ($versionsToDelete as $d) { DB::query('DELETE FROM "' . $versionsTable . '"' . ' WHERE "RecordID" = ' . $d['RecordID'] . ' AND "Version" = ' . $d['Version']); if (DB::affectedRows() == 1) { array_push($affected_tables, $versionsTable); } } } $this->vacuumTables($affected_tables); } }