/** * Import the Resource into Articles * * @param modResource $resource * @return boolean */ public function importResource(modResource $resource) { $resource->set('searchable', true); $resource->set('richtext', true); $resource->set('isfolder', false); $resource->set('cacheable', true); $resource->set('class_key', 'Article'); $resource->set('parent', $this->container->get('id')); $settings = $this->container->getProperties('articles'); $resource->setProperties($settings, 'articles'); if (!empty($this->config['modx-change-template'])) { $resource->set('template', $settings['articleTemplate']); } $this->setResourceUri($resource); if (!empty($this->config['modx-commentsThreadNameFormat'])) { $this->importComments($resource); } $saved = true; if (!$this->debug) { $saved = $resource->save(); if ($saved) { $resource->setTVValue('articlestags', $resource->get('tags')); } } return $saved; }
/** * Used to set values on the resource record sent to the template for derivative classes * * @return void */ public function prepareResource() { $settings = $this->resource->getProperties('articles'); if (empty($settings)) { $settings = array(); } $defaultContainerTemplate = $this->modx->getOption('articles.default_container_template', $settings, false); if (empty($defaultContainerTemplate)) { /** @var modTemplate $template */ $template = $this->modx->getObject('modTemplate', array('templatename' => 'sample.ArticlesContainerTemplate')); if ($template) { $defaultContainerTemplate = $template->get('id'); } } $this->resourceArray['template'] = $defaultContainerTemplate; $defaultArticleTemplate = $this->modx->getOption('articles.default_article_template', $settings, false); if (empty($defaultArticleTemplate)) { /** @var modTemplate $template */ $template = $this->modx->getObject('modTemplate', array('templatename' => 'sample.ArticleTemplate')); if ($template) { $defaultArticleTemplate = $template->get('id'); } } $this->resourceArray['setting_articleTemplate'] = $defaultArticleTemplate; foreach ($settings as $k => $v) { $this->resourceArray['setting_' . $k] = $v; } }
/** * Used to set values on the resource record sent to the template for derivative classes * * @return void */ public function prepareResource() { $settings = $this->resource->getProperties('articles'); if (is_array($settings) && !empty($settings)) { foreach ($settings as $k => $v) { $this->resourceArray['setting_' . $k] = $v; } } }
/** * Override modResourceUpdateProcessor::beforeSave to provide custom functionality, saving settings for the container * to a custom field in the DB * {@inheritDoc} * @return boolean */ public function beforeSave() { $properties = $this->getProperties(); $settings = $this->object->getProperties('articles'); $notificationServices = array(); foreach ($properties as $k => $v) { if (substr($k, 0, 8) == 'setting_') { $key = substr($k, 8); if ($v === 'false') { $v = 0; } if ($v === 'true') { $v = 1; } switch ($key) { case 'notifyTwitter': if ($v) { $notificationServices[] = 'twitter'; } break; case 'notifyTwitterConsumerKey': if (!empty($v)) { $v = $this->object->encrypt($v); } break; case 'notifyTwitterConsumerKeySecret': if (!empty($v)) { $v = $this->object->encrypt($v); } break; case 'notifyFacebook': if ($v) { $notificationServices[] = 'facebook'; } break; } $settings[$key] = $v; } } $settings['notificationServices'] = implode(',', $notificationServices); $this->object->setProperties($settings, 'articles'); return parent::beforeSave(); }