Вход Регистрация
Файл: base-sys/base/classes/event_handler.php
Строк: 2460
<?php

class BASE_CLASS_EventHandler
{

    public function 
genericInit()
    {
        
$eventManager PEEP::getEventManager();
        
$eventManager->bind('base.add_global_lang_keys', array($this'onAddGlobalLangs'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this'onDeleteUserContent'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_LOGIN, array($this'onUserLogin'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_LOGOUT, array($this'onUserLogout'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_REGISTER, array($this'onJoinMandatoryUserApprove'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_EDIT, array($this'onUserEditFeed'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_REGISTER, array($this'onJoinFeed'));
        
$eventManager->bind('feed.after_comment_add', array($this'onUserJoinCommentFeed'));
        
$eventManager->bind('feed.after_like_added', array($this'onLikeUserJoin'));
        
$eventManager->bind('feed.after_like_added', array($this'onUserAvatarLikeFeed'));
        
$eventManager->bind('feed.after_comment_add', array($this'onUserAvatarCommentFeed'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_REGISTER, array($this'onUserRegisterWelcomeLetter'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this'onUserUnregisterDeleteDisaproved'));
        
$eventManager->bind('notifications.collect_actions', array($this'onNotifyActions'));
        
$eventManager->bind('base_add_comment', array($this'onAddComment'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this'onUserUnregisterRemovePreference'));
        
$eventManager->bind('base.update_entity_items_status', array($this'onUpdateEntityItemsStatus'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this'onDeleteMediaPanelFiles'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this'clearUserListQueryCache'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_SUSPEND, array($this'clearUserListQueryCache'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_SUSPEND, array($this'sendSuspendNotification'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_UNSUSPEND, array($this'clearUserListQueryCache'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_APPROVE, array($this'clearUserListQueryCache'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_DISAPPROVE, array($this'clearUserListQueryCache'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_MARK_FEATURED, array($this'clearUserListQueryCache'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_UNMARK_FEATURED, array($this'clearUserListQueryCache'));
        
$eventManager->bind('base.questions_field_get_label', array($this'getQuestionLabel'));
        
$eventManager->bind('base.before_decorator', array($this'onBeforeDecoratorRender'));
        
$eventManager->bind('plugin.privacy.get_action_list', array($this'onPrivacyAddAction'));
        
$eventManager->bind('base.members_only_exceptions', array($this'onAddMembersOnlyException'));
        
$eventManager->bind('base.password_protected_exceptions', array($this'onAddPasswordProtectedExceptions'));
        
$eventManager->bind('base.maintenance_mode_exceptions', array($this'onAddMaintenanceModeExceptions'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_LOGIN, array($this'onUserLoginSetAdminCookie'));
        
$eventManager->bind('core.emergency_exit', array($this'onEmergencyExit'));

        
$eventManager->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this'onUserUnregisterClearMailQueue'));

        
$eventManager->bind('socialsharing.get_entity_info', array($this'sosialSharingGetUserInfo'));

        
$eventManager->bind(PEEP_EventManager::ON_USER_REGISTER, array($this'setAccountTypeUserRoleOnUserRegister'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_REGISTER, array($this'deleteInviteCode'));
        
$eventManager->bind('base.before_save_user', array($this'setUserRoleOnChangeAccountType'));

        
$eventManager->bind('base.questions_field_add_fake_questions', array($this'addFakeQuestions'));
        
        
$eventManager->bind(PEEP_EventManager::ON_JOIN_FORM_RENDER, array($this'onInviteMembersProcessJoinForm'));
        
        
$eventManager->bind(BASE_CMP_ModerationToolsWidget::EVENT_COLLECT_CONTENTS, array($this'onCollectModerationWidgetContent'));
        
$eventManager->bind("base.moderation_tools.collect_menu", array($this'onCollectModerationToolsMenu'));
        
        
$eventManager->bind(BOL_ContentService::EVENT_BEFORE_DELETE, array($this'deleteEntityFlags'));
        
        
BASE_CLASS_ContentProvider::getInstance()->init();
        
$eventManager->bind('base.after_avatar_update', array($this'onAfterAvatarUpdate'));
        
    }

    public function 
init()
    {
        
$this->genericInit();
        
$eventManager PEEP::getEventManager();
        
$eventManager->bind(BASE_CMP_ProfileActionToolbar::EVENT_NAME, array($this'onActionToolbarAddDeleteActionTool'));
        
$eventManager->bind(BASE_CMP_ProfileActionToolbar::EVENT_NAME, array($this'onActionToolbarAddFlagActionTool'));
        
        
$eventManager->bind(BASE_CMP_ProfileActionToolbar::EVENT_NAME, array($this'onActionToolbarAddSuspendActionTool'));
        
$eventManager->bind(BASE_CMP_ProfileActionToolbar::EVENT_NAME, array($this'onActionToolbarAddAuthActionTool'));
        
$eventManager->bind(BASE_CMP_ProfileActionToolbar::EVENT_NAME, array($this'onActionToolbarAddUserApproveActionTool'));
        
$eventManager->bind(BASE_CMP_ProfileActionToolbar::EVENT_NAME, array($this'onActionToolbarAddUserFeatureActionTool'));
        
$eventManager->bind(BASE_CMP_ProfileActionToolbar::EVENT_NAME, array($this'onActionToolbarAddUserBlockActionTool'));
        
$eventManager->bind('base.dashboard_menu_items', array($this'onDashboardMenuItem'));
        
$eventManager->bind('base.preference_menu_items', array($this'onPreferenceMenuItem'));
        
$eventManager->bind('base.on_avatar_toolbar_collect', array($this'onAvatarToolbarCollect'));
        
$eventManager->bind(PEEP_EventManager::ON_FINALIZE, array($this'addJsDeclarations'));
        
        
$eventManager->bind('ads.enabled_plugins', array($this'onAddAdsEnabled'));
        
$eventManager->bind(PEEP_EventManager::ON_BEFORE_PLUGIN_UNINSTALL, array($this'onPluginUninstallDeleteComments'));
        
$eventManager->bind('admin.add_auth_labels', array($this'onAddAuthLabels'));
        
$eventManager->bind(BOL_PreferenceService::PREFERENCE_ADD_FORM_ELEMENT_EVENT, array($this'onPreferenceAddFormElement'));
        
$eventManager->bind(BOL_PreferenceService::PREFERENCE_SECTION_LABEL_EVENT, array($this'onAddPreferenceSectionLabels'));
        
$eventManager->bind('feed.collect_configurable_activity', array($this'onFeedCollectConfigurableActivity'));
        
//$eventManager->bind('base.attachment_delete_image', array($this, 'onDeleteAttachmentImage'));
        
$eventManager->bind('base.attachment_save_image', array($this'onSaveAttachmentImage'));
        
$eventManager->bind(PEEP_EventManager::ON_BEFORE_PLUGIN_UNINSTALL, array($this'onPluginsUninstallDeleteGateway'));
        
$eventManager->bind(PEEP_EventManager::ON_USER_UNREGISTER, array($this'onDeleteUserAttachments'));
        
$eventManager->bind(PEEP_EventManager::ON_FINALIZE, array($this'onFinalizeAddScrollJs'));
        
$eventManager->bind('join.get_captcha_field', array($this'getCaptcha'));
        
$eventManager->bind(PEEP_EventManager::ON_FINALIZE, array($this'onFinalizeCheckIfSiteFullyInstalled'));
        
$eventManager->bind(PEEP_EventManager::ON_AFTER_ROUTE, array($this'onPluginsInitCheckUserStatus'));

        
$eventManager->bind('class.get_instance', array($this'onGetClassInstance'));
        
        if ( 
defined('PEEP_ADS_XP_TOP') )
        {
            
$eventManager->bind('base.add_page_content', array($this'addPageBanner'));
        }
    }
    
    public function 
onGetClassInstancePEEP_Event $event )
    {
        
$params $event->getParams();
        
        if ( !empty(
$params['className']) && $params['className'] == 'BASE_CLASS_JoinUploadPhotoField' )
        {
            
$rClass = new ReflectionClass('BASE_CLASS_AvatarField');
            
            
$arguments = array();
            
            if ( !empty(
$params['arguments']) )
            {
                
$arguments $params['arguments'];
            }
            
            
$event->setData($rClass->newInstanceArgs($arguments));
        }
    }
    
    public function 
deleteEntityFlagsPEEP_Event $event )
    {
        
$params $event->getParams();
        
        
BOL_FlagService::getInstance()->deleteEntityFlags($params["entityType"], $params["entityId"]);
    }
    
    public function 
onCollectModerationWidgetContentBASE_CLASS_EventCollector $event )
    {
        
$flagGroups BOL_FlagService::getInstance()->getContentGroupsWithCount();
        
        if ( empty(
$flagGroups) ) 
        {
            return;
        }
        
        
$flagsCmp = new BASE_CMP_ModerationPanelList($flagGroups);
                
        
$event->add(array(
            
"name" => "flags",
            
"label" => PEEP::getLanguage()->text("base""flagged_content"),
            
"content" => $flagsCmp->render()
        ));
    }
    
    public function 
onCollectModerationToolsMenuBASE_CLASS_EventCollector $event )
    {
        
$flagGroups BOL_FlagService::getInstance()->getContentGroupsWithCount();
        
        if ( empty(
$flagGroups) ) 
        {
            return;
        }
        
        
$event->add(array(
            
"url" => PEEP::getRouter()->urlForRoute("base.moderation_flags_index"),
            
"label" => PEEP::getLanguage()->text("base""flagged_content"),
            
"iconClass" => "peep_ic_clock",
            
"key" => "flags"
        
));
    }

    public function 
deleteInviteCodePEEP_Event $e )
    {
        
$params $e->getParams();
        
        if( !empty(
$params['params']['code']) )
        {
            
BOL_UserService::getInstance()->deleteInvitationCode($params['params']['code']);
        }
    }

    
    public function 
onEmergencyExitPEEP_Event $e )
    {
        if ( !empty(
$_COOKIE['adminToken']) && trim($_COOKIE['adminToken']) == PEEP::getConfig()->getValue('base''admin_cookie') )
        {
            
PEEP::getSession()->set('errorData'serialize($e->getParams()));
        }
    }

    public function 
onUserLoginSetAdminCookiePEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
BOL_AuthorizationService::getInstance()->isSuperModerator($params['userId']) )
        {
            
$newToken UTIL_String::getRandomString(32);
            
PEEP::getConfig()->saveConfig('base''admin_cookie'$newToken);
            
setcookie('adminToken'$newTokentime() + 3600 24 100'/'nullfalsetrue);
        }
    }

    public function 
onUserLogoutPEEP_Event $e )
    {
        
$params $e->getParams();
        
$userId = (int) $params['userId'];

        if ( 
$userId )
        {
            return;
        }

        
BOL_UserService::getInstance()->onLogout($userId);
    }

    public function 
onUserLoginPEEP_Event $e )
    {
        
$params $e->getParams();
        
$userId = (int) $params['userId'];

        if ( 
$userId )
        {
            return;
        }

        
BOL_UserService::getInstance()->onLogin($userIdPEEP::getApplication()->getContext());
    }

    public function 
onBeforeDecoratorRenderBASE_CLASS_PropertyEvent $e )
    {
        
// to add some logic for decorators
    
}

    public function 
onPluginsInitCheckUserStatus()
    {
        if ( 
PEEP::getUser()->isAuthenticated() )
        {
            
$user BOL_UserService::getInstance()->findUserById(PEEP::getUser()->getId());

            if ( 
PEEP::getConfig()->getValue('base''mandatory_user_approve') && PEEP::getUser()->isAuthenticated() && !BOL_UserService::getInstance()->isApproved() )
            {
                
PEEP::getRequestHandler()->setCatchAllRequestsAttributes('base.wait_for_approval', array('controller' => 'BASE_CTRL_WaitForApproval''action' => 'index'));
                
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.wait_for_approval''BASE_CTRL_User''signOut');
            }

            if ( 
$user !== null )
            {
                if ( 
BOL_UserService::getInstance()->isSuspended($user->getId()) && !PEEP::getUser()->isAdmin() )
                {
                    
PEEP::getRequestHandler()->setCatchAllRequestsAttributes('base.suspended_user', array('controller' => 'BASE_CTRL_SuspendedUser''action' => 'index'));
                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.suspended_user''BASE_CTRL_User''signOut');
                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.suspended_user''BASE_CTRL_Avatar');
                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.suspended_user''BASE_CTRL_Edit');
                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.suspended_user''BASE_CTRL_DeleteUser');
                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.suspended_user''BASE_CTRL_Captcha');
                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.suspended_user''BASE_CTRL_Console');
                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.suspended_user''BASE_CTRL_AjaxLoader');
                }

                if ( (int) 
$user->emailVerify === && PEEP::getConfig()->getValue('base''confirm_email') )
                {
                    
PEEP::getRequestHandler()->setCatchAllRequestsAttributes('base.email_verify', array(PEEP_RequestHandler::CATCH_ALL_REQUEST_KEY_CTRL => 'BASE_CTRL_EmailVerify'PEEP_RequestHandler::CATCH_ALL_REQUEST_KEY_ACTION => 'index'));

                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.email_verify''BASE_CTRL_User''signOut');
                    
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.email_verify''BASE_CTRL_EmailVerify');
                }

                
$isAdminUrl false;

                
$accountType BOL_QuestionService::getInstance()->findAccountTypeByName($user->accountType);

                
$attrs PEEP::getRequestHandler()->getHandlerAttributes();
                if ( !empty(
$attrs[PEEP_RequestHandler::ATTRS_KEY_CTRL]) )
                {
                    
$parents class_parents($attrs[PEEP_RequestHandler::ATTRS_KEY_CTRL], true);

                    if ( 
in_array('ADMIN_CTRL_Abstract'$parents) )
                    {
                        
$isAdminUrl true;
                    }
                }

                if ( !
$isAdminUrl )
                {
                    if ( empty(
$accountType) )
                    {
                        
PEEP::getRequestHandler()->setCatchAllRequestsAttributes('base.complete_profile.account_type', array('controller' => 'BASE_CTRL_CompleteProfile''action' => 'fillAccountType'));
                        
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile.account_type''BASE_CTRL_Console''listRsp');
                        
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile.account_type''BASE_CTRL_User''signOut');
                        
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile.account_type''INSTALL_CTRL_Install');
                        
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile.account_type''BASE_CTRL_BaseDocument''installCompleted');
                        
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile.account_type''BASE_CTRL_AjaxLoader');
                        
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile.account_type''BASE_CTRL_AjaxComponentAdminPanel');
                    }
                    else
                    {
                        
$questionsEditStamp PEEP::getConfig()->getValue('base''profile_question_edit_stamp');
                        
$updateDetailsStamp BOL_PreferenceService::getInstance()->getPreferenceValue('profile_details_update_stamp'PEEP::getUser()->getId());

                        if ( 
$questionsEditStamp >= (int) $updateDetailsStamp )
                        {
                            require_once 
PEEP_DIR_CORE 'validator.php';
                            
$questionList BOL_QuestionService::getInstance()->getEmptyRequiredQuestionsList($user->id);

                            if ( !empty(
$questionList) )
                            {
                                
PEEP::getRequestHandler()->setCatchAllRequestsAttributes('base.complete_profile', array('controller' => 'BASE_CTRL_CompleteProfile''action' => 'fillRequiredQuestions'));
                                
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile''BASE_CTRL_Console''listRsp');
                                
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile''BASE_CTRL_User''signOut');
                                
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile''INSTALL_CTRL_Install');
                                
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile''BASE_CTRL_BaseDocument''installCompleted');
                                
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile''BASE_CTRL_AjaxLoader');
                                
PEEP::getRequestHandler()->addCatchAllRequestsExclude('base.complete_profile''BASE_CTRL_AjaxComponentAdminPanel');
                            }
                            else
                            {
                                
BOL_PreferenceService::getInstance()->savePreferenceValue('profile_details_update_stamp'time(), PEEP::getUser()->getId());
                            }
                        }
                    }
                }
            }
            else
            {
                
PEEP::getUser()->logout();
            }
        }
    }

    public function 
addPageBannerBASE_CLASS_EventCollector $event )
    {
        
$params $event->getParams();

        if ( 
$params['key'] == 'base.content_top' )
        {
            
$event->add(PEEP_ADS_XP_TOP);
        }
        elseif ( 
$params['key'] == 'base.content_bottom' )
        {
            
$event->add(PEEP_ADS_XP_BOT);
        }
    }

    public function 
getQuestionLabelPEEP_Event $event )
    {
        
$params $event->getParams();

        
$presentation = !empty($params['presentation']) ? $params['presentation'] : null;
        
$fieldName = !empty($params['fieldName']) ? $params['fieldName'] : null;
        
$configs = !empty($params['configs']) ? $params['configs'] : null;
        
$type = !empty($params['type']) ? $params['type'] : null;

        if ( 
$type == 'view' && $fieldName == 'birthdate' && $presentation == BOL_QuestionService::QUESTION_PRESENTATION_AGE )
        {
            
$event->setData(PEEP::getLanguage()->text('base''questions_question_birthday_label_presentation_age'));
        }

    }

