/** * Retourne les données sql sur base des paramètres passés en paramète * @param array $custom * @param array $current * @return array|null */ public function getData($custom, $current) { if (!is_array($custom)) { return null; } if (!array_key_exists('news', $current)) { return null; } $ModelPager = new magixglobal_model_pager(); // set default values for query $data['conf'] = array('id' => $current['news']['tag']['id'], 'type' => null, 'limit' => 10, 'offset' => $ModelPager->setPaginationOffset(10, $current['news']['pagination']['id']), 'lang' => $current['lang']['iso'], 'level' => 'all'); $current = $current['news']; // set data selection conf if (isset($custom['select'])) { if ($custom['select'] == 'current') { if ($current['tag']['id'] != null) { $data['conf']['id'] = $current['tag']['id']; $data['conf']['type'] = 'collection'; } } elseif (is_array($custom['select'])) { if (array_key_exists($data['conf']['lang'], $custom['select'])) { $data['conf']['id'] = $custom['select'][$data['conf']['lang']]; $data['conf']['type'] = 'collection'; } } } elseif (isset($custom['exclude'])) { if (is_array($custom['exclude'])) { if (array_key_exists($current['lang']['iso'], $custom['exclude'])) { $data['conf']['id'] = $custom['exclude'][$data['conf']['lang']]; $data['conf']['type'] = 'exclude'; } } } // set number of line to return (with pagination) if (isset($custom['limit'])) { $data['conf']['limit'] = $custom['limit']; $data['conf']['offset'] = $ModelPager->setPaginationOffset($data['conf']['limit'], $current['pagination']['id']); } // set kind of data if (isset($custom['level'])) { switch ($custom['level']) { case 'last-news': $data['conf']['level'] = 'last-news'; break; case 'tag': $data['conf']['level'] = 'tag'; break; } } // *** Run - load data if ($data['conf']['level'] == 'last-news') { if (isset($data['conf']['type'])) { $data['src'] = parent::s_news_in_tag($data['conf']['lang'], $data['conf']['id'], $data['conf']['type'], $data['conf']['limit']); } else { $data['src'] = parent::s_news($data['conf']['lang'], $data['conf']['limit'], 0, null); } } elseif ($data['conf']['level'] == 'tag') { $data['src'] = parent::s_tag_all($data['conf']['lang']); } elseif (isset($data['conf']['id'])) { $data['src'] = parent::s_news_in_tag($data['conf']['lang'], $data['conf']['id'], $data['conf']['type'], $data['conf']['limit']); } else { $data['src'] = parent::s_news($data['conf']['lang'], $data['conf']['limit'], $data['conf']['offset']); $data['src']['total'] = array_shift(parent::s_news_lang_total($data['conf']['lang'])); $data['src']['limit'] = $data['conf']['limit']; } return $data['src']; }