View file modules/comments/controllers/comments.php

File size: 4.03Kb
<?php
/**
 * Ant0ha's project
 *
 * @package
 * @author Anton Pisarenko <[email protected]>
 * @copyright Copyright (c) 2006 - 2010, Anton Pisarenko
 * @license http://ant0ha.ru/license.txt
 * @link http://ant0ha.ru
 */

defined('IN_SYSTEM') or die('<b>403<br />Запрет доступа!</b>');

//---------------------------------------------

/**
 *  Контроллер пользовательской части модуля комментариев
 */
class Comments_Controller extends Controller {
	/**
	* Уровень пользовательского доступа
	*/
	public $access_level = 0;

	/**
	* Метод по умолчанию
	*/
	public function action_index() {
		$this->action_list_comments();
	}

	/**
	* Список комментариев
	*/
	public function action_list_comments() {
		if(empty($_GET['module']) || empty($_GET['item_id']))
			a_error("Не указан модуль либо деталь");

    	if(!empty($_POST['comment'])) {
            a_antiflud();
			if(ACCESS_LEVEL < 5) a_error('Оставлять комментарии могут только авторизованные пользователи!');
            $this->db->query("INSERT INTO #__comments_posts SET
            	`item_id` = '". intval($_GET['item_id']) ."',
            	`module` = '". a_safe($_GET['module']) ."',
            	`user_id` = '". USER_ID ."',
            	`text` = '". a_safe($_POST['comment']) ."',
            	`time` = '". time() ."'
            ");
		}

		# Листинг комментариев
		# Получение данных
  		$sql = "SELECT SQL_CALC_FOUND_ROWS cp.*, u.username, u.status AS user_status, up.avatar AS avatar_exists, u.last_visit
					FROM #__comments_posts AS cp
       				LEFT JOIN #__users AS u USING(user_id)
       				LEFT JOIN #__users_profiles AS up USING(user_id)
       				WHERE
       				cp.module = '". a_safe(@$_GET['module']) ."' AND
       				cp.item_id = ". intval($_GET['item_id']);

		$sql .= " ORDER BY cp.comment_id ASC LIMIT $this->start, $this->per_page";

        $result = $this->db->query($sql);

        if(!class_exists('smiles')) a_import('modules/smiles/helpers/smiles');
        $comments = array();
		while($comment = $this->db->fetch_array($result)) {
			# Форматируем текст комментария
            $comment['text'] = smiles::smiles_replace($comment['text']);
            $comment['text'] = main::bbcode($comment['text']);
            $comment['text'] = nl2br($comment['text']);

        	$comments[] = $comment;
        }

  		$total = $this->db->get_one("SELECT FOUND_ROWS()");

		# Пагинация
        $pg_conf['base_url'] = a_url('comments', 'module='. @$_GET['module'] .'&amp;item_id='. @$_GET['item_id'] .'&amp;return='. @$_GET['return'] .'&amp;start=');
		$pg_conf['total_rows'] = $total;
		$pg_conf['per_page'] = $this->per_page;

		a_import('libraries/pagination');
		$pg = new CI_Pagination($pg_conf);

		$this->tpl->assign(array(
			'comments' => $comments,
			'total' => $total,
			'pagination' => $pg->create_links()
		));

		$this->tpl->display('list_comments');
	}

	/**
	* Удаление комментария
	*/
	public function action_comment_delete() {
		if(!empty($_GET['confirm'])) {
			$this->db->query("DELETE FROM #__comments_posts WHERE comment_id = '". intval($_GET['comment_id']) ."'");
  			a_notice('Комментарий успешно удален!', a_url('comments', 'module='. @$_GET['module'] .'&amp;item_id='. @$_GET['item_id'] .'&amp;module_name='. @$_GET['module_name']));
		}
		else {
			a_confirm('Подтверждаете удаление данного комментария?', a_url('comments/comment_delete', 'comment_id='. $_GET['comment_id'] .'&amp;confirm=ok&amp;module='. @$_GET['module'] .'&amp;item_id='. @$_GET['item_id'] .'&amp;module_name='. @$_GET['module_name']),
				a_url('comments', 'module='. @$_GET['module'] .'&amp;item_id='. @$_GET['item_id'] .'&amp;module_name='. @$_GET['module_name'])
			);
		}
	}
}
?>