示例#1
0
 protected function transformName($name, $bForceMD5 = false, $bSkipExt = false)
 {
     //safe filename without path
     $fileName = GetFileName($name);
     $originalName = $bForceMD5 != true && COption::GetOptionString("main", "save_original_file_name", "N") == "Y";
     if ($originalName) {
         //transforming original name:
         //transliteration
         if (COption::GetOptionString("main", "translit_original_file_name", "N") == "Y") {
             $fileName = CUtil::translit($fileName, LANGUAGE_ID, array("max_len" => 1024, "safe_chars" => ".", "replace_space" => '-'));
         }
         //replace invalid characters
         if (COption::GetOptionString("main", "convert_original_file_name", "Y") == "Y") {
             $io = CBXVirtualIo::GetInstance();
             $fileName = $io->RandomizeInvalidFilename($fileName);
         }
     }
     //double extension vulnerability
     $fileName = RemoveScriptExtension($fileName);
     //safe extention without "."
     $fileExt = GetFileExtension($fileName);
     if (!$originalName) {
         //name is md5-generated:
         $fileName = md5(uniqid("", true)) . ($bSkipExt == true ? '' : "." . $fileExt);
     }
     //.jpe is not image type on many systems
     if ($bSkipExt == false && strtolower($fileExt) == "jpe") {
         $fileName = substr($fileName, 0, -4) . ".jpg";
     }
     return $fileName;
 }
示例#2
0
	public function translite($text)

	{

		$arParams = array("replace_space" => "-", "replace_other" => "-");

		return \CUtil::translit(trim($text), "ru", $arParams);

	}
示例#3
0
 protected function validateFile(&$strFileName, $arFile, $bForceMD5 = false)
 {
     $strFileName = GetFileName($arFile["name"]);
     //File is going to be deleted
     if (isset($arFile["del"]) && $arFile["del"] != "") {
         //There is no new file as replacement
         if ($strFileName == "") {
             return "";
         }
     }
     if ($arFile["name"] == "") {
         return "";
     }
     if (COption::GetOptionInt("main", "disk_space") > 0) {
         $quota = new CDiskQuota();
         if (!$quota->checkDiskQuota($arFile)) {
             return GetMessage("FILE_BAD_QUOTA");
         }
     }
     $io = CBXVirtualIo::GetInstance();
     if ($bForceMD5 != true && COption::GetOptionString("main", "save_original_file_name", "N") == "Y") {
         if (COption::GetOptionString("main", "translit_original_file_name", "N") == "Y") {
             $strFileName = CUtil::translit($strFileName, LANGUAGE_ID, array("max_len" => 1024, "safe_chars" => ".", "replace_space" => '-'));
         }
         if (COption::GetOptionString("main", "convert_original_file_name", "Y") == "Y") {
             $strFileName = $io->RandomizeInvalidFilename($strFileName);
         }
     }
     if (!$io->ValidateFilenameString($strFileName)) {
         return GetMessage("MAIN_BAD_FILENAME1");
     }
     //check for double extension vulnerability
     $strFileName = RemoveScriptExtension($strFileName);
     if ($strFileName == '') {
         return GetMessage("FILE_BAD_FILENAME");
     }
     if (strlen($strFileName) > 255) {
         return GetMessage("MAIN_BAD_FILENAME_LEN");
     }
     //check .htaccess etc.
     if (IsFileUnsafe($strFileName)) {
         return GetMessage("FILE_BAD_TYPE");
     }
     //nginx returns octet-stream for .jpg
     if (GetFileNameWithoutExtension($strFileName) == '') {
         return GetMessage("FILE_BAD_FILENAME");
     }
     return "";
 }
    public static function ConvertToUrlForm($propName, $propValue)
    {
        if (CModule::IncludeModule("iblock")) {
            // check if infoblock contains conversion
            $arSelect = Array("ID", "NAME","CODE", "PROPERTY_CATEGORY");
            $arFilter = Array("IBLOCK_ID"=>37, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "PROPERTY_CATEGORY_VALUE"=>$propName, "NAME"=>$propValue);
            $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
            $ob = $res->GetNext();
            if ($ob)
                return $ob["CODE"];

            // if no, make convertion and add to infoblock
            $urlForm = CUtil::translit($propValue,"ru", array("replace_space"=>"-","replace_other"=>"-"));
            $el = new CIBlockElement;
            $res = $el->Add(array(
                "IBLOCK_ID"=>37,
                "NAME"=>$propValue,
                "CODE"=>$urlForm,
                "PROPERTY_VALUES"=>array("CATEGORY"=>$propName)
            ));
            return $urlForm;
        }
    }
示例#5
0
文件: file.php 项目: nProfessor/Mytb
	function SaveFile($arFile, $strSavePath, $bForceMD5=false, $bSkipExt=false)
	{
		$strFileName = GetFileName($arFile["name"]);	/* filename.gif */

		if(isset($arFile["del"]) && $arFile["del"] <> '')
		{
			CFile::DoDelete($arFile["old_file"]);
			if($strFileName == '')
				return "NULL";
		}

		if($arFile["name"] == '')
		{
			if(is_set($arFile, "description") && intval($arFile["old_file"])>0)
				CFile::UpdateDesc($arFile["old_file"], $arFile["description"]);
			return false;
		}

		if(is_set($arFile, "content") && !is_set($arFile, "size"))
			$arFile["size"] = CUtil::BinStrlen($arFile["content"]);
		else
			$arFile["size"] = filesize($arFile["tmp_name"]);

		/****************************** QUOTA ******************************/
		if (COption::GetOptionInt("main", "disk_space") > 0)
		{
			$quota = new CDiskQuota();
			if (!$quota->checkDiskQuota($arFile))
				return false;
		}
		/****************************** QUOTA ******************************/

		$arFile["ORIGINAL_NAME"] = $strFileName;

		$io = CBXVirtualIo::GetInstance();
		if($bForceMD5 != true && COption::GetOptionString("main", "save_original_file_name", "N") == "Y")
		{
			if(COption::GetOptionString("main", "translit_original_file_name", "N") == "Y")
				$strFileName = CUtil::translit($strFileName, LANGUAGE_ID, array("max_len"=>1024, "safe_chars"=>"."));

			if(COption::GetOptionString("main", "convert_original_file_name", "Y") == "Y")
				$strFileName = $io->RandomizeInvalidFilename($strFileName);
		}

		if(!$io->ValidateFilenameString($strFileName))
			return false;

		//check for double extension vulnerability
		$strFileName = RemoveScriptExtension($strFileName);
		if($strFileName == '')
			return false;

		if(strlen($strFileName) > 255)
			return false;

		//check .htaccess etc.
		if(IsFileUnsafe($strFileName))
			return false;

		//nginx returns octet-stream for .jpg
		if(GetFileNameWithoutExtension($strFileName) == '')
			return false;

		$upload_dir = COption::GetOptionString("main", "upload_dir", "upload");

		if($arFile["type"]=="image/pjpeg" || $arFile["type"]=="image/jpg")
			$arFile["type"]="image/jpeg";

		//.jpe is not image type on many systems
		if(strtolower(GetFileExtension($strFileName)) == "jpe")
			$strFileName = substr($strFileName, 0, -4).".jpg";

		$bExternalStorage = false;
		foreach(GetModuleEvents("main", "OnFileSave", true) as $arEvent)
		{
			if(ExecuteModuleEventEx($arEvent, array(&$arFile, $strFileName, $strSavePath, $bForceMD5, $bSkipExt)))
			{
				$bExternalStorage = true;
				break;
			}
		}

		if(!$bExternalStorage)
		{
			$newName = '';
			if($bForceMD5 != true && COption::GetOptionString("main", "save_original_file_name", "N")=="Y")
			{
				$dir_add = '';
				$i=0;
				while(true)
				{
					$dir_add = substr(md5(uniqid(mt_rand(), true)), 0, 3);
					if(!$io->FileExists($_SERVER["DOCUMENT_ROOT"]."/".$upload_dir."/".$strSavePath."/".$dir_add."/".$strFileName))
						break;
					if($i>=25)
					{
						$j=0;
						while(true)
						{
							$dir_add = substr(md5(mt_rand()), 0, 3)."/".substr(md5(mt_rand()), 0, 3);
							if(!$io->FileExists($_SERVER["DOCUMENT_ROOT"]."/".$upload_dir."/".$strSavePath."/".$dir_add."/".$strFileName))
								break;
							if($j>=25)
							{
								$dir_add = substr(md5(mt_rand()), 0, 3)."/".md5(mt_rand());
								break;
							}
							$j++;
						}
						break;
					}
					$i++;
				}
				if(substr($strSavePath, -1, 1) <> "/")
					$strSavePath .= "/".$dir_add;
				else
					$strSavePath .= $dir_add."/";

				$newName = $strFileName;
			}
			else
			{
				$strFileExt = ($bSkipExt == true? '' : strrchr($strFileName, "."));
				while(true)
				{
					$newName = md5(uniqid(mt_rand(), true)).$strFileExt;
					if(substr($strSavePath, -1, 1) <> "/")
						$strSavePath .= "/".substr($newName, 0, 3);
					else
						$strSavePath .= substr($newName, 0, 3)."/";

					if(!$io->FileExists($_SERVER["DOCUMENT_ROOT"]."/".$upload_dir."/".$strSavePath."/".$newName))
						break;
				}
			}

			$arFile["SUBDIR"] = $strSavePath;
			$arFile["FILE_NAME"] = $newName;
			$strDirName = $_SERVER["DOCUMENT_ROOT"]."/".$upload_dir."/".$strSavePath."/";
			$strDbFileNameX = $strDirName.$newName;
			$strPhysicalFileNameX = $io->GetPhysicalName($strDbFileNameX);

			CheckDirPath($strDirName);

			if(is_set($arFile, "content"))
			{
				$f = fopen($strPhysicalFileNameX, "ab");
				if(!$f)
					return false;
				if(!fwrite($f, $arFile["content"]))
					return false;
				fclose($f);
			}
			elseif(
				!copy($arFile["tmp_name"], $strPhysicalFileNameX)
				&& !move_uploaded_file($arFile["tmp_name"], $strPhysicalFileNameX)
			)
			{
				CFile::DoDelete($arFile["old_file"]);
				return false;
			}

			if(isset($arFile["old_file"]))
				CFile::DoDelete($arFile["old_file"]);

			@chmod($strPhysicalFileNameX, BX_FILE_PERMISSIONS);

			$imgArray = CFile::GetImageSize($strDbFileNameX);

			if(is_array($imgArray))
			{
				$arFile["WIDTH"] = $imgArray[0];
				$arFile["HEIGHT"] = $imgArray[1];
			}
			else
			{
				$arFile["WIDTH"] = 0;
				$arFile["HEIGHT"] = 0;
			}
		} //if(!$bExternalStorage)


		/****************************** QUOTA ******************************/
		if (COption::GetOptionInt("main", "disk_space") > 0)
		{
			CDiskQuota::updateDiskQuota("file", $arFile["size"], "insert");
		}
		/****************************** QUOTA ******************************/

		$NEW_IMAGE_ID = CFile::DoInsert(array(
			"HEIGHT" => $arFile["HEIGHT"],
			"WIDTH" => $arFile["WIDTH"],
			"FILE_SIZE" => $arFile["size"],
			"CONTENT_TYPE" => $arFile["type"],
			"SUBDIR" => $arFile["SUBDIR"],
			"FILE_NAME" => $arFile["FILE_NAME"],
			"MODULE_ID" => $arFile["MODULE_ID"],
			"ORIGINAL_NAME" => $arFile["ORIGINAL_NAME"],
			"DESCRIPTION" => isset($arFile["description"])? $arFile["description"]: '',
			"HANDLER_ID" => isset($arFile["HANDLER_ID"])? $arFile["HANDLER_ID"]: '',
		));

		CFile::CleanCache($NEW_IMAGE_ID);
		return $NEW_IMAGE_ID;
	}
