/** * @param array $options */ public function save(array $options = []) { if (!$this->identifier || $this->identifier == '') { $this->identifier = \CoandaCMS\Coanda\Urls\Slugifier::convert($this->label); } parent::save($options); }
/** * */ private function checkSetup() { if (!$this->name) { throw new \InvalidArgumentException('Please specify a name for this page type: ' . get_class($this)); } if (!$this->identifier) { $this->identifier = str_replace('-', '_', Slugifier::convert($this->name)); } }
/** * @param $data * * @throws ValidationException */ private static function validateInput($data) { $invalid_fields = []; if (!isset($data['name']) || $data['name'] == '') { $invalid_fields['name'] = 'Please enter a name'; } if (!isset($data['identifier']) || $data['identifier'] == '') { $data['identifier'] = Slugifier::convert($data['name']); } if (count($invalid_fields) > 0) { throw new ValidationException($invalid_fields); } return $data; }
/** * @param $version * @return mixed|string */ private function generateSlug($version) { $base_slug = $version->page->parent_slug; $page_id = $version->page->id; foreach ($version->attributes as $attribute) { if ($attribute->generates_slug) { $content = $attribute->content; if ($content && $content !== '') { $new_slug = Slugifier::convert($content); $tries = 50; for ($i = 0; $i < $tries; $i++) { if ($i > 0) { $new_slug = $new_slug . '-' . $i; } if ($this->urls->canUse($base_slug . '/' . $new_slug, 'page', $page_id)) { return $new_slug; } } } } } return ''; }