/** * Do the real exporting * * @return string The JSON dump of the items and categories * * @throws AppExporterException * * @since 2.0 */ public function export() { if (!($this->_application = $this->app->zoo->getApplication())) { throw new AppExporterException('No application selected.'); } // export frontpage $frontpage = $this->app->object->create('Category'); $frontpage->name = 'Root'; $frontpage->alias = '_root'; $frontpage->description = $this->_application->description; // export categories $this->_categories = $this->_application->getCategories(); $this->_categories[0] = $frontpage; foreach ($this->_categories as $category) { $this->_addZooCategory($category); } // export items $this->_comment_table = $this->app->table->comment; $item_table = $this->app->table->item; foreach ($this->_application->getTypes() as $type) { foreach ($item_table->getByType($type->id, $this->_application->id) as $key => $item) { $this->_addZooItem($item, $type); $item_table->unsetObject($key); } } return parent::export(); }
/** * Do the real export of items and categories * * @return string The JSON dump of the items and categories * * @since 2.0 */ public function export() { $db = $this->app->database; // get k2 categories $query = "SELECT a.*, b.name AS extra_field_group_name " . " FROM #__k2_categories AS a" . " LEFT JOIN #__k2_extra_fields_groups AS b ON b.id = a.extraFieldsGroup"; $categories = $db->queryObjectList($query, 'id'); // sanatize category aliases $aliases = array(); foreach ($categories as $category) { $i = 2; $alias = $this->app->string->sluggify($category->alias); while (in_array($alias, $aliases)) { $alias = $category->alias . '-' . $i++; } $category->alias = $alias; // remember used aliases to ensure unique aliases $aliases[] = $category->alias; } // export categories foreach ($categories as $category) { // assign attributes $data = array(); foreach ($this->category_attributes as $attribute) { if (isset($category->{$attribute})) { $data[$attribute] = $category->{$attribute}; } } // sanatize parent if ($category->parent && isset($categories[$category->parent])) { $data['parent'] = $categories[$category->parent]->alias; } // add category if ($category->image) { $data['content']['image'] = '/media/k2/categories/' . $category->image; } $this->_addCategory($category->name, $category->alias, $data); } // get k2 items $query = "SELECT * FROM #__k2_items"; $items = $db->queryObjectList($query, 'id'); // get k2 extra fields $query = "SELECT * FROM #__k2_extra_fields"; $extra_fields = $db->queryObjectList($query, 'id'); // get k2 tags $query = "SELECT a.itemID, b.name" . " FROM #__k2_tags_xref as a" . " JOIN #__k2_tags AS b ON a.tagID = b.id"; $tag_result = $db->queryObjectList($query); $tags = array(); foreach ($tag_result as $tag) { $tags[$tag->itemID][] = $tag->name; } // sanatize item aliases $aliases = array(); foreach ($items as $item) { $i = 2; $alias = $this->app->string->sluggify($item->alias); while (in_array($alias, $aliases)) { $alias = $item->alias . '-' . $i++; } $item->alias = $alias; // remember used aliases to ensure unique aliases $aliases[] = $item->alias; } // export items foreach ($items as $item) { if (!$item->trash) { if (!($type = $categories[$item->catid]->extra_field_group_name)) { $type = JText::_('K2-Unassigned'); } $this->_addK2Item($item, $extra_fields, $categories, $tags, $type); } } return parent::export(); }
/** * Perform the actual export of categories and articles * * @return string The exported data in JSON format * * @since 2.0 */ public function export() { $categories = $this->app->database->queryObjectList('SELECT * FROM #__categories WHERE published != -2 ORDER BY lft ASC', 'id'); $category_aliases = array(); $ordered_categories = array(); foreach ($categories as $category) { $ordered_categories[$category->parent_id][] = $category->id; } foreach ($categories as $category) { if ($category->alias != 'root' && $category->extension != 'com_content') { continue; } if ($category->alias == 'root') { $category->title = 'Root'; $category->alias = '_root'; } $i = 2; $new_alias = $category->alias; while (in_array($new_alias, $category_aliases)) { $new_alias = $category->alias . '-' . $i++; } $category_aliases[] = $category->alias = $new_alias; // store category parent if (isset($categories[$category->parent_id])) { $category->parent = $categories[$category->parent_id]->alias; } if (isset($ordered_categories[$category->parent_id]) && is_array($ordered_categories[$category->parent_id])) { $category->ordering = array_search($category->id, $ordered_categories[$category->parent_id]); } $params = $this->app->parameter->create($category->params); $data = array(); foreach ($this->category_attributes as $attribute) { if (isset($category->{$attribute})) { $data[$attribute] = $category->{$attribute}; } } if ($params->get('image')) { $data['content']['image'] = $params->get('image'); } $this->_addCategory($category->title, $category->alias, $data); $query = "SELECT * FROM #__content WHERE catid =" . $category->id; $articles = $this->app->database->queryObjectList($query); foreach ($articles as $article) { if ($article->state != -2) { $this->_addJoomlaItem($article, $category->alias, JText::_('Joomla article')); } } } $query = "SELECT * FROM #__content WHERE catid = 0"; $articles = $this->app->database->queryObjectList($query); foreach ($articles as $article) { if ($article->state != -2) { $this->_addJoomlaItem($article, 0, JText::_('Joomla article')); } } return parent::export(); }