• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_convert.php
  • Класс: CIMConvert
  • Вызов: CIMConvert::DeliveredMessage
static function DeliveredMessage($step = 100, $maxExecutionTime = 10)
{
	if (!CModule::IncludeModule("socialnetwork"))
		return false;

	$step = intval($step)>0? intval($step): 100;
	$startConvertTime = getmicrotime();

	$step = intval($step);
	$dbMessage = CSocNetMessages::GetList(
		array("ID" => "ID"),
		array(
			"!DATE_VIEW" => "",
			"TO_DELETED" => "N",
			"MESSAGE_TYPE" => "P"
		),
		false,
		array("nTopCount" => $step),
		array("ID", "FROM_USER_ID", "TO_USER_ID", "MESSAGE", "DATE_CREATE")
	);

	while($arMessage = $dbMessage->Fetch())
	{
		$ar = Array(
			"FROM_USER_ID" => intval($arMessage["FROM_USER_ID"]),
			"TO_USER_ID" => intval($arMessage["TO_USER_ID"]),
			"MESSAGE" 	 => $arMessage["MESSAGE"],
			"MESSAGE_DATE" => $arMessage["DATE_CREATE"],
			"IMPORT_ID" => $arMessage["ID"],
			"CONVERT" => 'Y',
		);
		CIMMessage::Add($ar);
		CSocNetMessages::Update($arMessage["ID"], array("TO_DELETED" => "Y", "FROM_DELETED" => "Y"));

		self::$converted++;
		self::$convertPerStep++;

		if($maxExecutionTime > 0 && (getmicrotime() - $startConvertTime > $maxExecutionTime))
			break;
	}
	if ($maxExecutionTime > (2*(getmicrotime() - $startConvertTime)))
		self::$nextConvertPerStep = $step*2;
	else
		self::$nextConvertPerStep = $step;

	return true;
}