<?php 
 
class commentsModel extends A_Model { 
         
    protected $dbh = null; 
     
    public function __construct($db){ 
        $this->dbh = $db; 
        $this->addField(new A_Model_Field('id')); 
        $this->addField(new A_Model_Field('author')); 
        $this->addField(new A_Model_Field('author_email')); 
        $this->addField(new A_Model_Field('author_url')); 
        $this->addField(new A_Model_Field('users_id')); // FK to users id         
        $this->addField(new A_Model_Field('comment_date')); 
        $this->addField(new A_Model_Field('comment')); 
        $this->addField(new A_Model_Field('approved')); 
        $this->addField(new A_Model_Field('posts_id')); // FK to posts id 
         
        $this->addRule(new A_Rule_Length(2, 25, 'author', 'The author name must be between 2 to 25 characters'), 'author');  
        $this->addRule(new A_Rule_Email('author_email', 'This is not a valid email adress'), 'author_email'); 
        $this->addRule(new A_Rule_Url('author_url', 'This is not a valid URL'), 'author_url'); 
        $this->addRule(new A_Rule_Length(2, 500, 'comment', 'The comment must be between 2 to 500 characters'), 'comment');  
    } 
 
    public function save($data){  
        // if doesn't exist yet create 
        if(!$this->get('id')){ 
            $sql = "INSERT INTO 
                    `blog_comments` 
                    ( 
                        `author`, 
                        `author_email`, 
                        `author_url`, 
                        `users_id`, 
                        `comment_date`, 
                        `comment`, 
                        `approved`, 
                        `posts_id` 
                    ) VALUES ( 
                        :author, 
                        :author_email, 
                        :author_url, 
                        :users_id, 
                        :comment_date, 
                        :comment, 
                        :approved, 
                        :posts_id 
                    ) 
                    "; 
            $result = $this->dbh->query($sql, array( 
                ':author' => $data['author'], 
                ':author_email' => $data['author_email'], 
                ':author_url' => $data['author_url'], 
                ':users_id' => $data['users_id'], 
                ':comment_date' => $data['comment_date'], 
                ':comment' => $data['comment'], 
                ':approved' => $data['approved'], 
                ':posts_id' => $data['posts_id'] 
            )); 
            return $result; 
        } else { 
            // update 
            $sql = "UPDATE `blog_comments` 
                    SET 
                        `author` = :author, 
                        `author_email` = :author_email, 
                        `author_url` = :author_url, 
                        `users_id` = :users_id, 
                        `comment_date` = :comment_date, 
                        `comment` = :comment, 
                        `approved` = :approved, 
                        `posts_id` = :posts_id 
                    WHERE 
                        `id` = :id"; 
            $result = $this->dbh->query($sql, array( 
                ':author' => $data['author'], 
                ':author_email' => $data['author_email'], 
                ':author_url' => $data['author_url'], 
                ':users_id' => $data['users_id'], 
                ':comment_date' => $data['comment_date'], 
                ':comment' => $data['comment'], 
                ':approved' => $data['approved'], 
                ':posts_id' => $data['posts_id'], 
                ':id' => $data['id'] 
            )); 
            return $result; 
        }  
    } 
     
    public function find($id){ 
        $sql = "SELECT  
                    `id`,  
                    `author`,  
                    `author_email`,  
                    `author_url`,  
                    `users_id`,  
                    `comment_date`, 
                    `comment`, 
                    `approved`, 
                    `posts_id` 
                FROM  
                    `blog_comments` 
                WHERE 
         
                    `id` = $id 
     
                "; 
 
        $comments = $this->dbh->query($sql); 
        if(!$comments->isError()){ 
            $rows = array(); 
            while($row = $comments->fetchRow()){ 
                $rows[] = $row; 
            } 
            return $rows; 
        } else { 
            $this->setErrorMsg(1, $comments->getErrorMsg()); 
        } 
    } 
     
    public function findBy($someArgs){} 
    public function delete($id){} 
     
     
    function findByPost($id){ 
 
        $sql = "SELECT  
                    c.`id` as 'comment_id', c.`comment_date`, c.`author`, c.`author_email`, c.`author_url`, c.`comment` 
                FROM  
                    `blog_comments` c 
                WHERE 
                    c.`posts_id` = $id 
                AND 
                    c.`approved` = '1' 
                "; 
        $posts = $this->dbh->query($sql); 
        $rows = array(); 
        while($row = $posts->fetchRow()){ 
            $rows[] = $row; 
        } 
        return $rows; 
    } 
     
}
 
 |