Wednesday, November 15, 2017

PHP Pagination


HOW to Use:

// Create the pagination object
      $pagination = new pagination($data, (isset($_GET['page']) ? $_GET['page'] : 1), $perpage);
// Decide if the first and last links should show
       $pagination->setShowFirstAndLast(false);
// You can overwrite the default seperator
       $pagination->setMainSeperator('');
// Parse through the pagination class

       $shopPages = $pagination->getResults();

$pageNumbers = '<div class="pagination">' . $pagination->getLinks($_GET) . '</div>';


Class pagination :


class pagination {

    /**
     * Properties array
     * @var array 
     * @access private
     */
    private $_properties = array();

    /**
     * Default configurations
     * @var array 
     * @access public
     */
    public $_defaults = array(
        'page' => 1,
        'perPage' => 10
    );

    /**
     * Constructor
     *
     * @param array $array   Array of results to be paginated
     * @param int   $curPage The current page interger that should used
     * @param int   $perPage The amount of items that should be show per page
     * @return void   
     * @access public 
     */
    public function __construct($array, $curPage = null, $perPage = null) {
        $this->array = $array;
        $this->curPage = ($curPage == null ? $this->defaults['page'] : $curPage);
        $this->perPage = ($perPage == null ? $this->defaults['perPage'] : $perPage);
    }

    /**
     * Global setter
     *
     * Utilises the properties array
     *
     * @param string $name  The name of the property to set
     * @param string $value The value that the property is assigned
     * @return void   
     * @access public 
     */
    public function __set($name, $value) {
        $this->_properties[$name] = $value;
    }

    /**
     * Global getter
     *
     * Takes a param from the properties array if it exists
     *
     * @param string $name The name of the property to get
     * @return mixed Either the property from the internal
     * properties array or false if isn't set
     * @access public 
     */
    public function __get($name) {
        if (array_key_exists($name, $this->_properties)) {
            return $this->_properties[$name];
        }
        return false;
    }

    /**
     * Set the show first and last configuration
     *
     * This will enable the "<< first" and "last >>" style
     * links
     *
     * @param boolean $showFirstAndLast True to show, false to hide.
     * @return void   
     * @access public 
     */
    public function setShowFirstAndLast($showFirstAndLast) {
        $this->_showFirstAndLast = $showFirstAndLast;
    }

    /**
     * Set the main seperator character
     *
     * By default this will implode an empty string
     *
     * @param string $mainSeperator The seperator between the page numbers
     * @return void   
     * @access public 
     */
    public function setMainSeperator($mainSeperator) {
        $this->mainSeperator = $mainSeperator;
    }

    /**
     * Get the result portion from the provided array
     *
     * @return array Reduced array with correct calculated offset
     * @access public
     */
    public function getResults() {
        // Assign the page variable
        if (empty($this->curPage) !== false) {
            $this->page = $this->curPage; // using the get method
        } else {
            $this->page = 1; // if we don't have a page number then assume we are on the first page
        }

        // Take the length of the array
        $this->length = count($this->array);

        // Get the number of pages
        $this->pages = ceil($this->length / $this->perPage);

        // Calculate the starting point
        $this->start = ceil(($this->page - 1) * $this->perPage);

        // return the portion of results
        return array_slice($this->array, $this->start, $this->perPage);
    }

    /**
     * Get the html links for the generated page offset
     *
     * @param array $params A list of parameters (probably get/post) to
     * pass around with each request
     * @return mixed  Return description (if any) ...
     * @access public
     */
    public function getLinks($params = array()) {
        // Initiate the links array
        $plinks = array();
        $links = array();
        $slinks = array();

        // Concatenate the get variables to add to the page numbering string
        $queryUrl = '';
        if (!empty($params) === true) {
            unset($params['page']);
            $queryUrl = '&amp;' . http_build_query($params);
        }
        // If we have more then one pages
        if (($this->pages) > 1) {
            // Assign the 'previous page' link into the array if we are not on the first page
            if ($this->page != 1) {
                if ($this->_showFirstAndLast) {
                    $plinks[] = ' <li><a href="?page=1' . $queryUrl . '">&laquo;&laquo; First </a></li> ';
                }
                $plinks[] = ' <li><a href="?page=' . ($this->page - 1) . $queryUrl . '">&laquo; Prev</a></li> ';
            }

            // Assign all the page numbers & links to the array
            for ($j = 1; $j < ($this->pages + 1); $j++) {
                if ($this->pages > 7) {
                    if ($this->page == $j) {
                        $links[] = ' <li class="active"><a class="selected">' . $j . '</a></li> '; // If we are on the same page as the current item
                    } else {
                        if ($this->page <= 4) {
                            if ($j <= 5) {
                                $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                                if ($j == 5) {
                                    $links[] = '<li class="paginate_button disabled" id="dataTable_ellipsis"><a href="#" aria-controls="dataTable" data-dt-idx="6" tabindex="0">…</a></li>';
                                }
                            }
                            if ($j == $this->pages) {
                                $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                            }
                        }
                        if (($this->page > 4) && ($this->page < ($this->pages - 3))) {
                            if ($j == 1) {
                                $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                            }
                            if ($j == ($this->page - 1)) {
                                $links[] = '<li class="paginate_button disabled" id="dataTable_ellipsis"><a href="#" aria-controls="dataTable" data-dt-idx="6" tabindex="0">…</a></li>';
                                $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                            }
                            if ($j == ($this->page + 1)) {
                                $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                                $links[] = '<li class="paginate_button disabled" id="dataTable_ellipsis"><a href="#" aria-controls="dataTable" data-dt-idx="6" tabindex="0">…</a></li>';
                            }
                            if ($j == $this->pages) {
                                $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                            }
                        }
                        if (($this->page >= ($this->pages - 3))) {
                            if (($j >= ($this->pages - 4))) {
                                $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                            }
                            if ($j == 1) {
                                $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                                $links[] = '<li class="paginate_button disabled" id="dataTable_ellipsis"><a href="#" aria-controls="dataTable" data-dt-idx="6" tabindex="0">…</a></li>';
                            }
                        }
                    }
                } else {
                    if ($this->page == $j) {
                        $links[] = ' <li class="active"><a class="selected">' . $j . '</a></li> '; // If we are on the same page as the current item
                    } else {
                        $links[] = ' <li><a href="?page=' . $j . $queryUrl . '">' . $j . '</a></li> '; // add the link to the array
                    }
                }
            }

            // Assign the 'next page' if we are not on the last page
            if ($this->page < $this->pages) {
                $slinks[] = ' <li><a href="?page=' . ($this->page + 1) . $queryUrl . '"> Next &raquo; </a></li> ';
                if ($this->_showFirstAndLast) {
                    $slinks[] = ' <li><a href="?page=' . ($this->pages) . $queryUrl . '"> Last &raquo;&raquo; </a></li> ';
                }
            }

            // Push the array into a string using any some glue
            return implode(' ', $plinks) . implode($this->mainSeperator, $links) . implode(' ', $slinks);
        }
        return;
    }

}

