Your IP : 216.73.216.89


Current Path : /home/azimutno/www/demo/libraries/nextend/smartslider/admin/models/
Upload File :
Current File : /home/azimutno/www/demo/libraries/nextend/smartslider/admin/models/sliders.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');
nextendimport('nextend.parse.parse');

class NextendSmartsliderAdminModelSliders extends NextendModel {

    function getSlider($id) {
        if ($id === -1) return $this->getLayoutSlider();
        $db = NextendDatabase::getInstance();
        $db->setQuery('SELECT * FROM #__nextend_smartslider_sliders WHERE id = ' . $db->quote($id));
        return $db->loadAssoc();
    }

    function getLayoutSlider() {
        return array(
            'id' => -1,
            'title' => 'Test',
            'type' => 'simple',
            'generator' => null,
            'slide' => null,
            'params' => '{"size":"' . NextendSmartSliderLayoutSettings::get('size', '700|*|300') . '|*|1","responsive":"0|*|0","globalfontsize":"14","margin":"0|*|0|*|0|*|0|*|px","accordionhorizontalskins":"","accordionhorizontalborder":"6|*|3E3E3Eff|*|6|*|222222ff","accordionhorizontalborderradius":"6|*|6|*|6|*|6","accordionhorizontaltabbg":"3E3E3E","accordionhorizontaltabbgactive":"87B801","accordionhorizontalthemeclass":"dark","accordionhorizontaltabfont":"{\"firsttab\":\"Text\",\"Text\":{\"color\":\"e4eaeeff\",\"size\":\"112||%\",\"tshadow\":\"0|*|1|*|0|*|000000FF\",\"afont\":\"google(@import url(http:\/\/fonts.googleapis.com\/css?family=Open Sans);),Arial\",\"lineheight\":\"normal\",\"bold\":1,\"italic\":0,\"underline\":0,\"align\":\"right\",\"paddingleft\":0},\"Active\":{\"paddingleft\":0,\"color\":\"222222ff\",\"tshadow\":\"0|*|1|*|0|*|ffffff3d\"},\"Link\":{\"paddingleft\":0},\"Hover\":{\"paddingleft\":0,\"color\":\"222222ff\",\"tshadow\":\"0|*|1|*|0|*|ffffffff\"},\"firsttab\":\"Text\"}","accordionhorizontalduration":"1000","accordionhorizontaleasing":"easeInCubic","mainafterout":"1","inaftermain":"1","controls":"0|*|0","cache":"0|*|1440","autoplay":"0|*|5000","stopautoplay":"1|*|1|*|1","resumeautoplay":"0|*|1","widgetarrow":"image","widgetarrowdisplay":"0|*|always","previousposition":"left|*|0|*|%|*|top|*|50|*|%","previous":"","nextposition":"right|*|0|*|%|*|top|*|50|*|%","next":"","widgetbullet":"text","widgetbulletdisplay":"0|*|always","bulletposition":"left|*|0|*|%|*|bottom|*|5|*|%","bulletalign":"center","bullet":"","bulletbackground":"00000060","bulletbackgroundhover":"7670C7ff","fontclassnumber":"sliderfont7","bulletbar":"none","bulletshadow":"none","bulletbarcolor":"00000060","bullethumbnail":"0|*|top","thumbnailsizebullet":"100|*|60","bulletthumbnail":"00000060","widgetautoplay":"image","widgetautoplaydisplay":"0|*|always","autoplayimageposition":"left|*|0|*|%|*|top|*|50|*|%","autoplayimage":"","widgetindicator":"pie","widgetindicatordisplay":"0|*|always","indicatorposition":"right|*|5|*|%|*|top|*|5|*|%","indicatorskin":"plugins\/nextendsliderwidgetindicator\/pie\/pie\/pie\/default.png","indicatorcolor":"ffffffff|*|00000080","indicatorsize":"25","indicatorthickness":"0.5","indicatorlinecap":"butt","widgetbar":"gradient","widgetbardisplay":"0|*|always","bargradientposition":"left|*|0|*|%|*|top|*|50|*|%","bargradient":"","bargradientheight":"35","bargradienttitlefont":"sliderfont7","bargradientdescriptionfont":"sliderfont7","widgetthumbnail":"horizontal","widgetthumbnaildisplay":"0|*|always","thumbnailposition":"left|*|0|*|%|*|bottom|*|0|*|px","thumbnailsize":"100|*|60","thumbnailperpage":"2","thumbnailanimation":"700","thumbnail":"","thumbnailactivebackground":"00000080","widgetshadow":"shadow1","widgetshadowdisplay":"0|*|always","shadowposition":"left|*|0|*|%|*|bottom|*|-5|*|%","shadowcss":""}'
        );
    }

