protected function getProfileWriter(InputInterface $input) { $ini = parse_ini_file('profiles/info.ini'); $activeProfile = $ini['profile.name']; $writer = new \Tiki_Profile_Writer("profiles", $activeProfile); if ($this->initialized && ($ref = $input->getOption('reference'))) { $writer->pushReference($ref); } return $writer; }
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; }