Вход Регистрация
Файл: adultscript-2.0.3-pro/files/admin/modules/pornstar/components/manage.php
Строк: 165
<?php
defined
('_VALID') or die('Restricted Access!');
class 
VComponent_Admin_pornstar_manage
{
    private 
$db;
    private 
$option;
    private 
$filter;
    public function 
__construct()
    {
        
$this->db         VF::factory('database');
        
$this->filter    VF::factory('filter');
        
$this->option    = array(
            
'name' => '''description' => '''gender' => '',
            
'sort' => 'm.model_id''order' => 'DESC''display' => 10
        
);
    }
    
    public function 
render()
    {
        
$errors        = array();
        
$messages    = array();
        
        if (isset(
$_POST['action']) && isset($_POST['model_id'])) {
            
$action        trim($_POST['action']);
            
$model_id    = (int) trim($_POST['model_id']);
            if (
$model_id) {
                if (
$action == 'activate' OR $action == 'suspend') {
                    
$status    = ($action == 'activate') ? 0;
                    
$msg    = ($action == 'activate') ? 'published' 'suspended';
                    
$this->db->query("UPDATE #__model SET status = '".$status."' WHERE model_id = ".$model_id." LIMIT 1");
                    
$messages[] = 'Pornstar '.$msg.'!';
                } elseif (
$action == 'delete') {
                    
$this->delete_pornstar($model_id);
                    
$messages[] = 'Pornstar deleted!';
                } elseif (
$action == 'unassign') {
                    
$this->db->query("UPDATE #__model SET adv = 0 WHERE model_id = ".$model_id." LIMIT 1");
                    
$messages[] = 'Banner unassigned!';
                } else {
                    
$errors[] = 'Invalid action! What exactly did you click!?';
                }
            } else {
                
$errors[] = 'Invalid pornstar id! Are you sure this pornstar exists!?';
            }
        }
        
        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 #__model SET status = '".$status."' WHERE model_id IN (".implode(','$ids).")");
                    
$messages[] = 'Pornstars '.$msg.'!';
                } elseif (
$action == 'delete') {
                    foreach (
$ids as $id) {
                        
$this->delete_pornstar((int) $id);
                    }
                    
                    
$messages[] = 'Pornstars deleted!';
                } elseif (
$action == 'unassign') {
                    
$this->db->query("UPDATE #__model SET adv = 0 WHERE model_id IN (".implode(','$ids).")");
                    
$messages[] = 'Removed advertising from selected pornstars!';
                } else {
                    
$errors[] = 'Invalid action! What exactly did you select!?';
                }
            } else {
                
$errors[] = 'Please select at least one pornstar!';
            }
        }
        
        if (!isset(
$_POST['submit_reset'])) {
              if (isset(
$_SESSION['search_model_option'])) {
                  
$this->option $_SESSION['search_model_option'];
            }
        }
        
        
$page           = (isset($_GET['page'])) ? (int) $_GET['page'] : 1;
        
$search            $this->search_pornstars();
        
$models_total    $this->db->get_field($search['sql_count'], 'total_models');
        
$pagination     VPagination::get($page$models_total$search['display']);
        
$models         $this->db->get_rows($search['sql']." LIMIT ".$pagination['limit']);
    
        
$tpl VF::factory('template');
        
$tpl->menu            'pornstar';
        
$tpl->submenu        'pornstar_manage';
        
$tpl->meta_title    'Admin::Pornstar::Manage';
        
$tpl->errors        $errors;
        
$tpl->messages        $messages;
        
$tpl->models        $models;
        
$tpl->models_total    $models_total;
        
$tpl->pagination    $pagination;
        
$tpl->advs            $this->get_pornstar_advs();
        
$tpl->load(array('header''pornstar_manage''footer'));
        
$tpl->display();
    }
    
    private function 
search_pornstars()
    {
        
$sql        'SELECT m.* FROM #__model AS m';
        
$sql_count    'SELECT COUNT(*) AS total_models FROM #__model AS m';
        
$sql_delim    ' WHERE';
        if (isset(
$_POST['submit_search'])) {
            
$this->option['name']            = $this->filter->get('name');
            
$this->option['description']    = $this->filter->get('description');
            
$this->option['gender']            = $this->filter->get('gender');
            
$this->option['sort']            = $this->filter->get('sort');
            
$this->option['order']            = $this->filter->get('order');
            
$this->option['display']        = (int) trim($_POST['display']);
            
            if (
$this->option['name'] != '') {
                
$sql        .= $sql_delim." m.name LIKE '%".$this->db->escape($this->option['name'])."%'";
                
$sql_count    .= $sql_delim." m.name LIKE '%".$this->db->escape($this->option['name'])."%'";
                
$sql_delim   ' AND';
            }
            
            if (
$this->option['description'] != '') {
                
$sql        .= $sql_delim." m.description LIKE '%".$this->db->escape($this->option['description'])."%'";
                
$sql_count    .= $sql_delim." m.description LIKE '%".$this->db->escape($this->option['description'])."%'";
                
$sql_delim   ' AND';
            }
            
            if (
$this->option['gender'] != '') {
                
$sql        .= $sql_delim." m.gender = '".$this->db->escape($this->option['gender'])."'";
                
$sql_count    .= $sql_delim." m.gender = '".$this->db->escape($this->option['gender'])."'";
                
$sql_delim   ' AND';
            }
        }
        
        
$_SESSION['search_model_option'] = $this->option;
                
        return array(
            
'sql' => $sql.' ORDER BY '.$this->option['sort'].' '.$this->option['order'],
            
'sql_count' => $sql_count,
            
'display' => $this->option['display']
        );
    }
    
    private function 
get_pornstar_advs()
    {
        
$this->db->query("SELECT a.adv_id, adv_name
                          FROM #__adv AS a, #__adv_groups AS g
                          WHERE g.adv_group_slug = 'pornstar'
                          AND a.adv_group_id = g.adv_group_id
                          AND a.status = '1'
                          ORDER BY a.adv_name ASC"
);
        
        return 
$this->db->fetch_rows();
    }
    
    private function 
delete_pornstar($model_id)
    {
        
$this->db->query("SELECT ext FROM #__model WHERE model_id = ".$model_id." LIMIT 1");
        if (!
$this->db->affected_rows()) {
            return 
false;
        }
        
        
$ext    $this->db->fetch_field('ext');
    
        
$tables = array('model''model_bio''model_videos''model_views',
                        
'model_comments''model_favorites''model_rating');
        foreach (
$tables as $table) {
            
$this->db->query("DELETE FROM #__".$table." WHERE model_id = ".$model_id);
        }
        
        if (
VModule::enabled('photo')) {
            
$this->db->query("DELETE FROM #__model_albums WHERE model_id = ".$model_id);
        }
        
        
VFile::delete(MEDIA_DIR.'/pornstars/'.$model_id.'.'.$ext);
    }

    private function 
get_checkbox_ids()
    {
          
$ids = array();
        foreach (
$_POST as $key => $value) {
              if (
strpos($key'checkbox_model_') !== FALSE) {
                  
$ids[] = (int) str_replace('checkbox_model_'''$key);
            }
        }
                                                                        
        return 
$ids;
    }                                                                                    
}
Онлайн: 0
Реклама