Beispiel #1
0
 public static function export(Tiki_Profile_Writer $writer, $id, $withTopic = false, $withType = false)
 {
     $artlib = TikiLib::lib('art');
     $info = $artlib->get_article($id, false);
     if (!$info) {
         return false;
     }
     $bodypage = "article_{$id}_body";
     $writer->writeExternal($bodypage, $writer->getReference('wiki_content', $info['body']));
     $out = array('title' => $info['title'], 'author' => $info['authorName'], 'body' => "wikicontent:{$bodypage}", 'type' => $writer->getReference('article_type', $info['type']), 'publication_date' => $info['publishDate'], 'expiration_date' => $info['expireDate'], 'topline' => $info['topline'], 'subtitle' => $info['subtitle'], 'link_to' => $info['linkto'], 'language' => $info['lang']);
     if ($info['topicId']) {
         if ($withTopic) {
             Tiki_Profile_InstallHandler_ArticleTopic::export($writer, $info['topicId']);
         }
         $out['topic'] = $writer->getReference('article_topic', $info['topicId']);
     }
     if ($info['heading']) {
         $headerpage = "article_{$id}_heading";
         $writer->writeExternal($headerpage, $writer->getReference('wiki_content', $info['heading']));
         $out['heading'] = "wikicontent:{$headerpage}";
     }
     $out = array_filter($out);
     $writer->addObject('article', $id, $out);
     if ($withType) {
         Tiki_Profile_InstallHandler_ArticleType::export($writer, $info['type']);
     }
     return true;
 }
Beispiel #2
0
function prefs_user_tracker_references(Tiki_Profile_Writer $writer, $values)
{
    $values = array_filter(explode(',', $values));
    $tracker = array_shift($values);
    $values = $writer->getReference('tracker_field', $values);
    array_unshift($values, $writer->getReference('tracker', $tracker));
    return implode(',', $values);
}
Beispiel #3
0
 static function export(Tiki_Profile_Writer $writer, $field)
 {
     if (!is_array($field)) {
         $trklib = TikiLib::lib('trk');
         $field = $trklib->get_tracker_field($field);
         if (!$field) {
             return false;
         }
     }
     $factory = new Tracker_Field_Factory();
     $fieldInfo = $factory->getFieldInfo($field['type']);
     $options = Tracker_Options::fromSerialized($field['options'], $fieldInfo);
     $optionsData = array_filter($options->getAllParameters());
     foreach ($optionsData as $key => $value) {
         $paramInfo = $options->getParamDefinition($key);
         if (isset($paramInfo['profile_reference'])) {
             $optionsData[$key] = $writer->getReference($paramInfo['profile_reference'], $value);
         }
     }
     $data = array('name' => $field['name'], 'permname' => $field['permName'], 'tracker' => $writer->getReference('tracker', $field['trackerId']), 'options' => $optionsData);
     $optionMap = array_flip(self::getOptionMap());
     $defaults = self::getDefaultValues();
     $conversions = self::getConverters();
     $flag = array();
     foreach ($field as $key => $value) {
         if (empty($optionMap[$key])) {
             continue;
         }
         $optionKey = $optionMap[$key];
         $default = '';
         if (isset($defaults[$optionKey])) {
             $default = $defaults[$optionKey];
         }
         if ($value != $default) {
             if (in_array($optionKey, array('list', 'link', 'searchable', 'public', 'mandatory', 'multilingual'))) {
                 if (!empty($value)) {
                     $flag[] = $optionKey;
                 }
             } elseif (!empty($conversions[$optionKey])) {
                 $reverseVal = $conversions[$optionKey]->reverse($value);
                 $data[$optionKey] = $reverseVal;
             } else {
                 $data[$optionKey] = $value;
             }
         }
     }
     if (!empty($flag)) {
         $data['flags'] = $flag;
     }
     $writer->addObject('tracker_field', $field['fieldId'], $data);
     return true;
 }
