function GetList($arOrder = array(), $arFilter = array(), $arSelect = array(), $arOptions = array()) { global $DB, $USER_FIELD_MANAGER; $bEmptySelect = !is_array($arSelect) || empty($arSelect); if (is_array($arOrder) && is_array($arSelect)) { foreach ($arOrder as $k => $v) { $arSelect[] = $k; } } $obUserFieldsSql = new CUserTypeSQL(); $obUserFieldsSql->SetEntity("CONTROLLER_MEMBER", "M.ID"); $obUserFieldsSql->SetSelect($arSelect); $obUserFieldsSql->SetFilter($arFilter); $obUserFieldsSql->SetOrder($arOrder); static $arFields = array("ID" => array("FIELD_NAME" => "M.ID", "FIELD_TYPE" => "int"), "MEMBER_ID" => array("FIELD_NAME" => "M.MEMBER_ID", "FIELD_TYPE" => "string"), "SECRET_ID" => array("FIELD_NAME" => "M.SECRET_ID", "FIELD_TYPE" => "string"), "NAME" => array("FIELD_NAME" => "M.NAME", "FIELD_TYPE" => "string"), "EMAIL" => array("FIELD_NAME" => "M.EMAIL", "FIELD_TYPE" => "string"), "CONTACT_PERSON" => array("FIELD_NAME" => "M.CONTACT_PERSON", "FIELD_TYPE" => "string"), "URL" => array("FIELD_NAME" => "M.URL", "FIELD_TYPE" => "string"), "CONTROLLER_GROUP_ID" => array("FIELD_NAME" => "M.CONTROLLER_GROUP_ID", "FIELD_TYPE" => "int"), "CONTROLLER_GROUP_NAME" => array("FIELD_NAME" => "G.NAME", "FIELD_TYPE" => "string", "TABLE_ALIAS" => "G", "JOIN" => "INNER JOIN b_controller_group G ON G.ID = M.CONTROLLER_GROUP_ID", "LEFT_JOIN" => "LEFT JOIN b_controller_group G ON G.ID = M.CONTROLLER_GROUP_ID"), "IN_GROUP_FROM" => array("FIELD_NAME" => "M.IN_GROUP_FROM", "FIELD_TYPE" => "datetime", "FORMAT" => "FULL"), "SHARED_KERNEL" => array("FIELD_NAME" => "M.SHARED_KERNEL", "FIELD_TYPE" => "string"), "ACTIVE" => array("FIELD_NAME" => "M.ACTIVE", "FIELD_TYPE" => "string"), "SITE_ACTIVE" => array("FIELD_NAME" => "M.SITE_ACTIVE", "FIELD_TYPE" => "string"), "DISCONNECTED" => array("FIELD_NAME" => "M.DISCONNECTED", "FIELD_TYPE" => "string"), "DATE_ACTIVE_FROM" => array("FIELD_NAME" => "M.DATE_ACTIVE_FROM", "FIELD_TYPE" => "datetime", "FORMAT" => "SHORT"), "DATE_ACTIVE_TO" => array("FIELD_NAME" => "M.DATE_ACTIVE_TO", "FIELD_TYPE" => "datetime", "FORMAT" => "SHORT"), "TIMESTAMP_X" => array("FIELD_NAME" => "M.TIMESTAMP_X", "FIELD_TYPE" => "datetime", "FORMAT" => "FULL"), "MODIFIED_BY" => array("FIELD_NAME" => "M.MODIFIED_BY", "FIELD_TYPE" => "int"), "MODIFIED_BY_USER" => array("FIELD_TYPE" => "string"), "DATE_CREATE" => array("FIELD_NAME" => "M.DATE_CREATE", "FIELD_TYPE" => "datetime", "FORMAT" => "FULL"), "CREATED_BY" => array("FIELD_NAME" => "M.CREATED_BY", "FIELD_TYPE" => "int"), "CREATED_BY_USER" => array("FIELD_TYPE" => "string"), "COUNTER_FREE_SPACE" => array("FIELD_NAME" => "M.COUNTER_FREE_SPACE", "FIELD_TYPE" => "int"), "COUNTER_SITES" => array("FIELD_NAME" => "M.COUNTER_SITES", "FIELD_TYPE" => "int"), "COUNTER_USERS" => array("FIELD_NAME" => "M.COUNTER_USERS", "FIELD_TYPE" => "int"), "COUNTER_LAST_AUTH" => array("FIELD_NAME" => "M.COUNTER_LAST_AUTH", "FIELD_TYPE" => "datetime", "FORMAT" => "FULL"), "COUNTERS_UPDATED" => array("FIELD_NAME" => "M.COUNTERS_UPDATED", "FIELD_TYPE" => "datetime", "FORMAT" => "FULL"), "NOTES" => array("FIELD_NAME" => "M.NOTES")); $arFields["MODIFIED_BY_USER"]["FIELD_NAME"] = $DB->Concat("'('", "UM.LOGIN", "') '", "UM.NAME", "' '", "UM.LAST_NAME"); $arFields["CREATED_BY_USER"]["FIELD_NAME"] = $DB->Concat("'('", "UC.LOGIN", "') '", "UC.NAME", "' '", "UC.LAST_NAME"); $rsCounters = CControllerCounter::GetList(); while ($arCounter = $rsCounters->Fetch()) { $arFields["COUNTER_" . $arCounter["ID"]] = array("FIELD_NAME" => "CCV_" . $arCounter["ID"] . "." . CControllerCounter::GetTypeColumn($arCounter["COUNTER_TYPE"]), "FIELD_TYPE" => CControllerCounter::GetTypeUserType($arCounter["COUNTER_TYPE"]), "TABLE_ALIAS" => "CCV_" . $arCounter["ID"], "JOIN" => "INNER JOIN b_controller_counter_value CCV_" . $arCounter["ID"] . " ON CCV_" . $arCounter["ID"] . ".CONTROLLER_COUNTER_ID = " . $arCounter["ID"] . " AND CCV_" . $arCounter["ID"] . ".CONTROLLER_MEMBER_ID = M.ID", "LEFT_JOIN" => "LEFT JOIN b_controller_counter_value CCV_" . $arCounter["ID"] . " ON CCV_" . $arCounter["ID"] . ".CONTROLLER_COUNTER_ID = " . $arCounter["ID"] . " AND CCV_" . $arCounter["ID"] . ".CONTROLLER_MEMBER_ID = M.ID"); } $obWhere = new CSQLWhere(); $obWhere->SetFields($arFields); $arDateFields = array(); foreach ($arFields as $code => $arField) { if ($arField["FIELD_TYPE"] == "datetime") { $arDateFields[] = $code; } } $date_field = "/(" . implode("|", $arDateFields) . ")\$/"; $arFilterNew = array(); if (is_array($arFilter)) { foreach ($arFilter as $k => $value) { if (is_array($value)) { if (!empty($value)) { $arFilterNew[$k] = $value; } } elseif ($value === false) { $arFilterNew[$k] = $value; } elseif (strlen($value) > 0) { if (array_key_exists("date_format", $arOptions) && preg_match($date_field, $k)) { $arFilterNew[$k] = ConvertTimeStamp(MakeTimeStamp($value, $arOptions["date_format"]), "FULL"); } else { $arFilterNew[$k] = $value; } } } } $strWhere = "1 = 1"; $r = $obWhere->GetQuery($arFilterNew); if (strlen($r) > 0) { $strWhere .= " AND (" . $r . ") "; } $r = $obUserFieldsSql->GetFilter(); if (strlen($r) > 0) { $strWhere .= " AND (" . $r . ") "; } if (is_array($arOrder)) { foreach ($arOrder as $key => $value) { $key = strtoupper($key); if (array_key_exists($key, $arFields) && isset($arFields[$key]["LEFT_JOIN"])) { $obWhere->c_joins[$key]++; } } } if ($bEmptySelect) { $arSelectAdd = array("ID", "MEMBER_ID", "SECRET_ID", "NAME", "URL", "EMAIL", "CONTACT_PERSON", "CONTROLLER_GROUP_ID", "DISCONNECTED", "SHARED_KERNEL", "ACTIVE", "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO", "SITE_ACTIVE", "TIMESTAMP_X", "MODIFIED_BY", "DATE_CREATE", "CREATED_BY", "IN_GROUP_FROM", "NOTES", "COUNTER_FREE_SPACE", "COUNTER_SITES", "COUNTER_USERS", "COUNTER_LAST_AUTH", "COUNTERS_UPDATED", "MODIFIED_BY_USER", "CREATED_BY_USER"); if (is_array($arSelect)) { $arSelect = array_merge($arSelect, $arSelectAdd); } else { $arSelect = $arSelectAdd; } } $duplicates = array("ID" => 1); $strSelect = "M.ID AS ID\n"; foreach ($arSelect as $key) { $key = strtoupper($key); if (array_key_exists($key, $arFields) && !array_key_exists($key, $duplicates)) { $duplicates[$key]++; if (isset($arFields[$key]["LEFT_JOIN"])) { $obWhere->c_joins[$key]++; } if ($arFields[$key]["FIELD_TYPE"] == "datetime") { if (array_key_exists("date_format", $arOptions)) { $strSelect .= "," . $DB->DateFormatToDB($arOptions["date_format"], $arFields[$key]["FIELD_NAME"]) . " AS " . $key . "\n"; } else { $strSelect .= "," . $arFields[$key]["FIELD_NAME"] . " AS " . $key . "_TMP," . $DB->DateToCharFunction($arFields[$key]["FIELD_NAME"], $arFields[$key]["FORMAT"]) . " AS " . $key . "\n"; } } else { $strSelect .= "," . $arFields[$key]["FIELD_NAME"] . " AS " . $key . "\n"; } } } $bUseSubQuery = false; if ($DB->type == "ORACLE" && $obUserFieldsSql->GetDistinct()) { $bUseSubQuery = true; } if ($bUseSubQuery) { $ob = new CUserTypeSQL(); $ob->SetEntity("CONTROLLER_MEMBER", "M.ID"); $ob->SetSelect($arSelect); $ob->SetOrder($arOrder); $strSql = "\n\t\t\t\tSELECT " . $strSelect . $ob->GetSelect() . "\n\t\t\t\tFROM b_controller_member M\n\t\t\t\t\tLEFT JOIN b_user UC ON UC.ID = M.CREATED_BY\n\t\t\t\t\tLEFT JOIN b_user UM ON UM.ID = M.MODIFIED_BY\n\t\t\t\t\t" . $obWhere->GetJoins() . "\n\t\t\t\t\t" . $ob->GetJoin("M.ID") . "\n\t\t\t\tWHERE M.ID IN (\n\t\t\t\t\tSELECT M.ID\n\t\t\t\t\tFROM b_controller_member M\n\t\t\t\t\t" . $obWhere->GetJoins() . "\n\t\t\t\t\t" . $obUserFieldsSql->GetJoin("M.ID") . "\n\t\t\t\t\tWHERE " . $strWhere . "\n\t\t\t\t)\n\t\t\t\t" . CControllerAgent::_OrderBy($arOrder, $arFields, $ob) . "\n\t\t\t"; } else { $strSql = "\n\t\t\t\tSELECT " . ($obUserFieldsSql->GetDistinct() ? "DISTINCT" : "") . " " . $strSelect . $obUserFieldsSql->GetSelect() . "\n\t\t\t\tFROM b_controller_member M\n\t\t\t\t\tLEFT JOIN b_user UC ON UC.ID = M.CREATED_BY\n\t\t\t\t\tLEFT JOIN b_user UM ON UM.ID = M.MODIFIED_BY\n\t\t\t\t\t" . $obWhere->GetJoins() . "\n\t\t\t\t\t" . $obUserFieldsSql->GetJoin("M.ID") . "\n\t\t\t\tWHERE " . $strWhere . "\n\t\t\t\t" . CControllerAgent::_OrderBy($arOrder, $arFields, $obUserFieldsSql) . "\n\t\t\t"; } $dbr = $DB->Query($strSql); $dbr->is_filtered = $strWhere != "1 = 1"; $dbr->SetUserFields($USER_FIELD_MANAGER->GetUserFields("CONTROLLER_MEMBER")); return $dbr; }
function Fetch() { $res = parent::Fetch(); if ($res) { $res["DISPLAY_VALUE"] = CControllerCounter::FormatValue($res["VALUE"], $res["COUNTER_FORMAT"]); } return $res; }
} elseif ($f_DISCONNECTED == 'I') { $str = GetMessage("CTRL_MEMB_ADMIN_DISCON"); } else { $str = GetMessage("admin_lib_list_no"); } $row->AddViewField("DISCONNECTED", $str); $row->AddViewField("URL", '<a href="' . $f_URL . '">' . $f_URL . '</a>'); $row->AddInputField("EMAIL", array("size" => "35")); $row->AddInputField("CONTACT_PERSON", array("size" => "35")); if ($f_EMAIL != '') { $row->AddViewField("EMAIL", '<a href="mailto:' . $f_EMAIL . '">' . $f_EMAIL . '</a>'); } $row->AddSelectField("CONTROLLER_GROUP_ID", $arGroups); foreach ($arCounters as $key => $arCounter) { if (isset($arRes[$key])) { $html = CControllerCounter::FormatValue($arRes[$key], $arCounter["COUNTER_FORMAT"]); if ($arCounter["COUNTER_FORMAT"] == "F") { $html = str_replace(" ", " ", $html); } $row->AddViewField($key, $html); } } $arActions = array(array("ICON" => "edit", "DEFAULT" => "Y", "TEXT" => GetMessage("CTRL_MEMB_ADMIN_MENU_EDIT"), "ACTION" => $lAdmin->ActionRedirect("controller_member_edit.php?ID=" . $f_ID . "&lang=" . LANG)), array("SEPARATOR" => true)); if ($f_DISCONNECTED == 'N') { $arActions[] = array("ICON" => "other", "TEXT" => GetMessage("CTRL_MEMB_ADMIN_MENU_GOADMIN"), "ACTION" => $lAdmin->ActionRedirect("controller_goto.php?member=" . $f_ID . "&lang=" . LANG)); if ($f_SHARED_KERNEL != 'Y') { $arActions[] = array("ICON" => "other", "TEXT" => GetMessage("CTRL_MEMB_ADMIN_MENU_UPD"), "ACTION" => $lAdmin->ActionDoGroup($f_ID, "site_update")); } $arActions[] = array("ICON" => "other", "TEXT" => GetMessage("CTRL_MEMB_ADMIN_MENU_UPDSETT"), "ACTION" => $lAdmin->ActionDoGroup($f_ID, "update_settings")); $arActions[] = array("ICON" => "other", "TEXT" => GetMessage("CTRL_MEMB_ADMIN_MENU_UPDCNT"), "ACTION" => $lAdmin->ActionDoGroup($f_ID, "update_counters")); $arActions[] = array("ICON" => "other", "TEXT" => GetMessage("CTRL_MEMB_ADMIN_MENU_RUNPHP"), "ACTION" => $lAdmin->ActionRedirect("controller_run_command.php?controller_member_id=" . $f_ID . "&lang=" . LANG));
$DB->Commit(); break; } } } $rsData = CControllerCounter::GetList(array($by => $order), $arFilter); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("CTRL_CNT_ADMIN_NAV"))); $arHeaders = array(array("id" => "NAME", "content" => GetMessage("CTRL_CNT_ADMIN_NAME"), "default" => true, "sort" => "name"), array("id" => "COUNTER_TYPE", "content" => GetMessage("CTRL_CNT_ADMIN_COUNTER_TYPE"), "default" => true), array("id" => "COUNTER_FORMAT", "content" => GetMessage("CTRL_CNT_ADMIN_COUNTER_FORMAT"), "default" => true), array("id" => "COMMAND", "content" => GetMessage("CTRL_CNT_ADMIN_COMMAND"), "default" => true)); $lAdmin->AddHeaders($arHeaders); while ($arRes = $rsData->NavNext(true, "f_")) { $row = $lAdmin->AddRow($f_ID, $arRes); $row->AddInputField("NAME", array("size" => "35")); $row->AddSelectField("COUNTER_TYPE", CControllerCounter::GetTypeArray()); $row->AddSelectField("COUNTER_FORMAT", CControllerCounter::GetFormatArray()); $row->AddField("COMMAND", "<pre>" . htmlspecialcharsbx($arRes["COMMAND"]) . "</pre>", "<textarea cols=\"80\" rows=\"15\" name=\"FIELDS[" . $f_ID . "][COMMAND]\">" . htmlspecialcharsbx($arRes["COMMAND"]) . "</textarea>"); $arActions = array(array("ICON" => "edit", "DEFAULT" => "Y", "TEXT" => GetMessage("CTRL_CNT_ADMIN_MENU_EDIT"), "ACTION" => $lAdmin->ActionRedirect("controller_counter_edit.php?ID=" . $f_ID . "&lang=" . LANGUAGE_ID)), array("SEPARATOR" => true), array("ICON" => "delete", "TEXT" => GetMessage("CTRL_CNT_ADMIN_MENU_DELETE"), "ACTION" => "if(confirm('" . GetMessage("CTRL_CNT_ADMIN_MENU_DELETE_ALERT") . "')) " . $lAdmin->ActionDoGroup($f_ID, "delete"))); $row->AddActions($arActions); } $lAdmin->AddFooter(array(array("title" => GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value" => $rsData->SelectedRowsCount()), array("counter" => true, "title" => GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value" => 0))); if ($MOD_RIGHT >= "W") { $lAdmin->AddGroupActionTable(array("delete" => GetMessage("MAIN_ADMIN_LIST_DELETE"))); } $aContext = array(array("ICON" => "btn_new", "TEXT" => GetMessage("MAIN_ADD"), "LINK" => "controller_counter_edit.php?lang=" . LANGUAGE_ID, "TITLE" => GetMessage("MAIN_ADD"))); $lAdmin->AddAdminContextMenu($aContext); $lAdmin->CheckListMode(); $APPLICATION->SetTitle(GetMessage("CTRL_CNT_ADMIN_TITLE")); require $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/prolog_admin_after.php"; ?> <form name="form1" method="GET" action="<?php
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } IncludeModuleLangFile(__FILE__); $message = null; $ID = intval($ID); if ($_SERVER["REQUEST_METHOD"] == "POST" && check_bitrix_sessid() && (isset($_POST["save"]) || isset($_POST["apply"]) || isset($_POST["delete"]))) { if (isset($_POST["delete"]) && $_POST["delete"] === "y") { CControllerCounter::Delete($ID); if ($back_url == '') { LocalRedirect("controller_counter_admin.php?lang=" . LANGUAGE_ID); } else { LocalRedirect($back_url); } } else { $arFields = array("COUNTER_TYPE" => $_POST["COUNTER_TYPE"], "COUNTER_FORMAT" => $_POST["COUNTER_FORMAT"], "NAME" => $_POST["NAME"], "COMMAND" => $_POST["COMMAND"], "CONTROLLER_GROUP_ID" => $_POST["CONTROLLER_GROUP_ID"]); $obCounter = new CControllerCounter(); if ($ID > 0) { $res = $obCounter->Update($ID, $arFields); } else { $res = $ID = $obCounter->Add($arFields); } if (!$res) { if ($e = $APPLICATION->GetException()) { $message = new CAdminMessage(GetMessage("CTRL_COUNTER_EDIT_ERROR"), $e); } } else { if (isset($_POST["save"])) { if ($back_url == '') { LocalRedirect("controller_counter_admin.php?lang=" . LANGUAGE_ID); } else { LocalRedirect($back_url);
<td> <input type="checkbox" id="COUNTER_LAST_AUTH" name="CHECK_COUNTER_LAST_AUTH" value="Y"<?php if ($str_CHECK_COUNTER_LAST_AUTH == "Y") { echo ' checked'; } ?> > </td> </tr> <?php $arGroupCounters = array(); $rsCounters = CControllerCounter::GetList(array(), array("CONTROLLER_GROUP_ID" => $ID)); while ($arCounter = $rsCounters->Fetch()) { $arGroupCounters[$arCounter["ID"]] = $arCounter["ID"]; } $rsCounters = CControllerCounter::GetList(array("NAME" => "ASC"), array()); while ($arCounter = $rsCounters->Fetch()) { ?> <tr> <td><label for="COUNTER_<?php echo $arCounter["ID"]; ?> "><?php echo htmlspecialcharsex($arCounter["NAME"]); ?> :</label></td> <td> <input type="checkbox" id="COUNTER_<?php echo $arCounter["ID"]; ?> " name="CONTROLLER_COUNTER_ID[]" value="<?php
?> <tr> <td align="right" width="40%"><?php echo GetMessage("CTRLR_MEM_EDIT_COUNTERS_LAST_AU"); ?> </td> <td><span id="COUNTER_LAST_AUTH"><?php echo $str_COUNTER_LAST_AUTH; ?> </span></td> </tr> <?php } ?> <?php $rsCounters = CControllerCounter::GetMemberValues($ID); while ($arCounter = $rsCounters->Fetch()) { ?> <tr> <td align="right" width="40%"><?php echo htmlspecialcharsex($arCounter["NAME"]); ?> :</td> <td><span id="COUNTER_<?php echo $arCounter["ID"]; ?> "><?php echo htmlspecialcharsex($arCounter["DISPLAY_VALUE"]); ?> </span></td> </tr>