<?php
if(!defined('COPY')){exit('Верни копирайт');}
class Main extends Template
{
function __construct($Template,$db)
{
$this -> db = $db;
}
function open_site($value,$text_close_site,$title,$exit)
{
$Template = Registry::get('Template');
if($value == 0)
{
$Template -> set('{title}','Сайт закрыт');
$Template -> header();
$Template -> remove('{title}');
$Template -> set('{message}', $text_close_site);
$Template -> set('{title}', $title);
$Template -> view(TEMP.'/other/message.tpl');
$Template -> remove('{message}');
$Template -> remove('{title}');
$Template -> footer($exit);
}
}
function upload($file,$dir,$extension,$size,$name,$system)
{
$db = Registry::get('db'); // PDO
$Template = Registry::get('Template'); // шаблонизатор
if(!empty($file))
{
if(in_array($extension, explode(',', $system['true_extension'])))
{
$Template -> set('{error}','Не допустимое расширение');
$Template -> view(TEMP.'/other/error.tpl');
$Template -> footer('yes');
}
if($size > $system['max_size'])
{
$Template -> set('{error}','Не допустимый размер');
$Template -> view(TEMP.'/other/error.tpl');
$Template -> footer('yes');
}
$stmt = $this -> db -> query("SELECT COUNT(*) as `count` FROM `files` WHERE `name` = '".$name."'");
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if($result['count']>0)
// if($this -> db -> query("SELECT COUNT(*) FROM `files` WHERE `name` = '".$name."'", PDO::FETCH_ASSOC)->fetchAll() > 0)
{
$Template -> set('{error}','Такой файл уже существует');
$Template -> view(TEMP.'/other/error.tpl');
$Template -> footer('yes');
}
$insert = $this -> db -> prepare("INSERT INTO `files` (`name`,`time`,`size`) VALUES(?,?,?)");
$insert -> execute(array($name, time(), $size));
if($insert == true)
{
$patch = $dir.$name.'_'.$db -> lastInsertId().'.'.$extension;
move_uploaded_file($file, $patch);
chmod($patch, 0666);
$Template -> set('{title}','Файл успешно добавлен');
foreach($db -> query("SELECT * FROM `files` WHERE `id`='".$db -> lastInsertId()."'") as $sql)
$Template -> set('{message}','
Информация о файле:<br/>
Название: '.Anti_Xac::output($sql['name']).'<br/>
Вес: '.size($sql['size']).'<br/>
Ссылка на файл: <input "type"="text" value="'.URL.'/?m=file&id='.Anti_Xac::num($sql['id']).'"><br/>
» <a href="'.URL.'/?m=file&id='.Anti_Xac::num($sql['id']).'">К Файлу</a>
');
$Template -> view(TEMP.'/other/message.tpl');
$Template -> footer('yes');
}
else
{
$Template -> set('{error}','Произошла ошибка при записи');
$Template -> view(TEMP.'/other/error.tpl');
$Template -> footer('yes');
}
}
}
}
$Main = new Main($Template,$db);
?>
Istsam, а зачем модель, вид, контроллер иметь сразу в 1 классе? Трудно разделить? Сори, но не выдержался.
31 Авг 2011, 10:27manyrus,
это всё в разных файлах.
Контроллер: upload.php
Модель: Main.php
Отображение: message.tpl
$this->templates а разве ты её обьявил что бы наследовать?
так же и с бд которую ты потом хочешь применить
Istsam, тебе же написано, php не может конвертировать в int. Просто ты выполнил query, но не обработал запрос. И, надеюсь, ты фильтруешь всё. А то сомневаюсь я, что переменная $name обработана.
Кинь сюда, что выведет данный код.
$stmt = $this -> db -> query("SELECT COUNT(*) FROM `files` WHERE `name` = '".$name."'");
var_dump($stmt->execute());
manyrus, Уведомление
Undefined property: Main::$db
Файл: Main.php, строка 27
Fatal error: Call to a member function query() on a non-object in X:\home\test1.ru\www\common\autoload\Main.php on line 27
Istsam, нед, в данный момент у тебя ттук(толсты тупой уродливый контролер.)
А именно:
Модель:
$result -> $db -> prepare("INSERT INTO `files` (`name`,`time`,`size`) VALUES(?,?,?)");
$result -> execute(array($name, time(), $size));
//////////////////
$this -> db -> query("SELECT COUNT(*) FROM `files` WHERE `name` = '".$name."'")
Контроллер вообще не должен знать, работает он с дб или на файлах - это дело модели.
view:
$this -> Template -> set('{message}','
Информация о файле:<br/>
Название: '.Anti_Xac::output($sql['name']).'<br/>
Вес: '.size($sql['size']).'<br/>
Ссылка на файл: <input "type"="text" value="'.URL.'/?m=file&id='.Anti_Xac::num($sql['id']).'"><br/>
» <a href="'.URL.'/?m=file&id='.Anti_Xac::num($sql['id']).'">К Файлу</a>
');
Запомни, разметки в контроллере не должно быть разметки.
Istsam, var_dump($this -> db); что выведет?