Beispiel #4
0
 public static function export(Tiki_Profile_Writer $writer, $categId, $deep, $includeObjectCallback)
 {
     $categlib = TikiLib::lib('categ');
     if (!($info = $categlib->get_category($categId))) {
         return false;
     }
     $items = array();
     foreach ($categlib->get_category_objects($categId) as $row) {
         if ($includeObjectCallback($row['type'], $row['itemId'])) {
             $items[] = array($row['type'], $writer->getReference($row['type'], $row['itemId']));
         }
     }
     $data = array('name' => $info['name']);
     if (!empty($info['parentId'])) {
         $data['parent'] = $writer->getReference('category', $info['parentId']);
     }
     if (!empty($items)) {
         $data['items'] = $items;
     }
     $writer->addObject('category', $categId, $data);
     if ($deep) {
         $descendants = $categlib->get_category_descendants($categId);
         array_shift($descendants);
         foreach ($descendants as $children) {
             self::export($writer, $children, $deep, $includeObjectCallback);
         }
     }
     return true;
 }
Beispiel #5
0
 public static function export(Tiki_Profile_Writer $writer, $id)
 {
     $rsslib = TikiLib::lib('rss');
     $info = $rsslib->get_rss_module($id);
     if (!$info) {
         return false;
     }
     $out = array('name' => $info['name'], 'url' => $info['url'], 'description' => $info['description'], 'refresh' => $info['refresh'], 'show_title' => $info['showTitle'], 'show_publication_date' => $info['showPubDate']);
     $out = array_filter($out);
     $generator = $rsslib->get_article_generator($id);
     if ($generator['active']) {
         $generator['atype'] = $writer->getReference('article_type', $generator['atype']);
         if ($generator['topic']) {
             $generator['topic'] = $writer->getReference('article_topic', $generator['topic']);
         }
         $out['article_generator'] = $generator;
     }
     $writer->addObject('rss', $id, $out);
     return true;
 }
Beispiel #6
0
 public static function exportGroup(Tiki_Profile_Writer $writer, $group, $categories = false, $objects = false)
 {
     $userlib = \TikiLib::lib('user');
     $info = $userlib->get_group_info($group);
     if (empty($info['id'])) {
         return false;
     }
     $data = array('description' => $info['groupDesc'], 'home' => $info['groupHome'], 'user_tracker' => $writer->getReference('tracker', $info['userTrackerId']), 'group_tracker' => $writer->getReference('tracker', $info['groupTrackerId']), 'user_tracker_field' => $writer->getReference('tracker_field', $info['userTrackerFieldId']), 'group_tracker_field' => $writer->getReference('tracker_field', $info['groupTrackerFieldId']), 'registration_fields' => $writer->getReference('tracker_field', array_filter(explode(':', $info['registrationUsersFieldIds']))), 'user_signup' => $info['userChoice'], 'default_category' => $writer->getReference('category', $info['groupDefCat']), 'theme' => $info['groupTheme'], 'allow' => [], 'objects' => []);
     foreach ($info['perms'] as $perm) {
         // Skip tiki_p_
         $data['allow'][] = substr($perm, 7);
     }
     if ($categories) {
         $data['objects'] = self::getPermissionList($writer, 'category', $group);
     }
     if ($objects) {
         $data['objects'] = array_merge($data['objects'], self::getPermissionList($writer, 'wiki page', $group), self::getPermissionList($writer, 'tracker', $group), self::getPermissionList($writer, 'forum', $group));
     }
     // Clean and store
     $data = array_filter($data);
     $writer->addPermissions($group, $data);
     return true;
 }
Beispiel #7
0
 public static function profileReference(Tiki_Profile_Writer $writer, $value)
 {
     return preg_replace_callback('/#([0-9]+)/', function ($args) use($writer) {
         return $writer->getReference('tracker_field', $args[1]);
     }, $value);
 }
Beispiel #8
0
 public function uniform_string($type, Tiki_Profile_Writer $writer, $value)
 {
     return preg_replace_callback('/(\\d+)/', function ($args) use($writer, $type) {
         return $writer->getReference($type, $args[1]);
     }, $value);
 }
