%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/controller/classes/mysql/ |
| Current File : /home/bitrix/www/bitrix/modules/controller/classes/mysql/controllermember.php |
<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/controller/classes/general/controllermember.php");
class CControllerMember extends CAllControllerMember
{
public static function _CheckCommandId($member_guid, $command_id)
{
global $DB;
$strSql = "
SELECT C.ID, C.COMMAND, M.SECRET_ID, C.ADD_PARAMS
FROM
b_controller_command C
INNER JOIN b_controller_member M ON C.MEMBER_ID = M.MEMBER_ID
WHERE
C.MEMBER_ID = '".$DB->ForSQL($member_guid, 32)."'
AND C.COMMAND_ID = '".$DB->ForSQL($command_id, 32)."'
AND C.DATE_EXEC IS NULL
AND C.DATE_INSERT > DATE_ADD(now(), INTERVAL -1 MINUTE)
";
$dbr = $DB->Query($strSql);
$ar = $dbr->Fetch();
if (!$ar)
return false;
$strSql = "UPDATE b_controller_command SET DATE_EXEC=".$DB->CurrentTimeFunction()." WHERE ID=".$ar["ID"];
$DB->Query($strSql);
return $ar;
}
public static function UnregisterExpiredAgent($id = false)
{
global $DB;
$handledMembers = array();
if ($id > 0)
$strAddWhere = 'AND M.ID = '.intval($id);
else
$strAddWhere = '';
$strSql = "
SELECT M.ID
FROM b_controller_member M
INNER JOIN b_controller_group G ON M.CONTROLLER_GROUP_ID = G.ID
WHERE
G.TRIAL_PERIOD > 0
AND TO_DAYS(now()) - TO_DAYS(M.IN_GROUP_FROM) >= G.TRIAL_PERIOD
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 = '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,
));
}
}
if ($id > 0)
return true;
return "CControllerMember::UnregisterExpiredAgent();";
}
}