/** * 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); } }
/** * 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); }
/** * 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); }); }