PC Magazine/RE - Журнал PC Magazine/RE №09/2009

Тут можно читать онлайн PC Magazine/RE - Журнал PC Magazine/RE №09/2009 - бесплатно ознакомительный отрывок. Жанр: Циклы, издательство ЗАО «СК Пресс»4cb82042-6c02-102c-b0cc-edc40df1930e, год 2009. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Журнал PC Magazine/RE №09/2009
  • Автор:
  • Жанр:
  • Издательство:
    ЗАО «СК Пресс»4cb82042-6c02-102c-b0cc-edc40df1930e
  • Год:
    2009
  • Город:
    Москва
  • ISBN:
    нет данных
  • Рейтинг:
    3.8/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

PC Magazine/RE - Журнал PC Magazine/RE №09/2009 краткое содержание

Журнал PC Magazine/RE №09/2009 - описание и краткое содержание, автор PC Magazine/RE, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Главный материал сентябрьского номера, обзор «Коммуникаторы: парад тенденций», адресован ценителям «подлинной мобильности».

«Массовые опросы, фокус-группы, анализ пользовательских предпочтений… Однако сделать аппарат, на который с готовностью набросилось бы большинство потенциальных пользователей, невозможно в принципе. Точно так же никакая реклама и пропаганда не спровоцируют массовый спрос там, где его не было. Предсказывать, где находится точка компромисса, можно долго и безуспешно. А вот отслеживать, кто и на каком направлении ищет компромисс, мы умеем.»


Также в номере:

Игры по сети WiFi: настройка маршрутизатора

В вашем доме завелся маршрутизатор. Более того, он здесь нужен. В стандартном режиме все хорошо, но… Если спросить любого сисадмина, как настроить маршрутизатор, он наверняка скажет: «Очень просто!». И (если в настроении) закатит лекцию часа на полтора с лирическими отступлениями и историями из жизни. А вам всего-то нужно было выяснить… Вот для тех, кому «для полного счастья» требуется узнать о маршрутизаторе какую-то сущую ерунду, и предназначена эта статья…

«Лента друзей»: разрабатываем компонент «1С-Битрикс»

Со временем эта статья может занять вполне достойное место в рубрике «Истории из истории», в особенности если автор в будущем вспомнит, на каких ошибках он научился тому, чему научился. Хотя в ней описан пример вполне конкретной разработки, здесь можно найти много поучительного и полезного и для других ситуаций…

В преддверии SaaS

Еще года полтора назад термин SaaS достиг такой популярности, что его уже используют в выступлениях и публикациях без расшифровки и специального объяснения. Но как часто бывает в ИТ-отрасли, термин всем хорошо знаком, а суть его покрыта туманом. Четкого представления о том, что обозначается термином SaaS и чем это отличается от не-SaaS, нет. Потому разговор о SaaS придется начать с разбирательства: что же это такое и чем данная модель отличается от предыдущих…

Журнал PC Magazine/RE №09/2009 - читать онлайн бесплатно ознакомительный отрывок

Журнал PC Magazine/RE №09/2009 - читать книгу онлайн бесплатно (ознакомительный отрывок), автор PC Magazine/RE
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

• $arParams['USER_ID'] – ID пользователя для построения ленты;

• $arParams['GROUP_ID'] – ID группы социальной сети для построения ленты;

• $arParams['BLOG_GROUP_ID'] – ID группы блогов, к которой принадлежат все блоги социальной сети;

• $arParams['INC_SELF_MESSAGES'] – включать ли в ленту сообщения из блога сущности.

Определение базовых прав пользователя, которые заодно будут использоваться как дополнительный идентификатор кэша (см. листинг 1). Обратим внимание на структуру $arResult['CURRENT_ACCESS']. В ней задаются права, доступные текущему пользователю по умолчанию. Далее получаем его идентификатор и определяем реальное состояние прав (листинг 2).

Листинг 1

// Определим права текущего пользователя (который в данный

// момент смотрит "Ленту друзей")

$arResult = array();

// $arResult['ENTITY_TYPE'] – тип ленты,

// U – "лента пользователя", G – "лента группы"

$arResult['ENTITY_TYPE'] = $arParams['USER_ID'] >

0 ? 'U' : 'G';

// $arResult['ENTITY_ID'] – ID пользователя или группы

// (в зависимости от типа ленты)

$arResult['ENTITY_ID'] = $arResult['ENTITY_TYPE'] ==

'U' ? $arParams['USER_ID'] : $arParams['GROUP_ID'];

$arResult['CURRENT_ACCESS'] = array(

'canViewUserFriends' => false, //можно ли смотреть

// друзей пользователя

'canViewUserGroups' => false, // можно ли смотреть

// группы пользователя

'canViewUserSelfMessages' => false, // можно ли смотреть

// собственные записи

// блога пользователя

'canViewGroup' => false, // видима ли группа

'canViewGroupSelfMessages' => false // можно ли смотреть

// собственные записи

// блога группы

);

