protected function doSearch(PostArrayAdapter $params) { /* * Параметры */ $process = $params->int('process'); $action = $params->int('action'); $actionParent = $params->int('parent_action'); $dateFrom = $params->int('date_from'); $dateTo = $params->int('date_to'); /* * Запрос */ $what[] = 'id_rec'; $what[] = 'concat(ifnull(id_user, ""), concat("/", id_user_authed)) as user_authed'; $what[] = 'dt_event'; $what[] = 'n_action'; $what[] = 'v_data'; $what[] = 'b_encoded'; $where['id_process'] = $process; if ($actionParent) { $where['id_rec_parent'] = $actionParent; } if ($action) { $where['n_action'] = $action; } if ($dateFrom) { $where[] = Query::assocParam('dt_event', $dateFrom, true, '>='); } if ($dateTo) { $where[] = Query::assocParam('dt_event', $dateTo, true, '<='); } $order = 'dt_event asc, id_rec asc'; $limit = 500; /* * Работа с данными */ $query = Query::select($what, 'ps_audit', $where, null, $order, $limit); $result = PSDB::getArray($query); foreach ($result as &$row) { //Декодируем действие $row['n_action'] = BaseAudit::getByCode($process)->decodeAction($row['n_action'], false); //Декодируем данные $encoded = 1 * $row['b_encoded']; if ($encoded) { $row['v_data'] = print_r(BaseAudit::decodeData($row['v_data']), true); } unset($row['b_encoded']); } $results = new SearchResults($result, $query); $results->addSetting('v_data', SearchResults::COL_PRE); $results->addSetting('n_action', SearchResults::COL_NOWRAP); return $results; }
/** * метод загружает кол-во записей для каждого аудита */ public static function getAuditStatistic($dateTo) { $RESULT = array(); $statistic = AdminAuditBean::inst()->getProcessStatistic($dateTo); /* @var $audit BaseAudit */ foreach (BaseAudit::getAll() as $code => $audit) { foreach ($audit->getActions() as $actionName => $actionCode) { $RESULT[] = array('name' => $audit->getClass(), 'action' => "{$actionName} ({$actionCode})", 'cnt' => array_get_value_in(array($code, $actionCode), $statistic)); } } return $RESULT; }
/** @return MailAudit */ public static function inst() { return parent::inst(); }
public function getPeer() { if (self::$peer === null) { self::$peer = new AuditPeer(); } return self::$peer; }
public static final function getAll() { if (!is_array(self::$insts)) { //Только админ может загружать все аудиты AuthManager::checkAdminAccess(); //Инициализируем коллекцию self::$insts = array(); foreach (Classes::getDirClassNames(__DIR__, 'impl', __CLASS__) as $className) { $inst = $className::inst(); self::$insts[$inst->getProcessCode()] = $inst; } ksort(self::$insts); } return self::$insts; }