function action_add_field($input) { $modal = $input->modal->int(); $trackerId = $input->trackerId->int(); $perms = Perms::get('tracker', $trackerId); if (!$perms->admin_trackers) { throw new Services_Exception_Denied(tr('Reserved for tracker administrators')); } $trklib = TikiLib::lib('trk'); $definition = Tracker_Definition::get($trackerId); if (!$definition) { throw new Services_Exception_NotFound(); } $name = $input->name->text(); $permName = $input->permName->word(); $type = $input->type->text(); $description = $input->description->text(); $wikiparse = $input->description_parse->int(); $adminOnly = $input->adminOnly->int(); $fieldId = 0; $types = $this->utilities->getFieldTypes(); if (empty($type)) { $type = 't'; } if (!isset($types[$type])) { throw new Services_Exception(tr('Type does not exist'), 400); } if ($input->type->word()) { if (empty($name)) { throw new Services_Exception_MissingValue('name'); } if ($definition->getFieldFromName($name)) { throw new Services_Exception_DuplicateValue('name', $name); } if ($definition->getFieldFromPermName($permName)) { throw new Services_Exception_DuplicateValue('permName', $permName); } $fieldId = $this->utilities->createField(array('trackerId' => $trackerId, 'name' => $name, 'permName' => $permName, 'type' => $type, 'description' => $description, 'descriptionIsParsed' => $wikiparse, 'isHidden' => $adminOnly ? 'y' : 'n')); if ($input->submit_and_edit->none() || $input->next->word() === 'edit') { return array('FORWARD' => array('action' => 'edit_field', 'fieldId' => $fieldId, 'trackerId' => $trackerId, 'modal' => $modal)); } } return array('title' => tr('Add Field'), 'trackerId' => $trackerId, 'fieldId' => $fieldId, 'name' => $name, 'permName' => $permName, 'type' => $type, 'types' => $types, 'description' => $description, 'descriptionIsParsed' => $wikiparse, 'modal' => $modal); }