'.escape($art['title']).'
-'.$art['snippet'].'
-From 1899213e6cf6a660c22d3170b223135704f12e82 Mon Sep 17 00:00:00 2001
From: ArthurHoaro '.$config->site_description.' '.$art['snippet'].' '.escape($vvb->getLocalURL($uri)) . ' '.__('Source:').' '.escape($article['url']).' '.$config->site_description.' '.$art['content'].' '.escape($vvb->getLocalURL($uri)) . ' '.__('Source:').' '.escape($article['url']).' URL du flux RSS incorrect. Autoblog '. $sitename .' ajouté avec succès.'.$article['title'].'
'.$CONFIG['SITE_TITLE'].'
'.$CONFIG['SITE_DESCRIPTION'].searchForm().''.$CONFIG['SITE_TITLE'].'
'.$CONFIG['SITE_DESCRIPTION'].searchForm().'
'.powered().'';
-}
-
-/* Search for text in articles content and title.
- $textpage = text to search.
-*/
-function search($text)
-{
- global $CONFIG;
- header('Content-Type: text/html; charset=utf-8');
- $txt = urldecode($text);
- echo '';
- if ($i!=count($keys)) { echo ''; }
- echo ' ';
- if ($page>1) { echo ''; }
- echo ' '.$CONFIG['SITE_TITLE'].'
'.$CONFIG['SITE_DESCRIPTION'].searchForm().'
C'est un blog automatisé qui réplique les articles de sebsauvage.net"
-SITE_URL=http://sebsauvage.net/rhaa/
-FEED_URL=http://sebsauvage.net/rhaa/rss_fulltext.php
-DOWNLOAD_MEDIA_FROM=sebsauvage.net
diff --git a/0.2/README.md b/0.2/README.md
deleted file mode 100755
index a071631..0000000
--- a/0.2/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-Projet Autoblog serie 0.2
-==============
-
-- version VroumVroumBlog 0.2.11
-
-Auteurs: BohwaZ (VVB) & Arthur Hoaro, Mitsukarenai, Oros (index ferme d'autoblogs)
-
-Licence: Domaine Public
-
-- À propos du Projet Autoblog
-
-lire: http://sebsauvage.net/streisand.me/fr/
-
-- Présentation et Instructions pour VVB 0.2 (par BohwaZ)
-
-voir: http://blogs.kd2.org/bohwaz/?2011/07/14/369-auto-blog-vroumvroumblog-et-effet-streisand
-
-- Présentation et Instructions pour la ferme d'autoblogs (par Arthur Hoaro)
-
-voir: http://wiki.hoa.ro/doku.php?id=web%3Aferme-autoblog
-
-- Améliorations pour la ferme d'autoblogs et XSAF (par Mitsukarenai et Oros)
-
-voir: https://www.suumitsu.eu/2012/08/autoblogs-petites-ameliorations/
diff --git a/0.2/autoblog.php b/0.2/autoblog.php
deleted file mode 100755
index 647d4d1..0000000
--- a/0.2/autoblog.php
+++ /dev/null
@@ -1,897 +0,0 @@
-='))
- die("This software requires PHP version 5.3.0 at least, yours is ".phpversion());
-
-if (!class_exists('SQLite3'))
- die("This software requires the SQLite3 PHP extension, and it can't be found on this system!");
-
-libxml_disable_entity_loader(true);
-
-// Config and data file locations
-
-if (file_exists(__DIR__ . '/config.php'))
-{
- require_once __DIR__ . '/config.php';
-}
-
-if (!defined('ROOT_DIR'))
- define('ROOT_DIR', __DIR__);
-
-if (!defined('CONFIG_FILE')) define('CONFIG_FILE', ROOT_DIR . '/vvb.ini');
-if (!defined('ARTICLES_DB_FILE')) define('ARTICLES_DB_FILE', ROOT_DIR . '/articles.db');
-if (!defined('LOCAL_DB_FILE')) define('LOCAL_DB_FILE', ROOT_DIR . '/local.db');
-if (!defined('MEDIA_DIR')) define('MEDIA_DIR', ROOT_DIR . '/media');
-
-if (!defined('LOCAL_URL'))
-{
- // Automagic URL discover
- $path = substr(ROOT_DIR, strlen($_SERVER['DOCUMENT_ROOT']));
- $path = (!empty($path[0]) && $path[0] != '/') ? '/' . $path : $path;
- $path = (substr($path, -1) != '/') ? $path . '/' : $path;
- define('LOCAL_URL', 'http' . (!empty($_SERVER['HTTPS']) ? 's' : '') . '://' . $_SERVER['HTTP_HOST'] . $path);
-}
-
-if (!defined('LOCAL_URI'))
-{
- // filename
- define('LOCAL_URI', (basename($_SERVER['SCRIPT_FILENAME']) == 'index.php' ? '' : basename($_SERVER['SCRIPT_FILENAME'])) . '?');
-}
-
-if (!function_exists('__'))
-{
- // Translation?
- function __($str)
- {
- if ($str == '_date_format')
- return '%A %e %B %Y at %H:%M';
- else
- return $str;
- }
-}
-
-// ERROR MANAGEMENT
-
-class VroumVroum_User_Exception extends Exception {}
-
-class VroumVroum_Feed_Exception extends Exception
-{
- static public function getXMLErrorsAsString($errors)
- {
- $out = array();
-
- foreach ($errors as $error)
- {
- $return = $xml[$error->line - 1] . "\n";
- $return .= str_repeat('-', $error->column) . "^\n";
-
- switch ($error->level) {
- case LIBXML_ERR_WARNING:
- $return .= "Warning ".$error->code.": ";
- break;
- case LIBXML_ERR_ERROR:
- $return .= "Error ".$error->code.": ";
- break;
- case LIBXML_ERR_FATAL:
- $return .= "Fatal Error ".$error->code.": ";
- break;
- }
-
- $return .= trim($error->message) .
- "\n Line: ".$error->line .
- "\n Column: ".$error->column;
-
- if ($error->file) {
- $return .= "\n File: ".$error->file;
- }
-
- $out[] = $return;
- }
-
- return $out;
- }
-}
-
-error_reporting(E_ALL);
-
-function exception_error_handler($errno, $errstr, $errfile, $errline )
-{
- // For @ ignored errors
- if (error_reporting() === 0) return;
- throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
-}
-
-function exception_handler($e)
-{
- if ($e instanceOf VroumVroum_User_Exception)
- {
- echo ''.$e->getMessage().'
';
- exit;
- }
-
- $error = "Error happened !\n\n".
- $e->getCode()." - ".$e->getMessage()."\n\nIn: ".
- $e->getFile() . ":" . $e->getLine()."\n\n";
-
- if (!empty($_SERVER['HTTP_HOST']))
- $error .= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n\n";
-
- $error .= $e->getTraceAsString();
- //$error .= print_r($_SERVER, true);
-
- echo $error;
- exit;
-}
-
-set_error_handler("exception_error_handler");
-set_exception_handler("exception_handler");
-
-// CONFIGURATION
-
-class VroumVroum_Config
-{
- public $site_title = '';
- public $site_description = '';
- public $site_url = '';
- public $feed_url = '';
- public $download_media_from = null;
- public $download_media_types = 'jpg,jpeg,png,gif,pdf';
- public $articles_per_page = 10;
- public $update_interval = 3600;
- public $update_timeout = 10;
-
- public function __construct()
- {
- if (!file_exists(CONFIG_FILE))
- throw new VroumVroum_User_Exception("Missing configuration file '".basename(CONFIG_FILE)."'.");
-
- $ini = parse_ini_file(CONFIG_FILE);
-
- foreach ($ini as $key=>$value)
- {
- $key = strtolower($key);
-
- if (!property_exists($this, $key))
- continue; // Unknown config
-
- if (is_string($this->$key) || is_null($this->$key))
- $this->$key = trim((string) $value);
- elseif (is_int($this->$key))
- $this->$key = (int) $value;
- elseif (is_bool($this->$key))
- $this->$key = (bool) $value;
- }
-
- // Check that all required values are filled
- $check = array('site_title', 'site_url', 'feed_url', 'update_timeout', 'update_interval', 'articles_per_page');
- foreach ($check as $c)
- {
- if (!trim($this->$c))
- throw new VroumVroum_User_Exception("Missing or empty configuration value '".$c."' which is required!");
- }
-
- // Default value
- if (is_null($this->download_media_from))
- {
- $this->download_media_from = preg_replace('!^https?://([^/]+).*$!', '\\1', $this->site_url);
- }
- }
-
- public function __set($key, $value)
- {
- return;
- }
-}
-
-// BLOG
-
-class VroumVroum_Blog
-{
- const VERSION = '0.2.11';
-
- protected $articles = null;
- protected $local = null;
-
- public $config = null;
-
- static public function removeHTML($str)
- {
- $str = strip_tags($str);
- $str = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
- return $str;
- }
-
- static public function toURI($str)
- {
- $uri = self::removeHTML(trim($str));
- $uri = substr($uri, 0, 70);
- $uri = preg_replace('/[^\w\d()\p{L}]+/u', '-', $uri);
- $uri = preg_replace('/-{2,}/', '-', $uri);
- $uri = preg_replace('/^-|-$/', '', $uri);
- return $uri;
- }
-
- public function __construct()
- {
- $this->config = new VroumVroum_Config;
-
- $create_articles_db = file_exists(ARTICLES_DB_FILE) ? false : true;
- $create_local_db = file_exists(LOCAL_DB_FILE) ? false : true;
-
- $this->articles = new SQLite3(ARTICLES_DB_FILE);
- $this->local = new SQLite3(LOCAL_DB_FILE);
-
- if ($create_articles_db)
- {
- $this->articles->exec('
- CREATE TABLE articles (
- id INTEGER PRIMARY KEY,
- feed_id TEXT,
- title TEXT,
- uri TEXT,
- url TEXT,
- date INT,
- content TEXT
- );
- CREATE UNIQUE INDEX feed_id ON articles (feed_id);
- CREATE INDEX date ON articles (date);
- ');
- }
-
- if ($create_local_db)
- {
- $this->local->exec('
- CREATE VIRTUAL TABLE search USING fts3 (
- id INT PRIMARY KEY,
- title TEXT,
- content TEXT
- );
-
- CREATE TABLE update_log (
- date INT PRIMARY KEY,
- success INT,
- log TEXT
- );');
- }
-
- $this->local->createFunction('countintegers', array($this, 'sql_countintegers'));
- }
-
- public function getLocalURL($in)
- {
- return LOCAL_URL . LOCAL_URI . (is_array($in) ? $in['uri'] : $in);
- }
-
- protected function log_update($success, $log = '')
- {
- $this->local->exec('INSERT INTO update_log (date, success, log) VALUES (\''.time().'\', \''.(int)(bool)$success.'\',
- \''.$this->articles->escapeString($log).'\');');
-
- // Delete old log
- $this->local->exec('DELETE FROM update_log WHERE date > (SELECT date FROM update_log ORDER BY date DESC LIMIT 100,1);');
-
- return true;
- }
-
- public function insertOrUpdateArticle($feed_id, $title, $url, $date, $content)
- {
- $exists = $this->articles->querySingle('SELECT date, id, title, content FROM articles WHERE feed_id = \''.$this->articles->escapeString($feed_id).'\';', true);
-
- if (empty($exists))
- {
- $uri = self::toURI($title);
-
- if ($this->articles->querySingle('SELECT 1 FROM articles WHERE uri = \''.$this->articles->escapeString($uri).'\';'))
- {
- $uri = date('Y-m-d-') . $uri;
- }
-
- if (!empty($this->config->download_media_from) && !empty($this->config->download_media_types))
- $content = $this->mirrorMediasForArticle($content, $url);
-
- $this->articles->exec('INSERT INTO articles (id, feed_id, title, uri, url, date, content) VALUES (NULL,
- \''.$this->articles->escapeString($feed_id).'\', \''.$this->articles->escapeString($title).'\',
- \''.$this->articles->escapeString($uri).'\', \''.$this->articles->escapeString($url).'\',
- \''.(int)$date.'\', \''.$this->articles->escapeString($content).'\');');
-
- $id = $this->articles->lastInsertRowId();
-
- $title = self::removeHTML($title);
- $content = self::removeHTML($content);
-
- $this->local->exec('INSERT INTO search (id, title, content) VALUES (\''.(int)$id.'\',
- \''.$this->local->escapeString($title).'\', \''.$this->local->escapeString($content).'\');');
- }
- else
- {
- // Doesn't need update
- if ($date == $exists['date'] && $content == $exists['content'] && $title == $exists['title'])
- {
- return false;
- }
-
- $id = $exists['id'];
-
- if ($content != $exists['content'] && !empty($this->config->download_media_from) && !empty($this->config->download_media_types))
- $content = $this->mirrorMediasForArticle($content, $url);
-
- $this->articles->exec('UPDATE articles SET title=\''.$this->articles->escapeString($title).'\',
- url=\''.$this->articles->escapeString($url).'\', content=\''.$this->articles->escapeString($content).'\',
- date=\''.(int)$date.'\' WHERE id = \''.(int)$id.'\';');
-
- $title = self::removeHTML($title);
- $content = self::removeHTML($content);
-
- $this->local->exec('UPDATE search SET title=\''.$this->local->escapeString($title).'\',
- content=\''.$this->local->escapeString($content).'\' WHERE id = \''.(int)$id.'\';');
- }
-
- return $id;
- }
-
- public function mustUpdate()
- {
- if (isset($_GET['update']))
- return true;
-
- $last_update = $this->local->querySingle('SELECT date FROM update_log ORDER BY date DESC LIMIT 1;');
-
- if (!empty($last_update) && (int) $last_update > (time() - $this->config->update_interval))
- return false;
-
- return true;
- }
-
- protected function _getStreamContext()
- {
- return stream_context_create(
- array(
- 'http' => array(
- 'method' => 'GET',
- 'timeout' => $this->config->update_timeout,
- 'header' => "User-Agent: Opera/9.80 (X11; Linux i686; U; fr) Presto/2.2.15 Version/10.10\r\n",
- )
- )
- );
- }
-
- public function update()
- {
- if (!$this->mustUpdate())
- return false;
-
- try {
- $body = file_get_contents($this->config->feed_url, false, $this->_getStreamContext());
- }
- catch (ErrorException $e)
- {
- $this->log_update(false, $e->getMessage() . "\n\n" . (!empty($http_response_header) ? implode("\n", $http_response_header) : ''));
- throw new VroumVroum_Feed_Exception("Can't retrieve feed: ".$e->getMessage());
- }
-
- libxml_use_internal_errors(true);
- $xml = @simplexml_load_string($body);
-
- if (!$xml)
- {
- $errors = VroumVroum_Feed_Exception::getXMLErrorsAsString(libxml_get_errors());
- $this->log_update(false, implode("\n", $errors) . "\n\n" . $body);
- throw new VroumVroum_Feed_Exception("Feed is invalid - XML error: ".implode(" - ", $errors));
- }
-
- $updated = 0;
- $this->local->exec('BEGIN TRANSACTION;');
- $this->articles->exec('BEGIN TRANSACTION;');
-
- if (isset($xml->entry)) // ATOM feed
- {
- foreach ($xml->entry as $item)
- {
- $date = isset($item->published) ? (string) $item->published : (string) $item->updated;
- $guid = !empty($item->id) ? (string)$item->id : (string)$item->link['href'];
-
- $id = $this->insertOrUpdateArticle($guid, (string)$item->title,
- (string)$item->link['href'], strtotime($date), (string)$item->content);
-
- if ($id !== false)
- $updated++;
- }
- }
- elseif (isset($xml->item)) // RSS 1.0 /RDF
- {
- foreach ($xml->item as $item)
- {
- $guid = (string) $item->attributes('http://www.w3.org/1999/02/22-rdf-syntax-ns#')->about ?: (string)$item->link;
- $date = (string) $item->children('http://purl.org/dc/elements/1.1/')->date;
-
- $id = $this->insertOrUpdateArticle($guid, (string)$item->title, (string)$item->link,
- strtotime($date), (string) $item->children('http://purl.org/rss/1.0/modules/content/'));
-
- if ($id !== false)
- $updated++;
- }
- }
- elseif (isset($xml->channel->item)) // RSS 2.0
- {
- foreach ($xml->channel->item as $item)
- {
- $content = (string) $item->children('http://purl.org/rss/1.0/modules/content/');
- $guid = !empty($item->guid) ? (string) $item->guid : (string) $item->link;
-
- if (empty($content) && !empty($item->description))
- $content = (string) $item->description;
-
- $id = $this->insertOrUpdateArticle($guid, (string)$item->title, (string)$item->link,
- strtotime((string) $item->pubDate), $content);
-
- if ($id !== false)
- $updated++;
- }
- }
- else
- {
- throw new VroumVroum_Feed_Exception("Unknown feed type?!");
- }
-
- $this->log_update(true, $updated . " elements updated");
-
- $this->articles->exec('END TRANSACTION;');
- $this->local->exec('END TRANSACTION;');
-
- return $updated;
- }
-
- public function listArticlesByPage($page = 1)
- {
- $nb = $this->config->articles_per_page;
- $begin = ($page - 1) * $nb;
- $res = $this->articles->query('SELECT * FROM articles ORDER BY date DESC LIMIT '.(int)$begin.','.(int)$nb.';');
-
- $out = array();
-
- while ($row = $res->fetchArray(SQLITE3_ASSOC))
- {
- $out[] = $row;
- }
-
- return $out;
- }
-
- public function listLastArticles()
- {
- return array_merge($this->listArticlesByPage(1), $this->listArticlesByPage(2));
- }
-
- public function countArticles()
- {
- return $this->articles->querySingle('SELECT COUNT(*) FROM articles;');
- }
-
- public function getArticleFromURI($uri)
- {
- return $this->articles->querySingle('SELECT * FROM articles WHERE uri = \''.$this->articles->escapeString($uri).'\';', true);
- }
-
- public function sql_countintegers($in)
- {
- return substr_count($in, ' ');
- }
-
- public function searchArticles($query)
- {
- $res = $this->local->query('SELECT id, title, snippet(search, "", "", "...", -1, -40) AS snippet
- FROM search
- WHERE search MATCH \''.$this->local->escapeString($query).'\'
- ORDER BY countintegers(offsets(search)) DESC
- LIMIT 0,100;');
-
- $out = array();
-
- while ($row = $res->fetchArray(SQLITE3_ASSOC))
- {
- $row['url'] = $this->getLocalURL($this->articles->querySingle('SELECT uri FROM articles WHERE id = \''.(int)$row['id'].'\';'));
- $out[] = $row;
- }
-
- return $out;
- }
-
- public function mirrorMediasForArticle($content, $url)
- {
- if (!file_exists(MEDIA_DIR))
- {
- mkdir(MEDIA_DIR);
- }
-
- $extensions = explode(',', preg_quote($this->config->download_media_types, '!'));
- $extensions = implode('|', $extensions);
-
- $hosts = explode(',', preg_quote($this->config->download_media_from, '!'));
- $hosts = implode('|', $hosts);
- $hosts = str_replace('\\*', '.*', $hosts);
-
- $schemes = array('http', 'https');
-
- $from = parse_url($url);
- $from['path'] = preg_replace('![^/]*$!', '', $from['path']);
-
- preg_match_all('!(src|href)\s*=\s*[\'"]?([^"\'<>\s]+\.(?:'.$extensions.'))[\'"]?!i', $content, $match, PREG_SET_ORDER);
-
- foreach ($match as $m)
- {
- $url = parse_url($m[2]);
-
- if (empty($url['scheme']))
- $url['scheme'] = $from['scheme'];
-
- if (empty($url['host']))
- $url['host'] = $from['host'];
-
- if (!in_array(strtolower($url['scheme']), $schemes))
- continue;
-
- if (!preg_match('!^(?:'.$hosts.')$!i', $url['host']))
- continue;
-
- if ($url['path'][0] != '/')
- $url['path'] = $from['path'] . $url['path'];
-
- $filename = basename($url['path']);
- $url = $url['scheme'] . '://' . $url['host'] . $url['path'];
-
- $filename = substr(sha1($url), -8) . '.' . substr(preg_replace('![^\w\d_.-]!', '', $filename), -64);
- $copied = false;
-
- if (!file_exists(MEDIA_DIR . '/' . $filename))
- {
- try {
- $copied = $this->_copy($url, MEDIA_DIR . '/' . $filename);
- }
- catch (ErrorException $e)
- {
- // Ignore copy errors
- }
- }
-
- if ($copied)
- {
- $content = str_replace($m[0], $m[1] . '="media/'.$filename.'" data-original-source="'.$url.'"', $content);
- }
- else
- {
- $content = str_replace($m[0], $m[1] . '="'.$url.'"', $content);
- }
- }
-
- return $content;
- }
-
- /* copy() is buggy with http streams and safe_mode enabled (which is bad), so here's a workaround */
- protected function _copy($from, $to)
- {
- $in = fopen($from, 'r', false, $this->_getStreamContext());
- $out = fopen($to, 'w', false);
- $size = stream_copy_to_stream($in, $out);
- fclose($in);
- fclose($out);
- return $size;
- }
-}
-
-// DISPLAY AND CONTROLLERS
-
-$vvb = new VroumVroum_Blog;
-$config = $vvb->config;
-
-if (isset($_GET['feed'])) // FEED
-{
- header('Content-Type: application/xhtml+xml; charset=utf-8');
- echo '
- '.escape($config->site_title).'
';
-
-if (!empty($config->site_description))
- echo ''.__('Update').'
- '.__('Search').'
- '.$text.'
- '.escape($art['title']).'
- '.__('Not Found').'
- '.(!empty($uri) ? ''.__('Article not found.').'
- '.escape($article['title']).'
- '.strftime(__('_date_format'), $article['date']).'
-
-
Love data
Data is essential
Data must flow
Data must be used
Data is neither good nor bad
There is no illegal data
Data is free
Data can not be owned
No man, machine or system shall interrupt the flow of data
Locking data is a crime against datanity";
-$HTML_footer="";
-
-?>
diff --git a/0.2/icon-logo.svg b/0.2/icon-logo.svg
deleted file mode 100755
index 1b73481..0000000
--- a/0.2/icon-logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/0.2/index.php b/0.2/index.php
deleted file mode 100755
index e57fc2b..0000000
--- a/0.2/index.php
+++ /dev/null
@@ -1,462 +0,0 @@
-loadXML($data) or die('xml malformé');
- $title = $dom->getElementsByTagName('title');
- return $title->item(0)->nodeValue;
- }
-
-function get_link_from_feed($url)
- {
- // get site link from feed
- $data = file_get_contents("$url");
- $xml = simplexml_load_string($data); // quick feed check
- if (isset($xml->entry)) // ATOM feed.
- {$result="true";}
- elseif (isset($xml->item)) // RSS 1.0 /RDF
- {$result="true";}
- elseif (isset($xml->channel->item)) // RSS 2.0
- {$result="true";}
- else
- {$result="false";}
- if($result == "false") { die('le flux n\'a pas une syntaxe valide'); }
- $check = substr($data, 0, 5);
- if($check !== 'channel->link;
- if($channel['link'] === NULL)
- {
- $dom = new DOMDocument;
- $dom->loadXML($data) or die('xml malformé');
- $link = $dom->getElementsByTagName('uri');
- return $link->item(0)->nodeValue;
- }
- else
- {
- return $channel['link'];
- }
- }
-
-function serverUrl()
-{
- $https = (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])=='on')) || $_SERVER["SERVER_PORT"]=='443'; // HTTPS detection.
- $serverport = ($_SERVER["SERVER_PORT"]=='80' || ($https && $_SERVER["SERVER_PORT"]=='443') ? '' : ':'.$_SERVER["SERVER_PORT"]);
- return 'http'.($https?'s':'').'://'.$_SERVER["SERVER_NAME"].$serverport;
-}
-
-function NoProtocolSiteURL($url)
- {
- $siteurlnoprototypes = array("http://", "https://");
- $siteurlnoproto = str_replace($siteurlnoprototypes, "", $url);
- return $siteurlnoproto;
- }
-
-function DetectRedirect($url)
-{
-$response = get_headers($url, 1);
-if(!empty($response['Location']))
- {
- $response2 = get_headers($response['Location'], 1);
- if(!empty($response2['Location']))
- {die('too much redirection');}
- else { return $response['Location']; }
- }
-else
- {
- return $url;
- }
-}
-
-if (isset($_GET['check']))
-{
-$randomtime=rand(86400, 259200); /* intervalle de mise à jour: de 1 à 3 jours (pour éviter que le statut de tous les autoblogs soit rafraichi en bloc et bouffe le CPU) */
-$expire=time() -$randomtime ;
-
-/* SVG minimalistes */
-$svg_vert='';
-$svg_jaune='';
-$svg_rouge='';
-$svg_twitter='';
-$svg_identica='';
-$svg_statusnet='';
-
- if(strpos($_GET['check'], 'twitter') !== FALSE) { header('Content-type: image/svg+xml');die($svg_twitter); }
- if(strpos($_GET['check'], 'identica') !== FALSE) { header('Content-type: image/svg+xml');die($svg_identica); }
- if(strpos($_GET['check'], 'statusnet') !== FALSE) { header('Content-type: image/svg+xml');die($svg_statusnet); }
-
- $errorlog="./".$_GET['check']."/error.log";
- if(file_exists($errorlog) && filemtime($errorlog) < $expire) { unlink($errorlog); } /* errorlog périmé ? Suppression. */
- if(file_exists($errorlog)) /* errorlog existe encore ? se contenter de lire sa taille pour avoir le statut */
- {
- header('Content-type: image/svg+xml');
- if(filesize($errorlog) == "0") {die($svg_vert);}
- else if(filesize($errorlog) == "1") {die($svg_jaune);}
- else {die($svg_rouge);}
- }
- else /* ..sinon, lancer la procédure de contrôle */
- {
- $ini = parse_ini_file("./".$_GET['check']."/vvb.ini") or die;
- header('Content-type: image/svg+xml');
- $headers = get_headers("$ini[FEED_URL]");
- if(empty($headers)) { file_put_contents($errorlog, '..'); die($svg_rouge); } /* le flux est indisponible (typiquement: erreur DNS ou possible censure) - à vérifier */
- $code=explode(" ", $headers[0]);
- if($code[1] == "200") { file_put_contents($errorlog, ''); die($svg_vert);} /* code retour 200: flux disponible */
- else {file_put_contents($errorlog, '.'); die($svg_jaune);} /* autre code retour: un truc a changé (redirection, changement de CMS, .. bref vvb.ini doit être corrigé) */
- }
-}
-
-if (isset($_GET['export']))
-// autoblog exporting
-{
-header('Content-Type: application/json');
-$directory = "./";
-$subdirs = glob($directory . "*");
-foreach($subdirs as $unit)
- {
- if(is_dir($unit))
- {
- $unit=substr($unit, 2);
- $ini = parse_ini_file($unit.'/vvb.ini');
- $config = new stdClass;
- foreach ($ini as $key=>$value)
- {
- $key = strtolower($key);
- $config->$key = $value;
- }
- unset($ini);
- $title=$config->site_title;
- $url=$config->site_url;
- $feed=$config->feed_url;
- $reponse[$unit] = array("$title", "$url", "$feed");
- }
- }
-echo json_encode($reponse);
-die;
-}
-
-if (isset($_GET['feedexport']))
-// autoblog exporting -feed only
-{
-header('Content-Type: application/json');
-$directory = "./";
-$reponse="";
-$subdirs = glob($directory . "*");
-foreach($subdirs as $unit)
- {
- if(is_dir($unit))
- {
- $unit=substr($unit, 2);
- $ini = parse_ini_file($unit.'/vvb.ini');
- $config = new stdClass;
- foreach ($ini as $key=>$value)
- {
- $key = strtolower($key);
- $config->$key = $value;
- }
- unset($ini);
- $feed=$config->feed_url;
- $reponse=$reponse.";$feed";
- }
- }
-$reponse=substr($reponse, 1);
-echo json_encode(explode(';', $reponse));
-die;
-}
-
-if (isset($_GET['sitemap']))
-// url-list sitemap
-{
-header('Content-Type: text/plain');
-$directory = "./";
-$subdirs = glob($directory . "*");
-foreach($subdirs as $unit)
- {
- if(is_dir($unit))
- {
- $unit=substr($unit, 2);
- $proto=$_SERVER['HTTPS']?"https://":"http://";
- echo $proto.$_SERVER['SERVER_NAME'].substr($_SERVER['PHP_SELF'], 0, -9)."$unit/"."\n";
- }
- }
-die;
-}
-
-function escape($str)
-{
- return htmlspecialchars($str, ENT_COMPAT, 'UTF-8', false);
-}
-
-$form = '';
-
-if(!empty($_GET['via_button']) && !empty($_GET['rssurl']) && $_GET['number'] === '17')
-{
- if(isset($_GET['add']) && $_GET['add'] === '1' && !empty($_GET['siteurl']) && !empty($_GET['sitename']))
- {
- $rssurl = DetectRedirect(escape($_GET['rssurl']));
- $siteurl = escape($_GET['siteurl']);
- $foldername = sha1(NoProtocolSiteURL($siteurl));
- if(substr($siteurl, -1) == '/'){ $foldername2 = sha1(NoProtocolSiteURL(substr($siteurl, 0, -1))); }else{ $foldername2 = sha1(NoProtocolSiteURL($siteurl).'/');}
- $sitename = escape($_GET['sitename']);
- $sitedomain1 = preg_split('/\//', $siteurl, 0);
- $sitedomain2=$sitedomain1[2];
- $sitedomain3=explode(".", $sitedomain2);
- $sitedomain3=array_reverse($sitedomain3);
- $sitedomain = $sitedomain3[1].'.'.$sitedomain3[0];
- if(file_exists($foldername) || file_exists($foldername2)) { die('Erreur: l\'autoblog existe déjà .'); }
- if ( mkdir('./'. $foldername, 0755, false) ) {
- $fp = fopen('./'. $foldername .'/index.php', 'w+');
- if( !fwrite($fp, "") )
- {die("Impossible d'écrire le fichier index.php");}
- fclose($fp);
- $fp = fopen('./'. $foldername .'/vvb.ini', 'w+');
- if( !fwrite($fp, '[VroumVroumBlogConfig]
-SITE_TITLE="'. $sitename .'"
-SITE_DESCRIPTION="Ce site n\'est pas le site officiel de '. $sitename .'
C\'est un blog automatisé qui réplique les articles de '. $sitename .'"
-SITE_URL="'. $siteurl .'"
-FEED_URL="'. $rssurl .'"
-DOWNLOAD_MEDIA_FROM='.$sitedomain) )
- {die("Impossible d'écrire le fichier vvb.ini");}
- fclose($fp);
- {die('autoblog crée avec succès. → afficher l\'autoblog');}
- }
-else
- {die("Impossible de créer le répertoire.");}
-
- }
- else
- {
- // checking procedure
- $rssurl = DetectRedirect($_GET['rssurl']);
- $siteurl = get_link_from_feed($rssurl);
- $foldername = sha1(NoProtocolSiteURL($siteurl));
- if(substr($siteurl, -1) == '/'){ $foldername2 = sha1(NoProtocolSiteURL(substr($siteurl, 0, -1))); }else{ $foldername2 = sha1(NoProtocolSiteURL($siteurl).'/');}
- $sitename = get_title_from_feed($rssurl);
- $sitedomain1 = preg_split('/\//', $siteurl, 0);$sitedomain2=$sitedomain1[2];$sitedomain3=explode(".", $sitedomain2);$sitedomain3=array_reverse($sitedomain3);$sitedomain = $sitedomain3[1].'.'.$sitedomain3[0];
- if(file_exists($foldername) || file_exists($foldername2)) { die('Erreur: l\'autoblog existe déjà .'); }
- $form = 'Merci de vérifier les informations suivantes, corrigez si nécessaire.
- ';
- echo $form; die;
- }
-}
-
-if(!empty($_POST['socialaccount']) && !empty($_POST['socialinstance']))
-{
-$socialaccount = strtolower(escape($_POST['socialaccount']));
- if(escape($_POST['socialinstance']) === 'twitter') { $socialinstance = 'twitter'; }
- if(escape($_POST['socialinstance']) === 'identica') { $socialinstance = 'identica'; }
- if(escape($_POST['socialinstance']) === 'statusnet') { $socialinstance = 'statusnet'; }
- $folder = "$socialinstance-$socialaccount";if(file_exists($folder)) { die('Erreur: l\'autoblog existe déjà .'); }
- if($socialinstance === 'twitter') { $siteurl = "http://twitter.com/$socialaccount"; $rssurl = "http://api.twitter.com.nyud.net/1/statuses/user_timeline.rss?screen_name=$socialaccount"; }
- if($socialinstance === 'identica') { $siteurl = "http://identi.ca/$socialaccount"; $rssurl = "http://identi.ca.nyud.net/api/statuses/user_timeline/$socialaccount.rss"; }
- if($socialinstance === 'statusnet' && !empty($_POST['socialurl'])) { $siteurl = "http://".escape($_POST['socialurl'])."/$socialaccount"; $rssurl = "http://".escape($_POST['socialurl'])."/api/statuses/user_timeline/$socialaccount.rss"; }
- $headers = get_headers($rssurl, 1);
- if (strpos($headers[0], '200') == FALSE) {$error[] = "Flux inaccessible (compte inexistant ?)";} else { }
-if( empty($error) ) {
- if( !preg_match('#\.\.|/#', $folder) ) {
- if ( mkdir('./'. $folder, 0755, false) ) {
- $fp = fopen('./'. $folder .'/index.php', 'w+');
- if( !fwrite($fp, "") )
- $error[] = "Impossible d'écrire le fichier index.php";
- fclose($fp);
- $fp = fopen('./'. $folder .'/vvb.ini', 'w+');
- if( !fwrite($fp, '[VroumVroumBlogConfig]
-SITE_TITLE="'.$socialinstance.'-'.$socialaccount.'"
-SITE_DESCRIPTION="AutoMicroblog automatisé de "
-SITE_URL='. $siteurl .'
-FEED_URL="'. $rssurl .'"') )
- $error[] = "Impossible d'écrire le fichier vvb.ini";
- fclose($fp);
- $error[] = 'AutoMicroblog ajouté avec succès.';
- }
- else
- $error[] = "Impossible de créer le répertoire.";
- }
- else
- $error[] = "Nom de site invalide.";
- }
-
-}
-
-
-if( !empty($_POST) && empty($_POST['socialinstance']) ) {
- $error = array();
- if(empty($_POST['rssurl']))
- {$error[] = "Veuillez entrer l'adresse du flux.";}
- if(empty($_POST['number']))
- {$error[] = "Le chiffre. Écrivez le chiffre.";}
- if($_POST['number'] !== '17')
- {$error[] = "C'est pas le bon chiffre.";}
-
- if(empty($error))
- {
- $rssurl = DetectRedirect(escape($_POST['rssurl']));
- if(!empty($_POST['siteurl']))
- {
- // check done, writing out
- $siteurl = escape($_POST['siteurl']);
- $foldername = sha1(NoProtocolSiteURL($siteurl));$sitename = get_title_from_feed($rssurl);
- if(substr($siteurl, -1) == '/'){ $foldername2 = sha1(NoProtocolSiteURL(substr($siteurl, 0, -1))); }else{ $foldername2 = sha1(NoProtocolSiteURL($siteurl).'/');}
- $sitedomain1 = preg_split('/\//', $siteurl, 0);$sitedomain2=$sitedomain1[2];$sitedomain3=explode(".", $sitedomain2);$sitedomain3=array_reverse($sitedomain3);$sitedomain = $sitedomain3[1].'.'.$sitedomain3[0];
- if(file_exists($foldername) || file_exists($foldername2)) { die('Erreur: l\'autoblog existe déjà .'); }
- if ( mkdir('./'. $foldername, 0755, false) ) {
- $fp = fopen('./'. $foldername .'/index.php', 'w+');
- if( !fwrite($fp, "") )
- $error[] = "Impossible d'écrire le fichier index.php";
- fclose($fp);
- $fp = fopen('./'. $foldername .'/vvb.ini', 'w+');
- if( !fwrite($fp, '[VroumVroumBlogConfig]
-SITE_TITLE="'. $sitename .'"
-SITE_DESCRIPTION="Ce site n\'est pas le site officiel de '. $sitename .'
C\'est un blog automatisé qui réplique les articles de '. $sitename .'"
-SITE_URL="'. $siteurl .'"
-FEED_URL="'. $rssurl .'"
-DOWNLOAD_MEDIA_FROM='.$sitedomain) )
- $error[] = "Impossible d'écrire le fichier vvb.ini";
- fclose($fp);
- $error[] = 'autoblog crée avec succès. → afficher l\'autoblog';
- }
- else
- $error[] = "Impossible de créer le répertoire.";
-
-
- }
- else
- {
- // checking procedure
- $rssurl = DetectRedirect($rssurl);
- $siteurl = get_link_from_feed($rssurl);
- $foldername = sha1(NoProtocolSiteURL($siteurl));
- $sitename = get_title_from_feed($rssurl);
- if(substr($siteurl, -1) == '/'){ $foldername2 = sha1(NoProtocolSiteURL(substr($siteurl, 0, -1))); }else{ $foldername2 = sha1(NoProtocolSiteURL($siteurl).'/');}
- $sitedomain1 = preg_split('/\//', $siteurl, 0);$sitedomain2=$sitedomain1[2];$sitedomain3=explode(".", $sitedomain2);$sitedomain3=array_reverse($sitedomain3);$sitedomain = $sitedomain3[1].'.'.$sitedomain3[0];
- if(file_exists($foldername) || file_exists($foldername2)) { die('Erreur: l\'autoblog existe déjà .'); }
- $form = 'Merci de vérifier les informations suivantes, corrigez si nécessaire.
- ';
- }
-
- }
-}
-?>
-
-
-
-
- LE PROJET AUTOBLOG
-
- Voici une liste d'autoblogs hébergés sur (plus d'infos sur le projet).
- Autres fermes
- → Rechercher
- Ajouter un compte social
-
- Ajouter un site web
-Erreur(s) :';
- foreach ( $error AS $value ) {
- echo '
';
-}
-?>
-Si vous souhaitez que héberge un autoblog d'un site,
remplissez le formulaire suivant:
-
-
Pour ajouter facillement un autoblog, glissez ce bouton dans votre barre de marque-pages => ";var%20popup=window.open("","Add%20autoblog",'height=180,width=670');popup.document.writeln('");})();">Projet Autoblog
-Autoblogs hébergés
-
-$value)
- {
- $key = strtolower($key);
- $config->$key = $value;
- }
- $autoblogs[$unit] = '
-
index2 inspiré par Arthur et développé par Mitsu et Oros (Domaine Public)
-
Code source du projet
-".$HTML_footer; } ?>
-
-
-
diff --git a/0.2/xsaf2.php b/0.2/xsaf2.php
deleted file mode 100755
index ff896fc..0000000
--- a/0.2/xsaf2.php
+++ /dev/null
@@ -1,179 +0,0 @@
- $expire) {
- echo "too early";
- die;
- }else{
- unlink($lockfile);
- file_put_contents($lockfile, '');
- }
-}else{
- file_put_contents($lockfile, '');
-}
-
-define('ROOT_DIR', __DIR__);
-function escape($str) {
- return htmlspecialchars($str, ENT_COMPAT, 'UTF-8', false);
-}
-
-function serverUrl() {
- $https = (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])=='on')) || $_SERVER["SERVER_PORT"]=='443'; // HTTPS detection.
- $serverport = ($_SERVER["SERVER_PORT"]=='80' || ($https && $_SERVER["SERVER_PORT"]=='443') ? '' : ':'.$_SERVER["SERVER_PORT"]);
- return 'http'.($https?'s':'').'://'.$_SERVER["SERVER_NAME"].$serverport;
-}
-
-function NoProtocolSiteURL($url) {
- $siteurlnoprototypes = array("http://", "https://");
- $siteurlnoproto = str_replace($siteurlnoprototypes, "", $url);
- return $siteurlnoproto;
-}
-
-libxml_use_internal_errors(true);
-// $max_exec_time = temps max d'exécution en seconde
-function xsafimport($xsafremote, $max_exec_time) {
- echo "\n*Traitement $xsafremote en maximum $max_exec_time secondes";
- $max_exec_time+=time()-1; // -1 car l'import prend environ 1 seconde
-
- $json_import = file_get_contents($xsafremote);
- if(!empty($json_import)) {
- $to_update=array();
- foreach (json_decode($json_import) as $value) {
- $infos="";
- if(count($value)==3 && !empty($value[0]) && !empty($value[1]) && !empty($value[2])) {
- $sitename = $value[0];
- $siteurl = escape($value[1]);
- $rssurl = escape($value[2]);
- if(strpos($siteurl, 'twitter.com') !== FALSE or strpos($siteurl, 'identi.ca') !== FALSE or strpos($sitename, 'statusnet-') !== FALSE) {$social=TRUE;} else {$social=FALSE;}
- if($social==FALSE) {
- $foldername = sha1(NoProtocolSiteURL($siteurl));
- if(substr($siteurl, -1) == '/'){ $foldername2 = sha1(NoProtocolSiteURL(substr($siteurl, 0, -1))); }else{ $foldername2 = sha1(NoProtocolSiteURL($siteurl).'/');}
- } else{
- $foldername = $sitename;$foldername2 = $sitename;
- }
-
- $sitedomain1 = preg_split('/\//', $siteurl, 0);
- $sitedomain2=$sitedomain1[2];
- $sitedomain3=explode(".", $sitedomain2);
- $sitedomain3=array_reverse($sitedomain3);
- $sitedomain = $sitedomain3[1].'.'.$sitedomain3[0];
- if(!file_exists($foldername) && !file_exists($foldername2)) {
- if ( mkdir('./'. $foldername, 0755, false) ) {
- $fp = fopen('./'. $foldername .'/index.php', 'w+');
-
- $response = get_headers($rssurl, 1); // check for redirections
- if(!empty($response['Location'])) {
- $result="false";
- }else{
- $xml = simplexml_load_file($rssurl); // quick feed check
-
- if($xml === FALSE){
- $result="false";
- }elseif (isset($xml->entry)) { // ATOM feed.
- $result="true";
- }elseif (isset($xml->item)) { // RSS 1.0 /RDF
- $result="true";
- }elseif (isset($xml->channel->item)) { // RSS 2.0
- $result="true";
- }else{
- $result="false";
- }
- }
-
- /* autoblog */
- if($social==FALSE and $result!=="false") {
- if( !fwrite($fp, "") ) {
- $infos = "\nImpossible d'écrire le fichier index.php dans ".$foldername;
- fclose($fp);
- }else{
- fclose($fp);
- $fp = fopen('./'. $foldername .'/vvb.ini', 'w+');
- if( !fwrite($fp, '[VroumVroumBlogConfig]
-SITE_TITLE="'. $sitename .'"
-SITE_DESCRIPTION="Ce site n\'est pas le site officiel de '. $sitename .'
C\'est un blog automatisé qui réplique les articles de '. $sitename .'"
-SITE_URL="'. $siteurl .'"
-FEED_URL="'. $rssurl .'"
-DOWNLOAD_MEDIA_FROM='.$sitedomain) ){
- fclose($fp);
- $infos = "\nImpossible d'écrire le fichier vvb.ini dans ".$foldername;
- }else{
- fclose($fp);
- $infos = "\nautoblog crée avec succès : $foldername";
- $to_update[]=serverUrl().preg_replace("/(.*)\/(.*)$/i","$1/".$foldername , $_SERVER['SCRIPT_NAME']); // url of the new autoblog
- }
- }
- }
- /* automicroblog */
- else if($social!==FALSE and $result!=="false"){
- if( !fwrite($fp, "") ){
- $infos = "\nImpossible d'écrire le fichier index.php dans ".$foldername;
- fclose($fp);
- }else{
- fclose($fp);
- $fp = fopen('./'. $foldername .'/vvb.ini', 'w+');
- if( !fwrite($fp, '[VroumVroumBlogConfig]
-SITE_TITLE="'. $sitename .'"
-SITE_DESCRIPTION="AutoMicroblog automatisé de "
-SITE_URL="'. $siteurl .'"
-FEED_URL="'. $rssurl .'"') ){
- fclose($fp);
- $infos = "\nImpossible d'écrire le fichier vvb.ini dans ".$foldername;
- }else{
- fclose($fp);
- $infos = "\nautomicroblog crée avec succès : $foldername";
- $to_update[]=serverUrl().preg_replace("/(.*)\/(.*)$/i","$1/".$foldername , $_SERVER['SCRIPT_NAME']); // url of the new autoblog
- }
- }
- } else {
- $infos = "\n$rssurl -> flux invalide";
- }
- /* end of file writing */
- }else {
- $infos = "\nImpossible de créer le répertoire ".$foldername;
- }
- } else {
- /*$infos = "\nFin d'itération ou Le répertoire ".$foldername." existe déjà ($sitename;$siteurl;$rssurl)";*/
- }
- if(DEBUG){
- echo $infos;
- }
- }
- echo "\n time : ".(time() - $max_exec_time);
- if(time() >= $max_exec_time){
- break;
- }
- }
- /*if(!empty($to_update)){
- if(DEBUG){
- echo "\nupdate of autoblogs ...";
- }
- // because it's could be very long, we finish by updating new autoblogs
- foreach ($to_update as $url) {
- get_headers($url);
- }
- if(DEBUG){
- echo "done\n\n";
- }
- }*/
- }
- return;
-}
-
-/* And now, the XSAF links to be imported, with maximal execusion time for import in second ! */
-xsafimport('https://raw.github.com/mitsukarenai/xsaf-bootstrap/master/2.json', 5);
-//xsafimport('https://www.ecirtam.net/autoblogs/?export', 5);
-//xsafimport('https://autoblog.suumitsu.eu/?export', 5);
-
-if(DEBUG) {
- echo "\n\nXSAF import finished\n\n";
-}
-die;
-?>
From fd9f5db323590df9dfa38370c2d2cd35873b2848 Mon Sep 17 00:00:00 2001
From: Mitsukarenai
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
+ case 'moved':
+ return 'Autoblog "'.$autoblog_title.'": site distant redirigé (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
+ case 'not_found':
+ return 'Autoblog "'.$autoblog_title.'": site distant introuvable (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
+ case 'remote_error':
+ return 'Autoblog "'.$autoblog_title.'": site distant a problème serveur (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
+ case 'available':
+ return 'Autoblog "'.$autoblog_title.'": site distant à nouveau opérationnel (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
+ case 'new_autoblog_added':
+ return 'Autoblog "'.$autoblog_title.'" ajouté (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
+ }
+}
+
function displayXML_tmp() {
header('Content-type: application/rss+xml; charset=utf-8');
echo '
-'.$e->getMessage().'
';
- exit;
- }
-
- $error = "Error happened !\n\n".
- $e->getCode()." - ".$e->getMessage()."\n\nIn: ".
- $e->getFile() . ":" . $e->getLine()."\n\n";
-
- if (!empty($_SERVER['HTTP_HOST']))
- $error .= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n\n";
-
- $error .= $e->getTraceAsString();
- //$error .= print_r($_SERVER, true);
-
- echo $error;
- exit;
-}
-
-set_error_handler("exception_error_handler");
-set_exception_handler("exception_handler");
-
-// CONFIGURATION
-
-class VroumVroum_Config
-{
- public $site_type = '';
- public $site_title = '';
- public $site_description = '';
- public $site_url = '';
- public $feed_url = '';
- public $articles_per_page = 10;
- public $update_interval = 3600;
- public $update_timeout = 10;
-
- public function __construct()
- {
- if (!file_exists(CONFIG_FILE))
- throw new VroumVroum_User_Exception("Missing configuration file '".basename(CONFIG_FILE)."'.");
-
- $ini = parse_ini_file(CONFIG_FILE);
-
- foreach ($ini as $key=>$value)
- {
- $key = strtolower($key);
-
- if (!property_exists($this, $key))
- continue; // Unknown config
-
- if (is_string($this->$key) || is_null($this->$key))
- $this->$key = trim((string) $value);
- elseif (is_int($this->$key))
- $this->$key = (int) $value;
- elseif (is_bool($this->$key))
- $this->$key = (bool) $value;
- }
-
- // Check that all required values are filled
- $check = array('site_type', 'site_title', 'site_url', 'feed_url', 'update_timeout', 'update_interval', 'articles_per_page');
- foreach ($check as $c)
- {
- if (!trim($this->$c))
- throw new VroumVroum_User_Exception("Missing or empty configuration value '".$c."' which is required!");
- }
-
- }
-
- public function __set($key, $value)
- {
- return;
- }
-}
-
-// BLOG
-
-class VroumVroum_Blog
-{
- protected $articles = null;
- protected $local = null;
-
- public $config = null;
-
- static public function removeHTML($str)
- {
- $str = strip_tags($str);
- $str = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
- return $str;
- }
-
- static public function toURI($str)
- {
- $uri = self::removeHTML(trim($str));
- $uri = substr($uri, 0, 70);
- $uri = preg_replace('/[^\w\d()\p{L}]+/u', '-', $uri);
- $uri = preg_replace('/-{2,}/', '-', $uri);
- $uri = preg_replace('/^-|-$/', '', $uri);
- return $uri;
- }
-
- public function __construct()
- {
- $this->config = new VroumVroum_Config;
-
- $create_articles_db = file_exists(ARTICLES_DB_FILE) ? false : true;
-
- $this->articles = new SQLite3(ARTICLES_DB_FILE);
-
- if ($create_articles_db)
- {
- $this->articles->exec('
- CREATE TABLE articles (
- id INTEGER PRIMARY KEY,
- feed_id TEXT,
- title TEXT,
- uri TEXT,
- url TEXT,
- date INT,
- content TEXT
- );
- CREATE TABLE update_log (
- date INT PRIMARY KEY,
- success INT,
- log TEXT
- );
- CREATE UNIQUE INDEX feed_id ON articles (feed_id);
- CREATE INDEX date ON articles (date);
- ');
- }
-
- $this->articles->createFunction('countintegers', array($this, 'sql_countintegers'));
- }
-
- public function getLocalURL($in)
- {
- return "./?".(is_array($in) ? $in['uri'] : $in);
- }
-
- protected function log_update($success, $log = '')
- {
- $this->articles->exec('INSERT INTO update_log (date, success, log) VALUES (\''.time().'\', \''.(int)(bool)$success.'\',
- \''.$this->articles->escapeString($log).'\');');
-
- // Delete old log
- $this->articles->exec('DELETE FROM update_log WHERE date > (SELECT date FROM update_log ORDER BY date DESC LIMIT 100,1);');
-
- return true;
- }
-
- public function insertOrUpdateArticle($feed_id, $title, $url, $date, $content)
- {
- $exists = $this->articles->querySingle('SELECT date, id, title, content FROM articles WHERE feed_id = \''.$this->articles->escapeString($feed_id).'\';', true);
-
- if (empty($exists))
- {
- $uri = self::toURI($title);
-
- if ($this->articles->querySingle('SELECT 1 FROM articles WHERE uri = \''.$this->articles->escapeString($uri).'\';'))
- {
- $uri = date('Y-m-d-') . $uri;
- }
-
- $content = $this->mirrorMediasForArticle($content, $url);
-
- $this->articles->exec('INSERT INTO articles (id, feed_id, title, uri, url, date, content) VALUES (NULL,
- \''.$this->articles->escapeString($feed_id).'\', \''.$this->articles->escapeString($title).'\',
- \''.$this->articles->escapeString($uri).'\', \''.$this->articles->escapeString($url).'\',
- \''.(int)$date.'\', \''.$this->articles->escapeString($content).'\');');
-
- $id = $this->articles->lastInsertRowId();
-
- $title = self::removeHTML($title);
- $content = self::removeHTML($content);
-
- }
- else
- {
- // Doesn't need update
- if ($date == $exists['date'] && $content == $exists['content'] && $title == $exists['title'])
- {
- return false;
- }
-
- $id = $exists['id'];
-
- if ($content != $exists['content'])
- $content = $this->mirrorMediasForArticle($content, $url);
-
- $this->articles->exec('UPDATE articles SET title=\''.$this->articles->escapeString($title).'\',
- url=\''.$this->articles->escapeString($url).'\', content=\''.$this->articles->escapeString($content).'\',
- date=\''.(int)$date.'\' WHERE id = \''.(int)$id.'\';');
-
- $title = self::removeHTML($title);
- $content = self::removeHTML($content);
-
- }
-
- return $id;
- }
-
- public function mustUpdate()
- {
- if (isset($_GET['update']))
- return true;
-
- $last_update = $this->articles->querySingle('SELECT date FROM update_log ORDER BY date DESC LIMIT 1;');
-
- if (!empty($last_update) && (int) $last_update > (time() - $this->config->update_interval))
- return false;
-
- return true;
- }
-
- protected function _getStreamContext()
- {
- return stream_context_create(
- array(
- 'http' => array(
- 'method' => 'GET',
- 'timeout' => $this->config->update_timeout,
- 'header' => "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:20.0; Autoblogs; +https://github.com/mitsukarenai/Projet-Autoblog/) Gecko/20100101 Firefox/20.0\r\n",
- )
- )
- );
- }
-
- public function update()
- {
- if (!$this->mustUpdate())
- return false;
-
- try {
- $body = file_get_contents($this->config->feed_url, false, $this->_getStreamContext());
- }
- catch (ErrorException $e)
- {
- $this->log_update(false, $e->getMessage() . "\n\n" . (!empty($http_response_header) ? implode("\n", $http_response_header) : ''));
- throw new VroumVroum_Feed_Exception("Can't retrieve feed: ".$e->getMessage());
- }
-
- libxml_use_internal_errors(true);
- $xml = @simplexml_load_string($body);
-
- if (!$xml)
- {
- $errors = VroumVroum_Feed_Exception::getXMLErrorsAsString(libxml_get_errors());
- $this->log_update(false, implode("\n", $errors) . "\n\n" . $body);
- throw new VroumVroum_Feed_Exception("Feed is invalid - XML error: ".implode(" - ", $errors));
- }
-
- $updated = 0;
- $this->articles->exec('BEGIN TRANSACTION;');
-
- if (isset($xml->entry)) // ATOM feed
- {
- foreach ($xml->entry as $item)
- {
- $date = isset($item->published) ? (string) $item->published : (string) $item->updated;
- $guid = !empty($item->id) ? (string)$item->id : (string)$item->link['href'];
-
- $id = $this->insertOrUpdateArticle($guid, (string)$item->title,
- (string)$item->link['href'], strtotime($date), (string)$item->content);
-
- if ($id !== false)
- $updated++;
- }
- }
- elseif (isset($xml->item)) // RSS 1.0 /RDF
- {
- foreach ($xml->item as $item)
- {
- $guid = (string) $item->attributes('http://www.w3.org/1999/02/22-rdf-syntax-ns#')->about ?: (string)$item->link;
- $date = (string) $item->children('http://purl.org/dc/elements/1.1/')->date;
-
- $id = $this->insertOrUpdateArticle($guid, (string)$item->title, (string)$item->link,
- strtotime($date), (string) $item->children('http://purl.org/rss/1.0/modules/content/'));
-
- if ($id !== false)
- $updated++;
- }
- }
- elseif (isset($xml->channel->item)) // RSS 2.0
- {
- foreach ($xml->channel->item as $item)
- {
- $content = (string) $item->children('http://purl.org/rss/1.0/modules/content/');
- $guid = !empty($item->guid) ? (string) $item->guid : (string) $item->link;
-
- if (empty($content) && !empty($item->description))
- $content = (string) $item->description;
-
- $id = $this->insertOrUpdateArticle($guid, (string)$item->title, (string)$item->link,
- strtotime((string) $item->pubDate), $content);
-
- if ($id !== false)
- $updated++;
- }
- }
- else
- {
- throw new VroumVroum_Feed_Exception("Unknown feed type?!");
- }
-
- $this->log_update(true, $updated . " elements updated");
-
- $this->articles->exec('END TRANSACTION;');
-
- return $updated;
- }
-
- public function listArticlesByPage($page = 1)
- {
- $nb = $this->config->articles_per_page;
- $begin = ($page - 1) * $nb;
- $res = $this->articles->query('SELECT * FROM articles ORDER BY date DESC LIMIT '.(int)$begin.','.(int)$nb.';');
-
- $out = array();
-
- while ($row = $res->fetchArray(SQLITE3_ASSOC))
- {
- $out[] = $row;
- }
-
- return $out;
- }
-
- public function listLastArticles()
- {
- return array_merge($this->listArticlesByPage(1), $this->listArticlesByPage(2));
- }
-
- public function countArticles()
- {
- return $this->articles->querySingle('SELECT COUNT(*) FROM articles;');
- }
-
- public function getArticleFromURI($uri)
- {
- return $this->articles->querySingle('SELECT * FROM articles WHERE uri = \''.$this->articles->escapeString($uri).'\';', true);
- }
-
- public function sql_countintegers($in)
- {
- return substr_count($in, ' ');
- }
-
- public function searchArticles($query)
- {
- $res = $this->articles->query('SELECT id, uri, title, content
- FROM articles
- WHERE content LIKE \'%'.$this->articles->escapeString($query).'%\'
- ORDER BY id DESC
- LIMIT 0,100;');
-
- $out = array();
-
- while ($row = $res->fetchArray(SQLITE3_ASSOC))
- {
- $row['url'] = $this->getLocalURL($this->articles->querySingle('SELECT uri FROM articles WHERE id = \''.(int)$row['id'].'\';'));
- $out[] = $row;
- }
-
- return $out;
- }
-
- public function mirrorMediasForArticle($content, $url)
- {
- if (!file_exists(MEDIA_DIR))
- {
- mkdir(MEDIA_DIR);
- }
-
- $schemes = array('http', 'https');
- $extensions = explode(',', preg_quote('jpg,jpeg,png,apng,gif,svg,pdf,odt,ods,epub,webp,wav,mp3,ogg,aac,wma,flac,opus,mp4,webm', '!'));
- $extensions = implode('|', $extensions);
-
- $from = parse_url($url);
- if( isset($from['path']) ) { // not exist if http://exemple.com
- $from['path'] = preg_replace('![^/]*$!', '', $from['path']);
- }else{
- $from['path'] = '';
- }
-
- preg_match_all('!(src|href)\s*=\s*[\'"]?([^"\'<>\s]+\.(?:'.$extensions.'))[\'"]?!i', $content, $match, PREG_SET_ORDER);
-
- foreach ($match as $m)
- {
- $url = parse_url($m[2]);
-
- if (empty($url['scheme']))
- $url['scheme'] = $from['scheme'];
-
- if (empty($url['host']))
- $url['host'] = $from['host'];
-
- if (!in_array(strtolower($url['scheme']), $schemes))
- continue;
-
- if ($url['path'][0] != '/')
- $url['path'] = $from['path'] . $url['path'];
-
- $filename = basename($url['path']);
- $url = $url['scheme'] . '://' . $url['host'] . $url['path'];
-
- $filename = substr(sha1($url), -8) . '.' . substr(preg_replace('![^\w\d_.-]!', '', $filename), -64);
- $copied = false;
-
- if (!file_exists(MEDIA_DIR . '/' . $filename))
- {
- try {
- $copied = $this->_copy($url, MEDIA_DIR . '/' . $filename);
- }
- catch (ErrorException $e)
- {
- // Ignore copy errors
- }
- }
- $content = str_replace($m[0], $m[1] . '="'.'media/'.$filename.'" data-original-source="'.$url.'"', $content);
- }
- return $content;
- }
-
- /* copy() is buggy with http streams and safe_mode enabled (which is bad), so here's a workaround */
- protected function _copy($from, $to)
- {
- $in = fopen($from, 'r', false, $this->_getStreamContext());
- $out = fopen($to, 'w', false);
- $size = stream_copy_to_stream($in, $out);
- fclose($in);
- fclose($out);
- return $size;
- }
-}
-
-// DISPLAY AND CONTROLLERS
-
-$vvb = new VroumVroum_Blog;
-$config = $vvb->config;
-$site_type = escape($config->site_type);
-
-if (isset($_GET['feed'])) // FEED
-{
- header('Content-Type: application/atom+xml; charset=UTF-8');
- echo '
-
'.escape_content($art['content']).']]>
- PROJET AUTOBLOG'. (strlen(HEAD_TITLE) > 0 ? ' ~ '. HEAD_TITLE : '') .'
-
- '.escape($config->site_title).'
';
-
-if (!empty($config->site_description))
- echo '
⇐ retour index'.__('Update').'
- '.__('Search').'
- '.$text.'
- '.escape($art['title']).'
- '.__('Not Found').'
- '.(!empty($uri) ? ''.escape($article['title']).'
- '.strftime(__('_date_format'), $article['date']).'
-
-
- Site: '. $siteurl .'
- RSS: '.$rssurl.'
- Folder: '. $folder ,
- 'admin@'.$_SERVER['SERVER_NAME'],
- $autobHref,
- time()
- );
- }
-
- public function addAvailable($title, $folder, $siteurl, $rssurl) {
- $path = pathinfo( $_SERVER['PHP_SELF'] );
- $autobHref = 'http'.(!empty($_SERVER['HTTPS'])?'s':'').'://'.
- $_SERVER["SERVER_NAME"].':'.$_SERVER["SERVER_PORT"]. $path['dirname'].'/'.$folder;
-
- parent::addItem( 'L\'autoblog "'. $title.'" est de nouveau disponible', $autobHref,
- 'Autoblog : '.$title.'
- Site: '. $siteurl .'
- RSS: '.$rssurl.'
- Folder: '. $folder ,
- 'admin@'.$_SERVER['SERVER_NAME'],
- $autobHref,
- time()
- );
- }
-
- public function addCodeChanged($title, $folder, $siteurl, $rssurl, $code) {
- $path = pathinfo( $_SERVER['PHP_SELF'] );
- $autobHref = 'http'.(!empty($_SERVER['HTTPS'])?'s':'').'://'.
- $_SERVER["SERVER_NAME"].':'.$_SERVER["SERVER_PORT"]. $path['dirname'].'/'.$folder;
-
- parent::addItem( 'L\'autoblog "'. $title.'" a renvoyé un code imprévu', $autobHref,
- 'Code: '. $code .'
- Autoblog : '.$title.'
- Site: '. $siteurl .'
- RSS: '.$rssurl.'
- Folder: '. $folder ,
- 'admin@'.$_SERVER['SERVER_NAME'],
- $autobHref,
- time()
- );
- }
-
- public function addNewAutoblog($title, $folder, $siteurl, $rssurl) {
- $path = pathinfo( $_SERVER['PHP_SELF'] );
- $autobHref = 'http'.(!empty($_SERVER['HTTPS'])?'s':'').'://'.
- $_SERVER["SERVER_NAME"].':'.$_SERVER["SERVER_PORT"]. $path['dirname'].'/'.$folder;
-
- parent::addItem( 'L\'autoblog "'. $title.'" a été ajouté à la ferme', $autobHref,
- 'Autoblog : '.$title.'
- Site: '. $siteurl .'
- RSS: '.$rssurl.'
- Folder: '. $folder ,
- 'admin@'.$_SERVER['SERVER_NAME'],
- $autobHref,
- time()
- );
- }
-}
-
-?>
diff --git a/0.3/config.php b/0.3/config.php
deleted file mode 100755
index 8f98017..0000000
--- a/0.3/config.php
+++ /dev/null
@@ -1,43 +0,0 @@
-SebSauvage et Bohwaz.');
-
-// define( 'ALLOW_FULL_UPDATE', TRUE );
-// define( 'ALLOW_CHECK_UPDATE', TRUE );
-
-/**
- * If you set ALLOW_NEW_AUTOBLOGS to FALSE, the following options do not matter.
- **/
-// define( 'ALLOW_NEW_AUTOBLOGS', TRUE );
-// define( 'ALLOW_NEW_AUTOBLOGS_BY_LINKS', TRUE );
-// define( 'ALLOW_NEW_AUTOBLOGS_BY_SOCIAL', TRUE );
-// define( 'ALLOW_NEW_AUTOBLOGS_BY_BUTTON', TRUE );
-// define( 'ALLOW_NEW_AUTOBLOGS_BY_OPML_FILE', TRUE );
-// define( 'ALLOW_NEW_AUTOBLOGS_BY_OPML_LINK', TRUE );
-// define( 'ALLOW_NEW_AUTOBLOGS_BY_XSAF', TRUE );
-
-/**
- * More about TwitterBridge : https://github.com/mitsukarenai/twitterbridge
- **/
-// define( 'API_TWITTER', FALSE );
-
-/**
- * Import autoblogs from friend's autoblog farm - Add a link to the JSON export
- **/
-$friends_autoblog_farm = array(
- 'https://raw.github.com/mitsukarenai/xsaf-bootstrap/master/3.json',
- // 'https://www.ecirtam.net/autoblogs/?export',
- // 'https://autoblog.suumitsu.eu/?export',
- // 'http://streisand.hoa.ro/?export',
-);
-?>
diff --git a/0.3/docs/docs.txt b/0.3/docs/docs.txt
deleted file mode 100644
index a4c763e..0000000
--- a/0.3/docs/docs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-You can manually add files in the /docs/ directory, such as PDF, docs, images, etc.
-You can also add subfolders in /docs/ for website mirroring. Be sure that your subfolder contains a file named index.html.
-
-Delete this file to hide the 'Autres documents' block in your autoblogs homepage.
diff --git a/0.3/functions.php b/0.3/functions.php
deleted file mode 100755
index b1f68d1..0000000
--- a/0.3/functions.php
+++ /dev/null
@@ -1,302 +0,0 @@
-SebSauvage et Bohwaz.');
-
-// Functions
-function NoProtocolSiteURL($url) {
- $protocols = array("http://", "https://");
- $siteurlnoproto = str_replace($protocols, "", $url);
-
- // Remove the / at the end of string
- if ( $siteurlnoproto[strlen($siteurlnoproto) - 1] == '/' )
- $siteurlnoproto = substr($siteurlnoproto, 0, -1);
-
- // Remove index.php/html at the end of string
- if( strpos($url, 'index.php') || strpos($url, 'index.html') ) {
- $siteurlnoproto = preg_replace('#(.*)/index\.(html|php)$#', '$1', $siteurlnoproto);
- }
-
- return $siteurlnoproto;
-}
-
-
-function DetectRedirect($url)
-{
- if(parse_url($url, PHP_URL_HOST)==FALSE) {
- //die('Not a URL');
- throw new Exception('Not a URL: '. escape ($url) );
- }
- $response = get_headers($url, 1);
- if(!empty($response['Location'])) {
- $response2 = get_headers($response['Location'], 1);
- if(!empty($response2['Location'])) {
- //die('too much redirection');
- throw new Exception('too much redirection: '. escape ($url) );
- }
- else { return $response['Location']; }
- }
- else {
- return $url;
- }
-}
-
-function urlToFolder($url) {
- return sha1(NoProtocolSiteURL($url));
-}
-
-function urlToFolderSlash($url) {
- return sha1(NoProtocolSiteURL($url).'/');
-}
-
-function folderExists($url) {
- return file_exists(AUTOBLOGS_FOLDER . urlToFolder($url)) || file_exists(AUTOBLOGS_FOLDER . urlToFolderSlash($url));
-}
-
-function escape($str) {
- return htmlspecialchars($str, ENT_COMPAT, 'UTF-8', false);
-}
-
-function createAutoblog($type, $sitename, $siteurl, $rssurl, $error = array()) {
- if( $type == 'generic' || empty( $type )) {
- $var = updateType( $siteurl );
- $type = $var['type'];
- if( !empty( $var['name']) ) {
- if( !stripos($siteurl, $var['name'] === false) )
- $sitename = ucfirst($var['name']) . ' - ' . $sitename;
- }
- }
-
- if(folderExists($siteurl)) {
- $error[] = 'Erreur : l\'autoblog '. $sitename .' existe déjà .';
- return $error;
- }
-
- $foldername = AUTOBLOGS_FOLDER . urlToFolderSlash($siteurl);
-
- if ( mkdir($foldername, 0755, false) ) {
-
- /**
- * RSS
- **/
- try { // à déplacer après la tentative de création de l'autoblog crée avec succès ?
- require_once('class_rssfeed.php');
- $rss = new AutoblogRSS(RSS_FILE);
- $rss->addNewAutoblog($sitename, $foldername, $siteurl, $rssurl);
- }
- catch (Exception $e) {
- ;
- }
-
- $fp = fopen($foldername .'/index.php', 'w+');
- if( !fwrite($fp, "") )
- $error[] = "Impossible d'écrire le fichier index.php";
- fclose($fp);
-
- $fp = fopen($foldername .'/vvb.ini', 'w+');
- if( !fwrite($fp, '[VroumVroumBlogConfig]
-SITE_TYPE="'. $type .'"
-SITE_TITLE="'. $sitename .'"
-SITE_DESCRIPTION="Site original : '. $sitename .'"
-SITE_URL="'. $siteurl .'"
-FEED_URL="'. $rssurl .'"
-ARTICLES_PER_PAGE="'. getArticlesPerPage( $type ) .'"
-UPDATE_INTERVAL="'. getInterval( $type ) .'"
-UPDATE_TIMEOUT="'. getTimeout( $type ) .'"') )
- $error[] = "Impossible d'écrire le fichier vvb.ini";
- fclose($fp);
- }
- else
- $error[] = "Impossible de créer le répertoire.";
- updateXML('new_autoblog_added', 'new', $foldername, $sitename, $siteurl, $rssurl); /* éventuellement une conditionnelle ici: if(empty($error)) ? */
- return $error;
-}
-
-function getArticlesPerPage( $type ) {
- switch( $type ) {
- case 'microblog':
- return 20;
- case 'shaarli':
- return 20;
- default:
- return 5;
- }
-}
-
-function getInterval( $type ) {
- switch( $type ) {
- case 'microblog':
- return 300;
- case 'shaarli':
- return 1800;
- default:
- return 3600;
- }
-}
-
-function getTimeout( $type ) {
- switch( $type ) {
- case 'microblog':
- return 30;
- case 'shaarli':
- return 30;
- default:
- return 30;
- }
-}
-
-function updateType($siteurl) {
- if( strpos($siteurl, 'twitter.com') !== FALSE ) {
- return array('type' => 'twitter', 'name' => 'twitter');
- }
- elseif ( strpos( $siteurl, 'identi.ca') !== FALSE ) {
- return array('type' => 'identica', 'name' => 'identica');
- }
- elseif( strpos( $siteurl, 'shaarli' ) !== FALSE ) {
- return array('type' => 'shaarli', 'name' => 'shaarli');
- }
- else
- return array('type' => 'generic', 'name' => '');
-}
-
-function debug($data)
-{
- echo '';
- var_dump($data);
- echo '
';
-}
-
-function __($str)
-{
- switch ($str)
- {
- case 'Search':
- return 'Recherche';
- case 'Update':
- return 'Mise à jour';
- case 'Updating database... Please wait.':
- return 'Mise à jour de la base de données, veuillez patienter...';
- case '%d results for %s':
- return '%d résultats pour la recherche %s';
- case 'Not Found':
- return 'Introuvable';
- case 'Article not found.':
- return 'Cet article n\'a pas été trouvé.';
- case 'Older':
- return 'Plus anciens';
- case 'Newer':
- return 'Plus récents';
- case 'ATOM Feed':
- return 'Flux ATOM';
- case 'Update complete!':
- return 'Mise à jour terminée !';
- case 'Click here to reload this webpage.':
- return 'Cliquez ici pour recharger cette page.';
- case 'Source:':
- return 'Source :';
- case '_date_format':
- return '%A %e %B %Y Ã %H:%M';
- case 'configuration':
- case 'articles':
- return $str;
- case 'Media export':
- return 'Export fichiers media';
- default:
- return $str;
- }
-}
-
-function updateXML($status, $response_code, $autoblog_url, $autoblog_title, $autoblog_sourceurl, $autoblog_sourcefeed)
-{
-$json = json_decode(file_get_contents(RESOURCES_FOLDER.'rss.json'), true);
-$json[] = array(
- 'timestamp'=>time(),
- 'autoblog_url'=>$autoblog_url,
- 'autoblog_title'=>$autoblog_title,
- 'autoblog_sourceurl'=>$autoblog_sourceurl,
- 'autoblog_sourcefeed'=>$autoblog_sourcefeed,
- 'status'=>$status,
- 'response_code'=>$response_code
- );
-file_put_contents(RESOURCES_FOLDER.'rss.json', json_encode($json), LOCK_EX);
-}
-
-function displayXMLstatus_tmp($status, $response_code, $autoblog_url, $autoblog_title, $autoblog_sourceurl, $autoblog_sourcefeed) {
- switch ($status)
- {
- case 'unavailable':
- return 'Autoblog "'.$autoblog_title.'": site distant inaccessible (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
- case 'moved':
- return 'Autoblog "'.$autoblog_title.'": site distant redirigé (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
- case 'not_found':
- return 'Autoblog "'.$autoblog_title.'": site distant introuvable (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
- case 'remote_error':
- return 'Autoblog "'.$autoblog_title.'": site distant a problème serveur (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
- case 'available':
- return 'Autoblog "'.$autoblog_title.'": site distant à nouveau opérationnel (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
- case 'new_autoblog_added':
- return 'Autoblog "'.$autoblog_title.'" ajouté (code '.$response_code.')
Autoblog: '.$autoblog_title.'
Site: '. $autoblog_sourceurl .'
RSS: '.$autoblog_sourcefeed.'';
- }
-}
-
-function displayXML_tmp() {
-header('Content-type: application/rss+xml; charset=utf-8');
-echo '
-
Fermer la fenêtre.
';
- }
- else {
- $form .= '';
- foreach ( $error AS $value )
- $form .= '
';
- }
- }
- catch (Exception $e) {
- $form .= $e->getMessage();
- }
- $form .= 'Fermer la fenêtre.
URL du flux RSS incorrecte.
Fermer la fenêtre.
- Le Projet Autoblog a pour objectif de répliquer les articles d'un blog ou d'un site site web.
- Si l'article source est supprimé, et même si le site d'origine disparaît, les articles restent lisibles sur l'autoblog.
- L'objectif premier de ce projet est de lutter contre la censure et toute sorte de pression...
-
- Voici une liste d'autoblogs hébergés sur - (plus d'infos sur le projet). -
-
- Une mise à jour du Projet Autoblog est disponible !
- → Télécharger la dernière version
- → Important : Consulter la documentation - mise à jour
-
- Si vous souhaitez que héberge un autoblog d'un site,
- remplissez le formulaire suivant:
-
Pour ajouter facilement un autoblog d'un site web, glissez ce bouton dans votre barre de marque-pages → - ";var%20popup=window.open("","Add%20autoblog",'height=180,width=670');popup.document.writeln('");})();"> - Projet Autoblog - -
- Autres fermes - → Rechercher -
- - -'. $value .'
'; - } - if( empty($errors) && DEBUG ) { - echo 'autoblog '. $sitename .' crée avec succès (DL DB : '. var_dump($get_remote_db) .' - DL media : '. var_dump($get_remote_media) .') : '. $foldername .'
'; - if( !ALLOW_REMOTE_DB_DL && !ALLOW_REMOTE_MEDIA_DL ) - echo ''; - } - - /* ============================================================================================================================================================================== */ - /* récupération de la DB distante */ - if($get_remote_db == true && ALLOW_REMOTE_DB_DL ) { - $remote_db = str_replace("?export", $foldername."/articles.db", $xsafremote); - copy($remote_db, './'. $foldername .'/articles.db'); - } - - if($get_remote_media == true && ALLOW_REMOTE_MEDIA_DL ) { - $remote_media=str_replace("?export", $foldername."/?media", $xsafremote); - $json_media_import = file_get_contents($remote_media); - if(!empty($json_media_import)) - { - mkdir('./'.$foldername.'/media/'); - $json_media_import = json_decode($json_media_import, true); - $media_path=$json_media_import['url']; - if(!empty($json_media_import['files'])) { - foreach ($json_media_import['files'] as $value) { - copy($media_path.$value, './'.$foldername.'/media/'.$value); - } - } - } - } - - /* ============================================================================================================================================================================== */ - //TODO : tester si articles.db est une DB valide - //$to_update[] = serverUrl().preg_replace("/(.*)\/(.*)$/i","$1/".$foldername , $_SERVER['SCRIPT_NAME']); // url of the new autoblog - } - - if( DEBUG ) - echo 'time : '.($max_exec_time - time()) .'
'; - if(time() >= $max_exec_time) { - if( DEBUG ) - echo "Time out !
"; - break; - } - } - } - else { - if( DEBUG ) - echo "Format JSON incorrect."; - return false; - } - } - return; -} - -if( DEBUG ) echo ''; -if( ALLOW_NEW_AUTOBLOGS and ALLOW_NEW_AUTOBLOGS_BY_XSAF && !empty($friends_autoblog_farm) ) { - foreach( $friends_autoblog_farm AS $value ) { - if( !empty($value) ) - xsafimport($value, EXEC_TIME); - } - if(DEBUG) echo "XSAF import finished
"; -} -elseif( DEBUG ) - echo "XSAF désactivé. Positionnez les variables ALLOW_NEW_AUTOBLOGS et ALLOW_NEW_AUTOBLOGS_BY_XSAF à TRUE dans le fichier config.php pour l'activer.
"; - -if( DEBUG ) echo ''; -?> diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 87eb396..1a0fa83 --- a/README.md +++ b/README.md @@ -1,27 +1,18 @@ -Projet Autoblog -=============== +Projet Autoblog serie 0.3 +============== -Création, gestion et échange de blogs automatiques contre la censure (à propos: http://sebsauvage.net/streisand.me/fr/ ) +- version VroumVroumBlog 0.3.0 BETA -Branche MASTER: +Auteurs: Mitsu (https://www.suumitsu.eu/), Oros (https://www.ecirtam.net/) et Arthur Hoaro (http://hoa.ro) -- script de migration 0.2 to 0.3 par Arthur Hoaro +Licence: Domaine Public -- Autoblog Project serie 0.3 par Mitsu, Oros, Arthur Hoaro +- À propos du Projet Autoblog -Nouveautés majeures -=================== +lire: http://sebsauvage.net/streisand.me/fr/ -- "ferme" d'autoblogs avec ajout facile par différents formulaires (générique, microblogging, OPML, marque-pages) -- échange de références entre fermes avec XSAF (Cross-Site Autoblog Farming) -- vérification du statut des sites distants, et flux de suivi des changements -- export facile des références, articles et médias -- contrôle de version et alerte de mise à jour -- apparence de l'autoblog selon son type -- CSS utilisateur personnalisable -- hébergement de documents spécifiques +Instructions -Pré-requis techniques -===================== +- uploader les fichiers sur un serveur avec PHP 5.3+ -- serveur web avec PHP 5.3 et son support SQLite +- ..c'est tout. Hackez le code pour apprendre comment ça marche et comment le personnaliser :) From 732c7d5f6c811f1053f1f92301f5abc625956a04 Mon Sep 17 00:00:00 2001 From: Mitsukarenai'.$config->site_description.'
⇐ retour index
'.$art['content'].'
+'.escape($vvb->getLocalURL($uri)) . '
' : '').' + '.__('Article not found.').' +'.__('Source:').' '.escape($article['url']).'
+'; + var_dump($data); + echo ''; +} + +function __($str) +{ + switch ($str) + { + case 'Search': + return 'Recherche'; + case 'Update': + return 'Mise à jour'; + case 'Updating database... Please wait.': + return 'Mise à jour de la base de données, veuillez patienter...'; + case '%d results for %s': + return '%d résultats pour la recherche %s'; + case 'Not Found': + return 'Introuvable'; + case 'Article not found.': + return 'Cet article n\'a pas été trouvé.'; + case 'Older': + return 'Plus anciens'; + case 'Newer': + return 'Plus récents'; + case 'ATOM Feed': + return 'Flux ATOM'; + case 'Update complete!': + return 'Mise à jour terminée !'; + case 'Click here to reload this webpage.': + return 'Cliquez ici pour recharger cette page.'; + case 'Source:': + return 'Source :'; + case '_date_format': + return '%A %e %B %Y à %H:%M'; + case 'configuration': + case 'articles': + return $str; + case 'Media export': + return 'Export fichiers media'; + default: + return $str; + } +} + +function updateXML($status, $response_code, $autoblog_url, $autoblog_title, $autoblog_sourceurl, $autoblog_sourcefeed) +{ +$json = json_decode(file_get_contents(RESOURCES_FOLDER.'rss.json'), true); +$json[] = array( + 'timestamp'=>time(), + 'autoblog_url'=>$autoblog_url, + 'autoblog_title'=>$autoblog_title, + 'autoblog_sourceurl'=>$autoblog_sourceurl, + 'autoblog_sourcefeed'=>$autoblog_sourcefeed, + 'status'=>$status, + 'response_code'=>$response_code + ); +file_put_contents(RESOURCES_FOLDER.'rss.json', json_encode($json), LOCK_EX); +} + +function displayXMLstatus_tmp($status, $response_code, $autoblog_url, $autoblog_title, $autoblog_sourceurl, $autoblog_sourcefeed) { + switch ($status) + { + case 'unavailable': + return 'Autoblog "'.$autoblog_title.'": site distant inaccessible (code '.$response_code.')
URL du flux RSS incorrect.
Fermer la fenêtre.
Autoblog '. $sitename .' ajouté avec succès.
';
+ }
+ else {
+ $form .= '
URL du flux RSS incorrecte.
Fermer la fenêtre.
+ Le Projet Autoblog a pour objectif de répliquer les articles d'un blog ou d'un site site web.
+ Si l'article source est supprimé, et même si le site d'origine disparaît, les articles restent lisibles sur l'autoblog.
+ L'objectif premier de ce projet est de lutter contre la censure et toute sorte de pression...
+
+ Voici une liste d'autoblogs hébergés sur + (plus d'infos sur le projet). +
+
+ Une mise à jour du Projet Autoblog est disponible !
+ → Télécharger la dernière version
+ → Important : Consulter la documentation - mise à jour
+
+ Si vous souhaitez que héberge un autoblog d'un site,
+ remplissez le formulaire suivant:
+
Pour ajouter facilement un autoblog d'un site web, glissez ce bouton dans votre barre de marque-pages → + ";var%20popup=window.open("","Add%20autoblog",'height=180,width=670');popup.document.writeln('");})();"> + Projet Autoblog + +
+ Autres fermes + → Rechercher +
+ + +'. $value .'
'; + } + if( empty($errors) && DEBUG ) { + echo 'autoblog '. $sitename .' crée avec succès (DL DB : '. var_dump($get_remote_db) .' - DL media : '. var_dump($get_remote_media) .') : '. $foldername .'
'; + if( !ALLOW_REMOTE_DB_DL && !ALLOW_REMOTE_MEDIA_DL ) + echo ''; + } + + /* ============================================================================================================================================================================== */ + /* récupération de la DB distante */ + if($get_remote_db == true && ALLOW_REMOTE_DB_DL ) { + $remote_db = str_replace("?export", $foldername."/articles.db", $xsafremote); + copy($remote_db, './'. $foldername .'/articles.db'); + } + + if($get_remote_media == true && ALLOW_REMOTE_MEDIA_DL ) { + $remote_media=str_replace("?export", $foldername."/?media", $xsafremote); + $json_media_import = file_get_contents($remote_media); + if(!empty($json_media_import)) + { + mkdir('./'.$foldername.'/media/'); + $json_media_import = json_decode($json_media_import, true); + $media_path=$json_media_import['url']; + if(!empty($json_media_import['files'])) { + foreach ($json_media_import['files'] as $value) { + copy($media_path.$value, './'.$foldername.'/media/'.$value); + } + } + } + } + + /* ============================================================================================================================================================================== */ + //TODO : tester si articles.db est une DB valide + //$to_update[] = serverUrl().preg_replace("/(.*)\/(.*)$/i","$1/".$foldername , $_SERVER['SCRIPT_NAME']); // url of the new autoblog + } + + if( DEBUG ) + echo 'time : '.($max_exec_time - time()) .'
'; + if(time() >= $max_exec_time) { + if( DEBUG ) + echo "Time out !
"; + break; + } + } + } + else { + if( DEBUG ) + echo "Format JSON incorrect."; + return false; + } + } + return; +} + +if( DEBUG ) echo ''; +if( ALLOW_NEW_AUTOBLOGS and ALLOW_NEW_AUTOBLOGS_BY_XSAF && !empty($friends_autoblog_farm) ) { + foreach( $friends_autoblog_farm AS $value ) { + if( !empty($value) ) + xsafimport($value, EXEC_TIME); + } + if(DEBUG) echo "XSAF import finished
"; +} +elseif( DEBUG ) + echo "XSAF désactivé. Positionnez les variables ALLOW_NEW_AUTOBLOGS et ALLOW_NEW_AUTOBLOGS_BY_XSAF à TRUE dans le fichier config.php pour l'activer.
"; + +if( DEBUG ) echo ''; +?> From d654fb912830ebbc399ec31090fe7e4f99823a92 Mon Sep 17 00:00:00 2001 From: ArthurHoaroAutoblog '. $sitename .' ajouté avec succès.
';
@@ -500,16 +525,16 @@ if(!empty($_POST['socialaccount']) && !empty($_POST['socialinstance']) && ALLOW_
if($socialinstance === 'twitter') {
if( API_TWITTER !== FALSE ) {
$sitetype = 'twitter';
- $siteurl = "http://twitter.com/$socialaccount";
+ $siteurl = 'http://twitter.com/$socialaccount';
$rssurl = API_TWITTER.$socialaccount;
}
else
- $error[] = "Twitter veut mettre à mort son API ouverte. Du coup on peut plus faire ça comme ça.";
+ $error[] = 'Vous devez définir une API Twitter -> RSS dans votre fichier de configuration (see TwitterBridge).';
}
elseif($socialinstance === 'identica') {
$sitetype = 'identica';
- $siteurl = "http://identi.ca/$socialaccount";
- $rssurl = "http://identi.ca/api/statuses/user_timeline/$socialaccount.rss";
+ $siteurl = 'http://identi.ca/$socialaccount';
+ $rssurl = 'http://identi.ca/api/statuses/user_timeline/$socialaccount.rss';
}
elseif($socialinstance === 'statusnet' && !empty($_POST['statusneturl'])) {
$sitetype = 'microblog';
@@ -535,18 +560,22 @@ if(!empty($_POST['socialaccount']) && !empty($_POST['socialinstance']) && ALLOW_
$socialaccount = get_title_from_feed($rssurl);
}
+
if( empty($error) ) {
- // Twitterbridge do NOT allow this user yet => No check
- if( $sitetype != 'twitter' ) {
- $headers = get_headers($rssurl, 1);
- if (strpos($headers[0], '200') == FALSE) {
- $error[] = "Flux inaccessible (compte inexistant ?)";
+ try {
+ // TwitterBridge user will be allowed after Autoblog creation
+ // TODO: Twitter user does not exist ?
+ if($sitetype != 'twitter') {
+ $headers = get_headers($rssurl, 1);
+ if (strpos($headers[0], '200') === FALSE)
+ throw new Exception('Flux inaccessible (compte inexistant ?)');
}
+
+ createAutoblog($sitetype, ucfirst($socialinstance) .' - '. $socialaccount, $siteurl, $rssurl);
+ $success[] = ''.ucfirst($socialinstance) .' - '. $socialaccount.' ajouté avec succès.';
}
- if( empty($error) ) {
- $error = array_merge( $error, createAutoblog($sitetype, ucfirst($socialinstance) .' - '. $socialaccount, $siteurl, $rssurl, $error));
- if( empty($error))
- $success[] = ''.ucfirst($socialinstance) .' - '. $socialaccount.' ajouté avec succès.';
+ catch (Exception $e) {
+ echo $error[] = $e->getMessage();
}
}
}
@@ -574,10 +603,9 @@ if( !empty($_POST['generic']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_L
$siteurl = escape($_POST['siteurl']);
$sitename = get_title_from_feed($rssurl);
- $error = array_merge( $error, createAutoblog('generic', $sitename, $siteurl, $rssurl, $error));
+ createAutoblog('generic', $sitename, $siteurl, $rssurl);
- if( empty($error))
- $success[] = 'Autoblog '. $sitename .' crée avec succès. → afficher l\'autoblog';
+ $success[] = 'Autoblog '. $sitename .' crée avec succès. → afficher l\'autoblog';
}
else {
// checking procedure
@@ -647,7 +675,7 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
if(parse_url($opml_url, PHP_URL_HOST)==FALSE) {
$error[] = "URL du fichier OPML non valide.";
} else {
- if ( ($opml = simplexml_load_file( $opml_url )) !== false ) {
+ if ( ($opml = simplexml_load_string( get_data($opml_url) )) !== false ) {
create_from_opml($opml);
} else {
$error[] = "Impossible de lire le contenu du fichier OPML ou d'accéder à l'URL donnée.";
@@ -678,10 +706,10 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
@@ -694,6 +722,11 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY Voici une liste d'autoblogs hébergés sur (plus d'infos sur le projet).
+ ++ Autres fermes + → Rechercher +
- Autres fermes - → Rechercher -
- +Autoblog '. $sitename .' ajouté avec succès. Autoblog '. $sitename .' ajouté avec succès. Autoblog '. $sitename .' ajouté avec succès.
';
@@ -500,16 +503,16 @@ if(!empty($_POST['socialaccount']) && !empty($_POST['socialinstance']) && ALLOW_
if($socialinstance === 'twitter') {
if( API_TWITTER !== FALSE ) {
$sitetype = 'twitter';
- $siteurl = "http://twitter.com/$socialaccount";
+ $siteurl = 'http://twitter.com/$socialaccount';
$rssurl = API_TWITTER.$socialaccount;
}
else
- $error[] = "Twitter veut mettre à mort son API ouverte. Du coup on peut plus faire ça comme ça.";
+ $error[] = 'Vous devez définir une API Twitter -> RSS dans votre fichier de configuration (see TwitterBridge).';
}
elseif($socialinstance === 'identica') {
$sitetype = 'identica';
- $siteurl = "http://identi.ca/$socialaccount";
- $rssurl = "http://identi.ca/api/statuses/user_timeline/$socialaccount.rss";
+ $siteurl = 'http://identi.ca/$socialaccount';
+ $rssurl = 'http://identi.ca/api/statuses/user_timeline/$socialaccount.rss';
}
elseif($socialinstance === 'statusnet' && !empty($_POST['statusneturl'])) {
$sitetype = 'microblog';
@@ -535,18 +538,19 @@ if(!empty($_POST['socialaccount']) && !empty($_POST['socialinstance']) && ALLOW_
$socialaccount = get_title_from_feed($rssurl);
}
+
if( empty($error) ) {
- // Twitterbridge do NOT allow this user yet => No check
- if( $sitetype != 'twitter' ) {
+ try {
$headers = get_headers($rssurl, 1);
- if (strpos($headers[0], '200') == FALSE) {
- $error[] = "Flux inaccessible (compte inexistant ?)";
+ if (strpos($headers[0], '200') === FALSE) {
+ throw new Exception('Flux inaccessible (compte inexistant ?)');
}
+
+ createAutoblog($sitetype, ucfirst($socialinstance) .' - '. $socialaccount, $siteurl, $rssurl);
+ $success[] = ''.ucfirst($socialinstance) .' - '. $socialaccount.' ajouté avec succès.';
}
- if( empty($error) ) {
- $error = array_merge( $error, createAutoblog($sitetype, ucfirst($socialinstance) .' - '. $socialaccount, $siteurl, $rssurl, $error));
- if( empty($error))
- $success[] = ''.ucfirst($socialinstance) .' - '. $socialaccount.' ajouté avec succès.';
+ catch (Exception $e) {
+ echo $error[] = $e->getMessage();
}
}
}
@@ -574,10 +578,9 @@ if( !empty($_POST['generic']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_L
$siteurl = escape($_POST['siteurl']);
$sitename = get_title_from_feed($rssurl);
- $error = array_merge( $error, createAutoblog('generic', $sitename, $siteurl, $rssurl, $error));
+ createAutoblog('generic', $sitename, $siteurl, $rssurl);
- if( empty($error))
- $success[] = 'Autoblog '. $sitename .' crée avec succès. → afficher l\'autoblog';
+ $success[] = 'Autoblog '. $sitename .' crée avec succès. → afficher l\'autoblog';
}
else {
// checking procedure
From d9e6c5bcf8eb86d6de6aa3b621b22743bffa973e Mon Sep 17 00:00:00 2001
From: Arthur
';
+ $form .= '';
+ $form .= '
';
}
else {
$form .= '';
@@ -559,7 +548,8 @@ if(!empty($_POST['socialaccount']) && !empty($_POST['socialinstance']) && ALLOW_
}
createAutoblog($sitetype, ucfirst($socialinstance) .' - '. $socialaccount, $siteurl, $rssurl);
- $success[] = ''.ucfirst($socialinstance) .' - '. $socialaccount.' ajouté avec succès.';
+ $success[] = '
+ '.ucfirst($socialinstance) .' - '. $socialaccount.' ajouté avec succès.';
}
catch (Exception $e) {
echo $error[] = $e->getMessage();
@@ -592,7 +582,8 @@ if( !empty($_POST['generic']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_L
createAutoblog('generic', $sitename, $siteurl, $rssurl);
- $success[] = 'Autoblog '. $sitename .' crée avec succès. → afficher l\'autoblog';
+ $success[] = '
+ Autoblog '. $sitename .' crée avec succès. → afficher l\'autoblog';
}
else {
// checking procedure
@@ -605,7 +596,7 @@ if( !empty($_POST['generic']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_L
$siteurl = get_link_from_datafeed($datafeed);
$sitename = get_title_from_datafeed($datafeed);
- $form = 'Merci de vérifier les informations suivantes, corrigez si nécessaire.
+ $form = 'Merci de vérifier les informations suivantes, corrigez si nécessaire. Tous les champs doivent être renseignés.
autoblog '. $sitename .' crée avec succès (DL DB : '. var_dump($get_remote_db) .' - DL media : '. var_dump($get_remote_media) .') : '. $foldername .'
'; - if( !ALLOW_REMOTE_DB_DL && !ALLOW_REMOTE_MEDIA_DL ) - echo ''; - } + try { + createAutoblog($sitetype, $sitename, $siteurl, $rssurl); - /* ============================================================================================================================================================================== */ - /* récupération de la DB distante */ - if($get_remote_db == true && ALLOW_REMOTE_DB_DL ) { - $remote_db = str_replace("?export", $foldername."/articles.db", $xsafremote); - copy($remote_db, './'. $foldername .'/articles.db'); - } + if( DEBUG ) { + echo 'autoblog '. $sitename .' crée avec succès (DL DB : '. var_dump($get_remote_db) .' - DL media : '. var_dump($get_remote_media) .') : '. $foldername .'
'; + if( !ALLOW_REMOTE_DB_DL && !ALLOW_REMOTE_MEDIA_DL ) + echo ''; + } - if($get_remote_media == true && ALLOW_REMOTE_MEDIA_DL ) { - $remote_media=str_replace("?export", $foldername."/?media", $xsafremote); - $json_media_import = file_get_contents($remote_media); - if(!empty($json_media_import)) - { - mkdir('./'.$foldername.'/media/'); - $json_media_import = json_decode($json_media_import, true); - $media_path=$json_media_import['url']; - if(!empty($json_media_import['files'])) { - foreach ($json_media_import['files'] as $value) { - copy($media_path.$value, './'.$foldername.'/media/'.$value); + /* ============================================================================================================================================================================== */ + /* récupération de la DB distante */ + if($get_remote_db == true && ALLOW_REMOTE_DB_DL ) { + $remote_db = str_replace("?export", $foldername."/articles.db", $xsafremote); + copy($remote_db, './'. $foldername .'/articles.db'); + } + + if($get_remote_media == true && ALLOW_REMOTE_MEDIA_DL ) { + $remote_media=str_replace("?export", $foldername."/?media", $xsafremote); + $json_media_import = file_get_contents($remote_media); + if(!empty($json_media_import)) + { + mkdir('./'.$foldername.'/media/'); + $json_media_import = json_decode($json_media_import, true); + $media_path=$json_media_import['url']; + if(!empty($json_media_import['files'])) { + foreach ($json_media_import['files'] as $value) { + copy($media_path.$value, './'.$foldername.'/media/'.$value); + } } } } - } - /* ============================================================================================================================================================================== */ - //TODO : tester si articles.db est une DB valide - //$to_update[] = serverUrl().preg_replace("/(.*)\/(.*)$/i","$1/".$foldername , $_SERVER['SCRIPT_NAME']); // url of the new autoblog + /* ============================================================================================================================================================================== */ + //TODO : tester si articles.db est une DB valide + //$to_update[] = serverUrl().preg_replace("/(.*)\/(.*)$/i","$1/".$foldername , $_SERVER['SCRIPT_NAME']); // url of the new autoblog + } + catch (Exception $e) { + if( DEBUG ) + echo $e->getMessage(); + } } if( DEBUG ) From 21bdae95cf742ce3d64fe86cb6fa8b28e9b1102f Mon Sep 17 00:00:00 2001 From: Mitsukarenai