Ejemplo n.º 1
0
        $arFields = array("TITLE" => trim($_REQUEST["TITLE"]), "DESCRIPTION" => trim($_REQUEST["DESCRIPTION"]), "ICON_ID" => intVal($_REQUEST["ICON_ID"]), "TAGS" => $_REQUEST["TAGS"]);
        if (ForumMoveMessage($arParams["FID"], $arParams["TID"], $message, 0, $arFields, $strErrorMessage, $strOKMessage)) {
            $res = CForumMessage::GetByID($message[0]);
            $arParams["TID"] = intVal($res["TOPIC_ID"]);
            LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["~URL_TEMPLATES_READ"], array("FID" => $arResult["FORUM"]["ID"], "TID" => $arParams["TID"], "MID" => "s")));
        } else {
            $arError[] = array("id" => "bad_move", "text" => $strErrorMessage);
        }
    }
    if (!empty($arError)) {
        $e = new CAdminException(array_reverse($arError));
        $GLOBALS["APPLICATION"]->ThrowException($e);
        $err = $GLOBALS['APPLICATION']->GetException();
        $arResult["ERROR_MESSAGE"] .= $err->GetString();
        if (!empty($arParams["newTID"])) {
            $res = CForumTopic::GetByIDEx($arParams["newTID"]);
            $arResult["NEW_TOPIC"] = array("TOPIC" => $res["TOPIC_INFO"], "FORUM" => $res["FORUM_INFO"]);
        }
        $arResult["VALUES"]["TITLE"] = htmlspecialcharsEx($_REQUEST["TITLE"]);
        $arResult["VALUES"]["DESCRIPTION"] = htmlspecialcharsEx($_REQUEST["DESCRIPTION"]);
        $arResult["VALUES"]["ICON_ID"] = intVal($_REQUEST["ICON_ID"]);
    }
    $arResult["OK_MESSAGE"] .= $strOKMessage;
}
/********************************************************************
				/Action
********************************************************************/
/********************************************************************
				Data
********************************************************************/
$arMessage = array();
Ejemplo n.º 2
0
 function Create($site_id, $max_execution_time, $NS, $arOptions = array())
 {
     @set_time_limit(0);
     if (!is_array($NS)) {
         $NS = array("ID" => 0, "CNT" => 0, "FILE_SIZE" => 0, "FILE_ID" => 1, "FILE_URL_CNT" => 0, "ERROR_CNT" => 0, "PARAM2" => 0);
     } else {
         $NS = array("ID" => intval($NS["ID"]), "CNT" => intval($NS["CNT"]), "FILE_SIZE" => intval($NS["FILE_SIZE"]), "FILE_ID" => intval($NS["FILE_ID"]), "FILE_URL_CNT" => intval($NS["FILE_URL_CNT"]), "ERROR_CNT" => intval($NS["ERROR_CNT"]), "PARAM2" => intval($NS["ID"]));
     }
     if (is_array($max_execution_time)) {
         $record_limit = $max_execution_time[1];
         $max_execution_time = $max_execution_time[0];
     } else {
         $record_limit = 5000;
     }
     if ($max_execution_time > 0) {
         $end_of_execution = time() + $max_execution_time;
     } else {
         $end_of_execution = 0;
     }
     if (is_array($arOptions) && $arOptions["FORUM_TOPICS_ONLY"] == "Y") {
         $bForumTopicsOnly = CModule::IncludeModule("forum");
     } else {
         $bForumTopicsOnly = false;
     }
     if (is_array($arOptions) && $arOptions["BLOG_NO_COMMENTS"] == "Y") {
         $bBlogNoComments = CModule::IncludeModule("blog");
     } else {
         $bBlogNoComments = false;
     }
     if (is_array($arOptions) && $arOptions["USE_HTTPS"] == "Y") {
         $strProto = "https://";
     } else {
         $strProto = "http://";
     }
     $rsSite = CSite::GetByID($site_id);
     if ($arSite = $rsSite->Fetch()) {
         $SERVER_NAME = trim($arSite["SERVER_NAME"]);
         if (strlen($SERVER_NAME) <= 0) {
             $this->m_error = GetMessage("SEARCH_ERROR_SERVER_NAME", array("#SITE_ID#" => '<a href="site_edit.php?LID=' . urlencode($site_id) . '&lang=' . urlencode(LANGUAGE_ID) . '">' . htmlspecialcharsbx($site_id) . '</a>')) . "<br>";
             return false;
         }
         //Cache events
         $this->m_events = GetModuleEvents("search", "OnSearchGetURL", true);
         //Clear error file
         if ($NS["ID"] == 0 && $NS["CNT"] == 0) {
             $e = fopen($arSite["ABS_DOC_ROOT"] . $arSite["DIR"] . "sitemap_errors.xml", "w");
             $strBegin = "<?xml version='1.0' encoding='UTF-8'?>\n<urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
             fwrite($e, $strBegin);
         } else {
             $e = fopen($arSite["ABS_DOC_ROOT"] . $arSite["DIR"] . "sitemap_errors.xml", "a");
         }
         if (!$e) {
             $this->m_error = GetMessage("SEARCH_ERROR_OPEN_FILE") . " " . $arSite["ABS_DOC_ROOT"] . $arSite["DIR"] . "sitemap_errors.xml" . "<br>";
             return false;
         }
         //Open current sitemap file
         if ($NS["FILE_SIZE"] == 0) {
             $f = fopen($arSite["ABS_DOC_ROOT"] . $arSite["DIR"] . "sitemap_" . sprintf("%03d", $NS["FILE_ID"]) . ".xml", "w");
             $strBegin = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
             fwrite($f, $strBegin);
             $NS["FILE_SIZE"] += strlen($strBegin);
         } else {
             $f = fopen($arSite["ABS_DOC_ROOT"] . $arSite["DIR"] . "sitemap_" . sprintf("%03d", $NS["FILE_ID"]) . ".xml", "a");
         }
         if (!$f) {
             $this->m_error = GetMessage("SEARCH_ERROR_OPEN_FILE") . " " . $arSite["ABS_DOC_ROOT"] . $arSite["DIR"] . "sitemap_" . sprintf("%03d", $NS["FILE_ID"]) . ".xml" . "<br>";
             return false;
         }
         CTimeZone::Disable();
         $this->GetURLs($site_id, $NS["ID"], $record_limit);
         $bFileIsFull = false;
         while (!$bFileIsFull && ($ar = $this->Fetch())) {
             $record_limit--;
             $NS["ID"] = $ar["ID"];
             if (strlen($ar["URL"]) < 1) {
                 continue;
             }
             if ($bForumTopicsOnly && $ar["MODULE_ID"] == "forum") {
                 //Forum topic ID
                 $PARAM2 = intval($ar["PARAM2"]);
                 if ($NS["PARAM2"] < $PARAM2) {
                     $NS["PARAM2"] = $PARAM2;
                     $arTopic = CForumTopic::GetByIDEx($PARAM2);
                     if ($arTopic) {
                         $ar["FULL_DATE_CHANGE"] = $arTopic["LAST_POST_DATE"];
                     }
                 } else {
                     continue;
                 }
             }
             if ($bBlogNoComments && $ar["MODULE_ID"] == "blog") {
                 if (substr($ar["ITEM_ID"], 0, 1) === "C") {
                     continue;
                 }
             }
             if (preg_match("/^[a-z]+:\\/\\//", $ar["URL"])) {
                 $strURL = $ar["URL"];
             } else {
                 $strURL = $strProto . $ar["SERVER_NAME"] . $ar["URL"];
             }
             $strURL = $this->LocationEncode($this->URLEncode($strURL, "UTF-8"));
             $strTime = $this->TimeEncode(MakeTimeStamp(ConvertDateTime($ar["FULL_DATE_CHANGE"], "DD.MM.YYYY HH:MI:SS"), "DD.MM.YYYY HH:MI:SS"));
             $strToWrite = "\t<url>\n\t\t<loc>" . $strURL . "</loc>\n\t\t<lastmod>" . $strTime . "</lastmod>\n\t</url>\n";
             if (strlen($strURL) > 2048) {
                 fwrite($e, $strToWrite);
                 $NS["ERROR_CNT"]++;
             } else {
                 fwrite($f, $strToWrite);
                 $NS["CNT"]++;
                 $NS["FILE_SIZE"] += strlen($strToWrite);
                 $NS["FILE_URL_CNT"]++;
             }
             //Next File on file size or url count limit
             if ($NS["FILE_SIZE"] > 9000000 || $NS["FILE_URL_CNT"] >= 50000) {
                 $bFileIsFull = true;
             } elseif ($end_of_execution) {
                 if (time() > $end_of_execution) {
                     fclose($e);
                     fclose($f);
                     CTimeZone::Enable();
                     return $NS;
                 }
             }
         }
         CTimeZone::Enable();
         if ($bFileIsFull) {
             fwrite($e, "</urlset>\n");
             fclose($e);
             fwrite($f, "</urlset>\n");
             fclose($f);
             $NS["FILE_SIZE"] = 0;
             $NS["FILE_URL_CNT"] = 0;
             $NS["FILE_ID"]++;
             return $NS;
         } elseif ($record_limit <= 0) {
             return $NS;
         } else {
             fwrite($e, "</urlset>\n");
             fclose($e);
             fwrite($f, "</urlset>\n");
             fclose($f);
         }
         //WRITE INDEX FILE HERE
         $f = fopen($arSite["ABS_DOC_ROOT"] . $arSite["DIR"] . "sitemap_index.xml", "w");
         if (!$f) {
             $this->m_error = GetMessage("SEARCH_ERROR_OPEN_FILE") . " " . $arSite["ABS_DOC_ROOT"] . $arSite["DIR"] . "sitemap_index.xml" . "<br>";
             return false;
         }
         $strBegin = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
         fwrite($f, $strBegin);
         for ($i = 0; $i <= $NS["FILE_ID"]; $i++) {
             $strFile = $arSite["DIR"] . "sitemap_" . sprintf("%03d", $i) . ".xml";
             $strTime = $this->TimeEncode(filemtime($arSite["ABS_DOC_ROOT"] . $strFile));
             fwrite($f, "\t<sitemap>\n\t\t<loc>" . $this->URLEncode($strProto . $arSite["SERVER_NAME"] . $strFile, "UTF-8") . "</loc>\n\t\t<lastmod>" . $strTime . "</lastmod>\n\t</sitemap>\n");
         }
         fwrite($f, "</sitemapindex>\n");
         fclose($f);
         $this->m_errors_count = $NS["ERROR_CNT"];
         $this->m_errors_href = $strProto . $arSite["SERVER_NAME"] . $arSite["DIR"] . "sitemap_errors.xml";
         $this->m_href = $strProto . $arSite["SERVER_NAME"] . $arSite["DIR"] . "sitemap_index.xml";
         return true;
     } else {
         $this->m_error = GetMessage("SEARCH_ERROR_SITE_ID") . "<br>";
         return false;
     }
 }