示例#6
0
文件: cml2.php 项目: nycmic/bittest
 function ImportSection($xml_tree_id, $IBLOCK_ID, $parent_section_id)
 {
     /** @var CUserTypeManager $USER_FIELD_MANAGER */
     global $USER_FIELD_MANAGER;
     /** @var CDatabase $DB */
     global $DB;
     static $arUserFields;
     if ($parent_section_id === false) {
         $arUserFields = array();
         foreach ($USER_FIELD_MANAGER->GetUserFields("IBLOCK_" . $IBLOCK_ID . "_SECTION") as $FIELD_ID => $arField) {
             if (strlen($arField["XML_ID"]) <= 0) {
                 $arUserFields[$FIELD_ID] = $arField;
             } else {
                 $arUserFields[$arField["XML_ID"]] = $arField;
             }
         }
     }
     $this->next_step["section_sort"] += 10;
     $arSection = array("IBLOCK_SECTION_ID" => $parent_section_id, "ACTIVE" => "Y");
     $rsS = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $xml_tree_id));
     $XML_SECTIONS_PARENT = false;
     $XML_PROPERTIES_PARENT = false;
     $XML_SECTION_PROPERTIES = false;
     $deletedStatus = false;
     while ($arS = $rsS->Fetch()) {
         if (isset($arS["VALUE_CLOB"])) {
             $arS["VALUE"] = $arS["VALUE_CLOB"];
         }
         if ($arS["NAME"] == $this->mess["IBLOCK_XML2_ID"]) {
             $arSection["XML_ID"] = $arS["VALUE"];
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_NAME"]) {
             $arSection["NAME"] = $arS["VALUE"];
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_DESCRIPTION"]) {
             $arSection["DESCRIPTION"] = $arS["VALUE"];
             $arSection["DESCRIPTION_TYPE"] = "html";
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_GROUPS"]) {
             $XML_SECTIONS_PARENT = $arS["ID"];
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_PROPERTIES_VALUES"]) {
             $XML_PROPERTIES_PARENT = $arS["ID"];
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_BX_SORT"]) {
             $arSection["SORT"] = intval($arS["VALUE"]);
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_BX_CODE"]) {
             $arSection["CODE"] = $arS["VALUE"];
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_BX_PICTURE"]) {
             if (strlen($arS["VALUE"]) > 0) {
                 $arSection["PICTURE"] = $this->MakeFileArray($arS["VALUE"]);
             } else {
                 $arSection["PICTURE"] = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($arS["ID"]));
             }
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_BX_DETAIL_PICTURE"]) {
             if (strlen($arS["VALUE"]) > 0) {
                 $arSection["DETAIL_PICTURE"] = $this->MakeFileArray($arS["VALUE"]);
             } else {
                 $arSection["DETAIL_PICTURE"] = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($arS["ID"]));
             }
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_BX_ACTIVE"]) {
             $arSection["ACTIVE"] = $arS["VALUE"] == "true" || intval($arS["VALUE"]) ? "Y" : "N";
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_SECTION_PROPERTIES"]) {
             $XML_SECTION_PROPERTIES = $arS["ID"];
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_STATUS"]) {
             $deletedStatus = $arS["VALUE"] === $this->mess["IBLOCK_XML2_DELETED"];
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_INHERITED_TEMPLATES"]) {
             $arSection["IPROPERTY_TEMPLATES"] = array();
             $arTemplates = $this->_xml_file->GetAllChildrenArray($arS["ID"]);
             foreach ($arTemplates as $TEMPLATE) {
                 $id = $TEMPLATE[$this->mess["IBLOCK_XML2_ID"]];
                 $template = $TEMPLATE[$this->mess["IBLOCK_XML2_VALUE"]];
                 if (strlen($id) > 0 && strlen($template) > 0) {
                     $arSection["IPROPERTY_TEMPLATES"][$id] = $template;
                 }
             }
         } elseif ($arS["NAME"] == $this->mess["IBLOCK_XML2_DELETE_MARK"]) {
             $arSection["ACTIVE"] = $arS["VALUE"] == "true" || intval($arS["VALUE"]) ? "N" : "Y";
         }
     }
     if ($deletedStatus) {
         $obSection = new CIBlockSection();
         $rsSection = $obSection->GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "XML_ID" => $arSection["XML_ID"]), false, array("ID"));
         if ($arDBSection = $rsSection->Fetch()) {
             $obSection->Update($arDBSection["ID"], array("ACTIVE" => "N"));
             $this->_xml_file->Add(array("PARENT_ID" => 0, "LEFT_MARGIN" => $arDBSection["ID"]));
         }
         return true;
     }
     if ($XML_PROPERTIES_PARENT) {
         $rs = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $XML_PROPERTIES_PARENT), array("ID"));
         while ($ar = $rs->Fetch()) {
             $arXMLProp = $this->_xml_file->GetAllChildrenArray($ar["ID"]);
             if (array_key_exists($this->mess["IBLOCK_XML2_ID"], $arXMLProp) && array_key_exists($arXMLProp[$this->mess["IBLOCK_XML2_ID"]], $arUserFields)) {
                 $arUserField = $arUserFields[$arXMLProp[$this->mess["IBLOCK_XML2_ID"]]];
                 unset($arXMLProp[$this->mess["IBLOCK_XML2_ID"]]);
                 $arProp = array();
                 $i = 0;
                 foreach ($arXMLProp as $value) {
                     if ($arUserField["USER_TYPE"]["BASE_TYPE"] === "file") {
                         $arProp["n" . $i++] = $this->MakeFileArray($value);
                     } elseif ($arUserField["USER_TYPE"]["BASE_TYPE"] === "enum") {
                         $arProp["n" . $i++] = $this->GetSectionEnumByXML_ID($arUserField["ID"], $value);
                     } else {
                         $arProp["n" . $i++] = $value;
                     }
                 }
                 if ($arUserField["MULTIPLE"] == "N") {
                     $arSection[$arUserField["FIELD_NAME"]] = array_pop($arProp);
                 } else {
                     $arSection[$arUserField["FIELD_NAME"]] = $arProp;
                 }
             }
         }
     }
     $obSection = new CIBlockSection();
     $rsSection = $obSection->GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "XML_ID" => $arSection["XML_ID"]), false);
     if ($arDBSection = $rsSection->Fetch()) {
         if (!array_key_exists("CODE", $arSection) && is_array($this->translit_on_update)) {
             $arSection["CODE"] = CUtil::translit($arSection["NAME"], LANGUAGE_ID, $this->translit_on_update);
             //Check if name was not changed in a way to update CODE
             if (substr($arDBSection["CODE"], 0, strlen($arSection["CODE"])) === $arSection["CODE"]) {
                 unset($arSection["CODE"]);
             } else {
                 $arSection["CODE"] = $this->CheckSectionCode($IBLOCK_ID, $arSection["CODE"]);
             }
         }
         $bChanged = false;
         foreach ($arSection as $key => $value) {
             if (is_array($arDBSection[$key]) || $arDBSection[$key] != $value) {
                 $bChanged = true;
                 break;
             }
         }
         if ($bChanged) {
             foreach ($arUserFields as $arField1) {
                 if ($arField1["USER_TYPE"]["BASE_TYPE"] == "file") {
                     $sectionUF = $USER_FIELD_MANAGER->GetUserFields("IBLOCK_" . $IBLOCK_ID . "_SECTION", $arDBSection["ID"]);
                     foreach ($sectionUF as $arField2) {
                         if ($arField2["USER_TYPE"]["BASE_TYPE"] == "file" && isset($arSection[$arField2["FIELD_NAME"]])) {
                             if ($arField2["MULTIPLE"] == "Y" && is_array($arField2["VALUE"])) {
                                 foreach ($arField2["VALUE"] as $old_file_id) {
                                     $arSection[$arField2["FIELD_NAME"]][] = array("del" => true, "old_id" => $old_file_id);
                                 }
                             } elseif ($arField2["MULTIPLE"] == "N" && $arField2["VALUE"] > 0) {
                                 $arSection[$arField2["FIELD_NAME"]]["old_id"] = $arField2["VALUE"];
                             }
                         }
                     }
                     break;
                 }
             }
             $res = $obSection->Update($arDBSection["ID"], $arSection);
             if (!$res) {
                 $this->LAST_ERROR = $obSection->LAST_ERROR;
                 return $this->LAST_ERROR;
             }
         } else {
             $DB->Query("UPDATE b_iblock_section SET TIMESTAMP_X = " . $DB->CurrentTimeFunction() . " WHERE ID=" . $arDBSection["ID"]);
         }
         $arSection["ID"] = $arDBSection["ID"];
     } else {
         if (!array_key_exists("CODE", $arSection) && is_array($this->translit_on_add)) {
             $arSection["CODE"] = $this->CheckSectionCode($IBLOCK_ID, CUtil::translit($arSection["NAME"], LANGUAGE_ID, $this->translit_on_add));
         }
         $arSection["IBLOCK_ID"] = $IBLOCK_ID;
         if (!isset($arSection["SORT"])) {
             $arSection["SORT"] = $this->next_step["section_sort"];
         }
         $arSection["ID"] = $obSection->Add($arSection);
         if (!$arSection["ID"]) {
             $this->LAST_ERROR = $obSection->LAST_ERROR;
             return $this->LAST_ERROR;
         }
     }
     if ($XML_SECTION_PROPERTIES) {
         $this->ImportSectionProperties($XML_SECTION_PROPERTIES, $IBLOCK_ID, $arSection["ID"]);
     }
     if ($arSection["ID"]) {
         $this->_xml_file->Add(array("PARENT_ID" => 0, "LEFT_MARGIN" => $arSection["ID"]));
     }
     if ($XML_SECTIONS_PARENT) {
         $rs = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $XML_SECTIONS_PARENT), array("ID"));
         while ($ar = $rs->Fetch()) {
             $result = $this->ImportSection($ar["ID"], $IBLOCK_ID, $arSection["ID"]);
             if ($result !== true) {
                 return $result;
             }
         }
     }
     return true;
 }
