Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- models\Logs\Events.php
- */
- class Logs_Events extends Kwf_Events_Subscriber
- {
- public function getListeners()
- {
- return array(
- array(
- 'event' => 'Kwf_Events_Event_Row_Updated',
- 'callback' => 'onUpdated'
- ),
- array(
- 'event' => 'Kwf_Events_Event_Row_Deleted',
- 'callback' => 'onDeleted'
- ),
- array(
- 'event' => 'Kwf_Events_Event_Row_Inserted',
- 'callback' => 'onInserted'
- ),
- );
- }
- public function onUpdated(Kwf_Events_Event_Row_Updated $ev)
- {
- $object = $this->getObjectValues($ev->row);
- $message = $this->changeColumnsCheck($ev->row);
- if ($message) {
- $this->writeLog($ev->class, 'edited', $message, $object);
- } else $this->writeLog($ev->class, 're-saved', $object);
- }
- public function onDeleted(Kwf_Events_Event_Row_Deleted $ev)
- {
- $object = $this->getObjectValues($ev->row);
- $this->writeLog($ev->class, 'deleted', NULL, $object);
- }
- public function onInserted(Kwf_Events_Event_Row_Inserted $ev)
- {
- //prevent endless loop
- if ($ev->class != 'Logs') {
- $object = $this->getObjectValues($ev->row);
- $message = $this->changeColumnsCheck($ev->row);
- $this->writeLog($ev->class, 'created', $message, $object);
- }
- }
- public function getObjectValues($row) {
- //show only non-empty columns
- $valuesArray = array_filter($row->toArray());
- $object = '';
- $lastKey = end(array_keys($valuesArray));
- foreach ($valuesArray as $key => $value) {
- if ($key == $lastKey) {
- $object .= $key . ': ' . $value;
- } else $object .= $key . ': ' . $value . "\n";
- }
- return $object;
- }
- public function changeColumnsCheck($row)
- {
- //if we have changes
- $changedCols = $row->getDirtyColumns();
- if ($changedCols) {
- $message = '';
- $lastKey = end(array_keys($changedCols));
- foreach ($changedCols as $key => $col) {
- $oldValue = $row->getCleanValue($col);
- $newValue = $row->$col;
- if(empty($oldValue)) $oldValue = '(empty)';
- if(empty($newValue)) $newValue = '(empty)';
- if ($key == $lastKey) {
- $message .= $col . ': from ' . $oldValue . ' to ' . $newValue;
- } else $message .= $col . ': from ' . $oldValue . ' to ' . $newValue . "\n";
- }
- return $message;
- } else return false;
- }
- public function writeLog($modelName, $messageType, $message = NULL, $object)
- {
- $user = Kwf_Registry::get('userModel')->getAuthedUser();
- $data = array(
- 'userId' => $user->id,
- 'userName' => $user->lastname . ' ' . $user->firstname,
- 'model' => $modelName,
- 'messageType' => $messageType,
- 'message' => $message,
- 'object' => $object
- );
- $logsModel = Kwf_Model_Abstract::getInstance('Logs');
- $logsModel->createRow($data)->save();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement