Esempio n. 1
0
 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))));
 }
Esempio n. 2
0
 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));
 }
Esempio n. 3
0
 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) . '" />';
         }
     }
 }
Esempio n. 4
0
 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));
 }
Esempio n. 5
0
 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)));
     }
 }
Esempio n. 6
0
                 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>