Example #1
0
 /**
  * Регистрирует новое личное сообщение.
  *
  * @param int    $user_id               id пользователя-отправителя 
  * @param string $target_login          логин пользователя-получателя
  * @param string $text                  текст сообщения
  * @param array  $files                 прикрепленные файлы
  * @param int    $force                 разрешение/отказ ответа на письмо (1/0)
  * @param bool   $skip_mail             Если TRUE - не отправлять уведомление о новом сообщении на емайл.
  * @param string $attachedfiles_session ID сессии загруженных файлов
  *
  * @return mixed сообщение об ошибке и флаг ошибки в случае ее возниконовения
  */
 public function Add($user_id, $target_login, $text, $files, $force = 0, $skip_mail = false, $attachedfiles_session = null, &$message_id = 0)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/ignor.php';
     $users = new users();
     $login = $users->GetName($user_id, $err);
     $tar_id = $users->GetUid($err, $target_login);
     if ((ignor::CheckIgnored($tar_id, $user_id) || in_array($target_login, array('admin', 'Anonymous'))) && !$force) {
         $error = 'Пользователь запретил отправлять ему сообщения';
     } else {
         if ($files) {
             if (count($files) > self::MAX_FILES) {
                 $alert[1] = 'Вы не можете прикрепить больше ' . self::MAX_FILES . ' файлов к сообщению.';
             } else {
                 $max_file_size = self::MAX_FILE_SIZE;
                 foreach ($files as $file) {
                     $ext = $file->getext();
                     $file->max_size = $max_file_size;
                     $max_file_size -= $file->size;
                     if (!in_array($ext, $GLOBALS['disallowed_array'])) {
                         $f_name = $file->MoveUploadedFile($login['login'] . '/contacts');
                         if (!isNulArray($file->error)) {
                             if ($max_file_size < 0) {
                                 $alert[1] = 'Вы превысили максимально допустимый размер файлов';
                             } else {
                                 $alert[1] = $GLOBALS['PDA'] ? 'Файл не удовлетворяет условиям загрузки' : 'Один или несколько файлов не удовлетворяют условиям загрузки.';
                             }
                             break;
                         }
                     } else {
                         $alert[1] = $GLOBALS['PDA'] ? 'Файл не удовлетворяет условиям загрузки' : 'Один или несколько файлов имеют неправильный формат.';
                     }
                 }
             }
         }
         if (empty($alert) && empty($error)) {
             $memBuff = new memBuff();
             // автоматические папки для массовых рассылок личных менеджеров
             global $aPmUserUids;
             if (in_array($tar_id, $aPmUserUids) || SERVER === 'local' || SERVER === 'beta' || SERVER === 'alpha') {
                 $DBproxy = new DB();
                 $nRecId = $DBproxy->val('SELECT mess_pm_ustf_add(?i, ?i)', $tar_id, $user_id);
                 if ($nRecId) {
                     $memBuff->delete('pmAutoFolder' . $tar_id . '_' . $nRecId);
                 }
             }
             //---------------------------------------------
             $DB = new DB();
             $f = array();
             if ($files) {
                 foreach ($files as $file) {
                     $f[] = $file->id;
                 }
             }
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/attachedfiles.php';
             $attachedfiles = new attachedfiles($attachedfiles_session);
             $attachedfiles_files = $attachedfiles->getFiles();
             if ($attachedfiles_files) {
                 foreach ($attachedfiles_files as $attachedfiles_file) {
                     $cFile = new CFile($attachedfiles_file['id']);
                     $cFile->table = 'file';
                     $ext = $cFile->getext();
                     $tmp_dir = 'users/' . substr($login['login'], 0, 2) . '/' . $login['login'] . '/contacts/';
                     $tmp_name = $cFile->secure_tmpname($tmp_dir, '.' . $ext);
                     $tmp_name = substr_replace($tmp_name, '', 0, strlen($tmp_dir));
                     $cFile->_remoteCopy($tmp_dir . $tmp_name, true);
                     $f[] = $cFile->id;
                 }
             }
             $attachedfiles->clear();
             $aNoMod = array_merge($GLOBALS['aContactsNoMod'], $GLOBALS['aPmUserUids']);
             //$bNoMod = hasPermissions('streamnomod', $user_id) || hasPermissions('streamnomod', $tar_id) || is_pro(true, $user_id) || is_pro(true, $tar_id) || in_array($user_id, $aNoMod);
             $bNoMod = true;
             // #0022344: Убрать из потоков личку
             $message_id = $DB->val('SELECT messages_add(?i, ?i, ?, ?b, ?a, ?b)', $user_id, $tar_id, $text, $skip_mail, $f, $bNoMod);
             if ($user_id % 2 == $tar_id % 2) {
                 $memBuff->delete(self::MEMBUFF_CHAT_PREFIX . $tar_id);
             }
             if ($message_id && !$skip_mail && !QChat::active($tar_id)) {
                 $mail = new pmail();
                 $mail->NewMessage($user_id, $tar_id, stripslashes($text));
             }
             if ($message_id) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/base.php';
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/api/api.php';
                 require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/external/api/mobile.php';
                 externalApi_Mobile::addPushMsg($tar_id, 'message', array('from_user_id' => get_uid(false), 'text' => stripslashes($text)));
             }
         }
     }
     return array($alert, $error);
 }
