コード例 #1
0
ファイル: Controller.php プロジェクト: rjsmelo/tiki
 function action_list_fields($input)
 {
     global $prefs;
     $trackerId = $input->trackerId->int();
     $perms = Perms::get('tracker', $trackerId);
     if (!$perms->view_trackers) {
         throw new Services_Exception_Denied(tr("You don't have permission to view the tracker"));
     }
     $definition = Tracker_Definition::get($trackerId);
     if (!$definition) {
         throw new Services_Exception_NotFound();
     }
     $fields = $definition->getFields();
     $types = $this->utilities->getFieldTypes();
     $typesDisabled = array();
     if ($perms->admin_trackers) {
         $typesDisabled = $this->utilities->getFieldTypesDisabled();
     }
     $missing = array();
     $duplicates = array();
     foreach ($fields as $field) {
         if (!array_key_exists($field['type'], $types) && !in_array($field['type'], $missing)) {
             $missing[] = $field['type'];
         }
         if ($prefs['unified_engine'] === 'elastic') {
             $tracker_fields = TikiLib::lib('tiki')->table('tiki_tracker_fields');
             $dupeFields = $tracker_fields->fetchAll(array('fieldId', 'trackerId', 'name', 'permName', 'type'), array('fieldId' => $tracker_fields->not($field['fieldId']), 'type' => $tracker_fields->not($field['type']), 'permName' => $field['permName']));
             if ($dupeFields) {
                 foreach ($dupeFields as &$df) {
                     $df['message'] = tr('Warning: There is a conflict in permanent names, which can cause indexing errors.') . '<br><a href="tiki-admin_tracker_fields.php?trackerId=' . $df['trackerId'] . '">' . tr('Field #%0 "%1" of type "%2" also found in tracker #%3 with perm name %4', $df['fieldId'], $df['name'], $types[$df['type']]['name'], $df['trackerId'], $df['permName']) . '</a>';
                 }
                 $duplicates[$field['fieldId']] = $dupeFields;
             }
         }
     }
     if (!empty($missing)) {
         TikiLib::lib('errorreport')->report(tr('Warning: Required field types not enabled: %0', implode(', ', $missing)));
     }
     return array('fields' => $fields, 'types' => $types, 'typesDisabled' => $typesDisabled, 'duplicates' => $duplicates);
 }