示例#7
0
function cmlStartElement($parser, $name, $attrs)
{
    global $DB;
    global $USER;
    global $currentCatalog, $currentProduct, $currentProperty, $currentOffersList, $currentOffer;
    global $arIBlockCache, $iBlockIDString, $arCMLCurrencies;
    global $APPLICATION, $nameUTF, $IBLOCK_TYPE_ID, $strImportErrorMessage;
    global $oIBlock, $cmlLoadCnts;
    global $USE_TRANSLIT, $ADD_TRANSLIT;
    global $boolIBlockTranslit, $boolTranslitElement, $boolTranslitSection, $arTranslitElement, $arTranslitSection;
    static $SITE_ID = false;
    if (false === $SITE_ID) {
        $SITE_ID = 'ru';
        $dbSite = CSite::GetByID($SITE_ID);
        if (!$dbSite->Fetch()) {
            $dbSite = CSite::GetList($by = 'sort', $order = 'asc');
            $arSite = $dbSite->Fetch();
            $SITE_ID = $arSite['ID'];
        }
    }
    switch ($name) {
        case $nameUTF["Catalog"]:
            $currentCatalog = array();
            if (in_array($nameUTF["ID"], array_keys($attrs))) {
                $currentCatalog["ID"] = $attrs[$nameUTF["ID"]];
            }
            if (in_array($nameUTF["Name"], array_keys($attrs))) {
                $currentCatalog["Name"] = $attrs[$nameUTF["Name"]];
            }
            if (in_array($nameUTF["Description"], array_keys($attrs))) {
                $currentCatalog["Description"] = $attrs[$nameUTF["Description"]];
            }
            $boolVersion = true;
            $dbIBlockList = CIBlock::GetList(array(), array("=TYPE" => $IBLOCK_TYPE_ID, "=XML_ID" => $currentCatalog["ID"], 'MIN_PERMISSION' => 'W'));
            if ($arIBlock = $dbIBlockList->Fetch()) {
                $arIBlock['VERSION'] = intval($arIBlock['VERSION']);
                if (1 != $arIBlock['VERSION']) {
                    $bUpdate = true;
                    $boolVersion = false;
                    $res = false;
                } else {
                    $bUpdate = true;
                    $currentCatalog["BID"] = $arIBlock["ID"];
                    $res = $oIBlock->Update($currentCatalog["BID"], array("NAME" => $currentCatalog["Name"], "DESCRIPTION" => $currentCatalog["Description"]));
                }
            } elseif ($USER->IsAdmin()) {
                $bUpdate = false;
                $arFields = array("ACTIVE" => "Y", "NAME" => $currentCatalog["Name"], "XML_ID" => $currentCatalog["ID"], "IBLOCK_TYPE_ID" => $IBLOCK_TYPE_ID, "LID" => $SITE_ID, "WORKFLOW" => "N", "VERSION" => 1);
                if ('Y' == $USE_TRANSLIT && 'Y' == $ADD_TRANSLIT) {
                    $arFields['FIELDS'] = array('CODE' => array('DEFAULT_VALUE' => array('TRANSLITERATION' => 'Y')), 'SECTION_CODE' => array('DEFAULT_VALUE' => array('TRANSLITERATION' => 'Y')));
                }
                $currentCatalog["BID"] = $oIBlock->Add($arFields);
                $res = $currentCatalog["BID"] > 0;
            } else {
                $res = false;
            }
            $cmlLoadCnts["CATALOG"]++;
            if (!$res) {
                $strImportErrorMessage .= str_replace("#ERROR#", $boolVersion ? $oIBlock->LAST_ERROR : GetMessage('CML_R_VERSION'), str_replace("#NAME#", "[" . $currentCatalog["BID"] . "] \"" . $currentCatalog["Name"] . "\" (" . $currentCatalog["ID"] . ")", str_replace("#ACT#", $bUpdate ? GetMessage("CML_R_EDIT") : GetMessage("CML_R_ADD"), GetMessage("CML_R_IBLOCK")))) . ".<br>";
                $currentCatalog = false;
            } else {
                $boolIBlockTranslit = $USE_TRANSLIT;
                $boolTranslitElement = false;
                $boolTranslitSection = false;
                $arTranslitElement = array();
                $arTranslitSection = array();
                if ('Y' == $boolIBlockTranslit) {
                    $boolOutTranslit = false;
                    $arIBlock = CIBlock::GetArrayByID($currentCatalog["BID"]);
                    if (isset($arIBlock['FIELDS']['CODE']['DEFAULT_VALUE'])) {
                        if ('Y' == $arIBlock['FIELDS']['CODE']['DEFAULT_VALUE']['TRANSLITERATION'] && 'Y' == $arIBlock['FIELDS']['CODE']['DEFAULT_VALUE']['USE_GOOGLE']) {
                            $boolOutTranslit = true;
                        }
                    }
                    if (isset($arIBlock['FIELDS']['SECTION_CODE']['DEFAULT_VALUE'])) {
                        if ('Y' == $arIBlock['FIELDS']['SECTION_CODE']['DEFAULT_VALUE']['TRANSLITERATION'] && 'Y' == $arIBlock['FIELDS']['SECTION_CODE']['DEFAULT_VALUE']['USE_GOOGLE']) {
                            $boolOutTranslit = true;
                        }
                    }
                    if ($boolOutTranslit) {
                        $boolIBlockTranslit = 'N';
                        $strImportErrorMessage .= str_replace("#ERROR#", GetMessage('CATI_USE_CODE_TRANSLIT_OUT'), str_replace("#NAME#", "[" . $currentCatalog["BID"] . "] \"" . $currentCatalog["Name"] . "\" (" . $currentCatalog["ID"] . ")", str_replace("#ACT#", $bUpdate ? GetMessage("CML_R_EDIT") : GetMessage("CML_R_ADD"), GetMessage("CML_R_IBLOCK")))) . ".<br>";
                        $currentCatalog = false;
                        break;
                    }
                    if ('Y' == $boolIBlockTranslit) {
                        if (isset($arIBlock['FIELDS']['CODE']['DEFAULT_VALUE'])) {
                            $arTransSettings = $arIBlock['FIELDS']['CODE']['DEFAULT_VALUE'];
                            $boolTranslitElement = 'Y' == $arTransSettings['TRANSLITERATION'] ? true : false;
                            $arTranslitElement = array("max_len" => $arTransSettings['TRANS_LEN'], "change_case" => $arTransSettings['TRANS_CASE'], "replace_space" => $arTransSettings['TRANS_SPACE'], "replace_other" => $arTransSettings['TRANS_OTHER'], "delete_repeat_replace" => 'Y' == $arTransSettings['TRANS_EAT'] ? true : false, "use_google" => 'Y' == $arTransSettings['USE_GOOGLE'] ? true : false);
                        }
                        if (isset($arIBlock['FIELDS']['SECTION_CODE']['DEFAULT_VALUE'])) {
                            $arTransSettings = $arIBlock['FIELDS']['SECTION_CODE']['DEFAULT_VALUE'];
                            $boolTranslitSection = 'Y' == $arTransSettings['TRANSLITERATION'] ? true : false;
                            $arTranslitSection = array("max_len" => $arTransSettings['TRANS_LEN'], "change_case" => $arTransSettings['TRANS_CASE'], "replace_space" => $arTransSettings['TRANS_SPACE'], "replace_other" => $arTransSettings['TRANS_OTHER'], "delete_repeat_replace" => 'Y' == $arTransSettings['TRANS_EAT'] ? true : false, "use_google" => 'Y' == $arTransSettings['USE_GOOGLE'] ? true : false);
                        }
                    }
                }
                $arIBlockCache[$currentCatalog["ID"]] = IntVal($currentCatalog["BID"]);
                $iBlockIDString .= "," . IntVal($currentCatalog["BID"]);
                if (!CCatalog::GetByID($currentCatalog["BID"])) {
                    CCatalog::Add(array("IBLOCK_ID" => $currentCatalog["BID"]));
                }
                if (function_exists("catalog_1c_mutator_catalogT")) {
                    catalog_1c_mutator_catalogT($currentCatalog["BID"], $bUpdate, $attrs);
                }
            }
            break;
        case $nameUTF["Property"]:
            if ($currentCatalog) {
                $currentProperty = array();
                $currentProperty["ID"] = $attrs[$nameUTF["ID"]];
                $currentProperty["DataType"] = $attrs[$nameUTF["DataType"]];
                $currentProperty["Multiple"] = $attrs[$nameUTF["Multiple"]] == "1" || $attrs[$nameUTF["Multiple"]] == "Y" ? "Y" : "N";
                $currentProperty["Name"] = $attrs[$nameUTF["Name"]];
                $currentProperty["DefaultValue"] = $attrs[$nameUTF["DefaultValue"]];
                if ($currentProperty["DataType"] == "enumeration") {
                    $currentProperty["DataType"] = "L";
                } else {
                    $currentProperty["DataType"] = "S";
                }
                $strSql = "INSERT INTO b_catalog_cml_property (XML_ID, CATALOG_ID, DATA_TYPE, MULTIPLE, NAME, DEFAULT_VALUE) " . "VALUES ('" . $currentProperty["ID"] . "', " . $currentCatalog["BID"] . ", '" . $currentProperty["DataType"] . "', '" . $currentProperty["Multiple"] . "', '" . $DB->ForSql($currentProperty["Name"]) . "', '" . $DB->ForSql($currentProperty["DefaultValue"]) . "')";
                $DB->Query($strSql);
                $cmlLoadCnts["PROPERTY"]++;
            }
            break;
        case $nameUTF["PropertyVariant"]:
            if ($currentProperty) {
                $currentPropertyEnum = array();
                $currentPropertyEnum["ID"] = $attrs[$nameUTF["ID"]];
                $currentPropertyEnum["Name"] = $attrs[$nameUTF["Name"]];
                $currentPropertyEnum["Default"] = $currentProperty["DefaultValue"] == $currentPropertyEnum["ID"] ? "Y" : "N";
                $strSql = "INSERT INTO b_catalog_cml_property_var (XML_ID, CATALOG_ID, PROPERTY_XML_ID, NAME, DEFAULT_VALUE) " . "VALUES ('" . $currentPropertyEnum["ID"] . "', " . $currentCatalog["BID"] . ", '" . $currentProperty["ID"] . "', '" . $DB->ForSql($currentPropertyEnum["Name"]) . "', '" . $currentPropertyEnum["Default"] . "')";
                $DB->Query($strSql);
            }
            break;
        case $nameUTF["Category"]:
            if ($currentCatalog) {
                $currentCategory = array();
                if (in_array($nameUTF["ID"], array_keys($attrs))) {
                    $currentCategory["ID"] = $attrs[$nameUTF["ID"]];
                }
                if (in_array($nameUTF["Name"], array_keys($attrs))) {
                    $currentCategory["Name"] = $attrs[$nameUTF["Name"]];
                }
                if (in_array($nameUTF["ParentCategory"], array_keys($attrs))) {
                    $currentCategory["ParentCategory"] = $attrs[$nameUTF["ParentCategory"]];
                }
                $currentCategory["Code"] = false;
                if (true === $boolTranslitSection) {
                    $currentCategory["Code"] = CUtil::translit($currentCategory["Name"], 'ru', $arTranslitSection);
                }
                $strSql = "INSERT INTO b_catalog_cml_section (XML_ID, CATALOG_ID, PARENT_XML_ID, NAME, CODE) " . "VALUES ('" . $currentCategory["ID"] . "', " . $currentCatalog["BID"] . ", '" . $currentCategory["ParentCategory"] . "', '" . $DB->ForSql($currentCategory["Name"]) . "', '" . (false === $currentCategory["Code"] ? '' : $DB->ForSql($currentCategory["Code"])) . "')";
                $DB->Query($strSql);
                $cmlLoadCnts["SECTION"]++;
            }
            break;
        case $nameUTF["Product"]:
            if ($currentCatalog) {
                $currentProduct = array();
                $currentProduct["ID"] = $attrs[$nameUTF["ID"]];
                $currentProduct["Name"] = $attrs[$nameUTF["Name"]];
                $currentProduct["ParentCategory"] = $attrs[$nameUTF["ParentCategory"]];
                $currentProduct["Code"] = false;
                if (true === $boolTranslitElement) {
                    $currentProduct["Code"] = CUtil::translit($currentProduct["Name"], 'ru', $arTranslitElement);
                }
                $strSql = "INSERT INTO b_catalog_cml_product (XML_ID, CATALOG_ID, NAME, MODIFIED_BY, PARENT_CATEGORY, CODE) " . "VALUES ('" . $currentProduct["ID"] . "', " . $currentCatalog["BID"] . ", '" . $DB->ForSql($currentProduct["Name"]) . "', " . (IntVal($USER->GetID()) > 0 ? IntVal($USER->GetID()) : 1) . ", '" . $currentProduct["ParentCategory"] . "', '" . (false === $currentProduct["Code"] ? '' : $DB->ForSql($currentProduct["Code"])) . "')";
                $DB->Query($strSql);
                if (function_exists("catalog_1c_mutator_productT")) {
                    catalog_1c_mutator_productT($attrs);
                }
                $cmlLoadCnts["PRODUCT"]++;
                if (strlen($currentProduct["ParentCategory"]) > 0) {
                    $strSql = "INSERT INTO b_catalog_cml_product_cat (CATALOG_ID, PRODUCT_XML_ID, CATEGORY_XML_ID) " . "VALUES (" . $currentCatalog["BID"] . ", '" . $currentProduct["ID"] . "',  '" . $currentProduct["ParentCategory"] . "')";
                    $DB->Query($strSql);
                }
            }
            break;
        case $nameUTF["CategoryReference"]:
            if ($currentProduct) {
                $strSql = "INSERT INTO b_catalog_cml_product_cat (CATALOG_ID, PRODUCT_XML_ID, CATEGORY_XML_ID) " . "VALUES (" . $currentCatalog["BID"] . ", '" . $currentProduct["ID"] . "',  '" . $attrs[$nameUTF["IdInCatalog"]] . "')";
                $DB->Query($strSql);
            }
            break;
        case $nameUTF["PropertyValue"]:
            if ($currentProduct) {
                $propertyID = $attrs[$nameUTF["PropertyId"]];
                $propertyValue = $attrs[$nameUTF["Value"]];
                $strSql = "INSERT INTO b_catalog_cml_product_prop (CATALOG_ID, PRODUCT_XML_ID, PROPERTY_XML_ID, PROPERTY_VALUE, PROPERTY_VALUE_TEXT) " . "VALUES (" . $currentCatalog["BID"] . ", '" . $currentProduct["ID"] . "',  '" . $propertyID . "', '" . $DB->ForSql($propertyValue, 255) . "', '" . $DB->ForSql($propertyValue) . "')";
                $DB->Query($strSql);
            } elseif ($currentOffersList && !$currentOffer) {
                $priceType = $attrs[$nameUTF["Value"]];
                $currentOffersList["PRICE_TYPE"] = $priceType;
                $strSql = "INSERT INTO b_catalog_cml_oflist_prop (OFFER_LIST_XML_ID, PROPERTY_VALUE) " . "VALUES (" . $currentOffersList["ID"] . ", '" . $DB->ForSql($priceType, 255) . "')";
                $DB->Query($strSql);
            }
            break;
        case $nameUTF["OffersList"]:
            $currentOffersList = array();
            $currentOffersList["CatalogID"] = $attrs[$nameUTF["CatalogID"]];
            $currentOffersList["Currency"] = $arCMLCurrencies[$attrs[$nameUTF["Currency"]]];
            if (strlen($currentOffersList["Currency"]) <= 0) {
                $currentOffersList["Currency"] = "USD";
            }
            if (!array_key_exists($currentOffersList["CatalogID"], $arIBlockCache)) {
                $dbIBlockList = CIBlock::GetList(array(), array("XML_ID" => $currentOffersList["CatalogID"]));
                if ($arIBlock = $dbIBlockList->Fetch()) {
                    $arIBlockCache[$currentOffersList["CatalogID"]] = IntVal($arIBlock["ID"]);
                }
            }
            $strSql = "INSERT INTO b_catalog_cml_oflist(CATALOG_ID) " . "VALUES (" . $arIBlockCache[$currentOffersList["CatalogID"]] . ")";
            $DB->Query($strSql);
            $currentOffersList["ID"] = IntVal($DB->LastID());
            break;
        case $nameUTF["Offer"]:
            if ($currentOffersList) {
                $currentOffer = array();
                $currentOffer["ProductId"] = $attrs[$nameUTF["ProductId"]];
                $currentOffer["Price"] = DoubleVal(str_replace(",", ".", $attrs[$nameUTF["Price"]]));
                $currentOffer["Amount"] = IntVal($attrs[$nameUTF["Amount"]]);
                $currentOffer["Currency"] = $arCMLCurrencies[$attrs[$nameUTF["Currency"]]];
                if (strlen($currentOffer["Currency"]) <= 0) {
                    $currentOffer["Currency"] = $currentOffersList["Currency"];
                }
                $strSql = "INSERT INTO b_catalog_cml_offer (OFFER_LIST_XML_ID, PRODUCT_XML_ID, PRICE, AMOUNT, CURRENCY) " . "VALUES ('" . $currentOffersList["ID"] . "', '" . $currentOffer["ProductId"] . "', " . $currentOffer["Price"] . ", " . $currentOffer["Amount"] . ", '" . $currentOffer["Currency"] . "')";
                $DB->Query($strSql);
                $cmlLoadCnts["OFFER"]++;
            }
            break;
        case $nameUTF['CommerceInfo']:
            if (isset($attrs[$nameUTF['CommerceInfoVersion']])) {
                $strVersion = (string) $attrs[$nameUTF['CommerceInfoVersion']];
                if (version_compare($strVersion, '2.0') >= 0) {
                    $strImportErrorMessage .= GetMessage("CICML_INVALID_VERSION") . "<br>";
                }
                $currentCatalog = false;
                return false;
            }
            break;
        default:
            break;
    }
    return true;
}
<?php

