1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
<?php defined('BASEPATH') or exit('No direct script access allowed');
class Pages extends Public_controller
{
public function __construct()
{
parent::__construct('templates/public');
$this->data['current_page'] = $this->router->method;
$this->data['pagetitle'] .= ' > '.lang($this->data['current_page']);
}
public function index()
{
}
public function news()
{
$this->load->model('article_model');
$articles = $this->article_model->get_all_lang(current_lang(), 'date DESC');
$this->data['articles'] = $articles;
}
public function article($slug = '')
{
$this->load->model('article_model');
$slug_lang = $this->article_model->slug_lang($slug);
if (! $slug_lang) {
show_404();
}
$article = $this->article_model->where_slug($slug, $slug_lang)->get();
if ($slug_lang !== current_lang()) {
$right_slug = $article['slug_'.current_lang()];
if ($right_slug) {
$current_uri = $this->uri->uri_string();
$uri = str_replace($slug, $right_slug, $current_uri);
redirect($uri);
} else {
$article = null;
}
}
$this->data['article'] = $this->_clean_article_array($article);
$this->data['pagetitle'] .= ': '.$this->data['article']['title'];
}
private function _clean_article_array($article)
{
if($article) {
$clean_article = [];
foreach ($article as $field => $value) {
$field_lang = substr($field, -3);
if($field_lang === '_'.current_lang()) {
$clean_article[substr($field, 0,-3)] = $value;
continue;
}
if(! preg_match('/^_es|_en/', $field_lang)) {
$clean_article[$field] = $value;
}
}
return $clean_article;
}
return null;
}
}