- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/classes/general/cml2.php
- Класс: CUserCMLImport
- Вызов: CUserCMLImport::ImportUsers
function ImportUsers($xml_root_id = false, $start_time = false, $interval = 0)
{
global $DB;
$this->__user = new CUser();
if (null == $this->__ibxml)
$this->__ibxml = new CIBlockXMLFile();
if ($start_time === false)
$start_time = time();
$counter = array(
"ADD" => 0,
"UPD" => 0,
"DEL" => 0,
"DEA" => 0,
"ERR" => 0,
);
if(!$this->next_step["XML_ELEMENTS_PARENT"])
{
if ($xml_root_id <= 0)
{
$rs = $DB->Query("SELECT MIN(PARENT_ID) MIN_ID FROM b_xml_tree WHERE NAME='".GetMessage('IBLOCK_XML2_USER_TAG_STRUCTURE')."'");
$ar = $rs->Fetch();
$xml_root_id = $ar["MIN_ID"];
}
$query = "SELECT ID, ATTRIBUTES FROM b_xml_tree WHERE PARENT_ID = ".intval($xml_root_id)." AND NAME='".GetMessage('IBLOCK_XML2_USER_TAG_STRUCTURE')."'";
$rs = $DB->Query($query);
if($ar = $rs->Fetch())
{
if($ar["ATTRIBUTES"] <> '')
{
$attrs = unserialize($ar["ATTRIBUTES"], ["allowed_classes" => false]);
if(is_array($attrs))
{
if(array_key_exists(GetMessage('IBLOCK_XML2_USER_ATTR_UPDATE_ONLY'), $attrs))
{
$this->bUpdateOnly =
($attrs[GetMessage('IBLOCK_XML2_USER_ATTR_UPDATE_ONLY')] == 'true') ||
(intval($attrs[GetMessage('IBLOCK_XML2_USER_ATTR_UPDATE_ONLY')]) ? true : false);
$this->next_step['bUpdateOnly'] = $this->bUpdateOnly;
}
}
}
$rs = $DB->Query("SELECT ID, ATTRIBUTES FROM b_xml_tree WHERE PARENT_ID = ".intval($ar['ID'])." AND NAME='".GetMessage('IBLOCK_XML2_USER_TAG_USERS')."'");
if ($ar = $rs->Fetch())
{
$this->next_step["XML_ELEMENTS_PARENT"] = $ar['ID'];
}
}
}
if($this->next_step["XML_ELEMENTS_PARENT"])
{
$rsParents = $DB->Query("SELECT ID, LEFT_MARGIN, RIGHT_MARGIN FROM b_xml_tree WHERE PARENT_ID = ".intval($this->next_step["XML_ELEMENTS_PARENT"])." AND ID > ".intval($this->next_step["XML_LAST_ID"])." ORDER BY ID");
$q = 0;
while($arParent = $rsParents->Fetch())
{
$arXMLElement = $this->__ibxml->GetAllChildrenArray($arParent);
$ID = $this->LoadUser($arXMLElement, $counter);
$this->next_step["XML_LAST_ID"] = $arParent["ID"];
if($interval > 0 && (time()-$start_time) > $interval)
break;
}
}
unset($this->__user);
//$this->CleanTempFiles();
return $counter;
}