Пример #1
0
}
$arUserPerm = array();
$db_res = CForumNew::GetList(array(), $arFilter);
if ($db_res && ($res = $db_res->GetNext())) {
    $arUserGroup = CUser::GetUserGroup($arParams["UID"]);
    do {
        $arResult["FORUMS"][$res["ID"]] = $res;
        $arUserPerm[] = CForumNew::GetUserPermission($res["ID"], $arUserGroup);
    } while ($res = $db_res->GetNext());
}
rsort($arUserPerm);
$arRank = CForumUser::GetUserRank($arParams["UID"], LANGUAGE_ID);
list($arResult["USER_RANK_CODE"], $arResult["USER_RANK"]) = ForumGetUserForumStatus($arParams["UID"], $arUserPerm[0], array("Rank" => $arRank));
$arResult["SHOW_POINTS"] = "N";
$arResult["arRank"] = array_merge(is_array($arRank) ? $arRank : array(), array("NAME" => $arResult["USER_RANK"]));
if ($USER->IsAuthorized() && (CForumUser::IsAdmin() || intval($USER->GetID()) == $arParams["UID"])) {
    $arResult["SHOW_POINTS"] = "Y";
    $arResult["USER_POINTS"] = !empty($arRank["VOTES"]) ? intval($arRank["VOTES"]) : GetMessage("F_NO_VOTES");
}
/*******************************************************************/
$arResult["arTopic"] = "N";
if (!empty($arResult["FORUMS"])) {
    $db_res = CForumUser::UserAddInfo(array("LAST_POST" => "DESC"), array("AUTHOR_ID" => $arParams["UID"], "@FORUM_ID" => array_keys($arResult["FORUMS"])), "topics");
    if ($db_res && ($res = $db_res->GetNext())) {
        $res["TITLE"] = $parser->wrap_long_words($res["TITLE"]);
        $res["DESCRIPTION"] = $parser->wrap_long_words($res["DESCRIPTION"]);
        $res["LAST_POST_DATE"] = CForumFormat::DateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($res["LAST_POST_DATE"], CSite::GetDateFormat()));
        $arResult["arTopic"] = array_merge($res, array("read" => CComponentEngine::MakePathFromTemplate($arParams["URL_TEMPLATES_MESSAGE"], array("FID" => $res["FORUM_ID"], "TID" => $res["TOPIC_ID"], "TITLE_SEO" => $res["TITLE_SEO"], "MID" => intval($res["LAST_POST"]))) . "#message" . intval($res["LAST_POST"])));
    }
}
/************** User properties ************************************/
Пример #2
0
        }
        if (strlen($_REQUEST["date_last_visit1"]) > 0) {
            $arFilter[">=LAST_VISIT"] = $_REQUEST["date_last_visit1"];
        }
        if (strlen($_REQUEST["date_last_visit2"]) > 0) {
            $arFilter["<=LAST_VISIT"] = $_REQUEST["date_last_visit2"];
        }
    }
    $_REQUEST["user_name"] = trim($_REQUEST["user_name"]);
    if (!empty($_REQUEST["user_name"])) {
        $arFilter["SHOW_ABC"] = $_REQUEST["user_name"];
    }
    if ($_REQUEST["avatar"] == "Y") {
        $arFilter[">=AVATAR"] = 1;
    }
    if (($_REQUEST["allow_post"] == "Y" || $_REQUEST["allow_post"] == "N") && CForumUser::IsAdmin()) {
        $arFilter["ALLOW_POST"] = $_REQUEST["allow_post"];
    }
    /************** For custom ****************************************/
    $arResult["filter"]["date_last_visit"] = CalendarPeriod("date_last_visit1", $_REQUEST["date_last_visit1"], "date_last_visit2", $_REQUEST["date_last_visit2"], "form1", "Y", "", "");
    $arResult["filter"]["~user_name"] = $_REQUEST["user_name"];
    $arResult["filter"]["user_name"] = htmlspecialcharsbx($_REQUEST["user_name"]);
    /************** For custom/****************************************/
} elseif (strLen($_REQUEST["del_filter"]) > 0) {
    unset($_REQUEST["user_name"]);
    unset($_REQUEST["date_last_visit2"]);
    unset($_REQUEST["date_last_visit1"]);
    unset($_REQUEST["avatar"]);
    unset($_REQUEST["sort"]);
    /************** For custom ****************************************/
    unset($GLOBALS["date_last_visit1_DAYS_TO_BACK"]);
Пример #3
0
 public static function UserAddInfo($arOrder = array(), $arFilter = array(), $mode = false, $iNum = 0, $check_permission = true, $arNavigation = array())
 {
     global $DB, $USER;
     $arSqlFrom = array();
     $arSqlOrder = array();
     $arSqlSearch = array();
     $strSqlFrom = "";
     $strSqlOrder = "";
     $strSqlSearch = "";
     $arFilter = is_array($arFilter) ? $arFilter : array();
     if (!CForumUser::IsAdmin() && $check_permission) {
         $arFilter["LID"] = SITE_ID;
         $arFilter["PERMISSION"] = true;
     }
     foreach ($arFilter as $key => $val) {
         $key_res = CForumNew::GetFilterOperation($key);
         $key = strtoupper($key_res["FIELD"]);
         $strNegative = $key_res["NEGATIVE"];
         $strOperation = $key_res["OPERATION"];
         switch ($key) {
             case "ID":
             case "AUTHOR_ID":
             case "FORUM_ID":
             case "TOPIC_ID":
                 if ($strOperation == 'IN') {
                     $res = is_array($val) ? $val : explode(",", $val);
                     $val = array();
                     foreach ($res as $v) {
                         $val[] = intVal($v);
                     }
                     $val = implode(",", $val);
                 } else {
                     $val = intVal($val);
                 }
                 if ($val <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "(FM." . $key . " IS NULL OR FM." . $key . "<=0)";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " FM." . $key . " IS NULL OR NOT " : "") . "FM." . $key . " " . $strOperation . " (" . $DB->ForSql($val) . ")";
                 }
                 break;
             case "APPROVED":
                 if (strLen($val) <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "(FM." . $key . " IS NULL OR " . ($DB->type == "MSSQL" ? "LEN" : "LENGTH") . "(FM." . $key . ")<=0)";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " FM." . $key . " IS NULL OR NOT " : "") . "FM." . $key . " " . $strOperation . " '" . $DB->ForSql($val) . "'";
                 }
                 break;
             case "DATE":
             case "POST_DATE":
                 if (strLen($val) <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "FM." . $key . " IS NULL";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " FM." . $key . " IS NULL OR NOT " : "") . "FM." . $key . " " . $strOperation . " " . $DB->CharToDateFunction($DB->ForSql($val), "SHORT");
                 }
                 break;
             case "LID":
                 $arSqlFrom["FS2"] = "LEFT JOIN b_forum2site FS2 ON (FS2.FORUM_ID = FM.FORUM_ID)";
                 $arSqlSearch[] = ($strNegative == "Y" ? " NOT " : "") . "(FS2.SITE_ID " . $strOperation . " '" . $DB->ForSql($val) . "')";
                 break;
             case "ACTIVE":
                 $arSqlFrom["F"] = "INNER JOIN b_forum F ON (F.ID = FM.FORUM_ID)";
                 if (strLen($val) <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "(F." . $key . " IS NULL OR " . ($DB->type == "MSSQL" ? "LEN" : "LENGTH") . "(F." . $key . ")<=0)";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " F." . $key . " IS NULL OR NOT " : "") . "F." . $key . " " . $strOperation . " '" . $DB->ForSql($val) . "'";
                 }
                 break;
             case "USER_START_ID":
                 if (!is_array($val)) {
                     $val = array($val);
                 }
                 $tmp = array();
                 foreach ($val as $k => $v) {
                     $tmp[] = intVal(trim($v));
                 }
                 $val = implode(",", $tmp);
                 $arSqlFrom["FT"] = "INNER JOIN b_forum_topic FT ON (FT.ID = FM.TOPIC_ID)";
                 if (strLen($val) <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "FT." . $key . " IS NULL OR FT." . $key . "<=0";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " FT." . $key . " IS NULL OR NOT " : "") . "FT." . $key . " " . $strOperation . " (" . $DB->ForSql($val) . ")";
                 }
                 break;
             case "PERMISSION":
                 $arSqlFrom["FP"] = "\n\t\t\t\t\t\tINNER JOIN (\n\t\t\t\t\t\t\tSELECT FP.FORUM_ID, MAX(FP.PERMISSION) AS PERMISSION\n\t\t\t\t\t\t\tFROM b_forum_perms FP\n\t\t\t\t\t\t\tWHERE FP.GROUP_ID IN (" . $DB->ForSql(implode(",", $USER->GetUserGroupArray())) . ") AND FP.PERMISSION > 'A'\n\t\t\t\t\t\t\tGROUP BY FP.FORUM_ID) FPP ON (FPP.FORUM_ID = FM.FORUM_ID) ";
                 $arSqlSearch[] = "(FPP.PERMISSION > 'A' AND (FM.APPROVED='Y' OR FPP.PERMISSION >= 'Q'))";
                 break;
             case "TOPIC_TITLE":
             case "POST_MESSAGE":
                 if ($key == "TOPIC_TITLE") {
                     $key = "FT.TITLE";
                     $arSqlFrom["FT"] = "INNER JOIN b_forum_topic FT ON (FT.ID = FM.TOPIC_ID)";
                 } else {
                     $key = "FM.POST_MESSAGE";
                 }
                 if ($strOperation == "LIKE") {
                     $val = "%" . $val . "%";
                 }
                 if (strLen($val) <= 0) {
                     $arSqlSearch[] = ($strNegative == "Y" ? "NOT" : "") . "(" . $key . " IS NULL OR " . ($DB->type == "MSSQL" ? "LEN" : "LENGTH") . "(" . $key . ")<=0)";
                 } else {
                     $arSqlSearch[] = ($strNegative == "Y" ? " " . $key . " IS NULL OR NOT " : "") . "(" . $key . " " . $strOperation . " '" . $DB->ForSQL($val) . "')";
                 }
                 break;
         }
     }
     ksort($arSqlFrom);
     if (count($arSqlFrom) > 0) {
         $strSqlFrom = " " . implode(" ", $arSqlFrom);
     }
     if (count($arSqlSearch) > 0) {
         $strSqlSearch = " AND (" . implode(") AND (", $arSqlSearch) . ")";
     }
     foreach ($arOrder as $key => $val) {
         $key = strtoupper($key);
         $val = strtoupper($val) != "ASC" ? "DESC" : "ASC";
         switch ($key) {
             case "FIRST_POST":
             case "LAST_POST":
                 $arSqlOrder["LAST_POST"] = "FMM." . $key . " " . $val;
                 break;
             case "FORUM_ID":
             case "TOPIC_ID":
                 $arSqlOrder["ID"] = " FT." . $key . " " . $val;
                 break;
         }
     }
     if (count($arSqlOrder) > 0) {
         $strSqlOrder = "ORDER BY " . implode(", ", $arSqlOrder);
     } else {
         $strSqlOrder = "ORDER BY FMM.FIRST_POST DESC";
     }
     // *****************************************************
     $strSql = "\n\t\tSELECT FMM.*, FT.TITLE, FT.DESCRIPTION, FT.VIEWS, FT.LAST_POSTER_ID,\n\t\t\t" . CForumNew::Concat("-", array("FT.ID", "FT.TITLE_SEO")) . " as TITLE_SEO,\n\t\t\t" . $DB->DateToCharFunction("FT.START_DATE", "FULL") . " as START_DATE,\n\t\t\tFT.USER_START_NAME,\tFT.USER_START_ID, FT.POSTS, FT.LAST_POSTER_NAME,\n\t\t\tFT.LAST_MESSAGE_ID, FS.IMAGE, '' as IMAGE_DESCR,\n\t\t\tFT.APPROVED, FT.STATE, FT.FORUM_ID, FT.ICON_ID, FT.SORT, FT.HTML\n\t\tFROM\n\t\t(\n\t\t\tSELECT FM.TOPIC_ID, COUNT(FM.ID) AS COUNT_MESSAGE, MIN(FM.ID) AS FIRST_POST, MAX(FM.ID) AS LAST_POST\n\t\t\tFROM b_forum_message FM\n\t\t\t" . $strSqlFrom . "\n\t\t\tWHERE 1=1\n\t\t\t" . $strSqlSearch . "\n\t\t\tGROUP BY FM.TOPIC_ID\n\t\t) FMM\n\t\tLEFT JOIN b_forum_topic FT ON (FT.ID = FMM.TOPIC_ID)\n\t\tLEFT JOIN b_forum_smile FS ON (FT.ICON_ID = FS.ID)\n\t\t" . $strSqlOrder;
     $cnt = false;
     if (!empty($arNavigation)) {
         $strCountSql = "\n\t\t\t\tSELECT COUNT( DISTINCT FM.TOPIC_ID ) CNT\n\t\t\t\tFROM b_forum_message FM\n\t\t\t\t" . $strSqlFrom . "\n\t\t\t\tWHERE 1=1\n\t\t\t\t" . $strSqlSearch;
         $dbCount_res = $DB->Query($strCountSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         if ($dbCount_res && ($arCount = $dbCount_res->Fetch())) {
             $cnt = $arCount['CNT'];
         }
     }
     if (empty($arNavigation) || !$cnt) {
         $db_res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     } else {
         if ($arNavigation["SIZEN"]) {
             $arNavigation["nPageSize"] = $arNavigation["SIZEN"];
         }
         if ($arNavigation["PAGEN"]) {
             $arNavigation["iNumPage"] = $arNavigation["PAGEN"];
         }
         $db_res = new CDBResult();
         $db_res->NavQuery($strSql, $cnt, $arNavigation);
     }
     $db_res = new _CTopicDBResult($db_res, $arNavigation);
     return $db_res;
 }
