Source of file FileAttachmentFieldTrack.php
Size: 2,469 Bytes - Last Modified: 2021-12-23T10:56:07+00:00
/var/www/docs.ssmods.com/process/src/src/FileAttachmentFieldTrack.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | <?php namespace UncleCheese\Dropzone; use SilverStripe\Assets\File; use SilverStripe\Control\Controller; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObjectInterface; /** * Track files as they're uploaded and remove when they've been saved. * * @package unclecheese/silverstripe-dropzone */ class FileAttachmentFieldTrack extends DataObject { private static $db = array( 'ControllerClass' => 'Varchar(60)', 'RecordID' => 'Int', 'RecordClass' => 'Varchar(60)', ); private static $has_one = array( 'File' => File::class, ); private static $table_name = 'FileAttachmentFieldTrack'; public static function untrack($fileIDs) { if (!$fileIDs) { return; } $fileIDs = (array)$fileIDs; $trackRecords = FileAttachmentFieldTrack::get()->filter(array('FileID' => $fileIDs)); foreach ($trackRecords as $trackRecord) { $trackRecord->delete(); } } public function onBeforeWrite() { parent::onBeforeWrite(); if (!$this->exists()) { // Store record this file was tracked on. if (!$this->RecordID && Controller::has_curr()) { $controller = Controller::curr(); $pageRecord = null; if ($controller->hasMethod('data')) { // Store page visiting on frontend (ContentController) $pageRecord = $controller->data(); } else if ($controller->hasMethod('currentPageID')) { // Store editing page in CMS (LeftAndMain) $id = $controller->currentPageID(); $pageRecord = $controller->getRecord($id); } else if ($controller->hasMethod('getRecord')) { $pageRecord = $controller->getRecord(); } if ($pageRecord && $pageRecord instanceof DataObjectInterface) { $this->RecordID = $pageRecord->ID; $this->RecordClass = $pageRecord->ClassName; } } } } public function setRecord($record) { $this->RecordID = $record->ID; $this->RecordClass = $record->ClassName; } public function Record() { if ($this->RecordClass && $this->RecordID) { return DataObject::get_one($this->RecordClass, "ID = ".(int)$this->RecordID); } } } |