37 static $cachedFields =
array();
40 $postId = intval($postId);
43 !empty(
$params[
'USE_STATIC_CACHE'])
44 &&
$params[
'USE_STATIC_CACHE'] === true
50 $postFields =
array();
54 && isset($cachedFields[$postId])
57 $postFields = $cachedFields[$postId];
65 &&
Main\ModuleManager::isModuleInstalled(
'disk')
68 $select[] =
'UF_BLOG_POST_FILE';
72 Loader::includeModule(
'vote')
73 &&
Main\ModuleManager::isModuleInstalled(
'socialnetwork')
76 $select[] =
'UF_BLOG_POST_VOTE';
80 'filter' =>
array(
'=ID' => $postId),
83 if ($fields =
$res->fetch())
85 $postFields = $fields;
89 $postFields[
'DATE_CREATE'] = $postFields[
'DATE_CREATE']->toString();
93 $postFields[
'DATE_PUBLISH'] = $postFields[
'DATE_PUBLISH']->toString();
97 $cachedFields[$postId] = $postFields;
100 $postItem->setFields($postFields);
102 isset($postFields[
'ID'])
103 && intval($postFields[
'ID']) > 0
106 $postItem->setId(intval($postFields[
'ID']));
137 static $cache, $userAccessCodeCache;
139 if (!Loader::includeModule(
'socialnetwork'))
147 || empty($fields[
'ID'])
148 || intval($fields[
'ID']) <= 0
154 $cacheId = md5($fields[
'ID'].serialize(
$params));
156 if (!empty($cache[$cacheId]))
158 return $cache[$cacheId];
161 $currentUser =
false;
170 $permsAvailable = array_keys(
$GLOBALS[
"AR_BLOG_PERMS"]);
174 if (\CSocNetUser::isCurrentUserModuleAdmin())
176 $perms = $permsAvailable[
count($permsAvailable) - 1];
181 $perms = $permsAvailable[
count($permsAvailable) - 1];
185 isset($fields[
"AUTHOR_ID"])
186 && $fields[
"AUTHOR_ID"] ==
$userId
192 $openedWorkgroupsList = [];
193 $readByOpenSonetGroup =
false;
194 $alreadyFound =
false;
202 &&
Main\ModuleManager::isModuleInstalled(
'mail')
206 if (
Main\ModuleManager::isModuleInstalled(
'intranet'))
217 if($userFields =
$res->fetch())
219 if ($userFields[
"EXTERNAL_AUTH_ID"] ==
'email')
221 $alreadyFound =
true;
226 && isset($userFields[
"UF_DEPARTMENT"])
228 !is_array($userFields[
"UF_DEPARTMENT"])
229 || empty($userFields[
"UF_DEPARTMENT"])
230 || intval($userFields[
"UF_DEPARTMENT"][0]) <= 0
232 && Loader::includeModule(
'extranet')
233 && ($extranetSiteId = \CExtranet::getExtranetSiteID())
238 $postSiteList =
array();
239 $res = \CSocNetLog::getSite(intval(
$params[
'LOG_ID']));
240 while ($logSite =
$res->fetch())
242 $postSiteList[] = $logSite[
"LID"];
245 if (!in_array($extranetSiteId, $postSiteList))
247 $alreadyFound =
true;
253 $alreadyFound =
true;
260 $alreadyFound =
true;
265 $entityList =
array();
269 if (!empty($userAccessCodeCache[
$userId]))
271 $entityList = $userAccessCodeCache[
$userId];
275 $codeList = \CAccess::getUserCodesArray(
$userId);
276 foreach($codeList as
$code)
279 preg_match(
'/^DR([0-9]+)/',
$code, $match)
280 || preg_match(
'/^D([0-9]+)/',
$code, $match)
281 || preg_match(
'/^IU([0-9]+)/',
$code, $match)
286 elseif (preg_match(
'/^SG([0-9]+)_([A-Z])/',
$code, $match))
288 $entityList[
"SG"][$match[1]][$match[2]] = $match[2];
291 $userAccessCodeCache[
$userId] = $entityList;
294 foreach($permsList as
$key => $value)
296 foreach($value as
$id =>
$p)
313 if(in_array(
"G2",
$p))
327 if(!empty($entityList[
"SG"][
$id]))
329 foreach($entityList[
"SG"][
$id] as $sonetGroupId)
331 if(in_array(
"SG".
$id.
"_".$sonetGroupId,
$p))
340 if(
$key ==
"DR" && !empty($entityList[
"DR"]))
342 if(in_array(
"DR".
$id, $entityList[
"DR"]))
358 && !empty($permsList[
'SG'])
361 foreach ($permsList[
'SG'] as $sonetGroupPermList)
363 if (empty($sonetGroupPermList))
368 foreach ($sonetGroupPermList as $sonetGroupPerm)
374 $openedWorkgroupsList[] = (int)
$matches[1];
379 !empty($openedWorkgroupsList)
380 && Loader::includeModule(
'socialnetwork')
385 $readByOpenSonetGroup =
true;
390 isset(
$params[
'CHECK_FULL_PERMS'])
395 $sonetGroupIdList = Array();
396 if(!empty($permsList[
"SG"]))
398 foreach($permsList[
"SG"] as $groupId =>
$val)
400 if(!empty($entityList[
"SG"][$groupId]))
402 $sonetGroupIdList[] = $groupId;
407 if(!empty($sonetGroupIdList))
409 $operationList =
array(
"full_post",
"moderate_post",
"write_post",
"premoderate_post");
410 foreach($operationList as $operation)
417 $sonetGroupPermList = \CSocNetFeaturesPerms::getOperationPerm(
SONET_ENTITY_GROUP, $sonetGroupIdList,
"blog", $operation);
418 if(is_array($sonetGroupPermList))
420 foreach($sonetGroupPermList as $groupId => $role)
422 if (in_array($role, $entityList[
"SG"][$groupId]))
429 case "moderate_post":
435 case "premoderate_post":
450 'READ_BY_OSG' => $readByOpenSonetGroup,