public static function ClearByTag($tag, $code, $site_id = SITE_ID) { global $DB; if (strlen($tag) <= 0 || strlen($code) <= 0) { return false; } $strSQL = "\n\t\t\tDELETE FROM b_user_counter \n\t\t\tWHERE TAG = '" . $DB->ForSQL($tag) . "' AND CODE = '" . $DB->ForSQL($code) . "'\n\t\t\tAND (SITE_ID = '" . $site_id . "' OR SITE_ID = '**')"; $dbRes = $DB->Query($strSQL, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($site_id == '**') { self::$counters = array(); } else { unset(self::$counters[$site_id]); } return true; }
public static function ClearByTag($tag, $code, $site_id = SITE_ID, $sendPull = true) { global $DB, $CACHE_MANAGER; if (strlen($tag) <= 0 || strlen($code) <= 0) return false; $strSQL = " UPDATE b_user_counter SET CNT = 0 WHERE TAG = '".$DB->ForSQL($tag)."' AND CODE = '".$DB->ForSQL($code)."' AND (SITE_ID = '".$site_id."' OR SITE_ID = '**')"; $DB->Query($strSQL, false, "File: ".__FILE__."<br>Line: ".__LINE__); self::$counters = false; $CACHE_MANAGER->CleanDir("user_counter"); if ($sendPull && self::CheckLiveMode()) { global $DB; $arSites = Array(); $res = CSite::GetList(($b = ""), ($o = ""), Array("ACTIVE" => "Y")); while ($row = $res->Fetch()) $arSites[] = $row['ID']; $strSQL = " SELECT pc.CHANNEL_ID, uc.USER_ID, uc.SITE_ID, uc.CODE, uc.CNT FROM b_user_counter uc INNER JOIN b_pull_channel pc ON pc.USER_ID = uc.USER_ID WHERE TAG = '".$DB->ForSQL($tag)."' AND CODE = '".$DB->ForSQL($code)."' AND (SITE_ID = '".$site_id."' OR SITE_ID = '**')"; $res = $DB->Query($strSQL, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__); $pullMessage = Array(); while ($row = $res->Fetch()) { if ($row['SITE_ID'] == '**') { foreach ($arSites as $siteId) { if (isset($pullMessage[$row['CHANNEL_ID']][$siteId][$row['CODE']])) $pullMessage[$row['CHANNEL_ID']][$siteId][$row['CODE']] += intval($row['CNT']); else $pullMessage[$row['CHANNEL_ID']][$siteId][$row['CODE']] = intval($row['CNT']); } } else { if (isset($pullMessage[$row['CHANNEL_ID']][$row['SITE_ID']][$row['CODE']])) $pullMessage[$row['CHANNEL_ID']][$row['SITE_ID']][$row['CODE']] += intval($row['CNT']); else $pullMessage[$row['CHANNEL_ID']][$row['SITE_ID']][$row['CODE']] = intval($row['CNT']); } } foreach ($pullMessage as $channelId => $arMessage) { CPullStack::AddByChannel($channelId, Array( 'module_id' => 'main', 'command' => 'user_counter', 'params' => $arMessage, )); } } return true; }
public static function ClearByTag($tag, $code, $site_id = SITE_ID, $sendPull = true) { global $DB, $CACHE_MANAGER; if (strlen($tag) <= 0 || strlen($code) <= 0) { return false; } $strSQL = "\n\t\t\tUPDATE b_user_counter SET\n\t\t\tCNT = 0\n\t\t\tWHERE TAG = '" . $DB->ForSQL($tag) . "' AND CODE = '" . $DB->ForSQL($code) . "'\n\t\t\tAND (SITE_ID = '" . $site_id . "' OR SITE_ID = '" . self::ALL_SITES . "')"; $DB->Query($strSQL, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); self::$counters = false; $CACHE_MANAGER->CleanDir("user_counter"); if ($sendPull && self::CheckLiveMode()) { global $DB; $arSites = array(); $res = CSite::GetList($b = "", $o = "", array("ACTIVE" => "Y")); while ($row = $res->Fetch()) { $arSites[] = $row['ID']; } $strSQL = "\n\t\t\t\tSELECT pc.CHANNEL_ID, pc.CHANNEL_TYPE, uc.USER_ID, uc.SITE_ID, uc.CODE, uc.CNT\n\t\t\t\tFROM b_user_counter uc\n\t\t\t\tINNER JOIN b_pull_channel pc ON pc.USER_ID = uc.USER_ID\n\t\t\t\tWHERE TAG = '" . $DB->ForSQL($tag) . "' AND CODE = '" . $DB->ForSQL($code) . "'\n\t\t\t\tAND (SITE_ID = '" . $site_id . "' OR SITE_ID = '" . self::ALL_SITES . "')"; $res = $DB->Query($strSQL, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $pullMessage = array(); while ($row = $res->Fetch()) { if (!($row['CHANNEL_TYPE'] == 'private' || $row['CHANNEL_TYPE'] == 'shared' && $row['USER_ID'] == 0)) { continue; } if ($row['SITE_ID'] == self::ALL_SITES) { foreach ($arSites as $siteId) { if (isset($pullMessage[$row['CHANNEL_ID']][$siteId][$row['CODE']])) { $pullMessage[$row['CHANNEL_ID']][$siteId][$row['CODE']] += intval($row['CNT']); } else { $pullMessage[$row['CHANNEL_ID']][$siteId][$row['CODE']] = intval($row['CNT']); } } } else { if (isset($pullMessage[$row['CHANNEL_ID']][$row['SITE_ID']][$row['CODE']])) { $pullMessage[$row['CHANNEL_ID']][$row['SITE_ID']][$row['CODE']] += intval($row['CNT']); } else { $pullMessage[$row['CHANNEL_ID']][$row['SITE_ID']][$row['CODE']] = intval($row['CNT']); } } } foreach ($pullMessage as $channelId => $arMessage) { CPullStack::AddByChannel($channelId, array('module_id' => 'main', 'command' => 'user_counter', 'expiry' => 3600, 'params' => $arMessage)); } } return true; }
public static function ClearByTag($tag, $code, $site_id = SITE_ID) { global $DB, $CACHE_MANAGER; if (strlen($tag) <= 0 || strlen($code) <= 0) { return false; } $strSQL = "\n\t\t\tDELETE FROM b_user_counter\n\t\t\tWHERE TAG = '" . $DB->ForSQL($tag) . "' AND CODE = '" . $DB->ForSQL($code) . "'\n\t\t\tAND (SITE_ID = '" . $site_id . "' OR SITE_ID = '**')"; $dbRes = $DB->Query($strSQL, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); self::$counters = false; $CACHE_MANAGER->CleanDir("user_counter"); return true; }