%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/cluster/classes/general/ |
| Current File : /home/bitrix/www/bitrix/modules/cluster/classes/general/group.php |
<?php
IncludeModuleLangFile(__FILE__);
class CClusterGroup
{
function Add($arFields)
{
global $DB;
if(!$this->CheckFields($arFields, 0))
return false;
$ID = $DB->Add("b_cluster_group", $arFields);
return $ID;
}
function Delete($ID)
{
global $DB, $APPLICATION;
$aMsg = array();
$ID = intval($ID);
$rsWebNodes = CClusterWebnode::GetList(array(), array("=GROUP_ID"=>$ID));
if($rsWebNodes->Fetch())
$aMsg[] = array("text" => GetMessage("CLU_GROUP_HAS_WEBNODE"));
$rsDBNodes = CClusterDBNode::GetList(array() ,array("=GROUP_ID"=>$ID));
if($rsWebNodes->Fetch())
$aMsg[] = array("text" => GetMessage("CLU_GROUP_HAS_DBNODE"));
/*TODO: memcache check*/
if(empty($aMsg))
{
$res = $DB->Query("DELETE FROM b_cluster_group WHERE ID = ".$ID, false, '', array('fixed_connection'=>true));
}
else
{
$e = new CAdminException($aMsg);
$APPLICATION->ThrowException($e);
return false;
}
return $res;
}
function Update($ID, $arFields)
{
global $DB;
$ID = intval($ID);
if($ID <= 0)
return false;
if(!$this->CheckFields($arFields, $ID))
return false;
$strUpdate = $DB->PrepareUpdate("b_cluster_group", $arFields);
if(strlen($strUpdate) > 0)
{
$strSql = "
UPDATE b_cluster_group SET
".$strUpdate."
WHERE ID = ".$ID."
";
if(!$DB->Query($strSql, false, '', array('fixed_connection'=>true)))
return false;
}
return true;
}
function CheckFields(&$arFields, $ID)
{
global $APPLICATION;
$aMsg = array();
unset($arFields["ID"]);
$arFields["NAME"] = trim($arFields["NAME"]);
if(strlen($arFields["NAME"]) <= 0)
{
$aMsg[] = array("id" => "NAME", "text" => GetMessage("CLU_GROUP_EMPTY_NAME"));
}
if(!empty($aMsg))
{
$e = new CAdminException($aMsg);
$APPLICATION->ThrowException($e);
return false;
}
return true;
}
public static function GetList($arOrder=false, $arFilter=false, $arSelect=false)
{
global $DB;
if(!is_array($arSelect))
$arSelect = array();
if(count($arSelect) < 1)
$arSelect = array(
"ID",
"NAME",
);
if(!is_array($arOrder))
$arOrder = array();
$arQueryOrder = array();
foreach($arOrder as $strColumn => $strDirection)
{
$strColumn = strtoupper($strColumn);
$strDirection = strtoupper($strDirection)=="ASC"? "ASC": "DESC";
switch($strColumn)
{
case "ID":
case "NAME":
$arSelect[] = $strColumn;
$arQueryOrder[$strColumn] = $strColumn." ".$strDirection;
break;
}
}
$arQuerySelect = array();
foreach($arSelect as $strColumn)
{
$strColumn = strtoupper($strColumn);
switch($strColumn)
{
case "ID":
case "NAME":
$arQuerySelect[$strColumn] = "g.".$strColumn;
break;
}
}
if(count($arQuerySelect) < 1)
$arQuerySelect = array("ID"=>"w.ID");
$obQueryWhere = new CSQLWhere;
$arFields = array(
"ID" => array(
"TABLE_ALIAS" => "g",
"FIELD_NAME" => "g.ID",
"FIELD_TYPE" => "int",
"JOIN" => false,
),
);
$obQueryWhere->SetFields($arFields);
if(!is_array($arFilter))
$arFilter = array();
$strQueryWhere = $obQueryWhere->GetQuery($arFilter);
$bDistinct = $obQueryWhere->bDistinctReqired;
$strSql = "
SELECT ".($bDistinct? "DISTINCT": "")."
".implode(", ", $arQuerySelect)."
FROM
b_cluster_group g
".$obQueryWhere->GetJoins()."
";
if($strQueryWhere)
{
$strSql .= "
WHERE
".$strQueryWhere."
";
}
if(count($arQueryOrder) > 0)
{
$strSql .= "
ORDER BY
".implode(", ", $arQueryOrder)."
";
}
return $DB->Query($strSql, false, '', array('fixed_connection'=>true));
}
public static function GetArrayByID($ID)
{
$rs = CClusterGroup::GetList(array(), array("=ID"=>$ID));
return $rs->Fetch();
}
}