function run($request) { $id = $request->getVar('ID'); if (!is_numeric($id) && !preg_match('/^[0-9]+_[0-9]+$/', $id) || !$id) { echo "<p>Specify ?ID=(number) or ?ID=(ID)_(Code)</p>\n"; return; } $includeSelected = false; $includeChildren = true; $duplicates = 'Duplicate'; $selected = $id; $target = new Page(); $target->Title = "Import on " . date('Y-m-d H:i:s'); $target->write(); $targetType = 'SiteTree'; $from = ExternalContent::getDataObjectFor($selected); if ($from instanceof ExternalContentSource) { $selected = false; } $importer = null; $importer = $from->getContentImporter($targetType); if ($importer) { $importer->import($from, $target, $includeSelected, $includeChildren, $duplicates); } }
public function getSource() { if ($this->sourceObjectID && !$this->source) { $this->source = ExternalContent::getDataObjectFor($this->sourceObjectID); } return $this->source; }
/** * Get the object where the $keyField is equal to a certain value * * @param string|int $key * @return DataObject */ protected function objectForKey($key) { if ($this->keyField == 'ID') { return ExternalContent::getDataObjectFor($key); } else { return DataObject::get_one($this->sourceObject, "\"{$this->keyField}\" = '" . Convert::raw2sql($key) . "'"); } }
public function embedUrl() { $id = $this->request->param('ID'); if ($id) { $remoteItem = ExternalContent::getDataObjectFor($id); if ($remoteItem) { return $remoteItem->embedUrl; } } }
public function crawlsite($request) { $selected = isset($request['ID']) ? $request['ID'] : 0; if (!$selected) { $messageType = 'bad'; $message = _t('ExternalContent.NOITEMSELECTED', 'No item selected to crawl.'); } else { $source = ExternalContent::getDataObjectFor($selected); if (!$source instanceof ExternalContentSource) { $source = $from->getSource(); } $messageType = 'good'; $message = _t('ExternalContent.CONTENTMIGRATED', 'Crawling successful.'); try { $source->crawl(); } catch (Exception $e) { $messageType = 'bad'; $message = "Error crawling: " . $e->getMessage(); } } Session::set("FormInfo.Form_EditForm.formError.message", $message); Session::set("FormInfo.Form_EditForm.formError.type", $messageType); return $this->owner->getResponseNegotiator()->respond($this->owner->getRequest()); }
/** * Save the content source/item. */ public function save($urlParams, $form) { // Retrieve the record. $record = null; if (isset($urlParams['ID'])) { $record = ExternalContent::getDataObjectFor($urlParams['ID']); } if (!$record) { return parent::save($urlParams, $form); } if ($record->canEdit()) { // lets load the params that have been sent and set those that have an editable mapping if ($record->hasMethod('editableFieldMapping')) { $editable = $record->editableFieldMapping(); $form->saveInto($record, array_keys($editable)); $record->remoteWrite(); } else { $form->saveInto($record); $record->write(); } // Set the form response. $this->response->addHeader('X-Status', rawurlencode(_t('LeftAndMain.SAVEDUP', 'Saved.'))); } else { $this->response->addHeader('X-Status', rawurlencode(_t('LeftAndMain.SAVEDUP', 'You don\'t have write access.'))); } return $this->getResponseNegotiator()->respond($this->request); }
/** * Called to download this content item and stream it directly to the browser * * @param HTTP_Request $request */ public function download($request) { if ($request->param('ID')) { $object = ExternalContent::getDataObjectFor($request->param('ID')); if ($object && $object instanceof ExternalContentItem) { $object->streamContent(); } } }
/** * Lets process a single node, and collect its children */ public function process() { $remainingChildren = $this->remainingChildren; if (!count($remainingChildren)) { $this->isComplete = true; return; } $this->currentStep++; // lets process our first item $pair = array_shift($remainingChildren); $sourceObject = ExternalContent::getDataObjectFor($pair->sourceID); if (!$sourceObject) { $this->addMessage("Missing source object for " . $pair->sourceID, 'WARNING'); $this->remainingChildren = $remainingChildren; return; } $targetObject = DataObject::get_by_id($pair->targetType, $pair->targetID); if (!$targetObject) { $this->addMessage("Missing target object for {$pair->targetType} {$pair->sourceID}", 'WARNING'); $this->remainingChildren = $remainingChildren; return; } // lets do a single import first, then check the children and append them $pageType = $this->getExternalType($sourceObject); if (isset($this->contentTransforms[$pageType])) { $transformer = $this->contentTransforms[$pageType]; $result = $transformer->transform($sourceObject, $targetObject, $this->duplicateStrategy); // if there's more, then transform them if ($this->includeChildren && $result && $result->children && count($result->children)) { foreach ($result->children as $child) { $remainingChildren[] = new EC_SourceTarget($child->ID, $result->page->ID, $result->page->ClassName); $this->totalSteps++; } } } $this->remainingChildren = $remainingChildren; if (!count($remainingChildren)) { $this->isComplete = true; return; } }