/** * Return message object * * @param void * @return ProjectMessage */ function getMessage() { if (is_null($this->message)) { $this->message = ProjectMessages::findById($this->getMessageId()); } return $this->message; }
public function init() { $this->parts = ZakazParts::model()->findAllByAttributes(['proj_id' => $this->project->id]); $this->payments = ProjectPayments::model()->findByAttributes(['order_id' => $this->project->id]); $this->changes = ProjectChanges::model()->findAllByAttributes(['project_id' => $this->project->id]); $this->messages = ProjectMessages::model()->findAllByAttributes(['order' => $this->project->id], ['order' => 'id DESC']); }
/** * This function will return application data object that matches action and in object ID * * @param void * @return ApplicationDataObject */ function getInObject() { if(is_null($this->in_object)) { if($this->getAction() == self::ADD_COMMENT_ACTION) { $this->in_object = ProjectMessages::findById($this->getInObjectId()); } elseif($this->getAction() == self::ADD_TASK_ACTION) { $this->in_object = Projects::findById($this->getInObjectId()); } // if } // if return $this->in_object; } // getInObject
public function actionIndex() { if (Yii::app()->request->isAjaxRequest) { header('Content-Type: application/json'); echo CJSON::encode(array('success' => true, 'msg' => ProjectMessages::model()->findByPk(Events::model()->findByPk(Yii::app()->request->getParam('id'))->event_id)->message)); Yii::app()->end(); } $events = Events::model()->findAll(array('condition' => '', 'order' => 'timestamp DESC')); $this->render('index', array('events' => $events)); }
/** * Вывод и добавление сообщений */ public function actionIndex($orderId) { Yii::app()->session['project_id'] = $orderId; if (Yii::app()->request->isAjaxRequest) { if (Yii::app()->request->getPost('ProjectMessages')) { $model = new ProjectMessages(); $model->sender = Yii::app()->user->id; $model->moderated = 0; $model->order = $orderId; $model->attributes = Yii::app()->request->getPost('ProjectMessages'); $model->date = date('Y-m-d H:i:s'); switch ($model->recipient) { case 'manager': $model->recipient = 1; break; case 'customer': if (User::model()->isCustomer()) { $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor']; } if (User::model()->isAuthor()) { $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id']; } break; } $model->save(); EventHelper::addMessage($orderId, $model->message); } $this->renderPartial('chat', array('orderId' => $orderId)); Yii::app()->end(); } $model = Zakaz::model()->resetScope()->findByPk($orderId); if (isset($_POST['Zakaz'])) { $model->attributes = $_POST['Zakaz']; $model->save(); } $this->render('index', array('orderId' => $orderId, 'executor' => Zakaz::getExecutor($orderId))); }
/** * Call back function for message link * * @param mixed $matches * @return */ function replace_message_link_callback($matches) { if (count($matches) < 2) { return null; } // if if (!logged_user()->isMemberOfOwnerCompany()) { $object = ProjectMessages::findOne(array('conditions' => array('`id` = ? AND `project_id` = ? AND `is_private` = 0 ', $matches[1], active_project()->getId()))); } else { $object = ProjectMessages::findOne(array('conditions' => array('`id` = ? AND `project_id` = ?', $matches[1], active_project()->getId()))); } // if if (!$object instanceof ProjectMessage) { return '<del>' . lang('invalid reference') . '</del>'; } else { return '<a href="' . $object->getViewUrl() . '">' . $object->getTitle() . '</a>'; } // if }
function linked_object_filters() { $genid = gen_id(); $listeners = array('on_selection_change' => "Ext.getCmp('dimFilter').fireEvent('memberselected', member_selector['{$genid}'].sel_context);"); $options = array('select_current_context' => true, 'listeners' => $listeners, 'width' => 195); render_member_selectors(ProjectMessages::instance()->getObjectTypeId(), $genid, null, $options, null, null, false); die; }
<?php $panel = TabPanels::instance()->findById('messages-panel'); if ($panel instanceof TabPanel && $panel->getEnabled()) { $limit = 5; $result = ProjectMessages::instance()->listing(array("order" => "updated_on", "order_dir" => "desc", "start" => 0, "limit" => $limit)); $active_members = array(); $context = active_context(); foreach ($context as $selection) { if ($selection instanceof Member) { $active_members[] = $selection; } } if (count($active_members) > 0) { $mnames = array(); $allowed_contact_ids = array(); foreach ($active_members as $member) { $mnames[] = clean($member->getName()); } $widget_title = lang('notes') . ' ' . lang('in') . ' ' . implode(", ", $mnames); } $total = $result->total; $messages = $result->objects; $genid = gen_id(); if ($total) { include_once 'template.php'; } }
/** * Delete specific message * * @access public * @param void * @return null */ function delete() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current('empty'); return; } ajx_current("empty"); $message = ProjectMessages::findById(get_id()); if (!$message instanceof ProjectMessage) { flash_error(lang('message dnx')); ajx_current("empty"); return; } // if if (!$message->canDelete(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } // if try { DB::beginWork(); $message->trash(); DB::commit(); ApplicationLogs::createLog($message, ApplicationLogs::ACTION_TRASH); flash_success(lang('success deleted message', $message->getObjectName())); if (array_var($_POST, 'popup', false)) { ajx_current("reload"); } else { ajx_current("back"); } ajx_add("overview-panel", "reload"); } catch (Exception $e) { DB::rollback(); flash_error(lang('error delete message')); ajx_current("empty"); } // try }
echo lang('new account step start workspace info', '<span class="ico-workspace-add" style="padding: 5px 16px 0 0"> </span>', logged_user()->getPersonalProject()->getName()); ?> <br/><br/> <?php } $step++; ?> <b><?php echo lang('new account step actions', $step); ?> </b> <?php $task_count = ProjectTasks::count('`created_by_id` = ' . logged_user()->getId()); $note_count = ProjectMessages::count('`created_by_id` = ' . logged_user()->getId()); //$contact = ProjectContacts::findOne(array('conditions'=>'created_by_id='.logged_user()->getId())); if ($task_count > 0 || $note_count > 0) { echo '<img src="' . image_url('16x16/complete.png') . '" />'; } ?> <br/> <?php echo lang('new account step actions info'); ?> <br/> <span class="ico-message" style="padding: 5px 16px 0 0"> </span> <a class='internalLink dashboard-link' href='<?php echo get_url('message', 'add'); ?>
<?php /** * Created by PhpStorm. * User: coolfire * Date: 26.06.15 * Time: 13:54 */ $criteria = new CDbCriteria(); if (!Yii::app()->user->isGuest) { $criteria->addCondition('(moderated=1 OR sender IN (SELECT userid FROM AuthAssignment WHERE itemname IN ("Admin","Manager")) OR sender=' . Yii::app()->user->id . ') AND (sender=' . Yii::app()->user->id . ' OR recipient IN (' . Yii::app()->user->id . ',0' . (User::model()->isAuthor() ? ',-1' : '') . '))'); } $criteria->addCondition('`order` = :oid'); $criteria->params[':oid'] = (int) $orderId; $messages = ProjectMessages::model()->findAll($criteria); ?> <div id="chatWindow" class="col-xs-12 chat-view chtpl0-chatblock"> <?php Yii::app()->clientScript->registerCss('cs1', ' div.chat-window::after { content: "' . ProjectModule::t('Here is your correspondence') . '"; }'); if (User::model()->isAuthor() && !$order->executor && $order->status <= 2) { Yii::app()->clientScript->registerCss('cs2', ' div.chat-window::before { content: "' . ProjectModule::t('Please, write that you are ready to take this order or ask a question.') . '"; }'); } ?> <?php
/** * Вывод и добавление сообщений */ public function actionIndex($orderId) { $isGuest = Yii::app()->user->isGuest; Yii::app()->session['project_id'] = $orderId; if (Yii::app()->request->isAjaxRequest) { if (Yii::app()->request->getPost('ProjectMessages')) { $id = (int) $_POST['ProjectMessages']['id']; if ($id > 0) { $model = ProjectMessages::model()->findByPk($id); } else { $model = new ProjectMessages(); $model->sender = Yii::app()->user->id; $model->moderated = 0; $model->order = $orderId; } $post = $_POST['ProjectMessages']['message']; $post = str_replace("\r\n", '<br>', $post); $post = str_replace("\n", '<br>', $post); $_POST['ProjectMessages']['message'] = $post; $model->attributes = Yii::app()->request->getPost('ProjectMessages'); $model->date = date('Y-m-d H:i:s'); switch ($model->recipient) { case 'manager': $model->recipient = 1; break; case 'customer': if (User::model()->isCustomer()) { $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor']; $type_id = Emails::TYPE_20; } else { if (User::model()->isAuthor()) { $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id']; $type_id = Emails::TYPE_16; } } $user = User::model()->findByPk($model->recipient); $profile = Profile::model()->findAll("`user_id`='{$model->recipient}'"); $email = new Emails(); $rec = Templates::model()->findAll("`type_id`='{$type_id}'"); $title = $rec[0]->title; $body = $rec[0]->text; $email->name = $user->full_name; if (strlen($email->name) < 2) { $email->name = $user->username; } $email->num_order = $orderId; $email->message = $post; $email->page_order = 'http://' . $_SERVER['SERVER_NAME'] . '/project/chat?orderId=' . $orderId; $email->sendTo($user->email, $body, $type_id); break; } //print_r($model); //echo '<br>$model->save()='.$model->save(); EventHelper::addMessage($orderId, $model->message); } $this->renderPartial('chat', array('orderId' => $orderId, 'isGuest' => $isGuest)); Yii::app()->end(); } $order = Zakaz::model()->resetScope()->findByPk($orderId); $parts = ZakazParts::model()->findAll(array('condition' => "`proj_id`='{$orderId}'")); if ($isGuest) { Yii::app()->theme = 'client'; // если гость прошёл по ссылке на неcуществующий // проект, отправляем его на регистрацию $url = 'http://' . $_SERVER['SERVER_NAME'] . '/'; if (!$order) { $this->redirect($url); } $moderate_types = EventHelper::get_moderate_types_string(); $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId)); $moderated = count($events) == 0; // если гость прошёл по ссылке на непромодерированный // проект, отправляем его на регистрацию if (!$moderated) { $this->redirect(Yii::app()->createUrl('user/login')); } // Catalog::model()->tableName(); //$EmptyChat = UserModule::t('EmptyChat'); $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'isGuest' => $isGuest, 'parts' => $parts)); Yii::app()->end(); } $moderate_types = EventHelper::get_moderate_types_string(); $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId)); $moderated = count($events) == 0; $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'isGuest' => $isGuest, 'parts' => $parts)); }
public function yiichat_list_posts($chat_id, $identity, $last_id, $data) { $this->_chat_id = $chat_id; $this->_identity = $identity; $this->_data = $data; $messages = ProjectMessages::model()->findAll('`t`.`order` = :chat_id AND `t`.`id` > :last_id', array(':chat_id' => $chat_id, ':last_id' => $last_id)); foreach ($messages as $m) { $m->date = date_format(date_create($m->date), 'd.m.Y H:i:s'); } return $messages; }
<?php $limit = 5; $result = ProjectMessages::instance()->listing(array("order" => "name", "order_dir" => "asc", "start" => 0, "limit" => $limit)); $total = $result->total; $messages = $result->objects; $genid = gen_id(); if ($total) { include_once 'template.php'; }
/** * Edit existing project form * * @param void * @return null */ function edit() { $this->setTemplate('add_project_form'); $project_form = ProjectForms::findById(get_id()); if (!$project_form instanceof ProjectForm) { flash_error(lang('project form dnx')); if (ProjectForm::canAdd(logged_user(), active_project())) { $this->redirectTo('form'); } else { $this->redirectToUrl(active_project()->getOverviewUrl()); } // if } // if if (!$project_form->canEdit(logged_user())) { flash_error(lang('no access permissions')); if (ProjectForm::canAdd(logged_user(), active_project())) { $this->redirectTo('form'); } else { $this->redirectToUrl(active_project()->getOverviewUrl()); } // if } // if $project_form_data = array_var($_POST, 'project_form'); if (!is_array($project_form_data)) { $project_form_data = array('name' => $project_form->getName(), 'description' => $project_form->getDescription(), 'success_message' => $project_form->getSuccessMessage(), 'action' => $project_form->getAction(), 'is_enabled' => $project_form->getIsEnabled(), 'is_visible' => $project_form->getIsVisible()); // array if ($project_form->getAction() == ProjectForm::ADD_COMMENT_ACTION) { $project_form_data['message_id'] = $project_form->getInObjectId(); } else { $project_form_data['task_list_id'] = $project_form->getInObjectId(); } // if } // if tpl_assign('project_form', $project_form); tpl_assign('project_form_data', $project_form_data); if (is_array(array_var($_POST, 'project_form'))) { $project_form->setFromAttributes($project_form_data); if ($project_form->getAction() == ProjectForm::ADD_COMMENT_ACTION) { $in_object = ProjectMessages::findById(get_id('message_id', $project_form_data)); $relation_error_message = lang('project form select message'); } else { $in_object = ProjectTaskLists::findById(get_id('task_list_id', $project_form_data)); $relation_error_message = lang('project form select task lists'); } // if if (!$in_object instanceof ProjectDataObject) { tpl_assign('error', new Error($relation_error_message)); $this->render(); } // if $project_form->setInObjectId($in_object->getObjectId()); // set related object ID try { DB::beginWork(); $project_form->save(); ApplicationLogs::createLog($project_form, active_project(), ApplicationLogs::ACTION_EDIT, true); DB::commit(); flash_success(lang('success edit project form', $project_form->getName())); $this->redirectTo('form'); } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); } // try } // if }
/** * Trash this object and reset all relationship. This function will not trash any of related objects * * @access public * @param void * @return boolean */ function trash($trashDate = null) { $is_template = $this->getIsTemplate(); if ($is_template) { $this->delete(); } else { try { DB::execute("UPDATE " . ProjectMessages::instance()->getTableName(true) . " SET `milestone_id` = '0' WHERE `milestone_id` = " . DB::escape($this->getId())); DB::execute("UPDATE " . ProjectTasks::instance()->getTableName(true) . " SET `milestone_id` = '0' WHERE `milestone_id` = " . DB::escape($this->getId())); return parent::trash($trashDate); } catch (Exception $e) { throw $e; } // try } }
/** * Вывод и добавление сообщений */ public function actionIndex($orderId) { $isGuest = Yii::app()->user->guestName; if ($isGuest) { Yii::app()->theme = 'client'; $order = Zakaz::model()->resetScope()->findByPk($orderId); // если гость прошёл по ссылке на неcуществующий // проект, отправляем его на регистрацию $url = 'http://' . $_SERVER['SERVER_NAME'] . '/'; if (!$order) { $this->redirect($url); } $moderate_types = EventHelper::get_moderate_types_string(); $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId)); $moderated = count($events) == 0; // если гость прошёл по ссылке на непромодерированный // проект, отправляем его на регистрацию if (!$moderated) { $this->redirect(Yii::app()->createUrl('user/login')); } // Catalog::model()->tableName(); $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'isGuest' => $isGuest, 'parts' => ZakazParts::model()->findAll(array('condition' => "`proj_id`='{$orderId}'")))); Yii::app()->end(); } Yii::app()->session['project_id'] = $orderId; if (Yii::app()->request->isAjaxRequest) { if (Yii::app()->request->getPost('ProjectMessages')) { $model = new ProjectMessages(); $model->sender = Yii::app()->user->id; $model->moderated = 0; $model->order = $orderId; $post = $_POST['ProjectMessages']['message']; $post = str_replace("\r\n", '<br>', $post); $post = str_replace("\n", '<br>', $post); $_POST['ProjectMessages']['message'] = $post; $model->attributes = Yii::app()->request->getPost('ProjectMessages'); $model->date = date('Y-m-d H:i:s'); switch ($model->recipient) { case 'manager': $model->recipient = 1; break; case 'customer': if (User::model()->isCustomer()) { $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor']; } if (User::model()->isAuthor()) { $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id']; } break; } $model->save(); EventHelper::addMessage($orderId, $model->message); } $this->renderPartial('chat', array('orderId' => $orderId, 'isGuest' => $isGuest)); Yii::app()->end(); } $moderate_types = EventHelper::get_moderate_types_string(); $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId)); $moderated = count($events) == 0; $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'isGuest' => $isGuest)); }
function getMessages($tag, $project = null, $start = null, $limit = null, $order = null, $order_dir = null, $archived = false) { switch ($order) { case 'updatedOn': $order_crit = 'updated_on'; break; case 'createdOn': $order_crit = 'created_on'; break; case 'title': $order_crit = 'title'; break; default: $order_crit = 'updated_on'; break; } if (!$order_dir) { switch ($order) { case 'name': $order_dir = 'ASC'; break; default: $order_dir = 'DESC'; } } if ($project instanceof Project) { $pids = $project->getAllSubWorkspacesQuery(!$archived); $wsConditions = " AND " . self::getWorkspaceString($pids); } else { $wsConditions = ""; } if (!isset($tag) || $tag == '' || $tag == null) { $tagstr = ""; } else { $tagstr = "AND (SELECT count(*) FROM `" . TABLE_PREFIX . "tags` WHERE `" . TABLE_PREFIX . "project_messages`.`id` = `" . TABLE_PREFIX . "tags`.`rel_object_id` AND `" . TABLE_PREFIX . "tags`.`tag` = " . DB::escape($tag) . " AND `" . TABLE_PREFIX . "tags`.`rel_object_manager` ='ProjectMessages' ) > 0 "; } $permissions = ' AND ( ' . permissions_sql_for_listings(ProjectMessages::instance(), ACCESS_LEVEL_READ, logged_user(), 'project_id') . ')'; if ($archived) { $archived_cond = "`archived_by_id` <> 0"; } else { $archived_cond = "`archived_by_id` = 0"; } $conditions = "`trashed_by_id` = 0 AND {$archived_cond} {$wsConditions} {$tagstr} {$permissions}"; $page = (int) ($start / $limit) + 1; $order = "{$order_crit} {$order_dir}"; return self::paginate(array('conditions' => $conditions, 'order' => $order), $limit, $page); }
/** * Check if specific user can add messages to specific project * * @access public * @param User $user * @param Project $project * @return booelean */ function canAdd(User $user, Project $project) { return can_add($user, $project, get_class(ProjectMessages::instance())); }
/** * Returns array of queries that will return Dashboard Objects * * @param string $proj_ids * @param string $tag * @param boolean $count if false the query will return objects, if true it will return object count */ static function getDashboardObjectQueries($project = null, $tag = null, $count = false, $trashed = false, $linkedObject = null, $order = 'updatedOn', $filterName = '', $archived = false, $filterManager = '') { if ($trashed && $trashed !== 'all') { $order = 'trashedOn'; } else { if ($archived) { $order = 'archivedOn'; } } switch ($order) { case 'dateCreated': $order_crit_companies = '`created_on`'; $order_crit_contacts = '`created_on`'; $order_crit_file_revisions = '`created_on`'; $order_crit_calendar = '`created_on`'; $order_crit_tasks = '`created_on`'; $order_crit_milestones = '`created_on`'; $order_crit_webpages = '`created_on`'; $order_crit_files = '`created_on`'; $order_crit_emails = '`received_date`'; $order_crit_comments = '`created_on`'; $order_crit_messages = '`created_on`'; $order_crit_workspaces = '`created_on`'; break; case 'trashedOn': $order_crit_companies = '`trashed_on`'; $order_crit_contacts = '`trashed_on`'; $order_crit_file_revisions = '`trashed_on`'; $order_crit_calendar = '`trashed_on`'; $order_crit_tasks = '`trashed_on`'; $order_crit_milestones = '`trashed_on`'; $order_crit_webpages = '`trashed_on`'; $order_crit_files = '`trashed_on`'; $order_crit_emails = '`trashed_on`'; $order_crit_comments = '`trashed_on`'; $order_crit_messages = '`trashed_on`'; $order_crit_workspaces = '`updated_on`'; break; case 'archivedOn': $order_crit_companies = '`archived_on`'; $order_crit_contacts = '`archived_on`'; $order_crit_file_revisions = '`updated_on`'; $order_crit_calendar = '`archived_on`'; $order_crit_tasks = '`archived_on`'; $order_crit_milestones = '`archived_on`'; $order_crit_webpages = '`archived_on`'; $order_crit_files = '`archived_on`'; $order_crit_emails = '`archived_on`'; $order_crit_comments = '`updated_on`'; $order_crit_messages = '`archived_on`'; $order_crit_workspaces = '`completed_on`'; break; case 'name': $order_crit_companies = '`name`'; $order_crit_contacts = "TRIM(CONCAT(' ', `lastname`, `firstname`, `middlename`))"; $order_crit_file_revisions = "'zzzzzzzzzzzzzz'"; //Revisar $order_crit_calendar = '`subject`'; $order_crit_tasks = '`title`'; $order_crit_milestones = '`name`'; $order_crit_webpages = '`title`'; $order_crit_files = '`filename`'; $order_crit_emails = '`subject`'; $order_crit_comments = '`text`'; $order_crit_messages = '`title`'; $order_crit_workspaces = '`name`'; break; default: $order_crit_companies = '`updated_on`'; $order_crit_contacts = '`updated_on`'; $order_crit_file_revisions = '`updated_on`'; $order_crit_calendar = '`updated_on`'; $order_crit_tasks = '`updated_on`'; $order_crit_milestones = '`updated_on`'; $order_crit_webpages = '`updated_on`'; $order_crit_files = '`updated_on`'; $order_crit_emails = '`received_date`'; $order_crit_comments = '`updated_on`'; $order_crit_messages = '`updated_on`'; $order_crit_workspaces = '`updated_on`'; break; } if ($project instanceof Project) { $proj_ids = $project->getAllSubWorkspacesQuery(true); $proj_cond_companies = Companies::getWorkspaceString($proj_ids); $proj_cond_messages = ProjectMessages::getWorkspaceString($proj_ids); $proj_cond_documents = ProjectFiles::getWorkspaceString($proj_ids); $proj_cond_emails = MailContents::getWorkspaceString($proj_ids); $proj_cond_events = ProjectEvents::getWorkspaceString($proj_ids); $proj_cond_tasks = ProjectTasks::getWorkspaceString($proj_ids); $proj_cond_charts = ProjectCharts::getWorkspaceString($proj_ids); $proj_cond_milestones = ProjectMilestones::getWorkspaceString($proj_ids); $proj_cond_weblinks = ProjectWebpages::getWorkspaceString($proj_ids); $proj_cond_contacts = Contacts::getWorkspaceString($proj_ids); } else { $proj_cond_companies = "true"; $proj_cond_messages = "true"; $proj_cond_documents = "true"; $proj_cond_emails = "true"; $proj_cond_events = "true"; $proj_cond_tasks = "true"; $proj_cond_charts = "true"; $proj_cond_milestones = "true"; $proj_cond_weblinks = "true"; $proj_cond_contacts = "true"; } if ($trashed) { if ($trashed === 'all') { $trashed_cond = '`trashed_on` >= ' . DB::escape(EMPTY_DATETIME); } else { $trashed_cond = '`trashed_on` > ' . DB::escape(EMPTY_DATETIME); } $archived_cond = '1 = 1'; // Show all objects in trash $comments_arch_cond = "1 = 1"; } else { $trashed_cond = '`trashed_on` = ' . DB::escape(EMPTY_DATETIME); if ($archived) { $archived_cond = "`archived_by_id` > 0"; $comments_arch_cond = "1 = 0"; // Don't show comments in archived objects listings } else { $archived_cond = "`archived_by_id` = 0"; $comments_arch_cond = "1 = 1"; } } if (isset($tag) && $tag && $tag != '') { $tag_str = " AND EXISTS (SELECT * FROM `" . TABLE_PREFIX . "tags` `t` WHERE `tag`= " . DB::escape($tag) . " AND `co`.`id` = `t`.`rel_object_id` AND `t`.`rel_object_manager` = `object_manager_value`) "; } else { $tag_str = ' '; } if ($linkedObject instanceof ProjectDataObject) { $link_id = $linkedObject->getId(); $link_mgr = get_class($linkedObject->manager()); $link_str = " AND EXISTS (SELECT * FROM `" . TABLE_PREFIX . "linked_objects` `t` WHERE\n\t\t\t(`t`.`object_id`=" . DB::escape($link_id) . " AND `t`.object_manager = " . DB::escape($link_mgr) . " AND `co`.`id` = `t`.`rel_object_id` AND `t`.`rel_object_manager` = `object_manager_value`) OR\n\t\t\t(`t`.`rel_object_id`=" . DB::escape($link_id) . " AND `t`.rel_object_manager = " . DB::escape($link_mgr) . " AND `co`.`id` = `t`.`object_id` AND `t`.`object_manager` = `object_manager_value`)) "; } else { $link_str = ' '; } $tag_str .= $link_str; $res = array(); /** If the name of the query ends with Comments it is assumed to be a list of Comments **/ $cfn = ''; if ($filterName != '') { $cfn = " AND text LIKE '%" . $filterName . "%'"; } // Notes if (module_enabled('notes')) { $fn = ''; if ($filterName != '') { $fn = " AND title LIKE '%" . $filterName . "%'"; } $permissions = ' AND ( ' . permissions_sql_for_listings(ProjectMessages::instance(), ACCESS_LEVEL_READ, logged_user(), '`project_id`', '`co`') . ')'; if ($filterManager == '' || $filterManager == "ProjectMessages") { $res['ProjectMessages'] = "SELECT 'ProjectMessages' AS `object_manager_value`, `id` AS `oid`, {$order_crit_messages} AS `order_value` FROM `" . TABLE_PREFIX . "project_messages` `co` WHERE " . $trashed_cond . " AND {$archived_cond} AND " . $proj_cond_messages . str_replace('= `object_manager_value`', "= 'ProjectMessages'", $tag_str) . $permissions . $fn; } if ($filterManager == '' || $filterManager == "Comments") { $res['ProjectMessagesComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'ProjectMessages' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "project_messages` `co` WHERE `trashed_by_id` = 0 AND {$comments_arch_cond} AND " . $proj_cond_messages . str_replace('= `object_manager_value`', "= 'ProjectMessages'", $tag_str) . $permissions . $cfn . ")"; } } // Events if (module_enabled("calendar")) { $fn = ''; if ($filterName != '') { $fn = " AND subject LIKE '%" . $filterName . "%'"; } $permissions = ' AND ( ' . permissions_sql_for_listings(ProjectEvents::instance(), ACCESS_LEVEL_READ, logged_user(), '`project_id`', '`co`') . ')'; if ($filterManager == '' || $filterManager == "ProjectEvents") { $res['ProjectEvents'] = "SELECT 'ProjectEvents' AS `object_manager_value`, `id` AS `oid`, {$order_crit_calendar} AS `order_value` FROM `" . TABLE_PREFIX . "project_events` `co` WHERE " . $trashed_cond . " AND {$archived_cond} AND " . $proj_cond_events . str_replace('= `object_manager_value`', "= 'ProjectEvents'", $tag_str) . $permissions . $fn; } if ($filterManager == '' || $filterManager == "Comments") { $res['ProjectEventsComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'ProjectEvents' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "project_events` `co` WHERE `trashed_by_id` = 0 AND {$comments_arch_cond} AND " . $proj_cond_events . str_replace('= `object_manager_value`', "= 'ProjectEvents'", $tag_str) . $permissions . $cfn . ")"; } } // Documents if (module_enabled("documents")) { $fn = ''; if ($filterName != '') { $fn = " AND filename LIKE '%" . $filterName . "%'"; } $permissions = ' AND ( ' . permissions_sql_for_listings(ProjectFiles::instance(), ACCESS_LEVEL_READ, logged_user(), '`project_id`', '`co`') . ')'; $typestring = array_var($_GET, "typestring"); if ($typestring) { $typecond = " AND ((SELECT count(*) FROM `" . TABLE_PREFIX . "project_file_revisions` `pfr` WHERE `" . "pfr`.`type_string` LIKE " . DB::escape($typestring) . " AND `" . "co`.`id` = `pfr`.`file_id`) > 0)"; } else { $typecond = ""; } if ($filterManager == '' || $filterManager == "ProjectFiles") { $res['ProjectFiles'] = "SELECT 'ProjectFiles' AS `object_manager_value`, `id` as `oid`, {$order_crit_files} AS `order_value` FROM `" . TABLE_PREFIX . "project_files` `co` WHERE " . $trashed_cond . " AND {$archived_cond} AND " . $proj_cond_documents . str_replace('= `object_manager_value`', "= 'ProjectFiles'", $tag_str) . $permissions . $typecond . $fn; } if ($filterManager == '' || $filterManager == "Comments") { $res['ProjectFilesComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'ProjectFiles' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "project_files` `co` WHERE `trashed_by_id` = 0 AND {$comments_arch_cond} AND " . $proj_cond_documents . str_replace('= `object_manager_value`', "= 'ProjectFiles'", $tag_str) . $permissions . $cfn . ")"; } if ($trashed) { $file_rev_docs = "SELECT `id` FROM `" . TABLE_PREFIX . "project_files` `co` WHERE `trashed_by_id` = 0 AND " . $proj_cond_documents . str_replace('= `object_manager_value`', "= 'ProjectFiles'", $tag_str) . $permissions . $typecond; $res['FileRevisions'] = "SELECT 'ProjectFileRevisions' AS `object_manager_value`, `id` AS `oid`, {$order_crit_file_revisions} AS `order_value` FROM `" . TABLE_PREFIX . "project_file_revisions` `co` WHERE {$trashed_cond} AND `file_id` IN (" . $file_rev_docs . ")"; } } // Tasks and Milestones if (module_enabled("tasks")) { $fn = ''; if ($filterName != '') { $fn = " AND title LIKE '%" . $filterName . "%'"; } $completed = $trashed || $archived ? '' : 'AND `completed_on` = ' . DB::escape(EMPTY_DATETIME); $permissions = ' AND ( ' . permissions_sql_for_listings(ProjectTasks::instance(), ACCESS_LEVEL_READ, logged_user(), '`project_id`', '`co`') . ')'; if ($filterManager == '' || $filterManager == "ProjectTasks") { $res['ProjectTasks'] = "SELECT 'ProjectTasks' AS `object_manager_value`, `id` AS `oid`, {$order_crit_tasks} AS `order_value` FROM `" . TABLE_PREFIX . "project_tasks` `co` WHERE `is_template` = false {$completed} AND " . $trashed_cond . " AND {$archived_cond} AND `is_template` = false AND " . $proj_cond_tasks . str_replace('= `object_manager_value`', "= 'ProjectTasks'", $tag_str) . $permissions . $fn; } if ($filterManager == '' || $filterManager == "Comments") { $res['ProjectTasksComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'ProjectTasks' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "project_tasks` `co` WHERE `trashed_by_id` = 0 AND {$comments_arch_cond} AND `is_template` = false AND " . $proj_cond_tasks . str_replace('= `object_manager_value`', "= 'ProjectTasks'", $tag_str) . $permissions . $cfn . ")"; } $fn = ''; if ($filterName != '') { $fn = " AND name LIKE '%" . $filterName . "%'"; } $permissions = ' AND ( ' . permissions_sql_for_listings(ProjectMilestones::instance(), ACCESS_LEVEL_READ, logged_user(), '`project_id`', '`co`') . ')'; if ($filterManager == '' || $filterManager == "ProjectMilestones") { $res['ProjectMilestones'] = "SELECT 'ProjectMilestones' AS `object_manager_value`, `id` AS `oid`, {$order_crit_milestones} AS `order_value` FROM `" . TABLE_PREFIX . "project_milestones` `co` WHERE " . $trashed_cond . " AND {$archived_cond} AND `is_template` = false AND " . $proj_cond_milestones . str_replace('= `object_manager_value`', "= 'ProjectMilestones'", $tag_str) . $permissions . $fn; } if ($filterManager == '' || $filterManager == "Comments") { $res['ProjectMilestonesComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'ProjectMilestones' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "project_milestones` `co` WHERE `trashed_by_id` = 0 AND {$comments_arch_cond} AND `is_template` = false AND " . $proj_cond_milestones . str_replace('= `object_manager_value`', "= 'ProjectMilestones'", $tag_str) . $permissions . $cfn . ")"; } } // Weblinks if (module_enabled("weblinks")) { $fn = ''; if ($filterName != '') { $fn = " AND title LIKE '%" . $filterName . "%'"; } $permissions = ' AND ( ' . permissions_sql_for_listings(ProjectWebpages::instance(), ACCESS_LEVEL_READ, logged_user(), '`project_id`', '`co`') . ')'; if ($filterManager == '' || $filterManager == "ProjectWebpages") { $res['ProjectWebPages'] = "SELECT 'ProjectWebPages' AS `object_manager_value`, `id` AS `oid`, {$order_crit_webpages} AS `order_value` FROM `" . TABLE_PREFIX . "project_webpages` `co` WHERE " . $trashed_cond . " AND {$archived_cond} AND " . $proj_cond_weblinks . str_replace('= `object_manager_value`', "= 'ProjectWebpages'", $tag_str) . $permissions . $fn; } if ($filterManager == '' || $filterManager == "Comments") { $res['ProjectWebPagesComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'ProjectWebpages' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "project_webpages` `co` WHERE " . $trashed_cond . " AND {$comments_arch_cond} AND " . $proj_cond_weblinks . str_replace('= `object_manager_value`', "= 'ProjectWebpages'", $tag_str) . $permissions . $cfn . ")"; } } // Email if (module_enabled("email")) { $fn = ''; if ($filterName != '') { $fn = " AND subject LIKE '%" . $filterName . "%'"; } $permissions = ' AND ( ' . permissions_sql_for_listings(MailContents::instance(), ACCESS_LEVEL_READ, logged_user(), $project instanceof Project ? $project->getId() : 0, '`co`') . ')'; if ($filterManager == '' || $filterManager == "MailContents") { $res['MailContents'] = "SELECT 'MailContents' AS `object_manager_value`, `id` AS `oid`, {$order_crit_emails} AS `order_value` FROM `" . TABLE_PREFIX . "mail_contents` `co` WHERE (" . $trashed_cond . " AND {$archived_cond} AND `is_deleted` = 0 AND " . $proj_cond_emails . str_replace('= `object_manager_value`', "= 'MailContents'", $tag_str) . $permissions . ") {$fn}"; } if ($filterManager == '' || $filterManager == "Comments") { $res['MailContentsComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'MailContents' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "mail_contents` `co` WHERE `trashed_by_id` = 0 AND {$comments_arch_cond} AND " . $proj_cond_emails . str_replace('= `object_manager_value`', "= 'MailContents'", $tag_str) . $permissions . $cfn . ")"; } } // Conacts and Companies if (module_enabled("contacts")) { $fn = ''; $fn2 = ''; if ($filterName != '') { $fn = " AND firstname LIKE '%" . $filterName . "%'"; $fn2 = " AND name LIKE '%" . $filterName . "%'"; } // companies $permissions = ' AND ( ' . permissions_sql_for_listings(Companies::instance(), ACCESS_LEVEL_READ, logged_user(), '`project_id`', '`co`') . ')'; if ($filterManager == '' || $filterManager == "Companies") { $res['Companies'] = "SELECT 'Companies' AS `object_manager_value`, `id` as `oid`, {$order_crit_companies} AS `order_value` FROM `" . TABLE_PREFIX . "companies` `co` WHERE " . $trashed_cond . " AND {$archived_cond} AND " . $proj_cond_companies . str_replace('= `object_manager_value`', "= 'Companies'", $tag_str) . $permissions . $fn2; } $res['CompaniesComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'Companies' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "companies` `co` WHERE `trashed_by_id` = 0 AND {$comments_arch_cond} AND " . $proj_cond_documents . str_replace('= `object_manager_value`', "= 'Companies'", $tag_str) . $permissions . $cfn . ")"; // contacts $permissions = ' AND ( ' . permissions_sql_for_listings(Contacts::instance(), ACCESS_LEVEL_READ, logged_user(), '`project_id`', '`co`') . ')'; if ($filterManager == '' || $filterManager == "Contacts") { $res['Contacts'] = "SELECT 'Contacts' AS `object_manager_value`, `id` AS `oid`, {$order_crit_contacts} AS `order_value` FROM `" . TABLE_PREFIX . "contacts` `co` WHERE {$trashed_cond} AND {$archived_cond} AND {$proj_cond_contacts} " . str_replace('= `object_manager_value`', "= 'Contacts'", $tag_str) . $permissions . $fn; } $res['ContactsComments'] = "SELECT 'Comments' AS `object_manager_value`, `id` AS `oid`, {$order_crit_comments} AS `order_value` FROM `" . TABLE_PREFIX . "comments` WHERE {$trashed_cond} AND `rel_object_manager` = 'Contacts' AND `rel_object_id` IN (SELECT `co`.`id` FROM `" . TABLE_PREFIX . "contacts` `co` WHERE `trashed_by_id` = 0 AND {$comments_arch_cond} AND " . $proj_cond_documents . str_replace('= `object_manager_value`', "= 'Contacts'", $tag_str) . $permissions . $cfn . ")"; } // Workspaces (only for archived objects view) if ($archived) { if ($filterManager == '' || $filterManager == "Projects") { $res['Projects'] = "SELECT 'Projects' AS `object_manager_value`, `id` AS `oid`, {$order_crit_workspaces} AS `order_value` FROM `" . TABLE_PREFIX . "projects` `co` WHERE `completed_on` <> " . DB::escape(EMPTY_DATETIME) . " AND `id` IN (" . logged_user()->getWorkspacesQuery() . ")"; } } if ($count) { foreach ($res as $p => $q) { $res[$p] = "SELECT count(*) AS `quantity`, '{$p}' AS `objectName` FROM ( {$q} ) `table_alias`"; } } return $res; }
public function yiichat_list_posts($chat_id, $identity, $last_id, $data) { $res = parent::yiichat_list_posts($chat_id, $identity, $last_id, $data); if (count($res) > 0) { $order = Zakaz::model()->findByPk($chat_id); } foreach ($res as $k => $v) { $res1[$k] = $v->attributes; $res1[$k]['sender'] = array(); $res1[$k]['sender']['fullusername'] = $res[$k]->senderObject->email; if ($res[$k]->senderObject) { $res1[$k]['sender']['superuser'] = $res[$k]->senderObject->getRelated('AuthAssignment')->attributes; } // При удалённом пользователе необходима проверка $res1[$k]['sender']['rating'] = (int) $res[$k]->senderObject->profile->rating; switch ($res1[$k]['sender']['superuser']['itemname']) { case 'Admin': $res1[$k]['sender']['username'] = ProjectModule::t('Admin'); //'Админ'; break; case 'Manager': $res1[$k]['sender']['username'] = ProjectModule::t('Manager'); //'Менеджер'; break; case 'Author': if (ProjectMessages::model()->getRole($res1[$k]['sender_role']) == 'Corrector') { $res1[$k]['sender']['username'] = ProjectModule::t('Corrector'); } else { $res1[$k]['sender']['username'] = ProjectModule::t('Executor'); } //'Автор'; break; case 'Customer': $res1[$k]['sender']['username'] = ProjectModule::t('Customer'); //'Заказчик'; break; } $res1[$k]['sender']['username'] = $res1[$k]['sender']['fullusername']; if ($res[$k]->recipient > 0) { $res1[$k]['recipient'] = array(); $res1[$k]['recipient']['fullusername'] = $res[$k]->recipientObject->email; $res1[$k]['recipient']['superuser'] = $res[$k]->recipientObject->getRelated('AuthAssignment')->attributes; switch ($res1[$k]['recipient']['superuser']['itemname']) { case 'Admin': $res1[$k]['recipient']['username'] = ProjectModule::t('to admin'); //'админу'; break; case 'Manager': $res1[$k]['recipient']['username'] = ProjectModule::t('to manager'); //'менеджеру'; break; case 'Author': if (ProjectMessages::model()->getRole($res1[$k]['recipient_role']) == 'Corrector') { $res1[$k]['recipient']['username'] = ProjectModule::t('to corrector'); } else { $res1[$k]['recipient']['username'] = ProjectModule::t('to executor'); } //'автору'; break; case 'Customer': $res1[$k]['recipient']['username'] = ProjectModule::t('to customer'); //'заказчику'; break; } //$res1[$k]['recipient']['username']=$res1[$k]['recipient']['fullusername']; } if ($res1[$k]['sender_role']) { $res1[$k]['sender_role'] = ProjectMessages::model()->getRole($res1[$k]['sender_role']); } } return $res1; }
/** * Вывод и добавление сообщений */ public function actionIndex($orderId, $role = null) { $isCorrector = $role == 'Corrector' ? 1 : 0; $isGuest = Yii::app()->user->isGuest; if ($isGuest) { $url = 'http://' . $_SERVER['SERVER_NAME'] . '/user/login'; $this->redirect($url); } Yii::app()->session['project_id'] = $orderId; $order = Zakaz::model()->resetScope()->findByPk($orderId); if (Yii::app()->request->isAjaxRequest) { if (Yii::app()->request->getPost('ProjectMessages')) { $id = (int) $_POST['ProjectMessages']['id']; if ($id > 0) { // редактирование сообщения $model = ProjectMessages::model()->findByPk($id); } else { // новое сообщение $model = new ProjectMessages(); $model->sender = Yii::app()->user->id; $model->moderated = 0; $model->order = $orderId; } $post = $_POST['ProjectMessages']['message']; $post = str_replace("\r\n", '<br>', $post); $post = str_replace("\n", '<br>', $post); $_POST['ProjectMessages']['message'] = $post; $model->attributes = Yii::app()->request->getPost('ProjectMessages'); $model->date = date('Y-m-d H:i:s'); switch ($model->recipient) { case 'author_to_manager': $model->sender_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient_role = ProjectMessages::model()->getRoleId('Admin'); $model->recipient = 1; break; case 'customer_to_manager': $model->sender_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient_role = ProjectMessages::model()->getRoleId('Admin'); $model->recipient = 1; break; case 'corrector_to_manager': $model->sender_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient_role = ProjectMessages::model()->getRoleId('Admin'); $model->recipient = 1; break; case 'author_to_customer': $model->sender_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id']; break; case 'corrector_to_customer': $model->sender_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id']; break; case 'customer_to_author': $model->sender_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor']; break; case 'corrector_to_author': $model->sender_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor']; break; case 'author_to_corrector': $model->sender_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient = -2; break; case 'customer_to_corrector': $model->sender_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient = -2; break; } $model->save(); EventHelper::addMessage($orderId, $model->message); } $this->renderPartial('chat', array('order' => $order, 'orderId' => $orderId, 'isGuest' => $isGuest)); Yii::app()->end(); } if (User::model()->isAuthor() && (!User::model()->isCorrector() || !$order->technicalspec) && !User::model()->isExecutor($orderId)) { $this->redirect(Yii::app()->createUrl('/project/chat/view', array('orderId' => $orderId))); } if (User::model()->isCustomer() && $order->user_id != Yii::app()->user->id) { $this->redirect('/'); } $parts = ZakazParts::model()->findAll(array('condition' => "`proj_id`='{$orderId}'")); if (User::model()->isExecutor($order->id)) { $order->executor_event = null; } if (User::model()->isCustomer()) { $order->customer_event = null; } $order->save(false); $moderate_types = EventHelper::get_moderate_types_string(); $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId)); $PaymentImages = PaymentImage::model()->findAll(array('condition' => "`project_id`='{$orderId}'")); $moderated = count($events) == 0; $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'parts' => $parts, 'PaymentImages' => $PaymentImages, 'isCorrector' => $isCorrector)); }
function canAdd(Contact $user, $context, &$notAllowedMember = '') { return can_add($user, $context, ProjectMessages::instance()->getObjectTypeId(), $notAllowedMember); }
private function save_object($request) { $response = false; if (!empty($request['args'])) { $service = $request['srv']; switch ($service) { case "task": if ($request['args']['id']) { $object = ProjectTasks::instance()->findByid($request['args']['id']); } else { $object = new ProjectTask(); } if ($object instanceof ProjectTask) { if (!empty($request['args']['title'])) { $object->setObjectName($request['args']['title']); } if (!empty($request['args']['description'])) { $object->setText($request['args']['description']); } if (!empty($request['args']['due_date'])) { if ($request['args']['due_date'] != '' && $request['args']['due_date'] != date_format_tip('dd/mm/yyyy')) { $date_format = 'dd/mm/yyyy'; $object->setDueDate(DateTimeValueLib::dateFromFormatAndString($date_format, $value)); } } if (!empty($request['args']['completed'])) { $object->setPercentCompleted($request['args']['completed']); } if (!empty($request['args']['assign_to'])) { $object->setAssignedToContactId($request['args']['assign_to']); } if (!empty($request['args']['priority'])) { $object->setPriority($request['args']['priority']); } } break; case 'note': if ($request['args']['id']) { $object = ProjectMessages::instance()->findByid($request['args']['id']); } else { $object = new ProjectMessage(); } if ($object instanceof ProjectMessage) { if (!empty($request['args']['title'])) { $object->setObjectName($request['args']['title']); } if (!empty($request['args']['title'])) { $object->setText($request['args']['text']); } } break; } // END SWITCH if ($object) { try { $context = array(); $members = array(); if (!empty($request['args']['members'])) { $members = $request['args']['members']; $context = get_context_from_array($members); } //Check permissions: if ($request['args']['id'] && $object->canEdit(logged_user()) || !$request['args']['id'] && $object->canAdd(logged_user(), $context)) { DB::beginWork(); $object->save(); $object_controller = new ObjectController(); if (!$request['args']['id']) { $object_controller->add_to_members($object, $members); } DB::commit(); $response = true; } } catch (Exception $e) { DB::rollback(); return false; } } } return $this->response('json', $response); }
/** * Add comment * * @access public * @param void * @return null */ function add_comment() { $message = ProjectMessages::findById(get_id()); if (!$message instanceof ProjectMessage) { flash_error(lang('message dnx')); $this->redirectTo('message'); } // if if (!$message->canAddComment(logged_user())) { flash_error(lang('no access permissions')); $this->redirectToUrl($message->getViewUrl()); } // if $comment = new MessageComment(); $comment_data = array_var($_POST, 'comment'); tpl_assign('message', $message); tpl_assign('comment', $comment); tpl_assign('comment_data', $comment_data); if (is_array($comment_data)) { $comment->setFromAttributes($comment_data); $comment->setMessageId($message->getId()); if (!logged_user()->isMemberOfOwnerCompany()) { $comment->setIsPrivate(false); } try { DB::beginWork(); $comment->save(); ApplicationLogs::createLog($comment, active_project(), ApplicationLogs::ACTION_ADD); DB::commit(); // Try to send notification but don't break try { Notifier::newMessageComment($comment); } catch (Exception $e) { } // try flash_success(lang('success add comment')); $this->redirectToUrl($message->getViewUrl()); } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); } // try } // if }
/** * Return manager instance * * @access protected * @param void * @return ProjectMessages */ function manager() { if (!$this->manager instanceof ProjectMessages) { $this->manager = ProjectMessages::instance(); } return $this->manager; }
/** * Return array of important messages * * @param void * @return array */ function getImportantMessages() { if (logged_user()->isMemberOfOwnerCompany()) { return $this->getAllImportantMessages(); } // if if (is_null($this->important_messages)) { $this->important_messages = ProjectMessages::getImportantProjectMessages($this, false); } // if return $this->important_messages; }
<?php $panel = TabPanels::instance()->findById('messages-panel'); if ($panel instanceof TabPanel && $panel->getEnabled()) { $limit = 5 ; $result = ProjectMessages::instance()->listing(array( "order" => "name", "order_dir" => "asc", "start" => 0, "limit" => $limit )) ; $active_members = array(); $context = active_context(); foreach ($context as $selection) { if ($selection instanceof Member) $active_members[] = $selection; } if (count($active_members) > 0) { $mnames = array(); $allowed_contact_ids = array(); foreach ($active_members as $member) { $mnames[] = clean($member->getName()); } $widget_title = lang('notes'). ' '. lang('in').' '. implode(", ", $mnames); } $total = $result->total ; $messages = $result->objects; $genid = gen_id(); if ($total) { include_once 'template.php';
/** * Delete this object and reset all relationship. This function will not delete any of related objec * * @access public * @param void * @return boolean */ function delete() { try { DB::execute("UPDATE " . ProjectMessages::instance()->getTableName(true) . " SET `milestone_id` = '0' WHERE `milestone_id` = " . DB::escape($this->getId())); DB::execute("UPDATE " . ProjectTaskLists::instance()->getTableName(true) . " SET `milestone_id` = '0' WHERE `milestone_id` = " . DB::escape($this->getId())); return parent::delete(); } catch (Exception $e) { throw $e; } // try }
/** * This function will return paginated result. Result is an array where first element is * array of returned object and second populated pagination object that can be used for * obtaining and rendering pagination data using various helpers. * * Items and pagination array vars are indexed with 0 for items and 1 for pagination * because you can't use associative indexing with list() construct * * @access public * @param array $arguments Query argumens (@see find()) Limit and offset are ignored! * @param integer $items_per_page Number of items per page * @param integer $current_page Current page number * @return array */ function paginate($arguments = null, $items_per_page = 10, $current_page = 1) { if (isset($this) && instance_of($this, 'ProjectMessages')) { return parent::paginate($arguments, $items_per_page, $current_page); } else { return ProjectMessages::instance()->paginate($arguments, $items_per_page, $current_page); //$instance =& ProjectMessages::instance(); //return $instance->paginate($arguments, $items_per_page, $current_page); } // if }