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;
 }
Beispiel #2
0
 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(" ", "&nbsp;", $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>