%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/socialnetwork/classes/general/ |
| Current File : //home/bitrix/www/bitrix/modules/socialnetwork/classes/general/authproviders.php |
<?
IncludeModuleLangFile(__FILE__);
class CSocNetGroupAuthProvider extends CAuthProvider implements IProviderInterface
{
public function __construct()
{
$this->id = 'socnetgroup';
}
public function UpdateCodes($USER_ID)
{
global $DB;
$USER_ID = intval($USER_ID);
$DB->Query("
INSERT INTO b_user_access (USER_ID, PROVIDER_ID, ACCESS_CODE)
SELECT ".$USER_ID.", '".$DB->ForSQL($this->id)."', ".$DB->Concat("'SG'", ($DB->type == "MSSQL" ? "CAST(U2G.GROUP_ID as varchar(17))": "U2G.GROUP_ID"), "'_'", "U2G.ROLE")."
FROM b_sonet_user2group U2G
WHERE U2G.USER_ID=".$USER_ID." AND U2G.ROLE IN ('A','E','K')
UNION
SELECT ".$USER_ID.", '".$DB->ForSQL($this->id)."', ".$DB->Concat("'SG'", ($DB->type == "MSSQL" ? "CAST(U2G.GROUP_ID as varchar(17))": "U2G.GROUP_ID"), "'_K'")."
FROM b_sonet_user2group U2G
WHERE U2G.USER_ID=".$USER_ID." AND U2G.ROLE IN ('A','E')
UNION
SELECT ".$USER_ID.", '".$DB->ForSQL($this->id)."', ".$DB->Concat("'SG'", ($DB->type == "MSSQL" ? "CAST(U2G.GROUP_ID as varchar(17))": "U2G.GROUP_ID"), "'_E'")."
FROM b_sonet_user2group U2G
WHERE U2G.USER_ID=".$USER_ID." AND U2G.ROLE IN ('A')
");
}
public function AjaxRequest($arParams=false)
{
global $USER;
$search = urldecode($_REQUEST['search']);
$elements = '';
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 4,
);
$arFilter = array("%NAME" => $search, "ACTIVE"=>"Y");
if ($arParams["SITE_ID"] <> '')
{
$arFilter["SITE_ID"] = $arParams["SITE_ID"];
}
if (!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"], ($arParams["SITE_ID"] <> '' ? true : false)))
{
$arFilter["CHECK_PERMISSIONS"] = $USER->GetID();
}
$rsGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), $arFilter);
$rsGroups->NavStart(30);
while ($arGroup = $rsGroups->NavNext(false))
{
$arItem = Array(
"ID" => "SG".$arGroup['ID'],
"AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
"NAME" => $arGroup['NAME'],
"DESC" => $arGroup['DESCRIPTION'],
"CHECKBOX" => array(
"#ID#_A" => GetMessage("authprov_sg_a"),
"#ID#_E" => GetMessage("authprov_sg_e"),
"#ID#_K" => GetMessage("authprov_sg_k"),
),
);
if($arGroup["IMAGE_ID"])
{
$imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]);
if ($imageFile !== false)
{
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => 30, "height" => 30),
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
$arItem["AVATAR"] = $arFileTmp["src"];
}
}
$elements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
return $elements;
}
public function GetFormHtml($arParams=false)
{
global $USER;
if (
is_array($arParams["socnetgroups"])
&& $arParams["socnetgroups"]["disabled"] == "true"
)
{
return false;
}
$currElements = '';
if (
is_array($arParams[$this->id])
&& ($group_id = intval($arParams[$this->id]["group_id"])) > 0
)
{
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 4,
);
$arFilter = array(
"ID" => $group_id,
"ACTIVE" => "Y"
);
if (!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"]))
{
$arFilter["CHECK_PERMISSIONS"] = $USER->GetID();
}
$rsGroups = CSocNetGroup::GetList(array(), $arFilter);
if($arGroup = $rsGroups->Fetch())
{
$arItem = Array(
"ID" => "SG".$arGroup['ID'],
"AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
"NAME" => $arGroup['NAME'],
"DESC" => $arGroup['DESCRIPTION'],
"OPEN" => "Y",
"CHECKBOX" => array(
"#ID#_A" => GetMessage("authprov_sg_a"),
"#ID#_E" => GetMessage("authprov_sg_e"),
"#ID#_K" => GetMessage("authprov_sg_k"),
),
);
if($arGroup["IMAGE_ID"])
{
$imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]);
if ($imageFile !== false)
{
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => 30, "height" => 30),
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
$arItem["AVATAR"] = $arFileTmp["src"];
}
}
$currElements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
}
$elements = "";
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 3,
);
$arLRU = CAccess::GetLastRecentlyUsed($this->id);
if (!empty($arLRU))
{
$arLast = array();
$arLastID = array();
$arElements = array();
foreach($arLRU as $val)
{
if (preg_match('/^SG([0-9]+)_([A-Z])/', $val, $match))
{
$arLast[$match[2]][$match[1]] = $match[1];
$arLastID[$match[1]] = $match[1];
}
}
if (!empty($arLastID))
{
$arFilter = array(
"ID" => $arLastID,
"ACTIVE" => "Y"
);
if($arParams["SITE_ID"] <> '')
{
$arFilter["SITE_ID"] = $arParams["SITE_ID"];
}
if(!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"]))
{
$arFilter["CHECK_PERMISSIONS"] = $USER->GetID();
}
$rsGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), $arFilter);
while($arGroup = $rsGroups->Fetch())
{
$arItem = Array(
"ID" => $arGroup['ID'],
"AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
"NAME" => $arGroup['NAME'],
"DESC" => $arGroup['DESCRIPTION'],
);
if($arGroup["IMAGE_ID"])
{
$imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]);
if ($imageFile !== false)
{
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => 30, "height" => 30),
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
$arItem["AVATAR"] = $arFileTmp["src"];
}
}
$arElements[$arItem['ID']] = $arItem;
}
foreach($arLRU as $val)
{
if (preg_match('/^SG([0-9]+)_([A-Z])/', $val, $match))
{
if (isset($arElements[$match[1]]))
{
$arItem = $arElements[$match[1]];
if ($match[2] == 'K')
{
$arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_K';
$arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_k");
}
else if ($match[2] == 'E')
{
$arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_E';
$arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_e");
}
else if ($match[2] == 'A')
{
$arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_A';
$arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_a");
}
$elements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
}
}
}
}
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 4,
);
$arFilter = array(
"USER_ID" => $USER->GetID(),
"<=ROLE" => SONET_ROLES_USER,
"GROUP_ACTIVE" => "Y"
);
if($arParams["SITE_ID"] <> '')
{
$arFilter["GROUP_SITE_ID"] = $arParams["SITE_ID"];
}
$rsGroups = CSocNetUserToGroup::GetList(
array("GROUP_NAME" => "ASC"),
$arFilter,
false,
false,
array("ID", "GROUP_ID", "GROUP_NAME", "GROUP_DESCRIPTION", "GROUP_IMAGE_ID")
);
$myElements = '';
while($arGroup = $rsGroups->Fetch())
{
$arItem = Array(
"ID" => "SG".$arGroup['GROUP_ID'],
"AVATAR" => $arGroup['GROUP_IMAGE_ID'],
"NAME" => $arGroup['GROUP_NAME'],
"DESC" => $arGroup['GROUP_DESCRIPTION'],
"CHECKBOX" => array(
"#ID#_A" => GetMessage("authprov_sg_a"),
"#ID#_E" => GetMessage("authprov_sg_e"),
"#ID#_K" => GetMessage("authprov_sg_k"),
),
);
if($arGroup["GROUP_IMAGE_ID"])
{
$imageFile = CFile::GetFileArray($arGroup["GROUP_IMAGE_ID"]);
if ($imageFile !== false)
{
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => 30, "height" => 30),
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
$arItem["AVATAR"] = $arFileTmp["src"];
}
}
$myElements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
$arPanels = array();
if($currElements <> '')
{
$arPanels[] = array(
"NAME" => GetMessage("authprov_sg_current"),
"ELEMENTS" => $currElements,
);
}
$arPanels[] = array(
"NAME" => GetMessage("authprov_sg_panel_last"),
"ELEMENTS" => $elements,
);
$arPanels[] = array(
"NAME" => GetMessage("authprov_sg_panel_my_group"),
"ELEMENTS" => $myElements,
);
$arPanels[] = array(
"NAME" => GetMessage("authprov_sg_panel_search"),
"ELEMENTS" => CFinder::GetFinderItem(Array("TYPE" => "text"), Array("TEXT" => GetMessage("authprov_sg_panel_search_text"))),
"SEARCH" => "Y",
);
$html = CFinder::GetFinderAppearance($arFinderParams, $arPanels);
return array("HTML"=>$html, "SELECTED"=>($currElements <> ''));
}
public function GetNames($arCodes)
{
$arID = array();
foreach ($arCodes as $code)
{
if (preg_match('/^SG([0-9]+)_[A-Z]$/', $code, $match))
{
$arID[] = $match[1];
}
}
if(!empty($arID))
{
$arResult = array();
$rsGroups = CSocNetGroup::GetList(array(), array("ID"=>$arID));
while($arGroup = $rsGroups->Fetch())
{
$arResult["SG".$arGroup["ID"]."_A"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name"=>$arGroup["NAME"].": ".GetMessage("authprov_sg_a"));
$arResult["SG".$arGroup["ID"]."_E"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name"=>$arGroup["NAME"].": ".GetMessage("authprov_sg_e"));
$arResult["SG".$arGroup["ID"]."_K"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name"=>$arGroup["NAME"].": ".GetMessage("authprov_sg_k"));
}
return $arResult;
}
return false;
}
public static function GetProviders()
{
return array(
array(
"ID" => "socnetgroup",
"NAME" => GetMessage("authprov_sg_name"),
"PROVIDER_NAME" => GetMessage("authprov_sg_socnet_group"),
"SORT" => 400,
"CLASS" => "CSocNetGroupAuthProvider",
),
array(
"ID" => "socnetuser",
"CLASS" => "CSocNetUserAuthProvider",
),
);
}
}
class CSocNetUserAuthProvider extends CAuthProvider
{
public function __construct()
{
$this->id = 'socnetuser';
}
public function UpdateCodes($USER_ID)
{
global $DB;
if(CSocNetUser::IsFriendsAllowed())
{
$USER_ID = intval($USER_ID);
$dbFriends = CSocNetUserRelations::GetRelatedUsers($USER_ID, SONET_RELATIONS_FRIEND);
while ($arFriends = $dbFriends->Fetch())
{
$friendID = (($USER_ID == $arFriends["FIRST_USER_ID"]) ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"]);
$DB->Query("INSERT INTO b_user_access (USER_ID, PROVIDER_ID, ACCESS_CODE) VALUES
(".$friendID.", '".$DB->ForSQL($this->id)."', 'SU".$USER_ID."_".SONET_RELATIONS_TYPE_FRIENDS."')");
}
}
}
}
?>