Beispiel #1
0
 function GetAccessPermissions($ID, $TYPE = "ONE")
 {
     global $CACHE_MANAGER;
     $ID = intVal($ID);
     $TYPE = $TYPE == "ONE" ? "ONE" : "ALL";
     $cache_id = "b_forum_perms_" . $ID . "_all";
     $arRes = array();
     if ($ID <= 0) {
         return false;
     } elseif (!is_array($GLOBALS["FORUM_CACHE"]["FORUM"][$ID])) {
         $GLOBALS["FORUM_CACHE"]["FORUM"][$ID] = array();
     }
     if (!array_key_exists("PERMISSIONS", $GLOBALS["FORUM_CACHE"]["FORUM"][$ID])) {
         if (CACHED_b_forum_perms !== false && $CACHE_MANAGER->Read(CACHED_b_forum_perms, $cache_id, "b_forum_perms")) {
             $GLOBALS["FORUM_CACHE"]["FORUM"][$ID]["PERMISSIONS"] = $CACHE_MANAGER->Get($cache_id);
         } else {
             $db_res = CForumNew::GetAccessPermsList(array(), array("FORUM_ID" => $ID));
             while ($res = $db_res->Fetch()) {
                 $arRes[$res["GROUP_ID"]] = $res["PERMISSION"];
             }
             $GLOBALS["FORUM_CACHE"]["FORUM"][$ID]["PERMISSIONS"] = $arRes;
             if (CACHED_b_forum_perms !== false) {
                 $CACHE_MANAGER->Set($cache_id, $GLOBALS["FORUM_CACHE"]["FORUM"][$ID]["PERMISSIONS"]);
             }
         }
     }
     $result = $GLOBALS["FORUM_CACHE"]["FORUM"][$ID]["PERMISSIONS"];
     if ($TYPE == "ONE") {
         $result = array();
         foreach ($GLOBALS["FORUM_CACHE"]["FORUM"][$ID]["PERMISSIONS"] as $key => $val) {
             $result[] = array($key, $val);
         }
     }
     return $result;
 }