    public function 
onFinalizeCheckIfSiteFullyInstalledPEEP_Event $event )
    {
        if ( !
PEEP::getConfig()->getValue("base""install_complete") )
        {
            
PEEP::getApplication()->redirect(PEEP::getRouter()->urlForRoute("base_page_install_completed") . "?redirect=1");
        }
    }

    public function 
getCaptchaPEEP_Event $e )
    {
        
$e->setData(new CaptchaField('captchaField'));
    }

    public function 
onFinalizeAddScrollJs$e )
    {
        
$plugin PEEP::getPluginManager()->getPlugin('base');

        
PEEP::getDocument()->addScript($plugin->getStaticJsUrl() . 'jquery.mousewheel.js');
        
PEEP::getDocument()->addScript($plugin->getStaticJsUrl() . 'jquery.jscrollpane.js');
    }

    public function 
clearUserListQueryCachePEEP_Event $event )
    {
        
$params $event->getParams();
        
$userId = (int) $params['userId'];

        
PEEP::getCacheManager()->clean(array(BOL_UserDao::CACHE_TAG_ALL_USER_LIST));
    }

    public function 
sendSuspendNotificationPEEP_Event $event )
    {
        
$params $event->getParams();
        
$userId = (int) $params['userId'];
        
$message $params['message'];

        
$userService BOL_UserService::getInstance();
        
$user $userService->findUserById($userId);
        
//printVar($event);
        
if ( empty($user) || empty($message) )
        {
            return 
false;
        }

        
$email $user->email;
        
$displayName $userService->getDisplayName($userId);
        
        
$txt PEEP::getLanguage()->text('base''suspend_notification_text', array('realName' => $displayName'suspendReason' => $message));
        
$html PEEP::getLanguage()->text('base''suspend_notification_html', array('realName' => $displayName'suspendReason' => $message));

        
$subject PEEP::getLanguage()->text('base''suspend_notification_subject');

        try
        {
            
$mail PEEP::getMailer()->createMail()
                ->
addRecipientEmail($email)
                ->
setTextContent($txt)
                ->
setHtmlContent($html)
                ->
setSubject($subject);

            
PEEP::getMailer()->send($mail);
        }
        catch ( 
Exception $e )
        {
            
//printVar($e);
            //Skip invalid notification
        
}
    }
    
    public function 
