مشروع Photos Gallery بل PHP الجزء الثالث

مشروع Photos Gallery بل PHP الجزء الثالث


فهاد الجزء الثالث من المشروع ديالنا غادي نكملو الملفات لي غادي يمكنو من التعامل مع المعلومات الخاصة بالمستخدم الصور وكذلك التعليقات وغادي نزيدو واحد الملف لي غادي يتكلف بعرض عدد محدود من الصور والتنقل بين صفحات العرض.

نظرة سريعة بالفيديو

- الملف user.php

دائما فالمجلد admin/includes كنزيد ملف كنسميه user.php هاد الملف هو لي كيتضمن المعلومات الخاصة بالمستخدم بالإضافة لfonction save لي كنمكن من تعديل المستخدم فحالة وجود id أو إضافة مستخدم فحالة غياب لid و أيضا لfonction image_path_and_placeholder لي كترجع الصورة ديال المستخدم الكود ديال الملف هو :

                                <?php

/**
 * 
 */
class User extends Db_object
{
    protected static $table = "users";
    protected static $db_fields = array('pseudo','nom','prenom','passe','filename');
    public $id;
    public $pseudo;
    public $nom;
    public $prenom;
    public $passe;
    public $filename;
    public $upload_directory = "images";
    public $image_placeholder = "https://placeholdit.imgix.net/~text?txtsize=33&txt=62%C3%9762&w=62&h=62";
    public function save(){
        return isset($this->id) ? $this->update() : $this->create();
    }
    public function image_path_and_placeholder(){
        return empty($this->filename) ? $this->image_placeholder: $this->upload_directory.DS.$this->filename;
    }
}

                            

- الملف photo.php

دائما فالمجلد admin/includes كنزيد ملف كنسميه photo.php هاد الملف هو لي كيتضمن المعلومات الخاصة بالصورة بالإضافة لfonction delete_photo لي كتمكن من حذف صورة مختارة و أيضا لfonction picture_path لي كترجع الإسم ديال الصورة الكود ديال الملف هو :

                                <?php

/**
 * 
 */
class Photo extends Db_object
{
    protected static $table = "photos";
    protected static $db_fields = array('photo_id','title','description','filename','type','size');
    public $id;
    public $title;
    public $description;
    public $filename;
    public $type;
    public $size;
    public $tmp_path;
    public $upload_directory = "images";
    public $errors = array();
    public $upload_errors_array = array(
        0=>"Fichier envoyé avec succés", 
        1=>"La taille du fichier dépasse la taille maximale autorisée", 
        2=>"La taille du fichier dépasse la taille maximale indiquée dans le formulaire" ,
        3=>"Le fichier est partiellement téléchargé", 
        4=>"Aucun fichier téléchargé", 
        6=>"Dossier temporaire introuvable" 
    );
    public function picture_path(){
        return $this->upload_directory.DS.$this->filename;
    }
    public function delete_photo(){
        if($this->delete()){
            $target_path = SITE_ROOT.DS.'admin'.DS.$this->picture_path();
            return unlink($target_path) ? true : false;
        }else{
            return false;
        }
    }
}

                            

- الملف comment.php

دائما فالمجلد admin/includes كنزيد ملف كنسميه comment.php هاد الملف هو لي كيتضمن المعلومات الخاصة بالتعليق وصاحب التعليق بالإضافة لfonction create_comment لي فقط كتربط لvariables بvaleurs ديالهم وترجع التعليق لي منبعد كيتزاد فقاعدة البيانات بواسطة لfonction save و أيضا لfonction find_photo_commentsلي كترجع التعليقات ديال كل صورة الكود ديال الملف هو :

                                <?php

/**
 * 
 */
class Comment extends Db_object
{
    protected static $table = "comments";
    protected static $db_fields = array('id','photo_id','user_id','comment','date');
    public $id;
    public $photo_id;
    public $user_id;
    public $comment;
    public $date;
    public static function create_comment($photo_id,$user_id,$comment){
        if(!empty($photo_id)  && !empty($user_id) && !empty($comment)){
            $new_comment = new Comment();
            $new_comment->photo_id = $photo_id;
            $new_comment->user_id = $user_id;
            $new_comment->comment = $comment;
            $new_comment->date = date("Y-m-d h:m:s");
            return $new_comment;
        }else{
            return false;
        }
    } 
    public static function find_photo_comments($photo_id = 0){
        $sql = "SELECT * FROM ".static::$table." WHERE photo_id = $photo_id";
        $result =  static::find_this_query($sql);
        return !empty($result) ? ($result) : false;
    }   
    public function save(){
        if($this->create()){
            return true;
        }
    }
}

                            

- الملف pagination.php

دائما فالمجلد admin/includes كنزيد ملف كنسميه pagination.php هاد الملف هو لي غادي يمكنا من عرض عدد محدود من الصور والتنقل بين صفحات العرض الكود ديال الملف هو :

                                    <?php

/**
 * 
 */
class Pagination
{
    public $current_page;
    public $item_per_page;
    public $count_total_items;



    public function __construct($page = 1,$perpage = 4,$count_total_items = 0){
        $this->current_page = (int)$page;
        $this->item_per_page = (int)$perpage;
        $this->count_total_items = (int)$count_total_items;
    }
    public function next(){
        return $this->current_page + 1;
    }
    public function previous(){
        return $this->current_page - 1;
    }
    public function page_total(){
        return ceil($this->count_total_items / $this->item_per_page);
    }
    public function hasNext(){
        return $this->next() <= $this->page_total() ? true : false;
    }
    public function hasPrevious(){
        return $this->previous() >= 1 ? true : false;
    }
    public function offset(){
        return ($this->current_page - 1) * $this->item_per_page;
    }
}

                                

- الملف ajax_code.php

دائما فالمجلد admin/includes كنزيد ملف كنسميه ajax_code.php هاد الملف هو لي غادي يمكنا من عرض المعلومات الخاصة بكل صورة بإستعمال ajax الكود ديال الملف هو :

                                    <?php
require ("init.php");

if(isset($_POST['image_id'])){
   $photo = Photo::find_by_id(trim($_POST['image_id']));
   $output = "<a href='' class='thumbnail'><img src='admin/{$photo->picture_path()}' class'thumbnail img-responsive' width='100' alt=''></a>";
   $output.= "<p>Nom: {$photo->filename}</p>";
   $output.= "<p>Type :{$photo->type}</p>";
   $output.= "<p>Taille :{$photo->size}</p>";
   echo $output;
}
                                


بحث في الموقع


إشترك للتوصل بالجديد