Exemple #1
0
	function CopyTemplate($componentName, $templateName, $siteTemplate, $newSiteTemplate, $newName = False, $bRewrite = False)
	{
		$componentName = Trim($componentName);
		if (StrLen($componentName) <= 0)
		{
			$GLOBALS["APPLICATION"]->ThrowException(GetMessage("comp_util_err1"), "EMPTY_COMPONENT_NAME");
			return false;
		}

		$path2Comp = CComponentEngine::MakeComponentPath($componentName);
		if (StrLen($path2Comp) <= 0)
		{
			$GLOBALS["APPLICATION"]->ThrowException(str_replace("#NAME#", $componentName, GetMessage("comp_util_err2")), "ERROR_NOT_COMPONENT");
			return false;
		}

		$componentPath = "/bitrix/components".$path2Comp;

		if (!CComponentUtil::isComponent($componentPath))
		{
			$GLOBALS["APPLICATION"]->ThrowException(str_replace("#NAME#", $componentName, GetMessage("comp_util_err2")), "ERROR_NOT_COMPONENT");
			return false;
		}

		if (StrLen($templateName) <= 0)
			$templateName = ".default";

		$templateNameTmp = preg_replace("#[^A-Za-z0-9_.-]#i", "", $templateName);
		if ($templateNameTmp != $templateName)
		{
			$GLOBALS["APPLICATION"]->ThrowException(str_replace("#NAME#", $templateName, GetMessage("comp_util_err7")), "ERROR_BAD_TEMPLATE_NAME");
			return false;
		}

		if (StrLen($siteTemplate) <= 0)
			$siteTemplate = False;

		if ($siteTemplate != False)
		{
			if (!file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/templates/".$siteTemplate)
				|| !is_dir($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/templates/".$siteTemplate))
			{
				$GLOBALS["APPLICATION"]->ThrowException(str_replace("#NAME#", $siteTemplate, GetMessage("comp_util_err8")), "ERROR_NO_SITE_TEMPL");
				return false;
			}
		}

		if ($siteTemplate != False)
			$path = BX_PERSONAL_ROOT."/templates/".$siteTemplate."/components".$path2Comp."/".$templateName;
		else
			$path = "/bitrix/components".$path2Comp."/templates/".$templateName;

		if (!file_exists($_SERVER["DOCUMENT_ROOT"].$path))
		{
			$GLOBALS["APPLICATION"]->ThrowException(str_replace("#C_NAME#", $componentName, str_replace("#T_NAME#", $templateName, GetMessage("comp_util_err9"))), "ERROR_NO_TEMPL");
			return false;
		}

		if (StrLen($newSiteTemplate) <= 0)
		{
			$GLOBALS["APPLICATION"]->ThrowException(GetMessage("comp_util_err10"), "ERROR_EMPTY_SITE_TEMPL");
			return false;
		}

		if (!file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/templates/".$newSiteTemplate)
			|| !is_dir($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/templates/".$newSiteTemplate))
		{
			$GLOBALS["APPLICATION"]->ThrowException(str_replace("#NAME#", $newSiteTemplate, GetMessage("comp_util_err8")), "ERROR_NO_SITE_TEMPL");
			return false;
		}

		if ($siteTemplate !== False
			&& $siteTemplate == $newSiteTemplate
			&& ($newName === False || $newName !== False && $templateName == $newName))
		{
			$GLOBALS["APPLICATION"]->ThrowException(GetMessage("comp_util_err11"), "ERROR_DUPL1");
			return false;
		}

		if ($newName !== False)
			$templateNameNew = $newName;
		else
			$templateNameNew = $templateName;

		$templateNameNewTmp = preg_replace("#[^A-Za-z0-9_.-]#i", "", $templateNameNew);
		if ($templateNameNewTmp != $templateNameNew)
		{
			$GLOBALS["APPLICATION"]->ThrowException(str_replace("#NAME#", $templateNameNew, GetMessage("comp_util_err7")), "ERROR_BAD_TEMPLATE_NAME");
			return false;
		}

		$pathNew = BX_PERSONAL_ROOT."/templates/".$newSiteTemplate."/components".$path2Comp."/".$templateNameNew;

		if (file_exists($_SERVER["DOCUMENT_ROOT"].$pathNew))
		{
			if (!$bRewrite)
			{
				$GLOBALS["APPLICATION"]->ThrowException(str_replace("#NAME#", $templateNameNew, GetMessage("comp_util_err12")), "ERROR_EXISTS");
				return false;
			}
			else
			{
				DeleteDirFilesEx($pathNew);
			}
		}

		CopyDirFiles($_SERVER["DOCUMENT_ROOT"].$path, $_SERVER["DOCUMENT_ROOT"].$pathNew, True, True, False);

		return True;
	}
Exemple #2
0
 public static function CopyTemplate($componentName, $templateName, $siteTemplate, $newSiteTemplate, $newName = false, $bRewrite = false)
 {
     global $APPLICATION;
     $componentName = trim($componentName);
     if (strlen($componentName) <= 0) {
         $APPLICATION->ThrowException(GetMessage("comp_util_err1"), "EMPTY_COMPONENT_NAME");
         return false;
     }
     $path2Comp = CComponentEngine::MakeComponentPath($componentName);
     if (strlen($path2Comp) <= 0) {
         $APPLICATION->ThrowException(str_replace("#NAME#", $componentName, GetMessage("comp_util_err2")), "ERROR_NOT_COMPONENT");
         return false;
     }
     $componentPath = getLocalPath("components" . $path2Comp);
     if (!CComponentUtil::isComponent($componentPath)) {
         $APPLICATION->ThrowException(str_replace("#NAME#", $componentName, GetMessage("comp_util_err2")), "ERROR_NOT_COMPONENT");
         return false;
     }
     if (strlen($templateName) <= 0) {
         $templateName = ".default";
     }
     $templateNameTmp = preg_replace("#[^A-Za-z0-9_.-]#i", "", $templateName);
     if ($templateNameTmp != $templateName) {
         $APPLICATION->ThrowException(str_replace("#NAME#", $templateName, GetMessage("comp_util_err7")), "ERROR_BAD_TEMPLATE_NAME");
         return false;
     }
     if (strlen($siteTemplate) <= 0) {
         $siteTemplate = false;
     }
     if ($siteTemplate != false) {
         $siteTemplateDir = getLocalPath("templates/" . $siteTemplate, BX_PERSONAL_ROOT);
         if ($siteTemplateDir === false || !is_dir($_SERVER["DOCUMENT_ROOT"] . $siteTemplateDir)) {
             $APPLICATION->ThrowException(str_replace("#NAME#", $siteTemplate, GetMessage("comp_util_err8")), "ERROR_NO_SITE_TEMPL");
             return false;
         }
     }
     if ($siteTemplate != false) {
         $path = getLocalPath("templates/" . $siteTemplate . "/components" . $path2Comp . "/" . $templateName, BX_PERSONAL_ROOT);
     } else {
         $path = getLocalPath("components" . $path2Comp . "/templates/" . $templateName);
     }
     if ($path === false || !file_exists($_SERVER["DOCUMENT_ROOT"] . $path)) {
         $APPLICATION->ThrowException(str_replace("#C_NAME#", $componentName, str_replace("#T_NAME#", $templateName, GetMessage("comp_util_err9"))), "ERROR_NO_TEMPL");
         return false;
     }
     if (strlen($newSiteTemplate) <= 0) {
         $APPLICATION->ThrowException(GetMessage("comp_util_err10"), "ERROR_EMPTY_SITE_TEMPL");
         return false;
     }
     $newSiteTemplateDir = getLocalPath("templates/" . $newSiteTemplate, BX_PERSONAL_ROOT);
     if ($newSiteTemplateDir === false || !is_dir($_SERVER["DOCUMENT_ROOT"] . $newSiteTemplateDir)) {
         $APPLICATION->ThrowException(str_replace("#NAME#", $newSiteTemplate, GetMessage("comp_util_err8")), "ERROR_NO_SITE_TEMPL");
         return false;
     }
     if ($siteTemplate !== false && $siteTemplate == $newSiteTemplate && ($newName === false || $newName !== false && $templateName == $newName)) {
         $APPLICATION->ThrowException(GetMessage("comp_util_err11"), "ERROR_DUPL1");
         return false;
     }
     if ($newName !== false) {
         $templateNameNew = $newName;
     } else {
         $templateNameNew = $templateName;
     }
     $templateNameNewTmp = preg_replace("#[^A-Za-z0-9_.-]#i", "", $templateNameNew);
     if ($templateNameNewTmp != $templateNameNew) {
         $APPLICATION->ThrowException(str_replace("#NAME#", $templateNameNew, GetMessage("comp_util_err7")), "ERROR_BAD_TEMPLATE_NAME");
         return false;
     }
     $pathNew = $newSiteTemplateDir . "/components" . $path2Comp . "/" . $templateNameNew;
     if (file_exists($_SERVER["DOCUMENT_ROOT"] . $pathNew)) {
         if (!$bRewrite) {
             $APPLICATION->ThrowException(str_replace("#NAME#", $templateNameNew, GetMessage("comp_util_err12")), "ERROR_EXISTS");
             return false;
         } else {
             DeleteDirFilesEx($pathNew);
         }
     }
     CopyDirFiles($_SERVER["DOCUMENT_ROOT"] . $path, $_SERVER["DOCUMENT_ROOT"] . $pathNew, true, true, false);
     return true;
 }
Exemple #3
0
 public static function CheckCustomComponents($arParams)
 {
     $arResult["STATUS"] = false;
     $arComponentFolders = array("/bitrix/components", "/local/components");
     $components = array();
     foreach ($arComponentFolders as $componentFolder) {
         if (file_exists($_SERVER['DOCUMENT_ROOT'] . $componentFolder) && ($handle = opendir($_SERVER['DOCUMENT_ROOT'] . $componentFolder))) {
             while (($file = readdir($handle)) !== false) {
                 if ($file == "bitrix" || $file == ".." || $file == ".") {
                     continue;
                 }
                 $dir = $componentFolder . "/" . $file;
                 if (is_dir($_SERVER['DOCUMENT_ROOT'] . $dir)) {
                     if (CComponentUtil::isComponent($dir)) {
                         $components[] = array("path" => $dir, "name" => $file);
                     } elseif ($comp_handle = opendir($_SERVER['DOCUMENT_ROOT'] . $dir)) {
                         while (($subdir = readdir($comp_handle)) !== false) {
                             if ($subdir == ".." || $subdir == "." || $subdir == ".svn") {
                                 continue;
                             }
                             if (CComponentUtil::isComponent($dir . "/" . $subdir)) {
                                 $components[] = array("path" => $dir . "/" . $subdir, "name" => $file . ":" . $subdir);
                             }
                         }
                         closedir($comp_handle);
                     }
                 }
             }
             closedir($handle);
         }
     }
     if ($arParams["ACTION"] == "FIND") {
         foreach ($components as $component) {
             $arResult["MESSAGE"]["DETAIL"] .= $component["name"] . " \n";
         }
         if (strlen($arResult["MESSAGE"]["DETAIL"]) == 0) {
             $arResult["MESSAGE"]["PREVIEW"] = GetMessage("CL_HAVE_NO_CUSTOM_COMPONENTS");
         } else {
             $arResult = array("STATUS" => true, "MESSAGE" => array("PREVIEW" => GetMessage("CL_HAVE_CUSTOM_COMPONENTS") . " (" . count($components) . ")", "DETAIL" => $arResult["MESSAGE"]["DETAIL"]));
         }
     } else {
         foreach ($components as $component) {
             $desc = $_SERVER['DOCUMENT_ROOT'] . $component["path"] . "/.description.php";
             if (!file_exists($desc) || filesize($desc) === 0) {
                 $arResult["MESSAGE"]["DETAIL"] .= GetMessage("CL_EMPTY_DESCRIPTION") . " " . $component["name"] . " \n";
             }
         }
         if (strlen($arResult["MESSAGE"]["DETAIL"]) == 0) {
             $arResult["STATUS"] = true;
             $arResult["MESSAGE"]["PREVIEW"] = GetMessage("CL_HAVE_CUSTOM_COMPONENTS_DESC");
         } else {
             $arResult = array("STATUS" => false, "MESSAGE" => array("PREVIEW" => GetMessage("CL_ERROR_FOUND_SHORT"), "DETAIL" => $arResult["MESSAGE"]["DETAIL"]));
         }
     }
     return $arResult;
 }