Файл: adultscript-2.0.3-pro/files/admin/modules/kb/components/manage.php
Строк: 80
<?php
defined('_VALID') or die('Restricted Access!');
class VComponent_Admin_kb_manage
{
private $db;
private $option;
public function __construct()
{
$this->db = VF::factory('database');
$this->option = array(
'title' => '', 'content' => '', 'category' => '',
'sort' => 'k.kb_id', 'order' => 'DESC', 'display' => 20
);
}
public function render()
{
$errors = array();
$messages = array();
if (isset($_POST['action']) && isset($_POST['kb_id'])) {
$action = trim($_POST['action']);
$id = (int) trim($_POST['kb_id']);
if ($id) {
if ($action == 'suspend' OR $action == 'activate') {
$status = ($action == 'activate') ? 1 : 0;
$msg = ($action == 'activate') ? 'published' : 'unpublished';
$this->db->query("UPDATE #__kb SET status = '".$status."' WHERE kb_id = ".$id." LIMIT 1");
$messages[] = 'Article '.$msg.'!';
} elseif ($action == 'delete') {
$this->delete_kb($id);
$messages[] = 'Article deleted!';
} else {
$errors[] = 'Invalid action! What exactly did you click!?';
}
} else {
$errors[] = 'Invalid article! What exactly did you click!?';
}
}
if (isset($_POST['submit_actions'])) {
$action = trim($_POST['action']);
$ids = $this->get_checkbox_ids();
if ($ids) {
if ($action == 'suspend' OR $action == 'activate') {
$status = ($action == 'activate') ? 1 : 0;
$msg = ($action == 'activate') ? 'published' : 'suspended';
$this->db->query("UPDATE #__kb
SET status = '".$status."'
WHERE kb_id IN (".implode(',', $ids).")");
$messages[] = 'Articles '.$msg.'!';
} elseif ($action == 'delete') {
foreach ($ids as $id) {
$this->delete_kb((int) $id);
}
$messages[] = 'Articles deleted!';
} else {
$errors[] = 'Invalid action! What exactly did you select!?';
}
} else {
echo var_dump($ids). '<br />';
$errors[] = 'Please check at least one article!';
}
}
$page = (isset($_GET['page'])) ? (int) trim($_GET['page']) : 1;
$search = $this->search_kb();
$total_kb = $this->db->get_field($search['sql_count'], 'total_kb');
$pagination = VPagination::get($page, $total_kb, $search['display']);
$articles = $this->db->get_rows($search['sql'].' LIMIT '.$pagination['limit']);
$tpl = VF::factory('template');
$tpl->menu = 'kb';
$tpl->submenu = 'kb_manage';
$tpl->meta_title = 'Admin::Knowledge Base::Manage';
$tpl->errors = $errors;
$tpl->messages = $messages;
$tpl->articles = $articles;
$tpl->pagination = $pagination;
$tpl->load(array('header', 'kb_manage', 'footer'));
$tpl->display();
}
private function search_kb()
{
$sql = 'SELECT k.*, c.name
FROM #__kb AS k
LEFT JOIN #__kb_categories AS c ON (k.cat_id = c.cat_id)';
$sql_count = 'SELECT COUNT(*) AS total_kb
FROM #__kb AS k';
return array(
'sql' => $sql.' ORDER BY '.$this->option['sort'].' '.$this->option['order'],
'sql_count' => $sql_count,
'display' => $this->option['display']
);
}
private function delete_kb($id)
{
$this->db->query("SELECT cat_id FROM #__kb WHERE kb_id = ".$id." LIMIT 1");
if ($this->db->affected_rows()) {
$cat_id = (int) $this->db->fetch_field('cat_id');
$this->db->query("DELETE FROM #__kb WHERE kb_id = ".$id." LIMIT 1");
$this->db->query("UPDATE #__kb_categories SET total_articles = total_articles-1 WHERE cat_id = ".$cat_id." LIMIT 1");
}
}
private function get_checkbox_ids()
{
$ids = array();
foreach ($_POST as $key => $value) {
if (strpos($key, 'checkbox_kb_') !== FALSE) {
$ids[] = (int) str_replace('checkbox_kb_', '', $key);
}
}
return $ids;
}
}