Exemple #1
0
    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;
    }
Exemple #2
0
 /**
  * @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);
 }
Exemple #3
0
 /**
  * @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);
 }
Exemple #4
0
 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;
 }