Листинг 2

$isModuleAdmin = CSocNetUser::IsCurrentUserModuleAdmin();

$currentUserID = $GLOBALS['USER']->GetID();

if($arResult['ENTITY_TYPE'] == 'G') {

// для ленты групп проверим право на доступ к ней

$arResult['GROUP_INFO'] = CSocNetGroup::GetByID($arResult['ENTITY_ID']);

$arCurrentUserPerms = CSocNetUserToGroup::InitUserPerms($currentUserID, $arResult['GROUP_INFO'], $isModuleAdmin);

$arResult['CURRENT_ACCESS']['canViewGroup'] = $arCurrentUserPerms['UserCanViewGroup'];

unset($arCurrentUserPerms);

if($arParams['INC_SELF_MESSAGES'] && $arResult['CURRENT_ACCESS']['canViewGroup']) {

$arResult['CURRENT_ACCESS']['canViewGroupSelfMessages'] = CSocNetFeaturesPerms::CanPerformOperation($currentUserID,

SONET_ENTITY_GROUP, $arResult['ENTITY_ID'], 'blog', 'view_post', $isModuleAdmin);

}

} else {

//для ленты пользователя проверим доступ к ней текущего пользователя

$arCurrentUserPerms = CSocNetUserPerms::InitUserPerms($currentUserID, $arResult['ENTITY_ID'], $isModuleAdmin);

$arResult['CURRENT_ACCESS']['canViewUserFriends'] = $arCurrentUserPerms['Operations']['viewfriends'];

$arResult['CURRENT_ACCESS']['canViewUserGroups'] = $arCurrentUserPerms['Operations']['viewgroups'];

if($arParams['INC_SELF_MESSAGES']) {

// если не нужно включать в ленту сообщения из своего блога, то и проверять ID пользователя не будем

// (экономим на количестве кэш-файлов)

$arResult['CURRENT_ACCESS']['canViewUserSelfMessages'] = $currentUserID == $arResult['ENTITY_ID'];

}

unset($arCurrentUserPerms);

}

unset($currentUserID, $isModuleAdmin);

Значение $arResult['CURRENT_ACCESS'] и будет дополнительным идентификатором кэша:

if($this->StartResultCache(false, array($arNavigation,

$arResult['CURRENT_ACCESS']), $cachePath)) {

//код компонента

//подключение шаблона сохранения результатов в кэш.

$this->IncludeComponentTemplate();

}

где $arNavigation – массив управляющих параметров для постраничной навигации, $cachePath – путь для хранения кэш-файла. Определение идентификаторов друзей и групп для получения по ним ID блогов (исходный текст несколько сокращен для обозримости, листинг 3).

Листинг 3

// массив идентификаторов пользователей, из блогов которых

// будут выбираться записи

$arEntityUsersID = array();

// массив идентификаторов групп, из блогов которых будут

// выбираться записи

$arEntityGroupsID = array();

