Example #1
0
 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;
 }
Example #2
0
	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;
	}
Example #3
0
 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;
 }