public function getItems(ContentInterface $content) { $items = parent::getItems($content); $params = $content->getData(); $order = array(); // detect reversed order if (strpos($params['order'], 'reversed') !== false) { $order[] = str_replace('_reversed', '', $params['order']); $order[] = '_reversed'; } else { $order[] = $params['order']; } // set order $params['order'] = $order; foreach ($this->zoo->module->getItems($this->zoo->data->create($params)) as $item) { $data = array(); $mapping = $content['mapping'][$item->getType()->id]; $data['zooitem'] = $item; $data['title'] = $item->name; foreach ($mapping as $field => $value) { if(!$element = $item->getElement($value)) { continue; } if ($element instanceof \ElementRepeatable) { $element->seek(0); } $event = $this->app->trigger('joomla.zoo.render.'.$element->getElementType(), compact('element')); $data[$field] = isset($event['value']) ? $event['value'] : $element->get('value'); } // validate fields $data['date'] = isset($data['date']) && strtotime($data['date']) ? $data['date'] : null; $data['author'] = isset($data['author']) && is_string($data['author']) ? $data['author'] : null; $data['categories'] = isset($data['categories']) && is_array($data['categories']) ? $data['categories'] : null; if (isset($data['content']) && is_array($data['content'])) { $data['content'] = implode(', ', $data['content']); } $items->add($data); } return $items; }
/** * @param Application $app */ public function main(Application $app) { parent::main($app); $app->on('init', function ($event, $app) { $app['rss'] = function () use($app) { return new RSSApp($app); }; }, -5); $this['controllers']->add($this); }
/** * @param Application $app */ public function main(Application $app) { parent::main($app); $app->on('init', function ($event, $app) { $app['twitter'] = function () use($app) { $credentials = $app['plugins']->get('content/twitter')->config['credentials']; return new TwitterOAuth($app, $credentials); }; }, -5); $this['controllers']->add($this); }
public function getItems(ContentInterface $content) { $items = parent::getItems($content); $params = array('itemCount' => $content['number'], 'category_id' => $content['category'], 'getChildren' => $content['subcategories'], 'catfilter' => !empty($content['category']) && $content['category'][0] != 0, 'itemIntroText' => true, 'itemsOrdering' => $content['ordering'], 'itemImage' => true, 'itemTags' => true, 'itemExtraFields' => true, 'itemAuthor' => true, 'itemCategory' => true); // get cat/fields group relation $cats = $this->app['db']->fetchAllObjects("SELECT cat.id as id, groups.name as 'group' FROM @k2_categories as cat LEFT JOIN @k2_extra_fields_groups AS groups ON cat.extraFieldsGroup = groups.id WHERE cat.trash = 0 ORDER BY cat.parent, cat.ordering"); $cats_group = array(); foreach ($cats as $cat) { $cats_group[$cat->id] = $cat->group; } require_once JPATH_ROOT . '/modules/mod_k2_content/helper.php'; if (K2_JVERSION != '15') { $language = JFactory::getLanguage(); $language->load('mod_k2.j16', JPATH_ADMINISTRATOR, null, true); } $k2_items = modK2ContentHelper::getItems(new JRegistry($params)) ?: array(); foreach ($k2_items as $item) { $data = array(); $group = isset($cats_group[$item->catid]) ? $cats_group[$item->catid] : 'default'; $mapping = isset($content['mapping'][$group]) ? $content['mapping'][$group] : array(); $data['title'] = $item->title; $data['tags'] = array(); foreach ($data['tags'] as $tag) { $data['tags'][] = $tag->name; } foreach ($mapping as $field => $value) { if ((int) $value != 0) { $item->current_xfield = $value; $value = 'xfields'; } $event = $this->app->trigger('joomla.k2.render.' . $value, compact('item')); $data[$field] = isset($event['value']) ? $event['value'] : ''; } // validate fields $data['date'] = isset($data['date']) && strtotime($data['date']) ? $data['date'] : null; $data['author'] = isset($data['author']) && is_string($data['author']) ? $data['author'] : null; $data['categories'] = isset($data['categories']) && is_array($data['categories']) ? $data['categories'] : null; if (isset($data['content']) && is_array($data['content'])) { $data['content'] = implode(', ', $data['content']); } $items->add($data); } return $items; }