require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/mail/prolog.php";
$MOD_RIGHT = $APPLICATION->GetGroupRight("mail");
if ($MOD_RIGHT < "R") {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
IncludeModuleLangFile(__FILE__);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/mail/include.php";
$dbr = $DB->Query("SELECT * FROM b_mail_msg_attachment WHERE ID=" . intval($ID));
if ($dbr_arr = $dbr->Fetch()) {
    $utfName = CHTTP::urnEncode($dbr_arr['FILE_NAME'], 'UTF-8');
    $translitName = CUtil::translit($dbr_arr['FILE_NAME'], LANGUAGE_ID, array('max_len' => 1024, 'safe_chars' => '.', 'replace_space' => '-'));
    header("Content-Type: application/force-download; name=\"" . $translitName . "\"");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: " . $dbr_arr["FILE_SIZE"]);
    header("Content-Disposition: attachment; filename=\"" . $translitName . "\"; filename*=utf-8''" . $utfName);
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    if ($dbr_arr['FILE_ID']) {
        if ($file = CFile::makeFileArray($dbr_arr['FILE_ID'])) {
            readfile($file['tmp_name']);
        }
    } else {
        echo $dbr_arr['FILE_DATA'];
    }
    die;
}
$APPLICATION->SetTitle(GetMessage("EDIT_MESSAGE_TITLE"));
示例#9
0
 public function modify($value)
 {
     return \CUtil::translit($value, 'ru', ["max_len" => 100, "change_case" => 'L', "replace_space" => '_', "replace_other" => '_', "delete_repeat_replace" => true, "safe_chars" => '']);
 }
示例#10
0
	/**
	 * [bildArrFields description]
	 * @param  object $obprop
	 * @param  integer $sortKey
	 * @return array
	 */
	protected function bildArrFields($obprop, $sortKey){
		$name = null; $id1c = null;
		$name = $obprop->Наименование;
		$id1c = $obprop->Ид;
		$translitParams = $this->translitParams();
		$arFields = Array(
			"NAME" => (string)$name,
			"ACTIVE" => "Y",
			"SORT" => ($sortKey > 0)? ($sortKey * 10) + 500 : 500,
			"CODE" => (string)$id1c,
			"XML_ID" => CUtil::translit($name, "ru", $translitParams),
			"IBLOCK_ID" => $this->getIblockId(),
			"FILTRABLE" => "Y",
		);
	    if (!empty($obprop->ВариантыЗначений)):
	    	$propValues = $obprop->ВариантыЗначений;
	    	$s = 0;
	    	$arFields["PROPERTY_TYPE"] = "L";
	    	$arFields["MULTIPLE"] = "Y";
	    	$arFields["LIST_TYPE"] = "L"; // Может быть "L" - выпадающий список или "C" - флажки.
	    	foreach ($propValues->Вариант as $listvalue):
	    		if (!empty($listvalue->Ид) && !empty($listvalue->Значение)):
	    			$sort = ($s > 0)? ($s*100)+100 : 100;
			    	$arFields["VALUES"][] = Array(
						"VALUE" => (string)$listvalue->Значение,
						"DEF" => "N",
						"SORT" => $sort,
						"XML_ID" => CUtil::translit($listvalue->Значение, "ru", $translitParams)
					);
					$s++;
	    		endif;
	    	endforeach;
		elseif ($id1c == "IMAGES"):
			$arFields["PROPERTY_TYPE"] = "F";
			$arFields["MULTIPLE"] = "Y";
		elseif ($id1c == "ARTIKUL"):
			$arFields["SEARCHABLE"] = "Y";
		elseif ($id1c == "SORT_NEW" || $id1c == "SORT_SALE"):
			$arFields["PROPERTY_TYPE"] = "N";
		else:
			$arFields["PROPERTY_TYPE"] = "S";
		endif;
		return $arFields;
	}
示例#11
0
	/**
	 * [bildSections description]
	 * @param  object $section
	 * @param  int $lvl
	 * @return array
	 */
	protected function bildSections($section, $lvl, $idParent){
		$s = intval($lvl);
		$i = 1;
		foreach ($section->Группа as $sec) :
			//set_time_limit(10);
			$sort = $sec->CML2_SORT;
			$code = CUtil::translit($sec->Наименование, "ru", $this->translitParams());
			foreach ($this->arSectionsIblock as $key => $arSections) :
				if ($code == $arSections["CODE"] && $idParent == $arSections["IBLOCK_SECTION_ID"]):
					unset($this->arSectionsIblock[$key]);
				endif;
			endforeach;
			$rec = $this->addSection($sec, $s, $idParent, $sort);
			if ($rec["result"] === true):
				$result[] = $rec;
				if (!empty($sec->Группы) && isset($sec->Группы)):
					$s++;
					$this->bildSections($sec->Группы, $s, $rec["id"]);
				endif;
			endif;
			$i++;
		endforeach;
		return $result;
	}
示例#12
0
/**
 * [getPdfFile generate and save PDF file]
 * @param  int $idSpec
 * @return str or false
 */
function getPdfFile($idSpec)
{
    $arSpecification = getSpecification($idSpec);
    if ($arSpecification) {
        $allSumSpec = "";
        foreach ($arSpecification["ITEMS"] as $key => $arItems) {
            $allSumSpec += $arItems["DISCOUNT"]["PRICE"] * $arItems["PROPERTY_COUNT_VALUE"];
            $totalPrice += $arItems["DISCOUNT"]["DISCOUNT_PRICE"] * $arItems["PROPERTY_COUNT_VALUE"];
            $allDisSpec += $arItems["DISCOUNT"]["PRICE"] - $arItems["DISCOUNT"]["DISCOUNT_PRICE"];
            $allSumminDisSpec += $arItems["DISCOUNT"]["DISCOUNT_PRICE"] * $arItems["PROPERTY_COUNT_VALUE"];
        }
        include_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/php_interface/include/tcpdf/tcpdf.php";
        $curDate = date("d.m.Y H:i:s");
        global $USER;
        $name = $USER->GetFirstName() . "_" . $USER->GetLastName() . "_" . str_replace(" ", "_", $arSpecification["NAME"]) . "_" . $curDate;
        $nameFile = CUtil::translit($name, "ru", translitParams());
        // create new PDF document
        $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
        $fontname = TCPDF_FONTS::addTTFfont($_SERVER["DOCUMENT_ROOT"] . "/bitrix/php_interface/include/tcpdf/font_arial/arial.ttf", '', '', 32);
        // set document information
        $pdf->SetAuthor($USER->GetFirstName() . " " . $USER->GetLastName());
        $pdf->SetTitle("Спецификация " . $arSpecification["NAME"]);
        // set font
        $pdf->SetFont($fontname, 'BI', 12);
        // add a page
        $pdf->AddPage();
        $text = "Спецификация: №" . $arSpecification["ID"];
        $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        $text = "Дизайнер: " . $USER->GetFirstName() . " " . $USER->GetLastName();
        $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        $text = "Название спецификации: " . $arSpecification["NAME"];
        $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        $text = "Стоимость товаров: " . number_format($allSumSpec, 0, 0, " ") . " руб.";
        $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        $text = "Со скидкой: " . number_format($allSumminDisSpec, 0, 0, " ") . " руб.";
        $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        $text = "Экономия: " . number_format($allDisSpec, 0, 0, " ") . " руб.";
        $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        $text = "ИТОГО: " . number_format($totalPrice, 0, 0, " ") . " руб.";
        $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        $text = "Продукты:";
        $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        foreach ($arSpecification["ITEMS"] as $key => $arItems) {
            $text = $key + 1 . ". Артикул: " . $arItems["PRODUCT"]["PROPERTY_ARTIKUL_VALUE"];
            $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
            $text = "    Идентификатор продукта: " . $arItems["PRODUCT"]["ID"];
            $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
            $text = "    Название: " . $arItems["PRODUCT"]["NAME"];
            $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
            $text = "    Цена: " . number_format($arItems["DISCOUNT"]["DISCOUNT_PRICE"], 0, 0, " ") . " руб.";
            $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
            $text = "    Количество: " . $arItems["PROPERTY_COUNT_VALUE"];
            $pdf->Write(0, $text, '', 0, 'L', true, 0, false, false, 0);
        }
        $filePath = $_SERVER["DOCUMENT_ROOT"] . "/upload/spec_files/" . $nameFile . ".pdf";
        $path = "/upload/spec_files/" . $nameFile . ".pdf";
        //Close and save PDF document
        $pdf->Output($filePath, 'F');
        return $path;
    }
    return false;
}
示例#13
0
    private function importElement($arItems, $IBLOCK_ID = 0, $event = 'element')
    {
        if (!$IBLOCK_ID)
        {
            $IBLOCK_ID = $this->CATALOG_ID;
        }
        $arResult = array();
        $arOffers = array();

        $el = new \CIBlockElement;
        foreach ($arItems as $arItem)
        {
            if (!strlen($arItem['XML_ID']))
            {
                throw new \Exception('Empty element XML ID '.$arItem['name']);
            }
            $boolUpdate = true;

            if (!strlen($arItem['CODE']))
            {
                $arItem['CODE'] = \CUtil::translit($arItem['NAME'], 'ru', array(
                    "replace_space" => '-',
                    "replace_other" => '-'
                ));
            }
            $arLoadProduct = array(
                'ACTIVE'      => $arItem['ACTIVE'],
                'XML_ID'      => $arItem['XML_ID'],
                'NAME'        => $arItem['NAME'],
                'CODE'        => $arItem['CODE'],
                'DETAIL_TEXT' => $arItem['DESCRIPTION'],
            );
            $params = array(
                'select' => array('ID', 'ACTIVE'),
                'filter' => array(
                    '=IBLOCK_ID' => $IBLOCK_ID,
                    '=XML_ID'    => $arItem['XML_ID']
                )
            );
            $arElem = ElementTable::getRow($params);
            if ($arElem['ID'] > 0)
            {
                $boolUpdate = !App::compareHash($arItem);
                if ($boolUpdate || $arItem['ACTIVE'] !== $arElem['ACTIVE'])
                {
                    $el->Update($arElem['ID'], $arLoadProduct);
                    Report::update($event);
                }
            }
            else
            {
                $arSection = $this->getSectionByXML($arItem['SECTION_XML_ID'], $IBLOCK_ID);
                if (!$arSection['ID'])
                {
                    throw new \Exception('Cant find section with XML ID: '.$arItem['SECTION_XML_ID']);
                }
                $arLoadProduct = array_merge($arLoadProduct, array(
                    'IBLOCK_SECTION_ID' => $arSection['ID'],
                    'IBLOCK_ID'         => $IBLOCK_ID
                ));
                $arElem['ID'] = $el->Add($arLoadProduct);

                App::compareHash($arItem);
                Report::create($event);
            }

            // если элемент не нашли и не создали, выплюнем эксепшен
            if (!$arElem['ID'])
            {
                throw new \Exception('Cant create element');
            }
            $arResult[$arItem['XML_ID']] = $arElem['ID'];

            if ($boolUpdate)
            {
                $arCatalogProduct = array(
                    "ID"     => $arElem['ID'],
                    "WEIGHT" => $arItem['WEIGHT']
                );
                \CCatalogProduct::Add($arCatalogProduct);                      // добавим элемент в каталог
                \CPrice::SetBasePrice($arElem['ID'], $arItem['PRICE'], "RUB"); // установим базовую цену

                $arOfferProp = array();
                if (!empty($arItem['MODIFIERS']))
                {
                    foreach ($arItem['MODIFIERS'] as $arMod)
                    {
                        $arOfferProp[] = array(
                            'XML_ID'       => $this->defaultSectionID,
                            'VALUE_XML_ID' => $arMod['XML_ID'],
                            'REQUIRED'     => $arMod['REQUIRED']
                        );
                    }
                }
                if (!empty($arItem['GROUP_MODIFIERS'])) // тут то же самое, только нужно создать ТП из всего свойства, а не из конкретного значения
                {
                    foreach ($arItem['GROUP_MODIFIERS'] as $arMod)
                    {
                        $arOfferProp[] = array(
                            'XML_ID'       => $arMod['XML_ID'],
                            'VALUE_XML_ID' => '',
                            'REQUIRED'     => $arMod['REQUIRED']
                        );
                    }
                }

                if (!empty($arOfferProp))
                {
                    $arOffers[] = array(
                        'ID'     => $arElem['ID'],
                        'NAME'   => $arItem['NAME'],
                        'OFFERS' => $arOfferProp
                    );
                }
            }
        }

        if (!empty($arOffers)) // импорт ТП
        {
            $this->importOffers($arOffers);
        }

        return $arResult;
    }
	public function importIBEl($CRON = 0, $TYPES_ARR = array(), $START = 'N')
	{
		if($START == 'Y'):
			COption::SetOptionString(self::$module_id, 'pr_recrm_step', 0);
			COption::SetOptionString(self::$module_id, 'pr_recrm_start_upd', time());
		endif;
		
		CModule::IncludeModule("iblock");
		
		$STEP = $this->getStep();
		COption::SetOptionString(self::$module_id, 'pr_recrm_step', $STEP);
		
		if(!is_array($TYPES_ARR) AND $CRON === 'Y')
		{
			$TYPES_ARR = array();
			foreach($this->getSelectTypes() AS $T_V)
			{
				$TYPES_ARR [$T_V] = $T_V;
			}
		}
		
		$TYPES_G 	= is_array($TYPES_ARR) ? $TYPES_ARR : explode(',',$_GET['types']);
		$TYPES_G 	= array_filter($TYPES_G);
		$TYPES 		= $TYPES_G;
		
		//AddMessage2Log('Получены типы '.implode(', ',$TYPES_G));
		
		if(count($TYPES) == 0)
		{
			//AddMessage2Log('Выгрузка завершена');
			COption::SetOptionString(self::$module_id, 'pr_recrm_last_upd', time());
			COption::SetOptionString(self::$module_id, 'pr_recrm_start_upd', 0);
			COption::SetOptionString(self::$module_id, 'pr_recrm_step', '0');
			return true;
		}
		else
		{
			$TYPE 		= array_shift($TYPES);
			$arrIDs 	= $this->arrIDs($TYPE, $STEP);
			$el_import 	= $arrIDs['DEL'] + $arrIDs['NEW'] + $arrIDs['UPD'];
			$el_count 	= count($el_import);
			
			//AddMessage2Log('Начал выгружать '.$TYPE . ' количество ' . count($el_import));
			if($el_count == 0)
			{
				//AddMessage2Log('В типе '.$TYPE . ' больше нет объектов, вызываем метод выгрузки');
				COption::SetOptionString(self::$module_id, 'pr_recrm_step', '0');
				if($CRON === 'Y')
				{
					$this->importIBEl('Y', $TYPES);
				}
				else
				{
					return $this->importIBEl(0, $TYPES);
				}
			}
			else
			{
				$IBLOCK_ID 		= $this->getIBId($TYPE);
				$el_db 			= $this->getEliB($TYPE);
			}
			
			$StepTime = $this->getStepTime(); // Сколько шаг
			foreach($el_import AS $el_k)
			{
				if(intval($el_k) == 0) continue;
				
				/* Выход из цикла по времени */
				$LeftTime = time() - $this->getStartUpdate();
				if($CRON !== 'Y' AND $StepTime > 0 AND $LeftTime >= $StepTime) break;
				
				/* ID в Btrx */
				$elDbId = $el_db['id_btrx'][$el_k];
				
				if(in_array($el_k, $arrIDs['DEL'])):
					$el = new CIBlockElement;
					$el->Delete($elDbId);
					unset($arrIDs['DEL'][$el_k]);
					continue;
				endif;
				
				$el_title 			= '';
				$el_description 	= '';
				$PROP 				= array();
				
				/* Подробно о элемент из ReCrm */
				$get_json 			= $this->getJson($TYPE, array('id' => $el_k));
				$el_dA 				= $this->convertArrImport($TYPE, $get_json);
				$el_d				= $el_dA[$el_k];
				
				/* Заголовки */
				if(is_array($el_d['title']))
				{
					$el_title = $el_d['title']['value'];
					unset($el_d['title']);
				}
				elseif(is_array($el_d['name']))
				{
					$el_title = $el_d['name']['value'];
					unset($el_d['name']);
				}
				
				/* Описание */
				if(is_array($el_d['description'])):
					$el_description = nl2br(str_replace($this->getDescStr(), '', $el_d['description']['value']));
					unset($el_d['description']);
				endif;
				
				foreach($el_d AS $el_prop_k => $el_prop_v)
				{
					$PROP[$el_prop_k] = $this->dataChange($el_prop_k, $el_prop_v['value']);
				}
				
				/* Изображения */
				if($TYPE == 'agent')
				{
					$PROP['photo'] = $this->convertArrImport('agentphoto',$this->getJson('agentphoto', array('agent_id' => $el_k, 'width' => '500', 'height' => '500', 'crop' => '0')));
				}
				elseif($TYPE == 'estate')
				{
					$getCoverSize = $this->getCoverSize();
					$PROP['estatecoverphoto'] 	= $this->convertArrImport('estatecoverphoto',$this->getJson('estatecoverphoto', array('estate_id' => $el_k, 'width' => $getCoverSize['width'], 'height' => $getCoverSize['height'], 'crop' => '1', 'watermark' => $this->getWRK())));
					$PROP['estatephoto'] 		= $this->convertArrImport('estatephoto',$this->getJson('estatephoto', array('estate_id' => $el_k, 'width' => '800', 'height' => '600', 'crop' => '0', 'watermark' => $this->getWRK())));
					$PROP['estatephotolayout'] 	= $this->convertArrImport('estatephotolayout',$this->getJson('estatephotolayout', array('estate_id' => $el_k, 'width' => '800', 'height' => '600', 'crop' => '0', 'watermark' => $this->getWRK())));
					if($PROP['edit_date'] == '') 		$PROP['edit_date'] 		= $PROP['creation_date'];
					if($PROP['edit_datetime'] == '') 	$PROP['edit_datetime'] 	= $PROP['creation_datetime'];
				}
				
				/* Добавляем свойства которых нет */
				$this->checkIBProps($TYPE, $el_d);
				
				$el_code = CUtil::translit($el_title.'_'.$el_k, "ru" , array(
					"max_len" 				=> "100",
					"change_case" 			=> "L",
					"replace_space" 		=> "_",
					"replace_other" 		=> "_",
					"delete_repeat_replace" => "true",
					"use_google" 			=> "false",
				));
				
				$arEl = array(
					"MODIFIED_BY" 		=> $GLOBALS['USER']->GetID(),
					"IBLOCK_ID" 		=> $IBLOCK_ID,
					"NAME" 				=> $el_title,
					"CODE" 				=> $el_code,
					"DETAIL_TEXT" 		=> $el_description,
					"DETAIL_TEXT_TYPE" 	=> 'html',
				);
				
				$el = new CIBlockElement;
				
				if(in_array($el_k, $arrIDs['UPD']))
				{
					$cur_id = $el->Update($elDbId, $arEl);
					foreach($PROP AS $PROP_k => $PROP_v)
					{
						CIBlockElement::SetPropertyValues($elDbId, $IBLOCK_ID, $PROP_v, $PROP_k);
					}
					unset($arrIDs['UPD'][$el_k]);
				}
				
				if(in_array($el_k, $arrIDs['NEW']))
				{
					$arEl["PROPERTY_VALUES"] = $PROP;
					$cur_id = $el->Add($arEl);
					unset($arrIDs['NEW'][$el_k]);
				}
				
				$el_count--;
				
				//if($el->LAST_ERROR) AddMessage2Log('Ошибка на типе ' . $TYPE . ': ' . $el->LAST_ERROR);
			}
			
			//AddMessage2Log('Прошло сек '. $LeftTime . ' при времени шага '.$StepTime);
			//AddMessage2Log('Сброс цикла на типе '. $TYPE .' при количестве элементов '.$el_count);
			
			COption::SetOptionString(self::$module_id, 'pr_recrm_start_upd', time());
			$this->tmpDb($arrIDs);
			if($CRON === 'Y') $this->importIBEl('Y', $TYPES); // если крон - рекурсия
			return array(
				'MESS' 	=> GetMessage("PR_RECRM_STATUS_WHAT") . ': "'.prReCrmProps::getTypes('name', $TYPE).'", '.GetMessage("PR_RECRM_STATUS_COUNT").': '.$el_count.'.',
				'STEP' 	=> $STEP,
				'IBT' 	=> $TYPES_G,
			);
		}

	}
示例#15
0
 private function xml2id($xml)
 {
     $id = CUtil::translit($xml, LANGUAGE_ID, array("max_len" => 50, "change_case" => false, "replace_space" => '_', "replace_other" => '_', "delete_repeat_replace" => true));
     $id = trim($id);
     $id = preg_replace("/([^A-Za-z0-9]+)/", "", $id);
     return $id;
 }
if ($_REQUEST['submit']) {
    $arFilter = array(
        "IBLOCK_ID" => $_REQUEST['IBLOCK_ID'],
        "CODE" => false
    );
    $arTransParams = array(
        "max_len" => 100,
        "change_case" => 'L',
        "replace_space" => '-',
        "replace_other" => '-',
        "delete_repeat_replace" => true
    );
    $sections = CIBlockSection::GetList($arOrder, $arFilter, false);
    echo '<pre>';
    while ($ar_res = $sections->GetNext()) {
        $code = CUtil::translit($ar_res["NAME"], "ru", $arTransParams);
        $arPropArray = Array("CODE" => $code);
        $el = new CIBlockSection;
        $res = $el->Update($ar_res["ID"], $arPropArray);
        if ($res) {
            echo "Разделу [" . $ar_res["ID"] . "] <b>" . $ar_res["NAME"] . "</b> установлен код <b>" . $code . '</b>';
        } else {
            echo "Ошибка. Разделу [" . $ar_res["ID"] . "] <b>" . $ar_res["NAME"] . "</b> не установлен код. <b>" . $el->LAST_ERROR . "</b>";
        }
        echo "\r\n";
    }
    echo '</pre>';
} else {
    ?>    
    <form method="POST" method="POST"> <? $res = CIBlock::GetList(array("ID" => "ASC"), array(), false); ?> 
        <? IblocktoolsFormsHelper::showIblockListSelect(); ?>
示例#17
0
文件: cml2.php 项目: nProfessor/Mytb
	function ImportSection($xml_tree_id, $IBLOCK_ID, $parent_section_id)
	{
		/** @var CUserTypeManager $USER_FIELD_MANAGER */
		global $USER_FIELD_MANAGER;

		static $arUserFields;
		if($parent_section_id === false)
		{
			$arUserFields = array();
			foreach($USER_FIELD_MANAGER->GetUserFields("IBLOCK_".$IBLOCK_ID."_SECTION") as $FIELD_ID => $arField)
			{
				if(strlen($arField["XML_ID"]) <= 0)
					$arUserFields[$FIELD_ID] = $arField;
				else
					$arUserFields[$arField["XML_ID"]] = $arField;
			}
		}

		$this->next_step["section_sort"] += 10;
		$arSection = array(
			"IBLOCK_SECTION_ID" => $parent_section_id,
			"ACTIVE" => "Y",
		);
		$rsS = $this->_xml_file->GetList(
			array("ID" => "asc"),
			array("PARENT_ID" => $xml_tree_id)
		);
		$XML_SECTIONS_PARENT = false;
		$XML_PROPERTIES_PARENT = false;
		$XML_SECTION_PROPERTIES = false;
		$deletedStatus = false;
		while($arS = $rsS->Fetch())
		{
			if(isset($arS["VALUE_CLOB"]))
				$arS["VALUE"] = $arS["VALUE_CLOB"];

			if($arS["NAME"]==GetMessage("IBLOCK_XML2_ID"))
				$arSection["XML_ID"] = $arS["VALUE"];
			elseif($arS["NAME"]==GetMessage("IBLOCK_XML2_NAME"))
				$arSection["NAME"] = $arS["VALUE"];
			elseif($arS["NAME"]==GetMessage("IBLOCK_XML2_DESCRIPTION"))
			{
				$arSection["DESCRIPTION"] = $arS["VALUE"];
				$arSection["DESCRIPTION_TYPE"] = "html";
			}
			elseif($arS["NAME"]==GetMessage("IBLOCK_XML2_GROUPS"))
				$XML_SECTIONS_PARENT = $arS["ID"];
			elseif($arS["NAME"]==GetMessage("IBLOCK_XML2_PROPERTIES_VALUES"))
				$XML_PROPERTIES_PARENT = $arS["ID"];
			elseif($arS["NAME"]==GetMessage("IBLOCK_XML2_BX_SORT"))
				$arSection["SORT"] = intval($arS["VALUE"]);
			elseif($arS["NAME"]==GetMessage("IBLOCK_XML2_BX_CODE"))
				$arSection["CODE"] = $arS["VALUE"];
			elseif($arS["NAME"] == GetMessage("IBLOCK_XML2_BX_PICTURE"))
			{
				if(strlen($arS["VALUE"]) > 0)
					$arSection["PICTURE"] = $this->MakeFileArray($arS["VALUE"]);
				else
					$arSection["PICTURE"] = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($arS["ID"]));
			}
			elseif($arS["NAME"] == GetMessage("IBLOCK_XML2_BX_DETAIL_PICTURE"))
			{
				if(strlen($arS["VALUE"]) > 0)
					$arSection["DETAIL_PICTURE"] = $this->MakeFileArray($arS["VALUE"]);
				else
					$arSection["DETAIL_PICTURE"] = $this->MakeFileArray($this->_xml_file->GetAllChildrenArray($arS["ID"]));
			}
			elseif($arS["NAME"] == GetMessage("IBLOCK_XML2_BX_ACTIVE"))
				$arSection["ACTIVE"] = ($arS["VALUE"]=="true") || intval($arS["VALUE"])? "Y": "N";
			elseif($arS["NAME"] == GetMessage("IBLOCK_XML2_SECTION_PROPERTIES"))
				$XML_SECTION_PROPERTIES = $arS["ID"];
			elseif($arS["NAME"] == GetMessage("IBLOCK_XML2_STATUS"))
				$deletedStatus = $arS["VALUE"] === GetMessage("IBLOCK_XML2_DELETED");
		}

		if ($deletedStatus)
		{
			$obSection = new CIBlockSection;
			$rsSection = $obSection->GetList(array(), array(
				"IBLOCK_ID" => $IBLOCK_ID,
				"XML_ID" => $arSection["XML_ID"],
			), false, array("ID"));
			if($arDBSection = $rsSection->Fetch())
			{
				$obSection->Update($arDBSection["ID"], array(
					"ACTIVE" => "N",
				));
				$this->_xml_file->Add(array("PARENT_ID" => 0, "LEFT_MARGIN" => $arDBSection["ID"]));
			}
			return true;
		}

		if($XML_PROPERTIES_PARENT)
		{
			$rs = $this->_xml_file->GetList(
				array("ID" => "asc"),
				array("PARENT_ID" => $XML_PROPERTIES_PARENT),
				array("ID")
			);
			while($ar = $rs->Fetch())
			{
				$arXMLProp = $this->_xml_file->GetAllChildrenArray($ar["ID"]);
				if(
					array_key_exists(GetMessage("IBLOCK_XML2_ID"), $arXMLProp)
					&& array_key_exists($arXMLProp[GetMessage("IBLOCK_XML2_ID")], $arUserFields)
				)
				{
					$FIELD_NAME = $arUserFields[$arXMLProp[GetMessage("IBLOCK_XML2_ID")]]["FIELD_NAME"];
					$MULTIPLE = $arUserFields[$arXMLProp[GetMessage("IBLOCK_XML2_ID")]]["MULTIPLE"];
					$IS_FILE = $arUserFields[$arXMLProp[GetMessage("IBLOCK_XML2_ID")]]["USER_TYPE"]["BASE_TYPE"] === "file";

					unset($arXMLProp[GetMessage("IBLOCK_XML2_ID")]);
					$arProp = array();
					$i = 0;
					foreach($arXMLProp as $value)
					{
						if($IS_FILE)
							$arProp["n".($i++)] = $this->MakeFileArray($value);
						else
							$arProp["n".($i++)] = $value;
					}

					if($MULTIPLE == "N")
						$arSection[$FIELD_NAME] = array_pop($arProp);
					else
						$arSection[$FIELD_NAME] = $arProp;
				}
			}
		}

		$obSection = new CIBlockSection;
		$rsSection = $obSection->GetList(array(), array("IBLOCK_ID"=>$IBLOCK_ID, "XML_ID"=>$arSection["XML_ID"]), false);
		if($arDBSection = $rsSection->Fetch())
		{
			if(!array_key_exists("CODE", $arSection) && is_array($this->translit_on_update))
			{
				$arSection["CODE"] = CUtil::translit($arSection["NAME"], LANGUAGE_ID, $this->translit_on_update);
				//Check if name was not changed in a way to update CODE
				if(substr($arDBSection["CODE"], 0, strlen($arSection["CODE"])) === $arSection["CODE"])
					unset($arSection["CODE"]);
				else
					$arSection["CODE"] = $this->CheckSectionCode($IBLOCK_ID, $arSection["CODE"]);
			}

			$bChanged = false;
			foreach($arSection as $key=>$value)
			{
				if(is_array($arDBSection[$key]) || ($arDBSection[$key] != $value))
				{
					$bChanged = true;
					break;
				}
			}
			if($bChanged)
			{
				foreach($arUserFields as $arField1)
				{
					if($arField1["USER_TYPE"]["BASE_TYPE"] == "file")
					{
						$sectionUF = $USER_FIELD_MANAGER->GetUserFields("IBLOCK_".$IBLOCK_ID."_SECTION", $arDBSection["ID"]);
						foreach($sectionUF as $arField2)
						{
							if(
								$arField2["USER_TYPE"]["BASE_TYPE"] == "file"
								&& isset($arSection[$arField2["FIELD_NAME"]])
							)
							{
								if($arField2["MULTIPLE"] == "Y" && is_array($arField2["VALUE"]))
									foreach($arField2["VALUE"] as $old_file_id)
										$arSection[$arField2["FIELD_NAME"]][] = array("del"=>true,"old_id"=>$old_file_id);
								elseif($arField2["MULTIPLE"] == "N" && $arField2["VALUE"] > 0)
									$arSection[$arField2["FIELD_NAME"]]["old_id"] = $arField2["VALUE"];
							}
						}
						break;
					}
				}

				$res = $obSection->Update($arDBSection["ID"], $arSection);
				if(!$res)
				{
					$this->LAST_ERROR = $obSection->LAST_ERROR;
					return $this->LAST_ERROR;
				}
			}
			$arSection["ID"] = $arDBSection["ID"];
		}
		else
		{
			if(!array_key_exists("CODE", $arSection) && is_array($this->translit_on_add))
				$arSection["CODE"] = $this->CheckSectionCode($IBLOCK_ID, CUtil::translit($arSection["NAME"], LANGUAGE_ID, $this->translit_on_add));

			$arSection["IBLOCK_ID"] = $IBLOCK_ID;
			if(!isset($arSection["SORT"]))
				$arSection["SORT"] = $this->next_step["section_sort"];

			$arSection["ID"] = $obSection->Add($arSection);
			if(!$arSection["ID"])
			{
				$this->LAST_ERROR = $obSection->LAST_ERROR;
				return $this->LAST_ERROR;
			}
		}

		if($XML_SECTION_PROPERTIES)
		{
			$this->ImportSectionProperties($XML_SECTION_PROPERTIES, $IBLOCK_ID, $arSection["ID"]);
		}

		if($arSection["ID"])
			$this->_xml_file->Add(array("PARENT_ID" => 0, "LEFT_MARGIN" => $arSection["ID"]));

		if($XML_SECTIONS_PARENT)
		{
			$rs = $this->_xml_file->GetList(
				array("ID" => "asc"),
				array("PARENT_ID" => $XML_SECTIONS_PARENT),
				array("ID")
			);
			while($ar = $rs->Fetch())
			{
				$result = $this->ImportSection($ar["ID"], $IBLOCK_ID, $arSection["ID"]);
				if($result !== true)
					return $result;
			}
		}

		return true;
	}
示例#18
0
 function CheckFields($ACTION, &$arFields)
 {
     // Fatal Errors
     if (is_set($arFields, "TITLE") || $ACTION == "ADD") {
         $arFields["TITLE"] = trim($arFields["TITLE"]);
         if (strLen($arFields["TITLE"]) <= 0) {
             return false;
         }
     }
     if (is_set($arFields, "TITLE_SEO") || $ACTION == "ADD") {
         $arFields["TITLE_SEO"] = trim($arFields["TITLE_SEO"], " -");
         if (strlen($arFields["TITLE_SEO"]) <= 0 && strlen($arFields["TITLE"]) > 0) {
             $arFields["TITLE_SEO"] = CUtil::translit($arFields["TITLE"], LANGUAGE_ID, array("max_len" => 255, "safe_chars" => ".", "replace_space" => '-'));
         }
         if (strlen($arFields["TITLE_SEO"]) <= 0) {
             $arFields["TITLE_SEO"] = false;
         }
     }
     if (is_set($arFields, "USER_START_NAME") || $ACTION == "ADD") {
         $arFields["USER_START_NAME"] = trim($arFields["USER_START_NAME"]);
         if (strLen($arFields["USER_START_NAME"]) <= 0) {
             return false;
         }
     }
     if (is_set($arFields, "FORUM_ID") || $ACTION == "ADD") {
         $arFields["FORUM_ID"] = intVal($arFields["FORUM_ID"]);
         if ($arFields["FORUM_ID"] <= 0) {
             return false;
         }
     }
     if (is_set($arFields, "LAST_POSTER_NAME") || $ACTION == "ADD") {
         $arFields["LAST_POSTER_NAME"] = trim($arFields["LAST_POSTER_NAME"]);
         if (strLen($arFields["LAST_POSTER_NAME"]) <= 0 && $arFields["APPROVED"] !== "N" && $arFields["STATE"] !== "L") {
             return false;
         }
     }
     if (is_set($arFields, "ABS_LAST_POSTER_NAME") || $ACTION == "ADD") {
         $arFields["ABS_LAST_POSTER_NAME"] = trim($arFields["ABS_LAST_POSTER_NAME"]);
         if (strLen($arFields["ABS_LAST_POSTER_NAME"]) <= 0 && $ACTION == "ADD" && !empty($arFields["LAST_POSTER_NAME"])) {
             $arFields["ABS_LAST_POSTER_NAME"] = $arFields["LAST_POSTER_NAME"];
         } elseif (strLen($arFields["ABS_LAST_POSTER_NAME"]) <= 0 && $arFields["APPROVED"] !== "N" && $arFields["STATE"] !== "L") {
             return false;
         }
     }
     // Check Data
     if (is_set($arFields, "USER_START_ID") || $ACTION == "ADD") {
         $arFields["USER_START_ID"] = intVal($arFields["USER_START_ID"]) > 0 ? intVal($arFields["USER_START_ID"]) : false;
     }
     if (is_set($arFields, "LAST_POSTER_ID") || $ACTION == "ADD") {
         $arFields["LAST_POSTER_ID"] = intVal($arFields["LAST_POSTER_ID"]) > 0 ? intVal($arFields["LAST_POSTER_ID"]) : false;
     }
     if (is_set($arFields, "LAST_MESSAGE_ID") || $ACTION == "ADD") {
         $arFields["LAST_MESSAGE_ID"] = intVal($arFields["LAST_MESSAGE_ID"]) > 0 ? intVal($arFields["LAST_MESSAGE_ID"]) : false;
     }
     if (is_set($arFields, "ICON") || $ACTION == "ADD") {
         $arFields["ICON"] = trim($arFields["ICON"]);
     }
     if (is_set($arFields, "STATE") || $ACTION == "ADD") {
         $arFields["STATE"] = in_array($arFields["STATE"], array("Y", "N", "L")) ? $arFields["STATE"] : "Y";
     }
     if (is_set($arFields, "APPROVED") || $ACTION == "ADD") {
         $arFields["APPROVED"] = $arFields["APPROVED"] == "N" ? "N" : "Y";
     }
     if (is_set($arFields, "SORT") || $ACTION == "ADD") {
         $arFields["SORT"] = intVal($arFields["SORT"]) > 0 ? intVal($arFields["SORT"]) : 150;
     }
     if (is_set($arFields, "VIEWS") || $ACTION == "ADD") {
         $arFields["VIEWS"] = intVal($arFields["VIEWS"]) > 0 ? intVal($arFields["VIEWS"]) : 0;
     }
     if (is_set($arFields, "POSTS") || $ACTION == "ADD") {
         $arFields["POSTS"] = intVal($arFields["POSTS"]) > 0 ? intVal($arFields["POSTS"]) : 0;
     }
     if (is_set($arFields, "TOPIC_ID")) {
         $arFields["TOPIC_ID"] = intVal($arFields["TOPIC_ID"]);
     }
     if (is_set($arFields, "SOCNET_GROUP_ID") || $ACTION == "ADD") {
         $arFields["SOCNET_GROUP_ID"] = intVal($arFields["SOCNET_GROUP_ID"]) > 0 ? intVal($arFields["SOCNET_GROUP_ID"]) : false;
     }
     if (is_set($arFields, "OWNER_ID") || $ACTION == "ADD") {
         $arFields["OWNER_ID"] = intVal($arFields["OWNER_ID"]) > 0 ? intVal($arFields["OWNER_ID"]) : false;
     }
     return True;
 }
示例#19
0
 public static function translit($file_name, $safe_chars = '')
 {
     return CUtil::translit($file_name, LANGUAGE_ID, array("safe_chars" => ". " . $safe_chars, "change_case" => false, "max_len" => 255));
 }
function AddSectionsRecursive($parent="", $parent_id=0)
{
	global $tmpid, $arGrTmp, $strImportErrorMessage, $IBLOCK_ID, $arGroups, $STT_GROUP_ADD, $STT_GROUP_UPDATE, $STT_GROUP_ERROR;

	global $boolTranslitSection, $arTranslitSection;

	global $activateFileData;

	$arChld = $arGrTmp[$tmpid.$parent];
	if(!is_array($arChld)) return;
	for($i=0, $intCount = count($arChld); $i<$intCount; $i++)
	{
		$GROUP_XML_ID = $arChld[$i]["GROUP_XML_ID"];
		$GROUP_NAME = $arChld[$i]["GROUP_NAME"];

		$bs = new CIBlockSection();
		$res = CIBlockSection::GetList(array(), Array("XML_ID"=>$GROUP_XML_ID, "IBLOCK_ID"=>$IBLOCK_ID, 'CHECK_PERMISSIONS' => 'N'));
		$bNewGroup_tmp = False;
		if($arr = $res->Fetch())
		{
			$GROUP_ID = $arr["ID"];
			$arFields = array(
				"NAME"=>$GROUP_NAME,
				"TMP_ID"=>$tmpid,
				"IBLOCK_SECTION_ID"=>$parent_id
			);
			if ($boolTranslitSection)
				$arFields['CODE'] = CUtil::translit($GROUP_NAME, 'ru', $arTranslitSection);
			if ('Y' == $activateFileData)
				$arFields['ACTIVE'] = 'Y';
			$res = $bs->Update($GROUP_ID, $arFields, false);
		}
		else
		{
			$bNewGroup_tmp = True;
			$arFields = Array(
				"ACTIVE"=>"Y",
				"IBLOCK_SECTION_ID"=>$parent_id,
				"IBLOCK_ID"=>$IBLOCK_ID,
				"NAME"=>$GROUP_NAME,
				"TMP_ID"=>$tmpid,
				"XML_ID"=>$GROUP_XML_ID
				);
			if ($boolTranslitSection)
				$arFields['CODE'] = CUtil::translit($GROUP_NAME, 'ru', $arTranslitSection);
			$GROUP_ID = $bs->Add($arFields, false);
			$res = ($GROUP_ID>0);
		}

		if(!$res)
		{
			$strImportErrorMessage .= str_replace("#ERROR#", $bs->LAST_ERROR, str_replace("#NAME#", "[".$GROUP_ID."] \"".$GROUP_NAME."\" (".$GROUP_XML_ID.")", GetMessage("CICML_ERROR_ADD_SECTION"))).".<br>";
			$STT_GROUP_ERROR++;
		}
		else
		{
			if ($bNewGroup_tmp) $STT_GROUP_ADD++;
			else $STT_GROUP_UPDATE++;

			$arGroups[$GROUP_XML_ID] = $GROUP_ID;
			AddSectionsRecursive($GROUP_XML_ID, $GROUP_ID);
		}
	}
}
示例#21
0
文件: class.php 项目: ASDAFF/gpbitrix
    /**
     * функция перед добавлениемредактированием элемента в инфоблок
     * @param $arFields поля элемента ифоблока
     * для страницы Объявления
     * создает нового пользователя
     * отправляет логини и пароль по почтовому шаблону
     * добавляет цену и количество в Торговый каталог
     */
    function OnBeforeIBlockElementAddHandler(&$arFields)
    {


        if (
        ((
                ($arFields["IBLOCK_ID"] == 2)
                ||
                ($arFields["IBLOCK_ID"] == 15)
                ||
                ($arFields["IBLOCK_ID"] == 14)
                ||
                ($arFields["IBLOCK_ID"] == 16)
                ||
                ($arFields["IBLOCK_ID"] == 19)
            )
            &&
            (strstr($_SERVER['REQUEST_URI'],'/personal/moy-magazin/')))
            &&
            ((!$_REQUEST['active'])&&(!$_REQUEST['deactive']))
        ||
        (

                ($arFields["IBLOCK_ID"] == 16)

            &&
            (strstr($_SERVER['REQUEST_URI'],'/obyavleniya/add-ads/')))
            &&
            ((!$_REQUEST['active'])&&(!$_REQUEST['deactive']))

        )
        {

            $rsUser = CUser::GetByID(CUser::GetID());
            $arUser = $rsUser->Fetch();
            $ID=$arUser['ID'];
            $arSelect = Array("ID", "IBLOCK_ID", "NAME","PROPERTY_*");
            $arFilter = Array("IBLOCK_ID"=>9, "ACTIVE"=>"Y","PROPERTY_PARTNER"=>intval($ID));
            $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>1), $arSelect);
            while($ob = $res->GetNextElement()){
                $arFields_partner = $ob->GetFields();
                $id_block_partner=$arFields_partner['ID'];
            }
            if($id_block_partner){
                switch($arFields["IBLOCK_ID"]){
                    case 2:
                            $arFields["PROPERTY_VALUES"][59]["VALUE"]=$id_block_partner;
                        break;
                    case 14:
                            $arFields["PROPERTY_VALUES"][66]["VALUE"]=$id_block_partner;
                        break;
                    case 15:
                            $arFields["PROPERTY_VALUES"][71]["VALUE"]=$id_block_partner;
                    break;
                    case 16:
                            $arFields["PROPERTY_VALUES"][104]["VALUE"]=$id_block_partner;
                    break;
                    case 19:
                        $arFields["PROPERTY_VALUES"][105]["VALUE"]=$id_block_partner;
                    break;
                }
            }
        }


        if (
            (

            (($arFields["IBLOCK_ID"] == 16))
            )
            &&
            CModule::IncludeModule("catalog")
            &&
            CModule::IncludeModule("sale")
            &&
            ((strstr($_SERVER['REQUEST_URI'],'/obyavleniya/add-ads/')))
            &&
            ((!$_REQUEST['active'])&&(!$_REQUEST['deactive']))
        )
        {
                if(($arFields['PROPERTY_VALUES'][81]==7)||($arFields['PROPERTY_VALUES'][81]=="Y")){
                   //$arFields['PROPERTY_VALUES'][81]=40;
                    //$_SESSION['field_after2']="первый";
                }elseif($arFields['PROPERTY_VALUES'][81]==9){
                    //$_SESSION['field_after1']="второй";
                    //$arFields['PROPERTY_VALUES'][81]=46;
                }

                $arSelect16 = Array("ID", "IBLOCK_ID", "NAME","PROPERTY_*");
                $arFilter16 = Array("IBLOCK_ID"=>18,"ACTIVE"=>"Y","CODE "=>"standart-ads");
                $res16 = CIBlockElement::GetList(Array(), $arFilter16, false, Array("nPageSize"=>1), $arSelect16);
                while($ob16 = $res16->GetNextElement()){

                    $arProps16 = $ob16->GetProperties();
                    $interval_day_ads=$arProps16['INTERVAL_ADS']['VALUE'];
                }
                if($interval_day_ads){
                    $arFields['ACTIVE_TO']=date("d.m.Y H:i:s",mktime(0,0,0,date("m"),date("d")+$interval_day_ads,date("Y")));

                }



                $_SESSION['field_after3']=$arFields;

                    if(!CUser::IsAuthorized()){
                        $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
                        $max=10;
                        $size=StrLen($chars)-1;
                        $password=null;
                        while($max--)
                            $password.=$chars[rand(0,$size)];
                        $user = new CUser;
                        $arFieldsUser = Array(
                            "NAME"              => $arFields["PROPERTY_VALUES"][89],
                            "EMAIL"             => $arFields["PROPERTY_VALUES"][88],
                            "LOGIN"             => $arFields["PROPERTY_VALUES"][88],
                            "PERSONAL_MOBILE"   => $arFields["PROPERTY_VALUES"][91],
                            "LID"               => "ru",
                            "ACTIVE"            => "Y",
                            "GROUP_ID"          => array(3,4,5),
                            "PASSWORD"          => $password,
                            "CONFIRM_PASSWORD"  => $password
                        );

                        $ID = $user->Add($arFieldsUser);

                    }
                    if(($ID)||(CUser::IsAuthorized())){
                        if(CUser::IsAuthorized()){
                            $rsUser = CUser::GetByID(CUser::GetID());
                            $arUser = $rsUser->Fetch();
                            $ID=$arUser['ID'];
                        }
                        $arFields["CREATED_BY"]=$ID;
                        $arFields["PROPERTY_VALUES"][83]=$ID;
                        $_SESSION['NEW_USER_ID']=$ID;
                    }
                    if($ID){
                        if (strlen($arFields["NAME"]) > 0 && strlen($arFields["CODE"]) <= 0) {
                            $arParams = array(
                                "max_len" => "100", // обрезаем символьный код до 100 символов
                                "change_case" => "L", // приводим к нижнему регистру
                                "replace_space" => "-", // меняем пробелы на тире
                                "replace_other" => "-", // меняем плохие символы на тире
                                "delete_repeat_replace" => "true", // удаляем повторяющиеся тире
                                "use_google" => "false", // отключаем использование google
                            );
                            $arFields["CODE"] = Cutil::translit($arFields["NAME"], "ru", $arParams);
                        }
                        unset($_SESSION['VIP_ID']);
                        if(($arFields["PROPERTY_VALUES"][81][0]=='40')){
                            $_SESSION['VIP_ID']=40;
                        }
                        if(($arFields["PROPERTY_VALUES"][81][0]=='46')){
                            $_SESSION['VIP_ID']=46;
                        }

                    if((!$_REQUEST['CODE'])&&(!CUser::IsAuthorized())){


                        $arEventFields = Array(
                            "NAME"              => $arFields["PROPERTY_VALUES"][89],
                            "EMAIL"             => $arFields["PROPERTY_VALUES"][88],
                            "LOGIN"             => $arFields["PROPERTY_VALUES"][88],
                            "PERSONAL_MOBILE"         => $arFields["PROPERTY_VALUES"][91],
                            "PASSWORD"          => $password,
                        );
                        $event = new CEvent;
                        $event->SendImmediate("MAIN_USER_INFOTEHNOLOG", SITE_ID, $arEventFields);






        }else{


        }

    }
    }
        if (($arFields["IBLOCK_ID"] == 11) &&($arFields["ACTIVE"] == "Y")){
            $_SESSION['active_block'] = $arFields;



            $params = Array(
                "max_len" => "100", // обрезает символьный код до 100 символов
                "change_case" => "L", // буквы преобразуются к нижнему регистру
                "replace_space" => "_", // меняем пробелы на нижнее подчеркивание
                "replace_other" => "_", // меняем левые символы на нижнее подчеркивание
                "delete_repeat_replace" => "true", // удаляем повторяющиеся нижние подчеркивания
                "use_google" => "false", // отключаем использование google
            );



            $el = new CIBlockElement;
            $PROP = array();
            $PROP[108] = $arProps['F_EMAIL']['VALUE'];
            $PROP[60] = $arProps['F_TELEPHONE']['VALUE'];
            $PROP[100] = $arUserLogin['ID'];
            $arElem= Array(
                "CREATED_BY"=>$arUserLogin['ID'],
                "IBLOCK_ID" => 9,
                "NAME" => $arProps['F_NAMECOMPANY']['VALUE'],
                "CODE" => CUtil::translit($arProps['F_NAMECOMPANY']['VALUE'], "ru" , $params),
                "ACTIVE" => "Y",
                "PROPERTY_VALUES"=> $PROP,
            );

            if($PRODUCT_ID = $el->Add($arElem)) {
                if($new_partner){
                    $lg_psswrd="Ваши регистрационные данные: <br> Логин:".$arProps['F_EMAIL']['VALUE']."<br> Пароль:".$password."<br>";
                }else{
                    $lg_psswrd="Ваш логин и пароль были высланы ранее при регистрации данного аккаунта";
                }
            }

        }
    }
