Ejemplo n.º 1
0
    public function sendPrivateMessageActionTool(BASE_CLASS_EventCollector $event)
    {
        $params = $event->getParams();
        if (empty($params['userId'])) {
            return;
        }
        $userId = (int) $params['userId'];
        if (OW::getUser()->getId() == $userId) {
            return;
        }
        $activeModeList = $this->service->getActiveModeList();
        $mailModeEnabled = in_array('mail', $activeModeList) ? true : false;
        $chatModeEnabled = in_array('chat', $activeModeList) ? true : false;
        if (!$mailModeEnabled) {
            if (!$chatModeEnabled) {
                return;
            } else {
                if (!OW::getUser()->isAuthorized('mailbox', 'send_chat_message')) {
                    $status = BOL_AuthorizationService::getInstance()->getActionStatus('mailbox', 'send_chat_message');
                    if ($status['status'] == BOL_AuthorizationService::STATUS_PROMOTED) {
                        $linkId = 'mb' . rand(10, 1000000);
                        $linkSelector = '#' . $linkId;
                        $script = UTIL_JsGenerator::composeJsString('$({$linkSelector}).click(function(){

                OW.authorizationLimitedFloatbox(' . json_encode($status['msg']) . ');

                });', array('linkSelector' => $linkSelector));
                        OW::getDocument()->addOnloadScript($script);
                        $resultArray = array(BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => OW::getLanguage()->text('mailbox', 'send_message'), BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF => 'javascript://', BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID => $linkId, BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => "mailbox.send_message", BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 0);
                        $event->add($resultArray);
                    }
                    return;
                }
                $checkResult = $this->service->checkUser(OW::getUser()->getId(), $userId);
                if (!$checkResult['isSuspended']) {
                    $canInvite = $this->service->getInviteToChatPrivacySettings(OW::getUser()->getId(), $userId);
                    if (!$canInvite) {
                        $checkResult['isSuspended'] = true;
                        $checkResult['suspendReasonMessage'] = OW::getLanguage()->text('mailbox', 'warning_user_privacy_friends_only', array('displayname' => BOL_UserService::getInstance()->getDisplayName($userId)));
                    }
                }
                if ($checkResult['isSuspended']) {
                    $linkId = 'mb' . rand(10, 1000000);
                    $script = "\$('#" . $linkId . "').click(function(){\n\n                window.OW.error(" . json_encode($checkResult['suspendReasonMessage']) . ");\n\n            });";
                    OW::getDocument()->addOnloadScript($script);
                } else {
                    $linkId = 'mb' . rand(10, 1000000);
                    $linkSelector = '#' . $linkId;
                    $data = $this->service->getUserInfo($userId);
                    $script = UTIL_JsGenerator::composeJsString('$({$linkSelector}).click(function(){

                var userData = {$data};

                $.post(OWMailbox.openDialogResponderUrl, {
                    userId: userData.opponentId,
                    checkStatus: 2
                }, function(data){

                    if ( typeof data != \'undefined\'){
                        if ( typeof data[\'warning\'] != \'undefined\' && data[\'warning\'] ){
                            OW.message(data[\'message\'], data[\'type\']);
                            return;
                        }
                        else{
                            if (data[\'use_chat\'] && data[\'use_chat\'] == \'promoted\'){
                                OW.Mailbox.contactManagerView.showPromotion();
                            }
                            else{
                                OW.Mailbox.usersCollection.add(data);
                                OW.trigger(\'mailbox.open_dialog\', {convId: data[\'convId\'], opponentId: data[\'opponentId\'], mode: \'chat\'});
                            }
                        }
                    }
                }, \'json\').complete(function(){

                        $(\'#ow_chat_now_\'+userData.opponentId).removeClass(\'ow_hidden\');

                        $(\'#ow_preloader_content_\'+userData.opponentId).addClass(\'ow_hidden\');
                    });

            });', array('linkSelector' => $linkSelector, 'data' => $data));
                    OW::getDocument()->addOnloadScript($script);
                }
                $resultArray = array(BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => OW::getLanguage()->text('mailbox', 'send_message'), BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF => 'javascript://', BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID => $linkId, BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => "mailbox.send_message", BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 0);
                $event->add($resultArray);
                return;
            }
        }
        if (!OW::getUser()->isAuthorized('mailbox', 'send_message')) {
            $status = BOL_AuthorizationService::getInstance()->getActionStatus('mailbox', 'send_message');
            if ($status['status'] == BOL_AuthorizationService::STATUS_PROMOTED) {
                $linkId = 'mb' . rand(10, 1000000);
                $linkSelector = '#' . $linkId;
                $script = UTIL_JsGenerator::composeJsString('$({$linkSelector}).click(function(){

                OW.authorizationLimitedFloatbox(' . json_encode($status['msg']) . ');

                });', array('linkSelector' => $linkSelector));
                OW::getDocument()->addOnloadScript($script);
                $resultArray = array(BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => OW::getLanguage()->text('mailbox', 'create_conversation_button'), BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF => 'javascript://', BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID => $linkId, BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => "mailbox.send_message", BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 0);
                $event->add($resultArray);
            }
            return;
        }
        $checkResult = $this->service->checkUser(OW::getUser()->getId(), $userId);
        if ($checkResult['isSuspended']) {
            $linkId = 'mb' . rand(10, 1000000);
            $script = "\$('#" . $linkId . "').click(function(){\n\n                window.OW.error(" . json_encode($checkResult['suspendReasonMessage']) . ");\n\n            });";
            OW::getDocument()->addOnloadScript($script);
        } else {
            $linkId = 'mb' . rand(10, 1000000);
            $linkSelector = '#' . $linkId;
            $data = $this->service->getUserInfo($userId);
            $script = UTIL_JsGenerator::composeJsString('$({$linkSelector}).click(function(){

                var data = {$data};

                OW.trigger("mailbox.open_new_message_form", data);

            });', array('linkSelector' => $linkSelector, 'data' => $data));
            OW::getDocument()->addOnloadScript($script);
        }
        $resultArray = array(BASE_CMP_ProfileActionToolbar::DATA_KEY_LABEL => OW::getLanguage()->text('mailbox', 'create_conversation_button'), BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_HREF => 'javascript://', BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ID => $linkId, BASE_CMP_ProfileActionToolbar::DATA_KEY_ITEM_KEY => "mailbox.send_message", BASE_CMP_ProfileActionToolbar::DATA_KEY_LINK_ORDER => 0);
        $event->add($resultArray);
    }