/** * Регистрирует новое личное сообщение. * * @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); }
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; }
$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) {
/** * Добавление личного сообщения * * @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; }