Source of file FileAttachmentFieldTrack.php
Size: 2,211 Bytes - Last Modified: 2021-12-23T10:37:36+00:00
/var/www/docs.ssmods.com/process/src/code/FileAttachmentFieldTrack.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | <?php /** * 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', ); 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); } } } |