Your IP : 216.73.217.176


Current Path : /home/azimutno/www/demo/libraries/nextend/smartslider/admin/models/
Upload File :
Current File : /home/azimutno/www/demo/libraries/nextend/smartslider/admin/models/slides.php

<?php
/*
# author Roland Soos
# copyright Copyright (C) Nextendweb.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-3.0.txt GNU/GPL
*/
defined('_JEXEC') or die('Restricted access'); ?><?php

nextendimport('nextend.mvc.model');
nextendimport('nextend.database.database');

class NextendSmartsliderAdminModelSlides extends NextendModel {

    function getSlide($id) {
        $db = NextendDatabase::getInstance();
        $db->setQuery('SELECT * FROM #__nextend_smartslider_slides WHERE id = '.$db->quote($id));
        return $db->loadAssoc();
    }

    function getSlides($sliderid = 0, $where = '') {
        $db = NextendDatabase::getInstance();
        $db->setQuery('SELECT * FROM #__nextend_smartslider_slides WHERE slider = '.$db->quote($sliderid).' '.$where.' ORDER BY ordering');
        return $db->loadAssocList();
    }

    function getMaxOrdering($sliderid = 0) {
        $db = NextendDatabase::getInstance();
        $db->setQuery('SELECT MAX(ordering) AS ordering FROM #__nextend_smartslider_slides WHERE slider = '.$db->quote($sliderid));
        $result = $db->loadAssoc();
        if(isset($result['ordering'])) return $result['ordering'];
        return 0;
    }
    
    function renderAddForm($data = array()) {
        $this->editForm($data);
    }

    function renderEditForm($id = 0) {
        if ($id == 0) $this->redirectToCreate();

        $slide = $this->getSlide($id);
        if($slide === null) $this->redirectToCreate();
        
        $data = json_decode($slide['params'], true);
        if($data == null) $data = array();
        $data += $slide;
        $data['sliderid'] = $slide['slider'];
        $this->editForm($data);
        echo '<input name="slide[generator]" value="'.$slide['generator'].'" type="hidden" />';
    }

    function editForm($data = array()) {
        
        $css = NextendCss::getInstance();
        $js = NextendJavascript::getInstance();

        $css->addCssLibraryFile('common.css');
        $css->addCssLibraryFile('window.css');
        $css->addCssLibraryFile('configurator.css');

        $configurationXmlFile = dirname(__FILE__) . '/forms/slide.xml';
        $js->loadLibrary('dojo');

        nextendimport('nextend.form.form');
        $form = new NextendForm();
        
        $data['publishdates'] = isset($data['publishdates']) ? $data['publishdates'] : ((isset($data['publish_up']) ? $data['publish_up'] : '').'|*|'.(isset($data['publish_down']) ? $data['publish_down'] : ''));
        $form->loadArray($data);

        $form->loadXMLFile($configurationXmlFile);

        echo $form->render('slide');
    }

    function create($sliderid, $slide, $base64 = true) {
        if (!isset($slide['title']))
            return false;
        if($slide['title'] == '') $slide['title'] = 'New slide';

        $db = NextendDatabase::getInstance();

        $query = 'INSERT INTO #__nextend_smartslider_slides (title, slide, description, thumbnail, background, published, publish_up, publish_down, first, generator, params, slider, ordering) VALUES (';

        $query.=$db->quote($slide['title']);
        $query.=','.$db->quote($base64 ? base64_decode($slide['slide']) : $slide['slide']);
        $query.=','.$db->quote($slide['description']);
        $query.=','.$db->quote($slide['thumbnail']);
        $query.=','.$db->quote($slide['background']);
        $query.=','.$db->quote(isset($slide['published']) ? $slide['published'] : 0);
        if(isset($slide['publishdates'])){
            $date = explode('|*|',$slide['publishdates']);
        }else{
            $date[0] = $slide['publish_up'];
            $date[1] = $slide['publish_down'];
            unset($slide['publish_up']);
            unset($slide['publish_down']);
        }
        $up = strtotime(isset($date[0]) ? $date[0] : '');
        $query.=','.$db->quote(date('Y-m-d H:i:s', ($up && $up > 0 ? $up : strtotime('-1 day'))));
        $down = strtotime(isset($date[1]) ? $date[1] : '');
        $query.=','.$db->quote(date('Y-m-d H:i:s', ($down && $down > 0 ? $down : strtotime('+10 years'))));
        
        $query.=','.$db->quote(isset($slide['first']) ? $slide['first'] : 0);
        $query.=','.$db->quote(isset($slide['generator']) ? $slide['generator'] : 0);
        
        
        unset($slide['title']);
        unset($slide['slide']);
        unset($slide['description']);
        unset($slide['thumbnail']);
        unset($slide['background']);
        unset($slide['published']);
        unset($slide['first']);
        unset($slide['generator']);
        unset($slide['publishdates']);
        
        
        $query.=','.$db->quote(json_encode($slide));
        
        $query.=',' . $db->quote($sliderid);
        $query.=',' . ($this->getMaxOrdering($sliderid)+1);
        $query.=');';
        $db->setQuery($query);
        $db->query();
        return $db->insertid();
    }
    
