Beispiel #1
0
 function __GCE_GetFeatures($group_id, &$arFeatures)
 {
     if (!CModule::IncludeModule("socialnetwork")) {
         return;
     }
     if (intval($group_id) > 0) {
         $arFeaturesTmp = array();
         $dbResultTmp = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $group_id, "ENTITY_TYPE" => SONET_ENTITY_GROUP));
         while ($arResultTmp = $dbResultTmp->GetNext()) {
             $arFeaturesTmp[$arResultTmp["FEATURE"]] = $arResultTmp;
         }
     }
     $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
     foreach ($arSocNetFeaturesSettings as $feature => $arFeature) {
         if (!is_array($arFeature["allowed"]) || !in_array(SONET_ENTITY_GROUP, $arFeature["allowed"])) {
             continue;
         }
         if (intval($group_id) == 0) {
             $arFeaturesTmp[$feature]["ACTIVE"] = COption::GetOptionString("socialnetwork", "default_" . $feature . "_create_default", "Y", SITE_ID);
         }
         $arFeatures[$feature] = array("FeatureName" => $arFeaturesTmp ? $arFeaturesTmp[$feature]["FEATURE_NAME"] : false, "Active" => $arFeaturesTmp && array_key_exists($feature, $arFeaturesTmp) ? $arFeaturesTmp[$feature]["ACTIVE"] == "Y" : true);
     }
 }
Beispiel #2
0
 function Delete($ID)
 {
     global $DB;
     if (!CSocNetGroup::__ValidateID($ID)) {
         return false;
     }
     $ID = IntVal($ID);
     $bSuccess = True;
     $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetGroupDelete");
     while ($arEvent = $db_events->Fetch()) {
         if (ExecuteModuleEventEx($arEvent, array($ID)) === false) {
             return false;
         }
     }
     $arGroup = CSocNetGroup::GetByID($ID);
     if (!$arGroup) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_NO_GROUP"), "ERROR_NO_GROUP");
         return false;
     }
     $DB->StartTransaction();
     $events = GetModuleEvents("socialnetwork", "OnSocNetGroupDelete");
     while ($arEvent = $events->Fetch()) {
         ExecuteModuleEventEx($arEvent, array($ID));
     }
     if ($bSuccess) {
         $bSuccess = $DB->Query("DELETE FROM b_sonet_user2group WHERE GROUP_ID = " . $ID . "", true);
     }
     if ($bSuccess) {
         $bSuccessTmp = true;
         $dbResult = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $ID, "ENTITY_TYPE" => SONET_ENTITY_GROUP));
         while ($arResult = $dbResult->Fetch()) {
             $bSuccessTmp = $DB->Query("DELETE FROM b_sonet_features2perms WHERE FEATURE_ID = " . $arResult["ID"] . "", true);
             if (!$bSuccessTmp) {
                 break;
             }
         }
         if (!$bSuccessTmp) {
             $bSuccess = false;
         }
     }
     if ($bSuccess) {
         $bSuccess = $DB->Query("DELETE FROM b_sonet_features WHERE ENTITY_ID = " . $ID . " AND ENTITY_TYPE = '" . $DB->ForSql(SONET_ENTITY_GROUP, 1) . "'", true);
     }
     if ($bSuccess) {
         $dbResult = CSocNetLog::GetList(array(), array("ENTITY_ID" => $ID, "ENTITY_TYPE" => SONET_ENTITY_GROUP), false, false, array("ID"));
         while ($arResult = $dbResult->Fetch()) {
             $bSuccessTmp = $DB->Query("DELETE FROM b_sonet_log_site WHERE LOG_ID = " . $arResult["ID"] . "", true);
             if (!$bSuccessTmp) {
                 break;
             }
             $bSuccessTmp = $DB->Query("DELETE FROM b_sonet_log_right WHERE LOG_ID = " . $arResult["ID"] . "", true);
             if (!$bSuccessTmp) {
                 break;
             }
         }
         if (!$bSuccessTmp) {
             $bSuccess = false;
         }
     }
     if ($bSuccess) {
         $bSuccess = $DB->Query("DELETE FROM b_sonet_log WHERE ENTITY_TYPE = '" . SONET_ENTITY_GROUP . "' AND ENTITY_ID = " . $ID . "", true);
     }
     if ($bSuccess) {
         $bSuccess = CSocNetLog::DeleteSystemEventsByGroupID($ID);
     }
     if ($bSuccess) {
         $bSuccess = $DB->Query("DELETE FROM b_sonet_log_events WHERE ENTITY_TYPE = 'G' AND ENTITY_ID = " . $ID . "", true);
     }
     if ($bSuccess) {
         $bSuccess = $DB->Query("DELETE FROM b_sonet_group_site WHERE GROUP_ID = " . $ID . "", true);
     }
     if ($bSuccess) {
         $bSuccess = $DB->Query("DELETE FROM b_sonet_log_right WHERE GROUP_CODE LIKE 'SG" . $ID . "\\_%' OR GROUP_CODE = 'SG" . $ID . "'", true);
     }
     if ($bSuccess) {
         $bSuccess = CSocNetSubscription::DeleteEx(false, "SG" . $ID);
     }
     if ($bSuccess) {
         CFile::Delete($arGroup["IMAGE_ID"]);
         $bSuccess = $DB->Query("DELETE FROM b_sonet_group WHERE ID = " . $ID . "", true);
     }
     if ($bSuccess) {
         CUserOptions::DeleteOption("socialnetwork", "~menu_" . SONET_ENTITY_GROUP . "_" . $ID, false, 0);
         unset($GLOBALS["SONET_GROUP_CACHE"][$ID]);
     }
     if ($bSuccess) {
         $DB->Commit();
     } else {
         $DB->Rollback();
     }
     if ($bSuccess) {
         unset($GLOBALS["SONET_GROUP_CACHE"][$ID]);
         if (defined("BX_COMP_MANAGED_CACHE")) {
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_G" . $ID);
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group");
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_group_" . $ID);
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_group");
         }
     }
     if ($bSuccess && CModule::IncludeModule("search")) {
         CSearch::DeleteIndex("socialnetwork", "G" . $ID);
     }
     if ($bSuccess) {
         $DB->Query("DELETE FROM b_sonet_event_user_view WHERE ENTITY_TYPE = '" . SONET_ENTITY_GROUP . "' AND ENTITY_ID = " . $ID, true);
     }
     if ($bSuccess) {
         $GLOBALS["USER_FIELD_MANAGER"]->Delete("SONET_GROUP", $ID);
     }
     return $bSuccess;
 }
