public function actionEvents() { /** * @var $task Task * @var $cmd CDbCommand */ $result = array('success' => 1); if (isset($_GET['from']) && isset($_GET['to'])) { $start = date(Task::DF_INTER, intval($_GET['from']) / 1000); $end = date(Task::DF_INTER, intval($_GET['to']) / 1000); //echo $start."\n".$end; $criteria = new CDbCriteria(); $criteria->addBetweenCondition('start_date', $start, $end); if ($this->_user()->role == User::ROLE_USER) { $cmd = Yii::app()->db->createCommand(); $taskIds = $cmd->select('task_id')->from(Job::model()->tableName())->where('organization_id = :id AND (updated_at BETWEEN :start AND :end)', array(':id' => $this->_user()->organization_id, ':start' => $start, ':end' => $end))->queryColumn(); $criteria->addInCondition('id', $taskIds); } $tasks = Task::model()->findAll($criteria, array('order' => array('priority' => 'DESC'))); $data = array(); foreach ($tasks as $task) { $data[] = array('id' => $task->id, 'title' => $task->name, 'url' => Yii::app()->createUrl('task/view', array('id' => $task->id)), 'start' => strtotime($task->created_at) . '000', 'end' => strtotime($task->created_at) + 1800 . '000', 'class' => 'priority-' . $task->priority); } $result['result'] = $data; } $this->renderJSON($result); }
/** * This is the default 'index' action that is invoked * when an action is not explicitly requested by users. */ public function actionIndex() { $model = new Task(); $tasks = Task::model()->findAllByAttributes(array('owner' => Yii::app()->user->id)); // renders the view file 'protected/views/site/index.php' // using the default layout 'protected/views/layouts/main.php' $this->render('index', array('model' => $model, 'tasks' => $tasks)); }
/** * @param $jobId * @return null|JobInterface */ public function getJob($jobId) { /** * @var JobIdentity $identity */ $identity = JobIdentity::model()->findByPk($jobId); return $this->createJob($identity); }
private function loadModel($id) { $task = Task::model()->findByPk($id); if (!$task) { $this->sendResponse(array(), 404, array('Task not found.')); } return $task; }
/** * Получает доступ к редактированию проекту если: * Администратор, содатель проекта, участник конкретного действия. * @param type $projectID * @return boolean */ public static function accessEditProject($projectID, $taskId = NULL) { if (self::currentUserIsAdmin()) { return true; } if (!is_null(Project::model()->find(array('select' => 'id', 'condition' => 'id=:id AND user_id=:user_id', 'params' => array(':id' => $projectID, ':user_id' => Yii::app()->user->getId()))))) { return true; } if (!is_null($taskId) && !is_null(Task::model()->find(array('select' => 'id', 'condition' => 'id=:id AND project_id=:project_id AND executor=:user_id', 'params' => array(':id' => $taskId, ':project_id' => $projectID, ':user_id' => Yii::app()->user->getId()))))) { return true; } return false; }
/** * Query for calendar */ public function actionAjaxList($start, $end) { $user_id = Yii::app()->user->getId(); $conditionDate = '(start_date < :end AND end_date > :start)'; if (Yii::app()->db->driverName == 'sqlite') { $conditionDate = '(date(start_date) < date(:end) AND date(end_date) > date(:start))'; } $tasks = Task::model()->findAll(array('condition' => $conditionDate . ' AND (project.user_id = :user_id OR t.executor =:user_id1 )', 'params' => array(':end' => date('Y-m-d', $end), ':start' => date('Y-m-d', $start), ':user_id' => $user_id, ':user_id1' => $user_id), 'with' => array('project' => array('select' => 'user_id')))); $data = array(); foreach ($tasks as $task) { $data[] = array('title' => $task->description, 'start' => strtotime($task->start_date), 'end' => strtotime($task->end_date), 'url' => $this->createUrl('/project/view', array('id' => $task->project_id))); } echo CJSON::encode($data); Yii::app()->end(); }
public function actionViewlog($id) { $this->layout = '//layouts/column1'; if (!Yii::app()->user->checkAccess('Admin')) { throw new CHttpException(403, 'You are not authorized to perform this action.'); } $model = Task::model()->findByPk($id); $tasklog = new TaskLog('search'); $tasklog->unsetAttributes(); if (isset($_GET['TaskLog'])) { $tasklog->attributes = $_GET['TaskLog']; if (isset($_GET['TaskLog']['date_search']) && $_GET['TaskLog']['date_search'] != '') { $tasklog->date = date('Y-m-d', strtotime($_GET['TaskLog']['date_search'])); } } $this->render('viewlog', array('tasklog' => $tasklog, 'model' => $model)); }
function print_task($tasks) { $id = 1; foreach ($tasks as $task) { $childcount = Task::model()->count(array('condition' => 'parent_id=' . $task->id . ' AND deleted=0')); $assignment = TaskAssignment::model()->find(array('condition' => 'task_id=' . $task->id . ' AND deleted=0')); if ($childcount > 0) { $childtasks = Task::model()->findAll(array('condition' => 'parent_id=' . $task->id . ' AND deleted=0')); echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '", "' . $task->title . '", "' . date('m/d/Y', strtotime($task->start_date)) . '", "' . date('m/d/Y', strtotime($task->due_date)) . '", "659af7", "#", 0, "' . (isset($assignment) ? $assignment->member->username : '') . '", 0, 1, ' . ($task->has_parent ? $task->parent_id : 0) . ', 0));'; print_task($childtasks); } else { echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '", "' . $task->title . '", "' . date('m/d/Y', strtotime($task->start_date)) . '", "' . date('m/d/Y', strtotime($task->due_date)) . '", "659af7", "#", 0, "' . (isset($assignment) ? $assignment->member->username : '') . '", 0, 0, ' . ($task->has_parent ? $task->parent_id : 0) . ', 0));'; // set criteria for tasklog $criteria = new CDbCriteria(); $criteria->with = array('taskAssignment.task'); $criteria->order = 'date ASC'; $criteria->condition = 'type="Project" AND task.id=' . $task->id . ' AND t.deleted=0 and task.deleted=0'; $criteria2 = new CDbCriteria(); $criteria2->with = array('taskAssignment.task'); $criteria2->condition = 'type="Non-project" AND t.member_id=' . $assignment->member_id . ' AND t.deleted=0 AND t.date BETWEEN "' . $task->start_date . '" AND "' . $task->due_date . '"'; $criteria3 = new CDbCriteria(); $criteria3->with = array('taskAssignment.task'); $criteria3->condition = 'type="Project" AND t.member_id=' . $assignment->member_id . ' AND t.deleted=0 AND t.date BETWEEN "' . $task->start_date . '" AND "' . $task->due_date . '"'; // Merge criteria $criteria->mergeWith($criteria2, 'OR'); $criteria->mergeWith($criteria3, 'OR'); // Get tasklog based on criteria $tasklog = TaskLog::model()->findAll($criteria); if ($tasklog) { echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '.1", "' . $task->title . ' - REAL", "", "", "fe7e7e", "#", 0, "-", 0, 1, ' . ($task->has_parent ? $task->parent_id : 0) . ', 0));'; foreach ($tasklog as $item) { if ($item->type == "Non-project") { echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '.' . $item->id . '", "' . $item->date . ' - ' . $item->task_title . ' (Non-project)", "' . date('m/d/Y', strtotime($item->date)) . '", "' . date('m/d/Y', strtotime($item->date)) . '", "737070", "#", 0, "' . $item->member->username . '", 0, 0, "' . $task->id . '.1", "' . $task->title . '-REAL", 0));'; } else { if ($item->type == "Project" && $item->taskAssignment->task->id != $task->id) { echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '.' . $item->id . '", "' . $item->date . ' - ' . $item->taskAssignment->task->title . ' (Different project)", "' . date('m/d/Y', strtotime($item->date)) . '", "' . date('m/d/Y', strtotime($item->date)) . '", "737070", "#", 0, "' . $item->member->username . '", 0, 0, "' . $task->id . '.1", "' . $task->title . '-REAL", 0));'; } else { echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '.' . $item->id . '", "' . $item->date . '", "' . date('m/d/Y', strtotime($item->date)) . '", "' . date('m/d/Y', strtotime($item->date)) . '", "fe7e7e", "#", 0, "' . $item->member->username . '", 0, 0, "' . $task->id . '.1", "' . $task->title . '-REAL", 0));'; } } } } } } }
private function loadIdentities() { $model = JobIdentity::model(); $criteria = new \CDbCriteria(); $criteria->addCondition('broker_name = :name'); $criteria->addCondition('routing_key = :key'); $criteria->addCondition('status = ' . JobInterface::IS_NEW); $criteria->order = 'task_id'; $criteria->limit = 5; //1000; todo $criteria->params = [':name' => $this->broker->getName(), ':key' => $this->routingKey]; /** * @var JobIdentity[] $identities */ $identities = $model->findAll($criteria); $identityIds = []; foreach ($identities as $identity) { $this->identities[$identity->getId()] = $identity; $identityIds[] = $identity->getId(); } $model->updateByPk($identityIds, ['status' => JobInterface::SCHEDULED]); }
public function init() { if (ContactsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted()) { $eventHandler = array($this, 'updateContactLatestActivityDateTimeByTask'); Task::model()->attachEventHandler('onAfterSave', $eventHandler); $this->attachedEventHandlersIndexedByModelClassName['Task'] = array('onAfterSave', $eventHandler); } if (ContactsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated()) { $eventHandler = array($this, 'updateContactLatestActivityDateTimeByNote'); Note::model()->attachEventHandler('onAfterSave', $eventHandler); $this->attachedEventHandlersIndexedByModelClassName['Note'] = array('onAfterSave', $eventHandler); } if (ContactsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived()) { $eventHandler = array($this, 'updateContactLatestActivityDateTimeByEmailMessage'); EmailMessage::model()->attachEventHandler('onAfterSave', $eventHandler); $this->attachedEventHandlersIndexedByModelClassName['EmailMessage'] = array('onAfterSave', $eventHandler); } if (ContactsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast()) { $eventHandler = array($this, 'resolveModelLatestActivityDateTimeProcessFlagByMeeting'); Meeting::model()->attachEventHandler('onBeforeSave', $eventHandler); $this->attachedEventHandlersIndexedByModelClassName['Meeting'] = array('onBeforeSave', $eventHandler); } }
/** * @return JobIdentity */ protected function getIdentity() { return $this->identity = JobIdentity::model()->findByPk($this->getId()); }
/** * Returns data array of the attribute for create/update. * @param string the attribute name * @return array the attribute's data */ public function getAttributeData($attribute) { switch ($attribute) { case 'billedM': case 'spentM': $minutes = range(0, 60, 5); if (ctype_digit((string) $this->{$attribute}) && $this->{$attribute} >= 0 && $this->{$attribute} <= 60 && !in_array($this->{$attribute}, $minutes)) { $minutes[] = $this->{$attribute}; sort($minutes); } $retval = array(); foreach ($minutes as $minute) { $retval[$minute] = sprintf('%02u', $minute); } return $retval; case 'consultantId': return array(null => Yii::t('t', '- Please select -')) + CHtml::listData(User::model()->findAllActiveRecords(array($this->{$attribute})), 'id', 'screenName'); case 'isConfirmed': return array(null => Yii::t('attr', 'By default (The record is not confirmed by the project manager)'), self::IS_NOT_CONFIRMED => Yii::t('attr', 'No (The record is not confirmed by the project manager)'), self::IS_CONFIRMED => Yii::t('attr', 'Yes (The record is confirmed by the project manager)')); case 'managerId': return array(null => Yii::t('t', '- Please select -')) + CHtml::listData(User::model()->findAllActiveRecords(array($this->{$attribute})), 'id', 'screenName'); case 'taskId': return array(null => Yii::t('t', '- Please select -')) + CHtml::listData(Task::model()->findAllOpenRecords(array($this->{$attribute})), 'id', 'title'); default: return $this->{$attribute}; } }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = Task::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
<?php /* @var $this TaskController */ /* @var $model Task */ // Making task array $task = $model; $links = array(); $links = array_merge(array($task->title), $links); while ($task->has_parent) { $task = Task::model()->findByPk($task->parent_id); $links = array_merge(array($task->title => array('task/view', 'id' => $task->id)), $links); } $links = array_merge(array($model->project->name => array('project/view', 'id' => $model->project_id)), $links); $links = array_merge(array('Projects' => array('project/index')), $links); // Displaying breadcrumbs $this->widget('booster.widgets.TbBreadcrumbs', array('links' => $links)); $this->menu = array(array('label' => 'See my projects', 'url' => array('project/myProjects')), array('label' => 'See all projects', 'url' => array('project/index')), array('label' => 'Add task', 'url' => array('task/create', 'id' => $model->project_id)), array('label' => 'Update task', 'url' => array('task/update', 'id' => $model->id))); ?> <h2 class="page-header">Task Detail : <?php echo $model->title; ?> </h2> <?php $this->widget('booster.widgets.TbDetailView', array('id' => 'task-detail', 'data' => $model, 'attributes' => array('project.name', array('label' => 'Parent Task', 'value' => $model->has_parent == 0 ? '-' : $model->parent->title), array('label' => 'Creator', 'value' => $model->creator->username), array('label' => 'Assigned to', 'value' => TaskAssignment::model()->find(array('condition' => 'task_id=' . $model->id . ' AND deleted=0')) ? TaskAssignment::model()->find(array('condition' => 'task_id=' . $model->id . ' AND deleted=0'))->member->username : '******'), array('label' => 'Start date', 'value' => date('d-m-Y', strtotime($model->start_date))), array('label' => 'Due date', 'value' => date('d-m-Y', strtotime($model->due_date))), array('label' => 'Status', 'value' => $model->status)))); ?> <!-- Display current status --> <!--<h4> <b>Current Status :</b> <?php /*$model->status=="New" ? $this->widget('booster.widgets.TbLabel', array('context' => 'default','label' => 'NEW')) :
public function userAllTasks(User $user) { $criteria = new CDbCriteria(); $criteria->alias = 'job'; $criteria->select = 'task.user_id as task_user_id, task.name as name, task.number as number, task.priority as priority, user.name as user_name, job.*'; $criteria->join = 'LEFT JOIN ' . Task::model()->tableName() . ' on task.id = job.task_id LEFT JOIN ' . User::model()->tableName() . ' on user.id = task.user_id'; $criteria->compare('job.organization_id', $user->organization_id); if ($this->number) { $criteria->compare('task.number', $this->number); } if ($this->period_id) { $criteria->compare('task.period_id', $this->period_id); } if ($this->priority) { $criteria->compare('task.priority', $this->priority); } if ($this->status) { $criteria->compare('job.status', $this->status); } return new CActiveDataProvider(Job::model(), array('criteria' => $criteria, 'sort' => array('defaultOrder' => 'task.period_id DESC, job.status ASC, task.priority DESC', 'route' => "task/user", 'attributes' => array('priority' => array('asc' => 'task.priority', 'desc' => 'task.priority DESC'), 'name' => array('asc' => 'task.name', 'desc' => 'task.name DESC'), 'number' => array('asc' => 'task.number', 'desc' => 'task.number DESC'), 'user_name' => array('asc' => 'user.name', 'desc' => 'user.name DESC'), '*')), 'pagination' => array('pageSize' => 20, 'route' => "task/user"))); }
<?php $actives = array(false, false, false); if (preg_match('#^\\S*\\@task\\%20created\\_by\\_username\\:\\(\\=\\=\\%7B' . Yii::app()->user->username . '\\%7D\\)$#', Yii::app()->request->requestUri)) { $actives[1] = true; } else { if (preg_match('#^\\S*\\@task\\%20responsible_username\\:\\(\\=\\=\\%7B' . Yii::app()->user->username . '\\%7D\\)$#', Yii::app()->request->requestUri)) { $actives[2] = true; } else { $actives[0] = true; } } $this->widget('zii.widgets.CMenu', array('id' => 'sub-menu', 'items' => array(array('label' => Yii::t('TOAST', 'All Task'), 'url' => array('/task'), 'active' => $actives[0]), array('label' => Yii::t('TOAST', 'Created By Me'), 'url' => array('/task/index/q/@task created_by_username:(=={' . Yii::app()->user->username . '})'), 'active' => $actives[1]), array('label' => Yii::t('TOAST', 'Responsible By Me'), 'url' => array('/task/index/q/@task responsible_username:(=={' . Yii::app()->user->username . '})'), 'active' => $actives[2]), array('label' => Yii::t('TOAST', 'Recent Run'), 'url' => array('/run'), 'active' => false)))); ?> <div class="search"> <?php $this->Widget('application.extensions.querybuilder.QueryBuilderWidget', array('name' => 'search', 'options' => array('action' => Yii::app()->getBaseUrl(true) . '/#table#/index', 'cTable' => 'task', 'queryListUrl' => Yii::app()->getBaseUrl(true) . '/query/getlist', 'createQueryUrl' => Yii::app()->getBaseUrl(true) . '/query/create', 'updateQueryUrl' => Yii::app()->getBaseUrl(true) . '/query/update', 'deleteQueryUrl' => Yii::app()->getBaseUrl(true) . '/query/delete', 'tables' => array('task' => array('label' => '任务', 'items' => array('id' => array('label' => 'ID', 'type' => 'text', 'operators' => array('==' => '等于', '-=' => '不等于', '>=' => '大于等于', '>' => '大于', '<' => '小于', '<=' => '小于等于', '=' => '包含', '!=' => '不包含')), 'name' => array('label' => '任务名称', 'type' => 'text', 'operators' => array('' => '含有', '-' => '不含有')), 'type' => array('label' => '任务类型', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Task::model()->getTypeOptions()), 'product_id' => array('label' => '所属产品', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Product::getAllProductsList()), 'project_path' => array('label' => '模块路径', 'type' => 'text', 'operators' => array('in' => '在某路径下', '==' => '等于', '-=' => '不等于')), 'responsible_username' => array('label' => '负责人', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Yii::app()->user->getUsernameOpts()), 'svn_url' => array('label' => 'SVN监控', 'type' => 'text', 'operators' => array('' => '含有', '-' => '不含有')), 'created_by_username' => array('label' => '创建者', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Yii::app()->user->getUsernameOpts()), 'create_time' => array('label' => '创建时间', 'type' => 'text', 'operators' => array('' => '等于', '-' => '不等于', '>=' => '大于等于', '>' => '大于', '<' => '小于', '<=' => '小于等于')), 'updated_by_username' => array('label' => '修改者', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Yii::app()->user->getUsernameOpts()), 'update_time' => array('label' => '修改时间', 'type' => 'text', 'operators' => array('' => '等于', '-' => '不等于', '>=' => '大于等于', '>' => '大于', '<' => '小于', '<=' => '小于等于')))))))); ?> </div> </div> <div class="main-list"> <div class="link-bar"> <span class="task-new icon-link"><?php echo CHtml::link(Yii::t("TOAST", "Create"), array('/task/create')); ?> </span> </div> <?php $this->widget('GridView', array('id' => 'vtasks', 'dataProvider' => $vTaskProvider, 'htmlOptions' => array('class' => 'widget-view'), 'enablePageSize' => true, 'selectionChanged' => 'js:function(id){ var selectedID = $.fn.yiiGridView.getSelection(id); if(selectedID.toString().match(/\\d+/)) location.href = getRootPath() + "/task/view/id/" + selectedID;
</div> <div class="dash-non-editabble-date" > <?php if ($d['due_date'] != '') { echo $d['due_date']; ?> <?php } ?> </div> </td> <td> <?php echo Task::model()->findByPk($d['pts'])->name; ?> <!-- <?php // echo $d['sp']; if ($d['due_date'] != '') { ?> <select style="background:transparent;border:none;color:white" disabled> <option class="option" value="0">choose</option> <?php foreach ($liststatus as $l) { ?> <option value="<?php echo $l->id; ?> " <?php
public function actionEventDetail($id) { if (@$_GET['asModal'] == true) { if (!Yii::app()->user->checkAccess('Staff')) { $model = Project::model()->findByPk($id); } else { $model = Task::model()->findByPk($id); } } $this->renderPartial('event_detail', array('model' => $model), false, true); }
<?php /* @var $this ProjectController */ /* @var $model Project */ // Get member from creator id $project_owner = Member::model()->find(array('condition' => 'account_id=' . $model->creator->id)); // Get progress of the project $task = Task::model()->count(array('condition' => 'project_id=' . $model->id . ' AND deleted=0 and has_parent=0')); $completedtask = Task::model()->count(array('condition' => 'project_id=' . $model->id . ' AND status="Complete" AND deleted=0 and has_parent=0')); $this->widget('booster.widgets.TbBreadcrumbs', array('links' => array('Projects' => array('project/index'), $model->name))); $this->menu = array(array('label' => 'See my projects', 'url' => array('project/myProjects')), array('label' => 'See all projects', 'url' => array('project/index')), array('label' => 'Update this project', 'url' => array('project/update', 'id' => $model->id)), array('label' => 'Add task', 'url' => array('task/create', 'id' => $model->id))); ?> <h2 class="page-header">Project Detail : <?php echo $model->name; ?> </h2> <?php $this->widget('booster.widgets.TbDetailView', array('id' => 'project-detail', 'data' => $model, 'attributes' => array('code', array('label' => 'Project Owner', 'value' => $project_owner->name), array('label' => 'Department', 'value' => $project_owner->department), 'description', array('label' => 'Start date', 'value' => date('d-m-Y', strtotime($model->start_date))), array('label' => 'Due date', 'value' => date('d-m-Y', strtotime($model->due_date)))))); ?> <hr> <!-- Display current status --> <h4> <b>Current Status :</b> <?php $model->status == "Upcoming" ? $this->widget('booster.widgets.TbLabel', array('context' => 'primary', 'label' => 'Upcoming')) : ($model->status == "Active" ? $this->widget('booster.widgets.TbLabel', array('context' => 'success', 'label' => 'Active')) : $this->widget('booster.widgets.TbLabel', array('context' => 'danger', 'label' => 'Expired'))); ?> </h4><hr> <!-- Display current progress --> <h4>
public function actionView() { if (!isset($_GET['id'])) { $this->_sendResponse(500, 'Error: Parameter <b>id</b> is missing'); } switch ($_GET['model']) { case 'user': $model = User::model()->findByPk($_GET['id']); unset($model->password); break; case 'task': $model = Task::model()->findByPk($_GET['id']); break; default: $this->_sendResponse(501, Yii::t('tasklist', 'Mode "view" is not implemented for model "{model}"', array('{model}' => $_GET['model']))); exit; } if (is_null($model)) { $this->_sendResponse(404, Yii::t('tasklist', 'Couldn\'t find any {model} with id "{id}"', array('{model}' => $_GET['model'], '{id}' => $_GET['id']))); } else { $this->_sendResponse(200, CJSON::encode($model->attributes)); } }
/** * 取得特定時間(Taskid)資料 */ public function actionGetTeachJsonByID($id) { if (floor($id) == $id) { //檢查ID是否存在 if (Task::model()->exists('TaskID = :TaskID', array(":TaskID" => $id))) { echo $this->getJson($id, '教學單位'); } else { echo "error"; } } }
?> /img/icon-team/rizki-new.jpg" data-description=""></option> <option value="cash" data-image="<?php echo Yii::app()->request->baseUrl; ?> /img/icon-team/yuda-new.jpg" data-description="" ></option> --> </select> </div> </td> <td > <select class="combo-t" style="display:inline"> <?php $task = Project::model()->findByPk($de[id])->task; foreach (Task::model()->findAll() as $d) { ?> <option <?php if ($task == $d[id]) { echo "selected"; } ?> value="<?php echo $d->id; ?> "><?php echo $d->name; ?> </option> <?php }
public function getAllTasks() { $tasks = Task::model()->findAll(); $tasks = CHtml::listData($tasks, 'id', 'name'); return $tasks; }
/** * Print out array of models for the jqGrid rows. */ public function actionGridData() { if (!Yii::app()->request->isPostRequest) { throw new CHttpException(400, Yii::t('http', 'Invalid request. Please do not repeat this request again.')); exit; } // specify request details $jqGrid = $this->processJqGridRequest(); // specify filter parameters $company = isset($_GET['company']) ? $_GET['company'] : null; if ($company !== 'all' && !ctype_digit($company)) { $company = 'all'; } $consultant = isset($_GET['consultant']) ? $_GET['consultant'] : null; if ($consultant !== 'all' && $consultant !== 'me' && $consultant !== 'none' && !ctype_digit($consultant)) { $consultant = 'all'; } if (Yii::app()->user->checkAccess(User::CONSULTANT) && $consultant !== 'none') { $consultant = 'me'; } $priority = isset($_GET['priority']) ? $_GET['priority'] : null; if ($priority !== 'all' && $priority !== (string) Task::PRIORITY_HIGHEST && $priority !== (string) Task::PRIORITY_HIGH && $priority !== (string) Task::PRIORITY_MEDIUM && $priority !== (string) Task::PRIORITY_LOW && $priority !== (string) Task::PRIORITY_LOWEST) { $priority = 'all'; } $project = isset($_GET['project']) ? $_GET['project'] : null; if ($project !== 'all' && !ctype_digit($project)) { $project = 'all'; } $state = isset($_GET['state']) ? $_GET['state'] : null; if (Yii::app()->user->checkAccess(User::CLIENT) && $state === null) { $state = 'all'; } if ($state !== 'all' && $state !== 'closed' && $state !== 'open' && $state !== 'overdue') { $state = 'open'; } // criteria $criteria = new CDbCriteria(); $criteria->group = "`t`.`id`"; // required by together() $criteria->select = "`t`.dueDate, `t`.priority, `t`.status, `t`.title"; //$criteria->select="`t`.`dueDate`, `t`.`priority`, `t`.`status`, `t`.`title`"; // uncomment in yii-1.1.2 if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) { $field = array('dueDate' => "`t`.`dueDate`", 'priority' => "`t`.`priority`", 'status' => "`t`.`status`", 'title' => "`t`.`title`", 'company' => "`Task_Company`.`title`", 'project' => "`Task_Project`.`title`", 'consultant' => "`Task_Consultant`.`screenName`"); $operation = $this->getJqGridOperationArray(); $keywordFormula = $this->getJqGridKeywordFormulaArray(); if (isset($field[$jqGrid['searchField']]) && isset($operation[$jqGrid['searchOper']])) { $criteria->condition = '(' . $field[$jqGrid['searchField']] . ' ' . $operation[$jqGrid['searchOper']] . ' :keyword)'; $criteria->params = array(':keyword' => str_replace('keyword', $jqGrid['searchString'], $keywordFormula[$jqGrid['searchOper']])); // search by special field types if ($jqGrid['searchField'] === 'createTime' && ($keyword = strtotime($jqGrid['searchString'])) !== false) { $criteria->params = array(':keyword' => str_replace('keyword', $keyword, $keywordFormula[$jqGrid['searchOper']])); if (date('H:i:s', $keyword) === '00:00:00') { // visitor is looking for a precision by day, not by second $criteria->condition = '(TO_DAYS(FROM_UNIXTIME(' . $field[$jqGrid['searchField']] . ',"%Y-%m-%d")) ' . $operation[$jqGrid['searchOper']] . ' TO_DAYS(FROM_UNIXTIME(:keyword,"%Y-%m-%d")))'; } } } } if ($company !== 'all') { $criteria->addCondition("`Task_Company`.`id`=:companyId"); $criteria->params[':companyId'] = $company; } if ($consultant !== 'all') { if ($consultant === 'none') { $criteria->addCondition("NOT EXISTS (SELECT 1 FROM `" . User2Task::model()->tableName() . "` `u2t` WHERE `u2t`.`taskId`=`t`.`id` AND `u2t`.`role`=:consultantRole)"); $criteria->params[':consultantRole'] = User2Task::CONSULTANT; } else { if ($consultant === 'me') { $criteria->addCondition("`Task_Consultant`.`id`=:consultantId"); $criteria->params[':consultantId'] = Yii::app()->user->id; } else { $criteria->addCondition("`Task_Consultant`.`id`=:consultantId"); $criteria->params[':consultantId'] = $consultant; } } } if ($priority === (string) Task::PRIORITY_HIGHEST) { $criteria->addCondition("`t`.`priority`=:priorityHighest"); $criteria->params[':priorityHighest'] = Task::PRIORITY_HIGHEST; } else { if ($priority === (string) Task::PRIORITY_HIGH) { $criteria->addCondition("`t`.`priority`=:priorityHigh"); $criteria->params[':priorityHigh'] = Task::PRIORITY_HIGH; } else { if ($priority === (string) Task::PRIORITY_MEDIUM) { $criteria->addCondition("`t`.`priority`=:priorityMedium"); $criteria->params[':priorityMedium'] = Task::PRIORITY_MEDIUM; } else { if ($priority === (string) Task::PRIORITY_LOW) { $criteria->addCondition("`t`.`priority`=:priorityLow"); $criteria->params[':priorityLow'] = Task::PRIORITY_LOW; } else { if ($priority === (string) Task::PRIORITY_LOWEST) { $criteria->addCondition("`t`.`priority`=:priorityLowest"); $criteria->params[':priorityLowest'] = Task::PRIORITY_LOWEST; } } } } } if ($project !== 'all') { $criteria->addCondition("`Task_Project`.`id`=:projectId"); $criteria->params[':projectId'] = $project; } if ($state === 'closed') { $criteria->addCondition("((`t`.`closeDate` IS NOT NULL AND TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') <= TO_DAYS(`t`.`closeDate`))" . " OR `t`.`status`='" . Task::CANCELLED . "' OR `t`.`status`='" . Task::COMPLETED . "')"); } else { if ($state === 'open') { $criteria->addCondition("((`t`.`closeDate` IS NULL OR TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') < TO_DAYS(`t`.`closeDate`))" . " AND `t`.`status`!='" . Task::CANCELLED . "' AND `t`.`status`!='" . Task::COMPLETED . "')"); } else { if ($state === 'overdue') { $criteria->addCondition("(((`t`.`closeDate` IS NULL OR TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') < TO_DAYS(`t`.`closeDate`))" . " AND `t`.`status`!='" . Task::CANCELLED . "' AND `t`.`status`!='" . Task::COMPLETED . "')" . " AND TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') >= TO_DAYS(`t`.`dueDate`))"); } } } if (Yii::app()->user->checkAccess(User::CLIENT)) { $criteria->addCondition("`Company_User2Company`.`userId`=:clientId AND `Company_User2Company`.`position`=:clientPosition"); $criteria->params[':clientId'] = Yii::app()->user->id; $criteria->params[':clientPosition'] = Company::OWNER; } // pagination $with = array(); if (strpos($criteria->condition, 'Task_Company') !== false) { $with[] = 'company'; } if (strpos($criteria->condition, 'Task_Consultant') !== false) { $with[] = 'allConsultant'; } if (strpos($criteria->condition, 'Task_Project') !== false) { $with[] = 'project'; } if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with[] = 'company.allUser2Company'; } if (count($with) >= 1) { $pages = new CPagination(Task::model()->with($with)->count($criteria)); } else { $pages = new CPagination(Task::model()->count($criteria)); } $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE; $pages->applyLimit($criteria); // sort $sort = new CSort('Task'); $sort->attributes = array('dueDate' => array('asc' => "`t`.`dueDate`", 'desc' => "`t`.`dueDate` desc", 'label' => Task::model()->getAttributeLabel('Due')), 'priority' => array('asc' => "`t`.`priority`", 'desc' => "`t`.`priority` desc", 'label' => Task::model()->getAttributeLabel('Pr')), 'status' => array('asc' => "`t`.`status`", 'desc' => "`t`.`status` desc", 'label' => Task::model()->getAttributeLabel('status')), 'title' => array('asc' => "`t`.`title`", 'desc' => "`t`.`title` desc", 'label' => Task::model()->getAttributeLabel('title')), 'company' => array('asc' => "`Task_Company`.`title`", 'desc' => "`Task_Company`.`title` desc", 'label' => Task::model()->getAttributeLabel('companyId')), 'consultant' => array('asc' => "`Task_Consultant`.`screenName`", 'desc' => "`Task_Consultant`.`screenName` desc", 'label' => User::model()->getAttributeLabel('screenName')), 'project' => array('asc' => "`Task_Project`.`title`", 'desc' => "`Task_Project`.`title` desc", 'label' => Task::model()->getAttributeLabel('projectId'))); $sort->defaultOrder = "`t`.`closeDate` ASC, `t`.`priority` ASC, `t`.`dueDate` DESC"; $sort->applyOrder($criteria); // find all $with = array('allConsultant' => array('select' => 'screenName'), 'company' => array('select' => 'title'), 'project' => array('select' => 'title')); if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with['company.allUser2Company'] = array('select' => 'id'); } $together = strpos($criteria->condition, 'Task_Consultant') !== false || strpos($criteria->order, 'Task_Consultant') !== false || strpos($criteria->condition, 'Company_User2Company') !== false || strpos($criteria->order, 'Company_User2Company') !== false; if ($together) { $models = Task::model()->with($with)->together()->findAll($criteria); } else { $models = Task::model()->with($with)->findAll($criteria); } // create resulting data array $data = array('page' => $pages->getCurrentPage() + 1, 'total' => $pages->getPageCount(), 'records' => $pages->getItemCount(), 'rows' => array()); foreach ($models as $model) { $data['rows'][] = array('id' => $model->id, 'cell' => array(isset($model->company->id) ? CHtml::link(CHtml::encode($model->company->title), array('company/show', 'id' => $model->company->id)) : '', isset($model->project->id) ? CHtml::link(CHtml::encode($model->project->title), array('project/show', 'id' => $model->project->id)) : '', CHtml::encode($model->getAttributeView('priority')), CHtml::encode($model->title), isset($model->allConsultant[0]->id) ? CHtml::link(CHtml::encode($model->allConsultant[0]->screenName), array('user/show', 'id' => $model->allConsultant[0]->id)) : '', CHtml::encode(MDate::format($model->dueDate, 'medium', null)), CHtml::encode($model->getAttributeView('status')), CHtml::link('<span class="ui-icon ui-icon-zoomin"></span>', array('show', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-first ui-corner-all', 'title' => Yii::t('link', 'Show'))) . CHtml::link('<span class="ui-icon ui-icon-pencil"></span>', array('update', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-last ui-corner-all', 'title' => Yii::t('link', 'Edit'))))); } $this->printJson($data); }
<div class="w3-detail-box ui-widget-content ui-corner-all"> <div class="w3-detail-row w3-first"> <div class="w3-detail-row-label"><?php echo CHtml::encode(Task::model()->getAttributeLabel('companyId')); ?> </div> <div class="w3-detail-row-value"><?php echo isset($model->task->company->id) ? CHtml::link(CHtml::encode($model->task->company->title), array('company/show', 'id' => $model->task->company->id)) : ''; ?> </div> <div class="clear"> </div> </div> <div class="w3-detail-row"> <div class="w3-detail-row-label"><?php echo CHtml::encode(Task::model()->getAttributeLabel('projectId')); ?> </div> <div class="w3-detail-row-value"><?php echo isset($model->task->project->id) ? CHtml::link(CHtml::encode($model->task->project->title), array('project/show', 'id' => $model->task->project->id)) : ''; ?> </div> <div class="clear"> </div> </div> <div class="w3-detail-row"> <div class="w3-detail-row-label"><?php echo CHtml::encode($model->getAttributeLabel('taskId')); ?> </div> <div class="w3-detail-row-value"><?php echo isset($model->task->id) ? CHtml::link(CHtml::encode($model->task->title), array('task/show', 'id' => $model->task->id)) : '';
<b style="font-size:20px">WORKING ON</b> <br> <p style="text-transform:uppercase" class="project-name" > <?php // echo Yii::app()->user->id; $userid = Team::model()->find("username='******'")->id; // $userid; $pd = ProjectDetail::model()->find("worker_id='{$userid}'")->project_id; // echo $pd; echo Project::model()->findByPk($pd)->project_name; ?> </p> </div> <div class="right"> <?php $liststatus = Task::model()->findAll(); $id = Yii::app()->user->id; $idt = Team::model()->find("username = '******'")->id; $idp = Project::model()->find("worker={$idt} and status!=5")->id; $name = Project::model()->find("worker={$idt} and status!=5")->username; $ids = Project::model()->find("worker={$idt} and status!=5")->task; ?> <br> <b style="font-size:20px;display:none;">set by : (<?php echo $name; ?> ) </b> <div class="btn view-project" > <div class="status-work" style="visibility:hidden">
public function actionCheckTop() { if ($task = Task::model()->delayed()->find()) { $task->goTask(); Yii::log('Task ' . $task->type . ' Anketa ' . $task->id_user . ' ' . date('d.m.Y H:i:s', $task->time_task), 'info', 'payment'); } else { echo ';'; } }
} ?> value="<?php echo $x->id; ?> "><?php echo $x->name; ?> </option> <?php } ?> </select> <?php } else { echo Task::model()->findByPk($d->task_id)->name; } ?> </td> <td style="width:60px;"> <div title="<?php echo $d->progres . "% "; ?> " style="margin-bottom:-10px;width:50px" class="progresbar pro-bar-container color-belize-hole"> <div class="pro-bar bar-<?php echo $d->progres; ?> color-peter-river" data-pro-bar-percent="100" data-pro-bar-delay="200"> <div class="pro-bar-candy candy-ltr"></div>
/** * Grid of all models. */ public function actionGrid() { // specify filter parameters $company = isset($_GET['company']) ? $_GET['company'] : null; if ($company !== 'all' && !ctype_digit($company)) { $company = 'all'; } $priority = isset($_GET['priority']) ? $_GET['priority'] : null; if ($priority !== 'all' && $priority !== (string) Project::PRIORITY_HIGHEST && $priority !== (string) Project::PRIORITY_HIGH && $priority !== (string) Project::PRIORITY_MEDIUM && $priority !== (string) Project::PRIORITY_LOW && $priority !== (string) Project::PRIORITY_LOWEST) { $priority = 'all'; } $state = isset($_GET['state']) ? $_GET['state'] : null; if ($state !== 'all' && $state !== 'closed' && $state !== 'open') { $state = 'all'; } // criteria $criteria = new CDbCriteria(); $criteria->group = "`t`.`id`"; // required by together() $criteria->select = "`t`.closeDate, `t`.hourlyRate, `t`.openDate, `t`.priority, `t`.title"; //$criteria->select="`t`.`closeDate`, `t`.`hourlyRate`, `t`.`openDate`, `t`.`priority`, `t`.`title`"; // uncomment in yii-1.1.2 if ($company !== 'all') { $criteria->addCondition("`Project_Company`.`id`=:companyId"); $criteria->params[':companyId'] = $company; } if ($priority === (string) Project::PRIORITY_HIGHEST) { $criteria->addCondition("`t`.`priority`=:priorityHighest"); $criteria->params[':priorityHighest'] = Project::PRIORITY_HIGHEST; } else { if ($priority === (string) Project::PRIORITY_HIGH) { $criteria->addCondition("`t`.`priority`=:priorityHigh"); $criteria->params[':priorityHigh'] = Project::PRIORITY_HIGH; } else { if ($priority === (string) Project::PRIORITY_MEDIUM) { $criteria->addCondition("`t`.`priority`=:priorityMedium"); $criteria->params[':priorityMedium'] = Project::PRIORITY_MEDIUM; } else { if ($priority === (string) Project::PRIORITY_LOW) { $criteria->addCondition("`t`.`priority`=:priorityLow"); $criteria->params[':priorityLow'] = Project::PRIORITY_LOW; } else { if ($priority === (string) Project::PRIORITY_LOWEST) { $criteria->addCondition("`t`.`priority`=:priorityLowest"); $criteria->params[':priorityLowest'] = Project::PRIORITY_LOWEST; } } } } } if ($state === 'closed') { $criteria->addCondition("(`t`.`closeDate` IS NOT NULL AND TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') <= TO_DAYS(`t`.`closeDate`))"); } else { if ($state === 'open') { $criteria->addCondition("(`t`.`closeDate` IS NULL OR TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') < TO_DAYS(`t`.`closeDate`))"); } } if (User::isClient()) { $criteria->addCondition("`Company_User2Company`.`userId`=:clientId AND `Company_User2Company`.`position`=:clientPosition"); $criteria->params[':clientId'] = Yii::app()->user->id; $criteria->params[':clientPosition'] = Company::OWNER; } if (User::isConsultant()) { $criteria->addCondition("`Task_Consultant`.`id`=:consultantId"); $criteria->params[':consultantId'] = Yii::app()->user->id; } // pagination $with = array(); if (strpos($criteria->condition, 'Project_Company') !== false) { $with[] = 'allCompany'; } if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with[] = 'allCompany.allUser2Company'; } if (strpos($criteria->condition, 'Task_Consultant') !== false) { $with[] = 'allTask.allConsultant'; } if (count($with) >= 1) { $pages = new CPagination(Project::model()->with($with)->count($criteria)); } else { $pages = new CPagination(Project::model()->count($criteria)); } $pages->pageSize = self::GRID_PAGE_SIZE; $pages->applyLimit($criteria); // sort $sort = new CSort('Project'); $sort->attributes = array('closeDate' => array('asc' => "`t`.`closeDate`", 'desc' => "`t`.`closeDate` desc", 'label' => Project::model()->getAttributeLabel('Closed')), 'hourlyRate' => array('asc' => "`t`.`hourlyRate`", 'desc' => "`t`.`hourlyRate` desc", 'label' => Project::model()->getAttributeLabel('Rate')), 'openDate' => array('asc' => "`t`.`openDate`", 'desc' => "`t`.`openDate` desc", 'label' => Project::model()->getAttributeLabel('Opened')), 'priority' => array('asc' => "`t`.`priority`", 'desc' => "`t`.`priority` desc", 'label' => Project::model()->getAttributeLabel('priority')), 'title' => array('asc' => "`t`.`title`", 'desc' => "`t`.`title` desc", 'label' => Project::model()->getAttributeLabel('title')), 'company' => array('asc' => "`Project_Company`.`title`", 'desc' => "`Project_Company`.`title` desc", 'label' => Company2Project::model()->getAttributeLabel('companyId'))); $sort->defaultOrder = "`t`.`closeDate` ASC, `t`.`priority` ASC, `t`.`createTime` DESC"; $sort->applyOrder($criteria); // find all $with = array('allCompany' => array('select' => 'title')); if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with['allCompany.allUser2Company'] = array('select' => 'id'); } if (strpos($criteria->condition, 'Task_Consultant') !== false) { $with['allTask.allConsultant'] = array('select' => 'id'); } $together = strpos($criteria->condition, 'Project_Company') !== false || strpos($criteria->order, 'Project_Company') !== false || strpos($criteria->condition, 'Company_User2Company') !== false || strpos($criteria->condition, 'Task_Consultant') !== false; if ($together) { $models = Project::model()->with($with)->together()->findAll($criteria); } else { $models = Project::model()->with($with)->findAll($criteria); } // filters data $filters = array('company' => $company, 'priority' => $priority, 'state' => $state); $allCompany = array(array('text' => Yii::t('t', 'All'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('company' => 'all'))), 'active' => $company === 'all')); $companyLinkText = $company === 'all' ? Yii::t('t', 'All companies') : ' '; $criteria = new CDbCriteria(); $criteria->select = "`t`.`id`, `t`.`title`, COUNT(DISTINCT `project`.`id`) as countProject"; if (User::isConsultant()) { $criteria->join = "INNER JOIN `" . Company2Project::model()->tableName() . "` `c2p` ON `c2p`.`companyId`=`t`.`id`" . " INNER JOIN `" . Project::model()->tableName() . "` `project` ON `project`.`id`=`c2p`.`projectId`" . " INNER JOIN `" . Task::model()->tableName() . "` `task` ON `task`.`projectId`=`project`.`id`" . " INNER JOIN `" . User2Task::model()->tableName() . "` `u2t` ON `u2t`.`taskId`=`task`.`id`"; $criteria->condition = "`u2t`.`userId`=:consultantId AND `u2t`.`role`=:consultantRole"; $criteria->params[':consultantId'] = Yii::app()->user->id; $criteria->params[':consultantRole'] = User2Task::CONSULTANT; } else { if (User::isClient()) { $criteria->join = "INNER JOIN `" . Company2Project::model()->tableName() . "` `c2p` ON `c2p`.`companyId`=`t`.`id`" . " INNER JOIN `" . Project::model()->tableName() . "` `project` ON `project`.`id`=`c2p`.`projectId`" . " INNER JOIN `" . User2Company::model()->tableName() . "` `u2c` ON `u2c`.`companyId`=`t`.`id`"; $criteria->condition = "`u2c`.`userId`=:clientId AND `u2c`.`position`=:clientPosition"; $criteria->params[':clientId'] = Yii::app()->user->id; $criteria->params[':clientPosition'] = Company::OWNER; } else { $criteria->join = "INNER JOIN `" . Company2Project::model()->tableName() . "` `c2p` ON `c2p`.`companyId`=`t`.`id`" . " INNER JOIN `" . Project::model()->tableName() . "` `project` ON `project`.`id`=`c2p`.`projectId`"; } } $criteria->group = "`t`.`id`"; $criteria->order = "`t`.`title` ASC"; $criteria->limit = 3000; foreach (Company::model()->findAll($criteria) as $model) { $allCompany[] = array('text' => CHtml::encode($model->title), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('company' => $model->id))), 'active' => $company === (string) $model->id); $i = count($allCompany) - 1; if ($allCompany[$i]['text'] === '') { $allCompany[$i]['text'] = Yii::t('t', '[no title]'); } $allCompany[$i]['text'] .= ' (' . $model->countProject . ')'; if ($company === (string) $model->id) { $companyLinkText = $model->title === '' ? Yii::t('t', '[no title]') : $model->title; } } $allPriority = array(array('text' => Yii::t('t', 'All'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => 'all'))), 'active' => $priority === 'all'), array('text' => Yii::t('t', 'Highest[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_HIGHEST))), 'active' => $priority === (string) Project::PRIORITY_HIGHEST), array('text' => Yii::t('t', 'High[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_HIGH))), 'active' => $priority === (string) Project::PRIORITY_HIGH), array('text' => Yii::t('t', 'Medium[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_MEDIUM))), 'active' => $priority === (string) Project::PRIORITY_MEDIUM), array('text' => Yii::t('t', 'Low[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_LOW))), 'active' => $priority === (string) Project::PRIORITY_LOW), array('text' => Yii::t('t', 'Lowest[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_LOWEST))), 'active' => $priority === (string) Project::PRIORITY_LOWEST)); switch ($priority) { case 'all': $priorityLinkText = Yii::t('t', 'All priorities'); break; case (string) Project::PRIORITY_HIGHEST: $priorityLinkText = Yii::t('t', 'Highest[priority]'); break; case (string) Project::PRIORITY_HIGH: $priorityLinkText = Yii::t('t', 'High[priority]'); break; case (string) Project::PRIORITY_MEDIUM: $priorityLinkText = Yii::t('t', 'Medium[priority]'); break; case (string) Project::PRIORITY_LOW: $priorityLinkText = Yii::t('t', 'Low[priority]'); break; case (string) Project::PRIORITY_LOWEST: $priorityLinkText = Yii::t('t', 'Lowest[priority]'); break; default: $priorityLinkText = ' '; } $allState = array(array('text' => Yii::t('t', 'All'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('state' => 'all'))), 'active' => $state === 'all'), array('text' => Yii::t('t', 'Open[projects]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('state' => 'open'))), 'active' => $state === 'open'), array('text' => Yii::t('t', 'Closed[projects]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('state' => 'closed'))), 'active' => $state === 'closed')); switch ($state) { case 'all': $stateLinkText = Yii::t('t', 'All states[project]'); break; case 'closed': $stateLinkText = Yii::t('t', 'Closed[projects]'); break; case 'open': $stateLinkText = Yii::t('t', 'Open[projects]'); break; break; default: $stateLinkText = ' '; } // rows for the static grid $gridRows = array(); foreach ($models as $model) { $gridRows[] = array(array('content' => isset($model->allCompany[0]->id) ? CHtml::link(CHtml::encode($model->allCompany[0]->title), array('company/show', 'id' => $model->allCompany[0]->id)) : ''), array('content' => CHtml::encode($model->title)), array('align' => 'right', 'content' => CHtml::encode($model->hourlyRate)), array('content' => CHtml::encode($model->getAttributeView('priority'))), array('align' => 'right', 'content' => CHtml::encode(MDate::format($model->openDate, 'medium', null)), 'title' => CHtml::encode(MDate::format($model->openDate, 'full', null))), array('align' => 'right', 'content' => CHtml::encode(MDate::format($model->closeDate, 'medium', null)), 'title' => CHtml::encode(MDate::format($model->closeDate, 'full', null))), array('content' => CHtml::link('<span class="ui-icon ui-icon-zoomin"></span>', array('show', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-first ui-corner-all', 'title' => Yii::t('link', 'Show'))) . CHtml::link('<span class="ui-icon ui-icon-pencil"></span>', array('update', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-last ui-corner-all', 'title' => Yii::t('link', 'Edit'))))); } // render the view file $this->render($this->action->id, array('models' => $models, 'pages' => $pages, 'sort' => $sort, 'company' => $company, 'priority' => $priority, 'state' => $state, 'filters' => $filters, 'allCompany' => $allCompany, 'companyLinkText' => $companyLinkText, 'allPriority' => $allPriority, 'priorityLinkText' => $priorityLinkText, 'allState' => $allState, 'stateLinkText' => $stateLinkText, 'gridRows' => $gridRows)); }
/** * Print out array of models for the jqGrid rows. */ public function actionGridData() { if (!Yii::app()->request->isPostRequest) { throw new CHttpException(400, Yii::t('http', 'Invalid request. Please do not repeat this request again.')); exit; } // specify request details $jqGrid = $this->processJqGridRequest(); // specify filter parameters $company = isset($_GET['company']) ? $_GET['company'] : null; if ($company !== 'all' && !ctype_digit($company)) { $company = 'all'; } $consultant = isset($_GET['consultant']) ? $_GET['consultant'] : null; if ($consultant !== 'all' && $consultant !== 'me' && !ctype_digit($consultant)) { $consultant = 'all'; } if (Yii::app()->user->checkAccess(User::CONSULTANT)) { $consultant = 'me'; } $manager = isset($_GET['manager']) ? $_GET['manager'] : null; if ($manager !== 'all' && !ctype_digit($manager)) { $manager = 'all'; } $project = isset($_GET['project']) ? $_GET['project'] : null; if ($project !== 'all' && !ctype_digit($project)) { $project = 'all'; } $task = isset($_GET['task']) ? $_GET['task'] : null; if ($task !== 'all' && !ctype_digit($task)) { $task = 'all'; } // criteria $criteria = new CDbCriteria(); $criteria->group = "`t`.`id`"; // required by together() $criteria->select = "`t`.billedMinute, `t`.spentMinute, `t`.timeDate, `t`.title"; //$criteria->select="`t`.`billedMinute`, `t`.`spentMinute`, `t`.`timeDate`, `t`.`title`"; // uncomment in yii-1.1.2 if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) { $field = array('billedMinute' => "`t`.`billedMinute`", 'spentMinute' => "`t`.`spentMinute`", 'timeDate' => "`t`.`timeDate`", 'title' => "`t`.`title`", 'consultant' => "`Time_Consultant`.`screenName`", 'manager' => "`Time_Manager`.`screenName`", 'task' => "`Time_Task`.`title`", 'company' => "`Task_Company`.`title`", 'project' => "`Task_Project`.`title`"); $operation = $this->getJqGridOperationArray(); $keywordFormula = $this->getJqGridKeywordFormulaArray(); if (isset($field[$jqGrid['searchField']]) && isset($operation[$jqGrid['searchOper']])) { $criteria->condition = '(' . $field[$jqGrid['searchField']] . ' ' . $operation[$jqGrid['searchOper']] . ' :keyword)'; $criteria->params = array(':keyword' => str_replace('keyword', $jqGrid['searchString'], $keywordFormula[$jqGrid['searchOper']])); // search by special field types if ($jqGrid['searchField'] === 'createTime' && ($keyword = strtotime($jqGrid['searchString'])) !== false) { $criteria->params = array(':keyword' => str_replace('keyword', $keyword, $keywordFormula[$jqGrid['searchOper']])); if (date('H:i:s', $keyword) === '00:00:00') { // visitor is looking for a precision by day, not by second $criteria->condition = '(TO_DAYS(FROM_UNIXTIME(' . $field[$jqGrid['searchField']] . ',"%Y-%m-%d")) ' . $operation[$jqGrid['searchOper']] . ' TO_DAYS(FROM_UNIXTIME(:keyword,"%Y-%m-%d")))'; } } } } if ($company !== 'all') { $criteria->addCondition("`Task_Company`.`id`=:companyId"); $criteria->params[':companyId'] = $company; } if ($consultant !== 'all') { if ($consultant === 'me') { $criteria->addCondition("`Time_Consultant`.`id`=:consultantId"); $criteria->params[':consultantId'] = Yii::app()->user->id; } else { $criteria->addCondition("`Time_Consultant`.`id`=:consultantId"); $criteria->params[':consultantId'] = $consultant; } } if ($manager !== 'all') { $criteria->addCondition("`Time_Manager`.`id`=:managerId"); $criteria->params[':managerId'] = $manager; } if ($project !== 'all') { $criteria->addCondition("`Task_Project`.`id`=:projectId"); $criteria->params[':projectId'] = $project; } if ($task !== 'all') { $criteria->addCondition("`Time_Task`.`id`=:taskId"); $criteria->params[':taskId'] = $task; } if (Yii::app()->user->checkAccess(User::CLIENT)) { $criteria->addCondition("`Company_User2Company`.`userId`=:clientId AND `Company_User2Company`.`position`=:clientPosition"); $criteria->params[':clientId'] = Yii::app()->user->id; $criteria->params[':clientPosition'] = Company::OWNER; } // pagination $with = array(); if (strpos($criteria->condition, 'Task_Company') !== false) { $with[] = 'task.company'; } if (strpos($criteria->condition, 'Time_Consultant') !== false) { $with[] = 'consultant'; } if (strpos($criteria->condition, 'Time_Manager') !== false) { $with[] = 'manager'; } if (strpos($criteria->condition, 'Task_Project') !== false) { $with[] = 'task.project'; } if (strpos($criteria->condition, 'Time_Task') !== false) { $with[] = 'task'; } if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with[] = 'task.company.allUser2Company'; } if (count($with) >= 1) { $pages = new CPagination(Time::model()->with($with)->count($criteria)); } else { $pages = new CPagination(Time::model()->count($criteria)); } $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE; $pages->applyLimit($criteria); // sort $sort = new CSort('Time'); $sort->attributes = array('billedMinute' => array('asc' => "`t`.`billedMinute`", 'desc' => "`t`.`billedMinute` desc", 'label' => Time::model()->getAttributeLabel('Bld')), 'spentMinute' => array('asc' => "`t`.`spentMinute`", 'desc' => "`t`.`spentMinute` desc", 'label' => Time::model()->getAttributeLabel('Spt')), 'timeDate' => array('asc' => "`t`.`timeDate`", 'desc' => "`t`.`timeDate` desc", 'label' => Time::model()->getAttributeLabel('Date')), 'title' => array('asc' => "`t`.`title`", 'desc' => "`t`.`title` desc", 'label' => Time::model()->getAttributeLabel('title')), 'consultant' => array('asc' => "`Time_Consultant`.`screenName`", 'desc' => "`Time_Consultant`.`screenName` desc", 'label' => Time::model()->getAttributeLabel('consultantId')), 'manager' => array('asc' => "`Time_Manager`.`screenName`", 'desc' => "`Time_Manager`.`screenName` desc", 'label' => Time::model()->getAttributeLabel('managerId')), 'task' => array('asc' => "`Time_Task`.`title`", 'desc' => "`Time_Task`.`title` desc", 'label' => Time::model()->getAttributeLabel('taskId')), 'company' => array('asc' => "`Task_Company`.`title`", 'desc' => "`Task_Company`.`title` desc", 'label' => Task::model()->getAttributeLabel('companyId')), 'project' => array('asc' => "`Task_Project`.`title`", 'desc' => "`Task_Project`.`title` desc", 'label' => Task::model()->getAttributeLabel('projectId'))); $sort->defaultOrder = "`t`.`timeDate` DESC, `t`.`createTime` DESC"; $sort->applyOrder($criteria); // find all $with = array('consultant' => array('select' => 'screenName'), 'manager' => array('select' => 'screenName'), 'task' => array('select' => 'title'), 'task.company' => array('select' => 'title'), 'task.project' => array('select' => 'title')); if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with['task.company.allUser2Company'] = array('select' => 'id'); } $together = strpos($criteria->condition, 'Company_User2Company') !== false; if ($together) { $models = Time::model()->with($with)->together()->findAll($criteria); } else { $models = Time::model()->with($with)->findAll($criteria); } // create resulting data array $data = array('page' => $pages->getCurrentPage() + 1, 'total' => $pages->getPageCount(), 'records' => $pages->getItemCount(), 'rows' => array()); foreach ($models as $model) { $data['rows'][] = array('id' => $model->id, 'cell' => array(isset($model->task->company->id) ? CHtml::link(CHtml::encode($model->task->company->title), array('company/show', 'id' => $model->task->company->id)) : '', isset($model->task->project->id) ? CHtml::link(CHtml::encode($model->task->project->title), array('project/show', 'id' => $model->task->project->id)) : '', isset($model->task->id) ? CHtml::link(CHtml::encode($model->task->title), array('task/show', 'id' => $model->task->id)) : '', isset($model->manager->id) ? CHtml::link(CHtml::encode($model->manager->screenName), array('user/show', 'id' => $model->manager->id)) : '', isset($model->consultant->id) ? CHtml::link(CHtml::encode($model->consultant->screenName), array('user/show', 'id' => $model->consultant->id)) : '', CHtml::encode(MDate::format($model->timeDate, 'medium', null)), CHtml::encode($model->getAttributeView('spentMinute')), CHtml::encode($model->getAttributeView('billedMinute')), CHtml::encode($model->title), Yii::app()->user->checkAccess('time/show') ? CHtml::link('<span class="ui-icon ui-icon-zoomin"></span>', array('show', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-first ui-corner-all', 'title' => Yii::t('link', 'Show'))) . CHtml::link('<span class="ui-icon ui-icon-pencil"></span>', array('update', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent ui-corner-all', 'title' => Yii::t('link', 'Edit'))) . CHtml::link('<span class="ui-icon ui-icon-trash"></span>', array('delete', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-last ui-corner-all', 'title' => Yii::t('link', 'Delete the record number {id}', array('{id}' => $model->id)))) : CHtml::link('<span class="ui-icon ui-icon-zoomin"></span>', array('show', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-first w3-last ui-corner-all', 'title' => Yii::t('link', 'Show'))))); } $this->printJson($data); }