Ejemplo n.º 3
0
		endif;
	endif;

	if ($arParams["FID"] > 0)
	{
		$arValidSites = CForumNew::GetSites($arParams["FID"]);
		if (!isset($arValidSites[SITE_ID]) && ($arParams["SHOW_FORUM_ANOTHER_SITE"] == "N" || $GLOBALS["APPLICATION"]->GetGroupRight("forum") < "W"))
		{
			$arError = array(
				"code" => "404",
				"title" => GetMessage("F_ERROR_TID_IS_LOST"));
		}
	}
	if (empty($arResult["TOPIC"])):
	elseif ($arResult["TOPIC"]["STATE"] == "L" && intVal($arResult["TOPIC"]["TOPIC_ID"]) > 0):
		$res = CForumTopic::GetByIDEx($arResult["TOPIC"]["TOPIC_ID"], array("GET_FORUM_INFO" => "Y"));
		if (empty($res)):
			$arError = array(
				"code" => "404",
				"title" => GetMessage("F_ERROR_TID_IS_LOST"));
		else:
			$arResult["TOPIC"] = $res;
			$arResult["FORUM"] = $res["FORUM_INFO"];
		endif;
	elseif (!CForumNew::CanUserViewForum($arResult["FORUM"]["ID"], $arUserGroups)):
		$APPLICATION->AuthForm(GetMessage("F_FPERMS"));
	elseif (!CForumTopic::CanUserViewTopic($arResult["TOPIC"]["ID"], $arUserGroups)):
	// Topic is approve? For moderation forum.
		$arError = array(
			"code" => "tid_not_approved",
			"title" => GetMessage("F_ERROR_TID_NOT_APPROVED"),
Ejemplo n.º 4
0
			break;
		}
		$res = array($PARENT_ID => __array_merge($arResult["GROUPS"][$PARENT_ID], $res));
		$PARENT_ID = $arResult["GROUPS"][$PARENT_ID]["PARENT_ID"];
		$res = array("GROUPS" => $res);
		if ($PARENT_ID > 0)
			$res = __array_merge($arResult["GROUPS"][$PARENT_ID], $res);
	}
	if ($bResult == true)
		$arGroups = __array_merge($arGroups, $res);
}
$arResult["GROUPS_FORUMS"] = $arGroups;
/************** Topics *********************************************/
if ($arResult["TID"] > 0)
{
	$res = CForumTopic::GetByIDEx($arResult["TID"]);
	if (!empty($res) && $res["STATE"] != "L" && !empty($arResult["FORUMS"][$res["FORUM_ID"]]))
	{
		$arResult["TOPIC"] = $res;
		$arResult["FORUM"] = $arResult["FORUMS"][$res["FORUM_ID"]];
		
		$arResult["TOPIC"]["~TITLE"] = $arResult["TOPIC"]["TITLE"];
		$arResult["TOPIC"]["TITLE"] = Cutil::JSEscape($arResult["TOPIC"]["TITLE"]);
		$arResult["TOPIC"]["LINK"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_READ"], 
			array("FID" => $arResult["FORUM"]["ID"], "TID" => $arResult["TOPIC"]["ID"], "MID" => "s"));
		$arResult["FORUM"]["LINK"] = CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_LIST"], 
			array("FID" => $arResult["FORUM"]["ID"]));
	}
}
elseif (strlen($_REQUEST["search_template"]) > 0) 
{
Ejemplo n.º 5
0
 $MID = IntVal($_REQUEST["MID"]);
 if (strToLower($_REQUEST["MID"]) == "unread_mid") {
     $MID = ForumGetFirstUnreadMessage($FID, $TID);
 }
 $MID = IntVal($MID);
 define("FORUM_MODULE_PAGE", "READ");
 if ($MID > 0) {
     $arMessage = CForumMessage::GetByID($MID);
     if ($arMessage) {
         $TID = IntVal($arMessage["TOPIC_ID"]);
         $FID = IntVal($arMessage["FORUM_ID"]);
     } else {
         $MID = 0;
     }
 }
 $arTopic = CForumTopic::GetByIDEx($TID);
 if (!$arTopic) {
     LocalRedirect("list.php?FID=" . $FID);
     die;
 }
 $FID = IntVal($arTopic["FORUM_ID"]);
 $arForum = CForumNew::GetByID($FID);
 if (!$arForum) {
     LocalRedirect("index.php");
     die;
 }
 //*************************!Переменные*****************************************************************************
 $View = false;
 $strErrorMessage = "";
 $strOKMessage = "";
 $bVarsFromForm = false;