- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/mysql/controllermember.php
- Класс: CControllerMember
- Вызов: CControllerMember::UnregisterExpiredAgent
static function UnregisterExpiredAgent($id = false)
{
global $DB;
$handledMembers = array();
if ($id > 0)
$strAddWhere = 'AND M.ID = '.intval($id);
else
$strAddWhere = '';
$rsTrialGroups = $DB->Query("SELECT ID FROM b_controller_group WHERE TRIAL_PERIOD > 0");
$arTrialGroups = array();
while ($arGroup = $rsTrialGroups->Fetch())
{
$arTrialGroups[] = $arGroup["ID"];
}
if ($arTrialGroups)
{
$strSql = "
SELECT M.ID
FROM b_controller_member M
INNER JOIN b_controller_group G ON M.CONTROLLER_GROUP_ID = G.ID
WHERE
G.ID in (".implode(",", $arTrialGroups).")
AND G.TRIAL_PERIOD > 0
AND M.IN_GROUP_FROM < DATE_SUB(now(), INTERVAL G.TRIAL_PERIOD DAY)
AND SITE_ACTIVE = 'Y'
AND DISCONNECTED = 'N'
".$strAddWhere."
";
$dbr = $DB->Query($strSql);
while ($ar = $dbr->Fetch())
{
if ($id > 0)
{
CControllerMember::CloseMember($id, true);
return true;
}
elseif (!isset($handledMembers[$ar["ID"]]))
{
$handledMembers[$ar["ID"]] = $ar["ID"];
CControllerTask::Add(array(
"TASK_ID" => "CLOSE_MEMBER",
"CONTROLLER_MEMBER_ID" => $ar["ID"],
"INIT_EXECUTE_PARAMS" => true,
));
}
}
}
$strSql = "
SELECT M.ID
FROM b_controller_member M
WHERE
(DATE_ACTIVE_FROM IS NULL OR DATE_ACTIVE_FROM <= ".$DB->CurrentTimeFunction().")
AND (DATE_ACTIVE_TO IS NULL OR DATE_ACTIVE_TO >= ".$DB->CurrentTimeFunction().")
AND ACTIVE = 'Y'
AND SITE_ACTIVE <> 'Y'
AND DISCONNECTED = 'N'
".$strAddWhere."
";
$dbr = $DB->Query($strSql);
while ($ar = $dbr->Fetch())
{
if ($id > 0)
{
CControllerMember::CloseMember($id, false);
return true;
}
elseif (!isset($handledMembers[$ar["ID"]]))
{
$handledMembers[$ar["ID"]] = $ar["ID"];
CControllerTask::Add(array(
"TASK_ID" => "CLOSE_MEMBER",
"CONTROLLER_MEMBER_ID" => $ar["ID"],
"INIT_EXECUTE_PARAMS" => false,
));
}
}
$strSql = "
SELECT M.ID
FROM b_controller_member M
WHERE
(
DATE_ACTIVE_FROM > ".$DB->CurrentTimeFunction()."
OR DATE_ACTIVE_TO < ".$DB->CurrentTimeFunction()."
OR ACTIVE = 'N'
)
AND SITE_ACTIVE <> 'N'
AND DISCONNECTED = 'N'
".$strAddWhere."
";
$dbr = $DB->Query($strSql);
while ($ar = $dbr->Fetch())
{
if ($id > 0)
{
CControllerMember::CloseMember($id, true);
return true;
}
elseif (!isset($handledMembers[$ar["ID"]]))
{
$handledMembers[$ar["ID"]] = $ar["ID"];
CControllerTask::Add(array(
"TASK_ID" => "CLOSE_MEMBER",
"CONTROLLER_MEMBER_ID" => $ar["ID"],
"INIT_EXECUTE_PARAMS" => true,
));
}
}
if ($id > 0)
return true;
return "CControllerMember::UnregisterExpiredAgent();";
}