if($arResult['ENTITY_TYPE'] == 'U') {

//лента пользователя

//можно ли смотреть друзей для данного пользователя,

// доступны ли вообще блоги и друзья

$getFriends = false;

if($arResult['CURRENT_ACCESS']['canViewUserFriends']) {

$getFriends = CPTK_SocialNetwork::IsAllowedFeature

(SONET_ENTITY_USER, 'blog') &&

CSocNetUser::IsFriendsAllowed();

}

// можно ли смотреть группы для данного пользователя

// и доступны ли вообще блоги для групп

if($arResult['CURRENT_ACCESS']['canViewUserGroups']) {

$getGroups = CPTK_SocialNetwork::IsAllowedFeature

(SONET_ENTITY_GROUP, 'blog');

}

Определим ID друзей пользователя (листинг 4).

Листинг 4

if($getFriends) {

$arOrderUR = array();

$arFilterUR = array(

'RELATION' => SONET_RELATIONS_FRIEND,

'USER_ID' => $arResult['ENTITY_ID'],

);

$arGroupByUR = false;

$arNavigationUR = false;

$arSelectFieldsUR = array(

'FIRST_USER_ID',

'SECOND_USER_ID'

);

$rsItems = CSocNetUserRelations::GetList($arOrderUR,

$arFilterUR, $arGroupByUR, $arNavigationUR,

$arSelectFieldsUR);

while($arItem = $rsItems->Fetch())

{

$id_ = $arItem['FIRST_USER_ID'] ==

$arResult['ENTITY_ID'] ?

intval($arItem['SECOND_USER_ID']) :

intval($arItem['FIRST_USER_ID']);

$arEntityUsersID[$id_] = $id_;

}

unset($rsItems, $id_, $arOrderUR, $arGroupByUR,

$arNavigationUR, $arSelectFieldsUR);

}

Код исключения «закрытых» пользователей вынесен в конец модуля (он общий для двух типов лент). Схема довольно проста: добавим ID владельца в массив $arEntityUsersID, если включен режим вывода сообщений из блога владельца ленты. Здесь же важно заполнить записью массив $arEntityUsersID на случай, если пользователь запретил смотреть своих друзей (листинг 5).

Листинг 5

if($arParams['INC_SELF_MESSAGES']) {

$arEntityUsersID[$arResult['ENTITY_ID']] =

$arResult['ENTITY_ID'];

}

// Определим ID видимых и НЕзакрытых групп пользователя

if($getGroups)

{

$arOrderGR = array();

$arFilterGR = array(

'USER_ID' => $arResult['ENTITY_ID'],

'<=ROLE' => SONET_ROLES_USER,

'GROUP_SITE_ID' => SITE_ID,

'GROUP_ACTIVE' => 'Y',

'GROUP_VISIBLE' => 'Y'

);

$arGroupByGR = false;

$arNavigationGR = false;

$arSelectFieldsGR = array(

'GROUP_ID',

'GROUP_NAME'

);

$rsItems = CSocNetUserToGroup::GetList($arOrderGR,

$arFilterGR, $arGroupByGR, $arNavigationGR,

$arSelectFieldsGR);

while($arItem = $rsItems->GetNext(false, false)) {

$id_ = intval($arItem['GROUP_ID']);

$arEntityGroupsID[$id_] = array(

'ID' => $id_,

'NAME' => $arItem['GROUP_NAME']

);

}

unset($rsItems, $id_, $arOrderGR, $arGroupByGR,

$arNavigationGR, $arSelectFieldsGR);

if(!empty($arEntityGroupsID)) {

//Определим группы, у которых блоги имеют статус

// приватных, и исключим их из списка

$arExceptGroupEntity = CPTK_SocialNetwork::

GetByRoleFeaturesIdArray(SONET_ENTITY_GROUP, 'blog',

'view_post', array('!ROLE' => SONET_ROLES_ALL),

array('!ROLE' => SONET_ROLES_ALL));

$arTmp = array_intersect_key($arExceptGroupEntity,

$arEntityGroupsID);

unset($arExceptGroupEntity);

if(!empty($arTmp)) {

foreach($arTmp as $key) {

unset($arEntityGroupsID[$key]);

}

}

unset($arTmp);

//Определим группы, в которых вообще отключены блоги,

// и исключим их из списка

$arExceptGroupEntity = CPTK_SocialNetwork::

GetByRoleFeaturesIdArray(SONET_ENTITY_GROUP, 'blog',

'view_post', array('FEATURE_ACTIVE' => 'N'),

array('FEATURE_ACTIVE' => 'N'));

$arTmp = array_intersect_key($arExceptGroupEntity,

$arEntityGroupsID);

unset($arExceptGroupEntity);

if(!empty($arTmp)) {

foreach($arTmp as $key) {

unset($arEntityGroupsID[$key]);

}

}

unset($arTmp);

}

}

Кроме того, необходимо обработать ситуацию, когда мы имеем дело с лентой для группы. Определяем, открыта ли группа для просмотра текущему пользователю, и вообще могут ли пользователи иметь блоги (листинг 6).

Листинг 6

$getMembers = false;

if($arResult['CURRENT_ACCESS']['canViewGroup']) {

$getMembers = CPTK_SocialNetwork::IsAllowedFeature

(SONET_ENTITY_USER, 'blog');

}

// Определим ID участников группы

if($getMembers) {

$arOrderGM = array();

$arFilterGM = array(

'<=ROLE' => SONET_ROLES_USER,

'GROUP_ID' => $arResult['ENTITY_ID'],

);

$arGroupByGM = false;

$arNavigationGM = false;

$arSelectFieldsGM = array(

'USER_ID'

);

$rsItems = CSocNetUserToGroup::GetList($arOrderGM,

$arFilterGM, $arGroupByGM, $arNavigationGM,

$arSelectFieldsGM);

while($arItem = $rsItems->Fetch()) {

$id_ = intval($arItem['USER_ID']);

$arEntityUsersID[$id_] = $id_;

}

unset($rsItems, $id_, $arOrderGM, $arGroupByGM,

$arNavigationGM, $arSelectFieldsGM);

// код исключения "закрытых" пользователей вынесен в конец

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

PC Magazine/RE читать все книги автора по порядку

PC Magazine/RE - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Журнал PC Magazine/RE №09/2009 отзывы


Отзывы читателей о книге Журнал PC Magazine/RE №09/2009, автор: PC Magazine/RE. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x