%PDF- %PDF-
Direktori : /home1/dimen328/libertysa.com.br/admin/modules/blog/app/controllers/ |
Current File : //home1/dimen328/libertysa.com.br/admin/modules/blog/app/controllers/pjLoad.controller.php |
<?php if (!defined("ROOT_PATH")) { header("HTTP/1.1 403 Forbidden"); exit; } class pjLoad extends pjFront { private $isoDatePattern = '/\d{4}-\d{2}-\d{2}/'; public function pjActionIndex() { $pjCategoryModel = pjCategoryModel::factory(); $category_arr = $pjCategoryModel->where('status', 'T')->findAll()->getData(); $pjPostModel = pjPostModel::factory(); if(isset($_GET['dosearch'])){ if (isset($_GET['keyword']) && !empty($_GET['keyword'])){ $q = pjObject::escapeString($_GET['keyword']); $pjPostModel->where('t1.title LIKE', "%$q%"); $pjPostModel->orWhere('t1.body LIKE', "%$q%"); } } if(isset($_GET['category_id']) && !empty($_GET['category_id'])){ $category_id = pjObject::escapeString($_GET['category_id']); if(is_numeric($category_id)) { $_arr = $pjCategoryModel->reset()->where('status', 'T')->find($category_id)->getData(); if(!empty($_arr)) { $pjPostModel->where('t1.category_id', $category_id); } } } $pjPostModel->where('t1.status', 'T'); $pjPostModel->where("(t1.category_id IN(SELECT TC.id FROM `".$pjCategoryModel->getTable()."` AS TC WHERE TC.status='T'))"); $column = 'published_date'; $direction = 'DESC'; if($this->option_arr['o_post_order'] == 'bottom'){ $direction = 'ASC'; } $total = $pjPostModel->findCount()->getData(); $rowCount = isset($_GET['rowCount']) && (int) $_GET['rowCount'] > 0 ? (int) $_GET['rowCount'] : $this->option_arr['o_posts_per_page']; $pages = ceil($total / $rowCount); $page = isset($_GET['pjPage']) && (int) $_GET['pjPage'] > 0 ? intval($_GET['pjPage']) : 1; $offset = ((int) $page - 1) * $rowCount; if ($page > $pages) { $page = $pages; } $vote_table = pjVoteModel::factory()->getTable(); $arr = $pjPostModel->select("t1.*, t2.name, t3.category, (SELECT COUNT(TC.post_id) FROM `".pjCommentModel::factory()->getTable()."` AS TC WHERE t1.id = TC.post_id AND TC.status='T') AS `cnt_comments`, (SELECT COUNT(TV1.id) FROM `$vote_table` AS TV1 WHERE `TV1`.`post_id` = `t1`.`id` LIMIT 1) AS `cnt`, (SELECT SUM(TV2.vote_rate)/COUNT(TV2.id) FROM `$vote_table` AS TV2 WHERE `TV2`.`post_id` = `t1`.`id` LIMIT 1) AS `avg_rate`") ->join('pjUser', 't1.author_id=t2.id', 'left') ->join('pjCategory', 't1.category_id=t3.id', 'left') ->orderBy("$column $direction")->limit($rowCount, $offset)->findAll()->getData(); $this->set('arr', $arr); $this->set('category_arr', $category_arr); $this->set('paginator', compact('total', 'pages', 'page', 'rowCount', 'column', 'direction')); } public function pjActionLoadMore() { $this->setAjax(true); if ($this->isXHR()) { $this->setLayout('pjActionEmpty'); $pjPostModel = pjPostModel::factory(); if(isset($_POST['dosearch'])) { if (isset($_POST['keyword']) && !empty($_POST['keyword'])) { $q = pjObject::escapeString($_POST['keyword']); $pjPostModel->where('t1.title LIKE', "%$q%"); $pjPostModel->orWhere('t1.body LIKE', "%$q%"); } } if(isset($_POST['category_id']) && !empty($_POST['category_id'])) { $pjPostModel->where('t1.category_id', $_POST['category_id']); } $pjPostModel->where('t1.status', 'T'); $pjPostModel->where("(t1.category_id IN(SELECT TC.id FROM `".pjCategoryModel::factory()->getTable()."` AS TC WHERE TC.status='T'))"); $column = 'published_date'; $direction = 'DESC'; if($this->option_arr['o_post_order'] == 'bottom'){ $direction = 'ASC'; } $total = $pjPostModel->findCount()->getData(); $rowCount = isset($_GET['rowCount']) && (int) $_GET['rowCount'] > 0 ? (int) $_GET['rowCount'] : $this->option_arr['o_posts_per_page']; $pages = ceil($total / $rowCount); $page = isset($_GET['pjPage']) && (int) $_GET['pjPage'] > 0 ? intval($_GET['pjPage']) : 1; $offset = ((int) $page - 1) * $rowCount; if ($page > $pages) { $page = $pages; } $vote_table = pjVoteModel::factory()->getTable(); $arr = $pjPostModel->select("t1.*, t2.name, (SELECT COUNT(TC.post_id) FROM `".pjCommentModel::factory()->getTable()."` AS TC WHERE t1.id = TC.post_id AND TC.status='T') AS `cnt_comments`, (SELECT COUNT(TV1.id) FROM `$vote_table` AS TV1 WHERE `TV1`.`post_id` = `t1`.`id` LIMIT 1) AS `cnt`, (SELECT SUM(TV2.vote_rate)/COUNT(TV2.id) FROM `$vote_table` AS TV2 WHERE `TV2`.`post_id` = `t1`.`id` LIMIT 1) AS `avg_rate`") ->join('pjUser', 't1.author_id=t2.id', 'left') ->orderBy("$column $direction")->limit($rowCount, $offset)->findAll()->getData(); $this->set('arr', $arr); } } public function pjActionView() { if(isset($_POST['post_comment'])){ set_time_limit(0); if (!isset($_POST['name'])){ $err = 9901; } if (!isset($_POST['email'])){ $err = 9902; } if (!isset($_POST['comment'])){ $err = 9903; } if (!isset($_POST['captcha'])){ $err = 9904; } if (isset($_POST['name']) && !pjValidation::pjActionNotEmpty($_POST['name'])) { $err = 9905; } if (isset($_POST['email']) && !pjValidation::pjActionNotEmpty($_POST['email'])) { $err = 9906; } if (isset($_POST['comment']) && !pjValidation::pjActionNotEmpty($_POST['comment'])) { $err = 9907; } if (isset($_POST['captcha']) && !pjValidation::pjActionNotEmpty($_POST['captcha'])) { $err = 9908; } if (isset($_POST['email']) && !pjValidation::pjActionEmail($_POST['email'])) { $err = 9909; } if (isset($_POST['captcha']) && isset($_SESSION[$this->defaultCaptcha]) && strtoupper($_POST['captcha']) != $_SESSION[$this->defaultCaptcha]) { $err = 9910; } if (isset($_POST['comment']) && pjValidation::pjActionNotEmpty($_POST['comment']) && $this->pjCheckBannedWords($_POST['comment']) == false) { $err = 9911; } if (isset($_POST['name']) && pjValidation::pjActionNotEmpty($_POST['name']) && $this->pjCheckUrls($_POST['name']) == false) { $err = 9912; } if (isset($_POST['comment']) && pjValidation::pjActionNotEmpty($_POST['comment']) && $this->pjCheckUrls($_POST['comment']) == false) { $err = 9913; } $post = pjPostModel::factory()->find($_POST['post_id'])->getData(); if (isset($err)) { if (isset($_SESSION[$this->defaultCaptcha])) { $_SESSION[$this->defaultCaptcha] = NULL; unset($_SESSION[$this->defaultCaptcha]); } if ($this->option_arr['o_seo_url'] == 'No'){ $detail_url = $_SERVER['SCRIPT_NAME'] . '?controller=pjLoad&action=pjActionView&id=' . $post['id'] . (isset($_GET['iframe']) ? '&iframe' : NULL); } else { $path = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME'])); $path = $path == '/' ? '' : $path; $detail_url = $path .'/'. $this->friendlyURL($post['title']) . "-" . $post['id'] . ".html"; } $_SESSION[$this->defaultStatus] = $err; pjUtil::redirect($detail_url); } if (isset($_SESSION[$this->defaultCaptcha])) { $_SESSION[$this->defaultCaptcha] = NULL; unset($_SESSION[$this->defaultCaptcha]); } $data = array(); $data['status'] = 'T'; if($this->option_arr['o_comment_approval'] == 'Yes'){ $data['status'] = 'W'; } $id = pjCommentModel::factory()->setAttributes(array_merge($_POST, $data))->insert()->getInsertId(); if ($id !== false && (int) $id > 0) { $arr = pjPostModel::factory()->find($_POST['post_id'])->getData(); $pjEmail = new pjEmail(); if ($this->option_arr['o_send_email'] == 'smtp') { $pjEmail ->setTransport('smtp') ->setSmtpHost($this->option_arr['o_smtp_host']) ->setSmtpPort($this->option_arr['o_smtp_port']) ->setSmtpUser($this->option_arr['o_smtp_user']) ->setSmtpPass($this->option_arr['o_smtp_pass']); } $pjEmail->setContentType('text/html'); $from = $this->getFromEmail(); $subject = $this->option_arr['o_notify_subject']; $message = $this->option_arr['o_notify_message']; $edit_url = PJ_INSTALL_URL . "index.php?controller=pjAdminComments&action=pjActionUpdate&id=".$id; $edit_url = '<a href="'.$edit_url.'">'.$edit_url.'</a>'; $delete_url = PJ_INSTALL_URL . "index.php?controller=pjAdminComments&action=pjActionDelete&id=".$id; $delete_url = '<a href="'.$delete_url.'">'.$delete_url.'</a>'; $search = array('{PostTitle}', '{Name}', '{Email}', '{Comment}', '{EditComment}', '{DeleteComment}'); $replace = array($arr['title'], $_POST['name'], $_POST['email'], $_POST['comment'], $edit_url, $delete_url); $message = str_replace($search, $replace, $message); $pjUserModel = pjUserModel::factory(); if(!empty($arr['author_id']) && (int) $arr['author_id'] > 0) { $pjUserModel->where("(t1.id = '".$arr['author_id']."' AND t1.receive_notify <> 'D') OR t1.receive_notify = 'A'"); }else{ $pjUserModel->where("t1.receive_notify", 'A'); } $email_arr = $pjUserModel->findAll()->getDataPair('id', 'email'); foreach($email_arr as $email) { $pjEmail ->setFrom($from) ->setTo($email) ->setSubject($subject) ->send(pjUtil::textToHtml($message)); } if($this->option_arr['o_comment_approval'] == 'No'){ $err = 9999; }else{ $err = 9998; } if ($this->option_arr['o_seo_url'] == 'No'){ $detail_url = $_SERVER['SCRIPT_NAME'] . '?controller=pjLoad&action=pjActionView&id=' . $post['id'] . (isset($_GET['iframe']) ? '&iframe' : NULL); } else { $path = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME'])); $path = $path == '/' ? '' : $path; $detail_url = $path .'/'. $this->friendlyURL($post['title']) . "-". $post['id'] . ".html"; } $_SESSION[$this->defaultStatus] = $err; pjUtil::redirect($detail_url); exit; } }else{ $pjCategoryModel = pjCategoryModel::factory(); $id = pjObject::escapeString($_GET['id']); if(is_numeric($id)) { $pjPostModel = pjPostModel::factory(); $vote_table = pjVoteModel::factory()->getTable(); $arr = $pjPostModel ->select("t1.*, t2.name, t3.category, (SELECT COUNT(TC.post_id) FROM `".pjCommentModel::factory()->getTable()."` AS TC WHERE t1.id = TC.post_id AND TC.status='T') AS `cnt_comments`, (SELECT COUNT(TV1.id) FROM `$vote_table` AS TV1 WHERE `TV1`.`post_id` = `t1`.`id` LIMIT 1) AS `cnt`, (SELECT SUM(TV2.vote_rate)/COUNT(TV2.id) FROM `$vote_table` AS TV2 WHERE `TV2`.`post_id` = `t1`.`id` LIMIT 1) AS `avg_rate`") ->join('pjUser', 't1.author_id=t2.id', 'left') ->join('pjCategory', 't1.category_id=t3.id', 'left') ->find($_GET['id'])->getData(); $category = $pjCategoryModel->find($arr['category_id'])->getData(); if($arr['status'] == 'T' && $category['status'] == 'T') { $column = 'created'; $direction = 'DESC'; if($this->option_arr['o_comment_order'] == 'bottom'){ $direction = 'ASC'; } $comment_arr = pjCommentModel::factory() ->where('t1.post_id', $_GET['id']) ->where('t1.status', 'T') ->orderBy("$column $direction") ->findAll() ->getData(); if(!empty($arr['category_id'])) { $number_of_related_posts = isset($this->option_arr['o_related_posts_shown']) ? (!empty($this->option_arr['o_related_posts_shown']) ? $this->option_arr['o_related_posts_shown'] : 0) : 0 ; if($number_of_related_posts > 0) { $related_arr = $pjPostModel ->reset() ->join('pjUser', 't1.author_id=t2.id', 'left') ->select("t1.*, t2.name,(SELECT COUNT(TC.post_id) FROM `".pjCommentModel::factory()->getTable()."` AS TC WHERE t1.id = TC.post_id AND TC.status='T') AS `cnt_comments`, (SELECT COUNT(TV1.id) FROM `$vote_table` AS TV1 WHERE `TV1`.`post_id` = `t1`.`id` LIMIT 1) AS `cnt`, (SELECT SUM(TV2.vote_rate)/COUNT(TV2.id) FROM `$vote_table` AS TV2 WHERE `TV2`.`post_id` = `t1`.`id` LIMIT 1) AS `avg_rate`") ->where("t1.id <> " . $_GET['id']) ->where('t1.category_id', $arr['category_id']) ->orderBy("RAND()") ->limit($number_of_related_posts) ->findAll() ->getData(); }else{ $related_arr = array(); } }else{ $related_arr = array(); } $og_image = ''; if(!empty($arr['source_path'])) { $og_image = PJ_INSTALL_URL . $arr['medium_path']; } $meta_title = $arr['meta_title']; $meta_keywords = $arr['meta_keywords']; $meta_description = $arr['meta_description']; if($meta_title == '' && $meta_keywords == '' && $meta_description == '') { $meta_title = $this->option_arr['o_meta_title']; $meta_keywords = $this->option_arr['o_meta_keywords']; $meta_description = $this->option_arr['o_meta_description']; } $this->set('arr', $arr); $this->set('comment_arr', $comment_arr); $this->set('related_arr', $related_arr); $this->set('meta_arr', array( 'title' => $meta_title, 'keywords' => $meta_keywords, 'description' => $meta_description, 'url' => pjUtil::getPageURL(), 'og_title' => pjSanitize::html(stripslashes($arr['title'])), 'og_image' => $og_image, 'body' => pjUtil::truncateDescription(pjSanitize::html($arr['body']), 160, ' ') )); } } if(isset($_SESSION[$this->defaultStatus])) { $_GET['err'] = $_SESSION[$this->defaultStatus]; unset($_SESSION[$this->defaultStatus]); } $category_arr = $pjCategoryModel->reset()->where('status', 'T')->findAll()->getData(); $this->set('category_arr', $category_arr); } } private function pjCheckBannedWords($string) { if($this->option_arr['o_banned_words'] == ''){ return true; }else{ $banned_words = trim($this->option_arr['o_banned_words']); $banned_arr = explode(",", $banned_words); foreach($banned_arr as $k => $v){ $banned_arr[$k] = trim($v); } $matches = array(); $matchFound = preg_match_all("/\b(" . implode($banned_arr,"|") . ")\b/i", $string, $matches); if ($matchFound) { return false; }else{ return true; } } } private function pjCheckUrls($string) { $result = true; if($this->option_arr['o_reject_links'] == 'Yes'){ $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; if(preg_match($reg_exUrl, $string, $url)) { $result = false; } } return $result; } public function pjActionSend(){ $this->setAjax(true); $json_arr = array(); $pjEmail = new pjEmail(); if ($this->option_arr['o_send_email'] == 'smtp') { $pjEmail ->setTransport('smtp') ->setSmtpHost($this->option_arr['o_smtp_host']) ->setSmtpPort($this->option_arr['o_smtp_port']) ->setSmtpUser($this->option_arr['o_smtp_user']) ->setSmtpPass($this->option_arr['o_smtp_pass']); } $pjEmail->setContentType('text/html'); $from = $this->getFromEmail(); if($this->option_arr['o_email_address'] != '' ){ $from = $this->option_arr['o_email_address']; } $to = $_POST['send_to']; $subject = stripslashes($_POST['subject']); $message = nl2br(stripslashes($_POST['message'])); $pjEmail->setFrom($from) ->setTo($to) ->setSubject($subject) ->send($message); $json_arr['code'] = '102'; pjAppController::jsonResponse($json_arr); exit; } public function pjActionRating() { $this->setAjax(true); $pjPostModel = pjPostModel::factory(); $pjVoteModel = pjVoteModel::factory(); $access_ip = $_SERVER["REMOTE_ADDR"]; $is_voted = array(); $json_arr = array(); $post_id = intval($_POST['id']); $rate = intval($_POST['rate']); $is_voted = false; $limit_vote = $this->option_arr['o_limit_vote']; if($limit_vote == 'IP'){ $pjVoteModel->where("t1.post_id = $post_id AND t1.ip = '$access_ip' AND (t1.vote_date + INTERVAL 1 DAY) > NOW()"); if($pjVoteModel->findCount()->getData() > 0){ $is_voted = true; } }else if($limit_vote == 'Cookie'){ if(isset($_COOKIE["SBlog_Vote_" + $post_id])){ $is_voted = true; } } if ($is_voted) { $json_arr['code'] = 101; }else{ $arr = $pjPostModel->find($post_id)->getData(); $data = array(); $data['ip'] = $access_ip; $data['post_id'] = $post_id; $data['category_id'] = $arr['category_id']; $data['vote_rate'] = $rate; $pjVoteModel->reset()->setAttributes($data)->insert(); if($limit_vote == 'Cookie'){ $expire=time() + 60*60*24; setcookie("SBlog_Vote_" + $post_id, 1, $expire); } $json_arr['code'] = 102; } pjAppController::jsonResponse($json_arr); } } ?>