2013-02-18 19:42:10 +01:00
< ? php
2013-03-23 15:07:02 +01:00
2013-04-11 18:27:25 +02:00
/**
* DO NOT EDIT THESE LINES
* You can override these options by setting them in config . php
**/
2013-04-10 13:08:15 +02:00
if ( ! defined ( 'ROOT_DIR' ))
{
define ( 'ROOT_DIR' , dirname ( $_SERVER [ 'SCRIPT_FILENAME' ]));
}
define ( 'LOCAL_URI' , '' );
if ( ! defined ( 'AUTOBLOGS_FOLDER' )) define ( 'AUTOBLOGS_FOLDER' , './autoblogs/' );
if ( ! defined ( 'DOC_FOLDER' )) define ( 'DOC_FOLDER' , './docs/' );
if ( ! defined ( 'RESOURCES_FOLDER' )) define ( 'RESOURCES_FOLDER' , './resources/' );
if ( ! defined ( 'RSS_FILE' )) define ( 'RSS_FILE' , RESOURCES_FOLDER . 'rss.xml' );
date_default_timezone_set ( 'Europe/Paris' );
setlocale ( LC_TIME , 'fr_FR.UTF-8' , 'fr_FR' , 'fr' );
2013-02-18 19:42:10 +01:00
2013-04-11 18:27:25 +02:00
if ( ! defined ( 'ALLOW_FULL_UPDATE' )) define ( 'ALLOW_FULL_UPDATE' , TRUE );
if ( ! defined ( 'ALLOW_CHECK_UPDATE' )) define ( 'ALLOW_CHECK_UPDATE' , TRUE );
// If you set ALLOW_NEW_AUTOBLOGS to FALSE, the following options do not matter.
if ( ! defined ( 'ALLOW_NEW_AUTOBLOGS' )) define ( 'ALLOW_NEW_AUTOBLOGS' , TRUE );
if ( ! defined ( 'ALLOW_NEW_AUTOBLOGS_BY_LINKS' )) define ( 'ALLOW_NEW_AUTOBLOGS_BY_LINKS' , TRUE );
if ( ! defined ( 'ALLOW_NEW_AUTOBLOGS_BY_SOCIAL' )) define ( 'ALLOW_NEW_AUTOBLOGS_BY_SOCIAL' , TRUE );
if ( ! defined ( 'ALLOW_NEW_AUTOBLOGS_BY_BUTTON' )) define ( 'ALLOW_NEW_AUTOBLOGS_BY_BUTTON' , TRUE );
if ( ! defined ( 'ALLOW_NEW_AUTOBLOGS_BY_OPML_FILE' )) define ( 'ALLOW_NEW_AUTOBLOGS_BY_OPML_FILE' , TRUE );
if ( ! defined ( 'ALLOW_NEW_AUTOBLOGS_BY_OPML_LINK' )) define ( 'ALLOW_NEW_AUTOBLOGS_BY_OPML_LINK' , TRUE );
if ( ! defined ( 'ALLOW_NEW_AUTOBLOGS_BY_XSAF' )) define ( 'ALLOW_NEW_AUTOBLOGS_BY_XSAF' , TRUE );
// More about TwitterBridge : https://github.com/mitsukarenai/twitterbridge
if ( ! defined ( 'API_TWITTER' )) define ( 'API_TWITTER' , FALSE );
if ( ! defined ( 'LOGO' )) define ( 'LOGO' , 'icon-logo.svg' );
if ( ! defined ( 'HEAD_TITLE' )) define ( 'HEAD_TITLE' , '' );
if ( ! defined ( 'FOOTER' )) define ( 'FOOTER' , 'D\'après les premières versions de <a href="http://sebsauvage.net">SebSauvage</a> et <a href="http://bohwaz.net/">Bohwaz</a>.' );
2013-04-10 13:08:15 +02:00
// Functions
2013-02-18 19:42:10 +01:00
function NoProtocolSiteURL ( $url ) {
2013-02-23 20:18:22 +01:00
$protocols = array ( " http:// " , " https:// " );
$siteurlnoproto = str_replace ( $protocols , " " , $url );
2013-02-18 19:42:10 +01:00
// Remove the / at the end of string
if ( $siteurlnoproto [ strlen ( $siteurlnoproto ) - 1 ] == '/' )
$siteurlnoproto = substr ( $siteurlnoproto , 0 , - 1 );
2013-02-23 20:18:22 +01:00
// 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 );
}
2013-02-18 19:42:10 +01:00
return $siteurlnoproto ;
}
function DetectRedirect ( $url )
{
2013-03-04 21:40:43 +01:00
if ( parse_url ( $url , PHP_URL_HOST ) == FALSE ) {
2013-03-10 14:48:29 +01:00
//die('Not a URL');
2013-04-04 18:50:02 +02:00
throw new Exception ( 'Not a URL: ' . escape ( $url ) );
2013-03-04 21:40:43 +01:00
}
2013-02-18 19:42:10 +01:00
$response = get_headers ( $url , 1 );
if ( ! empty ( $response [ 'Location' ])) {
$response2 = get_headers ( $response [ 'Location' ], 1 );
if ( ! empty ( $response2 [ 'Location' ])) {
2013-03-10 14:48:29 +01:00
//die('too much redirection');
2013-04-04 18:50:02 +02:00
throw new Exception ( 'too much redirection: ' . escape ( $url ) );
2013-02-18 19:42:10 +01:00
}
else { return $response [ 'Location' ]; }
}
else {
return $url ;
}
}
function urlToFolder ( $url ) {
return sha1 ( NoProtocolSiteURL ( $url ));
}
2013-02-23 20:18:22 +01:00
function urlToFolderSlash ( $url ) {
2013-02-20 20:14:12 +01:00
return sha1 ( NoProtocolSiteURL ( $url ) . '/' );
}
2013-02-23 20:18:22 +01:00
function folderExists ( $url ) {
2013-04-10 13:08:15 +02:00
return file_exists ( AUTOBLOGS_FOLDER . urlToFolder ( $url )) || file_exists ( AUTOBLOGS_FOLDER . urlToFolderSlash ( $url ));
2013-02-23 20:18:22 +01:00
}
2013-02-18 19:42:10 +01:00
function escape ( $str ) {
return htmlspecialchars ( $str , ENT_COMPAT , 'UTF-8' , false );
}
function createAutoblog ( $type , $sitename , $siteurl , $rssurl , $error = array ()) {
2013-02-19 12:20:13 +01:00
if ( $type == 'generic' || empty ( $type )) {
2013-02-18 19:42:10 +01:00
$var = updateType ( $siteurl );
$type = $var [ 'type' ];
2013-03-01 12:14:46 +01:00
if ( ! empty ( $var [ 'name' ]) ) {
if ( ! stripos ( $siteurl , $var [ 'name' ] === false ) )
$sitename = ucfirst ( $var [ 'name' ]) . ' - ' . $sitename ;
}
2013-02-18 19:42:10 +01:00
}
2013-02-23 20:18:22 +01:00
if ( folderExists ( $siteurl )) {
2013-02-27 12:04:05 +01:00
$error [] = 'Erreur : l\'autoblog ' . $sitename . ' existe déjà.' ;
2013-02-18 19:42:10 +01:00
return $error ;
}
2013-02-20 20:14:12 +01:00
2013-04-08 14:05:35 +02:00
$foldername = AUTOBLOGS_FOLDER . urlToFolderSlash ( $siteurl );
2013-02-18 19:42:10 +01:00
2013-04-08 14:05:35 +02:00
if ( mkdir ( $foldername , 0755 , false ) ) {
2013-03-18 10:32:37 +01:00
/**
* RSS
**/
2013-04-11 13:52:55 +02:00
try {
require_once ( 'class_rssfeed.php' );
$rss = new AutoblogRSS ( RSS_FILE );
$rss -> addNewAutoblog ( $sitename , $foldername , $siteurl , $rssurl );
}
catch ( Exception $e ) {
;
}
2013-03-18 10:32:37 +01:00
2013-04-08 14:05:35 +02:00
$fp = fopen ( $foldername . '/index.php' , 'w+' );
2013-04-08 13:59:49 +02:00
if ( ! fwrite ( $fp , " <?php require_once '../autoblog.php'; ?> " ) )
2013-02-18 19:42:10 +01:00
$error [] = " Impossible d'écrire le fichier index.php " ;
fclose ( $fp );
2013-04-08 14:05:35 +02:00
$fp = fopen ( $foldername . '/vvb.ini' , 'w+' );
2013-02-18 19:42:10 +01:00
if ( ! fwrite ( $fp , ' [ VroumVroumBlogConfig ]
SITE_TYPE = " '. $type .' "
SITE_TITLE = " '. $sitename .' "
SITE_DESCRIPTION = " Site original : <a href= \ ''. $siteurl .' \ '>'. $sitename .'</a> "
SITE_URL = " '. $siteurl .' "
FEED_URL = " '. $rssurl .' "
2013-02-23 15:27:29 +01:00
ARTICLES_PER_PAGE = " '. getArticlesPerPage( $type ) .' "
2013-02-18 19:42:10 +01:00
UPDATE_INTERVAL = " '. getInterval( $type ) .' "
2013-02-23 15:27:29 +01:00
UPDATE_TIMEOUT = " '. getTimeout( $type ) .' " ' ) )
2013-02-18 19:42:10 +01:00
$error [] = " Impossible d'écrire le fichier vvb.ini " ;
fclose ( $fp );
}
else
$error [] = " Impossible de créer le répertoire. " ;
return $error ;
}
2013-02-23 15:27:29 +01:00
function getArticlesPerPage ( $type ) {
switch ( $type ) {
case 'microblog' :
return 20 ;
case 'shaarli' :
return 20 ;
default :
return 5 ;
}
}
2013-02-18 19:42:10 +01:00
function getInterval ( $type ) {
switch ( $type ) {
case 'microblog' :
return 300 ;
case 'shaarli' :
return 1800 ;
default :
return 3600 ;
}
}
2013-02-23 15:27:29 +01:00
function getTimeout ( $type ) {
switch ( $type ) {
case 'microblog' :
return 30 ;
case 'shaarli' :
return 30 ;
default :
return 30 ;
}
}
2013-02-18 19:42:10 +01:00
function updateType ( $siteurl ) {
if ( strpos ( $siteurl , 'twitter.com' ) !== FALSE ) {
2013-03-14 18:25:10 +01:00
return array ( 'type' => 'twitter' , 'name' => 'twitter' );
2013-02-18 19:42:10 +01:00
}
elseif ( strpos ( $siteurl , 'identi.ca' ) !== FALSE ) {
2013-03-14 18:25:10 +01:00
return array ( 'type' => 'identica' , 'name' => 'identica' );
2013-02-18 19:42:10 +01:00
}
elseif ( strpos ( $siteurl , 'shaarli' ) !== FALSE ) {
return array ( 'type' => 'shaarli' , 'name' => 'shaarli' );
}
else
return array ( 'type' => 'generic' , 'name' => '' );
}
2013-02-23 20:18:22 +01:00
function debug ( $data )
{
2013-03-12 18:17:16 +01:00
echo '<pre>' ;
var_dump ( $data );
echo '</pre>' ;
2013-02-23 20:18:22 +01:00
}
2013-03-18 12:26:01 +01:00
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 '<b>%d</b> results for <i>%s</i>' :
return '<b>%d</b> résultats pour la recherche <i>%s</i>' ;
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' ;
2013-04-07 13:04:19 +02:00
case 'ATOM Feed' :
return 'Flux ATOM' ;
2013-03-18 12:26:01 +01:00
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 ;
}
}
2013-02-20 20:14:12 +01:00
?>