onDeleteUserAttachmentsPEEP_Event $event )
    {
        
$params $event->getParams();

        
$userId = (int) $params['userId'];

        if ( 
$userId )
        {
            if ( isset(
$params['deleteContent']) && (bool) $params['deleteContent'] )
            {
                
BOL_AttachmentService::getInstance()->deleteUserAttachments($userId);
            }
        }
    }

    public function 
onDeleteMediaPanelFilesPEEP_Event $e )
    {
        
$params $e->getParams();
        
$userId = (int) $params['userId'];

        
BOL_MediaPanelService::getInstance()->deleteImagesByUserId($userId);
    }

    public function 
onPluginsUninstallDeleteGatewayPEEP_Event $e )
    {
        
$params $e->getParams();
        
$pluginKey $params['pluginKey'];

        
BOL_BillingService::getInstance()->deleteGatewayProductsByPluginKey($pluginKey);
    }

    public function 
onSaveAttachmentImagePEEP_Event $event )
    {
        
$params $event->getParams();
        if ( empty(
$params['uid']) || empty($params['pluginKey']) )
        {
            return 
null;
        }

        
BOL_AttachmentService::getInstance()->updateStatusForBundle($params['pluginKey'], $params['uid'], 1);
        
$result BOL_AttachmentService::getInstance()->getFilesByBundleName($params['pluginKey'], $params['uid']);
        return 
$result $result[0] : null;
    }

//    public function onDeleteAttachmentImage( PEEP_Event $event )
//    {
//        $params = $event->getParams();
//
//        if ( !empty($params["id"]) )
//        {
//            BOL_AttachmentService::getInstance()->deleteAttachmentById($params["id"]);
//        }
//        else if ( !empty($params['url']) && strstr($params['url'], PEEP::getStorage()->getFileUrl(PEEP::getPluginManager()->getPlugin('base')->getUserFilesDir() . 'attachments')) )
//        {
//            BOL_AttachmentService::getInstance()->deleteAttachmentByUrl($params['url']);
//        }
//    }

    
public function onFeedCollectConfigurableActivityBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();
        
$event->add(array(
            
'label' => $language->text('admin''feed_content_registration'),
            
'activity' => 'create:user_join'
        
));

        
$event->add(array(
            
'label' => $language->text('admin''feed_content_edit'),
            
'activity' => 'create:user_edit'
        
));

        
$event->add(array(
            
'label' => $language->text('admin''feed_content_avatar_change'),
            
'activity' => 'create:avatar-change'
        
));

        
$event->add(array(
            
'label' => $language->text('admin''feed_content_user_comment'),
            
'activity' => 'create:user-comment'
        
));
    }

    public function 
onUpdateEntityItemsStatusPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( empty(
$params['entityType']) || empty($params['entityIds']) || !isset($params['status']) || !is_array($params['entityIds']) )
        {
            return;
        }

        
$status = empty($params['status']) ? 1;

        foreach ( 
$params['entityIds'] as $entityId )
        {
            
BOL_CommentService::getInstance()->setEntityStatus($params['entityType'], $entityId$status);
            
BOL_TagService::getInstance()->updateEntityItemStatus($params['entityType'], $entityId$status);
            
BOL_RateService::getInstance()->updateEntityStatus($params['entityType'], $entityId$status);
            
BOL_VoteService::getInstance()->updateEntityItemStatus($params['entityType'], $entityId$status);
        }
    }

    public function 
