Вход Регистрация
Файл: 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') ? 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') ? 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;
    }
}
Онлайн: 0
Реклама