Example #1
0
 /**
  * События в заказе ТУ
  * 
  * @return array
  */
 public static function getTServicesOrdersTip()
 {
     $uid = get_uid(FALSE);
     $is_emp = is_emp();
     $tips = array("Новое сообщение в заказе", "В заказах %d %s", "Новое событие в заказе", "В заказах %d %s и %d %s");
     $msg_ending = array("новое сообщение", "новых сообщения", "новых сообщений");
     $event_ending = array("новое событие", "новых события", "новых событий");
     $tip = 'Мои заказы';
     $link = '';
     //@todo: здесь используются каунты без кеша
     //по мере заполнения БД они будут тормозить. Нужно переделать!
     $tserviceMsgModel = TServiceMsgModel::model();
     $newTserviceMsgCount = $tserviceMsgModel->countNew($uid);
     $tserviceOrderModel = TServiceOrderModel::model();
     $newTserviceOrderEventCount = $tserviceOrderModel->getCountEvents($uid, $is_emp);
     $total = $newTserviceMsgCount + $newTserviceOrderEventCount;
     $code = $newTserviceMsgCount > 0 ? 1 : 0;
     $code .= $newTserviceOrderEventCount > 0 ? 1 : 0;
     switch ($code) {
         case '10':
             $tip = $newTserviceMsgCount == 1 ? sprintf($tips[0]) : sprintf($tips[1], $newTserviceMsgCount, ending($newTserviceMsgCount, $msg_ending[0], $msg_ending[1], $msg_ending[2]));
             break;
         case '01':
             $tip = $newTserviceOrderEventCount == 1 ? sprintf($tips[2]) : sprintf($tips[1], $newTserviceOrderEventCount, ending($newTserviceOrderEventCount, $event_ending[0], $event_ending[1], $event_ending[2]));
             $link = $tserviceOrderModel->getLastEventOrderURL($uid, $is_emp);
             break;
         case '11':
             $tip = sprintf($tips[3], $newTserviceMsgCount, ending($newTserviceMsgCount, $msg_ending[0], $msg_ending[1], $msg_ending[2]), $newTserviceOrderEventCount, ending($newTserviceOrderEventCount, $event_ending[0], $event_ending[1], $event_ending[2]));
             break;
     }
     return array('count' => $total, 'tip' => $tip, 'link' => !empty($link) ? $link : ($is_emp ? "/users/" . $_SESSION['login'] : '') . "/tu-orders/");
 }
 public function init()
 {
     parent::init();
     $msg_model = TServiceMsgModel::model();
     $this->messages = $msg_model->getList($this->order_id);
     if ($this->is_owner) {
         //Помечаем сообщения в заказе как прочтенные
         $msg_model->markAsRead($this->order_id, $this->uid);
     }
 }
 /**
  * Обработки доступа на различные файлы в папке юзера.
  * 
  * @param type  $params
  * @param CFile $file
  *
  * @return type
  */
 protected function _attach($params, CFile $file)
 {
     $tableName = $file->getTableName();
     $allow_download = false;
     //Так как в одной папке файлы разных мастей то для непонятного юзера нужно
     //вычислять что за файл и проверять доступ к нему
     switch ($tableName) {
         //файлы БС в сообщениях
         case 'file_tservice_msg':
             require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceMsgModel.php';
             $this->permission = 'tservices';
             $msg_id = intval($file->src_id);
             $msgModel = TServiceMsgModel::model();
             $allow_download = $msgModel->isMsgMember($msg_id, $this->uid);
             break;
     }
     return $allow_download;
 }
 /**
  * Список заказов ТУ фрилансера.
  */
 public function actionFrllist()
 {
     $status = __paramInit('string', 's', 's', null);
     $page = __paramInit('int', 'page', 'page', 1);
     if ($page <= 0) {
         $page = 1;
     }
     $on_page = 10;
     //Если параметры не проходят валидацию то редирект на основную по умолчанию
     if (!$this->order_model->attributes(array('status' => $status))) {
         $this->redirect('/tu-orders/', true, 301);
     }
     $orders_list = $this->order_model->setPage($on_page, $page)->getListForFrl($this->uid);
     $cnts = $this->order_model->getCounts($this->uid, false);
     if (!$cnts['total']) {
         $this->missingAction(null);
     }
     $this->tserviceOrderStatusWidget = $this->createWidget($this, 'TServiceOrderStatus', array('is_list' => true));
     $this->tserviceOrderStatusWidget->setIsEmp(false);
     $this->modelMessage = TServiceMsgModel::model();
     $this->layout = '//layouts/content-full-width-border';
     $this->render('frllist', array('orders_list' => $orders_list, 'cnts' => $cnts, 'on_page' => $on_page, 'page' => $page, 'status' => $status));
 }
 /**
  * Сообщения в заказе до резервирования
  * @param type $order_id ИД заказа
  * @param type $date Дата
  */
 public function getReserveMessages($order_id, $date)
 {
     $result = "";
     $msgModel = new TServiceMsgModel();
     $messages = $msgModel->getMessagesBeforeDate($order_id, $date);
     $template_user = "******";
     $template = "%s - %s\n%s\n\n";
     foreach ($messages as $message) {
         $user = sprintf($template_user, $message['uname'], $message['usurname'], $message['login']);
         $result .= sprintf($template, trim($user), dateFormat("d.m.Y, H:i", $message['sent']), strip_tags(str_replace('<br />', "\n", $message['message'])));
     }
     return $result;
 }
