Source of file Sluggable.php
Size: 2,182 Bytes - Last Modified: 2021-12-23T10:04:55+00:00
/var/www/docs.ssmods.com/process/src/src/Extensions/Sluggable.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | <?php namespace Milkyway\SS\Behaviours\Extensions; /** * Milkyway Multimedia * Sluggable.php * * @package milkyway-multimedia/ss-behaviours * @author Mellisa Hankins <mell@milkywaymultimedia.com.au> */ use DataExtension; use Milkyway\SS\Behaviours\Traits\Sluggable as CommonProperties; use Milkyway\SS\Behaviours\Traits\SilverstripeExtension; class Sluggable extends DataExtension { use CommonProperties; use SilverstripeExtension { setOwner as _setOwner; } /** * Add a Sluggable extension to a DataObject * * DataObject: * extensions: * - Sluggable('ID','Salt',32,1) * * @param string $encryptUsing (must be of type Int) * @param string $salt * @param int $length * @param boolean $unique */ public function __construct($encryptUsing = 'ID', $salt = '', $length = 32, $unique = true) { parent::__construct(); $this->init($encryptUsing, $salt, $length, $unique); $this->initRecord('slugWorkingRecord'); } public function setOwner($owner, $ownerBaseClass = null, $workingRecordField = 'slugWorkingRecord') { $this->_setOwner($owner, $ownerBaseClass, $workingRecordField); } public static function get_extra_config($class, $extensionClass, $args) { $length = isset($args[2]) ? $args[2] : 32; $dbField = isset($args[4]) ? $args[4] : 'Slug'; $saltField = isset($args[5]) ? $args[5] : 'Slug_Salt'; return [ 'db' => [ $dbField => 'Varchar(' . $length . ')', $saltField => 'Varchar(255)', ], 'indexes' => [ $dbField => true, ], ]; } /** * Hook for onBeforeWrite to generate a hash */ public function onBeforeWrite() { if (!$this->executeOnBeforeWrite) { return; } $this->generateSlug(); } /** * Hook for onAfterWrite to generate a hash */ public function onAfterWrite() { if (!$this->executeOnAfterWrite) { return; } $this->generateSlugAndSave(); } } |