Esempio n. 1
0
 public static function GetArrayByID($ID)
 {
     global $DB;
     $ID = intval($ID);
     $rs = CControllerCounter::GetList(array(), array("=ID" => $ID));
     $ar = $rs->Fetch();
     if (is_array($ar)) {
         //GetCounterGroups
         $ar["CONTROLLER_GROUP_ID"] = array();
         $rs = $DB->Query("SELECT CONTROLLER_GROUP_ID FROM b_controller_counter_group WHERE CONTROLLER_COUNTER_ID = " . $ID);
         while ($a = $rs->Fetch()) {
             $ar["CONTROLLER_GROUP_ID"][$a["CONTROLLER_GROUP_ID"]] = $a["CONTROLLER_GROUP_ID"];
         }
     }
     return $ar;
 }
 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;
 }
        $ID = IntVal($ID);
        switch ($_REQUEST['action']) {
            case "delete":
                @set_time_limit(0);
                $DB->StartTransaction();
                if (!CControllerCounter::Delete($ID)) {
                    $e = $APPLICATION->GetException();
                    $DB->Rollback();
                    $lAdmin->AddGroupError(GetMessage("CTRL_CNT_ADMIN_DELETE_ERROR", array("#ID#" => $ID, "#ERROR#" => $e->GetString())), $ID);
                }
                $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)));
                        $lAdmin->AddGroupError(GetMessage("CTRL_MEMB_ADMIN_UPDCNT_ERR") . $ID . ": " . $e->GetString(), $ID);
                    }
                }
                break;
        }
    }
}
$arHeaders = array(array("id" => "TIMESTAMP_X", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_MODIFIED"), "default" => true, "sort" => "timestamp_x"), array("id" => "MODIFIED_BY", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_MODIFIEDBY"), "default" => true, "sort" => "modified_by"), array("id" => "NAME", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_NAME"), "default" => true, "sort" => "name"), array("id" => "URL", "content" => GetMessage("CTRL_MEMB_ADMIN_FILTER_URL"), "default" => true, "sort" => "URL"), array("id" => "CONTACT_PERSON", "content" => GetMessage("CTRL_MEMB_ADMIN_CONTACT_PERSON"), "sort" => "CONTACT_PERSON"), array("id" => "EMAIL", "content" => GetMessage("CTRL_MEMB_ADMIN_EMAIL"), "sort" => "URL"), array("id" => "CONTROLLER_GROUP_ID", "content" => GetMessage("CTRL_MEMB_ADMIN_FILTER_GROUP"), "default" => true, "sort" => "CONTROLLER_GROUP_ID"), array("id" => "DISCONNECTED", "content" => GetMessage("CTRL_MEMB_ADMIN_FILTER_DISCONN"), "default" => true, "sort" => "active"), array("id" => "ACTIVE", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_ACTIVE"), "default" => true, "sort" => "active", "align" => "center"), array("id" => "DATE_ACTIVE_FROM", "content" => GetMessage("CTRL_MEMB_ADMIN_FILTER_ACT_FROM"), "sort" => "DATE_ACTIVE_FROM"), array("id" => "DATE_ACTIVE_TO", "content" => GetMessage("CTRL_MEMB_ADMIN_FILTER_ACT_TO"), "sort" => "DATE_ACTIVE_TO"), array("id" => "DATE_CREATE", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_CREATED"), "sort" => "DATE_CREATE"), array("id" => "CREATED_BY", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_CREATEDBY"), "sort" => "CREATED_BY"), array("id" => "MEMBER_ID", "content" => GetMessage("CTRL_MEMB_ADMIN_FILTER_UNIQID"), "sort" => "MEMBER_ID"), array("id" => "COUNTERS_UPDATED", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_COUNTER_UPD"), "sort" => "COUNTERS_UPDATED"), array("id" => "COUNTER_FREE_SPACE", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_COUNTER_FREE"), "sort" => "COUNTER_FREE_SPACE", "align" => "right"), array("id" => "COUNTER_SITES", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_COUNTER_SITES"), "sort" => "COUNTER_SITES", "align" => "right"), array("id" => "COUNTER_USERS", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_COUNTER_USERS"), "sort" => "COUNTER_USERS", "align" => "right"), array("id" => "COUNTER_LAST_AUTH", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_COUNTER_LAST_AU"), "sort" => "COUNTER_LAST_AUTH"), array("id" => "NOTES", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_NOTES")), array("id" => "ID", "content" => "ID", "default" => true, "sort" => "id", "align" => "right"));
if (ControllerIsSharedMode()) {
    $arHeaders[] = array("id" => "SHARED_KERNEL", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_SHARED_KERN"), "sort" => "SHARED_KERNEL", "align" => "center");
}
if (COption::GetOptionString("controller", "show_hostname") == "Y") {
    $arHeaders[] = array("id" => "HOSTNAME", "content" => GetMessage("CTRL_MEMB_ADMIN_COLUMN_HOSTNAME"), "sort" => "HOSTNAME");
}
$arCounters = array();
$rsCounters = CControllerCounter::GetList();
while ($arCounter = $rsCounters->Fetch()) {
    $key = "COUNTER_" . $arCounter["ID"];
    $arCounters[$key] = $arCounter;
    $arHeaders[] = array("id" => $key, "content" => htmlspecialcharsex($arCounter["NAME"]), "sort" => $key, "align" => $arCounter["COUNTER_FORMAT"] == "F" ? "right" : "left");
}
$USER_FIELD_MANAGER->AdminListAddHeaders($entity_id, $arHeaders);
$lAdmin->AddHeaders($arHeaders);
$arSelect = $lAdmin->GetVisibleHeaderColumns();
$arSelect[] = "ID";
$arSelect[] = "DISCONNECTED";
$arSelect[] = "SHARED_KERNEL";
if (in_array("MODIFIED_BY", $arSelect)) {
    $arSelect[] = "MODIFIED_BY_USER";
}
if (in_array("CREATED_BY", $arSelect)) {
		<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