onUserUnregisterRemovePreferencePEEP_Event $event )
    {
        
$params $event->getParams();

        
$userId = (int) $params['userId'];
        
BOL_PreferenceService::getInstance()->deletePreferenceDataByUserId($userId);
    }

    public function 
onPrivacyAddActionBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();

        
$action = array(
            
'key' => 'base_view_profile',
            
'pluginKey' => 'base',
            
'label' => $language->text('base''privacy_action_view_profile'),
            
'description' => '',
            
'defaultValue' => 'everybody'
        
);

        
$event->add($action);

        
$action = array(
            
'key' => 'base_view_my_presence_on_site',
            
'pluginKey' => 'base',
            
'label' => $language->text('base''privacy_action_view_my_presence_on_site'),
            
'description' => '',
            
'defaultValue' => 'everybody'
        
);

        
$event->add($action);
    }

    public function 
onAddPreferenceSectionLabelsBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();

        
$sectionLabels = array(
            
'general' => array(
                
'label' => $language->text('base''preference_section_general'),
                
'iconClass' => 'peep_ic_script'
            
)
        );

        
$event->add($sectionLabels);
    }

    public function 
onPreferenceAddFormElementBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();

        
$params $event->getParams();
        
$values $params['values'];

        
$fromElementList = array();

        
$fromElement = new CheckboxField('mass_mailing_subscribe');
        
$fromElement->setLabel($language->text('base''preference_mass_mailing_subscribe_label'));
        
$fromElement->setDescription($language->text('base''preference_mass_mailing_subscribe_description'));

        if ( isset(
$values['mass_mailing_subscribe']) )
        {
            
$fromElement->setValue($values['mass_mailing_subscribe']);
        }

        
$fromElementList[] = $fromElement;

        
$event->add($fromElementList);
    }

    public function 
onAddAuthLabelsBASE_CLASS_EventCollector $event )
    {
        
$language PEEP::getLanguage();
        
$event->add(
            array(
                
'base' => array(
                    
'label' => $language->text('base''auth_group_label'),
                    
'actions' => array(
                        
'add_comment' => $language->text('base''auth_action_add_comment'),
                        
'delete_comment_by_content_owner' => $language->text('base''delete_comment_by_content_owner'),
                        
'search_users' => $language->text('base''search_users'),
                        
'view_profile' => $language->text('base''auth_view_profile')
                    )
                )
            )
        );
    }

    public function 
onPluginUninstallDeleteCommentsPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( !empty(
$params['pluginKey']) )
        {
            
BOL_CommentService::getInstance()->deletePluginComments($params['pluginKey']);
        }
    }

    public function 
onAddAdsEnabledBASE_CLASS_EventCollector $event )
    {
        
$event->add('base');
    }

   

    public function 
addJsDeclarationsPEEP_Event $e )
    {
        
//Langs
        
PEEP::getLanguage()->addKeyForJs('base''ajax_floatbox_users_title');
        
PEEP::getLanguage()->addKeyForJs('base''flag_as');
        
PEEP::getLanguage()->addKeyForJs('base''delete_user_confirmation_label');
        
PEEP::getLanguage()->addKeyForJs('base''authorization_limited_permissions');
        
PEEP::getLanguage()->addKeyForJs('base''avatar_change');
        
PEEP::getLanguage()->addKeyForJs('base''avatar_crop');

        
$scriptGen UTIL_JsGenerator::newInstance()->setVariable(array('PEEP''ajaxComponentLoaderRsp'), PEEP::getRouter()->urlFor('BASE_CTRL_AjaxLoader''component'));
        
$scriptGen->setVariable(array('PEEP''ajaxAttachmentLinkRsp'), PEEP::getRouter()->urlFor('BASE_CTRL_Attachment''addLink'));

        
//Ping
        
$scriptGen->addScript('PEEP.getPing().setRspUrl({$url});', array(
            
'url' => PEEP::getRouter()->urlFor('BASE_CTRL_Ping''index')
        ));

        
//UsersApi
        
$scriptGen->newObject(array('PEEP''Users'), 'PEEP_UsersApi', array(array(
                
"rsp" => PEEP::getRouter()->urlFor('BASE_CTRL_AjaxUsersApi''rsp')
        )));

        
PEEP::getDocument()->addScriptDeclaration($scriptGen->generateJs());

        
//Light Cron
        
$cronReady PEEP::getConfig()->configExists('base''cron_is_configured') && PEEP::getConfig()->getValue('base''cron_is_configured');

        if ( !
$cronReady && !defined('PEEP_PLUGIN_XP') )
        {
            
PEEP::getDocument()->addOnloadScript(UTIL_JsGenerator::composeJsString(
                    
'$.get({$cron});'
                    
, array(
                    
'cron' => PEEP::getRequest()->buildUrlQueryString(PEEP_URL_HOME 'peep_cron/run.php', array(
                        
'peep-light-cron' => 1
                    
))
            )));
        }
    }

    public function 
onAvatarToolbarCollectBASE_CLASS_EventCollector $e )
    {
        
$e->add(array(
            
'title' => PEEP::getLanguage()->text('base''console_item_label_dashboard'),
            
'iconClass' => 'peep_ic_house',
            
'url' => PEEP::getRouter()->urlForRoute('base_member_dashboard'),
            
'order' => 1
        
));

        
$e->add(array(
            
'title' => PEEP::getLanguage()->text('base''console_item_label_profile'),
            
'iconClass' => 'peep_ic_user',
            
'url' => PEEP::getRouter()->urlForRoute('base_member_profile'),
            
'order' => 3
        
));
    }

    public function 
onAddCommentPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( empty(
$params['entityType']) || $params['entityType'] !== 'base_profile_wall' )
        {
            return;
        }

        
$entityId $params['entityId'];
        
$userId $params['userId'];
        
$commentId $params['commentId'];

        
$userService BOL_UserService::getInstance();

        
$user $userService->findUserById($entityId);

        if ( 
$user->getId() == $userId )
        {
            return;
        }

        
$comment BOL_CommentService::getInstance()->findComment($commentId);
        
$url PEEP::getRouter()->urlForRoute('base_user_profile', array('username' => BOL_UserService::getInstance()->getUserName($entityId)));

        
$avatars BOL_AvatarService::getInstance()->getDataForUserAvatars(array($userId));
        
$avatar $avatars[$userId];

        
$event = new PEEP_Event('notifications.add', array(
            
'pluginKey' => 'base',
            
'entityType' => 'base_profile_wall',
            
'entityId' => $commentId,
            
'action' => 'base_add_user_comment',
            
'userId' => $user->getId(),
            ), array(
            
'avatar' => $avatar,
            
'string' => array(
                
'key' => 'base+profile_comment_notification',
                
'vars' => array(
                    
'userName' => $userService->getDisplayName($userId),
                    
'userUrl' => $userService->getUserUrl($userId),
                    
'profileUrl' => $userService->getUserUrl($user->getId())
                )
            ),
            
'content' => $comment->getMessage(),
            
'url' => $userService->getUserUrl($user->getId())
        ));

        
PEEP::getEventManager()->trigger($event);
    }

    public function 
onNotifyActionsBASE_CLASS_EventCollector $e )
    {
        
$e->add(array(
            
'section' => 'base',
            
'sectionLabel' => PEEP::getLanguage()->text('base''notification_section_label'),
            
'action' => 'base_add_user_comment',
            
'description' => PEEP::getLanguage()->text('base''email_notifications_setting_user_comment'),
            
'sectionIcon' => 'peep_ic_file',
            
'selected' => true
        
));
    }

    public function 
