/** * События в заказе ТУ * * @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)); }
/** * * Получить последнии сообщения по заказу ТУ * * @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; }
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; }