Example #1
0
	/**
	 * <p>Очищает собранные статистические данные.</p>
	 *
	 *
	 *
	 *
	 * @param string $date = "" Дата в <a href="http://dev.1c-bitrix.ru/api_help/main/general/constants.php#format_date">формате
	 * текущего сайта</a> (или языка) до которой (включительно) необходимо
	 * очистить статистику. Если в данном параметре не указать дату, то
	 * будут очищены все накопленные данные статистики.
	 *
	 *
	 *
	 * @param array &$errors  Если параметр <i>date</i> не содержит даты, то в данном параметре будут
	 * возвращены возможные ошибки которые могут возникнуть в процессе
	 * полной очистки данных статистики.
	 *
	 *
	 *
	 * @return bool <p>Функция возвращает "true", в случае успешного выполнения и "false" - в
	 * противном случае.</p>
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * &lt;?
	 * // дата в формате текущего сайта или языка
	 * // до которой включительно будет очищена вся собранная статистика
	 * $date = "31.12.2007";
	 * 
	 * // очищаем
	 * <b>CStatistics::CleanUp</b>($date);
	 * ?&gt;
	 * </pre>
	 *
	 *
	 *
	 * <h4>See Also</h4> 
	 * <ul> <li> <a href="http://www.1c-bitrix.ru/user_help/statistic/settings.php">Настройки модуля
	 * "Статистика"</a> </li> </ul><a name="examples"></a>
	 *
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/statistic/classes/cstatistics/cleanup.php
	 * @author Bitrix
	 */
	public static function CleanUp($cleanup_date="", &$arErrors)
	{
		$err_mess = "File: ".__FILE__."<br>Line: ";
		$DB = CDatabase::GetModuleConnection('statistic');
		if (strlen($cleanup_date)<=0)
		{
			$fname = $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/install/db/".strtolower($DB->type)."/clean_up.sql";
			if (file_exists($fname))
			{
				$arErrors = $DB->RunSQLBatch($fname);
				if (!$arErrors)
				{
					$fname = $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/install/db/".strtolower($DB->type)."/adv.sql";
					$arErrors2 = $DB->RunSQLBatch($fname);
					if (!$arErrors2) return true; else
					{
						$arErrors = array_merge($arErrors, $arErrors2);
						return false;
					}
				}
				else return false;
			}
		}
		else
		{
			$stmp = MkDateTime(ConvertDateTime($cleanup_date,"D.M.Y"),"d.m.Y");
			if ($stmp)
			{
				$arrTables = array(
					"b_stat_adv_guest"		=> "DATE_GUEST_HIT",
					"b_stat_adv_guest"		=> "DATE_HOST_HIT",
					"b_stat_adv_day"		=> "DATE_STAT",
					"b_stat_adv_event_day"	=> "DATE_STAT",
					"b_stat_day"			=> "DATE_STAT",
					"b_stat_day_site"		=> "DATE_STAT",
					"b_stat_event_day"		=> "DATE_STAT",
					"b_stat_event_list"		=> "DATE_ENTER",
					"b_stat_guest"			=> "LAST_DATE",
					"b_stat_hit"			=> "DATE_HIT",
					"b_stat_searcher_hit"	=> "DATE_HIT",
					"b_stat_phrase_list"	=> "DATE_HIT",
					"b_stat_referer"		=> "DATE_LAST",
					"b_stat_referer_list"	=> "DATE_HIT",
					"b_stat_searcher_day"	=> "DATE_STAT",
					"b_stat_session"		=> "DATE_LAST",
					"b_stat_page"			=> "DATE_STAT",
					"b_stat_country_day"	=> "DATE_STAT",
					"b_stat_path"			=> "DATE_STAT"
					);
				reset($arrTables);
				while (list($table_name, $date_name) = each($arrTables))
				{
					CStatistics::CleanUpTableByDate($cleanup_date, $table_name, $date_name);
				}
			}
		}
		return true;
	}