Beispiel #3
0
     if (strlen($arParams["NAME_TEMPLATE"]) <= 0) {
         $arParams["NAME_TEMPLATE"] = CSite::GetNameFormat();
     }
     $arParams["TITLE_NAME_TEMPLATE"] = str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
     $bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;
     $name = "";
     if ($USER->IsAuthorized() && $arResult["VARIABLES"]["user_id"] == $USER->GetID()) {
         $arTmpUser = array("NAME" => $USER->GetFirstName(), "LAST_NAME" => $USER->GetLastName(), "SECOND_NAME" => $USER->GetParam("SECOND_NAME"), "LOGIN" => $USER->GetLogin());
         $name = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
     } else {
         $dbUser = CUser::GetByID($arResult["VARIABLES"]["user_id"]);
         $arUser = $dbUser->Fetch();
         $name = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arUser, $bUseLogin);
     }
     $arResult["USER"] = array("ID" => $arResult["VARIABLES"]["user_id"], "NAME" => $name);
     $db_res = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $arResult["USER"]["ID"], "ENTITY_TYPE" => SONET_ENTITY_USER, "FEATURE" => "files"));
     if ($db_res && ($arResult["USER"]["FEATURE"] = $db_res->GetNext())) {
         $arParams["STR_TITLE"] = $arResult["USER"]["FEATURE"]["FEATURE_NAME"] = empty($arResult["USER"]["FEATURE"]["FEATURE_NAME"]) ? $arParams["STR_TITLE"] : $arResult["USER"]["FEATURE"]["FEATURE_NAME"];
     } else {
         $arResult["USER"]["FEATURE"] = array("FEATURE_NAME" => $arParams["STR_TITLE"]);
     }
     $name = trim($name);
     $strTitle = $name . ": " . $arParams["STR_TITLE"];
     if ($arParams["SET_NAV_CHAIN"] == "Y") {
         $APPLICATION->AddChainItem($name, CComponentEngine::MakePathFromTemplate($arResult["PATH_TO_USER"], array("user_id" => $arResult["VARIABLES"]["user_id"])));
         $APPLICATION->AddChainItem($arParams["STR_TITLE"], CComponentEngine::MakePathFromTemplate($arResult["PATH_TO_USER_FILES"], array("user_id" => $arResult["VARIABLES"]["user_id"], "path" => "")));
     }
 }
 if ($arParams["SET_TITLE"] == "Y") {
     $APPLICATION->SetTitle($strTitle);
     if ($componentPage == "user_files" && (empty($arResult["VARIABLES"]["path"]) || $arResult["VARIABLES"]["path"] == "index.php")) {
Beispiel #4
0
            }
        }
    }
}
if (!in_array($arParams["SM_THEME"], $arThemes)) {
    $arParams["SM_THEME"] = in_array("grey", $arThemes) ? "grey" : $arThemes[0];
}
if (in_array($arParams["SM_THEME"], $arThemes)) {
    $this->InitComponentTemplate();
    $obTemplate =& $this->GetTemplate();
    $GLOBALS['APPLICATION']->SetAdditionalCSS($obTemplate->GetFolder() . "/themes/" . $arParams["SM_THEME"] . "/style.css");
}
$arUserOptions = CUserOptions::GetOption("socialnetwork", "~menu_" . $arParams["ENTITY_TYPE"] . "_" . $arParams["ENTITY_ID"], false, 0);
$arResult["ALL_FEATURES"] = array();
$arFeaturesTmp = array();
$dbResultTmp = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $arParams["ENTITY_ID"], "ENTITY_TYPE" => $arParams["ENTITY_TYPE"]));
while ($arResultTmp = $dbResultTmp->GetNext()) {
    $arFeaturesTmp[$arResultTmp["FEATURE"]] = $arResultTmp;
}
$arCustomFeatures = array();
$events = GetModuleEvents("socialnetwork", "OnFillSocNetMenu");
while ($arEvent = $events->Fetch()) {
    ExecuteModuleEventEx($arEvent, array(&$arCustomFeatures, $arParams));
}
if ($arParams["ENTITY_TYPE"] == SONET_ENTITY_USER && $USER->IsAuthorized() && $USER->GetID() == $arParams["ENTITY_ID"]) {
    $arResult["ALL_FEATURES"]["log"] = array("FeatureName" => $arParams["LogName"], "Active" => true, "Operations" => array(), "NOPARAMS" => true, "Url" => $arParams["arResult"]["Urls"]["Log"]);
}
if ($arParams["ENTITY_TYPE"] == SONET_ENTITY_USER || $arParams["ENTITY_TYPE"] == SONET_ENTITY_GROUP) {
    $arResult["ALL_FEATURES"]["general"] = array("FeatureName" => $arParams["GeneralName"], "Active" => true, "Operations" => array(), "NOPARAMS" => true, "Url" => $arParams["ENTITY_TYPE"] == SONET_ENTITY_GROUP ? $arParams["arResult"]["Urls"]["View"] : $arParams["arResult"]["Urls"]["Main"]);
}
if ($arParams["ENTITY_TYPE"] == SONET_ENTITY_USER && CSocNetUser::IsFriendsAllowed() && $arParams["arResult"]["CurrentUserPerms"]["Operations"]["viewfriends"]) {
 function GetOperationPerm($type, $id, $feature, $operation)
 {
     global $arSocNetAllowedEntityTypes;
     $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
     $type = Trim($type);
     if (StrLen($type) <= 0 || !in_array($type, $arSocNetAllowedEntityTypes)) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_ERROR_NO_ENTITY_TYPE"), "ERROR_EMPTY_TYPE");
         if (is_array($id)) {
             $arReturn = array();
             foreach ($id as $TmpGroupID) {
                 $arReturn[$TmpGroupID] = false;
             }
             return $arReturn;
         } else {
             return false;
         }
     }
     $feature = StrToLower(Trim($feature));
     if (StrLen($feature) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_EMPTY_FEATURE_ID"), "ERROR_EMPTY_FEATURE_ID");
         if (is_array($id)) {
             $arReturn = array();
             foreach ($id as $TmpGroupID) {
                 $arReturn[$TmpGroupID] = false;
             }
             return $arReturn;
         } else {
             return false;
         }
     }
     if (!array_key_exists($feature, $arSocNetFeaturesSettings) || !array_key_exists("allowed", $arSocNetFeaturesSettings[$feature]) || !in_array($type, $arSocNetFeaturesSettings[$feature]["allowed"])) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_ERROR_NO_FEATURE_ID"), "ERROR_NO_FEATURE_ID");
         if (is_array($id)) {
             $arReturn = array();
             foreach ($id as $TmpGroupID) {
                 $arReturn[$TmpGroupID] = false;
             }
             return $arReturn;
         } else {
             return false;
         }
     }
     $operation = StrToLower(Trim($operation));
     if (!array_key_exists("operations", $arSocNetFeaturesSettings[$feature]) || !array_key_exists($operation, $arSocNetFeaturesSettings[$feature]["operations"])) {
         if (is_array($id)) {
             $arReturn = array();
             foreach ($id as $TmpGroupID) {
                 $arReturn[$TmpGroupID] = false;
             }
             return $arReturn;
         } else {
             return false;
         }
     }
     global $arSonetFeaturesPermsCache;
     if (!isset($arSonetFeaturesPermsCache) || !is_array($arSonetFeaturesPermsCache)) {
         $arSonetFeaturesPermsCache = array();
     }
     if (is_array($id)) {
         $arFeaturesPerms = array();
         $arGroupToGet = array();
         foreach ($id as $TmpGroupID) {
             $arFeaturesPerms[$TmpGroupID] = array();
             if (!array_key_exists($type . "_" . $TmpGroupID, $arSonetFeaturesPermsCache)) {
                 $arGroupToGet[] = $TmpGroupID;
             } else {
                 $arFeaturesPerms[$TmpGroupID] = $arSonetFeaturesPermsCache[$type . "_" . $TmpGroupID];
             }
         }
         if (!empty($arGroupToGet)) {
             $dbResult = CSocNetFeaturesPerms::GetList(array(), array("FEATURE_ENTITY_ID" => $arGroupToGet, "FEATURE_ENTITY_TYPE" => $type, "GROUP_FEATURE_ACTIVE" => "Y"), false, false, array("OPERATION_ID", "FEATURE_ENTITY_ID", "FEATURE_FEATURE", "ROLE"));
             while ($arResult = $dbResult->Fetch()) {
                 if (!array_key_exists($arResult["FEATURE_ENTITY_ID"], $arFeaturesPerms) || !array_key_exists($arResult["FEATURE_FEATURE"], $arFeaturesPerms[$arResult["FEATURE_ENTITY_ID"]])) {
                     $arFeaturesPerms[$arResult["FEATURE_ENTITY_ID"]][$arResult["FEATURE_FEATURE"]] = array();
                 }
                 $arFeaturesPerms[$arResult["FEATURE_ENTITY_ID"]][$arResult["FEATURE_FEATURE"]][$arResult["OPERATION_ID"]] = $arResult["ROLE"];
             }
         }
         $arReturn = array();
         foreach ($id as $TmpEntityID) {
             $arSonetFeaturesPermsCache[$type . "_" . $TmpGroupID] = $arFeaturesPerms[$TmpEntityID];
             if ($type == SONET_ENTITY_GROUP) {
                 if (!array_key_exists($feature, $arFeaturesPerms[$TmpEntityID])) {
                     $featureOperationPerms = $arSocNetFeaturesSettings[$feature]["operations"][$operation][SONET_ENTITY_GROUP];
                 } elseif (!array_key_exists($operation, $arFeaturesPerms[$TmpEntityID][$feature])) {
                     $featureOperationPerms = $arSocNetFeaturesSettings[$feature]["operations"][$operation][SONET_ENTITY_GROUP];
                 } else {
                     $featureOperationPerms = $arFeaturesPerms[$TmpEntityID][$feature][$operation];
                 }
             } else {
                 if (!array_key_exists($feature, $arFeaturesPerms[$TmpEntityID])) {
                     $featureOperationPerms = $arSocNetFeaturesSettings[$feature]["operations"][$operation][SONET_ENTITY_USER];
                 } elseif (!array_key_exists($operation, $arFeaturesPerms[$TmpEntityID][$feature])) {
                     $featureOperationPerms = $arSocNetFeaturesSettings[$feature]["operations"][$operation][SONET_ENTITY_USER];
                 } else {
                     $featureOperationPerms = $arFeaturesPerms[$TmpEntityID][$feature][$operation];
                 }
                 if ($featureOperationPerms == SONET_RELATIONS_TYPE_FRIENDS2) {
                     $featureOperationPerms = SONET_RELATIONS_TYPE_FRIENDS;
                 }
             }
             $arReturn[$TmpEntityID] = $featureOperationPerms;
         }
         return $arReturn;
     } else {
         $id = IntVal($id);
         if ($id <= 0) {
             $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_EMPTY_ENTITY_ID"), "ERROR_EMPTY_ENTITY_ID");
             return false;
         }
         $arFeaturesPerms = array();
         if (array_key_exists($type . "_" . $id, $arSonetFeaturesPermsCache)) {
             $arFeaturesPerms = $arSonetFeaturesPermsCache[$type . "_" . $id];
         } else {
             $cache = new CPHPCache();
             $cache_time = 31536000;
             $cache_id = "entity_" . "_" . $type . "_" . $id;
             $cache_path = "/sonet/features_perms/" . $type . "_" . $id . "/";
             $arTmp = array();
             if ($cache->InitCache($cache_time, $cache_id, $cache_path)) {
                 $arCacheVars = $cache->GetVars();
                 $arTmp = $arCacheVars["RESULT"];
             } else {
                 $cache->StartDataCache($cache_time, $cache_id, $cache_path);
                 if (defined("BX_COMP_MANAGED_CACHE")) {
                     $GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path);
                 }
                 $dbResult = CSocNetFeaturesPerms::GetList(array(), array("FEATURE_ENTITY_ID" => $id, "FEATURE_ENTITY_TYPE" => $type, "GROUP_FEATURE_ACTIVE" => "Y"), false, false, array("ID", "OPERATION_ID", "FEATURE_ID", "FEATURE_FEATURE", "ROLE"));
                 while ($arResult = $dbResult->Fetch()) {
                     if (defined("BX_COMP_MANAGED_CACHE")) {
                         $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_features2perms_" . $arResult["ID"]);
                     }
                     $arTmp[] = $arResult;
                 }
                 if (defined("BX_COMP_MANAGED_CACHE")) {
                     $dbResult = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $id, "ENTITY_TYPE" => $type), false, false, array("ID"));
                     while ($arResult = $dbResult->Fetch()) {
                         $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_feature_" . $arResult["ID"]);
                     }
                 }
                 if (defined("BX_COMP_MANAGED_CACHE")) {
                     if ($type == SONET_ENTITY_GROUP) {
                         $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_group_" . $id);
                         $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_group");
                     } elseif ($type == SONET_ENTITY_USER) {
                         $GLOBALS["CACHE_MANAGER"]->RegisterTag("USER_CARD_" . intval($id / TAGGED_user_card_size));
                     }
                     $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_features_" . $type . "_" . $id);
                 }
                 $arCacheData = array("RESULT" => $arTmp);
                 if (defined("BX_COMP_MANAGED_CACHE")) {
                     $GLOBALS["CACHE_MANAGER"]->EndTagCache();
                 }
                 $cache->EndDataCache($arCacheData);
             }
             foreach ($arTmp as $arResult) {
                 if (!array_key_exists($arResult["FEATURE_FEATURE"], $arFeaturesPerms)) {
                     $arFeaturesPerms[$arResult["FEATURE_FEATURE"]] = array();
                 }
                 $arFeaturesPerms[$arResult["FEATURE_FEATURE"]][$arResult["OPERATION_ID"]] = $arResult["ROLE"];
             }
             $arSonetFeaturesPermsCache[$type . "_" . $id] = $arFeaturesPerms;
         }
         if ($type == SONET_ENTITY_GROUP) {
             if (!array_key_exists($feature, $arFeaturesPerms)) {
                 $featureOperationPerms = $arSocNetFeaturesSettings[$feature]["operations"][$operation][SONET_ENTITY_GROUP];
             } elseif (!array_key_exists($operation, $arFeaturesPerms[$feature])) {
                 $featureOperationPerms = $arSocNetFeaturesSettings[$feature]["operations"][$operation][SONET_ENTITY_GROUP];
             } else {
                 $featureOperationPerms = $arFeaturesPerms[$feature][$operation];
             }
         } else {
             if (!array_key_exists($feature, $arFeaturesPerms)) {
                 $featureOperationPerms = $arSocNetFeaturesSettings[$feature]["operations"][$operation][SONET_ENTITY_USER];
             } elseif (!array_key_exists($operation, $arFeaturesPerms[$feature])) {
                 $featureOperationPerms = $arSocNetFeaturesSettings[$feature]["operations"][$operation][SONET_ENTITY_USER];
             } else {
                 $featureOperationPerms = $arFeaturesPerms[$feature][$operation];
             }
             if ($featureOperationPerms == SONET_RELATIONS_TYPE_FRIENDS2) {
                 $featureOperationPerms = SONET_RELATIONS_TYPE_FRIENDS;
             }
         }
         return $featureOperationPerms;
     }
 }
