getParameter('module'); $action = $module_action->getParameter('action'); } else { $module = $module_action['module']; $action = $module_action['action']; } $log = new ApplicationLog(); $log->source_module = $module; $log->source_action = $action; if (!empty($object)) { if (is_object($object)) { $log->object_class = get_class($object); @$log->object_id = $object->id; $log->object_action = $method; } else { $log->object_class = $object; $log->object_action = $method; } } $log->params = $params; $log->save(); return $log; } /* * priklad definice $announceDef * $announceDef = array( array('credentials' => 'card_supervisor', 'type' => array('dashboard', 'email')), array('credentials' => 'card_view', 'ownership' => array('column' => 'user_id'), 'type' => array('dashboard')) ); */ public static function logWithUserAnnounce($module_action, $object = null, $method = null, $params = array(), $announceDef = array()) { $log = self::log($module_action, $object, $method, $params); if (!empty($announceDef)) { $userlist = Doctrine::getTable('sfGuardUser')->findAll(); $user_id = sfContext::hasInstance() ? sfContext::getInstance()->getUser()->getId() : null; if (count($userlist) > 0) { foreach($userlist AS $user) { if (@$user->id == $user_id) continue; foreach($announceDef AS $aD) { if (!$user->hasPermission($aD['credentials'])) continue; if (!empty($aD['ownership']['column']) && ($object->$aD['ownership']['column'] != $user->id)) continue; if (empty($aD['type'])) $aD['type'] = array('dashboard'); if (in_array('dashboard', $aD['type'])) { $log_user = new ApplicationLogUser(); $log_user->user_id = $user->id; $log_user->ApplicationLog = $log; $log_user->save(); } } } } } } public static function markAsRead($user_id, $object_class, $object_method, $object_id = null) { $query = Doctrine::getTable('ApplicationLogUser') ->createQuery() ->select('u.*') ->from('ApplicationLogUser u') ->leftJoin('u.ApplicationLog l') ->where('u.user_id = ?', $user_id) ->andWhere('l.object_class = ?', $object_class); if ($object_method != '*') $query->andWhere('l.object_action = ?', $object_method); if (!empty($object_id)) $query->andWhere('l.object_id = ?', $object_id); $result = $query->execute(); foreach($result AS $log_user) { $log_user->visited_at = date('Y-m-d H:i:s'); $log_user->save(); } } } ?>