onAddMaintenanceModeExceptionsBASE_CLASS_EventCollector $event )
    {
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'standardSignIn'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'forgotPassword'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'resetPassword'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'resetPasswordCodeExpired'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'resetPasswordRequest'));
        
$event->add(array('controller' => 'BASE_CTRL_ApiServer''action' => 'request'));
    }

    public function 
onAddPasswordProtectedExceptionsBASE_CLASS_EventCollector $event )
    {
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'standardSignIn'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'ajaxSignIn'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'forgotPassword'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'resetPasswordRequest'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'resetPassword'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'resetPasswordCodeExpired'));
        
$event->add(array('controller' => 'BASE_CTRL_EmailVerify''action' => 'verify'));
        
$event->add(array('controller' => 'BASE_CTRL_ApiServer''action' => 'request'));
        
$event->add(array('controller' => 'BASE_CTRL_Unsubscribe''action' => 'index'));
        
    }

    public function 
onAddMembersOnlyExceptionBASE_CLASS_EventCollector $event )
    {
        
$event->add(array('controller' => 'BASE_CTRL_Join''action' => 'index'));
        
$event->add(array('controller' => 'BASE_CTRL_Join''action' => 'joinFormSubmit'));
        
$event->add(array('controller' => 'BASE_CTRL_Join''action' => 'ajaxResponder'));
        
$event->add(array('controller' => 'BASE_CTRL_Captcha''action' => 'index'));
        
$event->add(array('controller' => 'BASE_CTRL_Captcha''action' => 'ajaxResponder'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'forgotPassword'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'resetPasswordRequest'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'resetPassword'));
        
$event->add(array('controller' => 'BASE_CTRL_User''action' => 'ajaxSignIn'));
        
$event->add(array('controller' => 'BASE_CTRL_ApiServer''action' => 'request'));
        
$event->add(array('controller' => 'BASE_CTRL_Unsubscribe''action' => 'index'));
       
        
$event->add(array('controller' => 'BASE_CTRL_AjaxLoader''action' => 'init'));
        
$event->add(array('controller' => 'BASE_CTRL_AjaxLoader''action' => 'component'));
        
$event->add(array('controller' => 'BASE_CTRL_Avatar''action' => 'ajaxResponder'));
    }

    public function 
onPreferenceMenuItemBASE_CLASS_EventCollector $event )
    {
        
$router PEEP_Router::getInstance();
        
$language PEEP::getLanguage();

        
$menuItem = new BASE_MenuItem();

        
$menuItem->setKey('preference');
        
$menuItem->setLabel($language->text('base''preference_menu_item'));
        
$menuItem->setIconClass('peep_ic_gear_wheel');
        
$menuItem->setUrl($router->urlForRoute('base_preference_index'));
        
$menuItem->setOrder(1);

        
$event->add($menuItem);
    }

    public function 
onDashboardMenuItemBASE_CLASS_EventCollector $event )
    {
        
$router PEEP_Router::getInstance();
        
$language PEEP::getLanguage();

        
$menuItems = array();

        
$menuItem = new BASE_MenuItem();

        
$menuItem->setKey('widget_panel');
        
$menuItem->setLabel($language->text('base''widgets_panel_dashboard_label'));
        
$menuItem->setIconClass('peep_ic_house');
        
$menuItem->setUrl($router->urlForRoute('base_member_dashboard'));
        
$menuItem->setOrder(1);

        
$event->add($menuItem);


        
$menuItem = new BASE_MenuItem();

        
$menuItem->setKey('profile_edit');
        
$menuItem->setLabel($language->text('base''edit_index'));
        
$menuItem->setIconClass('peep_ic_user');
        
$menuItem->setUrl($router->urlForRoute('base_edit'));
        
$menuItem->setOrder(2);

        
$event->add($menuItem);

        
$menuItem = new BASE_MenuItem();

        
$menuItem->setKey('preference');
        
$menuItem->setLabel($language->text('base''preference_index'));
        
$menuItem->setIconClass('peep_ic_gear_wheel');
        
$menuItem->setUrl($router->urlForRoute('base_preference_index'));
        
$menuItem->setOrder(4);

        
$event->add($menuItem);
    }

    public function 
onUserUnregisterDeleteDisaprovedPEEP_Event $event )
    {
        
$params $event->getParams();

        
$userId = (int) $params['userId'];
        
$userService BOL_UserService::getInstance();

        if ( !
$userService->isApproved($userId) )
        {
            return;
        }

        
$userService->deleteDisaproveByUserId($userId);
    }

    public function 
onUserUnregisterClearMailQueuePEEP_Event $event )
    {
        
$params $event->getParams();

        
$userId = (int) $params['userId'];
        
BOL_MailService::getInstance()->deleteQueuedMailsByRecipientId($userId);
    }

    public function 
onInviteMembersProcessJoinFormPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['code'] !== null )
        {
            
$info BOL_UserService::getInstance()->findInvitationInfo($params['code']);

            if ( 
$info !== null )
            {
                throw new 
JoinRenderException();
            }
        }
    }

    public function 
onActionToolbarAddUserBlockActionToolBASE_CLASS_EventCollector $event )
    {
        
$params $event->getParams();

        if ( !
PEEP::getUser()->isAuthenticated() )
        {
            return;
        }

        if ( empty(
$params['userId']) )
        {
            return;
        }

        if ( 
$params['userId'] == PEEP::getUser()->getId() )
        {
            return;
        }

        
$authorizationService BOL_AuthorizationService::getInstance();

        if ( 
$authorizationService->isActionAuthorizedForUser($params['userId'], 'base') || $authorizationService->isSuperModerator($params['userId']) )
        {
            return;
        }

        
$userId = (int) $params['userId'];

        
$resultArray = array();

        
$uniqId uniqid("block-");
        
$isBlocked BOL_UserService::getInstance()->isBlocked($userIdPEEP::getUser()->getId());

        
$resultArray[BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL] = $isBlocked PEEP::getLanguage()->text('base''user_unblock_btn_lbl') : PEEP::getLanguage()->text('base''user_block_btn_lbl');

        
$toggleText = !$isBlocked PEEP::getLanguage()->text('base''user_unblock_btn_lbl') : PEEP::getLanguage()->text('base''user_block_btn_lbl');

        
$resultArray[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_CLASS] = $isBlocked 'peep_mild_green' 'peep_mild_red';

        
$toggleClass = !$isBlocked 'peep_mild_green' 'peep_mild_red';

        
$resultArray[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ATTRIBUTES] = array();
        
$resultArray[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ATTRIBUTES]["data-command"] = $isBlocked "unblock" "block";

        
$toggleCommand = !$isBlocked "unblock" "block";

        
$resultArray[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF] = 'javascript://';
        
$resultArray[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID] = $uniqId;

        
$js UTIL_JsGenerator::newInstance();
        
$js->jQueryEvent("#" $uniqId"click"'var self = $(this); toggle = function() {
            PEEP.Utils.toggleText(self, e.data.toggleText);
            PEEP.Utils.toggleAttr(self, "class", e.data.toggleClass);
            PEEP.Utils.toggleAttr(self, "data-command", e.data.toggleCommand);
        };
        if ( self.attr("data-command") == "block" )
            PEEP.Users.blockUserWithConfirmation(e.data.userId, toggle);
        else {
            PEEP.Users.unBlockUser(e.data.userId);
            toggle();
        }'
            
, array("e"), array(
            
"userId" => $userId,
            
"toggleText" => $toggleText,
            
"toggleCommand" => $toggleCommand,
            
"toggleClass" => $toggleClass
        
));

        
PEEP::getDocument()->addOnloadScript($js);

        
$resultArray[BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY] = "base.block_user";
        
