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
<?php

//exit;
//https://beta.free-lance.ru/mantis/view.php?id=28663
ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE);
ini_set('max_execution_time', 0);
ini_set('memory_limit', '512M');
if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) {
    $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/');
}
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php';
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';
/*
$text = '
    F??©d?ration Camerounaise de Football
    when it is rendered on the browser it displays J???lio C?
';*/
$text = 'Привет как дела???';
$from_uid = 237958;
$uid = 238766;
externalApi_Mobile::addPushMsg($from_uid, 'message', array('from_user_id' => $uid, 'text' => stripslashes($text)));
//echo json_encode(pack("H*" ,'c32e'));
echo json_last_error();
function RefuseProjectOffer($po_id, $prj_id, $user_id, $type, $po_reason = 0)
{
    global $session;
    session_start();
    $user = new users();
    $prj = new projects();
    $prj_offer = new projects_offers();
    $po_id = intval($po_id);
    $prj_id = intval($prj_id);
    $po_reason = intval($po_reason);
    $user_id = intval($user_id);
    $user_name = $user->GetName($user_id, $error);
    $emp_id = get_uid(false);
    $emp_name = $user->GetName($emp_id, $error);
    $pod = new projects_offers_dialogue();
    $pod->markReadEmp(array($po_id), $emp_id);
    $objResponse = new xajaxResponse();
    //Не позволяем производить действия с заблокированным проектом
    if (projects::CheckBlocked(intval($prj_id))) {
        $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($prj_id) . "'");
    } else {
        $error = '';
        $project = $prj->GetPrjCust($prj_id);
        if ($project['exec_id'] == $user_id) {
            $error = $prj->ClearExecutor($prj_id, $emp_id);
        }
        if (!$error) {
            $error .= ($error ? ' ' : '') . $prj_offer->SetRefused($po_id, $prj_id, $user_id, $po_reason, true);
            $project = $prj->GetPrjCust($prj_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($user_id, 'prj_select_reject', array('from_user_id' => $project['user_id'], 'name' => $project['name'], 'project_id' => $project['id']));
            list($po_offers_count, $msg_offers_count) = $prj_offer->CountPrjOffers($prj_id, 'offers');
            $objResponse->assign('po_offers_count', 'innerHTML', $po_offers_count);
            if ($msg_offers_count > 0) {
                $objResponse->assign('op_count_offers_new_msgs', 'innerHTML', '<img src="/images/ico_envelop.gif" alt="" width="10" height="8" border="0"> ' . $msg_offers_count . ' ' . ending($msg_offers_count, 'новое сообщение', 'новых сообщения', 'новых сообщений'));
            } else {
                $objResponse->assign('op_count_offers_new_msgs', 'innerHTML', '');
                if ($type == 'o') {
                    $objResponse->remove('sort_box');
                }
            }
            list($po_executor_count, $msg_executor_count) = $prj_offer->CountPrjOffers($prj_id, 'executor');
            $objResponse->assign('po_executor_count', 'innerHTML', $po_executor_count);
            if ($msg_executor_count > 0) {
                $objResponse->assign('op_count_executor_new_msgs', 'innerHTML', '<img src="/images/ico_envelop.gif" alt="" width="10" height="8" border="0"> ' . $msg_executor_count . ' ' . ending($msg_executor_count, 'новое сообщение', 'новых сообщения', 'новых сообщений'));
            } else {
                $objResponse->assign('op_count_executor_new_msgs', 'innerHTML', '');
                if ($type == 'i') {
                    $objResponse->remove('sort_box');
                }
            }
            list($po_candidate_count, $msg_candidate_count) = $prj_offer->CountPrjOffers($prj_id, 'candidate');
            $objResponse->assign('po_candidate_count', 'innerHTML', $po_candidate_count);
            if ($msg_candidate_count > 0) {
                $objResponse->assign('op_count_candidate_new_msgs', 'innerHTML', '<img src="/images/ico_envelop.gif" alt="" width="10" height="8" border="0"> ' . $msg_candidate_count . ' ' . ending($msg_candidate_count, 'новое сообщение', 'новых сообщения', 'новых сообщений'));
            } else {
                $objResponse->assign('op_count_candidate_new_msgs', 'innerHTML', '');
                if ($type == 'c') {
                    $objResponse->remove('sort_box');
                }
            }
            list($po_refuse_count, $msg_refuse_count) = $prj_offer->CountPrjOffers($prj_id, 'refuse');
            $objResponse->assign('po_refuse_count', 'innerHTML', $po_refuse_count);
            if ($msg_refuse_count > 0) {
                $objResponse->assign('op_count_refuse_new_msgs', 'innerHTML', '<img src="/images/ico_envelop.gif" alt="" width="10" height="8" border="0"> ' . $msg_refuse_count . ' ' . ending($msg_refuse_count, 'новое сообщение', 'новых сообщения', 'новых сообщений'));
            } else {
                if ($type == 'r') {
                    $objResponse->remove('sort_box');
                }
                $objResponse->assign('op_count_refuse_new_msgs', 'innerHTML', '');
            }
            //$objResponse->assign("po_b_exec_" . $po_id, "innerHTML", '<a id="po_img_exec_' . $po_id . '" class="b-button-multi__link" onclick="xajax_SelectProjectExecutor(' . $po_id . ', ' . $prj_id . ', ' . $user_id . ', ' . "'" . $type . "'" . ', ' . 0 . ');" href="javascript:void(0)" title="Буду работать с этим человеком."><span class="b-button-multi__inner"><span class="b-button-multi__icon b-button-multi__icon_green"></span><span class="b-button-multi__txt">Исполнитель</span></span></a>');
            //$objResponse->assign("po_b_select_" . $po_id, "innerHTML", '<a id="po_img_select_' . $po_id . '" class="b-button-multi__link" onclick="xajax_SelectProjectOffer(' . $po_id . ', ' . $prj_id . ', ' . $user_id  . ', ' . "'" . $type . "'" . ');" href="javascript:void(0)" title="Прошел предварительный отбор. Может быть исполнителем"><span class="b-button-multi__inner"><span class="b-button-multi__icon b-button-multi__icon_blue"></span><span class="b-button-multi__txt">Кандидат</span></span></a>');
            //$objResponse->assign("po_b_refuse_" . $po_id, "innerHTML", '<a id="po_img_refuse_' . $po_id . '" class="b-button-multi__link"  href="javascript:void(0)" title="Этот человек мне не подходит.  Может быть в следующий раз."><span class="b-button-multi__inner"><span class="b-button-multi__icon b-button-multi__icon_red"></span><span class="b-button-multi__txt">Отказано</span></span></a>');
            $objResponse->script("removeNoteBar('{$user_name['login']}');");
            $objResponse->remove('po_' . $po_id);
            $objResponse->remove('po_u_' . $po_id);
            $objResponse->remove('po_bar_' . $po_id);
        }
        --$_SESSION['offers_on_page'];
        if ($_SESSION['offers_on_page'] == 0) {
            $objResponse->script("document.location.href='/projects/index.php?pid=" . intval($prj_id) . '&type=' . $type . "'");
        }
    }
    return $objResponse;
}
Example #4
0
                     $comment = change_q_x(antispam(substr(stripslashes($_POST['comment']), 0, 30000)), false, true, 'b|br|i|p|ul|li|cut|h[1-6]{1}', false, false);
                     if (!($er = $contest->CreateOffer($comment, $_POST['files'], $comm_blocked))) {
                         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($project['user_id'], 'prj_response', array('from_user_id' => get_uid(false), 'name' => $project['name'], 'prj_id' => $project['id']));
                         header('Location: ' . getFriendlyURL('project', $project['id']) . "?offer={$contest->new_oid}");
                         exit;
                     }
                 }
             } else {
                 $obj_offer->AddOfferKon($uid, $project['id'], antispam($_POST['ps_text']), $_POST['ps_work_pict'], $_POST['ps_work_prev_pict'], false);
                 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($project['user_id'], 'prj_response', array('from_user_id' => get_uid(false), 'name' => $project['name'], 'prj_id' => $project['id']));
                 header('Location: ' . getFriendlyURL('project', $project['id']) . '?' . $from_prm_s);
                 exit;
             }
         }
     }
     break;
 case 'change':
     $hash = __paramInit('string', null, 'hash');
     if ($hash != md5($project['id'] . $uid . projects_offers::SALT)) {
         header('Location: ' . getFriendlyURL('project', $project['id']));
         exit;
     }
     if ($project['pro_only'] == 't' && !$is_pro && $project['user_id'] != $_SESSION['uid'] && !hasPermissions('projects')) {
         header('Location: ' . getFriendlyURL('project', $project['id']));
         exit;