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; }