示例#22
0
文件: file.php 项目: nycmic/bittest
 static function ViewByUser($arFile, $arOptions = array())
 {
     /** @global CMain $APPLICATION */
     global $APPLICATION;
     $fastDownload = COption::GetOptionString('main', 'bx_fast_download', 'N') == 'Y';
     $attachment_name = "";
     $content_type = "";
     $specialchars = false;
     $force_download = false;
     $cache_time = 10800;
     $fromClouds = false;
     if (is_array($arOptions)) {
         if (isset($arOptions["content_type"])) {
             $content_type = $arOptions["content_type"];
         }
         if (isset($arOptions["specialchars"])) {
             $specialchars = $arOptions["specialchars"];
         }
         if (isset($arOptions["force_download"])) {
             $force_download = $arOptions["force_download"];
         }
         if (isset($arOptions["cache_time"])) {
             $cache_time = intval($arOptions["cache_time"]);
         }
         if (isset($arOptions["attachment_name"])) {
             $attachment_name = $arOptions["attachment_name"];
         }
     }
     if ($cache_time < 0) {
         $cache_time = 0;
     }
     if (is_array($arFile)) {
         if (isset($arFile["SRC"])) {
             $filename = $arFile["SRC"];
         } elseif (isset($arFile["tmp_name"])) {
             $filename = "/" . ltrim(substr($arFile["tmp_name"], strlen($_SERVER["DOCUMENT_ROOT"])), "/");
         } else {
             $filename = static::GetFileSRC($arFile);
         }
     } else {
         if ($arFile = static::GetFileArray($arFile)) {
             $filename = $arFile["SRC"];
         } else {
             $filename = '';
         }
     }
     if ($filename == '') {
         return false;
     }
     if ($content_type == '' && isset($arFile["CONTENT_TYPE"])) {
         $content_type = $arFile["CONTENT_TYPE"];
     }
     //we produce resized jpg for original bmp
     if ($content_type == '' || $content_type == "image/bmp") {
         if (isset($arFile["tmp_name"])) {
             $content_type = static::GetContentType($arFile["tmp_name"], true);
         } else {
             $content_type = static::GetContentType($_SERVER["DOCUMENT_ROOT"] . $filename);
         }
     }
     if ($arFile["ORIGINAL_NAME"] != '') {
         $name = $arFile["ORIGINAL_NAME"];
     } elseif ($arFile["name"] != '') {
         $name = $arFile["name"];
     } else {
         $name = $arFile["FILE_NAME"];
     }
     if (isset($arFile["EXTENSION_SUFFIX"]) && $arFile["EXTENSION_SUFFIX"] != '') {
         $name = substr($name, 0, -strlen($arFile["EXTENSION_SUFFIX"]));
     }
     $name = str_replace(array("\n", "\r"), '', $name);
     if ($attachment_name) {
         $attachment_name = str_replace(array("\n", "\r"), '', $attachment_name);
     } else {
         $attachment_name = $name;
     }
     if (!$force_download) {
         if (!static::IsImage($name, $content_type) || $arFile["HEIGHT"] <= 0 || $arFile["WIDTH"] <= 0) {
             //only valid images can be downloaded inline
             $force_download = true;
         }
     }
     $content_type = static::NormalizeContentType($content_type);
     if ($force_download) {
         $specialchars = false;
     }
     $src = null;
     $file = new IO\File($_SERVER["DOCUMENT_ROOT"] . $filename);
     if (substr($filename, 0, 1) == "/") {
         try {
             $src = $file->open(IO\FileStreamOpenMode::READ);
         } catch (IO\IoException $e) {
             return false;
         }
     } else {
         if (!$fastDownload) {
             $src = new \Bitrix\Main\Web\HttpClient();
         } elseif (intval($arFile['HANDLER_ID']) > 0) {
             $fromClouds = true;
         }
     }
     $APPLICATION->RestartBuffer();
     while (ob_end_clean()) {
     }
     $cur_pos = 0;
     $filesize = $arFile["FILE_SIZE"] > 0 ? $arFile["FILE_SIZE"] : $arFile["size"];
     $size = $filesize - 1;
     $p = strpos($_SERVER["HTTP_RANGE"], "=");
     if (intval($p) > 0) {
         $bytes = substr($_SERVER["HTTP_RANGE"], $p + 1);
         $p = strpos($bytes, "-");
         if ($p !== false) {
             $cur_pos = floatval(substr($bytes, 0, $p));
             $size = floatval(substr($bytes, $p + 1));
             if ($size <= 0) {
                 $size = $filesize - 1;
             }
             if ($cur_pos > $size) {
                 $cur_pos = 0;
                 $size = $filesize - 1;
             }
         }
     }
     if ($arFile["tmp_name"] != '') {
         $tmpFile = new IO\File($arFile["tmp_name"]);
         $filetime = $tmpFile->getModificationTime();
     } else {
         $filetime = intval(MakeTimeStamp($arFile["TIMESTAMP_X"]));
     }
     if ($_SERVER["REQUEST_METHOD"] == "HEAD") {
         CHTTP::SetStatus("200 OK");
         header("Accept-Ranges: bytes");
         header("Content-Type: " . $content_type);
         header("Content-Length: " . ($size - $cur_pos + 1));
         if ($filetime > 0) {
             header("Last-Modified: " . date("r", $filetime));
         }
     } else {
         $lastModified = '';
         if ($cache_time > 0) {
             //Handle ETag
             $ETag = md5($filename . $filesize . $filetime);
             if (array_key_exists("HTTP_IF_NONE_MATCH", $_SERVER) && $_SERVER['HTTP_IF_NONE_MATCH'] === $ETag) {
                 CHTTP::SetStatus("304 Not Modified");
                 header("Cache-Control: private, max-age=" . $cache_time . ", pre-check=" . $cache_time);
                 die;
             }
             header("ETag: " . $ETag);
             //Handle Last Modified
             if ($filetime > 0) {
                 $lastModified = gmdate('D, d M Y H:i:s', $filetime) . ' GMT';
                 if (array_key_exists("HTTP_IF_MODIFIED_SINCE", $_SERVER) && $_SERVER['HTTP_IF_MODIFIED_SINCE'] === $lastModified) {
                     CHTTP::SetStatus("304 Not Modified");
                     header("Cache-Control: private, max-age=" . $cache_time . ", pre-check=" . $cache_time);
                     die;
                 }
             }
         }
         $utfName = CHTTP::urnEncode($attachment_name, "UTF-8");
         $translitName = CUtil::translit($attachment_name, LANGUAGE_ID, array("max_len" => 1024, "safe_chars" => ".", "replace_space" => '-'));
         if ($force_download) {
             //Disable zlib for old versions of php <= 5.3.0
             //it has broken Content-Length handling
             if (ini_get('zlib.output_compression')) {
                 ini_set('zlib.output_compression', 'Off');
             }
             if ($cur_pos > 0) {
                 CHTTP::SetStatus("206 Partial Content");
             } else {
                 CHTTP::SetStatus("200 OK");
             }
             header("Content-Type: " . $content_type);
             header("Content-Disposition: attachment; filename=\"" . $translitName . "\"; filename*=utf-8''" . $utfName);
             header("Content-Transfer-Encoding: binary");
             header("Content-Length: " . ($size - $cur_pos + 1));
             if (is_resource($src)) {
                 header("Accept-Ranges: bytes");
                 header("Content-Range: bytes " . $cur_pos . "-" . $size . "/" . $filesize);
             }
         } else {
             header("Content-Type: " . $content_type);
             header("Content-Disposition: inline; filename=\"" . $translitName . "\"; filename*=utf-8''" . $utfName);
         }
         if ($cache_time > 0) {
             header("Cache-Control: private, max-age=" . $cache_time . ", pre-check=" . $cache_time);
             if ($filetime > 0) {
                 header('Last-Modified: ' . $lastModified);
             }
         } else {
             header("Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0");
         }
         header("Expires: 0");
         header("Pragma: public");
         // Download from front-end
         if ($fastDownload) {
             if ($fromClouds) {
                 $filename = preg_replace('~^(http[s]?)(\\://)~i', '\\1.', $filename);
                 $cloudUploadPath = COption::GetOptionString('main', 'bx_cloud_upload', '/upload/bx_cloud_upload/');
                 header('X-Accel-Redirect: ' . $cloudUploadPath . $filename);
             } else {
                 $filename = $APPLICATION->ConvertCharset($filename, SITE_CHARSET, "UTF-8");
                 header('X-Accel-Redirect: ' . $filename);
             }
         } else {
             session_write_close();
             if ($specialchars) {
                 echo "<", "pre", ">";
                 if (is_resource($src)) {
                     while (!feof($src)) {
                         echo htmlspecialcharsbx(fread($src, 32768));
                     }
                     $file->close();
                 } else {
                     echo htmlspecialcharsbx($src->get($filename));
                 }
                 echo "<", "/pre", ">";
             } else {
                 if (is_resource($src)) {
                     $file->seek($cur_pos);
                     while (!feof($src) && $cur_pos <= $size) {
                         $bufsize = 131072;
                         //128K
                         if ($cur_pos + $bufsize > $size) {
                             $bufsize = $size - $cur_pos + 1;
                         }
                         $cur_pos += $bufsize;
                         echo fread($src, $bufsize);
                     }
                     $file->close();
                 } else {
                     $fp = fopen("php://output", "wb");
                     $src->setOutputStream($fp);
                     $src->get($filename);
                 }
             }
         }
     }
     CMain::FinalActions();
     die;
 }