    function save($id, $slide, $base64 = true){
        if (!isset($slide['title']) || $id <= 0)
            return false;
        if($slide['title'] == '') $slide['title'] = 'New slide';
        $db = NextendDatabase::getInstance();
        
        $query = 'UPDATE #__nextend_smartslider_slides SET ';
        
        $query.=' title='.$db->quote($slide['title']);
        $query.=',slide='.$db->quote($base64 ? base64_decode($slide['slide']) : $slide['slide']);
        $query.=',description='.$db->quote($slide['description']);
        $query.=',thumbnail='.$db->quote($slide['thumbnail']);
        $query.=',background='.$db->quote($slide['background']);
        $query.=',published='.$db->quote($slide['published']);
        
        if(isset($slide['publishdates'])){
            $date = explode('|*|',$slide['publishdates']);
        }else{
            $date[0] = $slide['publish_up'];
            $date[1] = $slide['publish_down'];
            unset($slide['publish_up']);
            unset($slide['publish_down']);
        }
        $up = strtotime(isset($date[0]) ? $date[0] : '');
        $query.=',publish_up='.$db->quote(date('Y-m-d H:i:s', ($up && $up > 0 ? $up : strtotime('-1 day'))));
        $down = strtotime(isset($date[1]) ? $date[1] : '');
        $query.=',publish_down='.$db->quote(date('Y-m-d H:i:s', ($down && $down > 0 ? $down : strtotime('+10 years'))));
        unset($slide['title']);
        unset($slide['slide']);
        unset($slide['description']);
        unset($slide['thumbnail']);
        unset($slide['published']);
        unset($slide['background']);
        unset($slide['publishdates']);
        unset($slide['generator']);
        
        $query.=',params='.$db->quote(json_encode($slide));
        
        $query.=' WHERE id = '.$db->quote($id);
        $db->setQuery($query);
        $db->query();
        return $id;
    }
    
    function delete($id){
        $db = NextendDatabase::getInstance();
        $db->setQuery('DELETE FROM #__nextend_smartslider_slides WHERE id='.$db->quote($id));
        $db->query();
    }

    function duplicate($id, $sliderid = null){
        $slide = $this->getSlide($id);
        unset($slide['id']);
        $slide['published'] = 0;
        $slide['title'].= ' - copy';
        return $this->create($slide['slider'], $slide, false);
    }
    
    function first($sliderid, $id){
        $db = NextendDatabase::getInstance();
        $db->setQuery('UPDATE #__nextend_smartslider_slides SET first = 0 WHERE slider='.$db->quote($sliderid));
        $db->query();
        
        $db->setQuery('UPDATE #__nextend_smartslider_slides SET first = 1 WHERE id='.$db->quote($id));
        $db->query();
    }
    
    function publish($id){
        $db = NextendDatabase::getInstance();
        $db->setQuery('UPDATE #__nextend_smartslider_slides SET published = 1 WHERE id='.$db->quote($id));
        $db->query();
    }
    
    function unpublish($id){
        $db = NextendDatabase::getInstance();
        $db->setQuery('UPDATE #__nextend_smartslider_slides SET published = 0 WHERE id='.$db->quote($id));
        $db->query();
    }
    
    function deleteBySlider($sliderid){
        $db = NextendDatabase::getInstance();
        $db->setQuery('DELETE FROM #__nextend_smartslider_slides WHERE slider = '.$db->quote($sliderid));
        $db->query();
    }

    function deleteGeneratedBySlider($sliderid){
        $db = NextendDatabase::getInstance();
        $db->setQuery('DELETE FROM #__nextend_smartslider_slides WHERE generator > 0 AND slider = '.$db->quote($sliderid));
        $db->query();
    }
    
    function order($sliderid, $ids){
        if(is_array($ids) && count($ids) > 0){
            $db = NextendDatabase::getInstance();
            $i = 0;
            foreach($ids AS $id){
                $id = intval($id);
                if($id > 0){
                    $query = 'UPDATE #__nextend_smartslider_slides SET ';

                    $query.=' ordering='.$db->quote($i);

                    $query.=' WHERE id = '.$db->quote($id). ' AND slider = '.$db->quote($sliderid);
                    $db->setQuery($query);
                    $db->query();
                    $i++;
                }
            }
            return $i;
        }
        return false;
    }
}