/**
* @author Venelin Kochev
* @copyright Copyright (c) 2010
*/
/**
* Index page
*
* @file BlogController.php
* @subpackage controllers
* @category application
* @author Venelin Kochev
*
*/
class BlogController extends Action {
/**
* Database
* @var object
*/
private $db = null;
/**
* Configuration
* @var array
*/
private $config = null;
/**
* Template
* @var object
*/
private $template = null;
/**
* Language
* @var array
*/
private $lang = "";
/**
* Meta tags
* @var string
*/
private $meta = "";
/**
* Init action
*
* @author Venelin Kochev
*/
public function init() {
$this->db = Registry::get('db');
$this->config = Registry::get('config');
$this->template = Registry::get('template');
$this->lang = Registry::get('lang');
$this->country_code = Registry::get('country_code');
$this->template->assign("lang", $this->lang);
$this->template->template_dir .= $_SESSION['default_skin'];
$this->template->compile_dir .= $_SESSION['default_skin'];
$this->db->query("SET NAMES 'utf8'");
//Предифинираме променливата със пътя до изображенията и css пътя
$this->config['site_img'] = $this->config['site_img'] . $_SESSION['default_skin'] . "/"; // Пътя до папката с изображенията на скина който е избран
$this->config['site_css'] = $this->config['site_css'] . $_SESSION['default_skin'] . "/"; // Пътя до css файловете на скина който е избран
$this->template->assign("config", $this->config);
Loader::loadModel("ContentMdl");
//promo left box
$promotions_box = ContentMdl::promotionsProductsBox($this->country_code);
foreach ($promotions_box as &$promo) {
$promo['old_price'] = $promo['price'];
$promo['price'] = number_format($promo['price'] - $promo['price'] * ($promo['promotion'] / 100), 2);
$promo['cat_url'] = $this->db->fetchOne("SELECT cn.url
FROM products AS p
LEFT JOIN category AS c ON p.idcategory = c.idcategory
LEFT JOIN category_names AS cn ON ( cn.idcategory = c.idcategory AND cn.idcountry = 2 )
WHERE p.idproduct = '" . $promo['idproduct'] . "'");
}
if ($promotions_box)
$this->template->assign("promotions_box", $promotions_box);
}
/**
* If the action not exists
*
* @author Venelin Kochev
*/
function __call($action, $arguments) {
Loader::loadModel("SettingsMdl");
// Show 404 error page
SettingsMdl::showPage(404);
exit();
//System::redirect($this->config['site_url']);
}
public function indexAction() {
Loader::loadModel("SettingsMdl");
// seo mod - do not edit!
if (eregi("page\/1", $_SERVER['REQUEST_URI'])) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $this->config['site_url_lng'] . "blog");
exit();
}
$url = $this->config['site_url'] . "blog/index/page/";
$page = $this->getParam("page", 1);
$system = new System();
$system->page = $page;
$system->rows_per_page = 10;
$system->link = $url;
$system->suffix = '';
$count = $this->db->fetchOne("SELECT COUNT(*) FROM `blog` WHERE status = 'active'");
$return = $system->paginate($count);
$this->template->assign("paginate", $return[0]);
$this->template->assign("url", $url . "$page");
$this->template->assign("pages", $return[1]);
$this->template->assign("count", $count);
$this->template->assign("page", $page);
$now = date("Y-m-d H:i:s");
$data = $this->db->fetchAll("SELECT * FROM `blog` WHERE `date` <= '$now' and status = 'active' ORDER BY `id` DESC LIMIT $system->limit, $system->rows_per_page");
$_data = array();
foreach ($data as $k => $value) {
if (strlen($value['content']) > 2000)
$value['more'] = 1;
else
$value['more'] = 0;
$_data[$k] = $value;
$_data[$k]['content'] = str_replace("#div#", "
", $_data[$k]['content']);
$pattern = '/#id#(?
\d+)#id#/i';
preg_match_all($pattern, $_data[$k]['content'], $matches);
foreach ($matches['id'] as $idprod) {
$get_info = SettingsMdl::getInfoForBlogContent($idprod);
if (!empty($get_info['promotion'])) {
$get_info['price'] = number_format($get_info['price'] - $get_info['price'] * ($get_info['promotion'] / 100), 2);
}
$product = "";
$_data[$k]['content'] = str_replace("#id#$idprod#id#", $product, $_data[$k]['content']);
}
$_data[$k]['content'] = str_replace("#enddiv#", " ", $_data[$k]['content']);
$_data[$k]['content'] = str_replace("#newline#", "", $_data[$k]['content']);
}
$this->template->assign("nav", 'Blog');
$this->template->assign("data", $_data);
$this->template->assign("mostposts", $this->db->fetchAll("SELECT `id`, `title`, `url` FROM `blog` WHERE `date` <= '$now' and status = 'active' ORDER BY `id` DESC LIMIT 120"));
if($page > 1){
$this->template->assign("page_title", strtoupper($this->config['site_name']) . " - Blog - pagina ". $page);
}else{
$this->template->assign("page_title", strtoupper($this->config['site_name']) . " - Blog");
}
$this->template->display("blog/blog.tpl.html");
}
public function viewAction() {
Loader::loadModel("SettingsMdl");
$parts = explode("/", ltrim($_SERVER['REQUEST_URI'], "/"));
// seo mod - do not edit!
//if (substr($_SERVER['REQUEST_URI'], -1) == '/') {
//header("HTTP/1.1 301 Moved Permanently");
//header("Location: " . $this->config['site_url_lng'] . "blog/" . $parts[1]);
//exit();
//}
$id = addslashes($parts[1]);
$id = (int) $this->db->fetchOne("SELECT `id` FROM `blog` WHERE `url`='$id' LIMIT 1");
if (!$id) {
Loader::loadModel("SettingsMdl");
// Show 404 error page
SettingsMdl::showPage(404);
exit();
}
$now = date("Y-m-d H:i:s");
//$id = (int) $parts[1];
$this->db->query("UPDATE `blog` SET `views` = `views`+1 WHERE `id`='$id' LIMIT 1");
// SLIDER
$query = "SELECT p.*, pi.*, pr.value, pr.idprice, c.money
FROM `orders_products` AS op
LEFT JOIN products AS p ON op.idproduct = p.idproduct
LEFT JOIN products_info AS pi ON pi.idproduct = p.idproduct
LEFT JOIN country AS c ON c.idcountry = pi.idcountry
LEFT JOIN prices AS pr ON p.idproduct = pr.idproduct AND pr.idcountry = '1'
LEFT JOIN category as ca ON ca.idcategory = p.idcategory
WHERE c.code='$this->country_code' AND p.availability='yes' AND ca.`bg`='1' AND pi.`info` != ''
GROUP BY p.idproduct
ORDER BY count( op.idproduct ) DESC LIMIT 0, 10";
$result = $this->db->fetchAll($query);
foreach ($result as $k => &$v) {
$query = "SELECT * FROM images WHERE idproduct='" . $v['idproduct'] . "' ORDER BY main ASC LIMIT 1";
$images = $this->db->fetchRow($query);
$v['images'] = $images;
$v['url'] = $this->db->fetchOne("SELECT `url` FROM `category_names` WHERE `idcategory`='{$v['idcategory']}' AND `idcountry`='{$v['idcountry']}' LIMIT 1");
}
$data = $this->db->fetchRow("SELECT * FROM `blog` WHERE `id`='$id' LIMIT 1");
$data['content'] = str_replace("#div#", " ", $data['content']);
$pattern = '/#id#(?
\d+)#id#/i';
preg_match_all($pattern, $data['content'], $matches);
foreach ($matches['id'] as $idprod) {
$get_info = SettingsMdl::getInfoForBlogContent($idprod);
if (!empty($get_info['promotion'])) {
$get_info['price'] = number_format($get_info['price'] - $get_info['price'] * ($get_info['promotion'] / 100), 2);
}
$product = "";
$data['content'] = str_replace("#id#$idprod#id#", $product, $data['content']);
}
$data['content'] = str_replace("#enddiv#", " ", $data['content']);
$data['content'] = str_replace("#newline#", "", $data['content']);
$this->template->assign("data", $data);
$posts = $this->db->fetchAll("SELECT `id`, `title`, `url` FROM `blog` WHERE `date` <= '$now' and status = 'active' ORDER BY `id` DESC LIMIT 10");
$this->template->assign("mostposts", $posts);
$this->template->assign("facebook_url", $_SERVER['REQUEST_URI']);
$this->template->assign("related", $result);
$rand_post = $this->db->fetchAll("SELECT `title`, `url` FROM `blog` WHERE status = 'active' ORDER BY RAND() LIMIT 5");
$this->template->assign("rand_post", $rand_post);
//$this->template->assign("nav", 'Blog');
$this->template->assign("comments", $this->db->fetchAll("SELECT * FROM `blog_comments` WHERE `idpost`='$id' AND `mod`='1' ORDER BY `id` DESC"));
$blog_rate = ContentMdl::getRatingIdBlog($id);
$count_vote = $blog_rate['count_vote']; // broq glasuvali potrebiteli
if ($count_vote == 0) {
$count_vote = 1;
}
$sum_rate = $blog_rate['sum_rate']; //ob6tata suma na reita
$all_vote = number_format($sum_rate / $count_vote, 1); // iz4islqvane na ob6tiq vot
if ($all_vote == 1) {
$width = '18px;';
} elseif ($all_vote > 1 && $all_vote <= 1.5) {
$width = '27px;';
} elseif ($all_vote > 1.5 && $all_vote <= 2.4) {
$width = '36px;';
} elseif ($all_vote > 2.4 && $all_vote <= 2.9) {
$width = '45px;';
} elseif ($all_vote > 2.9 && $all_vote <= 3.4) {
$width = '54px;';
} elseif ($all_vote > 3.4 && $all_vote <= 3.9) {
$width = '63px;';
} elseif ($all_vote > 3.9 && $all_vote <= 4.2) {
$width = '72px;';
} elseif ($all_vote > 4.2 && $all_vote <= 4.4) {
$width = '79px;';
} elseif ($all_vote > 4.4 && $all_vote <= 4.7) {
$width = '81px;';
} elseif ($all_vote > 4.7 && $all_vote <= 4.9) {
$width = '87px;';
} elseif ($all_vote > 4.9) {
$width = '90px;';
}
$this->template->assign('url_mobile', "http://m.spy.store.ro/blogpost/page/id/" . $id);
$this->template->assign("width", $width);
$this->template->assign("idpost", $id);
$this->template->assign("all_vote", $all_vote);
$this->template->assign("count_vote", $count_vote);
$this->template->assign("blog_nav", 1);
$this->template->assign("page_title", $data['title'] . ' - ' . strtoupper($this->config['site_name']));
$this->template->display("blog/blog_view.tpl.html");
}
}
?>