示例#23
0
 public function calculate($parameters)
 {
     $change_case = false;
     $replace_char = "";
     if (isset($this->data) && isset($this->data["replace_space"]) && $this->data["replace_space"] != "") {
         $change_case = isset($this->data[""]) ? $this->data["change_case"] : false;
         $replace_char = $this->data["replace_space"];
     }
     if (isset($this->data) && isset($this->data["change_case"]) && $this->data["change_case"] != "") {
         $change_case = $this->data["change_case"];
     }
     return \CUtil::translit($this->parametersToString($parameters), LANGUAGE_ID, array("change_case" => $change_case, "replace_space" => $replace_char, "replace_other" => $replace_char, "delete_repeat_replace" => true));
 }
示例#24
0
 private function addNewSection($sectionID, $sectionName, $iblockID)
 {
     $newSection = new \CIBlockSection();
     $sectionCode = \CUtil::translit($sectionName, 'ru', array('replace_space' => '-', 'replace_other' => '-'));
     $fields = array('ACTIVE' => 'Y', 'IBLOCK_SECTION_ID' => $sectionID, 'IBLOCK_ID' => $iblockID, 'NAME' => $sectionName, 'CODE' => $sectionCode);
     $id = $newSection->Add($fields);
     if ($id) {
         $this->newSections[$sectionName] = $id;
         return $id;
     } else {
         $this->errors .= \Helper::boldColorText('Добавление раздела новостроек:' . $sectionName . ' не удалось((( - ' . $newSection->LAST_ERROR, 'red');
         return false;
     }
 }
