function __AutoSetPerms($ID) { $ID = IntVal($ID); $arGroupPerms = CBlogUserGroupPerms::GetByID($ID); if (IntVal($arGroupPerms["POST_ID"]) == 0) { $dbBlogPosts = CBlogPost::GetList(array(), array("BLOG_ID" => $arGroupPerms["BLOG_ID"]), false, false, array("ID")); while ($arBlogPosts = $dbBlogPosts->Fetch()) { $dbGroupPerms1 = CBlogUserGroupPerms::GetList(array(), array("BLOG_ID" => $arGroupPerms["BLOG_ID"], "USER_GROUP_ID" => $arGroupPerms["USER_GROUP_ID"], "PERMS_TYPE" => $arGroupPerms["PERMS_TYPE"], "POST_ID" => $arBlogPosts["ID"]), false, false, array("ID", "AUTOSET", "PERMS")); if ($arGroupPerms1 = $dbGroupPerms1->Fetch()) { if ($arGroupPerms1["AUTOSET"] == "Y" && $arGroupPerms["PERMS"] != $arGroupPerms1["PERMS"]) { CBlogUserGroupPerms::Update($arGroupPerms1["ID"], array("PERMS" => $arGroupPerms["PERMS"])); } } else { CBlogUserGroupPerms::Add(array("BLOG_ID" => $arGroupPerms["BLOG_ID"], "USER_GROUP_ID" => $arGroupPerms["USER_GROUP_ID"], "PERMS_TYPE" => $arGroupPerms["PERMS_TYPE"], "POST_ID" => $arBlogPosts["ID"], "PERMS" => $arGroupPerms["PERMS"], "AUTOSET" => "Y")); } } } }
function SetPostPerms($ID, $arPerms = array(), $permsType = BLOG_PERMS_POST) { global $DB; $ID = IntVal($ID); $permsType = $permsType == BLOG_PERMS_COMMENT ? BLOG_PERMS_COMMENT : BLOG_PERMS_POST; $arPost = CBlogPost::GetByID($ID); if ($arPost) { $DB->StartTransaction(); $arInsertedGroups = array(); foreach ($arPerms as $key => $value) { $dbGroupPerms = CBlogUserGroupPerms::GetList(array(), array("BLOG_ID" => $arPost["BLOG_ID"], "USER_GROUP_ID" => $key, "PERMS_TYPE" => $permsType, "POST_ID" => $arPost["ID"]), false, false, array("ID")); if ($arGroupPerms = $dbGroupPerms->Fetch()) { CBlogUserGroupPerms::Update($arGroupPerms["ID"], array("PERMS" => $value, "AUTOSET" => "N")); } else { CBlogUserGroupPerms::Add(array("BLOG_ID" => $arPost["BLOG_ID"], "USER_GROUP_ID" => $key, "PERMS_TYPE" => $permsType, "POST_ID" => $arPost["ID"], "AUTOSET" => "N", "PERMS" => $value)); } $arInsertedGroups[] = $key; } $dbResult = CBlogUserGroupPerms::GetList(array(), array("BLOG_ID" => $arPost["BLOG_ID"], "PERMS_TYPE" => $permsType, "POST_ID" => 0, "!USER_GROUP_ID" => $arInsertedGroups), false, false, array("ID", "USER_GROUP_ID", "PERMS")); while ($arResult = $dbResult->Fetch()) { $dbGroupPerms = CBlogUserGroupPerms::GetList(array(), array("BLOG_ID" => $arPost["BLOG_ID"], "USER_GROUP_ID" => $arResult["USER_GROUP_ID"], "PERMS_TYPE" => $permsType, "POST_ID" => $arPost["ID"]), false, false, array("ID")); if ($arGroupPerms = $dbGroupPerms->Fetch()) { CBlogUserGroupPerms::Update($arGroupPerms["ID"], array("PERMS" => $arResult["PERMS"], "AUTOSET" => "Y")); } else { CBlogUserGroupPerms::Add(array("BLOG_ID" => $arPost["BLOG_ID"], "USER_GROUP_ID" => $arResult["USER_GROUP_ID"], "PERMS_TYPE" => $permsType, "POST_ID" => $arPost["ID"], "AUTOSET" => "Y", "PERMS" => $arResult["PERMS"])); } } $DB->Commit(); } }
function SetBlogPerms($ID, $arPerms = array(), $permsType = BLOG_PERMS_POST) { global $DB; $ID = IntVal($ID); $permsType = $permsType == BLOG_PERMS_COMMENT ? BLOG_PERMS_COMMENT : BLOG_PERMS_POST; $arBlog = CBlog::GetByID($ID); if ($arBlog) { $DB->StartTransaction(); foreach ($arPerms as $key => $value) { $dbGroupPerms = CBlogUserGroupPerms::GetList(array(), array("BLOG_ID" => $ID, "USER_GROUP_ID" => $key, "PERMS_TYPE" => $permsType, "POST_ID" => 0), false, false, array("ID")); if ($arGroupPerms = $dbGroupPerms->Fetch()) { CBlogUserGroupPerms::Update($arGroupPerms["ID"], array("PERMS" => $value)); } else { CBlogUserGroupPerms::Add(array("BLOG_ID" => $arBlog["ID"], "USER_GROUP_ID" => $key, "PERMS_TYPE" => $permsType, "POST_ID" => false, "AUTOSET" => "N", "PERMS" => $value)); } } $DB->Commit(); } }