fetch(); $entity = HLBT::compileEntity($hlblock); static::$qId = $entity->getDataClass(); } return static::$qId; } public static function GetClass() { if(!static::$class) static::$class = static::GetEntityClass(static::$classId); return static::$class; } public static function GetActionList() { $id = 98; if(isset(static::$enums[$id])) return static::$enums[$id]; $ar = []; $rows = CUserFieldEnum::GetList(array("SORT"=>"ASC"), array("USER_FIELD_ID" => $id)); while($row = $rows->GetNext()) $ar[$row["ID"]] = $row["VALUE"]; static::$enums[$id] = $ar; return $ar; } public static function Add($recordId, $type, $data = null, $prev = null) { global $USER; $userId = $USER ? $USER->GetId() : null; $class = static::GetClass(); $t = ConvertTimeStamp(time(), 'FULL'); $data = [ 'UF_DATE' => $t, 'UF_USER' => $userId, 'UF_RECORD_ID' => $recordId, 'UF_ACTION' => $type, 'UF_DATA_PREV' => ($prev ? serialize($prev) : null), 'UF_DATA' => ($data ? serialize($data) : null), ]; $result = $class::add($data); if($result->isSuccess()) return $result->getId(); return 0; } static public function GetRow($id) { $class = static::GetClass(); $res = []; $row = $class::getList(['select' => ['*'], 'filter' => ['ID' => $id]])->fetch(); return static::GetRowData($row); } static public function GetRowData($row) { if(!$row) return null; $aAction = static::GetActionList(); $p = []; $p['id'] = $row['ID']; $p['datetime'] = (int)MakeTimeStamp($row['UF_DATE']) + 60*60*2; $p['date'] = FormatDate('d.m.Y H:i:s', $p['datetime']); $p['record'] = Register::GetRecord($row['UF_RECORD_ID']); $p['user'] = Service::GetUserInfo($row['UF_USER']); $p['action_id'] = $row['UF_ACTION']; $p['action'] = isset($aAction[$p['action_id']]) ? $aAction[$p['action_id']] : ''; $p['data_prev'] = $row['UF_DATA_PREV']; $p['data'] = $row['UF_DATA']; return $p; } public static function GetFilter($type = 0, $dateFrom = 0, $dateTo = 0, $userId = 0, $record_id = 0) { $fil = []; if($record_id) $fil['ID'] = $record_id; if($userId) $fil['UF_USER'] = $userId; if($record_id) $fil['UF_RECORD_ID'] = $record_id; if($type) $fil['UF_ACTION'] = $type; if($dateFrom) $fil['>=UF_DATE'] = ConvertTimeStamp($dateFrom + 2*60*60, 'FULL'); if($dateTo) $fil['<=UF_DATE'] = ConvertTimeStamp($dateTo + 2*60*60, 'FULL'); return $fil; } public static function GetTotal($type = 0, $dateFrom = 0, $dateTo = 0, $userId = 0, $record_id = 0) { $class = static::GetClass(); $fil = static::GetFilter($type, $dateFrom, $dateTo, $userId, $record_id); $row = $class::getList(['select' => ['CNT'], 'filter' => $fil, 'runtime' => array( new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(*)') )])->fetch(); return ($row ? $row['CNT'] : 0); } public static function GetAll(&$total, $type = 0, $dateFrom = 0, $dateTo = 0, $pageNum = 0, $count = 10, $userId = 0, $record_id = 0) { $class = static::GetClass(); $fil = static::GetFilter($type, $dateFrom, $dateTo, $userId, $record_id); $total = static::GetTotal($type, $dateFrom, $dateTo, $userId, $record_id); $sort = ['UF_DATE' => 'DESC']; $rows = $class::getList(['select' => ['*'], 'filter' => $fil, 'order' => $sort, 'offset' => $pageNum*$count, 'limit' => $count]); $rs = []; while($row = $rows->fetch()) $rs[] = static::GetRowData($row); return $rs; } }