$resultArray[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER] = 8;

        
$event->add($resultArray);
    }

    public function 
onActionToolbarAddUserFeatureActionToolBASE_CLASS_EventCollector $event )
    {
        if ( !
PEEP::getUser()->isAuthorized('base') )
        {
            return;
        }

        
$params $event->getParams();

        if ( empty(
$params['userId']) )
        {
            return;
        }

        
$action = array(
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_KEY => 'base.moderation',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_LABEL => PEEP::getLanguage()->text('base''profile_toolbar_group_moderation'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 3
        
);

        
$userId = (int) $params['userId'];

        
$uniqId uniqid("feature-");
        
$isFeatured BOL_UserService::getInstance()->isUserFeatured($userId);

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL] = $isFeatured PEEP::getLanguage()->text('base''user_action_unmark_as_featured') : PEEP::getLanguage()->text('base''user_action_mark_as_featured');

        
$toggleText = !$isFeatured PEEP::getLanguage()->text('base''user_action_unmark_as_featured') : PEEP::getLanguage()->text('base''user_action_mark_as_featured');

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ATTRIBUTES] = array();
        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ATTRIBUTES]["data-command"] = $isFeatured "unfeature" "feature";

        
$toggleCommand = !$isFeatured "unfeature" "feature";

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF] = 'javascript://';
        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID] = $uniqId;

        
$js UTIL_JsGenerator::newInstance();
        
$js->jQueryEvent("#" $uniqId"click"'PEEP.Users[$(this).attr("data-command") == "feature" ? "featureUser" : "unFeatureUser"](e.data.userId);
         PEEP.Utils.toggleText(this, e.data.toggleText);
         PEEP.Utils.toggleAttr(this, "data-command", e.data.toggleCommand);'
            
, array("e"), array(
            
"userId" => $userId,
            
"toggleText" => $toggleText,
            
"toggleCommand" => $toggleCommand
        
));

        
PEEP::getDocument()->addOnloadScript($js);

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY] = "base.make_featured";
        
$event->add($action);
    }

    public function 
onActionToolbarAddUserApproveActionToolBASE_CLASS_EventCollector $event )
    {
        if ( !
PEEP::getUser()->isAdmin() )
        {
            return;
        }

        
$params $event->getParams();

        if ( empty(
$params['userId']) )
        {
            return;
        }

        
$userId = (int) $params['userId'];

        if ( 
BOL_UserService::getInstance()->isApproved($userId) )
        {
            return;
        }

        
$action = array(
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_KEY => 'base.moderation',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_LABEL => PEEP::getLanguage()->text('base''profile_toolbar_group_moderation'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF => PEEP::getRouter()->urlFor('BASE_CTRL_User''approve', array('userId' => $userId)),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => PEEP::getLanguage()->text('base''profile_toolbar_user_approve_label'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_CLASS => 'peep_mild_green',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => "base.approve_user"
        
);

        
$event->add($action);
    }

    public function 
onActionToolbarAddAuthActionToolBASE_CLASS_EventCollector $event )
    {
        if ( !
PEEP::getUser()->isAuthorized('base') )
        {
            return;
        }

        
$params $event->getParams();

        if ( empty(
$params['userId']) )
        {
            return;
        }

        
$userId = (int) $params['userId'];
        
$uniqId uniqid('change-role-');

        
$action = array(
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_KEY => 'base.moderation',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_LABEL => PEEP::getLanguage()->text('base''profile_toolbar_group_moderation'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID => $uniqId,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => PEEP::getLanguage()->text('base''authorization_give_user_role'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_CLASS => 'peep_mild_green',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 1,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => "base.change_role"
        
);

        
$event->add($action);

        
$js UTIL_JsGenerator::newInstance()->jQueryEvent('#' $uniqId'click''window.baseChangeUserRoleFB = PEEP.ajaxFloatBox("BASE_CMP_GiveUserRole", [e.data.userId], { width:556, title: e.data.title });', array('e'), array(
            
'userId' => $userId,
            
'title' => PEEP::getLanguage()->text('base''authorization_user_roles')
        ));

        
PEEP::getDocument()->addOnloadScript($js);
    }

    public function 
onActionToolbarAddSuspendActionToolBASE_CLASS_EventCollector $event )
    {
        if ( !
PEEP::getUser()->isAuthorized('base') )
        {
            return;
        }

        
$params $event->getParams();

        if ( empty(
$params['userId']) )
        {
            return;
        }

        if ( 
BOL_AuthorizationService::getInstance()->isSuperModerator($params['userId']) )
        {
            return;
        }

        
$userService BOL_UserService::getInstance();
        
$userId = (int) $params['userId'];

        
$action = array(
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_KEY => 'base.moderation',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_LABEL => PEEP::getLanguage()->text('base''profile_toolbar_group_moderation'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 4
        
);

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF] = 'javascript://';

        
$uniqId uniqid('pat-suspend-');
        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID] = $uniqId;

        
$toogleText null;
        
$toggleCommand null;
        
$toggleClass null;

        
$suspended $userService->isSuspended($userId);

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ATTRIBUTES] = array();
        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL] = $suspended PEEP::getLanguage()->text('base''user_unsuspend_btn_lbl') : PEEP::getLanguage()->text('base''user_suspend_btn_lbl');

        
$toggleText = !$suspended PEEP::getLanguage()->text('base''user_unsuspend_btn_lbl') : PEEP::getLanguage()->text('base''user_suspend_btn_lbl');

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ATTRIBUTES]["data-command"] = $suspended "unsuspend" "suspend";

        
$toggleCommand = !$suspended "unsuspend" "suspend";

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_CLASS] = $suspended "peep_mild_green" "peep_mild_red";

        
$toggleClass = !$suspended "peep_mild_green" "peep_mild_red";

        
$rsp PEEP::getRouter()->urlFor('BASE_CTRL_SuspendedUser''ajaxRsp');
        
$rsp PEEP::getRequest()->buildUrlQueryString($rsp, array(
            
"userId" => $userId
        
));
        
        
PEEP::getLanguage()->addKeyForJs('base''suspend_floatbox_title');
        
        
$displayName BOL_UserService::getInstance()->getDisplayName($userId);
        
        
$js UTIL_JsGenerator::newInstance();
        
$js->jQueryEvent("#" $uniqId"click"
            
            if ( $(this).attr("data-command") == "suspend" )  
            {
                PEEP.ajaxFloatBox("BASE_CMP_SetSuspendMessage", [e.data.userId],{width: 520, title: PEEP.getLanguageText('
base', 'suspend_floatbox_title', {'displayName': e.data.displayName})}); 
            }
            else
            {
                PEEP.trigger("base.on_suspend_command", ["unsuspend"])
            } '
            
, array("e"), array(
            
"userId" => $userId,
            
"toggleText" => $toggleText,
            
"toggleCommand" => $toggleCommand,
            
"toggleClass" => $toggleClass,
            
"displayName" => $displayName
        
));

        
$js->addScript' PEEP.bind("base.on_suspend_command", function( command, message ) {
                var element = $("#"+{$uniqId});

                PEEP.Users[command == "suspend" ? "suspendUser" : "unSuspendUser"]({$userId}, null, message);
                PEEP.Utils.toggleText(element, {$toggleText});
                PEEP.Utils.toggleAttr(element, "class", {$toggleClass});
                PEEP.Utils.toggleAttr(element, "data-command", {$toggleCommand});
                
             }); '
, array(
            
"uniqId" => $uniqId,
            
"userId" => $userId,
            
"toggleText" => $toggleText,
            
"toggleCommand" => $toggleCommand,
            
"toggleClass" => $toggleClass ) );
        
        
PEEP::getDocument()->addOnloadScript($js);

        
$action[BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY] = "base.suspend_user";

        
$event->add($action);
    }

    public function 