Beispiel #6
0
 function GetActiveFeaturesNames($type, $id)
 {
     global $arSocNetAllowedEntityTypes;
     $type = Trim($type);
     if (StrLen($type) <= 0 || !in_array($type, $arSocNetAllowedEntityTypes)) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_ERROR_NO_ENTITY_TYPE"), "ERROR_EMPTY_TYPE");
         return false;
     }
     $id = IntVal($id);
     if ($id <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_EMPTY_ENTITY_ID"), "ERROR_EMPTY_ENTITY_ID");
         return false;
     }
     $arReturn = array();
     $arFeatures = array();
     if (array_key_exists("SONET_FEATURES_CACHE", $GLOBALS) && isset($GLOBALS["SONET_FEATURES_CACHE"][$type]) && isset($GLOBALS["SONET_FEATURES_CACHE"][$type][$id]) && is_array($GLOBALS["SONET_FEATURES_CACHE"][$type][$id])) {
         $arFeatures = $GLOBALS["SONET_FEATURES_CACHE"][$type][$id];
     } else {
         $cache = new CPHPCache();
         $cache_time = 31536000;
         $cache_id = $type . "_" . $id;
         $cache_path = "/sonet/features/";
         if ($cache->InitCache($cache_time, $cache_id, $cache_path)) {
             $arCacheVars = $cache->GetVars();
             $arFeatures = $arCacheVars["FEATURES"];
         } else {
             $cache->StartDataCache($cache_time, $cache_id, $cache_path);
             if (defined("BX_COMP_MANAGED_CACHE")) {
                 $GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path);
                 $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_features_" . $type . "_" . $id);
             }
             $dbResult = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $id, "ENTITY_TYPE" => $type));
             while ($arResult = $dbResult->GetNext()) {
                 $arFeatures[$arResult["FEATURE"]] = array("ACTIVE" => $arResult["ACTIVE"], "FEATURE_NAME" => $arResult["FEATURE_NAME"]);
                 if (defined("BX_COMP_MANAGED_CACHE")) {
                     $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_feature_" . $arResult["ID"]);
                 }
             }
             $arCacheData = array("FEATURES" => $arFeatures);
             $cache->EndDataCache($arCacheData);
             if (defined("BX_COMP_MANAGED_CACHE")) {
                 $GLOBALS["CACHE_MANAGER"]->EndTagCache();
             }
         }
         if (!array_key_exists("SONET_FEATURES_CACHE", $GLOBALS) || !is_array($GLOBALS["SONET_FEATURES_CACHE"])) {
             $GLOBALS["SONET_FEATURES_CACHE"] = array();
         }
         if (!array_key_exists($type, $GLOBALS["SONET_FEATURES_CACHE"]) || !is_array($GLOBALS["SONET_FEATURES_CACHE"][$type])) {
             $GLOBALS["SONET_FEATURES_CACHE"][$type] = array();
         }
         $GLOBALS["SONET_FEATURES_CACHE"][$type][$id] = $arFeatures;
     }
     $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
     foreach ($arSocNetFeaturesSettings as $feature => $arr) {
         if (!array_key_exists("allowed", $arSocNetFeaturesSettings[$feature]) || !in_array($type, $arSocNetFeaturesSettings[$feature]["allowed"])) {
             continue;
         }
         if (array_key_exists($feature, $arFeatures) && $arFeatures[$feature]["ACTIVE"] == "N") {
             continue;
         }
         $arReturn[$feature] = $arFeatures[$feature]["FEATURE_NAME"];
     }
     return $arReturn;
 }
             $arResult["FatalError"] = GetMessage("SONET_C3_PERMS") . ".";
         }
     } else {
         $arResult["FatalError"] = GetMessage("SONET_C3_NO_GROUP") . ".";
     }
 } else {
     $dbUser = CUser::GetByID($arParams["USER_ID"]);
     $arResult["User"] = $dbUser->GetNext();
     if (is_array($arResult["User"])) {
         $arResult["User"]["NAME_FORMATTED"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arResult['User'], $bUseLogin);
         CSocNetUserPerms::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
         $arResult["CurrentUserPerms"] = CSocNetUserPerms::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
         if ($arResult["CurrentUserPerms"]["Operations"]["modifyuser"]) {
             $arResult["Features"] = array();
             $arFeaturesTmp = array();
             $dbResultTmp = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $arResult["User"]["ID"], "ENTITY_TYPE" => SONET_ENTITY_USER));
             while ($arResultTmp = $dbResultTmp->GetNext()) {
                 $arFeaturesTmp[$arResultTmp["FEATURE"]] = $arResultTmp;
             }
             global $arSocNetFeaturesSettings;
             foreach ($arSocNetFeaturesSettings as $feature => $arFeature) {
                 if (!is_array($arFeature["allowed"]) || !in_array(SONET_ENTITY_USER, $arFeature["allowed"])) {
                     continue;
                 }
                 $arResult["Features"][$feature] = array("FeatureName" => $arFeaturesTmp[$feature]["FEATURE_NAME"], "Active" => array_key_exists($feature, $arFeaturesTmp) ? $arFeaturesTmp[$feature]["ACTIVE"] == "Y" : true, "Operations" => array());
                 if ($feature == 'files') {
                     $arResult["Features"][$feature]['note'] = GetMessage("SONET_WEBDAV_RIGHS_NOTE");
                     continue;
                 }
                 if ($feature == 'calendar' && (!IsModuleInstalled("intranet") || COption::GetOptionString("intranet", "calendar_2", "N") == "Y") && CModule::IncludeModule("calendar")) {
                     $arResult["Features"][$feature]['note'] = GetMessage('SONET_CALENDAR_ACCESS_NOTE');
 function GetActiveFeaturesNames($type, $id)
 {
     global $arSocNetAllowedEntityTypes, $arSocNetFeaturesSettings;
     $type = Trim($type);
     if (StrLen($type) <= 0 || !in_array($type, $arSocNetAllowedEntityTypes)) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_ERROR_NO_ENTITY_TYPE"), "ERROR_EMPTY_TYPE");
         return false;
     }
     $id = IntVal($id);
     if ($id <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_EMPTY_ENTITY_ID"), "ERROR_EMPTY_ENTITY_ID");
         return false;
     }
     $arReturn = array();
     $arFeatures = array();
     if (array_key_exists("SONET_FEATURES_CACHE", $GLOBALS) && is_array($GLOBALS["SONET_FEATURES_CACHE"]) && array_key_exists($type, $GLOBALS["SONET_FEATURES_CACHE"]) && is_array($GLOBALS["SONET_FEATURES_CACHE"][$type]) && array_key_exists($id, $GLOBALS["SONET_FEATURES_CACHE"][$type]) && is_array($GLOBALS["SONET_FEATURES_CACHE"][$type][$id])) {
         $arFeatures = $GLOBALS["SONET_FEATURES_CACHE"][$type][$id];
     } else {
         $dbResult = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $id, "ENTITY_TYPE" => $type));
         while ($arResult = $dbResult->GetNext()) {
             $arFeatures[$arResult["FEATURE"]] = array("ACTIVE" => $arResult["ACTIVE"], "FEATURE_NAME" => $arResult["FEATURE_NAME"]);
         }
         if (!array_key_exists("SONET_FEATURES_CACHE", $GLOBALS) || !is_array($GLOBALS["SONET_FEATURES_CACHE"])) {
             $GLOBALS["SONET_FEATURES_CACHE"] = array();
         }
         if (!array_key_exists($type, $GLOBALS["SONET_FEATURES_CACHE"]) || !is_array($GLOBALS["SONET_FEATURES_CACHE"][$type])) {
             $GLOBALS["SONET_FEATURES_CACHE"][$type] = array();
         }
         $GLOBALS["SONET_FEATURES_CACHE"][$type][$id] = $arFeatures;
     }
     foreach ($arSocNetFeaturesSettings as $feature => $arr) {
         if (!array_key_exists("allowed", $arSocNetFeaturesSettings[$feature]) || !in_array($type, $arSocNetFeaturesSettings[$feature]["allowed"])) {
             continue;
         }
         if (array_key_exists($feature, $arFeatures) && $arFeatures[$feature]["ACTIVE"] == "N") {
             continue;
         }
         $arReturn[$feature] = $arFeatures[$feature]["FEATURE_NAME"];
     }
     return $arReturn;
 }