Beispiel #9
0
 public static function export(Tiki_Profile_Writer $writer, $page)
 {
     $tikilib = \TikiLib::lib('tiki');
     if (!($info = $tikilib->get_page_info($page))) {
         return false;
     }
     $writer->writeExternal($page, $writer->getReference('wiki_content', $info['data']));
     $writer->addObject('wiki_page', $page, array('name' => $page, 'content' => "wikicontent:{$page}", 'description' => $info['description'], 'lang' => $info['lang']));
     return true;
 }
Beispiel #10
0
 public function exportPreference(Tiki_Profile_Writer $writer, $preferenceName)
 {
     global $prefs;
     if ($info = $this->getPreference($preferenceName)) {
         if (isset($info['profile_reference'])) {
             $writer->setPreference($preferenceName, $writer->getReference($info['profile_reference'], $info['value']));
             return true;
         } else {
             $writer->setPreference($preferenceName, $info['value']);
             return true;
         }
     }
     return false;
 }
Beispiel #11
0
 public static function fitnesse_content(Tiki_Profile_Writer $writer, $content)
 {
     $searchlib = TikiLib::lib('unifiedsearch');
     $argumentParser = new WikiParser_PluginArgumentParser();
     $matches = WikiParser_PluginMatcher::match($content);
     $justReplaced = false;
     foreach ($matches as $match) {
         if ($justReplaced) {
             $justReplaced = false;
             continue;
         }
         $name = $match->getName();
         $args = $argumentParser->parse($match->getArguments());
         if (isset($args['trackerId'])) {
             $args['trackerId'] = $writer->getReference('tracker', $args['trackerId']);
             $match->replaceWithPlugin($name, $args, $match->getBody());
             $justReplaced = true;
         }
     }
     return $matches->getText();
 }
Beispiel #12
0
 public static function export(Tiki_Profile_Writer $writer, $galId, $withParents = false, $deep = false)
 {
     $filegallib = TikiLib::lib('filegal');
     $info = $filegallib->get_file_gallery_info($galId);
     $default = $filegallib->default_file_gallery();
     if (!$info) {
         return false;
     }
     $out = array('name' => $info['name'], 'visible' => $info['visible']);
     if ($info['parentId'] > 3) {
         // up to 3, standard/default galleries
         $out['parent'] = $writer->getReference('file_gallery', $info['parentId']);
     } else {
         $out['parent'] = $info['parentId'];
     }
     // Include any simple field whose value is different from the default
     $simple = array('description', 'public', 'type', 'lockable', 'archives', 'quota', 'image_max_size_x', 'image_max_size_y', 'backlinkPerms', 'wiki_syntax', 'sort_mode', 'maxRows', 'max_desc', 'subgal_conf', 'default_view', 'template');
     foreach ($simple as $field) {
         if ($info[$field] != $default[$field]) {
             $out[$field] = $info[$field];
         }
     }
     $popup = array();
     $column = array();
     foreach ($info as $field => $value) {
         if (isset($default[$field]) && $value == $default[$field]) {
             continue;
             // Skip default values
         }
         if (substr($field, 0, 5) == 'show_') {
             $short = substr($field, 5);
             if ($value == 'a' || $value == 'o') {
                 $popup[] = $short;
             }
             if ($value == 'a' || $value == 'y') {
                 $column[] = $short;
             }
         }
     }
     if (!empty($popup)) {
         $out['popup'] = $popup;
     }
     if (!empty($column)) {
         $out['column'] = $column;
     }
     $writer->addObject('file_gallery', $galId, $out);
     if ($deep) {
         $table = $filegallib->table('tiki_file_galleries');
         $children = $table->fetchColumn('galleryId', array('parentId' => $galId));
         foreach ($children as $id) {
             self::export($writer, $id, false, $deep);
         }
     }
     if ($withParents && $info['parentId'] > 3) {
         self::export($writer, $info['parentId'], $withParents, false);
     }
     return true;
 }