Wednesday, September 20, 2017

PHP Demo For- image resize while uploading

/******* This code is for converting height with of jpeg, jpg, png and gif image*********
<?php
function makeName($text) {
    // replace non letter or digits by -
    $text = preg_replace('~[^\\pL\d]+~u', '-', $text);
    $text = trim($text, '-');
    $text = strtolower($text);
    $text = preg_replace('~[^-\w]+~', '', $text);
    if (strlen($text) > 70) {
        $text = substr($text, 0, 70);
    }
    if (empty($text)) {
        return time();
    }
    return $text;
}

if (isset($_FILES['files']) && !empty($_FILES['files'])) {
    $errors = array();
    if (isset($_FILES['files']['tmp_name'][0]) && $_FILES['files']['tmp_name'][0]) {
        foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
       
            $file = pathinfo($file_name);
            $extension = strtolower($file['extension']);
            $new_name = makeName($file['filename'] . date('d-m-Y h:i:s')) . "." . $extension;

            //****This code is for converting height with of Jpeg, Jpg, Png and Gif image
            $desired_dir = "../../../data/images/";

            if (is_dir($desired_dir) == false) {
                mkdir("$desired_dir", 0700);  // Create directory if it does not exist
            }
            $filepath = $desired_dir . $new_name;


            $uploadedfile = $_FILES['files']['tmp_name'][$key];

            list($width, $height) = getimagesize($uploadedfile);

            if (($width > 1024) || $height > 768 || ($file_size > 300000)) {

                if ($width > 1024) {
                    $newwidth = 1024;
                    $newheight = ($height / $width) * $newwidth;
                } else if ($height > 768) {
                    $newheight = 768;
                    $newwidth = ($width / $height) * $newheight;
                } else {
                    $newwidth = $width;
                    $newheight = $height;
                }

                if ($extension == "jpg" || $extension == "jpeg" || $extension == "JPG" || $extension == "JPEG") {
                    $src = imagecreatefromjpeg($uploadedfile);
                } else if ($extension == "png" || $extension == "PNG") {
                    $src = imagecreatefrompng($uploadedfile);
                } else {
                    $src = imagecreatefromgif($uploadedfile);
                }

                $tmp = imagecreatetruecolor($newwidth, $newheight);

//                imagecolortransparent($tmp, imagecolorallocatealpha($tmp, 0, 0, 0, 127));
//                imagealphablending($tmp, false);
//                imagesavealpha($tmp, true);

                imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);



                if ($file_size > 300000) {
                    if ($extension == "jpg" || $extension == "jpeg" || $extension == "JPG" || $extension == "JPEG") {
                        imagejpeg($tmp, $filepath, 70);
                    } else if ($extension == "png" || $extension == "PNG") {
                        imagepng($tmp, $filepath, 7);
                    } else {
                        imagegif($tmp, $filepath);
                    }
                } else {
                    if ($extension == "jpg" || $extension == "jpeg" || $extension == "JPG" || $extension == "JPEG") {
                        imagejpeg($tmp, $filepath, 90);
                    } else if ($extension == "png" || $extension == "PNG") {
                        imagepng($tmp, $filepath);
                    } else {
                        imagegif($tmp, $filepath);
                    }
                }

                imagedestroy($src);
                imagedestroy($tmp);
            } else {
                if (is_dir($filepath) == false) {
                    move_uploaded_file($file_tmp, $filepath);
                } else {         // rename the file if another one exist
                    $new_dir = $filepath;
                    rename($file_tmp, $new_dir);
                }
            }
            $size = filesize($filepath);
         
        }
     
    } else {
        echo "Please, Upload atlist one file";
    }
}
?>

Product Category Demo in laravel

https://drive.google.com/file/d/1kuyeT3LA22IuN3o_kypOyXesEXMLv31e/view?usp=sharing