onActionToolbarAddFlagActionToolBASE_CLASS_EventCollector $event )
    {
        
$params $event->getParams();

        if ( !
PEEP::getUser()->isAuthenticated() )
        {
            return;
        }
        
        if ( 
BOL_AuthorizationService::getInstance()->isSuperModerator($params['userId']) 
                || 
$params['userId'] == PEEP::getUser()->getId() )
        {
            return;
        }

        
$userId = (int) $params['userId'];

        
$linkId 'ud' rand(101000000);
        
$script UTIL_JsGenerator::newInstance()->jQueryEvent('#' $linkId'click''PEEP.flagContent(e.data.entityType, e.data.entityId);'
            
, array('e'), array(
                
'entityType' => BASE_CLASS_ContentProvider::ENTITY_TYPE_PROFILE,
                
'entityId' => $userId
        
));

        
PEEP::getDocument()->addOnloadScript($script);

        
$resultArray = array(
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => PEEP::getLanguage()->text('base''flag'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF => 'javascript://',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID => $linkId,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 7,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => "base.flag_user"
        
);

        
$event->add($resultArray);
    }
    
    public function 
onActionToolbarAddDeleteActionToolBASE_CLASS_EventCollector $event )
    {
        if ( !
PEEP::getUser()->isAuthorized('base') )
        {
            return;
        }

        
$params $event->getParams();

        if ( empty(
$params['userId']) )
        {
            return;
        }

        if ( 
BOL_AuthorizationService::getInstance()->isSuperModerator($params['userId']) )
        {
            return;
        }

        
$userId = (int) $params['userId'];

        
$callbackUrl PEEP::getRouter()->urlFor('BASE_CTRL_User''userDeleted');

        
$linkId 'ud' rand(101000000);
        
$script UTIL_JsGenerator::newInstance()->jQueryEvent('#' $linkId'click''PEEP.Users.deleteUser(e.data.userId, e.data.callbackUrl, false);'
            
, array('e'), array('userId' => $userId'callbackUrl' => $callbackUrl));

        
PEEP::getDocument()->addOnloadScript($script);

        
$resultArray = array(
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => PEEP::getLanguage()->text('base''profile_toolbar_user_delete_label'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_CLASS => 'peep_mild_red',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF => 'javascript://',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID => $linkId,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_KEY => 'base.moderation',
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_GROUP_LABEL => PEEP::getLanguage()->text('base''profile_toolbar_group_moderation'),
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 5,
            
BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => "base.delete_user"
        
);

        
$event->add($resultArray);
    }

    public function 
onUserRegisterWelcomeLetterPEEP_Event $event )
    {
        
$params $event->getParams();

        
$userId = (int) $params['userId'];

        if ( 
$userId === )
        {
            return;
        }

        
BOL_PreferenceService::getInstance()->savePreferenceValue('send_wellcome_letter'1$userId);
    }

    public function 
onUserAvatarCommentFeedPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['entityType'] != 'avatar-change' )
        {
            return;
        }

        
$avatarId $params['entityId'];

        
$service BOL_AvatarService::getInstance();
        
$avatar $service->findAvatarById($avatarId);

        if ( !
$avatar )
        {
            return;
        }

        
$userId $avatar->userId;

        if ( 
$userId == $params['userId'] )
        {
            
$string = array('key' => 'base+feed_activity_avatar_string_own');
        }
        else
        {
            
$userName BOL_UserService::getInstance()->getDisplayName($userId);
            
$userUrl BOL_UserService::getInstance()->getUserUrl($userId);
            
$userEmbed '<a href="' $userUrl '">' $userName '</a>';

            
$string = array(
                
'key' => 'base+feed_activity_avatar_string',
                
'vars' => array('user' => $userEmbed)
            );
        }

        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.activity', array(
            
'activityType' => 'comment',
            
'activityId' => $params['userId'],
            
'entityId' => $params['entityId'],
            
'entityType' => $params['entityType'],
            
'userId' => $params['userId'],
            
'pluginKey' => 'base'
            
), array(
            
'string' => $string
        
)));
    }

    public function 
onUserAvatarLikeFeedPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['entityType'] != 'avatar-change' )
        {
            return;
        }

        
$avatarId $params['entityId'];

        
$service BOL_AvatarService::getInstance();
        
$avatar $service->findAvatarById($avatarId);

        if ( !
$avatar )
        {
            return;
        }

        
$userId $avatar->userId;

        if ( 
$userId == $params['userId'] )
        {
            
$string = array('key' => 'base+feed_activity_avatar_string_like_own');
        }
        else
        {
            
$userName BOL_UserService::getInstance()->getDisplayName($userId);
            
$userUrl BOL_UserService::getInstance()->getUserUrl($userId);
            
$userEmbed '<a href="' $userUrl '">' $userName '</a>';

            
$string = array(
                
'key' => 'base+feed_activity_avatar_string_like',
                
'vars' => array('user' => $userEmbed)
            );
        }

        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.activity', array(
            
'activityType' => 'like',
            
'activityId' => $params['userId'],
            
'entityId' => $params['entityId'],
            
'entityType' => $params['entityType'],
            
'userId' => $params['userId'],
            
'pluginKey' => 'base'
            
), array(
            
'string' => $string
        
)));
    }

    public function 
onLikeUserJoinPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['entityType'] != 'user_join' )
        {
            return;
        }

        
$userId $params['entityId'];

        
$userName BOL_UserService::getInstance()->getDisplayName($userId);
        
$userUrl BOL_UserService::getInstance()->getUserUrl($userId);
        
$userEmbed '<a href="' $userUrl '">' $userName '</a>';

        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.activity', array(
            
'activityType' => 'like',
            
'activityId' => $params['userId'],
            
'entityId' => $params['entityId'],
            
'entityType' => $params['entityType'],
            
'userId' => $params['userId'],
            
'pluginKey' => 'base'
            
), array(
            
'string' => array(
                
'key' => 'base+feed_activity_join_profile_string_like',
                
'vars' => array('user' => $userEmbed)
            )
        )));
    }

    public function 
onUserJoinCommentFeedPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['entityType'] != 'user_join' )
        {
            return;
        }

        
$userId $params['entityId'];

        
$userName BOL_UserService::getInstance()->getDisplayName($userId);
        
$userUrl BOL_UserService::getInstance()->getUserUrl($userId);
        
$userEmbed '<a href="' $userUrl '">' $userName '</a>';

        
PEEP::getEventManager()->trigger(new PEEP_Event('feed.activity', array(
            
'activityType' => 'comment',
            
'activityId' => $params['commentId'],
            
'entityId' => $params['entityId'],
            
'entityType' => $params['entityType'],
            
'userId' => $params['userId'],
            
'pluginKey' => 'base'
            
), array(
            
'string' => array(
                
'key' => 'base+feed_activity_join_profile_string',
                
'vars' => array('user' => $userEmbed)
            )
        )));
    }

    public function 
onJoinFeedPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['method'] != 'native' )
        {
            return;
        }

        
$userId = (int) $params['userId'];

        
$event = new PEEP_Event('feed.action', array(
            
'pluginKey' => 'base',
            
'entityType' => 'user_join',
            
'entityId' => $userId,
            
'userId' => $userId,
            
'replace' => true
            
), array(
            
'string' => array('key' => 'base+feed_user_join'),
            
'view' => array(
                
'iconClass' => 'peep_ic_user'
            
)
        ));
        