Example #2
0
function ChFolderInner($folder_id, $login)
{
    session_start();
    $objResponse = new xajaxResponse();
    $folder_id = intval($folder_id);
    $user = new users();
    $user->GetUser($login);
    if (!$user->is_banned) {
        $login = addslashes($login);
        $uid = get_uid(false);
        if ($folder_id && $login && $folder_id > 0) {
            $fld = new mess_ustf();
            $fld->from_id = $uid;
            $fld->folder = $folder_id;
            $passive = $fld->Change($login);
        }
        if ($folder_id < 0) {
            if ($folder_id == -1) {
                $fld = new teams();
                $fld->user_id = $uid;
                $passive = !$fld->teamsInverseFavorites($login);
            }
            if ($folder_id == -2) {
                $fld = new ignor();
                $fld->user_id = $uid;
                require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/memBuff.php";
                $passive = !$fld->Change($login);
                $memBuff = new memBuff();
                $memBuff->delete("msgsCnt" . $uid);
                $objResponse->script("GetNewMsgCount();");
            }
            if ($folder_id == -3) {
                $passive = messages::DeleteFromUsers($login);
                $objResponse->addScrip("document.location='/contacts/';");
            }
        }
        if ($passive) {
            $objResponse->assign("folder" . $folder_id, "className", "active");
            $objResponse->assign("vfolder" . $folder_id, "className", "active");
        } else {
            $objResponse->assign("folder" . $folder_id, "className", "");
            $objResponse->assign("vfolder" . $folder_id, "className", "passive");
        }
    }
    return $objResponse;
}
Example #3
0
        $user = new users();
        $user->GetUser($chat_with);
        if (!is_pro(true, $user->uid) && !is_emp($user->role) && count($dialog) == 0 && is_emp($_SESSION['role'])) {
            $is_contact_splash = true;
        }
        if ($user->login == '') {
            header("Location: /404.php");
        }
        // Если пользователь забанен
        if ($user->is_banned && !hasPermissions('users')) {
            $error_flag = 1;
            $alert[3] = "Этот пользователь заблокирован. Вы не можете отправить ему личное сообщение";
        }
        $dlg_user = users::GetUid($err, $user->login);
        $dlg_user_login = $user->login;
        if ($post_denied = ignor::CheckIgnored($dlg_user, $_SESSION['uid']) || in_array($user->login, array('admin', 'Anonymous'))) {
            $error = "Пользователь запретил отправлять ему сообщения";
        }
        if (!$post_denied && is_emp($user->role)) {
            $is_allow_messages = messages::isAllowed($user->uid, $uid);
            $post_denied = !$is_allow_messages;
        }
        $prjname = $_POST['prjname'];
        $cnt_role = substr($user->role, 0, 1) == '0' ? "frl" : "emp";
        require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/memBuff.php";
        $memBuff = new memBuff();
        $memBuff->delete("msgsCnt" . get_uid(false));
        #		$css_file = "";
    }
} else {
    switch ($page) {
Example #4
0
 /**
  * Добавление личного сообщения
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____messages_send($aParams = array())
 {
     $this->_validDevice($aParams);
     $nUid = get_uid(false);
     $nTo = intvalPgSql($aParams['to_id']);
     if (!empty($nTo)) {
         require_once ABS_PATH . '/classes/users.php';
         $oUser = new users();
         $oUser->GetUserByUID($nTo);
         if ($oUser->uid) {
             if ($oUser->uid != $nUid) {
                 if (empty($oUser->is_banned)) {
                     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/ignor.php';
                     $bIgnor = ignor::CheckIgnored($oUser->uid, $nUid) || in_array($oUser->login, array('admin', 'Anonymous'));
                     if (!$bIgnor) {
                         $sMessage = __paramValue('html', antispam(iconv('utf-8', 'cp1251', $aParams['text'])), null, true);
                         if (!$sMessage || trim($sMessage) == '') {
                             $this->error(EXTERNAL_ERR_EMPTY_MESSAGE);
                         } elseif ($sMessage && strlen($sMessage) > $this->_mCfg['text_limit']) {
                             $this->error(EXTERNAL_ERR_LENGTH_MESSAGE);
                         }
                         require_once ABS_PATH . '/classes/messages.php';
                         list($alert, $error) = messages::Add($nUid, $oUser->login, $sMessage, array(), 0, false, null, $sId);
                         if (!$error && isNulArray($alert)) {
                             messages::updateSendLog($nUid);
                         } else {
                             $this->error(EXTERNAL_ERR_SERVER_ERROR);
                         }
                         $aResult = array("message" => array("id" => $sId, "from_id" => $nUid, "to_id" => $oUser->uid, "text" => $aParams['text'], "status" => 1, "read" => 0, "create_time" => time(), "update_time" => time()));
                     } else {
                         $this->error(EXTERNAL_ERR_MESSAGE_IGNOR);
                     }
                 } else {
                     $this->error(EXTERNAL_ERR_USER_BANNED);
                 }
             } else {
                 $this->error(EXTERNAL_ERR_SELF_MESSAGE);
             }
         } else {
             $this->error(EXTERNAL_ERR_USER_NOTFOUND);
         }
     } else {
         $this->error(EXTERNAL_ERR_EMPTY_USER_ID);
     }
     return $aResult;
 }