Example #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>";
         }
     }
 }
/**
 * 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;
}