<?

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 
'<a href="'.$arEntityDesc['URL'].'">'.$arEntityDesc['NAME_FORMATTED'].'</a>';
    }

    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']) > $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 'Добавлена новость <a href="'.$arFields['URL'].'">'.$arFields['TITLE'].'</a>';
        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(truefalse);
            
$arIB CIBlock::GetByID($arElfields['IBLOCK_ID'])->GetNext(truefalse);
            
$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($arSoFieldsfalse);
        if (
intval($logID) > 0)
        {
            
CSocNetLog::Update($logID, array('TMP_ID' => $logID));
            
CSocNetLog::SendEvent($logID'SONET_NEW_EVENT');
        }
    }
}
?>