/** * Augment query filters * * Here we're basically modifying what we get from the database, * either by changing the display column (ex: 'user_id' => 'User'), * or by changing the display value (ex: '1' to 'yes', or '1000' to Sam Wilson) * * @param $q - query arguments * @return void */ public static function filtersMap($q = array()) { // Initialize variables $filters = []; $return = []; $dcolumn = ''; $doperator = ''; $dvalue = ''; // First, make sure we have something to iterate over if (!empty($q[0])) { // Go through query filters foreach ($q as $val) { // Make sure we're not deleting this filter if (!array_key_exists('delete', $val)) { // Add an if statement here if you want to augment a fields 'human readable' value // Augment user_id information if ($val['column'] == 'user_id') { $val['human_column'] = 'User'; $val['o'] = self::translateOperator($val['operator']); $val['human_operator'] = self::mapOperator($val['o']); $val['human_value'] = User::getInstance($val['value'])->name; $filters[] = $val; } elseif ($val['column'] == 'assignee_id' || $val['column'] == 'liaison_id') { $val['human_column'] = ucwords(str_replace('_id', '', $val['column'])); $val['o'] = self::translateOperator($val['operator']); $val['human_operator'] = self::mapOperator($val['o']); $val['human_value'] = User::getInstance($val['value'])->name; if (is_null($val['human_value'])) { $val['human_value'] = 'Unidentified'; } $filters[] = $val; } elseif ($val['column'] == 'task_id') { $val['human_column'] = 'Task'; $val['o'] = self::translateOperator($val['operator']); $val['human_operator'] = self::mapOperator($val['o']); $val['human_value'] = Task::oneOrFail($val['value'])->name; $filters[] = $val; } elseif ($val['column'] == 'active') { $val['human_column'] = ucwords($val['column']); $val['o'] = self::translateOperator($val['operator']); $val['human_operator'] = self::mapOperator($val['o']); $val['human_value'] = $val['value'] == 1 ? 'yes' : 'no'; $filters[] = $val; } elseif ($val['column'] == 'hub_id') { $val['human_column'] = 'Hub'; $val['o'] = self::translateOperator($val['operator']); $val['human_operator'] = self::mapOperator($val['o']); $val['human_value'] = Hub::oneOrFail($val['value'])->name; $filters[] = $val; } else { $val['human_column'] = ucwords(str_replace("_", " ", $val['column'])); $val['o'] = self::translateOperator($val['operator']); $val['human_operator'] = self::mapOperator($val['o']); $val['human_value'] = $val['value']; $filters[] = $val; } } else { // Values to delete $dcolumn = $val['column']; $doperator = $val['operator']; $dvalue = $val['value']; } } } // Distil down the results to only unique filters $filters = array_map("unserialize", array_unique(array_map("serialize", $filters))); // Now go through them again and only keep ones not marked for deletion (there's probably a much better way to do this) foreach ($filters as $filter) { if (!($filter['column'] == $dcolumn && $filter['operator'] == $doperator && $filter['value'] == $dvalue)) { $return[] = $filter; } } return $return; }
/** * Toggle a task's active status * * @return void */ public function toggleActiveTask() { $task = Task::oneOrFail(Request::getInt('id')); $task->set('active', $task->active == 0 ? 1 : 0); if (!$task->save()) { App::abort(500, implode('<br />', $task->getErrors())); return; } // Set the redirect App::redirect(Route::url($this->base . $this->start($task)), Lang::txt('COM_TIME_TASKS_ACTIVE_STATUS_CHANGED'), 'passed'); }