Exemplo n.º 1
0
 public function onSolrQuery(&$p)
 {
     $result =& $p['result'];
     $data =& $result['data'];
     $actionLogIds = array();
     $comments = new Objects\Plugins\Comments();
     //format ago date and collect log action ids
     foreach ($data as &$doc) {
         $la = Objects::getCachedObject($doc['id'])->getLastActionData();
         $la['agoText'] = Util\formatAgoTime($la['time']);
         $la['uids'] = array_reverse(array_keys($la['users']));
         $doc['lastAction'] = $la;
         $actionLogId = $la['users'][$la['uids'][0]];
         $doc['comments'] = $comments->getData($doc['id']);
         $actionLogIds[$actionLogId] =& $doc;
     }
     $logRecs = DM\Log::getRecords(array_keys($actionLogIds));
     foreach ($logRecs as $r) {
         $d = Util\jsonDecode($r['data']);
         $obj = Objects::getCachedObject($actionLogIds[$r['id']]['id']);
         $diff = $obj->getDiff($d);
         if (!empty($diff)) {
             $html = '';
             foreach ($diff as $fn => $fv) {
                 $html .= "<tr><th>{$fn}</th><td>{$fv}</td></tr>";
             }
             $actionLogIds[$r['id']]['diff'] = "<table class=\"as-diff\">{$html}</table>";
         }
     }
 }
Exemplo n.º 2
0
 /**
  * add an action to log
  * @param array $p action params
  *     array(
  *       @varchar "type" - action type
  *       ,object "old" - old object
  *       ,object "new" - new object
  *     )
  * @return int logged action id
  */
 public static function add(&$p)
 {
     $userId = User::getId();
     //check if log not disabled
     if (Config::getFlag('disableActivityLog') || empty($userId)) {
         return;
     }
     $data = empty($p['new']) ? empty($p['old']) ? $p['data'] : $p['old']->getData() : $p['new']->getData();
     fireEvent('beforelogadd', $p);
     $p['logData'] = static::getLogData($p);
     $p['activityData'] = static::getActivityData($data);
     $params = array('object_id' => $data['id'], 'object_pid' => @$data['pid'], 'user_id' => $userId, 'action_type' => $p['type'], 'data' => Util\jsonEncode($p['logData']), 'activity_data_db' => Util\jsonEncode($p['activityData']));
     $p['action_id'] = DM\Log::create($params);
     $params['id'] = $p['action_id'];
     static::addSolrRecord($p);
     static::addNotificationRecords($params);
     fireEvent('logadd', $p);
     return $p['action_id'];
 }
Exemplo n.º 3
0
 /**
  * placeholder
  * @return [type] [description]
  */
 public function testRecordCreate()
 {
     DM\Log::update(null);
 }
Exemplo n.º 4
0
/**
 * split notification into number of actions it consist of
 * @param  array $notification
 * @return array
 */
function getNotificationActions($notification)
{
    $rez = array();
    $actionIds = Util\toNumericArray($notification['action_ids']);
    $rez[sizeof($actionIds) - 1] = $notification;
    //remove last action id (already loaded)
    array_shift($actionIds);
    //add all actions if multiple
    if (!empty($actionIds)) {
        $actionIds = array_reverse($actionIds);
        $recs = DM\Log::getRecords($actionIds);
        $actionIds = array_flip($actionIds);
        foreach ($recs as $r) {
            $notification['object_pid'] = $r['object_pid'];
            $notification['action_time'] = $r['action_time'];
            $notification['data'] = Util\jsonDecode($r['data']);
            $notification['activity_data_db'] = Util\jsonDecode($r['activity_data_db']);
            $rez[$actionIds[$r['id']]] = $notification;
        }
    }
    return $rez;
}