示例#25
0
             $arLoadProductArray["DETAIL_PICTURE"] = CFile::MakeFileArray($arLoadProductArray["DETAIL_PICTURE"]);
         } else {
             $arLoadProductArray["DETAIL_PICTURE"] = CFile::MakeFileArray($io->GetPhysicalName($_SERVER["DOCUMENT_ROOT"] . $PATH2IMAGE_FILES . "/" . $arLoadProductArray["DETAIL_PICTURE"]));
             if (!empty($arLoadProductArray["DETAIL_PICTURE"]) && is_array($arLoadProductArray["DETAIL_PICTURE"])) {
                 $arLoadProductArray["DETAIL_PICTURE"]["COPY_FILE"] = "Y";
             }
         }
         $bFilePres = !empty($arLoadProductArray["DETAIL_PICTURE"]) && isset($arLoadProductArray["DETAIL_PICTURE"]["tmp_name"]) && '' !== $arLoadProductArray["DETAIL_PICTURE"]["tmp_name"];
     }
     if (!$bFilePres) {
         unset($arLoadProductArray["DETAIL_PICTURE"]);
     }
 }
 if ($boolTranslitElement) {
     if (!isset($arLoadProductArray['CODE']) || '' === $arLoadProductArray['CODE']) {
         $arLoadProductArray['CODE'] = CUtil::translit($arLoadProductArray["NAME"], $TRANSLIT_LANG, $arTranslitElement);
     }
 }
 $res = CIBlockElement::GetList(array(), $arFilter, false, false, array('ID', 'PREVIEW_PICTURE', 'DETAIL_PICTURE'));
 if ($arr = $res->Fetch()) {
     $PRODUCT_ID = (int) $arr['ID'];
     if (isset($arLoadProductArray["PREVIEW_PICTURE"]) && intval($arr["PREVIEW_PICTURE"]) > 0) {
         $arLoadProductArray["PREVIEW_PICTURE"]["old_file"] = $arr["PREVIEW_PICTURE"];
     }
     if (isset($arLoadProductArray["DETAIL_PICTURE"]) && intval($arr["DETAIL_PICTURE"]) > 0) {
         $arLoadProductArray["DETAIL_PICTURE"]["old_file"] = $arr["DETAIL_PICTURE"];
     }
     if ($bThereIsGroups) {
         $LAST_GROUP_CODE_tmp = $LAST_GROUP_CODE > 0 ? $LAST_GROUP_CODE : false;
         if (!isset($arProductGroups[$PRODUCT_ID])) {
             $arProductGroups[$PRODUCT_ID] = array();
示例#26
0
		}
		
	}
}
$login="";
if(isset($_REQUEST["LOGIN"]) && $_REQUEST["LOGIN"]!="")
{
	$params = Array(
			"max_len" => "30", 
			"replace_space" => "", 
			"replace_other" => "", 
			"delete_repeat_replace" => "true", 
			"use_google" => "false", 
	);
	$userId = $_REQUEST["ID"];
	$login =CUtil::translit($_REQUEST["LOGIN"], "ru", $params);
	$rest = substr($login, 0, 1);
	
	if(is_numeric($rest))
	{
		$login="";
	}
	//$str = preg_replace("[^a-zA-Z0-9\-\.]", "", $_REQUEST["LOGIN"]);
	
}
?>
<?
$aTabs = array(
		array("DIV" => "edit1", "TAB" => GetMessage("LOL_PDD_TAB_NAME"), "ICON" => "", "TITLE" => GetMessage("LOL_PDD_TAB_NAME")),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);?>