    function getSliders() {
        $db = NextendDatabase::getInstance();
        $db->setQuery('SELECT * FROM #__nextend_smartslider_sliders');
        return $db->loadAssocList();
    }

    function renderAddForm($data = array()) {
        NextendSmartSliderFontSettings::initAdminFonts();
        return $this->editForm($data);
    }

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

        $slider = $this->getSlider($id);
        if ($slider === null)
            $this->redirectToCreate();

        $data = json_decode($slider['params'], true);
        if ($data == null)
            $data = array();
        $data['title'] = $slider['title'];
        $data['type'] = $slider['type'];
        NextendSmartSliderFontSettings::initAdminFonts($id);
        return $this->editForm($data);
    }

    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/slider.xml';
        $js->loadLibrary('dojo');

        nextendimport('nextend.form.form');
        $form = new NextendForm();
        $form->set('class', 'nextend-smart-slider-admin');
        $form->set('manual', 'http://www.nextendweb.com/wiki/smart-slider-documentation/');
        $form->set('support', 'http://www.nextendweb.com/smart-slider#support');
        $form->loadArray($data);

        $form->loadXMLFile($configurationXmlFile);

        echo $form->render('slider');
        return array($data, $configurationXmlFile, 'slider');
    }

    function create($slider) {
        if (!isset($slider['title']))
            return false;
        if ($slider['title'] == '')
            $slider['title'] = 'New slider';

        $db = NextendDatabase::getInstance();

        $query = 'INSERT INTO #__nextend_smartslider_sliders (title, type, params, generator, slide) VALUES (';

        $query .= $db->quote($slider['title']);
        unset($slider['title']);
        $query .= ',' . $db->quote($slider['type']);
        unset($slider['type']);
        $query .= ',' . $db->quote(json_encode($slider));
        $query .= ", ''";
        $query .= ", ''";
        $query .= ');';
        $db->setQuery($query);
        $db->query();
        return $db->insertid();
    }

    function import($slider) {
        if (!isset($slider['title']))
            return false;
        if ($slider['title'] == '')
            $slider['title'] = 'New slider';

        $db = NextendDatabase::getInstance();

        $query = 'INSERT INTO #__nextend_smartslider_sliders (title, type, generator, slide, params) VALUES (';

        $query .= $db->quote($slider['title']);
        $query .= ',' . $db->quote($slider['type']);
        $query .= ',' . $db->quote($slider['generator']);
        $query .= ',' . $db->quote($slider['slide']);
        $query .= ',' . $db->quote($slider['params']);
        $query .= ');';
        $db->setQuery($query);
        $db->query();
        return $db->insertid();
    }

    function save($id, $slider) {
        if (!isset($slider['title']) || $id <= 0)
            return false;
        if ($slider['title'] == '')
            $slider['title'] = 'New slider';

        $db = NextendDatabase::getInstance();

        $query = 'UPDATE #__nextend_smartslider_sliders SET ';

        $query .= ' title=' . $db->quote($slider['title']);
        unset($slider['title']);

        $query .= ',type=' . $db->quote($slider['type']);
        unset($slider['type']);

        $query .= ',params=' . $db->quote(json_encode($slider));

        $query .= ' WHERE id = ' . $db->quote($id);
        $db->setQuery($query);
        $db->query();

        return $id;
    }

    function editGeneratorForm($data = array()) {

        $css = NextendCss::getInstance();
        $js = NextendJavascript::getInstance();

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

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

        nextendimport('nextend.form.form');
        $form = new NextendForm();
        $form->set('class', 'nextend-smart-slider-admin');
        $form->set('manual', 'http://www.nextendweb.com/wiki/smart-slider-documentation/');
        $form->set('support', 'http://www.nextendweb.com/smart-slider#support');
        $form->loadArray($data);

        $form->loadXMLFile($configurationXmlFile);

        echo $form->render('generator');
        return $configurationXmlFile;
    }

    function saveGenerator($id, $generator, $slide) {

        $db = NextendDatabase::getInstance();

        $query = 'UPDATE #__nextend_smartslider_sliders SET ';

        $query .= 'generator=' . $db->quote(json_encode($generator));
        $slide['slide'] = base64_decode($slide['slide']);
        $query .= ',slide=' . $db->quote(json_encode($slide));

        $query .= ' WHERE id = ' . $db->quote($id);
        $db->setQuery($query);
        $db->query();

        $generatorParams = new NextendData();
        $generatorParams->loadArray($generator);

        $generateslides = NextendParse::parse($generatorParams->get('generateslides', '0|*|0|*|0'));
        $createslides = intval($generateslides[1]);
        if($generatorParams->get('enabled', 0) && $createslides === 1){

            nextendimportsmartslider2('nextend.smartslider.generator');

            $slidesModel = $this->getModel('slides');
            //$slidesModel->deleteBySlider($id);

            $staticslides = intval($generateslides[2]);

            $generatorSlideParams = new NextendData();
            $generatorSlideParams->loadArray($slide);


            $generator = new NextendSmartsliderGenerator($generatorParams, $generatorSlideParams);

            if($staticslides){
                $slides = $generator->generateSlides($id);
                foreach($slides AS $slide){
                    unset($slide['id']);
                    $slidesModel->create($id, $slide, false);
                }
            }else{
                $slides = $generator->generateSlides($id, false);
                $slidesModel->deleteGeneratedBySlider($id);
                foreach($slides AS $k => $slide){
                    unset($slide['id']);
                    $slide['generator'] = $k+1;
                    $slidesModel->create($id, $slide, false);
                }
            }
        }

        return $id;
    }

    function delete($id) {
        $slidesModel = $this->getModel('slides');
        $slidesModel->deleteBySlider($id);

        $db = NextendDatabase::getInstance();
        $db->setQuery('DELETE FROM #__nextend_smartslider_sliders WHERE id=' . $db->quote($id));
        $db->query();
    }

    function deleteslides($id) {
        $slidesModel = $this->getModel('slides');
        $slidesModel->deleteBySlider($id);
    }    

    function duplicate($id) {

        $db = NextendDatabase::getInstance();

        $slider = $this->getSlider($id);
        unset($slider['id']);

        $slider['title'] .= ' - copy';

        $query = 'INSERT INTO #__nextend_smartslider_sliders ( ';

        foreach ($slider AS $k => $v) {
            $query .= $db->quoteName($k) . ',';
        }
        $query = rtrim($query, ",");

        $query .= ') VALUES (';

        foreach ($slider AS $k => $v) {
            $query .= $db->quote($v) . ',';
        }
        $query = rtrim($query, ",");
        $query .= ');';
        $db->setQuery($query);
        $db->query();

        $newsliderid = $db->insertid();
        if(!$newsliderid) return false;

        $slidesModel = $this->getModel('slides');

        foreach($slidesModel->getSlides($id) AS $slide){
            unset($slide['id']);
            $slide['slider'] = $newsliderid;
            $slidesModel->create($newsliderid, $slide, false);
        }
        
        $font = NextendSmartSliderStorage::get('font'.$id);
        if($font){
            NextendSmartSliderStorage::set('font'.$newsliderid, $font);
        }

        return $newsliderid;

    }

    function redirectToCreate() {
        header('LOCATION: ' . $this->route('controller=sliders&view=sliders_slider&action=create'));
        exit;
    }
    
    function exportSlider($id){
        nextendimport('nextend.externals.zip_lib');
        $zip = new NextendZipFile();
        $slider = $this->getSlider($id);
        $title = preg_replace('/[^a-zA-Z0-9]/', '_', $slider['title']).'.smart';
        unset($slider['id']);
        $zip->addFile(serialize($slider), 'slider.ss2');
        
        $slidesModel = $this->getModel('slides');
        $slides = $slidesModel->getSlides($id);
        for($i = 0; $i < count($slides); $i++){
            unset($slides[$i]['id']);
            unset($slides[$i]['slider']);
        }
        $zip->addFile(serialize($slides), 'slides.ss2');
        
        $fonts = NextendSmartSliderFontSettings::getAll($id);
        $zip->addFile(serialize($fonts), 'fonts.ss2');
        
        return array($title, $zip->file());
    }

}

?>