%PDF- %PDF-
Direktori : /home/lightco1/www/feiss.com.au/libraries/nextend2/smartslider/smartslider/libraries/ |
Current File : /home/lightco1/www/feiss.com.au/libraries/nextend2/smartslider/smartslider/libraries/import.php |
<?php N2Loader::import('libraries.zip.zip_read'); N2Loader::import('libraries.backup', 'smartslider'); class N2SmartSliderImport { /** * @var N2SmartSliderBackup */ private $backup; private $imageTranslation = array(); private $sectionTranslation = array(); private $sliderId = 0; private $restore = false; public function enableRestore() { $this->restore = true; } public function import($filePathOrData, $imageImportMode = 'clone', $linkedVisuals = 1, $isFilePath = true) { $zip = new N2ZipRead(); $importData = $zip->read_zip($filePathOrData, $isFilePath); if (!isset($importData['data'])) { if (array_key_exists("slider.ss2", $importData)) { N2Message::error(n2_('You can\'t import sliders from Smart Slider 2.')); } return false; } $this->backup = unserialize($importData['data']); $this->sectionTranslation = array(); $this->importVisuals($this->backup->visuals, $linkedVisuals); $sliderModel = new N2SmartsliderSlidersModel(); if ($this->restore) { $this->sliderId = $sliderModel->restore($this->backup->slider); } else { $this->sliderId = $sliderModel->import($this->backup->slider); } if (!$this->sliderId) { return false; } switch ($imageImportMode) { case 'clone': $images = $importData['images']; $imageStore = new N2StoreImage('slider' . $this->sliderId, true); foreach ($images AS $file => $content) { $localImage = $imageStore->makeCache($file, $content); if ($localImage) { $this->imageTranslation[$file] = N2ImageHelper::dynamic(N2Uri::pathToUri($localImage)); } else { $this->imageTranslation[$file] = $file; } if (!$this->imageTranslation[$file]) { $this->imageTranslation[$file] = array_search($file, $this->backup->imageTranslation); } } break; case 'update': $keys = array_keys($this->backup->NextendImageHelper_Export); $values = array_values($this->backup->NextendImageHelper_Export); foreach ($this->backup->imageTranslation AS $image => $value) { $this->imageTranslation[$value] = str_replace($keys, $values, $image); } break; default: break; } if (!empty($this->backup->slider['thumbnail'])) { $sliderModel->setThumbnail($this->sliderId, $this->fixImage($this->backup->slider['thumbnail'])); } foreach ($this->backup->NextendImageManager_ImageData AS $image => $data) { $data['tablet']['image'] = $this->fixImage($data['tablet']['image']); $data['mobile']['image'] = $this->fixImage($data['mobile']['image']); N2ImageManager::addImageData($this->fixImage($image), $data); } unset($importData); if (empty($this->backup->slider['type'])) { $this->backup->slider['type'] = 'simple'; } $class = 'N2SSPluginType' . $this->backup->slider['type']; N2Loader::importPath(call_user_func(array( $class, "getPath" )) . NDS . 'backup'); $class = 'N2SmartSliderBackup' . $this->backup->slider['type']; call_user_func_array(array( $class, 'import' ), array( $this, &$this->backup->slider )); $enabledWidgets = array(); $plugins = array(); N2Plugin::callPlugin('sswidget', 'onWidgetList', array(&$plugins)); $params = $this->backup->slider['params']; foreach ($plugins AS $k => $v) { $widget = $params->get('widget' . $k); if ($widget && $widget != 'disabled') { $enabledWidgets[$k] = $widget; } } foreach ($enabledWidgets AS $k => $v) { $class = 'N2SSPluginWidget' . $k . $v; if (class_exists($class, false)) { $params->fillDefault(call_user_func(array( $class, 'getDefaults' ))); call_user_func_array(array( $class, 'prepareImport' ), array( $this, $params )); } else { unset($enabledWidgets); } } $sliderModel->importUpdate($this->sliderId, $params); $generatorTranslation = array(); N2Loader::import("models.generator", "smartslider"); $generatorModel = new N2SmartsliderGeneratorModel(); foreach ($this->backup->generators as $generator) { $generatorTranslation[$generator['id']] = $generatorModel->import($generator); } $slidesModel = new N2SmartsliderSlidesModel(); for ($i = 0; $i < count($this->backup->slides); $i++) { $slide = $this->backup->slides[$i]; $slide['params'] = new N2Data($slide['params'], true); $slide['thumbnail'] = $this->fixImage($slide['thumbnail']); $slide['params']->set('backgroundImage', $this->fixImage($slide['params']->get('backgroundImage'))); $slide['params']->set('ligthboxImage', $this->fixImage($slide['params']->get('ligthboxImage'))); $slide['params']->set('link', $this->fixLightbox($slide['params']->get('link'))); $slide['slide'] = N2SmartSliderLayer::prepareImport($this, $slide['slide']); if (isset($generatorTranslation[$slide['generator_id']])) { $slide['generator_id'] = $generatorTranslation[$slide['generator_id']]; } $slidesModel->import($slide, $this->sliderId); } return $this->sliderId; } public function fixImage($image) { if (isset($this->backup->imageTranslation[$image]) && isset($this->imageTranslation[$this->backup->imageTranslation[$image]])) { return $this->imageTranslation[$this->backup->imageTranslation[$image]]; } return $image; } public function fixSection($idOrRaw) { if (isset($this->sectionTranslation[$idOrRaw])) { return $this->sectionTranslation[$idOrRaw]; } return $idOrRaw; } public function fixLightbox($url) { preg_match('/^([a-zA-Z]+)\[(.*)](.*)/', $url, $matches); if (!empty($matches) && $matches[1] == 'lightbox') { $images = explode(',', $matches[2]); $newImages = array(); foreach ($images AS $image) { $newImages[] = $this->fixImage($image); } $url = 'lightbox[' . implode(',', $newImages) . ']' . $matches[3]; } return $url; } private function importVisuals($records, $linkedVisuals) { if (count($records)) { if (!$linkedVisuals) { foreach ($records AS $record) { $this->sectionTranslation[$record['id']] = $record['value']; } } else { $sets = array(); foreach ($records AS $record) { $storage = N2Base::getApplication($record['application'])->storage; if (!isset($sets[$record['application'] . '_' . $record['section']])) { $sets[$record['application'] . '_' . $record['section']] = $storage->add($record['section'] . 'set', null, $this->backup->slider['title']); } $this->sectionTranslation[$record['id']] = $storage->add($record['section'], $sets[$record['application'] . '_' . $record['section']], $record['value']); } } } } }