12require_once(__DIR__.
"/descriptions.php");
26 if(!is_array(self::$arAuthServices))
28 self::$arAuthServices =
array();
30 foreach(
GetModuleEvents(
"socialservices",
"OnAuthServicesBuildList",
true) as $arEvent)
35 if(!is_array(
$res[0]))
39 foreach(
$res as $serv)
41 self::$arAuthServices[$serv[
"ID"]] = $serv;
51 if($this->userId ===
null && is_object(
$USER))
53 $this->userId =
$USER->GetID();
62 $arServices = unserialize(COption::GetOptionString(
"socialservices",
"auth_services".$suffix,
""), [
"allowed_classes" =>
false]);
63 if(is_array($arServices))
66 foreach($arServices as $serv=>$active)
92 if (in_array($zone, [
'ru',
'kz',
'by'],
true))
111 if (!isset(self::$arAuthServices[
$code]))
123 $serviceObject =
new $service[
"CLASS"];
124 if (is_callable([$serviceObject,
"CheckSettings"]))
126 if (!call_user_func_array([$serviceObject,
"CheckSettings"], []))
145 $isDisabled =
$service[
"DISABLED"] ??
null;
146 if(isset(
$service[
"__active"]) &&
$service[
"__active"] ===
true && $isDisabled !==
true)
149 if(is_callable(
array($cl,
"CheckSettings")))
150 if(!call_user_func_array(
array($cl,
"CheckSettings"),
array()))
153 if(is_callable(
array($cl,
"GetFormHtml")))
156 if(is_callable(
array($cl,
"GetOnClickJs")))
165 public function GetProfileUrl(
$service,
$uid, $arService =
false)
167 if(isset(self::$arAuthServices[
$service]))
169 if(!is_array($arService))
171 $dbSocservUser = UserTable::getList([
173 '=USER_ID' => $this->userId,
178 $arService = $dbSocservUser->fetch();
183 && self::$arAuthServices[
$service][
"__active"] ===
true
184 && self::$arAuthServices[
$service][
"DISABLED"] !==
true
188 $cl =
new self::$arAuthServices[
$service][
"CLASS"];
189 if(is_callable(
array($cl,
"getProfileUrl")))
191 return $cl->getProfileUrl(
$uid);
199 public function GetFriendsList(
$service, $limit, &$next)
201 if(isset(self::$arAuthServices[
$service]))
203 $dbSocservUser = UserTable::getList([
205 '=USER_ID' => $this->userId,
210 $arService = $dbSocservUser->fetch();
213 && self::$arAuthServices[
$service][
"__active"] ===
true
214 && self::$arAuthServices[
$service][
"DISABLED"] !==
true
218 $cl =
new self::$arAuthServices[
$service][
"CLASS"];
220 if(is_callable(
array($cl,
"setUser")))
222 $cl->setUser($this->userId);
225 if(is_callable(
array($cl,
"getFriendsList")))
227 $result = $cl->getFriendsList($limit, $next);
229 if($next ===
"__finish__")
245 foreach(self::$arAuthServices as
$service)
247 $serviceInstance =
new $service[
"CLASS"]();
248 if(is_callable(
array($serviceInstance,
"GetSettings")))
264 if (!isset(self::$arAuthServices[$serviceId]))
269 $service = self::$arAuthServices[$serviceId];
270 $serviceInstance =
new $service[
"CLASS"]();
271 if (is_callable([$serviceInstance,
"GetSettings"]))
273 $options = call_user_func_array([$serviceInstance,
"GetSettings"], []);
288 if($service_id ===
'Bitrix24OAuth')
293 if(isset(self::$arAuthServices[$service_id]))
295 $service = self::$arAuthServices[$service_id];
297 $isDisabled =
$service[
"DISABLED"] ??
null;
301 && $isDisabled !==
true
305 && defined(
'ADMIN_SECTION')
311 if(is_callable(
array($cl,
"Authorize")))
313 return call_user_func_array(
array($cl,
"Authorize"),
array
324 if(isset(self::$arAuthServices[$service_id]))
326 $service = self::$arAuthServices[$service_id];
328 return call_user_func_array(
array(
$service[
"CLASS"],
"GetError"),
array($error_code));
329 $error = ($error_code == 2) ?
"socserv_error_new_user" :
"socserv_controller_error";
337 if(!isset($_SESSION[
"UNIQUE_KEY"]))
342 return $_SESSION[
"UNIQUE_KEY"];
347 if(!isset($_SESSION[
"UNIQUE_KEY"]))
357 $arState = StateService::getInstance()->getPayload((
string)
$_REQUEST[
'state']);
358 if (is_array($arState))
360 if (!isset(
$_REQUEST[
'check_key']) && isset($arState[
'check_key']))
362 $_REQUEST[
'check_key'] = $arState[
'check_key'];
365 if (isset($arState[
'backurl']))
370 if (isset($arState[
'redirect_url']))
379 if (isset($arState[
'backurl']))
396 elseif(isset($arState[
'check_key']))
398 $checkKey = $arState[
'check_key'];
401 if(!empty($_SESSION[
"UNIQUE_KEY"]) && $checkKey && ($checkKey === $_SESSION[
"UNIQUE_KEY"]))
405 unset($_SESSION[
"UNIQUE_KEY"]);
416 $session[
"AUTH_SERVICE_ID"] = $service_id;
422 unset($session[
"AUTH_SERVICE_ID"]);
428 return $session[
"AUTH_SERVICE_ID"];
435 $redirect_url =
$APPLICATION->GetCurPageParam(
'',
array(
"auth_service_id",
"check_key"),
false);
441 $arUserOauth =
array();
449 'select' => [
"ID",
"EXTERNAL_AUTH_ID",
"OATOKEN"]
451 while($arOauth = $dbSocservUser->fetch())
453 if($arOauth[
"OATOKEN"] <>
'' && ($arOauth[
"EXTERNAL_AUTH_ID"] ==
"Twitter" || $arOauth[
"EXTERNAL_AUTH_ID"] ==
"Facebook"))
454 $arUserOauth[$arOauth[
"ID"]] = $arOauth[
"EXTERNAL_AUTH_ID"];
457 if(!empty($arUserOauth))
465 $socServUserId = intval($socServUserId);
466 if($providerName !=
'' && $socServUserId > 0)
468 switch($providerName)
471 $className =
"CSocServTwitter";
474 $className =
"CSocServFacebook";
476 case 'Odnoklassniki':
477 $className =
"CSocServOdnoklassniki";
498 if(isset($arUserTwit[
'statuses']) && !empty($arUserTwit[
'statuses']))
500 foreach($arUserTwit[
'statuses'] as $userTwit)
502 if(isset($userTwit[
"id_str"]))
503 $lastTwitId = ($userTwit[
"id_str"].
'/' > $lastTwitId.
'/') ? $userTwit[
"id_str"] : $lastTwitId;
506 $userId = $userTwit[
'kp_user_id'];
507 $rsUser = CUser::GetByID(
$userId);
508 $arUser = $rsUser->Fetch();
509 foreach(
GetModuleEvents(
"socialservices",
"OnPublishSocServMessage",
true) as $arEvent)
523 if(!CModule::IncludeModule(
"blog") || !CModule::IncludeModule(
"socialnetwork"))
526 if((
IsModuleInstalled(
'bitrix24') && defined(
'BX24_HOST_NAME')) && $userLogin !=
'')
528 if($arUserTwit = unserialize(base64_decode($userTwit), [
"allowed_classes" =>
false]))
529 $userTwit = $arUserTwit;
530 if($arSiteIdCheck = unserialize(base64_decode($arSiteId), [
"allowed_classes" =>
false]))
531 $arSiteId = $arSiteIdCheck;
532 $dbUser = CUser::GetByLogin($userLogin);
533 if($arUser = $dbUser->Fetch())
537 $arParams[
"USER_ID"] = $userTwit[
'kp_user_id'];
539 if(isset($arSiteId[$userTwit[
'kp_user_id']]))
540 $siteId = $arSiteId[$userTwit[
'kp_user_id']];
543 if(isset($userTwit[
'text']))
545 $arParams[
"GROUP_ID"] = COption::GetOptionString(
"socialnetwork",
"userbloggroup_id",
false,
$siteId);
546 $arParams[
"PATH_TO_BLOG"] = COption::GetOptionString(
"socialnetwork",
"userblogpost_page",
false,
$siteId);
547 $arParams[
"PATH_TO_SMILE"] = COption::GetOptionString(
"socialnetwork",
"smile_page",
false,
$siteId);
548 $arParams[
"NAME_TEMPLATE"] = COption::GetOptionString(
"main",
"TOOLTIP_NAME_TEMPLATE",
false,
$siteId);
552 $arFilterblg = Array(
567 $arBlog = $dbBl ->Fetch();
581 "=DATE_UPDATE" =>
$DB->CurrentTimeFunction(),
584 "ENABLE_COMMENTS" =>
"Y",
585 "ENABLE_IMG_VERIF" =>
"Y",
586 "EMAIL_NOTIFY" =>
"Y",
589 "ENABLE_TRACKBACK" =>
"N",
590 "SEARCH_INDEX" =>
"Y",
592 "=DATE_CREATE" =>
$DB->CurrentTimeFunction(),
593 "PERMS_POST" => Array(
596 "PERMS_COMMENT" => Array(
602 $rsUser = CUser::GetByID(
$arParams[
"USER_ID"]);
603 $arUser = $rsUser->Fetch();
604 if($arUser[
"NAME"].
"".$arUser[
"LAST_NAME"] ==
'')
609 $arFields[
"URL"] = str_replace(
" ",
"_", $arUser[
"LOGIN"]).
"-blog-".
SITE_ID;
612 $urlCheck = preg_replace(
"/[^a-zA-Z0-9_-]/is",
"",
$arFields[
"URL"]);
628 $featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm(
SONET_ENTITY_USER,
$arFields[
"OWNER_ID"],
"blog",
"view_post");
646 $DATE_PUBLISH = ConvertTimeStamp(time() + CTimeZone::GetOffset(),
"FULL");
652 "DETAIL_TEXT" => $userTwit[
'text'],
653 "DETAIL_TEXT_TYPE" =>
"text",
654 "DATE_PUBLISH" => $DATE_PUBLISH,
656 "PATH" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack(
$arParams[
"PATH_TO_POST"]),
array(
"post_id" =>
"#post_id#",
"user_id" => $arBlog[
"OWNER_ID"])),
657 "URL" => $arBlog[
"URL"],
658 "SOURCE_TYPE" =>
"twitter",
673 if(!empty($userTwit[
'user_perms']))
676 foreach($userTwit[
'user_perms'] as $v =>
$k)
678 if($v <>
'' && is_array(
$k) && !empty(
$k))
693 if($bOne && !empty($userTwit[
'user_perms'][
"SG"]))
698 foreach($userTwit[
'user_perms'][
"SG"] as $v)
706 $v = str_replace(
"SG",
"", $v);
717 if (!CSocNetFeaturesPerms::CanPerformOperation(
$arParams[
"USER_ID"],
SONET_ENTITY_GROUP, $oGrId,
"blog",
"write_post") && !CSocNetFeaturesPerms::CanPerformOperation(
$arParams[
"USER_ID"],
SONET_ENTITY_GROUP, $oGrId,
"blog",
"moderate_post") && !CSocNetFeaturesPerms::CanPerformOperation(
$arParams[
"USER_ID"],
SONET_ENTITY_GROUP, $oGrId,
"blog",
"full_post"))
733 $socnetRightsOld = Array(
"U" => Array());
736 preg_match_all(
"/\\[user\\s*=\\s*([^\\]]*)\\](.+?)\\[\\/user\\]/iesu", $userTwit[
'text'], $arMention);
747 $arParamsNotify = Array(
752 "PATH_TO_SMILE" =>
$arParams[
"PATH_TO_SMILE"],
753 "PATH_TO_POST" =>
$arParams[
"PATH_TO_POST"],
754 "SOCNET_GROUP_ID" =>
$arParams[
"GROUP_ID"],
756 "NAME_TEMPLATE" =>
$arParams[
"NAME_TEMPLATE"],
769 "URL" => CComponentEngine::MakePathFromTemplate(htmlspecialcharsBack(
$arParams[
"PATH_TO_POST"]),
array(
"post_id" => $newID,
"user_id" => $arBlog[
"OWNER_ID"])),
772 "TO_USER_ID" =>
array(),
773 "TO_SOCNET_RIGHTS" =>
$arFields[
"SOCNET_RIGHTS"],
774 "TO_SOCNET_RIGHTS_OLD" => $socnetRightsOld[
"U"],
776 if(!empty($arMentionOld))
777 $arFieldsIM[
"MENTION_ID_OLD"] = $arMentionOld[1];
778 if(!empty($arMention))
779 $arFieldsIM[
"MENTION_ID"] = $arMention[1];
784 if(!empty($_POST[
"SPERM"][
"SG"]))
786 foreach($_POST[
"SPERM"][
"SG"] as $v)
788 $group_id_tmp = mb_substr($v, 2);
789 if(intval($group_id_tmp) > 0)
790 CSocNetGroup::SetLastActivity(intval($group_id_tmp));
800 if(!
$oAuthManager->isActiveAuthService(
'Twitter') || !function_exists(
"hash_hmac"))
802 if(!CModule::IncludeModule(
"socialnetwork"))
803 return "CSocServAuthManager::GetTwitMessages(\"$lastTwitId\", $counter);";
817 if(intval($lastTwitId) <= 1 ||
$counter == 1)
818 $lastTwitId = COption::GetOptionString(
'socialservices',
'last_twit_id',
'1');
821 if(isset($socServUserArray[3]) && is_array($socServUserArray[3]))
822 $arSiteId = $socServUserArray[3];
824 $arUserTwit = $twitManager->GetUserMessage($socServUserArray, $lastTwitId);
825 if(is_array($arUserTwit))
827 if(isset($arUserTwit[
"statuses"]) && !empty($arUserTwit[
"statuses"]))
829 elseif((is_array($arUserTwit[
"search_metadata"]) && isset($arUserTwit[
"search_metadata"][
"max_id_str"])) && ($arUserTwit[
"search_metadata"][
"max_id_str"] <>
''))
830 $lastTwitId = $arUserTwit[
"search_metadata"][
"max_id_str"];
838 COption::SetOptionString(
'socialservices',
'last_twit_id', $lastTwitId);
841 $lastTwitId = preg_replace(
"|\D|",
'', $lastTwitId);
851 return "CSocServAuthManager::GetTwitMessages(\"$lastTwitId\", $counter);";
857 if(!
$oAuthManager->isActiveAuthService(
'Twitter') || !function_exists(
"hash_hmac"))
861 $cache_id =
'socserv_mes_user';
863 $cache_dir =
'/bx/socserv_mes_user';
865 $arSocServMessage =
array();
866 if($obCache->InitCache($ttl, $cache_id, $cache_dir))
867 $arSocServMessage = $obCache->GetVars();
872 while($arSocMessage = $dbSocServMessage->Fetch())
873 $arSocServMessage[] = $arSocMessage;
874 if(empty($arSocServMessage))
875 if($obCache->StartDataCache())
876 $obCache->EndDataCache($arSocServMessage);
878 if(is_array($arSocServMessage) && !empty($arSocServMessage))
879 foreach($arSocServMessage as $arSocMessage)
883 self::MarkMessageAsSent($arSocMessage[
'ID']);
885 return "CSocServAuthManager::SendSocialservicesMessages();";
888 private static function MarkMessageAsSent($id)
896 $cache_id =
'socserv_ar_user';
898 $cache_dir =
'/bx/socserv_ar_user';
900 if($obCache->InitCache($ttl, $cache_id, $cache_dir))
906 $arUserXmlId = $arOaToken = $arOaSecret = $arSiteId =
array();
909 '=EXTERNAL_AUTH_ID' => $authId,
910 "=USER.ACTIVE" =>
'Y'
912 'select' => [
"XML_ID",
"USER_ID",
"OATOKEN",
"OASECRET",
"SITE_ID"]
915 while($arSocUser = $dbSocUser->fetch())
917 $arUserXmlId[$arSocUser[
"USER_ID"]] = $arSocUser[
"XML_ID"];
918 $arOaToken[$arSocUser[
"USER_ID"]] = $arSocUser[
"OATOKEN"];
919 $arOaSecret[$arSocUser[
"USER_ID"]] = $arSocUser[
"OASECRET"];
920 $arSiteId[$arSocUser[
"USER_ID"]] = $arSocUser[
"SITE_ID"];
922 $arResult =
array($arUserXmlId, $arOaToken, $arOaSecret, $arSiteId);
923 if($obCache->StartDataCache())
937 $cache_id =
'socserv_user_option_'.$userId;
939 $cache_dir =
'/bx/socserv_user_option';
941 if($obCache->InitCache($ttl, $cache_id, $cache_dir))
945 $result = CUtil::JSEscape(CUserOptions::GetOption(
"socialservices",
$option,
"N",
$USER->GetID()));
946 if($obCache->StartDataCache())
947 $obCache->EndDataCache(
$result);
958 $dbUsersOld = CUser::GetList(
'ID',
'ASC',
array(
'XML_ID' => $socservUserFields[
'XML_ID'],
'EXTERNAL_AUTH_ID' => $socservUserFields[
'EXTERNAL_AUTH_ID'],
'ACTIVE' =>
'Y'),
array(
'NAV_PARAMS' =>
array(
"nTopCount" =>
"1")));
959 $socservUser = $dbUsersOld->Fetch();
962 return $socservUser[
"ID"];
971 $dbUsersNew = CUser::GetList(
'ID',
'ASC',
array(
'XML_ID' => $socservUserFields[
'XML_ID'],
'EXTERNAL_AUTH_ID' =>
'socservices',
'ACTIVE' =>
'Y'),
array(
'NAV_PARAMS' =>
array(
"nTopCount" =>
"1")));
972 $socservUser = $dbUsersNew->Fetch();
976 return $socservUser[
"ID"];
1002 if(is_object(
$USER) &&
$USER->IsAuthorized())
1004 $this->userId =
$USER->GetID();
1015 return 'https://www.bitrix24.com/controller';
1081 '=EXTERNAL_AUTH_ID' =>
$arFields[
"EXTERNAL_AUTH_ID"],
1085 if($dbCheck->fetch())
1100 $arFields[
"PERSONAL_PHOTO"][
"MODULE_ID"] =
"socialservices";
1101 CFile::SaveForDB(
$arFields,
"PERSONAL_PHOTO",
"socialservices");
1118 foreach(
GetModuleEvents(
"socialservices",
"OnBeforeSocServUserUpdate",
true) as $arEvent)
1128 if (
$arFields[
"PERSONAL_PHOTO"][
"name"] ==
'' &&
$arFields[
"PERSONAL_PHOTO"][
"del"] ==
'')
1134 $rsPersonalPhoto =
$DB->Query(
"SELECT PERSONAL_PHOTO FROM b_socialservices_user WHERE ID=".$id);
1135 if ($personalPhoto = $rsPersonalPhoto->Fetch())
1137 $arFields[
"PERSONAL_PHOTO"][
"old_file"] = $personalPhoto[
"PERSONAL_PHOTO"];
1142 if(!self::CheckFields(
'UPDATE',
$arFields))
1148 if (static::hasEncryptedFields(array_keys($arDbFields)))
1149 static::encryptFields($arDbFields);
1151 $strUpdate =
$DB->PrepareUpdate(
"b_socialservices_user", $arDbFields);
1153 $strSql =
"UPDATE b_socialservices_user SET ".$strUpdate.
" WHERE ID = ".$id.
" ";
1154 $DB->Query($strSql);
1156 $cache_id =
'socserv_ar_user';
1158 $cache_dir =
'/bx/socserv_ar_user';
1159 $obCache->
Clean($cache_id, $cache_dir);
1162 foreach(
GetModuleEvents(
"socialservices",
"OnAfterSocServUserUpdate",
true) as $arEvent)
1174 $rsUser =
$DB->Query(
"SELECT ID, PERSONAL_PHOTO FROM b_socialservices_user WHERE ID=".$id);
1175 $arUser = $rsUser->Fetch();
1181 foreach (
GetModuleEvents(
"socialservices",
"OnBeforeSocServUserDelete",
true) as $arEvent)
1186 CFile::Delete($arUser[
"PERSONAL_PHOTO"]);
1188 $DB->Query(
"DELETE FROM b_socialservices_user WHERE ID = ".$id.
" ",
true);
1190 $cache_id =
'socserv_ar_user';
1192 $cache_dir =
'/bx/socserv_ar_user';
1193 $obCache->
Clean($cache_id, $cache_dir);
1206 $rsUsers =
$DB->Query(
"SELECT ID FROM b_socialservices_user WHERE USER_ID = ".$id.
" ",
true);
1207 while ($arUserLink = $rsUsers->Fetch())
1218 if(COption::GetOptionString(
"socialservices",
"allow_send_user_activity",
"Y") !=
'Y')
1222 $eventCounter = $taskCounter = 0;
1223 if(CModule::IncludeModule(
'intranet'))
1225 $arIntranetData = CIntranetPlanner::getData(
SITE_ID,
true);
1227 if(isset($arIntranetData[
'DATA']))
1229 $arData = $arIntranetData[
'DATA'];
1231 if(isset($arData[
'EVENTS']) && is_array($arData[
'EVENTS']))
1233 $eventCounter =
count($arData[
'EVENTS']);
1235 if(isset($arData[
'TASKS']) && is_array($arData[
'TASKS']))
1237 $taskCounter =
count($arData[
'TASKS']);
1243 $enabledSendMessage = CUserOptions::GetOption(
"socialservices",
"user_socserv_enable",
"N",
$arResult[
'USER_ID']);
1244 if($enabledSendMessage ==
'Y')
1246 $enabledEndDaySend = CUserOptions::GetOption(
"socialservices",
"user_socserv_end_day",
"N",
$arResult[
'USER_ID']);
1247 if($enabledEndDaySend ==
'Y')
1249 $arResult[
'MESSAGE'] = str_replace(
'#event#', $eventCounter, str_replace(
'#task#', $taskCounter, CUserOptions::GetOption(
"socialservices",
"user_socserv_end_text",
GetMessage(
"JS_CORE_SS_WORKDAY_START"),
$arResult[
'USER_ID'])));
1251 $socServArray = CUserOptions::GetOption(
"socialservices",
"user_socserv_array",
"a:0:{}",
$arResult[
'USER_ID']);
1254 $socServArray =
"a:0:{}";
1257 $arSocServUser[
'SOCSERVARRAY'] = unserialize($socServArray, [
"allowed_classes" =>
false]);
1259 if(is_array($arSocServUser[
'SOCSERVARRAY']) &&
count($arSocServUser[
'SOCSERVARRAY']) > 0)
1261 foreach($arSocServUser[
'SOCSERVARRAY'] as $id => $providerName)
1275 if(COption::GetOptionString(
"socialservices",
"allow_send_user_activity",
"Y") !=
'Y')
1282 $enabledSendMessage = CUserOptions::GetOption(
"socialservices",
"user_socserv_enable",
"N",
$arResult[
'USER_ID']);
1283 if($enabledSendMessage ==
'Y')
1285 $enabledEndDaySend = CUserOptions::GetOption(
"socialservices",
"user_socserv_start_day",
"N",
$arResult[
'USER_ID']);
1286 if($enabledEndDaySend ==
'Y')
1288 $arResult[
'MESSAGE'] = CUserOptions::GetOption(
"socialservices",
"user_socserv_start_text",
GetMessage(
"JS_CORE_SS_WORKDAY_START"),
$arResult[
'USER_ID']);
1290 $socServArray = CUserOptions::GetOption(
"socialservices",
"user_socserv_array",
"a:0:{}",
$arResult[
'USER_ID']);
1293 $socServArray =
"a:0:{}";
1296 $arSocServUser[
'SOCSERVARRAY'] = unserialize($socServArray, [
"allowed_classes" =>
false]);
1298 if(is_array($arSocServUser[
'SOCSERVARRAY']) &&
count($arSocServUser[
'SOCSERVARRAY']) > 0)
1300 foreach($arSocServUser[
'SOCSERVARRAY'] as $id => $providerName)
1315 if(is_array($arSettings))
1317 foreach($arSettings as $sett)
1318 if(is_array($sett) && !array_key_exists(
"note", $sett))
1319 if(self::GetOption($sett[0]) ==
'')
1327 if(preg_match(
"|^http[s]?://|i", $photoURI))
1335 $arUseOnSites = unserialize(COption::GetOptionString(
"socialservices",
"use_on_sites",
""), [
"allowed_classes" =>
false]);
1341 if(self::$settingsSuffix ===
false)
1344 return COption::GetOptionString(
"socialservices", $opt.self::$settingsSuffix);
1349 if(self::$settingsSuffix ===
false)
1352 return COption::SetOptionString(
"socialservices", $opt.self::$settingsSuffix, $value);
1357 return explode(
',', (\COption::GetOptionString(
"socialservices",
"group_deny_auth",
"")));
1362 return explode(
',', (\COption::GetOptionString(
"socialservices",
"group_deny_split",
"")));
1367 \COption::SetOptionString(
'socialservices',
'group_deny_auth', is_array($value) ? implode(
',', $value) :
'');
1372 \COption::SetOptionString(
'socialservices',
'group_deny_split', is_array($value) ? implode(
',', $value) :
'');
1381 return $USER->IsAuthorized()
1382 &&
count(array_intersect(self::getGroupsDenySplit(),
$USER->GetUserGroupArray())) > 0;
1386 return count(array_intersect(self::getGroupsDenySplit(),
$arGroups)) > 0;
1392 return count(array_intersect(self::getGroupsDenyAuth(),
$arGroups)) > 0;
1399 foreach(
GetModuleEvents(
"socialservices",
"OnBeforeSocServUserAuthorize",
true) as $arEvent)
1408 if(!isset($socservUserFields[
'XML_ID']) || $socservUserFields[
'XML_ID'] ==
'')
1413 if(!isset($socservUserFields[
'EXTERNAL_AUTH_ID']) || $socservUserFields[
'EXTERNAL_AUTH_ID'] ==
'')
1418 $oauthKeys =
array();
1419 if(isset($socservUserFields[
"OATOKEN"]))
1421 $oauthKeys[
"OATOKEN"] = $socservUserFields[
"OATOKEN"];
1423 if(isset($socservUserFields[
"REFRESH_TOKEN"]) && $socservUserFields[
"REFRESH_TOKEN"] !==
'')
1425 $oauthKeys[
"REFRESH_TOKEN"] = $socservUserFields[
"REFRESH_TOKEN"];
1427 if(isset($socservUserFields[
"OATOKEN_EXPIRES"]))
1429 $oauthKeys[
"OATOKEN_EXPIRES"] = $socservUserFields[
"OATOKEN_EXPIRES"];
1436 '=XML_ID'=>$socservUserFields[
'XML_ID'],
1437 '=EXTERNAL_AUTH_ID'=>$socservUserFields[
'EXTERNAL_AUTH_ID']
1439 'select' =>
array(
"ID",
"USER_ID",
"ACTIVE" =>
"USER.ACTIVE",
"PERSONAL_PHOTO"),
1441 $socservUser = $dbSocUser->fetch();
1443 if(
$USER->IsAuthorized())
1445 if(!$this->checkRestrictions || !self::isSplitDenied())
1449 $socservUserFields[
"USER_ID"] =
$USER->GetID();
1455 $id = $socservUser[
'ID'];
1458 if($socservUser[
'USER_ID'] !=
$USER->GetID())
1460 if($this->allowChangeOwner)
1464 '=USER_ID' =>
$USER->GetID(),
1465 '=EXTERNAL_AUTH_ID' => $socservUserFields[
'EXTERNAL_AUTH_ID']
1467 'select' =>
array(
"ID")
1469 if($dbSocUser->fetch())
1475 $oauthKeys[
'USER_ID'] =
$USER->GetID();
1476 $oauthKeys[
'CAN_DELETE'] =
'Y';
1486 if($_SESSION[
"OAUTH_DATA"] && is_array($_SESSION[
"OAUTH_DATA"]))
1488 $oauthKeys = array_merge($oauthKeys, $_SESSION[
'OAUTH_DATA']);
1489 unset($_SESSION[
"OAUTH_DATA"]);
1506 $entryId = $socservUser[
'ID'];
1507 if($socservUser[
"ACTIVE"] ===
'Y')
1509 $USER_ID = $socservUser[
"USER_ID"];
1517 if($eventResult > 0)
1519 $USER_ID = $eventResult;
1528 $socservUserFields[
'PASSWORD'] =
randString(30);
1529 $socservUserFields[
'LID'] =
SITE_ID;
1531 $def_group = Option::get(
'main',
'new_user_registration_def_group',
'');
1532 if($def_group <>
'')
1534 $socservUserFields[
'GROUP_ID'] = explode(
',', $def_group);
1539 $this->checkRestrictions
1540 && !empty($socservUserFields[
'GROUP_ID'])
1541 && self::isAuthDenied($socservUserFields[
'GROUP_ID'])
1548 $userFields = $socservUserFields;
1549 $userFields[
"EXTERNAL_AUTH_ID"] =
"socservices";
1551 if(isset($userFields[
'PERSONAL_PHOTO']) && is_array($userFields[
'PERSONAL_PHOTO']))
1553 $res = CFile::CheckImageFile($userFields[
"PERSONAL_PHOTO"]);
1556 unset($userFields[
'PERSONAL_PHOTO']);
1560 $USER_ID =
$USER->Add($userFields);
1567 elseif(Option::get(
"main",
"new_user_registration",
"N") ==
"N")
1572 $socservUserFields[
'CAN_DELETE'] =
'N';
1576 if(isset($_SESSION[
"OAUTH_DATA"]) && is_array($_SESSION[
"OAUTH_DATA"]))
1578 foreach ($_SESSION[
'OAUTH_DATA'] as
$key => $value)
1580 $socservUserFields[
$key] = $value;
1582 unset($_SESSION[
"OAUTH_DATA"]);
1588 if($this->checkRestrictions && self::isAuthDenied(
$arGroups))
1595 UserTable::update($entryId, UserTable::filterFields($socservUserFields, $socservUser));
1599 $socservUserFields[
'USER_ID'] = $USER_ID;
1608 $USER->AuthorizeWithOtp($USER_ID, $bSave);
1610 if(
$USER->IsJustAuthorized())
1612 foreach(
GetModuleEvents(
"socialservices",
"OnUserLoginSocserv",
true) as $arEvent)
1636 '=EXTERNAL_AUTH_ID' =>
'socservices',
1641 if (isset($userRow[
'ID']))
1643 return $userRow[
'ID'];
1647 'select' => [
'USER_ID'],
1649 '=USER.ACTIVE' =>
'Y',
1654 return $socialserviceRow[
'USER_ID'] ?? 0;
1659 $this->allowChangeOwner = (bool)$value;
1678 $cryptoField = new \Bitrix\Socialservices\EncryptedToken\CryptoField(
'OATOKEN');
1680 if (array_key_exists(
'OATOKEN',
$arFields))
1683 if (array_key_exists(
'OASECRET',
$arFields))
1686 if (array_key_exists(
'REFRESH_TOKEN',
$arFields))
1692 return COption::GetOptionString(
"main",
"new_user_registration",
"N") ===
"Y"
1693 && COption::GetOptionString(
"socialservices",
"allow_registration",
"Y") ===
"Y";
1699 'mode' => self::MOBILE_MODE,
1703 $httpResponse->addHeader(
'Location',
'bitrix24://?' .
$params);
1711 $location = ($mode === self::OPENER_MODE) ?
'if(window.opener) window.opener.location = \''.
$url.
'\'; window.close();
' : ' window.location = \
''.$url.
'\';
';
1716 $location = ($mode === self::OPENER_MODE) ? 'if(window.opener) window.opener.location = window.opener.location.href + \
''.$url.
'\'; window.close();
' : ' window.location = window.location.href + \
''.$url.
'\';
';
1729//some repetitive functionality
1732 const OAUTH_PACK_PARAM = "oauth_proxy_params";
1733 private static $oAuthParams = array("redirect_uri", "client_id", "scope", "response_type", "state");
1735 public static function GetCurUrl($addParam="", $removeParam=false, $checkOAuthProxy=true)
1737 global $APPLICATION;
1739 $arRemove = array("logout", "auth_service_error", "auth_service_id", "MUL_MODE");
1741 if($removeParam !== false)
1743 $arRemove = array_merge($arRemove, $removeParam);
1746 if($checkOAuthProxy !== false)
1749 foreach(self::$oAuthParams as $param)
1751 if (isset($_GET[$param]) && (is_string($_GET[$param]) || is_numeric($_GET[$param])))
1753 $arRemove[] = $param;
1754 $proxyString .= ($proxyString == "" ? "" : "&").urlencode($param)."=".urlencode($_GET[$param]);
1758 if($proxyString != "")
1760 $addParam .= ($addParam == "" ? "" : "&").self::packOAuthProxyString($proxyString);
1763 return \CHTTP::URN2URI($APPLICATION->GetCurPageParam($addParam, $arRemove));
1769 public static function ServerName($forceHttps = false)
1771 $request = Context::getCurrent()->getRequest();
1773 $protocol = ($forceHttps || $request->isHttps()) ? "https" : "http";
1774 $serverName = $request->getHttpHost();
1777 if($protocol == "https")
1779 $serverName = str_replace(":443", "", $serverName);
1787 return self::OAUTH_PACK_PARAM.
"=".urlencode(base64_encode($proxyString));
1792 return isset(
$_REQUEST[self::OAUTH_PACK_PARAM]) ? self::OAUTH_PACK_PARAM.
"=".urlencode(
$_REQUEST[self::OAUTH_PACK_PARAM]) :
'';
1797 if(isset(
$_REQUEST[self::OAUTH_PACK_PARAM]) &&
$_REQUEST[self::OAUTH_PACK_PARAM] <>
'')
1799 $proxyString = base64_decode(
$_REQUEST[self::OAUTH_PACK_PARAM]);
1800 if($proxyString <>
'')
1803 parse_str($proxyString, $arVars);
1804 foreach(self::$oAuthParams as $param)
1806 if(isset($arVars[$param]))
1808 $_GET[$param] =
$_REQUEST[$param] = $arVars[$param];
1813 unset(
$_REQUEST[self::OAUTH_PACK_PARAM]);
1814 unset($_GET[self::OAUTH_PACK_PARAM]);
1832 $arFields[
"INSERT_DATE"] = ConvertTimeStamp(time(),
"FULL");
1840 if($id<=0 || !self::CheckFields(
'UPDATE',
$arFields))
1842 $strUpdate =
$DB->PrepareUpdate(
"b_socialservices_message",
$arFields);
1843 $strSql =
"UPDATE b_socialservices_message SET ".$strUpdate.
" WHERE ID = ".$id.
" ";
1844 $DB->Query($strSql);
1845 $cache_id =
'socserv_mes_user';
1847 $cache_dir =
'/bx/socserv_mes_user';
1848 $obCache->
Clean($cache_id, $cache_dir);
1859 $rsUser =
$DB->Query(
"SELECT ID FROM b_socialservices_message WHERE ID=".$id);
1860 $arUser = $rsUser->Fetch();
1864 $DB->Query(
"DELETE FROM b_socialservices_message WHERE ID = ".$id.
" ",
true);
1865 $cache_id =
'socserv_mes_user';
1867 $cache_dir =
'/bx/socserv_mes_user';
1868 $obCache->
Clean($cache_id, $cache_dir);
const BLOG_PUBLISH_STATUS_READY
const BLOG_PUBLISH_STATUS_PUBLISH
if(! $messageFields||!isset($messageFields['message_id'])||!isset($messageFields['status'])||!CModule::IncludeModule("messageservice")) $messageId
static getRow(array $parameters)
static getList(array $parameters=array())
static cryptoAvailable($key='')
static sortByColumn(array &$array, $columns, $callbacks='', $defaultValueIfNotSetValue=null, $preserveKeys=false)
static update($primary, array $data)
static GetByOwnerID($ID, $arGroup=Array())
static GetByUrl($BLOG_URL, $arGroup=Array())
static Notify($arPost, $arBlog, $arParams)
static NotifyIm($arParams)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static AddSocnetRead($ID)
Clean($uniq_str, $initdir=false, $basedir="cache")
static CheckFields($action, &$arFields)
static Update($id, $arFields)
AuthorizeUser($socservUserFields, $bSave=false)
static isSplitDenied($arGroups=null)
static setGroupsDenyAuth($value)
isAllowedRegisterNewUser()
static OnAfterTMReportDailyAdd()
static OnAfterTMDayStart()
setAllowChangeOwner($value)
static hasEncryptedFields($arFields)
static setGroupsDenySplit($value)
onAfterWebAuth($addParams, $mode, $url)
static getGroupsDenySplit()
static getControllerUrl()
static OnFindExternalUser($login)
static encryptFields(&$arFields)
__construct($userId=null)
static getGroupsDenyAuth()
static CheckFields($action, &$arFields)
static isAuthDenied($arGroups)
static Update($id, $arFields)
static SetOption($opt, $value)
static SendSocialservicesMessages()
GetError($service_id, $error_code)
static CheckUniqueKey($bUnset=true)
GetSettingByServiceId(string $serviceId)
static listServicesBlockedByZone(string $zone)
static checkOldUser(&$socservUserFields)
static PostIntoBuzz($arUserTwit, $lastTwitId, $arSiteId=array())
static GetCachedUserOption($option)
static GetTwitMessages($lastTwitId="1", $counter=1)
Authorize($service_id, $arParams=array())
static SendUserMessage($socServUserId, $providerName, $message, $messageId)
static GetAuthorizedServiceId()
static checkAbandonedUser(&$socservUserFields)
GetActiveAuthServices($arParams)
__construct($userId=null)
static SetAuthorizedServiceId($service_id)
static UnsetAuthorizedServiceId()
static GetUserArray($authId)
static PostIntoBuzzAsBlog($userTwit, $arSiteId=array(), $userLogin='')
static AppyUserSettings($suffix)
static GetUserArrayForSendMessages($userId)
isActiveAuthService(string $code)
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static getOAuthProxyString()
static checkOAuthProxyParams()
static packOAuthProxyString($proxyString)
static killAllTags($text)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
CheckSerializedData($str, $max_depth=200)
ExecuteModuleEventEx($arEvent, $arParams=[])
IsModuleInstalled($module_id)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
BXClearCache($full=false, $initdir='')
randString($pass_len=10, $pass_chars=false)
bitrix_sessid_get($varname='sessid')
LocalRedirect($url, $skip_security_check=false, $status="302 Found")
$GLOBALS['____1690880296']
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
const SONET_RELATIONS_TYPE_ALL
const SOCSERV_REGISTRATION_DENY
const SOCSERV_AUTHORISATION_ERROR
while($arSite=$dbSites->Fetch()) $oAuthManager