public function action_load() { $id = $this->request->param('id'); $items = Enums::get_values($id); header('Content-type: application/json'); die(json_encode(array('multi' => Enums::is_multi($id) ? true : false, 'items' => array_values($items)))); }
public function action_index() { if (!Group::current('allow_assign')) { throw new HTTP_Exception_403('Forbidden'); } header('Content-type: application/json'); $action = $this->request->param('id'); $result = array(); $columns = DB::select('id')->from('job_columns')->where('editable', '=', 1)->execute()->as_array('id', 'id'); switch ($action) { case 'get': $data = array(); $result['columns'] = array(); foreach ($columns as $column) { $value = array('id' => intval($column), 'name' => Columns::get_name($column)); $type = Columns::get_type($column); if (substr($type, 0, 4) == 'enum') { $id = substr($type, 5); $type = Enums::is_multi($id) ? 'multi' : 'list'; $value['values'] = array_values(Enums::get_values($id)); } $value['type'] = $type ?: 'string'; $result['columns'][] = $value; $data[] = 'data.' . $column; } $ids = explode(',', strval(Arr::get($_GET, 'id', ''))); $values = array(); if ($ids) { $query = array('_id' => array('$in' => $ids)); if (!Group::current('show_all_jobs')) { $query['companies'] = intval(User::current('company_id')); } $jobs = Database_Mongo::collection('jobs')->find($query, $data); foreach ($jobs as $job) { foreach ($job['data'] as $key => $value) { $job['data'][$key] = Columns::output($value, Columns::get_type($key), true); } $job['id'] = $job['_id']; unset($job['_id']); $values[] = $job; } } $result['jobs'] = $values; break; case 'set': if (User::current('login') !== Arr::get($_POST, 'username')) { die('Wrong username! Please, check it and submit data again.'); } $data = Arr::get($_POST, 'jobs'); $values = array(); foreach ($data as $job) { $id = strval(Arr::get($job, 'id', '')); foreach (Arr::get($job, 'data') as $key => $value) { if (isset($columns[$key])) { $values[$id][$key] = strval($value); } } } $query = array('_id' => array('$in' => array_keys($values))); if (!Group::current('show_all_jobs')) { $query['companies'] = intval(User::current('company_id')); } $data = array(); foreach ($columns as $column) { $data['data.' . $column] = 1; } $count = 0; $jobs = Database_Mongo::collection('jobs')->find($query, $data); foreach ($jobs as $job) { if (isset($values[$job['_id']])) { $id = $job['_id']; $new = array(); $archive = array(); foreach ($values[$id] as $key => $value) { $value = $value ? Columns::parse($value, Columns::get_type($key)) : ''; $old = Arr::path($job, 'data.' . $key); if (($value || $old) && $value != $old) { if ($value) { $new['$set']['data.' . $key] = $value; } else { $new['$unset']['data.' . $key] = 1; } $archive['data'][$key] = array('old_value' => $old, 'new_value' => $value); } } if ($new) { $new['$set']['last_update'] = time(); Database_Mongo::collection('jobs')->update(array('_id' => $id), $new); $archive['fields'] = array_keys($archive['data']); $archive['job_key'] = $id; $archive['user_id'] = User::current('id'); $archive['update_time'] = time(); $archive['update_type'] = 2; $archive['filename'] = 'MANUAL'; Database_Mongo::collection('archive')->insert($archive); $count++; } } } $result = array('success' => true, 'count' => $count); break; } die(json_encode($result)); }
public static function input($name, $id, $type, $value, $title = '', $required = false) { if (strpos($type, 'enum') !== false) { $enum = substr($type, 5); if (Enums::is_multi($enum)) { $class = array('class' => 'form-control multiselect', 'multiple' => 'multiple'); if ($required) { $class['data-validation'] = 'required'; } return Form::select($name . ($id ? '[' . $id . '][]' : '[]'), Enums::get_values($enum), explode(', ', $value), $class); // $values = explode(', ', $value); // $result = ''; // foreach (Enums::get_values($enum) as $value) // $result .= Form::label(NULL, Form::checkbox($name . ($id ? '[' . $id . ']' : '') . '[]', $value, in_array($value, $values, true)) . $value, array('class' => 'control-label')) . '<br/>'; // return $result; } else { return Form::select($name . ($id ? '[' . $id . ']' : ''), array('' => '') + Enums::get_values($enum, $value), $value, array('class' => 'form-control')); } } else { switch ($type) { case 'bool': return '<input type="hidden" value="0" name="' . $name . ($id ? '[' . $id . ']' : '') . '" /><label class="control-label"><input type="checkbox" name="' . $name . ($id ? '[' . $id . ']' : '') . '" id="' . $name . '-' . $id . '" ' . ($value ? 'checked' : '') . '/>' . $title . '</label>'; case 'text': return '<textarea rows="10" id="' . $name . ($id ? '-' . $id : '') . '" class="form-control" name="' . $name . ($id ? '[' . $id . ']' : '') . '">' . HTML::chars($value) . '</textarea>'; break; case 'date': return '<input type="text" id="' . $name . ($id ? '-' . $id : '') . '" class="form-control datepicker" name="' . $name . ($id ? '[' . $id . ']' : '') . '" value="' . ($value ? date('d-m-Y', $value) : '') . '" />'; break; case 'datetime': return '<input type="text" id="' . $name . ($id ? '-' . $id : '') . '" class="form-control datetimepicker" name="' . $name . ($id ? '[' . $id . ']' : '') . '" value="' . ($value ? date('d-m-Y H:i', $value) : '') . '" />'; break; case 'float': return '<input class="form-control input-float" id="' . $name . ($id ? '-' . $id : '') . '" name="' . $name . ($id ? '[' . $id . ']' : '') . '" type="text" value="' . HTML::chars($value) . '" />'; break; case 'int': return '<input class="form-control input-int" id="' . $name . ($id ? '-' . $id : '') . '" name="' . $name . ($id ? '[' . $id . ']' : '') . '" type="text" value="' . HTML::chars($value) . '" />'; break; default: return '<input class="form-control" id="' . $name . ($id ? '-' . $id : '') . '" name="' . $name . ($id ? '[' . $id . ']' : '') . '" type="text" value="' . HTML::chars($value) . '" />'; } } }
public function action_columns() { $list = array(array('id' => 0, 'name' => 'Ticket ID')); foreach (Columns::get_all() as $key => $value) { $column = array('id' => $key, 'name' => $value); $type = Columns::get_type($key); if (substr($type, 0, 4) == 'enum') { $id = substr($type, 5); $column['type'] = Enums::is_multi($id) ? 'multi' : 'enum'; $column['values'] = Enums::get_values($id); } else { $column['type'] = $type ?: 'string'; } $list[] = $column; } die(json_encode($list)); }
public function action_index() { $token = Arr::get($_REQUEST, 'token'); if (!API::check($token)) { die(json_encode(array('success' => false, 'error' => 'forbidden'))); } $regs = DB::select('region_id')->from('user_regions')->where('user_id', '=', User::current('id'))->execute()->as_array(NULL, 'region_id'); $query = array('companies' => intval(User::current('company_id'))); if ($regs) { $query['region'] = array('$in' => $regs); } $result = Database_Mongo::collection('jobs')->find($query, array('created' => '1', 'last_update' => 1)); $jobs = array(); Form::$static_title[] = 245; $columns = array_flip(array_merge(array_keys(Columns::get_static()), Form::$static_title)); $columns[8] = 1; $columns[12] = 1; $columns[13] = 1; $columns[14] = 1; foreach (Form::$columns as $type => $list) { foreach ($list as $keys => $name) { foreach (explode(',', $keys) as $key) { if (is_numeric($key)) { $columns[$key] = 1; } } } } foreach ($result as $job) { $jobs[$job['_id']] = Arr::get($job, 'last_update') ?: Arr::get($job, 'created'); } $list = array(); foreach ($columns as $column => $value) { $value = array('n' => Columns::get_name($column)); $type = Columns::get_type($column); if ($type) { if (substr($type, 0, 4) == 'enum') { $value['t'] = 'enum'; $value['m'] = Enums::is_multi(substr($type, 5)); $value['v'] = array_values(Enums::get_values(substr($type, 5))); } else { $value['t'] = Columns::get_type($column); } } $list[$column] = $value; } $columns = $list; ksort($columns); $form = array(); foreach (Form::$columns as $id => $list) { foreach ($list as $key => $value) { $form[$id][] = array('k' => $key, 'v' => $value); } } if (isset($_GET['gzip'])) { die(gzcompress(json_encode(array('success' => true, 'columns' => $columns, 'static' => Form::$static_title, 'form' => $form, 'jobs' => $jobs)), 9)); } else { header('Content-type: application/json'); die(json_encode(array('success' => true, 'columns' => $columns, 'static' => Form::$static_title, 'form' => $form, 'jobs' => $jobs))); } }
case 'int': echo 'Number'; break; case 'float': echo 'Floating-point'; break; case 'date': echo 'Date'; break; case 'datetime': echo 'Date and Time'; break; default: if (strpos($column['type'], 'enum') === 0) { $id = substr($column['type'], 5); echo '<span title="' . (Enums::is_multi($id) ? 'MULTIPLE VALUES:' : 'SINGLE VALUE:') . "\n\n" . implode("\n", Enums::get_values($id)) . '">Enum (' . Arr::get($enums, $id, 'Unknown') . ')</span>'; } else echo 'Default (string)'; endswitch; ?> </td> <td class="column-financial"><?=$column['financial'] ? : ''?></td> <td class="column-export" data-val="<?=$column['csv'] ? 'checked' : ''?>"><?=Utils::bool_icon($column['csv'])?></td> <td class="column-report" data-val="<?=$column['show_reports'] ? 'checked' : ''?>"><?=Utils::bool_icon($column['show_reports'])?></td> <td class="column-direct" data-val="<?=$column['direct'] ? 'checked' : ''?>"><?=Utils::bool_icon($column['direct'])?></td> <td class="column-track" data-val="<?=$column['track'] ? 'checked' : ''?>"><?=Utils::bool_icon($column['track'])?></td> <td class="column-persistent" data-val="<?=$column['persistent'] ? 'checked' : ''?>"><?=Utils::bool_icon($column['persistent'])?></td> <td class="column-editable" data-val="<?=$column['editable'] ? 'checked' : ''?>"><?=Utils::bool_icon($column['editable'])?></td> <td class="column-readonly" data-val="<?=$column['read_only'] ? 'checked' : ''?>"><?=Utils::bool_icon($column['read_only'])?></td> </tr> <?php endforeach;?> </table>