Source of file UUIDExtension.php
Size: 1,252 Bytes - Last Modified: 2021-12-23T10:02:44+00:00
/var/www/docs.ssmods.com/process/src/src/UUIDExtension.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | <?php namespace Madmatt\UUID; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\ReadonlyField; use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DB; class UUIDExtension extends DataExtension { private static $db = [ 'UUID' => UUIDField::class ]; private static $indexes = [ 'UUID' => [ 'type' => 'unique' ] ]; public function onBeforeWrite() { if (!$this->owner->UUID) { $this->owner->UUID = UUIDField::generate_uuid(); } } public function updateCMSFields(FieldList $fields) { $fields->insertAfter('ID', ReadonlyField::create('UUID', 'Unique ID')); } public function requireDefaultRecords() { // Find any records of this class that don't have a UUID already and write() them to generate the UUID // (see onBeforeWrite() above) $records = $this->owner::get()->filter('UUID', null); if ($records) { /** @var DataObject $r */ foreach ($records as $r) { $r->write(); DB::alteration_message(sprintf('Added UUID to %s, ID %d', get_class($r), $r->ID), 'changed'); } } } } |