PEEP::getEventManager()->trigger($event);
    }

    public function 
onUserEditFeedPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( 
$params['method'] != 'native' )
        {
            return;
        }

        
$userId = (int) $params['userId'];

        
$event = new PEEP_Event('feed.action', array(
            
'pluginKey' => 'base',
            
'entityType' => 'user_edit',
            
'entityId' => $userId,
            
'userId' => $userId,
            
'replace' => true
            
), array(
            
'string' => array('key' => 'base+feed_user_edit_profile'),
            
'data' => array(
                
'userId' => $userId
            
),
            
'features' => array(),
            
'view' => array(
                
'iconClass' => 'peep_ic_user'
            
)
        ));
        
PEEP::getEventManager()->trigger($event);
    }

    public function 
onJoinMandatoryUserApprovePEEP_Event $event )
    {
        
$params $event->getParams();

        if ( !
PEEP::getConfig()->getValue('base''mandatory_user_approve') )
        {
            
$e = new PEEP_Event(PEEP_EventManager::ON_USER_APPROVE, array('userId' => (int) $params['userId']));
            
PEEP::getEventManager()->trigger($e);

            return;
        }

        
BOL_UserService::getInstance()->disapprove((int) $params['userId']);
    }

    public function 
onAddGlobalLangsBASE_CLASS_EventCollector $event )
    {
        
$event->add(array('site_name' => PEEP::getConfig()->getValue('base''site_name')));
        
$event->add(array('site_url' => PEEP_URL_HOME));
        
$event->add(array('site_email' => PEEP::getConfig()->getValue('base''site_email')));
        
$event->add(array('default_currency' => BOL_BillingService::getInstance()->getActiveCurrency()));
    }

    public function 
onDeleteUserContentPEEP_Event $event )
    {
        
$params $event->getParams();

        
$userId = (int) $params['userId'];

        if ( 
$userId )
        {
            
$moderatorId BOL_AuthorizationService::getInstance()->getModeratorIdByUserId($userId);
            if ( 
$moderatorId !== null )
            {
                
BOL_AuthorizationService::getInstance()->deleteModerator($moderatorId);
            }

            
BOL_AuthorizationService::getInstance()->deleteUserRolesByUserId($userId);

            if ( isset(
$params['deleteContent']) && (bool) $params['deleteContent'] )
            {
                
BOL_CommentService::getInstance()->deleteUserComments($userId);
                
BOL_RateService::getInstance()->deleteUserRates($userId);
                
BOL_VoteService::getInstance()->deleteUserVotes($userId);
            }

            
//delete widgets
            
BOL_ComponentEntityService::getInstance()->onEntityDelete(BOL_ComponentEntityService::PLACE_DASHBOARD$userId);
            
BOL_ComponentEntityService::getInstance()->onEntityDelete(BOL_ComponentEntityService::PLACE_PROFILE$userId);

            
// delete email verify
            
BOL_EmailVerifyService::getInstance()->deleteByUserId($userId);

            
// delete remote auth info
            
BOL_RemoteAuthService::getInstance()->deleteByUserId($userId);

            
// delete user auth token
            
BOL_AuthTokenDao::getInstance()->deleteByUserId($userId);
        }
    }

    public function 
sosialSharingGetUserInfoPEEP_Event $event )
    {
        
$params $event->getParams();
        
$data $event->getData();
        
$data['display'] = false;

        if ( empty(
$params['entityId']) )
        {
            return;
        }

        if ( !empty(
$params['entityId']) && $params['entityType'] == 'user' )
        {
            
$user BOL_UserService::getInstance()->findUserById($params['entityId']);

            
$displaySocialSharing true;

            if ( !
BOL_AuthorizationService::getInstance()->isActionAuthorizedForGuest('base''view_profile') )
            {
                
$displaySocialSharing false;
            }

            
$eventParams = array(
                
'action' => 'base_view_profile',
                
'ownerId' => $user->id,
                
'viewerId' => 0
            
);

            try
            {
                
PEEP::getEventManager()->getInstance()->call('privacy_check_permission'$eventParams);
            }
            catch ( 
RedirectException $ex )
            {
                
$displaySocialSharing false;
            }

            if ( !empty(
$user) )
            {
                
$data['display'] = $displaySocialSharing;
            }

            
$event->setData($data);
        }
    }

    public function 
setAccountTypeUserRoleOnUserRegisterPEEP_Event $event )
    {
        
$params $event->getParams();

        if ( empty(
$params['userId']) )
        {
            return;
        }

        
$user BOL_UserService::getInstance()->findUserById($params['userId']);

        if ( empty(
$user) )
        {
            return;
        }

        
$accountType $user->accountType;

        if ( empty(
$accountType) )
        {
            return;
        }

        
$accountTypeDto BOL_QuestionService::getInstance()->findAccountTypeByName($accountType);

        if ( empty(
$accountTypeDto) || empty($accountTypeDto->roleId) )
        {
            return;
        }

        
BOL_AuthorizationService::getInstance()->deleteUserRole($user->id$accountTypeDto->roleId);
        
BOL_AuthorizationService::getInstance()->saveUserRole($user->id$accountTypeDto->roleId);
    }

    public function 
setUserRoleOnChangeAccountTypePEEP_Event $event )
    {
        
$params $event->getParams();

        if ( empty(
$params['dto']) || !($params['dto'] instanceof BOL_User ) )
        {
            return;
        }

        
$user $params['dto'];

        
$newAccountType $user->accountType;
        
$oldAccountType null;

        if ( empty(
$user->id) )
        {
            return;
        }

        
$oldUser BOL_UserService::getInstance()->findByIdWithoutCache($user->id);

        if ( !empty(
$oldUser) )
        {
            
$oldAccountType $oldUser->accountType;
        }

        if ( 
$newAccountType === $oldAccountType )
        {
            return;
        }

        if ( !empty(
$newAccountType) )
        {
            if ( !empty(
$oldAccountType) )
            {
                
$oldAccountTypeDto BOL_QuestionService::getInstance()->findAccountTypeByName($oldAccountType);

                
/* @var $defaultRole BOL_AuthorizationRole */
                
$defaultRole BOL_AuthorizationService::getInstance()->getDefaultRole();

                if ( !empty(
$oldAccountTypeDto) && !empty($oldAccountTypeDto->roleId) && $oldAccountTypeDto->roleId != $defaultRole->id )
                {
                    
BOL_AuthorizationService::getInstance()->deleteUserRole($user->id$oldAccountTypeDto->roleId);
                }
            }

            
$accountTypeDto BOL_QuestionService::getInstance()->findAccountTypeByName($newAccountType);

            if ( !empty(
$accountTypeDto) && !empty($accountTypeDto->roleId) )
            {
                
BOL_AuthorizationService::getInstance()->deleteUserRole($user->id$accountTypeDto->roleId);
                
BOL_AuthorizationService::getInstance()->saveUserRole($user->id$accountTypeDto->roleId);
            }
        }
    }

    public function 
addFakeQuestionsPEEP_Event $e )
    {
        
$params $e->getParams();

        if ( !empty(
$params['name']) && $params['name'] == 'email' )
        {
            
$e->setData(false);
        }
    }
    
    public function 
onAfterAvatarUpdatePEEP_Event $e )
    {
        
$params $e->getParams();
        
        if ( !empty(
$params['trackAction']) && $params['trackAction'] == true )
        {
            if ( !empty(
$params['avatarId']) && !empty($params['userId']) )
            {
                
BOL_AvatarService::getInstance()->trackAvatarChangeActivity($params['userId'], $params['avatarId']);
            }
        }
    }
}
Онлайн: 0
Реклама