0byt3m1n1-V2
Path:
/
home
/
magalijoj
/
www
/
blog
/
plugins
/
importExport
/
[
Home
]
File: index.php
<?php # ***** BEGIN LICENSE BLOCK ***** # This file is part of DotClear. # Copyright (c) 2005 Olivier Meunier and contributors. All rights # reserved. # # DotClear is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # DotClear is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with DotClear; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ***** END LICENSE BLOCK ***** if (!defined('DC_CONTEXT_ADMIN')) { exit; } require dirname(__FILE__).'/class.backupFile.php'; require dirname(__FILE__).'/class.dc.import.php'; require dirname(__FILE__).'/class.db.export.php'; # Export all content if (!empty($_POST['export_all']) && $core->auth->isSuperAdmin()) { ob_end_clean(); header('Content-Disposition: attachment;filename=blog-backup.txt'); header('Content-Type: text/plain; charset=UTF-8'); $exp = new dbExport($core->con,'php://output',$core->prefix); fwrite($exp->fp,'///DOTCLEAR|'.DC_VERSION."|full\n"); $exp->exportTable('blog'); $exp->exportTable('category'); $exp->exportTable('link'); $exp->exportTable('setting'); $exp->exportTable('user'); $exp->exportTable('permissions'); $exp->exportTable('post'); $exp->exportTable('media'); $exp->exportTable('post_media'); $exp->exportTable('log'); $exp->exportTable('ping'); $exp->exportTable('comment'); $exp->exportTable('spamrule'); $exp->exportTable('version'); # --BEHAVIOR-- exportFull $core->callBehavior('exportFull',$core,$exp); exit; } # Export a blog if (!empty($_POST['blog_export']) && $core->auth->check('admin',$_POST['blog_export'])) { ob_end_clean(); $blog_id = $_POST['blog_export']; if (!in_array($blog_id,array_keys($core->blogs))) { exit; } $core->setBlog($blog_id); $blog_id = $core->con->escape($blog_id); header('Content-Disposition: attachment;filename='.$core->blog->id.'-backup.txt'); header('Content-Type: text/plain; charset=UTF-8'); $exp = new dbExport($core->con,'php://output',$core->prefix); fwrite($exp->fp,'///DOTCLEAR|'.DC_VERSION."|single\n"); $exp->export('category', 'SELECT * FROM '.$core->prefix.'category '. "WHERE blog_id = '".$blog_id."'" ); $exp->export('link', 'SELECT * FROM '.$core->prefix.'link '. "WHERE blog_id = '".$blog_id."'" ); $exp->export('setting', 'SELECT * FROM '.$core->prefix.'setting '. "WHERE blog_id = '".$blog_id."'" ); $exp->export('post', 'SELECT * FROM '.$core->prefix.'post '. "WHERE blog_id = '".$blog_id."'" ); $exp->export('media', 'SELECT * FROM '.$core->prefix."media WHERE media_path = '". $core->con->escape($core->blog->settings->public_path)."'" ); $exp->export('post_media', 'SELECT media_id, M.post_id '. 'FROM '.$core->prefix.'post_media M, '.$core->prefix.'post P '. 'WHERE P.post_id = M.post_id '. "AND P.blog_id = '".$blog_id."'" ); $exp->export('ping', 'SELECT ping.post_id, ping_url, ping_dt '. 'FROM '.$core->prefix.'ping ping, '.$core->prefix.'post P '. 'WHERE P.post_id = ping.post_id '. "AND P.blog_id = '".$blog_id."'" ); $exp->export('comment', 'SELECT C.* '. 'FROM '.$core->prefix.'comment C, '.$core->prefix.'post P '. 'WHERE P.post_id = C.post_id '. "AND P.blog_id = '".$blog_id."'" ); # --BEHAVIOR-- exportSingle $core->callBehavior('exportSingle',$core,$exp,$blog_id); exit; } # Getting files in public directory $public_files = array('-' => ''); $dir = @dir($core->blog->public_path); if ($dir) { while (($entry = $dir->read()) !== false) { $entry_path = $dir->path.'/'.$entry; if (is_file($entry_path) && is_readable($entry_path)) { $fp = fopen($entry_path,'rb'); if (strpos(fgets($fp),'///DOTCLEAR|') === 0) { $public_files[$entry] = $entry_path; } fclose($fp); } } } # Loading a single blog $single_upl = null; if (!empty($_POST['public_single_file']) && in_array($_POST['public_single_file'],$public_files)) { $single_upl = false; } elseif(!empty($_FILES['up_single_file'])) { $single_upl = true; } if ($single_upl !== null) { try { if ($single_upl) { files::uploadStatus($_FILES['up_single_file']); $file = $_FILES['up_single_file']['tmp_name']; } else { $file = $_POST['public_single_file']; } $bk = new dcImport($core,$file); $bk->importSingle(); http::redirect($p_url.'&imported=1'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Loading a full export file $full_upl = null; if (!empty($_POST['public_full_file']) && in_array($_POST['public_full_file'],$public_files)) { $full_upl = false; } elseif(!empty($_FILES['up_full_file'])) { $full_upl = true; } if ($full_upl !== null && $core->auth->isSuperAdmin()) { try { if ($full_upl) { files::uploadStatus($_FILES['up_full_file']); $file = $_FILES['up_full_file']['tmp_name']; } else { $file = $_POST['public_full_file']; } $bk = new dcImport($core,$file); $bk->importFull(); http::redirect($p_url.'&imported=1'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Loading a feed $feed_url = !empty($_POST['feed_url']) ? $_POST['feed_url'] : ''; if ($feed_url) { try { $feed = feedReader::quickParse($feed_url); if ($feed === false) { throw new Exception(__('Cannot retrieve feed URL.')); } if (count($feed->items) == 0) { throw new Exception(__('No items in feed.')); } if ($core->plugins->moduleExists('metadata')) { $meta = new dcMeta($core); } $cur = $core->con->openCursor($core->prefix.'post'); $core->con->begin(); foreach ($feed->items as $item) { $cur->clean(); $cur->user_id = $core->auth->userID(); $cur->post_content = $item->content ? $item->content : $item->description; $cur->post_title = $item->title ? $item->title : text::cutString(html::clean($cur->post_content),60); $cur->post_format = 'xhtml'; $cur->post_status = -2; $cur->post_dt = strftime('%Y-%m-%d %H:%M:%S',$item->TS); try { $post_id = $core->blog->addPost($cur); } catch (Exception $e) { $core->con->rollback(); throw $e; } if (isset($meta)) { foreach ($item->subject as $subject) { $meta->setPostMeta($post_id,'tag',dcMeta::sanitizeMetaID($subject)); } } } $core->con->commit(); http::redirect($p_url.'&imported=1'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } ?> <html> <head> <title><?php echo __('Import/Export'); ?></title> <script type="text/javascript"> //<![CDATA[ <?php echo dcPage::jsVar('dotclear.msg.confirm_full_import', __('Are you sure you want to import a full backup file?')); ?> $(function() { $('#up_single_file').change(function() { if (this.value != '') { $('#public_single_file').val(''); } }); $('#public_single_file').change(function() { if (this.value != '') { $('#up_single_file').val(''); } }); $('#up_full_file').change(function() { if (this.value != '') { $('#public_full_file').val(''); } }); $('#public_full_file').change(function() { if (this.value != '') { $('#up_full_file').val(''); } }); $('#formfull').submit(function() { return window.confirm(dotclear.msg.confirm_full_import); }); }); //]]> </script> <?php echo dcPage::jsPageTabs(); ?> </head> <body> <?php if (!empty($_GET['imported'])) { echo '<p class="message">'.__('Content successfully imported.').'</p>'; } echo '<h2>'.__('Import/Export').'</h2>'; echo '<div class="multi-part" title="'.__('Import').'">'; echo '<h3>'.__('Import a single blog').'</h3>'. '<p>'.sprintf(__('This will import a single blog backup as new content in the current blog: %s.'), '<strong>'.html::escapeHTML($core->blog->name).'</strong>').'</p>'. '<form action="'.$p_url.'" method="post" enctype="multipart/form-data">'. '<fieldset>'. $core->formNonce(). form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE). '<p><label>'.__('Upload a backup file').' '. '<input type="file" id="up_single_file" name="up_single_file" size="20" />'. '</label></p>'. '<p><label>'.__('or pick up a local file in your public directory').' '. form::combo('public_single_file',$public_files). '</label></p>'. '<p><input type="submit" value="'.__('Send').'" /></p>'. '</fieldset>'. '</form>'; if ($core->auth->isSuperAdmin()) { echo '<h3>'.__('Import a full backup file').'</h3>'. '<form action="'.$p_url.'" method="post" enctype="multipart/form-data" id="formfull">'. '<div>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE).'</div>'. '<fieldset>'. $core->formNonce(). form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE). '<p><label>'.__('Upload a backup file').' '. '<input type="file" id="up_full_file" name="up_full_file" size="20" />'. '</label></p>'. '<p><label>'.__('or pick up a local file in your public directory').' '. form::combo('public_full_file',$public_files). '</label></p>'. '<p><strong>'.__('Warning: This will reset all the content of your database, except users.').'</strong></p>'. '<p><input type="submit" value="'.__('Send').'" /></p>'. '</fieldset>'. '</form>'; } echo '<h3>'.__('Import from a feed').'</h3>'. '<p>'.sprintf(__('This will import a feed (RSS or Atom) a as new content in the current blog: %s.'), '<strong>'.html::escapeHTML($core->blog->name).'</strong>').'</p>'. '<form action="'.$p_url.'" method="post">'. '<fieldset>'. $core->formNonce(). '<p><label>'.__('Feed URL:').' '. form::field('feed_url',40,300,html::escapeHTML($feed_url)).'</label></p>'. '<p><input type="submit" value="'.__('Send').'" /></p>'. '</fieldset>'. '</form>'; echo '</div>'; echo '<div class="multi-part" title="'.__('Export').'">'; if ($core->auth->isSuperAdmin()) { echo '<h3>'.__('Export all content').'</h3>'. '<form action="'.$p_url.'" method="post">'. '<p><input name="export_all" type="submit" value="'.__('Export all content').'" />'. $core->formNonce().'</p>'. '</form>'; } echo '<h3>'.__('Export a blog').'</h3>'; $blogs_list = array(); foreach ($core->blogs as $k=>$v) { if ($core->auth->check('admin',$k)) { $blogs_list[html::escapeHTML($v['name']).' ('.$k.')'] = $k; } } echo '<form action="'.$p_url.'" method="post">'. '<p><label class="classic">'.__('Blog to export:').' '. $core->formNonce(). form::combo('blog_export',$blogs_list,$core->blog->id).'</label> '. '<input type="submit" value="'.__('Export').'" /></p>'. '</form>'; echo '</div>'; ?> </body> </html>
©
2018.