Отправляет email-рассылки с помощью сервиса Sendsay

Еженедельник сайтостроителя

  Все выпуски  

Флуд #6



Флуд #6
2012-03-17 18:09 Noisy Wizard

Продолжаем рефакторить накопленный код. Во-первых, хочу сказать – никогда так не пишите) Нет, серьезно, в классе, который я вам сейчас покажу есть недостатки, и ваша задача их определить. Если вы их не видите, то вам срочно нужно пополнить свои знания в ООП. Для этого почитайте, например Зандстра Мэтт «PHP. Объекты, шаблоны и методики программирования. – 2010». Перевод убогий, но читать можно, если под шаблонами подразумевать паттерны.

Поехали. Библиотека /lib/db_types.php

class TEComment {
    public $id;
    public $authorName;
    public $authorEmail;
    public $authorId;
    public $articleId;
    public $text;
    public $date;
 
    function __construct($id=false, $authorName=false,$authorEmail=false, 
        $authorId=false,$articleId=false,$text=false,$date=false) {
        if ($id)
        {
            $this->id = intval($id);
            $result = mysql_query('
                SELECT * FROM '.PREFIX.'comment WHERE id = "'.$this->id.'"') 
                or die(mysql_error());
            $comment=mysql_fetch_assoc($result);
 
            $this->authorName    = $comment['author'];
            $this->authorEmail   = $comment['email'];
            $this->authorId      = $comment['author_id'];
            $this->articleId     = $comment['article_id'];
            $this->text          = $comment['content'];
            $this->date          = $comment['stamp'];
        }
        else
        {
            $this->authorName    = mysql_escape_string(htmlspecialchars($authorName));
            $this->authorEmail   = mysql_escape_string(htmlspecialchars($authorEmail));
            $this->authorId      = intval($authorId);
            $this->articleId     = intval($articleId);
            $this->text          = mysql_escape_string(htmlspecialchars($text));
            $this->date          = mysql_escape_string(htmlspecialchars($date));
         }
     }
 
    public function addRecord()  {
        //выбираем комментарии к данной статье с таким же текстом
        $res = mysql_query('
                SELECT * FROM '.PREFIX.'comment WHERE 
                content = "'.$this->text.'"
                AND article_id = "'.$this->articleId.'" ORDER BY id'
        ) or die(mysql_error());
 
        if (
                mysql_num_rows($res) < 1 &&
                $this->text !== '' &&
                strlen($this->text) < 2048
           ) 
        {
            if ($this->authorName == '') $this->authorName = 'UFO';
            $sql = mysql_query('INSERT  into '.PREFIX.'comment (
                    article_id, 
                    author_id, 
                    email, 
                    author, 
                    content, 
                    date
                )
                values (
                    "'.$this->articleId.'",
                    "'.$this->authorId.'",
                    "'.$this->authorEmail.'",
                    "'.$this->authorName.'",
                    "'.$this->text.'",
                    "'.$this->date.'"
                );'
            )or die(mysql_error());
            if ($sql) return true;
            else return false;
        }
    }
    public function delRecord()  {
        if (
            (isset($_SESSION['author_id'])&&($_SESSION['author_id'] == $this->authorId)) || 
                @$_SESSION['status'] == 'admin')
        {    
            $sql_del = mysql_query('DELETE FROM '.PREFIX.'comment 
                WHERE id="'.$this->id.'"')  or die(mysql_error());
        }
        if ($sql_del) return true;
        else return false;
    }
}

В последствии, я надеюсь, этот класс будет видоизменяться, если появятся другие.

P.S. Оно же https://github.com/noisywiz/tractor/blob/master/_engine/lib/db_types.php




Флуд #7
2012-03-20 21:09 Noisy Wizard

Все, не могу больше это читать, держусь за живот от смеха))) Нет, ну серьезно, последнее время все чаще вижу ссылки на блог и обсуждения трактора как какого-то большого программного продукта) Человек видит код, который впервые заставил вывести запись из БД на экран, и делает заключение, что я неправильно учу бедных несчастных начинающих программистов)))

Я, конечно, понимаю, без контекста трудно понять идею, но и защищать меня тоже особенно не нужно, ребят) Я не учу, я показываю свой ход мысли, и он, этот ход, почти наверняка неправильный по большей части, я ведь учусь как и вы. Велосипед не сразу становится продуктом для всех. Сейчас это продукт для меня и, может быть, для тех кто хорошо в нем может разобраться. Но каждый программист проходит этап велосипедописания, и у каждого он будет свой, или хобби так и останется хобби.

И да, я в курсе что трактор слабо разделяет логику и представление)))) У нас админка – одна сплошная логика, но это не значит что она не должна работать или будет такой кривой до конца жизни) Фьююф, отвел душу, надо картинку к посту поискать.




В избранное