Example #1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $fieldId = $input->getArgument('tracker-field');
     $writer = $this->getProfileWriter($input);
     $result = \Tiki_Profile_InstallHandler_TrackerField::export($writer, $fieldId);
     if ($result) {
         $writer->save();
     } else {
         $output->writeln("Tracker field not found: {$fieldId}");
     }
 }
Example #2
0
 function export(Tiki_Profile_Writer $writer, $trackerId)
 {
     $trklib = TikiLib::lib('trk');
     $info = $trklib->get_tracker($trackerId);
     if (!$info) {
         return false;
     }
     if ($options = $trklib->get_tracker_options($trackerId)) {
         $info = array_merge($info, $options);
     }
     $data = array('name' => $info['name'], 'description' => $info['description']);
     $optionMap = array_flip(self::getOptionMap());
     $defaults = self::getDefaults();
     $conversions = self::getOptionConverters();
     $allow = array();
     $show = array();
     foreach ($info as $key => $value) {
         if (empty($optionMap[$key])) {
             continue;
         }
         $optionKey = $optionMap[$key];
         $default = '';
         if (isset($defaults[$optionKey])) {
             $default = $defaults[$optionKey];
         }
         if ($value != $default) {
             if (strstr($optionKey, 'allow_')) {
                 $allow[] = str_replace('allow_', '', $optionKey);
             } elseif (strstr($optionKey, 'show_')) {
                 $show[] = str_replace('show_', '', $optionKey);
             } else {
                 if (isset($conversions[$optionKey]) && method_exists($conversions[$optionKey], 'reverse')) {
                     $data[$optionKey] = $conversions[$optionKey]->reverse($value);
                 } else {
                     $data[$optionKey] = $value;
                 }
             }
         }
     }
     if (!empty($allow)) {
         $data['allow'] = $allow;
     }
     if (!empty($show)) {
         $data['show'] = $show;
     }
     $fieldReferences = array();
     foreach (array('sort_default_field', 'popup_fields') as $key) {
         if (isset($data[$key])) {
             $fieldReferences[$key] = $data[$key];
             unset($data[$key]);
         }
     }
     $reference = $writer->addObject('tracker', $trackerId, $data);
     $fields = $trklib->list_tracker_fields($trackerId);
     foreach ($fields['data'] as $field) {
         $writer->pushReference("{$reference}_{$field['permName']}");
         Tiki_Profile_InstallHandler_TrackerField::export($writer, $field);
     }
     foreach (array_filter($fieldReferences) as $key => $value) {
         $value = preg_replace_callback('/(\\d+)/', function ($match) use($writer) {
             return $writer->getReference('tracker_field', $match[1]);
         }, $value);
         $writer->pushReference("{$reference}_{$key}");
         $writer->addObject('tracker_option', "{$key}-{$trackerId}", array('tracker' => $writer->getReference('tracker', $trackerId), 'name' => $key, 'value' => $value));
     }
     return true;
 }
Example #3
0
 function _export($trackerId, $profileObject)
 {
     global $trklib;
     require_once 'lib/trackers/trackerlib.php';
     $info = $trklib->get_tracker($trackerId);
     if (empty($info)) {
         return '';
     }
     if ($options = $trklib->get_tracker_options($trackerId)) {
         $info = array_merge($info, $options);
     }
     $optionMap = array_flip($this->getOptionMap());
     $defaults = $this->getDefaults();
     $conversions = $this->getOptionConverters();
     $ref = 'tracker_' . $trackerId;
     $res = array();
     $allow = array();
     $show = array();
     $res[] = 'objects:';
     $res[] = ' -';
     $res[] = '  type: tracker';
     $res[] = '  ref: ' . $ref;
     $res[] = '  data:';
     $tab = '   ';
     $res[] = $tab . 'name: ' . $info['name'];
     if (!empty($info['description'])) {
         $res[] = $tab . 'description: ' . $info['description'];
     }
     foreach ($info as $key => $value) {
         if (!empty($optionMap[$key]) && (!isset($defaults[$optionMap[$key]]) || $value != $defaults[$optionMap[$key]])) {
             if (strstr($optionMap[$key], 'allow_')) {
                 $allow[] = str_replace('allow_', '', $optionMap[$key]);
             } elseif (strstr($optionMap[$key], 'show_')) {
                 $show[] = str_replace('show_', '', $optionMap[$key]);
             } else {
                 if (isset($conversions[$optionMap[$key]]) && method_exists($conversions[$optionMap[$key]], 'reverse')) {
                     $res[] = $tab . $optionMap[$key] . ': ' . $conversions[$optionMap[$key]]->reverse($value);
                 } else {
                     $res[] = $tab . $optionMap[$key] . ': ' . $value;
                 }
             }
         }
     }
     if (!empty($allow)) {
         $res[] .= $tab . 'allow: [' . implode(', ', $allow) . ']';
     }
     if (!empty($show)) {
         $res[] .= $tab . 'show: [' . implode(', ', $show) . ']';
     }
     $fields = $trklib->list_tracker_fields($trackerId);
     $prof = new Tiki_Profile_InstallHandler_TrackerField($profileObject, array());
     foreach ($fields['data'] as $field) {
         $res = array_merge($res, $prof->_export($field, $profileObject));
     }
     return implode("\n", $res);
 }