name = 'ets_blog'; parent::__construct(); $this->module= new Ets_blog(); $this->defines = new Ets_blog_defines(); } public function getCategories($id_root,&$categories) { $sql ='SELECT * FROM `'._DB_PREFIX_.'ets_blog_category` c WHERE c.id_category ="'.(int)$id_root.'"'.($id_root ? ' AND c.id_shop="'.(int)Context::getContext()->shop->id.'"':''); $category= Db::getInstance()->getRow($sql); if($category) $categories[]=$category; $childs= $this->getChildCategory($id_root); if($childs) { foreach($childs as $child) { $this->getCategories($child['id_category'],$categories); } } return $categories; } public function getChildCategory($id_parent) { $sql ='SELECT * FROM `'._DB_PREFIX_.'ets_blog_category` c WHERE c.id_parent ="'.(int)$id_parent.'" AND c.id_shop="'.(int)Context::getContext()->shop->id.'"'; return Db::getInstance()->executeS($sql); } public function getCategoryAllLanguage($id_category) { $sql ='SELECT c.id_category, cl.title,cl.description,cl.meta_keywords,cl.meta_description,cl.url_alias,cl.meta_title,cl.image,cl.thumb,l.iso_code,l.id_lang FROM `'._DB_PREFIX_.'ets_blog_category` c LEFT JOIN `'._DB_PREFIX_.'ets_blog_category_lang` cl on (c.id_category = cl.id_category) LEFT JOIN `'._DB_PREFIX_.'lang` l ON (l.id_lang= cl.id_lang) WHERE c.id_category="'.(int)$id_category.'"'; return Db::getInstance()->executeS($sql); } public function getPostAllLanguage($id_post) { $sql = 'SELECT p.id_post,pl.title,pl.meta_title,pl.description,pl.short_description,pl.meta_keywords,pl.meta_description,pl.url_alias,pl.image,pl.thumb,l.iso_code,l.id_lang FROM `'._DB_PREFIX_.'ets_blog_post` p LEFT JOIN `'._DB_PREFIX_.'ets_blog_post_lang` pl on (p.id_post = pl.id_post) LEFT JOIN `'._DB_PREFIX_.'lang` l on (pl.id_lang=l.id_lang) WHERE p.id_post ="'.(int)$id_post.'"'; return Db::getInstance()->executeS($sql); } public function getPosts() { $sql ='SELECT * FROM `'._DB_PREFIX_.'ets_blog_post` p WHERE p.id_shop='.(int)Context::getContext()->shop->id; return Db::getInstance()->executeS($sql); } public function getCategoryByIDPost($id_post) { $sql='SELECT c.* FROM `'._DB_PREFIX_.'ets_blog_category` c,`'._DB_PREFIX_.'ets_blog_post_category` pc WHERE c.id_category =pc.id_category AND pc.id_post= "'.(int)$id_post.'"'; return Db::getInstance()->executeS($sql); } public function getComments($id_post) { $sql='SELECT * FROM `'._DB_PREFIX_.'ets_blog_comment` WHERE id_post='.(int)$id_post.' AND subject!="" AND comment!=""'; return Db::getInstance()->executeS($sql); } public function exportBlog() { $xml_output = ''."\n"; $xml_output .= ''."\n"; $categories=array(); $categories =$this->getCategories(0,$categories); if($categories) { foreach($categories as $category) { $xml_output .=''."\n"; $categoryLanguages = $this->getCategoryAllLanguage($category['id_category']); if($categoryLanguages) { foreach($categoryLanguages as $categoryLanguage) { $xml_output .=''."\n"; $xml_output .='<![CDATA['.$categoryLanguage['title'].']]>'."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; } } $xml_output .=''."\n"; } } $posts = $this->getPosts(); if($posts) foreach($posts as $post) { $id_post= $post['id_post']; $xml_output .= ''."\n"; $postAllLanguage = $this->getPostAllLanguage($id_post); if($postAllLanguage) { foreach($postAllLanguage as $language) { $xml_output .=''."\n"; $xml_output .='<![CDATA['.$language['title'].']]>'."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; $xml_output .=''."\n"; } } $categories = $this->getCategoryByIDPost($id_post); if($categories) foreach($categories as $category) { $xml_output .=''."\n"; $xml_output .=''."\n"; } $comments = $this->getComments($id_post); if($comments) { foreach($comments as $comment) { $xml_output .=''."\n"; $xml_output .=''."\n"; $replies= Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'ets_blog_reply` WHERE id_comment='.(int)$comment['id_comment']); if($replies) { foreach($replies as $reply) { $xml_output .=''."\n"; $xml_output .=''; $xml_output .=''."\n"; } } $xml_output .=''."\n"; } } $xml_output .= ''."\n"; } $xml_output .=''."\n"; $xml_output .= $this->exportXmlConfiguration($this->defines->getConfigInputs()); $xml_output .=''."\n"; $xml_output .= ''."\n"; return str_replace('&','and',$xml_output); } public function exportXmlConfiguration($configs) { $languages = Language::getLanguages(false); $id_lang_default= Configuration::get('PS_LANG_DEFAULT'); $xml_output =''; if($configs) { foreach($configs as $config) { $key = $config['name']; if(isset($config['lang']) && $config['lang']) { $xml_output .= '<'.$key.'>'."\n"; foreach($languages as $language) { $xml_output .= ''."\n"; $xml_output .=''."\n"; $xml_output .= ''."\n"; } $xml_output .=''."\n"; } else { $xml_output .='<'.$key.'>'."\n"; } } } return $xml_output; } /** * @param ZipArchive $obj * @param $file * @param $server_path * @param $archive_path */ private function archiveThisFile($obj, $file, $server_path, $archive_path) { if (is_dir($server_path.$file)) { $dir = scandir($server_path.$file); foreach ($dir as $row) { if ($row[0] != '.') { $this->archiveThisFile($obj, $row, $server_path.$file.'/', $archive_path.$file.'/'); } } } else $obj->addFile($server_path.$file, $archive_path.$file); } public function generateArchive() { $errors = array(); $zip = new ZipArchive(); $cacheDir = _ETS_BLOG_CACHE_DIR_; $zip_file_name = 'ets_blog_'.date('dmYHis').'.zip'; if(!is_dir($cacheDir)) { @mkdir($cacheDir, 0755,true); if ( @file_exists(dirname(__file__).'/index.php')){ @copy(dirname(__file__).'/index.php', $cacheDir.'index.php'); } } if ($zip->open($cacheDir.$zip_file_name, ZipArchive::OVERWRITE | ZipArchive::CREATE) === true) { if (!$zip->addFromString('blog-data.xml', $this->exportBlog())) { $errors[] = $this->l('Cannot create blog-data.xml'); } $this->archiveThisFile($zip,'category', _PS_ETS_BLOG_IMG_DIR_, 'img/'); $this->archiveThisFile($zip,'post', _PS_ETS_BLOG_IMG_DIR_, 'img/'); $zip->close(); if (!is_file($cacheDir.$zip_file_name)) { $errors[] = $this->l(sprintf('Could not create %1s', _PS_CACHE_DIR_.$zip_file_name)); } if (!$errors) { if (ob_get_length() > 0) { ob_end_clean(); } ob_start(); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: public'); header('Content-Description: File Transfer'); header('Content-type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$zip_file_name.'"'); header('Content-Transfer-Encoding: binary'); ob_end_flush(); if(file_exists($cacheDir.$zip_file_name)) { readfile($cacheDir.$zip_file_name); @unlink($cacheDir.$zip_file_name); } exit; } } return $errors; } public static function isImage($image) { $image = str_replace(array(' ','(',')','!','@','#','+'),'-',$image); if(Validate::isFileName((string)$image)) { $type = Tools::strtolower(Tools::substr(strrchr((string)$image, '.'), 1)); if(in_array($type, array('jpg', 'gif', 'jpeg', 'png'))) return true; else return false; } return false; } /** * @param $file_xml * @param array $params * @throws PrestaShopDatabaseException * @throws PrestaShopException */ public function importData($file_xml,$params = array()) { if (file_exists($file_xml)) { $languages = Language::getLanguages(false); $xml = simplexml_load_file($file_xml); $categories=array(); if(isset($params['data_import']) && ($data_imports= $params['data_import']) && is_array($data_imports)) { $importoverride = isset($params['importoverride']) ? (int)$params['importoverride']:0; $keepcommenter = isset($params['keepcommenter']) ? (int)$params['keepcommenter']:0; $keepauthorid = isset($params['keepauthorid']) ? (int)$params['keepauthorid']:0; if(in_array('posts_categories',$data_imports)) { if(isset($xml->category) && $xml->category) { foreach($xml->category as $category_xml) { $oldImages = array(); $oldThumbs = array(); if($importoverride && isset($category_xml['id_category']) && ($category = new Ets_blog_category((int)$category_xml['id_category'])) && Validate::isLoadedObject($category) && $category->id_shop == Context::getContext()->shop->id) { $oldImages = $category->image; $oldThumbs = $category->thumb; } else { $category = new Ets_blog_category(); if(isset($category_xml['id_parent'])&&(int)$category_xml['id_parent']!=0) $id_parent = isset($categories[(int)$category_xml['id_parent']]) ? $categories[(int)$category_xml['id_parent']] : 0; else $id_parent=0; $category->id_parent =$id_parent; $category->sort_order = 1+(int)Db::getInstance()->getValue('SELECT COUNT(*) FROM `'._DB_PREFIX_.'ets_blog_category` c WHERE c.id_parent="'.(int)$id_parent.'" AND c.id_shop='.(int)$this->context->shop->id); } $category->enabled = (int)$category_xml['enabled']; if(isset($category_xml['image']) && self::isImage((string)$category_xml['image'])) { foreach($languages as $language) $category->image[$language['id_lang']] = (string)$category_xml['image']; } if(isset($category_xml['thumb']) && self::isImage((string)$category_xml['thumb'])) { foreach($languages as $language) { $category->thumb[$language['id_lang']] =(string)$category_xml['thumb']; } } $category->date_add = Validate::isDate((string)$category_xml['datetime_added']) ? (string)$category_xml['datetime_added'] :date('Y-m-d H:i:s'); $category->date_upd = Validate::isDate((string)$category_xml['datetime_modified']) ? (string)$category_xml['datetime_modified'] : date('Y-m-d H:i:s');; $category->added_by = (int)Context::getContext()->employee->id; $category->modified_by = (int)Context::getContext()->employee->id; $category->id_shop = Context::getContext()->shop->id; $languageCategoryImported=array(); if($category_xml->categorylanguage) { foreach($category_xml->categorylanguage as $categorylanguage) { if((string)$categorylanguage['iso_code']) { $id_lang= Language::getIdByIso((string)$categorylanguage['iso_code']); if(isset($categorylanguage['default']) && (int)$categorylanguage['default']) $categoryLanguageDefault = $categorylanguage; if($id_lang) { $category->title[$id_lang] = Validate::isCleanHtml((string)$categorylanguage->title) ? (string)$categorylanguage->title:''; $category->meta_title[$id_lang] = Validate::isCleanHtml((string)$categorylanguage->meta_title) ? (string)$categorylanguage->meta_title:''; $category->url_alias[$id_lang] = Validate::isLinkRewrite((string)$categorylanguage->url_alias) ? (string)$categorylanguage->url_alias:''; $category->description[$id_lang] = Validate::isCleanHtml((string)$categorylanguage->description,true) ? (string)$categorylanguage->description:''; $category->meta_description[$id_lang] = Validate::isCleanHtml((string)$categorylanguage->meta_description) ? (string)$categorylanguage->meta_description :''; $category->meta_keywords[$id_lang] = Validate::isCleanHtml((string)$categorylanguage->meta_keywords) ? (string)$categorylanguage->meta_keywords:''; if(isset($categorylanguage->image) && self::isImage((string)$categorylanguage->image)) $category->image[$id_lang] = (string)$categorylanguage->image; if(isset($categorylanguage->thumb) && self::isImage((string)$categorylanguage->thumb)) $category->thumb[$id_lang] = (string)$categorylanguage->thumb; $languageCategoryImported[]=$id_lang; } } } } if(isset($categoryLanguageDefault)) { foreach($languages as $lang) { if(!in_array($lang['id_lang'],$languageCategoryImported)) { $category->title[$lang['id_lang']] = Validate::isCleanHtml((string)$categoryLanguageDefault->title) ? (string)$categoryLanguageDefault->title:''; $category->meta_title[$lang['id_lang']] = Validate::isCleanHtml((string)$categoryLanguageDefault->meta_title) ? (string)$categoryLanguageDefault->meta_title:''; $category->url_alias[$lang['id_lang']] = Validate::isLinkRewrite((string)$categoryLanguageDefault->url_alias) ? (string)$categoryLanguageDefault->url_alias :''; $category->description[$lang['id_lang']] = Validate::isCleanHtml((string)$categoryLanguageDefault->description,true) ? (string)$categoryLanguageDefault->description :''; $category->meta_description[$lang['id_lang']] = Validate::isCleanHtml((string)$categoryLanguageDefault->meta_description) ? (string)$categoryLanguageDefault->meta_description :''; $category->meta_keywords[$lang['id_lang']] = Validate::isCleanHtml((string)$categoryLanguageDefault->meta_keywords) ? (string)$categoryLanguageDefault->meta_keywords:''; if(isset($categoryLanguageDefault->image) && self::isImage((string)$categoryLanguageDefault->image)) $category->image[$lang['id_lang']] = (string)$categoryLanguageDefault->image; if(isset($categoryLanguageDefault->thumb) && self::isImage((string)$categoryLanguageDefault->thumb)) $category->thumb[$lang['id_lang']] = (string)$categoryLanguageDefault->thumb; } } } if($category->save()) { if($category->image) { foreach($category->image as $id_lang=> $image) { if($image) { if(file_exists(_PS_ETS_BLOG_IMG_DIR_.'category/'.$image)) { $category->image[$id_lang] = time().$image; $category->update(); } if($image && file_exists(_ETS_BLOG_CACHE_DIR_.'img/category/'.$image)) { copy(_ETS_BLOG_CACHE_DIR_.'img/category/'.$image,_PS_ETS_BLOG_IMG_DIR_.'category/'.$category->image[$id_lang]); if(isset($oldImages[$id_lang]) && $oldImages[$id_lang] && file_exists(_PS_ETS_BLOG_IMG_DIR_.'category/'.$oldImages[$id_lang])) @unlink(_PS_ETS_BLOG_IMG_DIR_.'category/'.$oldImages[$id_lang]); } } } } if($category->thumb) { foreach($category->thumb as $id_lang=> $thumb) { if($thumb) { if(file_exists(_PS_ETS_BLOG_IMG_DIR_.'category/thumb/'.$thumb)) { $category->thumb[$id_lang] = time().$thumb; $category->update(); } if($thumb && file_exists(_ETS_BLOG_CACHE_DIR_.'img/category/thumb/'.$thumb)) { copy(_ETS_BLOG_CACHE_DIR_.'img/category/thumb/'.$thumb,_PS_ETS_BLOG_IMG_DIR_.'category/thumb/'.$category->thumb[$id_lang]); if(isset($oldThumbs[$id_lang]) && $oldThumbs[$id_lang] && file_exists(_PS_ETS_BLOG_IMG_DIR_.'category/thumb/'.$oldThumbs[$id_lang])) @unlink(_PS_ETS_BLOG_IMG_DIR_.'category/thumb/'.$oldThumbs[$id_lang]); } } } } $categories[(int)$category_xml['id_category']] = $category->id; } } } if(isset($xml->post) && $xml->post) { foreach ($xml->post as $post_xml) { $oldImages = array(); $oldThumbs = array(); if($importoverride && isset($post_xml['id_post']) && ($post = new Ets_blog_post((int)$post_xml['id_post'])) && Validate::isLoadedObject($post) && $post->id_shop == Context::getContext()->shop->id) { $oldImages = $post->image; $oldThumbs = $post->thumb; } else { $post = new Ets_blog_post(); $post->sort_order =1+ (int)Db::getInstance()->getValue('SELECT MAX(sort_order) FROM `'._DB_PREFIX_.'ets_blog_post` WHERE id_shop='.(int)$this->context->shop->id); } $post->enabled = (int)$post_xml['enabled']; $post->date_upd = Validate::isDate((string)$post_xml['datetime_added']) ? (string)$post_xml['datetime_added'] :date('Y-m-d H:i:s'); $post->date_upd = Validate::isDate((string)$post_xml['datetime_modified']) ? (string)$post_xml['datetime_modified']: date('Y-m-d H:i:s'); $post->id_shop = Context::getContext()->employee->id; if($keepauthorid && isset($post_xml['added_by']) && (int)$post_xml['added_by']) { if(Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'employee` WHERE id_employee='.(int)$post_xml['added_by'])) { $ok=true; } else $ok=false; if($ok) { $post->added_by = (int)$post_xml['added_by']; $post->modified_by = (int)$post_xml['modified_by']; } else { $post->added_by = (int)Context::getContext()->employee->id; $post->modified_by = (int)Context::getContext()->employee->id; } } else { $post->added_by = (int)Context::getContext()->employee->id; $post->modified_by = (int)Context::getContext()->employee->id; } if(isset($post_xml['thumb']) && self::isImage((string)$post_xml['thumb'])) { foreach($languages as $language) { $post->thumb[$language['id_lang']] = (string)$post_xml['thumb']; } } if(isset($post_xml['image']) && self::isImage((string)$post_xml['image'])) { foreach($languages as $language) $post->image[$language['id_lang']] = (string)$post_xml['image']; } if(isset($post_xml['id_category_default'])) $post->id_category_default = isset($categories[(int)$post_xml['id_category_default']])? $categories[(int)$post_xml['id_category_default']]:0; $languagePostImported = array(); if($post_xml->language) foreach($post_xml->language as $language) { if((string)$language['iso_code']) { $id_lang = Language::getIdByIso((string)$language['iso_code']); if(isset($language['default']) && (int)$language['default']) $languagePostDefault=$language; if($id_lang) { $post->title[$id_lang] = Validate::isCleanHtml((string)$language->title) ? (string)$language->title :''; $post->url_alias[$id_lang] = Validate::isLinkRewrite((string)$language->url_alias) ? (string)$language->url_alias : ''; $post->short_description[$id_lang] = Validate::isCleanHtml((string)$language->short_description,true) ? (string)$language->short_description :''; $post->description[$id_lang] = Validate::isCleanHtml((string)$language->description,true) ? (string)$language->description : ''; $post->meta_description[$id_lang] = Validate::isCleanHtml((string)$language->meta_description) ? (string)$language->meta_description :''; $post->meta_keywords[$id_lang] = Validate::isCleanHtml((string)$language->meta_keywords) ? (string)$language->meta_keywords :''; if(isset($language->image) && self::isImage((string)$language->image) ) $post->image[$id_lang] = (string)$language->image; if(isset($language->thumb) && self::isImage((string)$language->thumb)) $post->thumb[$id_lang] = (string)$language->thumb; $languagePostImported[]=$id_lang; } } } if(isset($languagePostDefault)) { foreach($languages as $lang) { if(!in_array($lang['id_lang'],$languagePostImported)) { $post->title[$lang['id_lang']] = Validate::isCleanHtml((string)$languagePostDefault->title) ? (string)$languagePostDefault->title :''; $post->meta_title[$lang['id_lang']] = Validate::isCleanHtml((string)$languagePostDefault->meta_title) ? (string)$languagePostDefault->meta_title: ''; $post->url_alias[$lang['id_lang']] = Validate::isLinkRewrite((string)$languagePostDefault->url_alias) ? (string)$languagePostDefault->url_alias: ""; $post->short_description[$lang['id_lang']] = Validate::isCleanHtml((string)$languagePostDefault->short_description,true) ? (string)$languagePostDefault->short_description :''; $post->description[$lang['id_lang']] = Validate::isCleanHtml((string)$languagePostDefault->description,true) ? (string)$languagePostDefault->description : ''; $post->meta_description[$lang['id_lang']] = Validate::isCleanHtml((string)$languagePostDefault->meta_description) ? (string)$languagePostDefault->meta_description :''; $post->meta_keywords[$lang['id_lang']] = Validate::isCleanHtml((string)$languagePostDefault->meta_keywords) ? (string)$languagePostDefault->meta_keywords :''; if(isset($languagePostDefault->image) && self::isImage((string)$languagePostDefault->image)) $post->image[$lang['id_lang']] = (string)$languagePostDefault->image; if(isset($languagePostDefault->thumb) && self::isImage((string)$languagePostDefault->thumb) ) $post->thumb[$lang['id_lang']] = (string)$languagePostDefault->thumb; } } } if($post->save()) { if($post->image) { foreach($post->image as $id_lang=>$image) { if($image) { if(file_exists(_PS_ETS_BLOG_IMG_DIR_.'post/'.$image)) { $post->image[$id_lang] = time().$image; $post->update(); } if($image && file_exists(_ETS_BLOG_CACHE_DIR_.'img/post/'.$image)) { copy(_ETS_BLOG_CACHE_DIR_.'img/post/'.$image,_PS_ETS_BLOG_IMG_DIR_.'post/'.$post->image[$id_lang]); if(isset($oldImages[$id_lang]) && $oldImages[$id_lang] && file_exists(_PS_ETS_BLOG_IMG_DIR_.'post/'.$oldImages[$id_lang])) @unlink(_PS_ETS_BLOG_IMG_DIR_.'post/'.$oldImages[$id_lang]); } } } } if($post->thumb) { foreach($post->thumb as $id_lang=>$thumb) { if($thumb) { if(file_exists(_PS_ETS_BLOG_IMG_DIR_.'post/'.$thumb)) { $post->thumb[$id_lang] = time().$thumb; $post->update(); } if($thumb && file_exists(_ETS_BLOG_CACHE_DIR_.'img/post/'.$thumb)) { copy(_ETS_BLOG_CACHE_DIR_.'img/post/'.$thumb,_PS_ETS_BLOG_IMG_DIR_.'post/'.$post->thumb[$id_lang]); if(isset($oldThumbs[$id_lang]) && $oldThumbs[$id_lang] && file_exists(_PS_ETS_BLOG_IMG_DIR_.'post/'.$oldThumbs[$id_lang])) @unlink(_PS_ETS_BLOG_IMG_DIR_.'post/'.$oldThumbs[$id_lang]); } elseif($thumb && file_exists(_ETS_BLOG_CACHE_DIR_.'img/post/thumb/'.$thumb)) { copy(_ETS_BLOG_CACHE_DIR_.'img/post/thumb/'.$thumb,_PS_ETS_BLOG_IMG_DIR_.'post/'.$post->thumb[$id_lang]); if(isset($oldThumbs[$id_lang]) && $oldThumbs[$id_lang] && file_exists(_PS_ETS_BLOG_IMG_DIR_.'post/'.$oldThumbs[$id_lang])) @unlink(_PS_ETS_BLOG_IMG_DIR_.'post/'.$oldThumbs[$id_lang]); } } } } Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'ets_blog_post_category` WHERE id_post='.(int)$post->id); if($post->id_category_default) { if(!Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'ets_blog_post_category` WHERE id_category="'.(int)$post->id_category_default.'" AND id_post="'.(int)$post->id.'"')) { Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'ets_blog_post_category` (id_post,id_category,position) values("'.(int)$post->id.'","'.(int)$post->id_category_default.'","1")'); } } if(isset($post_xml->category) && $post_xml->category) { foreach($post_xml->category as $category_xml) { $id_category = isset($categories[(int)$category_xml['id_category']])? $categories[(int)$category_xml['id_category']]:0; if($id_category && !Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'ets_blog_post_category` WHERE id_category="'.(int)$id_category.'" AND id_post="'.(int)$post->id.'"')) { $position = 1+ (int)Db::getInstance()->getValue('SELECT MAX(position) FROM `'._DB_PREFIX_.'ets_blog_post_category` WHERE id_category='.(int)$id_category); Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'ets_blog_post_category` (id_post,id_category,position) values("'.(int)$post->id.'","'.(int)$id_category.'","'.(int)$position.'")'); if(!$post->id_category_default) { $post->id_category_default = $id_category; $post->update(); } } } } if(in_array('posts_comments',$data_imports)) { if($importoverride) { Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'ets_blog_comment` WHERE id_post='.(int)$post->id); } if(isset($post_xml->comment) && $post_xml->comment) { foreach($post_xml->comment as $comment_xml) { $comment= new Ets_blog_comment(); if($keepcommenter) $comment->id_user= (int)$comment_xml['id_user']; else $comment->id_user=0; $comment->name = Validate::isName((string)$comment_xml['name']) ? (string)$comment_xml['name'] :''; $comment->email = Validate::isEmail((string)$comment_xml['email']) ? (string)$comment_xml['email'] :''; $comment->id_post=(int)$post->id; $comment->subject = Validate::isCleanHtml((string)$comment_xml['subject']) ? (string)$comment_xml['subject'] :''; $comment->comment = Validate::isCleanHtml((string)$comment_xml->comment_text) ? (string)$comment_xml->comment_text :''; $comment->reply = Validate::isCleanHtml((string)$comment_xml->reply) ? (string)$comment_xml->reply :''; $comment->replied_by = (int)Context::getContext()->employee->id; $comment->rating = (int)$comment_xml['rating']; $comment->approved = (int)$comment_xml['approved']; $comment->date_add = Validate::isDate((string)$comment_xml['datetime_added']) ? (string)$comment_xml['datetime_added'] : date('Y-m-d H:i:s'); $comment->reported = (int)$comment_xml['reported']; if($comment->subject && $comment->name && $comment->comment) { $comment->save(); if($comment->id && isset($comment_xml->reply) && $comment_xml->reply) { foreach($comment_xml->reply as $reply_xml) { $name = Validate::isName((string)$reply_xml['name']) ? (string)$reply_xml['name'] :''; $email = Validate::isEmail((string)$reply_xml['email']) ? (string)$reply_xml['email'] :''; $reply_text = Validate::isCleanHtml((string)$reply_xml->reply_text) ? (string)$reply_xml->reply_text :''; $date_add = Validate::isDate((string)$reply_xml['datetime_added']) ? (string)$reply_xml['datetime_added']: date('Y-m-d H:i:s'); $date_upd = Validate::isDate((string)$reply_xml['datetime_updated']) ? (string)$reply_xml['datetime_updated'] : date('Y-m-d H:i:s'); $sql= "INSERT INTO `"._DB_PREFIX_."ets_blog_reply`(id_comment,id_user,name,email,reply,id_employee,approved,date_add,date_upd) values('".(int)$comment->id."', '".(int)$reply_xml['id_user']."','".pSQL($name)."','".pSQL($email)."','".pSQL($reply_text)."','".(int)$reply_xml['id_employee']."','".(int)$reply_xml['approved']."','".pSQL($date_add)."','".pSQL($date_upd)."')"; Db::getInstance()->execute($sql); } } } } } } } } } } if(in_array('module_configuration',$data_imports)) { if(isset($xml->configuration) && $config_xml = $xml->configuration) { $this->importXmlConfiguration($this->defines->getConfigInputs(),$config_xml); } } } } } public function importXmlConfiguration($configs,$xml) { $languages = Language::getLanguages(false); foreach($configs as $config) { $key = $config['name']; if(isset($config['lang']) && $config['lang']) { $values = array(); $xmlKey = $xml->{$key}; $default= ''; $languageimporteds= array(); if($xmlKey->language) { foreach($xmlKey->language as $language_xml) { if((int)$language_xml['default']) $default= (string)$language_xml->content; if($id_lang= Language::getIdByIso((string)$language_xml['iso_code'])) { $languageimporteds[]=$id_lang; $values[$id_lang] = (string)$language_xml->content; } } } foreach($languages as $lang) { if(!in_array($lang['id_lang'],$languageimporteds)) { $values[$lang['id_lang']] = $default; } } Configuration::updateValue($key, $values); } else { if(isset($xml->{$key})) { Configuration::updateValue($key,(string)$xml->{$key}); } } } } public function removeFolderCache($forder) { $files = glob($forder.'/*'); foreach($files as $file){ if(is_file($file)){ if(file_exists($file)) @unlink($file); } else $this->removeFolderCache($file); } rmdir($forder); } public function processImport($zipfile = false,$params = array()) { $errors = array(); if(isset($params['data_import']) && $params['data_import']) { if(!$zipfile) { $savePath = _ETS_BLOG_CACHE_DIR_; if(@file_exists($savePath.'ets_blog.data.zip')) @unlink($savePath.'ets_blog.data.zip'); $uploader = new Uploader('blogdata'); $uploader->setMaxSize(1048576000); $uploader->setAcceptTypes(array('zip')); $uploader->setSavePath($savePath); $file = $uploader->process('ets_blog.data.zip'); if ($file[0]['error'] === 0) { if (!Tools::ZipTest($savePath.'ets_blog.data.zip')) $errors[] = $this->l('Zip file seems to be broken'); } else { $errors[] = $file[0]['error']; } $extractUrl = $savePath.'ets_blog.data.zip'; } else $extractUrl = $zipfile; if(!@file_exists($extractUrl)) $errors[] = $this->l('Zip file doesn\'t exist'); if(!$errors) { $zip = new ZipArchive(); if($zip->open($extractUrl) === true) { if ($zip->locateName('blog-data.xml') === false) { $errors[] = $this->l('blog-data.xml doesn\'t exist'); if($extractUrl && file_exists($extractUrl) && !$zipfile) { @unlink($extractUrl); } } } else $errors[] = $this->l('Cannot open zip file. It might be broken or damaged'); } if(!$errors) { if(!Tools::ZipExtract($extractUrl, _ETS_BLOG_CACHE_DIR_)) $errors[] = $this->l('Cannot extract zip data'); if(!@file_exists(_ETS_BLOG_CACHE_DIR_.'blog-data.xml')) $errors[] = $this->l('Neither blog-data.xml exist'); } if(!$errors) { if(@file_exists(_ETS_BLOG_CACHE_DIR_.'blog-data.xml')) { $this->importData(_ETS_BLOG_CACHE_DIR_.'blog-data.xml',$params); @unlink(_ETS_BLOG_CACHE_DIR_.'blog-data.xml'); $this->removeFolderCache(_ETS_BLOG_CACHE_DIR_.'img'); } $zip->close(); if(@file_exists($extractUrl)) @unlink($extractUrl); } } else { $errors[]= $this->l('Data for import is null'); } return $errors; } }