function GetList($arOrder = Array("ID" => "DESC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB, $USER_FIELD_MANAGER, $USER; $obUserFieldsSql = new CUserTypeSQL; $obUserFieldsSql->SetEntity("BLOG_POST", "P.ID"); $obUserFieldsSql->SetSelect($arSelectFields); $obUserFieldsSql->SetFilter($arFilter); $obUserFieldsSql->SetOrder($arOrder); if (isset($arFilter["DATE_PUBLISH_DAY"]) && isset($arFilter["DATE_PUBLISH_MONTH"]) && isset($arFilter["DATE_PUBLISH_YEAR"])) { if (strlen($arFilter["DATE_PUBLISH_YEAR"]) == 2) $arFilter["DATE_PUBLISH_YEAR"] = "20".$arFilter["DATE_PUBLISH_YEAR"]; $date1 = mktime(0, 0, 0, $arFilter["DATE_PUBLISH_MONTH"], $arFilter["DATE_PUBLISH_DAY"], $arFilter["DATE_PUBLISH_YEAR"]); $date2 = mktime(0, 0, 0, $arFilter["DATE_PUBLISH_MONTH"], $arFilter["DATE_PUBLISH_DAY"] + 1, $arFilter["DATE_PUBLISH_YEAR"]); $arFilter[">=DATE_PUBLISH"] = ConvertTimeStamp($date1, "SHORT", SITE_ID); $arFilter["<DATE_PUBLISH"] = ConvertTimeStamp($date2, "SHORT", SITE_ID); unset($arFilter["DATE_PUBLISH_DAY"]); unset($arFilter["DATE_PUBLISH_MONTH"]); unset($arFilter["DATE_PUBLISH_YEAR"]); } elseif (isset($arFilter["DATE_PUBLISH_MONTH"]) && isset($arFilter["DATE_PUBLISH_YEAR"])) { if (strlen($arFilter["DATE_PUBLISH_YEAR"]) == 2) $arFilter["DATE_PUBLISH_YEAR"] = "20".$arFilter["DATE_PUBLISH_YEAR"]; $date1 = mktime(0, 0, 0, $arFilter["DATE_PUBLISH_MONTH"], 1, $arFilter["DATE_PUBLISH_YEAR"]); $date2 = mktime(0, 0, 0, $arFilter["DATE_PUBLISH_MONTH"] + 1, 1, $arFilter["DATE_PUBLISH_YEAR"]); $arFilter[">=DATE_PUBLISH"] = ConvertTimeStamp($date1, "SHORT", SITE_ID); $arFilter["<DATE_PUBLISH"] = ConvertTimeStamp($date2, "SHORT", SITE_ID); unset($arFilter["DATE_PUBLISH_MONTH"]); unset($arFilter["DATE_PUBLISH_YEAR"]); } elseif (isset($arFilter["DATE_PUBLISH_YEAR"])) { if (strlen($arFilter["DATE_PUBLISH_YEAR"]) == 2) $arFilter["DATE_PUBLISH_YEAR"] = "20".$arFilter["DATE_PUBLISH_YEAR"]; $date1 = mktime(0, 0, 0, 1, 1, $arFilter["DATE_PUBLISH_YEAR"]); $date2 = mktime(0, 0, 0, 1, 1, $arFilter["DATE_PUBLISH_YEAR"] + 1); $arFilter[">=DATE_PUBLISH"] = ConvertTimeStamp($date1, "SHORT", SITE_ID); $arFilter["<DATE_PUBLISH"] = ConvertTimeStamp($date2, "SHORT", SITE_ID); unset($arFilter["DATE_PUBLISH_YEAR"]); } if (count($arSelectFields) <= 0) $arSelectFields = array("ID", "TITLE", "BLOG_ID", "AUTHOR_ID", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "DATE_CREATE", "DATE_PUBLISH", "KEYWORDS", "PUBLISH_STATUS", "ATRIBUTE", "ATTACH_IMG", "ENABLE_TRACKBACK", "ENABLE_COMMENTS", "VIEWS", "NUM_COMMENTS", "CODE", "MICRO"); if(in_array("*", $arSelectFields)) $arSelectFields = array("ID", "TITLE", "BLOG_ID", "AUTHOR_ID", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "DATE_CREATE", "DATE_PUBLISH", "KEYWORDS", "PUBLISH_STATUS", "ATRIBUTE", "ATTACH_IMG", "ENABLE_TRACKBACK", "ENABLE_COMMENTS", "NUM_COMMENTS", "NUM_TRACKBACKS", "VIEWS", "FAVORITE_SORT", "CATEGORY_ID", "PERMS", "AUTHOR_LOGIN", "AUTHOR_NAME", "AUTHOR_LAST_NAME", "AUTHOR_SECOND_NAME", "AUTHOR_EMAIL", "AUTHOR", "BLOG_USER_ALIAS", "BLOG_USER_AVATAR", "BLOG_URL", "BLOG_OWNER_ID", "BLOG_ACTIVE", "BLOG_GROUP_ID", "BLOG_GROUP_SITE_ID", "BLOG_SOCNET_GROUP_ID", "BLOG_ENABLE_RSS", "BLOG_USE_SOCNET", "CODE", "MICRO"); if((array_key_exists("BLOG_GROUP_SITE_ID", $arFilter) || in_array("BLOG_GROUP_SITE_ID", $arSelectFields)) && !in_array("BLOG_URL", $arSelectFields)) $arSelectFields[] = "BLOG_URL"; // FIELDS --> $arFields = array( "ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "TITLE" => array("FIELD" => "P.TITLE", "TYPE" => "string"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string"), "BLOG_ID" => array("FIELD" => "P.BLOG_ID", "TYPE" => "int"), "AUTHOR_ID" => array("FIELD" => "P.AUTHOR_ID", "TYPE" => "int"), "PREVIEW_TEXT" => array("FIELD" => "P.PREVIEW_TEXT", "TYPE" => "string"), "PREVIEW_TEXT_TYPE" => array("FIELD" => "P.PREVIEW_TEXT_TYPE", "TYPE" => "string"), "DETAIL_TEXT" => array("FIELD" => "P.DETAIL_TEXT", "TYPE" => "string"), "DETAIL_TEXT_TYPE" => array("FIELD" => "P.DETAIL_TEXT_TYPE", "TYPE" => "string"), "DATE_CREATE" => array("FIELD" => "P.DATE_CREATE", "TYPE" => "datetime"), "DATE_PUBLISH" => array("FIELD" => "P.DATE_PUBLISH", "TYPE" => "datetime"), "KEYWORDS" => array("FIELD" => "P.KEYWORDS", "TYPE" => "string"), "PUBLISH_STATUS" => array("FIELD" => "P.PUBLISH_STATUS", "TYPE" => "string"), "ATRIBUTE" => array("FIELD" => "P.ATRIBUTE", "TYPE" => "string"), "ATTACH_IMG" => array("FIELD" => "P.ATTACH_IMG", "TYPE" => "int"), "ENABLE_TRACKBACK" => array("FIELD" => "P.ENABLE_TRACKBACK", "TYPE" => "string"), "ENABLE_COMMENTS" => array("FIELD" => "P.ENABLE_COMMENTS", "TYPE" => "string"), "NUM_COMMENTS" => array("FIELD" => "P.NUM_COMMENTS", "TYPE" => "int"), "NUM_TRACKBACKS" => array("FIELD" => "P.NUM_TRACKBACKS", "TYPE" => "int"), "VIEWS" => array("FIELD" => "P.VIEWS", "TYPE" => "int"), "FAVORITE_SORT" => array("FIELD" => "P.FAVORITE_SORT", "TYPE" => "int"), "CATEGORY_ID" => array("FIELD" => "P.CATEGORY_ID", "TYPE" => "string"), "PATH" => array("FIELD" => "P.PATH", "TYPE" => "string"), "MICRO" => array("FIELD" => "P.MICRO", "TYPE" => "string"), "HAS_IMAGES" => array("FIELD" => "P.HAS_IMAGES", "TYPE" => "string"), "HAS_PROPS" => array("FIELD" => "P.HAS_PROPS", "TYPE" => "string"), "HAS_TAGS" => array("FIELD" => "P.HAS_TAGS", "TYPE" => "string"), "HAS_COMMENT_IMAGES" => array("FIELD" => "P.HAS_COMMENT_IMAGES", "TYPE" => "string"), "HAS_SOCNET_ALL" => array("FIELD" => "P.HAS_SOCNET_ALL", "TYPE" => "string"), "SEO_TITLE" => array("FIELD" => "P.SEO_TITLE", "TYPE" => "string"), "SEO_TAGS" => array("FIELD" => "P.SEO_TAGS", "TYPE" => "string"), "SEO_DESCRIPTION" => array("FIELD" => "P.SEO_DESCRIPTION", "TYPE" => "string"), "PERMS" => array(), "AUTHOR_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"), "AUTHOR_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"), "AUTHOR_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"), "AUTHOR_SECOND_NAME" => array("FIELD" => "U.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"), "AUTHOR_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"), "AUTHOR" => array("FIELD" => "U.LOGIN, U.NAME, U.LAST_NAME, U.EMAIL, U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (P.AUTHOR_ID = U.ID)"), "CATEGORY_NAME" => array("FIELD" => "PCN.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_blog_category PCN ON (P.CATEGORY_ID = PCN.ID)"), "CATEGORY_ID_F" => array("FIELD" => "PC.CATEGORY_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_blog_post_category PC ON (PC.POST_ID = P.ID)"), "BLOG_USER_ALIAS" => array("FIELD" => "BU.ALIAS", "TYPE" => "string", "FROM" => "LEFT JOIN b_blog_user BU ON (P.AUTHOR_ID = BU.USER_ID)"), "BLOG_USER_AVATAR" => array("FIELD" => "BU.AVATAR", "TYPE" => "int", "FROM" => "LEFT JOIN b_blog_user BU ON (P.AUTHOR_ID = BU.USER_ID)"), "BLOG_URL" => array("FIELD" => "B.URL", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"), "BLOG_OWNER_ID" => array("FIELD" => "B.OWNER_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"), "BLOG_ACTIVE" => array("FIELD" => "B.ACTIVE", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"), "BLOG_GROUP_ID" => array("FIELD" => "B.GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"), "BLOG_ENABLE_RSS" => array("FIELD" => "B.ENABLE_RSS", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"), "BLOG_USE_SOCNET" => array("FIELD" => "B.USE_SOCNET", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"), "BLOG_NAME" => array("FIELD" => "B.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"), "BLOG_GROUP_SITE_ID" => array("FIELD" => "BG.SITE_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_blog_group BG ON (B.GROUP_ID = BG.ID)"), "SOCNET_BLOG_READ" => array("FIELD" => "BSR.BLOG_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_blog_socnet BSR ON (P.BLOG_ID = BSR.BLOG_ID)"), "BLOG_SOCNET_GROUP_ID" => array("FIELD" => "B.SOCNET_GROUP_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_blog B ON (P.BLOG_ID = B.ID)"), "SOCNET_GROUP_ID" => array("FIELD" => "SR1.ENTITY_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_blog_socnet_rights SR1 ON (P.ID = SR1.POST_ID AND SR1.ENTITY_TYPE = 'SG')"), "SOCNET_SITE_ID" => array("FIELD" => "SLS.SITE_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sonet_log BSL ON (BSL.EVENT_ID in ('blog_post', 'blog_post_micro', 'blog_post_important') AND BSL.SOURCE_ID = P.ID) ". "LEFT JOIN b_sonet_log_site SLS ON BSL.ID = SLS.LOG_ID"), "COMMENT_ID" => array("FIELD" => "PC.ID", "TYPE" => "string", "FROM" => "INNER JOIN b_blog_comment PC ON (P.ID = PC.POST_ID)"), ); foreach ($arFilter as $key => $val) { $key_res = CBlog::GetFilterOperation($key); $k = $key_res["FIELD"]; if (strpos($k, "POST_PARAM_") === 0) { $user_id = 0; $ii++; $pref = "BPP".$ii; if (is_array($val)) { $user_id = (isset($val["USER_ID"]) ? intval($val["USER_ID"]) : 0); $arFilter[$key] = $val["VALUE"]; } $arSelectFields[] = $k; $arFields[$k] = array("FIELD" => $pref.".VALUE", "TYPE" => "string", "FROM" => "LEFT JOIN b_blog_post_param ".$pref." ON (P.ID = ".$pref.".POST_ID AND ".$pref.".USER_ID". ($user_id <= 0 ? " IS NULL" : "=".$user_id)." AND ".$pref.".NAME='".$GLOBALS["DB"]->ForSql(substr($k, 11), 50)."')"); } } if(isset($arFilter["GROUP_CHECK_PERMS"])) { if(is_array($arFilter["GROUP_CHECK_PERMS"])) { foreach($arFilter["GROUP_CHECK_PERMS"] as $val) { if(IntVal($val)>0) { $arFields["POST_PERM_".$val] = Array( "FIELD" => "BUGP".$val.".PERMS", "TYPE" => "string", "FROM" => "LEFT JOIN b_blog_user_group_perms BUGP".$val." ON (P.BLOG_ID = BUGP".$val.".BLOG_ID AND P.ID = BUGP".$val.".POST_ID AND BUGP".$val.".USER_GROUP_ID = ".$val." AND BUGP".$val.".PERMS_TYPE = '".BLOG_PERMS_POST."')" ); $arSelectFields[] = "POST_PERM_".$val; } } } else { if(IntVal($arFilter["GROUP_CHECK_PERMS"])>0) { $arFields["POST_PERM_".$arFilter["GROUP_CHECK_PERMS"]] = Array( "FIELD" => "BUGP.PERMS", "TYPE" => "string", "FROM" => "LEFT JOIN b_blog_user_group_perms BUGP ON (P.BLOG_ID = BUGP.BLOG_ID AND P.ID = BUGP.POST_ID AND BUGP.USER_GROUP_ID = ".$arFilter["GROUP_CHECK_PERMS"]." AND BUGP.PERMS_TYPE = '".BLOG_PERMS_POST."')" ); $arSelectFields[] = "POST_PERM_".$arFilter["GROUP_CHECK_PERMS"]; } } unset($arFilter["GROUP_CHECK_PERMS"]); } // rating variable if ( in_array("RATING_TOTAL_VALUE", $arSelectFields) || in_array("RATING_TOTAL_VOTES", $arSelectFields) || in_array("RATING_TOTAL_POSITIVE_VOTES", $arSelectFields) || in_array("RATING_TOTAL_NEGATIVE_VOTES", $arSelectFields) || array_key_exists("RATING_TOTAL_VALUE", $arOrder) || array_key_exists("RATING_TOTAL_VOTES", $arOrder) || array_key_exists("RATING_TOTAL_POSITIVE_VOTES", $arOrder) || array_key_exists("RATING_TOTAL_NEGATIVE_VOTES", $arOrder) ) { $arSelectFields[] = 'RATING_TOTAL_VALUE'; $arSelectFields[] = 'RATING_TOTAL_VOTES'; $arSelectFields[] = 'RATING_TOTAL_POSITIVE_VOTES'; $arSelectFields[] = 'RATING_TOTAL_NEGATIVE_VOTES'; $arFields["RATING_TOTAL_VALUE"] = array("FIELD" => $DB->IsNull('RV.TOTAL_VALUE', '0'), "ORDER" => "RATING_TOTAL_VALUE", "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_POST' AND RV.ENTITY_ID = P.ID )"); $arFields["RATING_TOTAL_VOTES"] = array("FIELD" => $DB->IsNull('RV.TOTAL_VOTES', '0'), "ORDER" => "RATING_TOTAL_VALUE", "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_POST' AND RV.ENTITY_ID = P.ID )"); $arFields["RATING_TOTAL_POSITIVE_VOTES"] = array("FIELD" => $DB->IsNull('RV.TOTAL_POSITIVE_VOTES', '0'), "ORDER" => "RATING_TOTAL_POSITIVE_VOTES", "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_POST' AND RV.ENTITY_ID = P.ID )"); $arFields["RATING_TOTAL_NEGATIVE_VOTES"] = array("FIELD" => $DB->IsNull('RV.TOTAL_NEGATIVE_VOTES', '0'), "ORDER" => "RATING_TOTAL_POSITIVE_VOTES", "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RV ON ( RV.ENTITY_TYPE_ID = 'BLOG_POST' AND RV.ENTITY_ID = P.ID )"); } if (in_array("RATING_USER_VOTE_VALUE", $arSelectFields)) { global $USER; if (isset($USER) && is_object($USER)) { $arSelectFields[] = 'RATING_USER_VOTE_VALUE'; $arFields["RATING_USER_VOTE_VALUE"] = Array("FIELD" => $DB->IsNull('RVV.VALUE', '0'), "ORDER" => "RATING_USER_VOTE_VALUE", "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_vote RVV ON RVV.ENTITY_TYPE_ID = 'BLOG_POST' AND RVV.ENTITY_ID = P.ID AND RVV.USER_ID = ".intval($USER->GetId())); } } // <-- FIELDS $bNeedDistinct = false; $blogModulePermissions = $GLOBALS["APPLICATION"]->GetGroupRight("blog"); if ($blogModulePermissions < "W") { $user_id = 0; if(isset($USER) && is_object($USER) && $USER->IsAuthorized()) $user_id = $GLOBALS["USER"]->GetID(); if(!CBlog::IsBlogOwner($arFilter["BLOG_ID"], $user_id)) { $arUserGroups = CBlogUser::GetUserGroups($user_id, IntVal($arFilter["BLOG_ID"]), "Y", BLOG_BY_USER_ID); $strUserGroups = "0"; foreach($arUserGroups as $v) $strUserGroups .= ",".IntVal($v); $arFields["PERMS"] = array("FIELD" => "UGP.PERMS", "TYPE" => "string", "FROM" => "INNER JOIN b_blog_user_group_perms UGP ON (P.ID = UGP.POST_ID AND P.BLOG_ID = UGP.BLOG_ID AND UGP.USER_GROUP_ID IN (".$strUserGroups.") AND UGP.PERMS_TYPE = '".BLOG_PERMS_POST."')"); $bNeedDistinct = true; } else $arFields["PERMS"] = array("FIELD" => "'W'", "TYPE" => "string"); } else { $arFields["PERMS"] = array("FIELD" => "'W'", "TYPE" => "string"); } $arSqls = CBlog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql); if(array_key_exists("SOCNET_GROUP_ID", $arFilter) || array_key_exists("SOCNET_GROUP_ID", $arFilter)) $bNeedDistinct = true; if(array_key_exists("FOR_USER", $arFilter)) { if(IntVal($arFilter["FOR_USER"]) > 0) //authorized user { if($arFilter["FOR_USER_TYPE"] == "ALL") { $arSqls["FROM"] .= " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) ". " LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = ".IntVal($arFilter["FOR_USER"]).") "; if(strlen($arSqls["WHERE"]) > 0) $arSqls["WHERE"] .= " AND "; $arSqls["WHERE"] .= " (SR.ENTITY_TYPE != 'SG') AND ". " (SR.ENTITY = 'U".IntVal($arFilter["FOR_USER"])."' OR (UA.USER_ID is not NULL AND SR.ENTITY_TYPE = 'DR') OR P.AUTHOR_ID = '".IntVal($arFilter["FOR_USER"])."')"; } elseif($arFilter["FOR_USER_TYPE"] == "SELF") { $arSqls["FROM"] .= " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) ". " LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = ".IntVal($arFilter["FOR_USER"]).") "; if(strlen($arSqls["WHERE"]) > 0) $arSqls["WHERE"] .= " AND "; $arSqls["WHERE"] .= " (SR.ENTITY = 'U".IntVal($arFilter["FOR_USER"])."' OR (UA.USER_ID is not NULL AND SR.ENTITY_TYPE = 'DR')) "; } elseif($arFilter["FOR_USER_TYPE"] == "DR") { $arSqls["FROM"] .= " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) " . " LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = ".IntVal($arFilter["FOR_USER"]).") "; if(strlen($arSqls["WHERE"]) > 0) $arSqls["WHERE"] .= " AND "; $arSqls["WHERE"] .= " (UA.USER_ID is not NULL AND SR.ENTITY_TYPE = 'DR') "; } else { $arSqls["FROM"] .= " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) " . " LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = ".IntVal($arFilter["FOR_USER"]).") "; if(strlen($arSqls["WHERE"]) > 0) $arSqls["WHERE"] .= " AND "; $arSqls["WHERE"] .= " (UA.USER_ID is not NULL OR SR.ENTITY = 'AU') "; } } else { $arSqls["FROM"] .= " INNER JOIN b_blog_socnet_rights SR ON (P.ID = SR.POST_ID) ". " INNER JOIN b_user_access UA ON (UA.ACCESS_CODE = SR.ENTITY AND UA.USER_ID = 0)"; } $bNeedDistinct = true; } if($bNeedDistinct) $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); else $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $r = $obUserFieldsSql->GetFilter(); if(strlen($r)>0) $strSqlUFFilter = " (".$r.") "; if (is_array($arGroupBy) && count($arGroupBy)==0) { $strSql = "SELECT ".$arSqls["SELECT"]." ". $obUserFieldsSql->GetSelect()." ". "FROM b_blog_post P ". " ".$arSqls["FROM"]." ". $obUserFieldsSql->GetJoin("P.ID")." "; if (strlen($arSqls["WHERE"]) > 0) $strSql .= "WHERE ".$arSqls["WHERE"]." "; if(strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0) $strSql .= " AND ".$strSqlUFFilter." "; elseif(strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0) $strSql .= " WHERE ".$strSqlUFFilter." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." "; //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) return $arRes["CNT"]; else return False; } $strSql = "SELECT ".$arSqls["SELECT"]." ". $obUserFieldsSql->GetSelect()." ". "FROM b_blog_post P ". " ".$arSqls["FROM"]." ". $obUserFieldsSql->GetJoin("P.ID")." "; if (strlen($arSqls["WHERE"]) > 0) $strSql .= "WHERE ".$arSqls["WHERE"]." "; if(strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0) $strSql .= " AND ".$strSqlUFFilter." "; elseif(strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0) $strSql .= " WHERE ".$strSqlUFFilter." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." "; if (strlen($arSqls["ORDERBY"]) > 0) $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." "; if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])<=0) { $strSql_tmp = "SELECT COUNT(DISTINCT P.ID) as CNT ". "FROM b_blog_post P ". " ".$arSqls["FROM"]." ". $obUserFieldsSql->GetJoin("P.ID")." "; if (strlen($arSqls["WHERE"]) > 0) $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." "; if(strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUFFilter) > 0) $strSql_tmp .= " AND ".$strSqlUFFilter." "; elseif(strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUFFilter) > 0) $strSql_tmp .= " WHERE ".$strSqlUFFilter." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." "; //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) $cnt = $arRes["CNT"]; } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("BLOG_POST")); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) $strSql .= "LIMIT ".IntVal($arNavStartParams["nTopCount"]); //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("BLOG_POST")); } //echo "!4!=".htmlspecialcharsbx($strSql)."<br>"; return $dbRes; }
function GetBlogUserCommentPerms($ID, $userID) { $ID = IntVal($ID); $userID = IntVal($userID); $arAvailPerms = array_keys($GLOBALS["AR_BLOG_PERMS"]); $blogModulePermissions = $GLOBALS["APPLICATION"]->GetGroupRight("blog"); if ($blogModulePermissions >= "W") { return $arAvailPerms[count($arAvailPerms) - 1]; } if (IntVal($ID) > 0) { if (!($arPost = CBlogPost::GetByID($ID))) { return $arAvailPerms[0]; } else { $arBlog = CBlog::GetByID($arPost["BLOG_ID"]); if ($arBlog["ENABLE_COMMENTS"] != "Y") { return $arAvailPerms[0]; } if (CBlog::IsBlogOwner($arPost["BLOG_ID"], $userID)) { return $arAvailPerms[count($arAvailPerms) - 1]; } $arUserGroups = CBlogUser::GetUserGroups($userID, $arPost["BLOG_ID"], "Y", BLOG_BY_USER_ID); $perms = CBlogUser::GetUserPerms($arUserGroups, $arPost["BLOG_ID"], $ID, BLOG_PERMS_COMMENT, BLOG_BY_USER_ID); if ($perms) { return $perms; } } } else { return $arAvailPerms[0]; } if (IntVal($userID) > 0) { $arBlogUser = CBlogUser::GetByID($userID, BLOG_BY_USER_ID); if ($arBlogUser && $arBlogUser["ALLOW_POST"] != "Y") { return $arAvailPerms[0]; } } return $arAvailPerms[0]; }
public static function GetBlogUserCommentPerms($ID, $userID) { $ID = IntVal($ID); $userID = IntVal($userID); $arAvailPerms = array_keys($GLOBALS["AR_BLOG_PERMS"]); $blogModulePermissions = $GLOBALS["APPLICATION"]->GetGroupRight("blog"); if ($blogModulePermissions >= "W") return $arAvailPerms[count($arAvailPerms) - 1]; if (CBlog::IsBlogOwner($ID, $userID)) return $arAvailPerms[count($arAvailPerms) - 1]; $arBlog = CBlog::GetByID($ID); if ($arBlog["ENABLE_COMMENTS"] != "Y") return $arAvailPerms[0]; $arBlogUser = CBlogUser::GetByID($userID, BLOG_BY_USER_ID); if ($arBlogUser && $arBlogUser["ALLOW_POST"] != "Y") return $arAvailPerms[0]; $arUserGroups = CBlogUser::GetUserGroups($userID, $ID, "Y", BLOG_BY_USER_ID); $perms = CBlogUser::GetUserPerms($arUserGroups, $ID, 0, BLOG_PERMS_COMMENT, BLOG_BY_USER_ID); if ($perms) return $perms; return $arAvailPerms[0]; }