Beispiel #9
0
         $arFilter["ENTITY_ID"] = 0;
         $arFilter["ENTITY_MY"] = "Y";
     } else {
         $arFilter["ENTITY_ID"] = $entity_id;
     }
 }
 $dbResultTmp = CSocNetLogEvents::GetList(array(), $arFilter);
 while ($arResultTmp = $dbResultTmp->Fetch()) {
     if ($arResultTmp["ENTITY_CB"] == "Y") {
         $arSubscribesTmpCB[$arResultTmp["EVENT_ID"]] = $arResultTmp;
     } else {
         $arSubscribesTmp[$arResultTmp["EVENT_ID"]] = $arResultTmp;
     }
 }
 $arFeaturesTmp = array();
 $dbResultTmp = CSocNetFeatures::GetList(array(), array("ENTITY_TYPE" => $entity_type, "ENTITY_ID" => $entity_id));
 while ($arResultTmp = $dbResultTmp->GetNext()) {
     $arFeaturesTmp[$arResultTmp["FEATURE"]] = $arResultTmp;
 }
 $arResult["Subscription"] = array();
 foreach ($arSocNetLogEvents as $event_id_tmp => $arEventTmp) {
     if (array_key_exists("HIDDEN", $arEventTmp) && $arEventTmp["HIDDEN"]) {
         continue;
     }
     if (!array_key_exists("ENTITIES", $arEventTmp) || !array_key_exists($entity_type, $arEventTmp["ENTITIES"])) {
         continue;
     }
     $arSubscriptionData = __SLGetSubscriptionData($event_id_tmp, $arSubscribesTmp, $arSubscribesTmpAllMy, $arSubscribesTmpAll);
     $arResult["Subscription"][] = array("Feature" => $event_id_tmp, "Name" => $arEventTmp["ENTITIES"][$entity_type]["TITLE"], "Transport" => $arSubscriptionData["Transport"], "TransportInherited" => $arSubscriptionData["TransportInherited"], "TransportInheritedFrom" => $arSubscriptionData["TransportInheritedFrom"], "Visible" => $arSubscriptionData["Visible"], "VisibleInherited" => $arSubscriptionData["VisibleInherited"], "VisibleInheritedFrom" => $arSubscriptionData["VisibleInheritedFrom"]);
 }
 foreach ($arSocNetFeaturesSettings as $feature => $arFeature) {
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
?>

<?php 
$pageId = "user_calendar";
include "util_menu.php";
include "util_profile.php";
$ownerId = $arResult["VARIABLES"]["user_id"];
if (isset($_GET['bx_enable_calendar']) && $_GET['bx_enable_calendar'] == 'Y') {
    $rsFeatures = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $ownerId, "ENTITY_TYPE" => SONET_ENTITY_USER, "FEATURE" => 'calendar'));
    if ($arFeature = $rsFeatures->Fetch()) {
        CSocNetFeatures::Update($arFeature['ID'], array('ACTIVE' => 'Y'));
        unset($GLOBALS['SONET_FEATURES_CACHE']);
    }
}
if (CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER, $ownerId, "calendar")) {
    $calendar2 = (!IsModuleInstalled("intranet") || COption::GetOptionString("intranet", "calendar_2", "N") == "Y") && CModule::IncludeModule("calendar");
    if ($calendar2) {
        $APPLICATION->IncludeComponent("bitrix:calendar.grid", "", array("CALENDAR_TYPE" => 'user', "OWNER_ID" => $ownerId, "ALLOW_SUPERPOSE" => $arParams['CALENDAR_ALLOW_SUPERPOSE'], "ALLOW_RES_MEETING" => $arParams["CALENDAR_ALLOW_RES_MEETING"], "SET_TITLE" => 'Y', "SET_NAV_CHAIN" => 'Y', 'NAME_TEMPLATE' => $arParams['NAME_TEMPLATE']), $component, array("HIDE_ICONS" => "Y"));
    } else {
        $APPLICATION->IncludeComponent("bitrix:intranet.event_calendar", ".default", array("IBLOCK_TYPE" => $arParams['CALENDAR_IBLOCK_TYPE'], "IBLOCK_ID" => $arParams['CALENDAR_USER_IBLOCK_ID'], "OWNER_ID" => $ownerId, "OWNER_TYPE" => 'USER', "INIT_DATE" => "", "WEEK_HOLIDAYS" => $arParams['CALENDAR_WEEK_HOLIDAYS'], "YEAR_HOLIDAYS" => $arParams['CALENDAR_YEAR_HOLIDAYS'], "LOAD_MODE" => "ajax", "USE_DIFFERENT_COLORS" => "Y", "EVENT_COLORS" => "", "ADVANCED_MODE_SETTINGS" => "Y", "SET_TITLE" => 'Y', "SET_NAV_CHAIN" => 'Y', "WORK_TIME_START" => $arParams['CALENDAR_WORK_TIME_START'], "WORK_TIME_END" => $arParams['CALENDAR_WORK_TIME_END'], "PATH_TO_USER" => $arResult["PATH_TO_USER"], "PATH_TO_USER_CALENDAR" => $arResult["PATH_TO_USER_CALENDAR"], "ALLOW_SUPERPOSE" => $arParams['CALENDAR_ALLOW_SUPERPOSE'], "SUPERPOSE_GROUPS_CALS" => $arParams['CALENDAR_SUPERPOSE_GROUPS_CALS'], "SUPERPOSE_USERS_CALS" => $arParams['CALENDAR_SUPERPOSE_USERS_CALS'], "SUPERPOSE_CUR_USER_CALS" => $arParams['CALENDAR_SUPERPOSE_CUR_USER_CALS'], "SUPERPOSE_CAL_IDS" => $arParams['CALENDAR_SUPERPOSE_CAL_IDS'], "SUPERPOSE_GROUPS_IBLOCK_ID" => $arParams['CALENDAR_SUPERPOSE_GROUPS_IBLOCK_ID'], "SUPERPOSE_USERS_IBLOCK_ID" => $arParams['CALENDAR_USER_IBLOCK_ID'], "USERS_IBLOCK_ID" => $arParams['CALENDAR_USER_IBLOCK_ID'], "ALLOW_RES_MEETING" => $arParams["CALENDAR_ALLOW_RES_MEETING"], "RES_MEETING_IBLOCK_ID" => $arParams["CALENDAR_RES_MEETING_IBLOCK_ID"], "PATH_TO_RES_MEETING" => $arParams["CALENDAR_PATH_TO_RES_MEETING"], "RES_MEETING_USERGROUPS" => $arParams["CALENDAR_RES_MEETING_USERGROUPS"], "REINVITE_PARAMS_LIST" => $arParams["CALENDAR_REINVITE_PARAMS_LIST"], "NAME_TEMPLATE" => $arParams["NAME_TEMPLATE"], "SHOW_LOGIN" => $arParams["SHOW_LOGIN"], "ALLOW_VIDEO_MEETING" => $arParams["CALENDAR_ALLOW_VIDEO_MEETING"], "VIDEO_MEETING_IBLOCK_ID" => $arParams["CALENDAR_VIDEO_MEETING_IBLOCK_ID"], "PATH_TO_VIDEO_MEETING" => $arParams["CALENDAR_PATH_TO_VIDEO_MEETING"], "PATH_TO_VIDEO_MEETING_DETAIL" => $arParams["CALENDAR_PATH_TO_VIDEO_MEETING_DETAIL"], "VIDEO_MEETING_USERGROUPS" => $arParams["CALENDAR_VIDEO_MEETING_USERGROUPS"]), $component, array("HIDE_ICONS" => "Y"));
    }
} elseif (strpos(POST_FORM_ACTION_URI, 'bx_enable_calendar=Y') === false) {
    $url = POST_FORM_ACTION_URI . (strpos(POST_FORM_ACTION_URI, '?') === false ? '?' : '&') . 'bx_enable_calendar=Y';
    echo GetMessage('SONET_U_CALENDAR_DIS_MES') . ' <a href="' . $url . '" title="' . GetMessage('SONET_U_CALENDAR_DIS_TITLE') . '">' . GetMessage('SONET_U_CALENDAR_TURN_ON') . '</a>';
}