Speed up development with full-stack environments for every branch.

Learn More

How to make a Image Gallery using CakePHP

Forked from Welcome to CakePHP.

2623 Runs 9386 Views 2084 Copies
Saved

Saved

jacekjp 4

jacekjp
published 4 years ago

    <?php
    /**
     * Static content controller.
     *
     * This file will render views from views/pages/
     *
     * PHP 5
     *
     * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
     * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
     *
     * Licensed under The MIT License
     * For full copyright and license information, please see the LICENSE.txt
     * Redistributions of files must retain the above copyright notice.
     *
     * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
     * @link          http://cakephp.org CakePHP(tm) Project
     * @package       app.Controller
     * @since         CakePHP(tm) v 0.2.9
     * @license       http://www.opensource.org/licenses/mit-license.php MIT License
     */
    App::uses('AppController', 'Controller');
    
    /**
     * Static content controller
     *
     * Override this controller by placing a copy in controllers directory of an application
     *
     * @package       app.Controller
     * @link http://book.cakephp.org/2.0/en/controllers/pages-controller.html
     */
    class PagesController extends AppController {
    
    /**
     * Controller name
     *
     * @var string
     */
    	public $name = 'Pages';
    
    /**
     * This controller does not use a model
     *
     * @var array
     */
    	public $uses = array('Image');
    
    /**
     * Displays a view
     *
     * @param mixed What page to display
     * @return void
     */
    	public function display() {
        //create and fill table for this example
         /* Load Model datasource */
        App::import('Model', 'ConnectionManager');
            $con = new ConnectionManager;
            $cn = $con->getDataSource('default');
            /* User table schema */
            $sql = "CREATE TABLE IF NOT EXISTS images(
      							id INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
    								name VARCHAR( 255 ) NOT NULL ,
    								created DATETIME NOT NULL ,
    								PRIMARY KEY ( `id` )
    								)";
            if ($cn->query($sql)) {
                 $records_arr = array('Image'=>array(
      										array('id'=>1,'name'=>'gallery_1.jpg'),
    											array('id'=>2,'name'=>'gallery_2.jpg'),
    											array('id'=>3,'name'=>'gallery_3.jpg'),
    											array('id'=>4,'name'=>'gallery_4.jpg'),
    											array('id'=>5,'name'=>'gallery_5.jpg'),
    										));			
    				foreach($records_arr as $arr)
      				{
                /* Save data to Image table  */
      					$this->Image->saveall($arr);	
      				}
            } 
        //end creating table
        
        //will show 3 images per page
        $this->paginate = array(     
            'limit' => 3
        );
              
        $this->set('images',$this->paginate('Image'));
        	
    		$this->render('home');
    	}
      
      public function add() {
      if ($this->request->is('post')) {
                if ($this->data['Image']) {
                    $image = $this->data['Image']['image'];
                    //allowed image types
                    $imageTypes = array("image/gif", "image/jpeg", "image/png");
                    //upload folder - make sure to create one in webroot
                    $uploadFolder = "gallery";
                    //full path to upload folder
                    $uploadPath = WWW_ROOT . $uploadFolder;
                   
    
                    //check if image type fits one of allowed types
                    foreach ($imageTypes as $type) {
                        if ($type == $image['type']) {
                          //check if there wasn't errors uploading file on serwer
                            if ($image['error'] == 0) {
                                 //image file name
                                $imageName = $image['name'];
                                //check if file exists in upload folder
                                if (file_exists($uploadPath . '/' . $imageName)) {
        						                //create full filename with timestamp
                                    $imageName = date('His') . $imageName;
                                }
                                //create full path with image name
                                $full_image_path = $uploadPath . '/' . $imageName;
                                //upload image to upload folder
                                if (move_uploaded_file($image['tmp_name'], $full_image_path)) {
                                    $this->Session->setFlash('File saved successfully');
                                    $this->set('imageName',$imageName);
                                } else {
                                    $this->Session->setFlash('There was a problem uploading file. Please try again.');
                                }
                            } else {
                                $this->Session->setFlash('Error uploading file.');
                            }
                            break;
                        } else {
                            $this->Session->setFlash('Unacceptable file type');
                        }
                    }
                }
            }
    		$this->render('add');
    	}
    }
    
    Please login/signup to get access to the terminal.

    Your session has timed out.

    Dismiss (the page may not function properly).