Пример #4
0
// FORUM
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
$arResult['FORUM_TOPIC_ID'] = null;
$arResult["TOPIC"] = array();
$arFilter = array("FORUM_ID" => $arParams['FORUM_ID'], "XML_ID" => $arParams['ENTITY_XML_ID']);
$dbRes = CForumTopic::GetList(null, $arFilter);
if ($dbRes && ($arResult["TOPIC"] = $dbRes->Fetch())) {
    $arResult['FORUM_TOPIC_ID'] = $arResult["TOPIC"]['ID'];
}
$arResult["ELEMENT"] = array();
$arResult["USER"] = array("PERMISSION" => $arParams['PERMISSION'] !== null ? $arParams['PERMISSION'] : ForumCurrUserPermissions($arParams["FORUM_ID"]), "SHOWED_NAME" => $GLOBALS["FORUM_STATUS_NAME"]["guest"], "SUBSCRIBE" => array(), "FORUM_SUBSCRIBE" => "N", "TOPIC_SUBSCRIBE" => "N");
// A - NO ACCESS		E - READ			I - ANSWER
// M - NEW TOPIC		Q - MODERATE	U - EDIT			Y - FULL_ACCESS
$userId = $USER->GetID();
$arUserGroups = $USER->GetUserGroupArray();
if ($arResult["USER"]["PERMISSION"] !== null && !CForumUser::IsAdmin()) {
    $arResult["USER"]["RIGHTS"] = array("ADD_TOPIC" => $arParams['PERMISSION'] >= 'M' ? "Y" : "N", "MODERATE" => $arParams['PERMISSION'] >= 'Q' ? "Y" : "N", "EDIT" => $arParams['PERMISSION'] >= 'U' ? "Y" : "N", "ADD_MESSAGE" => $arParams['PERMISSION'] >= 'I' ? "Y" : "N");
} else {
    $arResult["USER"]["RIGHTS"] = array("ADD_TOPIC" => CForumTopic::CanUserAddTopic($arParams["FORUM_ID"], $arUserGroups, $userId, $arResult["FORUM"]) ? "Y" : "N", "MODERATE" => CForumNew::CanUserModerateForum($arParams["FORUM_ID"], $arUserGroups, $userId) == true ? "Y" : "N", "EDIT" => CForumNew::CanUserEditForum($arParams["FORUM_ID"], $arUserGroups, $userId) ? "Y" : "N", "ADD_MESSAGE" => CForumMessage::CanUserAddMessage($arResult['FORUM_TOPIC_ID'], $arUserGroups, $userId) ? "Y" : "N");
}
if ($USER->IsAuthorized()) {
    $arResult["USER"]["ID"] = $GLOBALS["USER"]->GetID();
    $tmpName = empty($arParams["NAME_TEMPLATE"]) ? $GLOBALS["USER"]->GetFormattedName(false) : CUser::FormatName($arParams["NAME_TEMPLATE"], array("NAME" => $USER->GetFirstName(), "LAST_NAME" => $USER->GetLastName(), "SECOND_NAME" => $USER->GetSecondName(), "LOGIN" => $USER->GetLogin()));
    $arResult["USER"]["SHOWED_NAME"] = trim($_SESSION["FORUM"]["SHOW_NAME"] == "Y" ? $tmpName : $GLOBALS["USER"]->GetLogin());
    $arResult["USER"]["SHOWED_NAME"] = trim(!empty($arResult["USER"]["SHOWED_NAME"]) ? $arResult["USER"]["SHOWED_NAME"] : $GLOBALS["USER"]->GetLogin());
}
$arResult['DO_NOT_CACHE'] = true;
// PARSER
$parser = new forumTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]);
$parser->imageWidth = $arParams["IMAGE_SIZE"];
$parser->imageHtmlWidth = $arParams["IMAGE_HTML_SIZE"];
Пример #5
0
                 $arParams["PERMISSION"] = "E";
             }
         } else {
             $arForumSites = CForumNew::GetSites($arResult["FORUM"]["ID"]);
             if (count($arForumSites) > 0) {
                 list($key, $val) = each($arForumSites);
                 if (strlen($key) > 0) {
                     $site_id_tmp = $key;
                 } else {
                     $site_id_tmp = false;
                 }
             } else {
                 $site_id_tmp = false;
             }
             $bIsCurrentUserModuleAdmin = CSocNetUser::IsCurrentUserModuleAdmin($site_id_tmp);
             if (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $owner_id, "forum", "full", CForumUser::IsAdmin($user_id))) {
                 $arParams["PERMISSION"] = "Y";
             } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $owner_id, "forum", "newtopic", $bIsCurrentUserModuleAdmin)) {
                 $arParams["PERMISSION"] = "M";
             } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $owner_id, "forum", "answer", $bIsCurrentUserModuleAdmin)) {
                 $arParams["PERMISSION"] = "I";
             } elseif (CSocNetFeaturesPerms::CanPerformOperation($user_id, SONET_ENTITY_USER, $owner_id, "forum", "view", $bIsCurrentUserModuleAdmin)) {
                 $arParams["PERMISSION"] = "E";
             }
         }
         $arParams["PERMISSION"] = $arParams["PERMISSION"] < $sPermission ? $sPermission : $arParams["PERMISSION"];
     }
 }
 if (empty($arResult["MESSAGE"])) {
     $arError = array("code" => "EMPTY MESSAGE", "title" => GetMessage("F_EMPTY_MID"));
 } elseif ($arParams["PERMISSION"]) {
Пример #6
0
 function CanUserDeleteGroup($ID, $arUserGroups)
 {
     return CForumUser::IsAdmin($arUserGroups);
 }
Пример #7
0
 public static function CheckPermissions($ID)
 {
     global $USER, $APPLICATION;
     $ID = intVal($ID);
     if (CForumUser::IsAdmin()) {
         return true;
     }
     $dbr = CForumPMFolder::GetByID($ID);
     if ($arRes = $dbr->Fetch()) {
         if ($arRes["USER_ID"] == $USER->GetID() || $arRes["USER_ID"] == 0) {
             return true;
         }
     }
     return false;
 }
Пример #8
0
    $arParams["URL_TEMPLATES_MESSAGE"] = $arParams["URL_TEMPLATES_READ"];
}
foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE) {
    if (strLen(trim($arParams["URL_TEMPLATES_" . strToUpper($URL)])) <= 0) {
        $arParams["URL_TEMPLATES_" . strToUpper($URL)] = $APPLICATION->GetCurPage() . "?" . $URL_VALUE;
    }
    $arParams["~URL_TEMPLATES_" . strToUpper($URL)] = $arParams["URL_TEMPLATES_" . strToUpper($URL)];
    $arParams["URL_TEMPLATES_" . strToUpper($URL)] = htmlspecialcharsbx($arParams["~URL_TEMPLATES_" . strToUpper($URL)]);
}
/***************** ADDITIONAL **************************************/
$arParams["COUNT"] = intVal(intVal($arParams["COUNT"]) > 0 ? $arParams["COUNT"] : ($arParams["MODE_DATA"] == "forum" ? COption::GetOptionString("forum", "TOPICS_PER_PAGE", "10") : COption::GetOptionString("forum", "MESSAGES_PER_PAGE", "10")));
$arParams["COUNT"] = $arParams["COUNT"] > 0 ? $arParams["COUNT"] : 10;
$arParams["MAX_FILE_SIZE"] = intVal($arParams["MAX_FILE_SIZE"]) <= 0 ? 10 * 1024 * 1024 : intVal($arParams["MAX_FILE_SIZE"]) * 1024 * 1024;
$arParams["DATE_TIME_FORMAT"] = trim(empty($arParams["DATE_TIME_FORMAT"]) ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]);
$arParams["NAME_TEMPLATE"] = !empty($arParams["NAME_TEMPLATE"]) ? $arParams["NAME_TEMPLATE"] : false;
$arParams["DESIGN_MODE"] = $GLOBALS["APPLICATION"]->GetShowIncludeAreas() && CForumUser::IsAdmin() ? "Y" : "N";
$arParams["TEMPLATES_TITLE_FORUMS"] = $arParams["TEMPLATES_TITLE_FORUMS"] ? $arParams["TEMPLATES_TITLE_FORUMS"] : GetMessage("F_TEMPLATES_TITLE_FORUMS");
$arParams["TEMPLATES_TITLE_FORUM"] = $arParams["TEMPLATES_TITLE_FORUM"] ? $arParams["TEMPLATES_TITLE_FORUM"] : GetMessage("F_TEMPLATES_TITLE_FORUM");
$arParams["TEMPLATES_TITLE_TOPIC"] = $arParams["TEMPLATES_TITLE_TOPIC"] ? $arParams["TEMPLATES_TITLE_TOPIC"] : GetMessage("F_TEMPLATES_TITLE_TOPIC");
$arParams["TEMPLATES_DESCRIPTION_FORUMS"] = $arParams["TEMPLATES_DESCRIPTION_FORUMS"] ? $arParams["TEMPLATES_DESCRIPTION_FORUMS"] : GetMessage("F_TEMPLATES_DESCRIPTION_FORUMS");
$arParams["TEMPLATES_DESCRIPTION_FORUM"] = $arParams["TEMPLATES_DESCRIPTION_FORUM"] ? $arParams["TEMPLATES_DESCRIPTION_FORUM"] : GetMessage("F_TEMPLATES_DESCRIPTION_FORUM");
$arParams["TEMPLATES_DESCRIPTION_TOPIC"] = $arParams["TEMPLATES_DESCRIPTION_TOPIC"] ? $arParams["TEMPLATES_DESCRIPTION_TOPIC"] : GetMessage("F_TEMPLATES_DESCRIPTION_TOPIC");
/***************** CACHE *******************************************/
if ($arParams["CACHE_TYPE"] == "Y" || $arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "Y") {
    $arParams["CACHE_TIME"] = intval($arParams["CACHE_TIME"]);
} else {
    $arParams["CACHE_TIME"] = 0;
}
$arParams["CACHE_TIME"] = 0;
/********************************************************************
				/Input params
Пример #9
0
if (!CModule::IncludeModule("forum")) {
    ShowError(GetMessage("FSL_NO_MODULE"));
    return 0;
} elseif (!$USER->IsAuthorized()) {
    $APPLICATION->AuthForm(GetMessage("FSL_AUTH"));
    return 0;
}
$strErrorMessage = "";
$strOKMessage = "";
$bVarsFromForm = false;
/********************************************************************
				Input params
********************************************************************/
/***************** BASE ********************************************/
$arParams["UID"] = intVal($_REQUEST["UID"]);
$arParams["UID"] = intVal(!CForumUser::IsAdmin() || $arParams["UID"] <= 0 ? $USER->GetID() : $arParams["UID"]);
$arParams["ACTION"] = strToUpper($_REQUEST["ACTION"]);
/***************** URL *********************************************/
if (empty($arParams["URL_TEMPLATES_MESSAGE"]) && !empty($arParams["URL_TEMPLATES_READ"])) {
    $arParams["URL_TEMPLATES_MESSAGE"] = $arParams["URL_TEMPLATES_READ"];
}
$URL_NAME_DEFAULT = array("list" => "PAGE_NAME=list&FID=#FID#", "read" => "PAGE_NAME=read&FID=#FID#&TID=#TID#", "message" => "PAGE_NAME=message&FID=#FID#&TID=#TID#&MID=#MID#", "subscr_list" => "PAGE_NAME=subscr_list", "profile_view" => "PAGE_NAME=profile_view&UID=#UID#");
if (empty($arParams["URL_TEMPLATES_MESSAGE"]) && !empty($arParams["URL_TEMPLATES_READ"])) {
    $arParams["URL_TEMPLATES_MESSAGE"] = $arParams["URL_TEMPLATES_READ"];
}
foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE) {
    if (strLen(trim($arParams["URL_TEMPLATES_" . strToUpper($URL)])) <= 0) {
        $arParams["URL_TEMPLATES_" . strToUpper($URL)] = $APPLICATION->GetCurPage() . "?" . $URL_VALUE;
    }
    $arParams["~URL_TEMPLATES_" . strToUpper($URL)] = $arParams["URL_TEMPLATES_" . strToUpper($URL)];
    $arParams["URL_TEMPLATES_" . strToUpper($URL)] = htmlspecialcharsbx($arParams["~URL_TEMPLATES_" . strToUpper($URL)]);
Пример #10
0
 public static function FilterPerm()
 {
     return CForumUser::IsAdmin();
 }
Пример #11
0
 function CanUserDeleteTopicMessage($TID, $arUserGroups, $iUserID = 0, $ExternalPermission = false)
 {
     $TID = intVal($TID);
     $arTopic = CForumTopic::GetByID($TID);
     if ($arTopic) {
         if ($ExternalPermission === false && CForumUser::IsAdmin($arUserGroups)) {
             return true;
         }
         if (!CForumUser::IsLocked($iUserID)) {
             $strPerms = $ExternalPermission == false ? CForumNew::GetUserPermission($arTopic["FORUM_ID"], $arUserGroups) : $ExternalPermission;
         } else {
             $strPerms = CForumNew::GetPermissionUserDefault($arTopic["FORUM_ID"]);
         }
         if ($strPerms >= "Y") {
             return true;
         } elseif ($strPerms < "U") {
             return false;
         }
         $arForum = CForumNew::GetByID($arTopic["FORUM_ID"]);
         return $arForum["ACTIVE"] == "Y" ? true : false;
     }
     return false;
 }
Пример #12
0
     list($res["AUTHOR_STATUS_CODE"], $res["AUTHOR_STATUS"]) = ForumGetUserForumStatus(0);
 } else {
     if (!array_key_exists($res["AUTHOR_ID"], $UserInfo)) {
         $perm = CForumNew::GetUserPermission($res["FORUM_ID"], CUser::GetUserGroup($res["AUTHOR_ID"]));
         $arUser = array("Perms" => $perm, "Rank" => $perm <= "Q" ? CForumUser::GetUserRank($res["AUTHOR_ID"], LANGUAGE_ID) : "", "Points" => intVal($res["POINTS"]) > 0 ? array("POINTS" => $res["POINTS"], "DATE_UPDATE" => $res["DATE_UPDATE"]) : false);
         $arUData = array();
         // Status
         list($arUData["AUTHOR_STATUS_CODE"], $arUData["AUTHOR_STATUS"]) = ForumGetUserForumStatus($res["AUTHOR_ID"], $arUser["Perms"], $arUser);
         // Avatar
         if (!empty($res["AVATAR"])) {
             $arUData["AVATAR"] = array("ID" => $res["~AVATAR"], "FILE" => CFile::GetFileArray($res["~AVATAR"]));
             $arUData["AVATAR"]["HTML"] = CFile::ShowImage($arUData["AVATAR"]["FILE"], COption::GetOptionString("forum", "avatar_max_width", 90), COption::GetOptionString("forum", "avatar_max_height", 90), "border=\"0\"", "", true);
         }
         // Voting
         $arUData["VOTING"] = "N";
         if (COption::GetOptionString("forum", "SHOW_VOTES", "Y") == "Y" && $USER->IsAuthorized() && (CForumUser::IsAdmin() || $USER->GetID() != $res["AUTHOR_ID"])) {
             $bUnVote = $arUser["Points"];
             $bVote = !$arUser["Points"] ? $arResult["USER"]["RANK"]["VOTES"] : intval($arUser["Points"]["POINTS"]) < intval($arResult["USER"]["RANK"]["VOTES"]);
             $arUData["VOTING"] = $bVote ? "VOTE" : ($bUnVote ? "UNVOTE" : $res["VOTING"]);
         }
         // data
         $arUData["DATE_REG"] = CForumFormat::DateFormat($arParams["DATE_FORMAT"], MakeTimeStamp($res["DATE_REG"], CSite::GetDateFormat()));
         // Another data
         $arUData["DESCRIPTION"] = $parser->wrap_long_words($res["DESCRIPTION"]);
         $arUData["SIGNATURE"] = "";
         if ($arResult["FORUM"]["ALLOW_SIGNATURE"] == "Y" && !empty($res["~SIGNATURE"])) {
             $arUData["SIGNATURE"] = $parser->convert($res["~SIGNATURE"], array_merge($arAllow, array("SMILES" => "N")));
         }
         $UserInfo[$res["AUTHOR_ID"]] = $arUData;
     }
     $res = array_merge($res, $UserInfo[$res["AUTHOR_ID"]]);
Пример #13
0
function ForumVote4User($UID, $VOTES, $bDelVote, &$strErrorMessage, &$strOKMessage)
{
    global $USER;
    $arError = array();
    $arNote = array();
    $UID = IntVal($UID);
    $VOTES = IntVal($VOTES);
    $bDelVote = $bDelVote ? true : false;
    $CurrUserID = 0;
    if ($UID <= 0) {
        $arError[] = GetMessage("F_NO_VPERS");
    } else {
        if (!$USER->IsAuthorized()) {
            $arError[] = GetMessage("FORUM_GV_ERROR_AUTH");
        } else {
            $CurrUserID = IntVal($USER->GetParam("USER_ID"));
            if ($CurrUserID == $UID && !CForumUser::IsAdmin()) {
                $arError[] = GetMessage("FORUM_GV_OTHER");
            } else {
                $arUserRank = CForumUser::GetUserRank($CurrUserID);
                if (IntVal($arUserRank["VOTES"]) <= 0 && !$bDelVote && !CForumUser::IsAdmin()) {
                    $arError[] = GetMessage("FORUM_GV_ERROR_NO_VOTE");
                } else {
                    if (!CForumUser::IsAdmin() || $VOTES <= 0) {
                        $VOTES = IntVal($arUserRank["VOTES"]);
                    }
                    if ($VOTES == 0) {
                        $VOTES = 1;
                    }
                    // no ranks configured
                    $arFields = array("POINTS" => $VOTES);
                    $arUserPoints = CForumUserPoints::GetByID($CurrUserID, $UID);
                    if ($arUserPoints) {
                        if ($bDelVote || $VOTES <= 0) {
                            if (CForumUserPoints::Delete($CurrUserID, $UID)) {
                                $arNote[] = GetMessage("FORUM_GV_SUCCESS_UNVOTE");
                            } else {
                                $arError[] = GetMessage("FORUM_GV_ERROR_VOTE");
                            }
                        } else {
                            if (IntVal($arUserPoints["POINTS"]) < IntVal($arUserRank["VOTES"]) || CForumUser::IsAdmin()) {
                                if (CForumUserPoints::Update(IntVal($USER->GetParam("USER_ID")), $UID, $arFields)) {
                                    $arNote[] = GetMessage("FORUM_GV_SUCCESS_VOTE_UPD");
                                } else {
                                    $arError[] = GetMessage("FORUM_GV_ERROR_VOTE_UPD");
                                }
                            } else {
                                $arError[] = GetMessage("FORUM_GV_ALREADY_VOTE");
                            }
                        }
                    } else {
                        if (!$bDelVote && $VOTES > 0) {
                            $arFields["FROM_USER_ID"] = $USER->GetParam("USER_ID");
                            $arFields["TO_USER_ID"] = $UID;
                            if (CForumUserPoints::Add($arFields)) {
                                $arNote[] = GetMessage("FORUM_GV_SUCCESS_VOTE_ADD");
                            } else {
                                $arError[] = GetMessage("FORUM_GV_ERROR_VOTE_ADD");
                            }
                        } else {
                            $arError[] = GetMessage("FORUM_GV_ERROR_A");
                        }
                    }
                }
            }
        }
    }
    if (!empty($arError)) {
        $strErrorMessage .= implode(".\n", $arError) . ".\n";
    }
    if (!empty($arNote)) {
        $strOKMessage .= implode(".\n", $arNote) . ".\n";
    }
    if (empty($arError)) {
        return True;
    } else {
        return False;
    }
}
Пример #14
0
/************** User info ******************************************/
if ($USER->IsAuthorized()) {
    $arFields = array("USER_ID" => $USER->GetID(), "FORUM_ID" => $arParams["FID"], "TOPIC_ID" => 0, "SITE_ID" => SITE_ID);
    $db_res = CForumSubscribe::GetList(array(), $arFields);
    if ($db_res && ($res = $db_res->Fetch())) {
        do {
            $arResult["USER"]["SUBSCRIBE"][$res["ID"]] = $res;
        } while ($res = $db_res->Fetch());
    }
}
/********************************************************************
				/Data
********************************************************************/
/************** For custom template ********************************/
$arResult["CURRENT_PAGE"] = $arResult["URL"]["TOPIC_LIST"];
$arResult["index"] = $arResult["URL"]["INDEX"];
$arResult["topic_new"] = $arResult["URL"]["TOPIC_NEW"];
$arResult["UserPermission"] = $arResult["PERMISSION"];
$arParams["IsAdmin"] = CForumUser::IsAdmin() ? "Y" : "N";
$arResult["sessid"] = bitrix_sessid_get();
/************** For custom template/********************************/
$this->IncludeComponentTemplate();
if ($arParams["SET_TITLE"] == "Y") {
    $APPLICATION->SetTitle($arResult["FORUM"]["NAME"]);
}
if ($arParams["SET_NAVIGATION"] != "N") {
    foreach ($arResult["GROUP_NAVIGATION"] as $key => $res) {
        $APPLICATION->AddChainItem($res["NAME"], $res["URL"]["~GROUP"]);
    }
    $APPLICATION->AddChainItem($arResult["FORUM"]["NAME"]);
}
Пример #15
0
    ?>
</span><?php 
    $first = true;
    foreach ($arResult["USERS"] as $res) {
        if ($arParams["WORD_WRAP_CUT"] > 0 && strLen($res["~SHOW_NAME"]) > $arParams["WORD_WRAP_CUT"]) {
            $res["SHOW_NAME"] = htmlspecialcharsEx(subStr($res["~SHOW_NAME"], 0, $arParams["WORD_WRAP_CUT"])) . "...";
        }
        echo !$first ? ", " : "";
        ?>
<span class="forum-user-online"><?php 
        echo str_replace(array("#URL#", "#NAME#"), array($res["profile_view"], $res["SHOW_NAME"]), $arParams["USER_TMPL"]);
        ?>
</span><?php 
        $first = false;
    }
    if (CForumUser::IsAdmin() && !empty($arResult["USERS_HIDDEN"])) {
        foreach ($arResult["USERS_HIDDEN"] as $res) {
            if ($arParams["WORD_WRAP_CUT"] > 0 && strLen($res["~SHOW_NAME"]) > $arParams["WORD_WRAP_CUT"]) {
                $res["SHOW_NAME"] = htmlspecialcharsEx(subStr($res["~SHOW_NAME"], 0, $arParams["WORD_WRAP_CUT"])) . "...";
            }
            echo !$first ? ", " : "";
            ?>
<span class="forum-user-online-hidden"><?php 
            echo str_replace(array("#URL#", "#NAME#"), array($res["profile_view"], $res["SHOW_NAME"]), $arParams["USER_TMPL"]);
            ?>
</span><?php 
            $first = false;
        }
    }
    ?>
	</div>
Пример #16
0
</th>
		<td><input type="text" name="WORK_CITY" size="45" maxlength="255" value="<?php 
echo $arResult["str_WORK_CITY"];
?>
"/></td>
	</tr>
<?php 
echo $tabControl->BeginNextTab();
?>
	<tr><th><?php 
echo GetMessage("F_SETTINGS");
?>
</th>
		<td>
	<?php 
if (CForumUser::IsAdmin()) {
    ?>
		<input type="checkbox" name="FORUM_ALLOW_POST" id="FORUM_ALLOW_POST" value="Y" <?php 
    if ($arResult["str_FORUM_ALLOW_POST"] == "Y") {
        ?>
 checked="checked" <?php 
    }
    ?>
 /> <label for="FORUM_ALLOW_POST"><?php 
    echo GetMessage("F_ALLOW_POST");
    ?>
</label><br />
	<?php 
}
?>
		<input type="checkbox" name="FORUM_SHOW_NAME" id="FORUM_SHOW_NAME" value="Y" <?php 
Пример #17
0
 public function initPermission()
 {
     if (!array_key_exists($this->forum["ID"], self::$permissions)) {
         if (\CForumUser::IsAdmin($this->getUser()->getGroups())) {
             $result = "Y";
         } else {
             if ($this->forum["ACTIVE"] != "Y") {
                 $result = "A";
             } else {
                 if (\CForumUser::IsLocked($this->getUser()->getID())) {
                     $result = \CForumNew::GetPermissionUserDefault($this->forum["ID"]);
                 } else {
                     $result = \CForumNew::GetUserPermission($this->forum["ID"], $GLOBALS["USER"]->GetUserGroupArray());
                 }
             }
         }
         self::$permissions[$this->forum["ID"]] = $result;
     }
     $this->permission = self::$permissions[$this->forum["ID"]];
     $this->rights = array();
     return $this;
 }