Файл: 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') ? 1 : 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') ? 1 : 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;
}
}