/** * Write an ElementContent block with $Content. * * @return boolean */ public function setElementalContent(DataObjectInterface $record, $post_content) { if (!isset($this->_classes_using_wordpress_extension['ElementContent'])) { throw new WordpressImportException('Must put "WordpressImportDataExtension" on BaseElement.'); } if (!isset($this->_classes_using_elemental[$record->class])) { if ($record instanceof SiteTree) { throw new WordpressImportException('Must put "WordpressImportDataExtension" on SiteTree.'); } else { throw new WordpressImportException('Must put "WordpressImportDataExtension" on ' . $record->class . '.'); } } $post_content = trim($this->_db->process('post_content', $post_content)); $elementBlocks = $record->ElementArea()->Elements(); if (!$record->exists()) { $subRecord = ElementContent::create(); $subRecord->HTML = $post_content; $subRecord->WordpressData = $record->WordpressData; $elementBlocks->add($subRecord); // note(Jake): when page $record is written, the rest will write into it. 3.2+ at least. } else { $subRecord = $elementBlocks->filter(array('WordpressID' => $record->WordpressID, 'ClassName' => 'ElementContent'))->first(); $isNew = false; if (!$subRecord) { $subRecord = ElementContent::create(); $isNew = true; } if ($subRecord->HTML !== $post_content) { // Avoid getChangedFields triggering below by checking equality first. $subRecord->HTML = $post_content; } $subRecord->WordpressData = $record->WordpressData; $changedFields = $subRecord->getChangedFields(true, DataObject::CHANGE_VALUE); if ($changedFields) { try { $isPublished = $subRecord->isPublished(); $this->writeAndPublishRecord($subRecord); return true; } catch (Exception $e) { $this->log($subRecord, 'error', $e, 1); throw $e; } } if ($isNew) { $elementBlocks->add($subRecord); } } }