Эти сотрудники уже давно не новые и были заведены руками еще в 2010году. А после обновления системы появились в гаджете как новые.
15.02.2012 17:08:28
то меня не пускает. |
|||||
|
31.08.2011 10:57:07
Добрый день!
Описание задачи: создал свой новый инфоблок новостей ID = 42. Нужно чтобы при добавления новости в него, они (новости) также попадали в живую ленту. Я добавил в init.php обработчик но новости из моего инфоблока новостей в ЖЛ не попадают. Кто может подсказать где ошибка? Вот содержимое init.php <? // регистрируем обработчик AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("MyClass", "OnAfterIBlockElementAddHandler")); class MyClass { // создаем обработчик события "OnAfterIBlockElementAdd" function OnAfterIBlockElementAddHandler(&$arFields) { //здесь проверяем ID инфоблока из массива $arFields, если это ID инфоблока Пожеланий, используем код из статьи для добавления информации в живую ленту if($arFields["ID"]==42) { AddEventHandler('socialnetwork', 'OnFillSocNetLogEvents', array('CSonetLogHandlers', 'OnFillSocNetLogEvents')); AddEventHandler('socialnetwork', 'OnFillSocNetFeaturesList', array('CSonetLogHandlers', 'OnFillSocNetFeaturesList')); AddEventHandler('socialnetwork', 'OnFillSocNetAllowedSubscribeEntityTypes', array('CSonetLogHandlers', 'OnFillSocNetAllowedSubscribeEntityTypes')); } } } class CSonetLogHandlers { public static function GetIBlockByID($ID) { if (CModule::IncludeModule('iblock')) if ($arInfo = CIBlock::GetByID($ID)->GetNext()) return array('NAME_FORMATTED' => $arInfo['NAME'], 'URL' => $arInfo['LIST_PAGE_URL']); } public static function ShowEntityLink($arEntityDesc, $strEntityURL, $arParams) { return ' } public static function OnFillSocNetLogEvents(&$arSocNetLogEvents) { $arSocNetLogEvents['news'] = array( 'ENTITIES' => array( 'MYNEWS' => array( 'TITLE' => 'Новости', 'TITLE_SETTINGS' => 'Все новости', 'TITLE_SETTINGS_1' => 'Уведомления о новостях', 'TITLE_SETTINGS_2' => 'Уведомления о новостях', ), ), 'CLASS_FORMAT' => 'CSonetLogHandlers', 'METHOD_FORMAT' => 'FormatEventNews' ); } public static function OnFillSocNetFeaturesList(&$arSocNetFeaturesSettings) { $arSocNetFeaturesSettings['news']['subscribe_events']['news']['ENTITIES']['MYNEWS'] = array(); } public static function OnFillSocNetAllowedSubscribeEntityTypes(&$arSocNetAllowedSubscribeEntityTypes) { $arSocNetAllowedSubscribeEntityTypes[] = 'MYNEWS'; global $arSocNetAllowedSubscribeEntityTypesDesc; $arSocNetAllowedSubscribeEntityTypesDesc['MYNEWS'] = array( 'TITLE_LIST' => 'Новости', 'CLASS_DESC_GET' => 'CSonetLogHandlers', 'METHOD_DESC_GET' => 'GetIBlockByID', 'CLASS_DESC_SHOW' => 'CSonetLogHandlers', 'METHOD_DESC_SHOW' => 'ShowEntityLink', ); } public static function FormatEventNews($arFields, $arParams, $bMail = false) { $arEventParams = unserialize(strlen($arFields['~PARAMS']) > 0 ? $arFields['~PARAMS'] : $arFields['PARAMS']); $arResult = array('EVENT' => $arFields, 'ENTITY' => array(), 'URL' => ''); $arResult['ENTITY']['TYPE_MAIL'] = ' разделе'; if (!$bMail) { $arResult['ENTITY']['FORMATTED'] = array(); $arResult['ENTITY']['FORMATTED']['URL'] = $arEventParams['ENTITY_URL']; $arResult['ENTITY']['FORMATTED']['NAME'] = $arEventParams['ENTITY_NAME']; } else $arResult['ENTITY']['FORMATTED'] = 'Новости'; if (!$bMail) $title = 'Добавлена новость else $title = 'Добавлена новость: ' . $arFields['TITLE']; $arResult['EVENT_FORMATTED'] = array( 'TITLE' => $title, 'MESSAGE' => ($bMail ? CSocNetTextParser::killAllTags($arFields['MESSAGE']) : $arFields['MESSAGE']), 'IS_IMPORTANT' => true ); if (!$bMail) { $arFieldsTooltip = array( 'ID' => $arFields['USER_ID'], 'NAME' => $arFields['~CREATED_BY_NAME'], 'LAST_NAME' => $arFields['~CREATED_BY_LAST_NAME'], 'SECOND_NAME' => $arFields['~CREATED_BY_SECOND_NAME'], 'LOGIN' => $arFields['~CREATED_BY_LOGIN'], ); $arResult['CREATED_BY']['TOOLTIP_FIELDS'] = CSocNetLog::FormatEvent_FillTooltip($arFieldsTooltip, $arParams); $arResult['AVATAR_SRC'] = CSocNetLog::FormatEvent_CreateAvatar($arFields, $arParams, 'CREATED_BY'); $arResult['EVENT_FORMATTED']['IS_MESSAGE_SHORT'] = CSocNetLog::FormatEvent_IsMessageShort($arFields['MESSAGE']); $arResult['EVENT_FORMATTED']['URL'] = $arFields['URL']; } else $arResult['EVENT_FORMATTED']['URL'] = 'http://' . $_SERVER['SERVER_NAME'] . $arFields['URL']; return $arResult; } } function AddToLog($elID, $entityType) { if (CModule::IncludeModule('socialnetwork') && CModule::IncludeModule('iblock')) { $arElfields = CIBlockElement::GetByID($elID)->GetNext(true, false); $arIB = CIBlock::GetByID($arElfields['IBLOCK_ID'])->GetNext(true, false); $site_id = $arIB['LID']; $arSoFields = Array( 'SITE_ID' => $site_id, 'ENTITY_TYPE' => $entityType, 'ENTITY_ID' => $arElfields['IBLOCK_ID'], 'EVENT_ID' => $arIB['IBLOCK_TYPE_ID'], 'USER_ID' => $arElfields['CREATED_BY'], '=LOG_DATE' => ( strlen($arElfields['ACTIVE_FROM']) > 0 ? ( MakeTimeStamp($arElfields['ACTIVE_FROM'], CSite::GetDateFormat('FULL', $site_id)) > time() ? $GLOBALS['DB']->CharToDateFunction($arElfields['ACTIVE_FROM'], 'FULL', $site_id) : $GLOBALS['DB']->CurrentTimeFunction() ) : $GLOBALS['DB']->CurrentTimeFunction() ), 'TITLE_TEMPLATE' => 'Новость: #TITLE#', 'TITLE' => $arElfields['NAME'], 'MESSAGE' => $arElfields['PREVIEW_TEXT'], 'TEXT_MESSAGE' => '', 'URL' => $arElfields['DETAIL_PAGE_URL'], 'MODULE_ID' => 'iblock', 'CALLBACK_FUNC' => false, 'TMP_ID' => false, 'PARAMS' => serialize(array( 'ENTITY_NAME' => $arIB['NAME'], 'ENTITY_URL' => $arIB['LIST_PAGE_URL'] )) ); $logID = CSocNetLog::Add($arSoFields, false); if (intval($logID) > 0) { CSocNetLog::Update($logID, array('TMP_ID' => $logID)); CSocNetLog::SendEvent($logID, 'SONET_NEW_EVENT'); } } } ?> |
|
|