/**
  * Handle the onBeforeSaveEntry event.
  *
  * @param Event $event
  */
 public function onBeforeSaveEntry(Event $event)
 {
     // Get entry id to save
     $id = $event->params['entry']->id;
     if (!$event->params['isNewEntry']) {
         // Get old entry from db
         $entry = EntryModel::populateModel(EntryRecord::model()->findById($id));
         // Get fields
         $this->before = $this->fields($entry);
     } else {
         // Get fields
         $this->before = $this->fields($event->params['entry'], true);
     }
 }
Exemplo n.º 2
0
 /**
  * Populates a new model instance with a given set of attributes.
  *
  * @static
  * @param mixed $attributes
  * @return EntryVersionModel
  */
 public static function populateModel($attributes)
 {
     if ($attributes instanceof \CModel) {
         $attributes = $attributes->getAttributes();
     }
     // Merge the version and entry data
     $entryData = $attributes['data'];
     $fieldContent = isset($entryData['fields']) ? $entryData['fields'] : null;
     $attributes['versionId'] = $attributes['id'];
     $attributes['id'] = $attributes['entryId'];
     $title = $entryData['title'];
     unset($attributes['data'], $entryData['fields'], $attributes['entryId'], $entryData['title']);
     $attributes = array_merge($attributes, $entryData);
     // Initialize the version
     $version = parent::populateModel($attributes);
     $version->getContent()->title = $title;
     if ($fieldContent) {
         $version->getContent()->setValuesByFieldId($fieldContent);
     }
     return $version;
 }
 /**
  * @inheritDoc IElementType::populateElementModel()
  *
  * @param array $row
  *
  * @return BaseElementModel|BaseModel|void
  */
 public function populateElementModel($row)
 {
     return EntryModel::populateModel($row);
 }
Exemplo n.º 4
0
 /**
  * Initialize the category saving/deleting events.
  */
 public function log()
 {
     // Get values before saving
     craft()->on('entries.onBeforeSaveEntry', function (Event $event) {
         // Get entry id to save
         $id = $event->params['entry']->id;
         if (!$event->params['isNewEntry']) {
             // Get old entry from db
             $entry = EntryModel::populateModel(EntryRecord::model()->findById($id));
             // Get fields
             craft()->auditLog_entry->before = craft()->auditLog_entry->fields($entry);
         } else {
             // Get fields
             craft()->auditLog_entry->before = craft()->auditLog_entry->fields($event->params['entry'], true);
         }
     });
     // Get values after saving
     craft()->on('entries.onSaveEntry', function (Event $event) {
         // Get saved entry
         $entry = $event->params['entry'];
         // Get fields
         craft()->auditLog_entry->after = craft()->auditLog_entry->fields($entry);
         // New row
         $log = new AuditLogRecord();
         // Get user
         $user = craft()->userSession->getUser();
         // Set user id
         $log->userId = $user ? $user->id : null;
         // Set element type
         $log->type = ElementType::Entry;
         // Set origin
         $log->origin = craft()->request->isCpRequest() ? craft()->config->get('cpTrigger') . '/' . craft()->request->path : craft()->request->path;
         // Set before
         $log->before = craft()->auditLog_entry->before;
         // Set after
         $log->after = craft()->auditLog_entry->after;
         // Set status
         $log->status = $event->params['isNewEntry'] ? AuditLogModel::CREATED : AuditLogModel::MODIFIED;
         // Save row
         $log->save(false);
         // Callback
         craft()->auditLog->elementHasChanged(ElementType::Entry, $entry->id, craft()->auditLog_entry->before, craft()->auditLog_entry->after);
     });
     // Get values before deleting
     craft()->on('entries.onBeforeDeleteEntry', function (Event $event) {
         // Get deleted entry
         $entry = $event->params['entry'];
         // Get fields
         craft()->auditLog_entry->before = craft()->auditLog_entry->fields($entry);
         craft()->auditLog_entry->after = craft()->auditLog_entry->fields($entry, true);
         // New row
         $log = new AuditLogRecord();
         // Set user id
         $log->userId = craft()->userSession->getUser()->id;
         // Set element type
         $log->type = ElementType::Entry;
         // Set origin
         $log->origin = craft()->request->isCpRequest() ? craft()->config->get('cpTrigger') . '/' . craft()->request->path : craft()->request->path;
         // Set before
         $log->before = craft()->auditLog_entry->before;
         // Set after
         $log->after = craft()->auditLog_entry->after;
         // Set status
         $log->status = AuditLogModel::DELETED;
         // Save row
         $log->save(false);
         // Callback
         craft()->auditLog->elementHasChanged(ElementType::Entry, $entry->id, craft()->auditLog_entry->before, craft()->auditLog_entry->after);
     });
 }