public function process() { $canDuplicate = $this->beforeDuplicate(); if ($canDuplicate !== true) { return $this->failure($canDuplicate); } $oldValues = $this->oldTemplate->toArray(); /** @var CollectionTemplateColumn[] $oldColumns */ $oldColumns = $this->oldTemplate->Columns; $oldValues['name'] = $this->getProperty('name'); $oldValues['description'] = $this->getProperty('description'); $oldValues['global_template'] = false; /** @var CollectionTemplate $newTemplate */ $newTemplate = $this->modx->newObject($this->classKey); $newTemplate->fromArray($oldValues); $newColumns = array(); foreach ($oldColumns as $column) { $columnArray = $column->toArray(); unset($columnArray['template']); /** @var CollectionTemplateColumn $newColumn */ $newColumn = $this->modx->newObject('CollectionTemplateColumn'); $newColumn->fromArray($columnArray); $newColumns[] = $newColumn; } $newTemplate->addMany($newColumns, 'Columns'); $newTemplate->save(); return $this->success('', array('id' => $newTemplate->get('id'))); }
public function afterSave() { $global = $this->getProperty('global_template'); if ($global == true) { $this->modx->updateCollection('CollectionTemplate', array('global_template' => false), array('id:!=' => $this->object->id)); } $templates = $this->getProperty('templates'); $templates = array_filter($templates); $this->object->setTemplates($templates); return parent::afterSave(); }