Example #6
0
         $max_files = commune::MAX_FILES;
         $max_files_size = commune::MAX_FILE_SIZE;
         break;
     case 'letters':
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/letters.php';
         $max_files = 1;
         $max_files_size = letters::MAX_FILE_SIZE;
         break;
     case 'tservice_message':
         require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceMsgModel.php';
         $max_files = TServiceMsgModel::MAX_FILES;
         $max_files_size = TServiceMsgModel::MAX_FILE_SIZE;
         $cFile->table = 'file_tservice_msg';
         $order_id = __paramInit('uint', null, 'orderid');
         $hash = __paramInit('striptrim', null, 'hash');
         $_dir = TServiceMsgModel::getUploadPath($order_id, $sess, $_SESSION['uid'], $hash);
         if ($_dir) {
             $dir = $login . $_dir;
         } else {
             $file['error'] = 'Ошибка загрузки файла';
             $file['errno'] = 1;
         }
         break;
     default:
         $file['error'] = 'Ошибка загрузки файла';
         $file['errno'] = 1;
         break;
 }
 if (!isset($file['error'])) {
     $cFile->max_size = $max_files_size;
     $cFile->MoveUploadedFile($dir);
/**
 * 
 * Получить последнии сообщения по заказу ТУ
 * 
 * @global type $orderModel
 * @param type $order_id
 * @return \xajaxResponse
 */
function tservicesOrdersCheckMessages($order_id)
{
    global $orderModel;
    $uid = get_uid(false);
    $objResponse =& new xajaxResponse();
    $orderData = $orderModel->getCard($order_id, $uid);
    if (!$orderData) {
        return $objResponse;
    }
    $modelMsg = TServiceMsgModel::model();
    $messages = $modelMsg->getListNew($order_id);
    if (count($messages)) {
        $modelMsg->markAsRead($order_id, $uid);
        $sHtml = Template::render(ABS_PATH . '/tu/tpl.order-msg.php', array('messages' => $messages, 'order' => $orderData));
        $objResponse->script("\$('messages').getElements('div.b-layout').removeClass('b-layout_margbot_10')" . ".removeClass('b-fon')" . ".removeClass('b-fon_bg_e4faeb')" . ".removeClass('b-fon_pad_10')" . ".addClass('b-layout_margbot_20');");
        $objResponse->prepend('messages', 'innerHTML', $sHtml);
    }
    $objResponse->script("TServices_Order_Messages.checkMessages.delay(40000);");
    return $objResponse;
}
Example #8
0
 switch ($tableName) {
     //файлы БС документы
     case 'file_reserves_order':
         require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceOrderModel.php';
         $permission = 'tservices';
         $order_id = intval($file->src_id);
         $orderModel = TServiceOrderModel::model();
         $allow_download = $orderModel->isOrderMember($order_id, $uid);
         break;
         //файлы БС в сообщениях
     //файлы БС в сообщениях
     case 'file_tservice_msg':
         require_once $_SERVER['DOCUMENT_ROOT'] . '/tu/models/TServiceMsgModel.php';
         $permission = 'tservices';
         $msg_id = intval($file->src_id);
         $msgModel = TServiceMsgModel::model();
         $allow_download = $msgModel->isMsgMember($msg_id, $uid);
         break;
         //Другие файлы
     //Другие файлы
     default:
         $components = explode('/', $filename);
         $components_cnt = count($components);
         //Работает с файлами в диретории пользователя
         if ($components[0] === 'users' && $components_cnt > 2) {
             $splice_idx = strlen($components[1]) == 2 ? 2 : 1;
             $components = array_splice($components, $splice_idx, $components_cnt);
             $login = $components[0];
             if ($login !== $_SESSION['login']) {
                 $allow_download = false;
             }