2013-04-22 12:00:26 +02:00
< ? php
/*
Projet Autoblog 0.3 - beta
Code : https :// github . com / mitsukarenai / Projet - Autoblog
Authors :
Mitsu https :// www . suumitsu . eu /
Oros https :// www . ecirtam . net /
Arthur Hoaro http :// hoa . ro
License : Public Domain
Instructions :
( by default , autoblog creation is allowed : you can set this to " FALSE " in config . php )
( by default , Cross - Site Autoblog Farming [ XSAF ] imports a few autoblogs from https :// github . com / mitsukarenai / xsaf - bootstrap / blob / master / 3. json you can uncomment and add xsafimports in xsaf3 . php ( jump at end of file ) )
( by default , database and media transfer via XSAF is allowed )
- upload all files on your server ( PHP 5.3 + required )
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
- PROFIT !
2013-04-22 12:00:26 +02:00
*/
define ( 'XSAF_VERSION' , 3 );
define ( 'ROOT_DIR' , __DIR__ );
$error = array ();
$success = array ();
if ( file_exists ( " config.php " )){
require_once " config.php " ;
}
if ( file_exists ( " functions.php " )){
require_once " functions.php " ;
} else {
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
echo " functions.php not found! " ;
2013-04-22 12:00:26 +02:00
die ;
}
function get_title_from_feed ( $url ) {
return get_title_from_datafeed ( file_get_contents ( $url ));
}
function get_title_from_datafeed ( $data ) {
if ( $data === false ) { return 'url inaccessible' ; }
$dom = new DOMDocument ;
$dom -> loadXML ( $data ) or die ( 'xml malformé' );
$title = $dom -> getElementsByTagName ( 'title' );
return $title -> item ( 0 ) -> nodeValue ;
}
function get_link_from_feed ( $url ) {
return get_link_from_datafeed ( file_get_contents ( $url ));
}
function get_link_from_datafeed ( $data ) {
if ( $data === false ) { return 'url inaccessible' ; }
$xml = simplexml_load_string ( $data ); // quick feed check
// ATOM feed && RSS 1.0 /RDF && RSS 2.0
if ( ! isset ( $xml -> entry ) && ! isset ( $xml -> item ) && ! isset ( $xml -> channel -> item ))
2013-08-16 16:21:11 +02:00
{ die ( 'le flux n\'a pas une syntaxe valide' );}
2013-04-22 12:00:26 +02:00
$check = substr ( $data , 0 , 5 );
if ( $check !== '<?xml' ) {
die ( 'n\'est pas un flux valide' );
}
$xml = new SimpleXmlElement ( $data );
$channel [ 'link' ] = $xml -> 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 {
2013-06-30 15:07:26 +02:00
return escape ( $channel [ 'link' ]);
2013-04-22 12:00:26 +02:00
}
}
2013-08-31 17:02:06 +02:00
function get_size ( $doc ) {
$symbol = array ( 'o' , 'Kio' , 'Mio' , 'Gio' , 'Tio' );
$size = filesize ( $doc );
$exp = floor ( log ( $size ) / log ( 1024 ));
$nicesize = $size / pow ( 1024 , floor ( $exp ));
return sprintf ( '%d %s' , $nicesize , $symbol [ $exp ]);
}
2013-04-22 12:00:26 +02:00
function serverUrl ( $return_subfolder = false )
{
$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 " ]);
if ( $return_subfolder === true ) {
$path = pathinfo ( $_SERVER [ 'PHP_SELF' ] );
2013-07-19 13:16:25 +02:00
$finalslash = ( $path [ 'dirname' ] != '/' ) ? '/' : '' ;
$subfolder = $path [ 'dirname' ] . $finalslash ;
2013-04-22 12:00:26 +02:00
} else $subfolder = '' ;
return 'http' . ( $https ? 's' : '' ) . '://' . $_SERVER [ " SERVER_NAME " ] . $serverport . $subfolder ;
}
function objectCmp ( $a , $b ) {
return strcasecmp ( $a -> site_title , $b -> site_title );
}
function generate_antibot () {
$letters = array ( 'zéro' , 'un' , 'deux' , 'trois' , 'quatre' , 'cinq' , 'six' , 'sept' , 'huit' , 'neuf' , 'dix' , 'onze' , 'douze' , 'treize' , 'quatorze' , 'quinze' , 'seize' , 'dix-sept' , 'dix-huit' , 'dix-neuf' , 'vingt' );
return $letters [ mt_rand ( 1 , 20 )];
}
function check_antibot ( $number , $text_number ) {
$letters = array ( 'zéro' , 'un' , 'deux' , 'trois' , 'quatre' , 'cinq' , 'six' , 'sept' , 'huit' , 'neuf' , 'dix' , 'onze' , 'douze' , 'treize' , 'quatorze' , 'quinze' , 'seize' , 'dix-sept' , 'dix-huit' , 'dix-neuf' , 'vingt' );
return ( array_search ( $text_number , $letters ) === intval ( $number ) ) ? true : false ;
}
function create_from_opml ( $opml ) {
global $error , $success ;
2013-04-22 15:57:24 +02:00
$cpt = 0 ;
2013-04-22 12:00:26 +02:00
foreach ( $opml -> body -> outline as $outline ) {
if ( ! empty ( $outline [ 'title' ] ) && ! empty ( $outline [ 'text' ] ) && ! empty ( $outline [ 'xmlUrl' ]) && ! empty ( $outline [ 'htmlUrl' ] )) {
try {
$sitename = escape ( $outline [ 'title' ] );
$siteurl = escape ( $outline [ 'htmlUrl' ]);
2013-12-02 20:50:37 +01:00
2013-04-22 15:57:24 +02:00
$sitetype = escape ( $outline [ 'text' ]);
2013-07-07 11:25:36 +02:00
if ( $sitetype != 'microblog' && $sitetype != 'shaarli' && $sitetype != 'twitter' && $sitetype != 'youtube' )
2013-04-22 15:57:24 +02:00
$sitetype = 'generic' ;
$rssurl = DetectRedirect ( escape ( $outline [ 'xmlUrl' ]));
createAutoblog ( $sitetype , $sitename , $siteurl , $rssurl );
2013-04-29 22:06:31 +02:00
$message = 'Autoblog "' . $sitename . '" crée avec succès. → <a target="_blank" href="' . urlToFolder ( $siteurl , $rssurl ) . '">afficher l\'autoblog</a>.' ;
2013-04-22 15:57:24 +02:00
// Do not print iframe on big import (=> heavy and useless)
if ( ++ $cpt < 10 )
2013-04-29 22:06:31 +02:00
$message .= '<iframe width="1" height="1" frameborder="0" src="' . urlToFolder ( $siteurl , $rssurl ) . '/index.php"></iframe>' ;
2013-04-22 16:11:58 +02:00
$success [] = $message ;
2013-04-22 12:00:26 +02:00
}
catch ( Exception $e ) {
$error [] = $e -> getMessage ();
}
}
}
}
/**
* Simple version check
**/
function versionCheck () {
$versionfile = 'version' ;
2013-04-22 11:37:07 +02:00
$lastestUrl = 'https://raw.github.com/mitsukarenai/Projet-Autoblog/master/version' ;
2013-04-22 12:00:26 +02:00
$expire = time () - 84600 ; // 23h30 en secondes
$lockfile = '.versionlock' ;
if ( file_exists ( $lockfile ) && filemtime ( $lockfile ) > $expire ) {
if ( file_get_contents ( $lockfile ) == 'NEW' ) {
// No new version installed
if ( filemtime ( $lockfile ) > filemtime ( $versionfile ) )
return true ;
else unlink ( $lockfile );
}
else return false ;
}
if ( file_exists ( $lockfile ) && filemtime ( $lockfile ) < $expire ) { unlink ( $lockfile ); }
if ( file_get_contents ( $versionfile ) != file_get_contents ( $lastestUrl ) ) {
file_put_contents ( $lockfile , 'NEW' );
return true ;
}
file_put_contents ( $lockfile , '.' );
return false ;
}
$update_available = ( ALLOW_CHECK_UPDATE ) ? versionCheck () : false ;
/**
* RSS Feed
2013-04-29 22:06:31 +02:00
*
2013-04-22 12:00:26 +02:00
**/
if ( ! file_exists ( RESOURCES_FOLDER . 'rss.json' )) {
file_put_contents ( RESOURCES_FOLDER . 'rss.json' , '' , LOCK_EX );
}
2013-04-29 22:06:31 +02:00
if ( isset ( $_GET [ 'rss' ])) {
2013-04-29 22:32:03 +02:00
displayXML ();
2013-04-22 12:00:26 +02:00
die ;
}
/**
* SVG
**/
if ( isset ( $_GET [ 'check' ]))
{
header ( 'Content-type: image/svg+xml' );
$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 */
2013-06-30 17:04:23 +02:00
2013-07-01 19:25:30 +02:00
function svg_status ( $fill , $text , $back )
2013-06-30 17:04:23 +02:00
{
2013-07-01 19:25:30 +02:00
$svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="15" height="15">' . $back . '<text style="font-size:10px;font-weight:bold;text-anchor:middle;font-family:Arial;fill:' . $fill . ';"><tspan x="8" y="14">' . $text . '</tspan></text></svg>' ;
2013-06-30 17:11:02 +02:00
return $svg ;
2013-06-30 17:04:23 +02:00
}
2013-07-01 19:25:30 +02:00
$svg_ok = svg_status ( '#008000' , 'ok' , '' );
$svg_mv = svg_status ( '#0000ff' , 'mv' , '<rect width="100%" height="100%" fill="#ffd800"/>' );
$svg_err = svg_status ( '#000000' , 'err' , '<rect width="100%" height="100%" fill="#ff0000"/>' );
2013-10-14 20:11:42 +02:00
2013-04-22 12:00:26 +02:00
$errorlog = " ./ " . escape ( $_GET [ 'check' ] ) . " /error.log " ;
$oldvalue = null ;
if ( file_exists ( $errorlog )) { $oldvalue = file_get_contents ( $errorlog ); };
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
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 */
2013-04-22 12:00:26 +02:00
{
2013-07-01 19:25:30 +02:00
if ( filesize ( $errorlog ) == " 0 " ) { die ( $svg_ok );}
else if ( filesize ( $errorlog ) == " 1 " ) { die ( $svg_mv );}
else { die ( $svg_err );}
2013-04-22 12:00:26 +02:00
}
else /* ..sinon, lancer la procédure de contrôle */
{
$ini = parse_ini_file ( " ./ " . escape ( $_GET [ 'check' ] ) . " /vvb.ini " ) or die ;
$headers = get_headers ( $ini [ 'FEED_URL' ]);
2013-07-05 19:06:46 +02:00
if ( ! empty ( $headers ))
$code = explode ( " " , $headers [ 0 ]);
2013-12-02 20:50:37 +01:00
else $code = array ();
2013-07-05 19:06:46 +02:00
2013-04-22 12:00:26 +02:00
/* le flux est indisponible (typiquement: erreur DNS ou possible censure) - à vérifier */
2013-07-05 19:06:46 +02:00
if ( empty ( $headers ) || $headers === FALSE || ( ! empty ( $code ) && ( $code [ 1 ] == '500' || $code [ 1 ] == '404' ))) {
2013-04-22 12:00:26 +02:00
if ( $oldvalue !== null && $oldvalue != '..' ) {
updateXML ( 'unavailable' , 'nxdomain' , escape ( $_GET [ 'check' ]), $ini [ 'SITE_TITLE' ], $ini [ 'SITE_URL' ], $ini [ 'FEED_URL' ]);
}
file_put_contents ( $errorlog , '..' );
2013-07-01 19:25:30 +02:00
die ( $svg_err );
2013-04-22 12:00:26 +02:00
}
/* code retour 200: flux disponible */
if ( $code [ 1 ] == " 200 " ) {
if ( $oldvalue !== null && $oldvalue != '' ) {
updateXML ( 'available' , '200' , escape ( $_GET [ 'check' ]), $ini [ 'SITE_TITLE' ], $ini [ 'SITE_URL' ], $ini [ 'FEED_URL' ]);
}
file_put_contents ( $errorlog , '' );
2013-07-01 19:25:30 +02:00
die ( $svg_ok );
2013-04-22 12:00:26 +02:00
}
/* autre code retour: un truc a changé (redirection, changement de CMS, .. bref vvb.ini doit être corrigé) */
else {
if ( $oldvalue !== null && $oldvalue != '.' ) {
updateXML ( 'moved' , '3xx' , escape ( $_GET [ 'check' ]), $ini [ 'SITE_TITLE' ], $ini [ 'SITE_URL' ], $ini [ 'FEED_URL' ]);
}
file_put_contents ( $errorlog , '.' );
2013-07-01 19:25:30 +02:00
die ( $svg_mv );
2013-04-22 12:00:26 +02:00
}
}
}
/**
* JSON Export
**/
if ( isset ( $_GET [ 'export' ])) {
header ( 'Content-Type: application/json' );
$subdirs = glob ( AUTOBLOGS_FOLDER . " * " );
foreach ( $subdirs as $unit ) {
if ( is_dir ( $unit )) {
$ini = parse_ini_file ( $unit . '/vvb.ini' );
2013-10-14 20:11:42 +02:00
$unit = substr ( $unit , 2 );
2013-04-22 12:00:26 +02:00
$config = new stdClass ;
foreach ( $ini as $key => $value ) {
$key = strtolower ( $key );
$config -> $key = $value ;
}
unset ( $ini );
$feed = $config -> feed_url ;
$type = $config -> site_type ;
$title = $config -> site_title ;
$url = $config -> site_url ;
$reponse [ $unit ] = array ( " SITE_TYPE " => " $type " , " SITE_TITLE " => " $title " , " SITE_URL " => " $url " , " FEED_URL " => " $feed " );
}
}
echo json_encode ( array ( " meta " => array ( " xsaf-version " => XSAF_VERSION , " xsaf-db_transfer " => " true " , " xsaf-media_transfer " => " true " ),
" autoblogs " => $reponse ));
die ;
}
/**
* JSON Allowed Twitter accounts export
**/
if ( isset ( $_GET [ 'export_twitter' ])) {
header ( 'Content-Type: application/json' );
$subdirs = glob ( AUTOBLOGS_FOLDER . " * " );
$response = array ();
foreach ( $subdirs as $unit ) {
if ( is_dir ( $unit )) {
$unit = substr ( $unit , 2 );
$ini = parse_ini_file ( $unit . '/vvb.ini' );
if ( $ini [ 'SITE_TYPE' ] == 'twitter' ) {
preg_match ( '#twitter\.com/(.+)#' , $ini [ 'SITE_URL' ], $username );
$response [] = $username [ 1 ];
}
unset ( $ini );
}
}
echo json_encode ( $response );
die ;
}
/**
* OPML Full Export
**/
if ( isset ( $_GET [ 'exportopml' ])) // OPML
{
//header('Content-Type: application/octet-stream');
header ( 'Content-type: text/xml' );
header ( 'Content-Disposition: attachment; filename="autoblogs-' . $_SERVER [ 'SERVER_NAME' ] . '.xml"' );
$opmlfile = new SimpleXMLElement ( '<opml></opml>' );
$opmlfile -> addAttribute ( 'version' , '1.0' );
$opmlhead = $opmlfile -> addChild ( 'head' );
$opmlhead -> addChild ( 'title' , 'Autoblog OPML export from ' . $_SERVER [ 'SERVER_NAME' ] );
$opmlhead -> addChild ( 'dateCreated' , date ( 'r' , time ()));
$opmlbody = $opmlfile -> addChild ( 'body' );
$subdirs = glob ( AUTOBLOGS_FOLDER . " * " );
foreach ( $subdirs as $unit ) {
if ( is_dir ( $unit )) {
2013-10-14 20:11:42 +02:00
$unit = substr ( $unit , 2 );
2013-04-22 12:00:26 +02:00
$ini = parse_ini_file ( $unit . '/vvb.ini' );
$config = new stdClass ;
foreach ( $ini as $key => $value ) {
$key = strtolower ( $key );
$config -> $key = $value ;
}
unset ( $ini );
$outline = $opmlbody -> addChild ( 'outline' );
$outline -> addAttribute ( 'title' , escape ( $config -> site_title ));
$outline -> addAttribute ( 'text' , escape ( $config -> site_type ));
$outline -> addAttribute ( 'htmlUrl' , escape ( $config -> site_url ));
$outline -> addAttribute ( 'xmlUrl' , escape ( $config -> feed_url ));
}
}
echo $opmlfile -> asXML ();
exit ;
}
/**
* Site map
**/
if ( isset ( $_GET [ 'sitemap' ]))
{
header ( 'Content-Type: application/xml' );
$proto = ( ! empty ( $_SERVER [ 'HTTPS' ]) && strtolower ( $_SERVER [ 'HTTPS' ]) == 'on' ) ? " https:// " : " http:// " ;
2013-06-26 09:32:27 +02:00
echo '<?xml version="1.0" encoding="UTF-8"?>' . " \n " . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . " \n " ;
echo " <url> \n <loc> " . $proto . " { $_SERVER [ 'HTTP_HOST' ] } " . str_replace ( '?sitemap' , '' , $_SERVER [ 'REQUEST_URI' ]) . " </loc> \n " ;
echo ' <lastmod>' . date ( 'c' , time ()) . " </lastmod> \n " ;
echo " <changefreq>daily</changefreq> \n </url> \n " ;
2013-04-22 12:00:26 +02:00
$subdirs = glob ( AUTOBLOGS_FOLDER . " * " );
foreach ( $subdirs as $unit ) {
if ( is_dir ( $unit )) {
2013-10-14 20:11:42 +02:00
$unit = substr ( $unit , 2 );
2013-06-26 09:32:27 +02:00
echo " <url> \n <loc> " . $proto . $_SERVER [ 'SERVER_NAME' ] . substr ( $_SERVER [ 'PHP_SELF' ], 0 , - 9 ) . " $unit / " . " </loc> \n " ;
echo ' <lastmod>' . date ( 'c' , filemtime ( $unit )) . " </lastmod> \n " ;
echo " <changefreq>hourly</changefreq> \n </url> \n \n " ;
2013-04-22 12:00:26 +02:00
}
}
echo '</urlset>' ;
die ;
}
/**
* Update ALL autblogs ( except . disabled )
* This action can be very slow and consume CPU if you have a lot of autoblogs
**/
2014-01-04 11:44:50 +01:00
if ( isset ( $_GET [ 'updateall' ]) ) {
2014-01-29 11:42:04 +01:00
$lockfile = " .updatealllock " ;
2014-01-04 11:44:50 +01:00
if ( ! isset ( $_GET [ 'force' ]) ) {
$max_exec_time = time () + 4 ; // scipt have 4 seconds to update autoblogs
$expire = time () - 5 ; // 5 seconds
$lockfile_contents = array ();
if ( file_exists ( $lockfile )){
$lockfile_contents = file_get_contents ( $lockfile );
if ( ! isset ( $lockfile_contents [ 0 ]) || $lockfile_contents [ 0 ] != " a " ) { // détection d'une serialisation
if ( filemtime ( $lockfile ) > $expire ){
echo " too early " ;
die ;
} else {
// need update of all autoblogs
unlink ( $lockfile );
}
2013-05-01 18:41:52 +02:00
}
2014-01-04 11:44:50 +01:00
// else we need to update some autoblogs
}
if ( file_put_contents ( $lockfile , date ( DATE_RFC822 )) === FALSE ) {
echo " Merci d'ajouter des droits d'écriture sur le fichier. " ;
die ;
2013-04-22 12:00:26 +02:00
}
2014-01-04 11:44:50 +01:00
if ( ! empty ( $lockfile_contents )) {
$subdirs = unserialize ( $lockfile_contents );
unset ( $lockfile_contents );
} else {
$subdirs = glob ( AUTOBLOGS_FOLDER . " * " );
}
}
elseif ( ALLOW_FULL_UPDATE ) {
2013-05-01 18:41:52 +02:00
$subdirs = glob ( AUTOBLOGS_FOLDER . " * " );
2014-01-04 11:44:50 +01:00
$max_exec_time = time () * 2 ; // workaround to disable max exec time
}
else {
echo " You're not allowed to force full update. " ;
die ;
}
2013-05-01 18:41:52 +02:00
$todo_subdirs = $subdirs ;
2014-01-04 11:44:50 +01:00
2013-05-01 18:41:52 +02:00
foreach ( $subdirs as $key => $unit ) {
2013-04-22 12:00:26 +02:00
if ( is_dir ( $unit )) {
if ( ! file_exists ( ROOT_DIR . '/' . $unit . '/.disabled' )) {
file_get_contents ( serverUrl () . substr ( $_SERVER [ 'PHP_SELF' ], 0 , - 9 ) . $unit . '/index.php' );
2013-05-01 18:41:52 +02:00
unset ( $todo_subdirs [ $key ]);
2013-04-22 12:00:26 +02:00
}
}
2013-05-01 18:41:52 +02:00
if ( time () >= $max_exec_time ){
break ;
}
2013-04-22 12:00:26 +02:00
}
2013-05-01 18:41:52 +02:00
if ( ! empty ( $todo_subdirs )){
// if update is not finish
// save list of autoblogs who need update
file_put_contents ( $lockfile , serialize ( $todo_subdirs ), LOCK_EX );
echo " Not finish " ;
} else {
echo " Done " ;
}
exit ;
2013-04-22 12:00:26 +02:00
}
$antibot = generate_antibot ();
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
$form = '<form method="POST"><input type="hidden" name="generic" value="1" />' . " \n " . '
< input placeholder = " Adresse du flux RSS/ATOM " type = " text " name = " rssurl " id = " rssurl " >< br >
< input placeholder = " Antibot : écrivez « '. $antibot .' » en chiffre " type = " text " name = " number " >< br >
< input type = " hidden " name = " antibot " value = " '. $antibot .' " />
< input type = " submit " value = " Vérifier " >
2013-04-22 12:00:26 +02:00
</ form > ' ;
/**
* ADD BY BOOKMARK BUTTON
**/
if ( ! empty ( $_GET [ 'via_button' ]) && $_GET [ 'number' ] === '17' && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_BUTTON )
{
$form = '<html><head></head><body>' ;
if ( empty ( $_GET [ 'rssurl' ]) ) {
$form .= '<p>URL du flux RSS incorrect.<br><a href="#" onclick="window.close()">Fermer la fenêtre.</a></p>' ;
}
else {
if ( isset ( $_GET [ 'add' ]) && $_GET [ 'add' ] === '1' && ! empty ( $_GET [ 'siteurl' ]) && ! empty ( $_GET [ 'sitename' ])) {
try {
$rssurl = DetectRedirect ( escape ( $_GET [ 'rssurl' ]));
$siteurl = escape ( $_GET [ 'siteurl' ]);
$sitename = escape ( $_GET [ 'sitename' ]);
$sitetype = updateType ( $siteurl ); // Disabled input doesn't send POST data
$sitetype = $sitetype [ 'type' ];
2013-04-22 15:57:24 +02:00
createAutoblog ( $sitetype , $sitename , $siteurl , $rssurl );
2013-04-22 12:00:26 +02:00
if ( empty ( $error )) {
2013-04-29 22:06:31 +02:00
$form .= '<iframe width="1" height="1" frameborder="0" src="' . urlToFolder ( $siteurl , $rssurl ) . '/index.php"></iframe>' ;
$form .= '<p><span style="color:darkgreen">Autoblog <a href="' . urlToFolder ( $siteurl , $rssurl ) . '">' . $sitename . '</a> ajouté avec succès.</span><br>' ;
2013-04-22 12:00:26 +02:00
}
else {
$form .= '<ul>' ;
foreach ( $error AS $value )
$form .= '<li>' . $value . '</li>' ;
$form .= '</ul>' ;
}
}
catch ( Exception $e ) {
$form .= $e -> getMessage ();
}
$form .= '<a href="#" onclick="window.close()">Fermer la fenêtre.</a></p>' ;
}
else {
try {
$rssurl = DetectRedirect ( escape ( $_GET [ 'rssurl' ]));
$datafeed = file_get_contents ( $rssurl );
if ( $datafeed !== false ) {
$siteurl = get_link_from_datafeed ( $datafeed );
$sitename = get_title_from_datafeed ( $datafeed );
$sitetype = updateType ( $siteurl );
$sitetype = $sitetype [ 'type' ];
$form .= ' < span style = " color:blue " > Merci de vérifier les informations suivantes , corrigez si nécessaire .</ span >< br >
< form method = " GET " >
< input type = " hidden " name = " via_button " value = " 1 " >< input type = " hidden " name = " add " value = " 1 " >< input type = " hidden " name = " number " value = " 17 " >
< input style = " width:30em; " type = " text " name = " sitename " id = " sitename " value = " '. $sitename .' " >< label for = " sitename " >& larr ; titre du site ( auto ) </ label >< br >
< input style = " width:30em; " placeholder = " Adresse du site " type = " text " name = " siteurl " id = " siteurl " value = " '. $siteurl .' " >< label for = " siteurl " >& larr ; page d\ ' accueil ( auto ) </ label >< br >
< input style = " width:30em; " placeholder = " Adresse du flux RSS/ATOM " type = " text " name = " rssurl " id = " rssurl " value = " '. $rssurl .' " >< label for = " rssurl " >& larr ; adresse du flux </ label >< br >
< input style = " width:30em; " type = " text " name = " sitetype " id = " sitetype " value = " '. $sitetype .' " disabled >< label for = " sitetype " >& larr ; type de site </ label >< br >
< input type = " submit " value = " Créer " ></ form > ' ;
}
else {
$form .= '<p>URL du flux RSS incorrecte.<br><a href="#" onclick="window.close()">Fermer la fenêtre.</a></p>' ;
}
}
catch ( Exception $e ) {
$form .= $e -> getMessage () . '<br><a href="#" onclick="window.close()">Fermer la fenêtre.</a></p>' ;
}
}
}
$form .= '</body></html>' ;
echo $form ; die ;
}
/**
* ADD BY SOCIAL / SHAARLI
**/
2013-04-30 00:13:20 +02:00
if ( ! empty ( $_POST [ 'socialinstance' ]) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_SOCIAL )
2013-06-30 16:04:54 +02:00
{
2013-04-30 00:13:20 +02:00
$socialinstance = strtolower ( escape ( $_POST [ 'socialinstance' ]));
$socialaccount = ( ! empty ( $_POST [ 'socialaccount' ])) ? strtolower ( escape ( $_POST [ 'socialaccount' ])) : false ;
if ( $socialaccount === false && $socialinstance !== 'shaarli' )
$error [] = 'Le compte social doit être renseigné.' ;
2013-06-30 16:04:54 +02:00
elseif ( ! empty ( $_POST [ 'number' ]) && ! empty ( $_POST [ 'antibot' ]) && check_antibot ( $_POST [ 'number' ], $_POST [ 'antibot' ])) {
2013-04-22 12:00:26 +02:00
if ( $socialinstance === 'twitter' ) {
2013-04-30 00:13:20 +02:00
if ( API_TWITTER !== FALSE ) {
2013-04-22 12:00:26 +02:00
$sitetype = 'twitter' ;
2013-04-29 23:32:39 +02:00
$siteurl = 'http://twitter.com/' . $socialaccount ;
2013-07-01 19:25:30 +02:00
if ( API_TWITTER === 'LOCAL' ) {
$rssurl = serverUrl ( true ) . 'twitter2feed.php?u=' . $socialaccount ;
}
else {
$rssurl = API_TWITTER . $socialaccount ;
2013-05-10 13:17:27 +02:00
// check
$twitterbridge = get_headers ( $rssurl , 1 );
if ( $twitterbridge [ '0' ] == 'HTTP/1.1 403 Forbidden' ) { $error [] = " La twitterbridge a refusé ce nom d'utilisateur: <br> \n <pre> " . htmlentities ( $twitterbridge [ 'X-twitterbridge' ]) . '</pre>' ; }
2013-07-01 19:25:30 +02:00
}
2013-04-22 12:00:26 +02:00
}
else
2013-04-22 15:57:24 +02:00
$error [] = 'Vous devez définir une API Twitter -> RSS dans votre fichier de configuration (see <a href="https://github.com/mitsukarenai/twitterbridge">TwitterBridge</a>).' ;
2013-04-22 12:00:26 +02:00
}
elseif ( $socialinstance === 'statusnet' && ! empty ( $_POST [ 'statusneturl' ])) {
$sitetype = 'microblog' ;
$siteurl = NoProtocolSiteURL ( escape ( $_POST [ 'statusneturl' ]));
try {
$rssurl = DetectRedirect ( " http:// " . $siteurl . " /api/statuses/user_timeline/ $socialaccount .rss " );
$siteurl = DetectRedirect ( " http:// " . $siteurl . " / $socialaccount " );
}
catch ( Exception $e ) {
echo $error [] = $e -> getMessage ();
}
}
elseif ( $socialinstance === 'shaarli' && ! empty ( $_POST [ 'shaarliurl' ])) {
$sitetype = 'shaarli' ;
$siteurl = NoProtocolSiteURL ( escape ( $_POST [ 'shaarliurl' ]));
try {
$siteurl = DetectRedirect ( " http:// " . $siteurl . " / " );
}
catch ( Exception $e ) {
echo $error [] = $e -> getMessage ();
}
$rssurl = $siteurl . " ?do=rss " ;
$socialaccount = get_title_from_feed ( $rssurl );
}
2013-06-28 11:43:54 +02:00
elseif ( $socialinstance === 'youtube' ) {
2013-06-30 16:40:02 +02:00
$sitetype = 'youtube' ;
2013-06-28 11:43:54 +02:00
$siteurl = 'https://www.youtube.com/user/' . $socialaccount ;
$rssurl = 'https://gdata.youtube.com/feeds/base/users/' . $socialaccount . '/uploads?alt=atom&orderby=published' ;
}
2013-04-22 12:00:26 +02:00
if ( empty ( $error ) ) {
2013-04-22 15:57:24 +02:00
try {
$headers = get_headers ( $rssurl , 1 );
if ( strpos ( $headers [ 0 ], '200' ) === FALSE )
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
throw new Exception ( 'Flux inaccessible (compte inexistant ?)' );
2013-04-22 15:57:24 +02:00
createAutoblog ( $sitetype , ucfirst ( $socialinstance ) . ' - ' . $socialaccount , $siteurl , $rssurl );
2013-04-29 22:06:31 +02:00
$success [] = '<iframe width="1" height="1" frameborder="0" src="' . urlToFolder ( $siteurl , $rssurl ) . ' / index . php " ></iframe>
< b style = " color:darkgreen " > '.ucfirst($socialinstance) .' - '. $socialaccount.' < a href = " '. urlToFolder( $siteurl , $rssurl ) .' " > ajouté avec succès </ a >.</ b > ' ;
2013-04-22 12:00:26 +02:00
}
2013-04-22 15:57:24 +02:00
catch ( Exception $e ) {
echo $error [] = $e -> getMessage ();
2013-04-22 12:00:26 +02:00
}
}
}
else
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
$error [] = 'Antibot : chiffres incorrects.' ;
2013-04-22 12:00:26 +02:00
}
/**
* ADD BY GENERIC LINK
**/
if ( ! empty ( $_POST [ 'generic' ]) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_LINKS ) {
if ( empty ( $_POST [ 'rssurl' ]))
{ $error [] = " Veuillez entrer l'adresse du flux. " ;}
if ( empty ( $_POST [ 'number' ]) || empty ( $_POST [ 'antibot' ]) )
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
{ $error [] = " Vous êtes un bot ? " ;}
2013-04-22 12:00:26 +02:00
elseif ( ! check_antibot ( $_POST [ 'number' ], $_POST [ 'antibot' ]))
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
{ $error [] = " Antibot : ce n'est pas le bon nombre. " ;}
2013-04-22 12:00:26 +02:00
if ( empty ( $error )) {
try {
2013-08-16 16:21:11 +02:00
$rssurl = parse_url ( $_POST [ 'rssurl' ]);
2014-02-14 10:36:31 +01:00
if ( ! isset ( $rssurl [ 'query' ])) $rssurl [ 'query' ] = '' ;
2013-08-16 16:21:11 +02:00
$rssurl = $rssurl [ 'scheme' ] . '://' . $rssurl [ 'host' ] . $rssurl [ 'path' ] . '?' . html_entity_decode ( $rssurl [ 'query' ]);
$rssurl = DetectRedirect ( $rssurl );
2013-04-22 12:00:26 +02:00
if ( ! empty ( $_POST [ 'siteurl' ])) {
$siteurl = escape ( $_POST [ 'siteurl' ]);
$sitename = get_title_from_feed ( $rssurl );
2013-04-22 15:57:24 +02:00
createAutoblog ( 'generic' , $sitename , $siteurl , $rssurl );
2013-04-22 12:00:26 +02:00
2013-04-29 22:06:31 +02:00
$success [] = '<iframe width="1" height="1" frameborder="0" src="' . urlToFolder ( $siteurl , $rssurl ) . ' / index . php " ></iframe>
< b style = " color:darkgreen " > Autoblog '. $sitename .' crée avec succès .</ b > & rarr ; < a target = " _blank " href = " '. urlToFolder( $siteurl , $rssurl ) .' " > afficher l\ 'autoblog</a>' ;
2013-04-22 12:00:26 +02:00
}
else {
// checking procedure
$datafeed = file_get_contents ( $rssurl );
if ( $datafeed === false ) {
$error [] = 'URL "' . $rssurl . '" inaccessible.' ;
}
$sitetype = 'generic' ;
$siteurl = get_link_from_datafeed ( $datafeed );
$sitename = get_title_from_datafeed ( $datafeed );
2013-04-29 22:06:31 +02:00
$form = ' < span style = " color:blue " > Merci de vérifier les informations suivantes , corrigez si nécessaire . Tous les champs doivent être renseignés .</ span >< br >
2013-04-22 12:00:26 +02:00
< form method = " POST " >< input type = " hidden " name = " generic " value = " 1 " />
< input style = " color:black " type = " text " id = " sitename " value = " '. $sitename .' " '.( $datafeed === false?' ':' disabled ').' >< label for = " sitename " >& larr ; titre du site ( auto ) </ label >< br >
< input placeholder = " Adresse du site " type = " text " name = " siteurl " id = " siteurl " value = " '. $siteurl .' " >< label for = " siteurl " >& larr ; page d\ ' accueil ( auto ) </ label >< br >
< input placeholder = " Adresse du flux RSS/ATOM " type = " text " name = " rssurl " id = " rssurl " value = " '. $rssurl .' " >< label for = " rssurl " >& larr ; adresse du flux </ label >< br >
< input placeholder = " " Type de site " type= " text " name= " sitetype " id= " sitetype " value= " '.$sitetype.' " '.( $datafeed === false?'':'disabled').'><label for= " sitetype " >← type de site</label><br>
< input placeholder = " Antibot: '. escape( $_POST['antibot'] ) .' en chiffre " type = " text " name = " number " value = " '. escape( $_POST['number'] ) .' " >< label for = " number " >& larr ; antibot </ label >< br >
< input type = " hidden " name = " antibot " value = " '. escape( $_POST['antibot'] ) .' " />< input type = " submit " value = " Créer " ></ form > ' ;
}
}
catch ( Exception $e ) {
echo $error [] = $e -> getMessage ();
}
}
}
/**
* ADD BY OPML File
**/
if ( ! empty ( $_POST [ 'opml_file' ]) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_OPML_FILE ) {
if ( empty ( $_POST [ 'number' ]) || empty ( $_POST [ 'antibot' ]) )
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
{ $error [] = " Vous êtes un bot ? " ;}
2013-04-22 12:00:26 +02:00
elseif ( ! check_antibot ( $_POST [ 'number' ], $_POST [ 'antibot' ]))
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
{ $error [] = " Antibot : ce n'est pas le bon nombre. " ;}
2013-04-22 12:00:26 +02:00
if ( empty ( $error )) {
if ( is_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ])) {
$opml = null ;
if ( ( $opml = simplexml_load_file ( $_FILES [ 'file' ][ 'tmp_name' ])) !== false ) {
create_from_opml ( $opml );
}
else
$error [] = " Impossible de lire le contenu du fichier OPML. " ;
unlink ( $_FILES [ 'file' ][ 'tmp_name' ]);
} else {
$error [] = " Le fichier n'a pas été envoyé. " ;
}
}
}
/**
* ADD BY OPML Link
**/
if ( ! empty ( $_POST [ 'opml_link' ]) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY_OPML_LINK ) {
if ( empty ( $_POST [ 'number' ]) || empty ( $_POST [ 'antibot' ]) )
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
{ $error [] = " Vous êtes un bot ? " ;}
2013-04-22 12:00:26 +02:00
elseif ( ! check_antibot ( $_POST [ 'number' ], $_POST [ 'antibot' ]))
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
{ $error [] = " Antibot : ce n'est pas le bon nombre. " ;}
2013-04-22 12:00:26 +02:00
if ( empty ( $_POST [ 'opml_url' ] ))
{ $error [] = 'Le lien est incorrect.' ;}
if ( empty ( $error )) {
$opml_url = escape ( $_POST [ 'opml_url' ]);
if ( parse_url ( $opml_url , PHP_URL_HOST ) == FALSE ) {
$error [] = " URL du fichier OPML non valide. " ;
} else {
2013-04-22 16:09:49 +02:00
if ( ( $opml = simplexml_load_file ( $opml_url )) !== false ) {
2013-04-22 12:00:26 +02:00
create_from_opml ( $opml );
} else {
$error [] = " Impossible de lire le contenu du fichier OPML ou d'accéder à l'URL donnée. " ;
}
}
}
}
?>
<! DOCTYPE html >
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
< html lang = " fr " dir = " ltr " >
< head >
2013-04-22 12:00:26 +02:00
< title > Projet Autoblog < ? php if ( strlen ( HEAD_TITLE ) > 0 ) echo " | " . HEAD_TITLE ; ?> </title>
2014-03-03 22:03:24 +01:00
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " charset = " utf-8 " />
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
< meta content = " initial-scale=1.0, user-scalable=yes " name = " viewport " />
< meta name = " keywords " content = " autoblog,effet streisand,censure,replication " />
< meta name = " description " content = " Le Projet Autoblog a pour objectif de répliquer les articles d'un blog ou d'un site site web. " />
2013-06-30 15:07:26 +02:00
< link rel = " alternate " type = " application/rss+xml " title = " RSS " href = " <?php echo serverUrl(true) . '?rss';?> " />
2013-04-22 12:00:26 +02:00
< link href = " <?php echo RESOURCES_FOLDER; ?>autoblog.css " rel = " stylesheet " type = " text/css " >
< ? php
if ( file_exists ( RESOURCES_FOLDER . 'user.css' )){
echo '<link href="' . RESOURCES_FOLDER . 'user.css" rel="stylesheet" type="text/css">' ;
}
?>
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
</ head >
< body >
< header >
< h1 >< a href = " <?php echo serverUrl(true); ?> " > Projet Autoblog < ? php if ( strlen ( HEAD_TITLE ) > 0 ) echo " | " . HEAD_TITLE ; ?> </a></h1>
</ header >
< section id = " présentation " >
< header >
< ? php
if ( defined ( 'LOGO' ))
echo '<img id="logo" src="' . RESOURCES_FOLDER . LOGO . '" alt="logo of this autoblog instance" />' . " \n " ;
?>
< h2 > Présentation </ h2 >
</ header >
< p > 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… </ p >
< p > Voici une liste d 'autoblogs hébergés sur <em><?php echo $_SERVER[' SERVER_NAME ']; ?></em> (<a href="http://sebsauvage.net/streisand.me/fr/">plus d' infos sur le projet </ a > ) .</ p >
2013-04-22 15:57:24 +02:00
Sémantisation
Alors j’ai fait énoooooormément de modifications… La principale est : un code source (HTML5) *beau* et sémantique. C’est à dire que j’utilise les balises sémantique HTML5, que le code est plus simple, qu’il est correctement indenté (2 espaces à chaque fois, c’est ce que je trouve de plus beau) et *valide*. Ça m’a pris une nuit et un aprèm’ de nettoyer ça, assez simple et très satisfaisant :).
Bon après j’ai fait plusieurs autres modifications de genre divers aussi : j’ai supprimé des balises inutiles, j’ai remplacé la recherche Google par une recherche Startpage, des traits d’union par des tirets, fusion des lignes séparées par des <br> (horrible) en un paragraphe (bien plus joli, organisé, sémantique, etc.), et d’autres choses encore.
Par conséquent j’imagine que peut-être qu’il sera nécessaire de regarder la diff des changements. Mais pour voir le résultat final il y a mon instance : <autoblog.galex-713.eu>.
2013-10-13 19:11:15 +02:00
< p >< strong > Autres fermes </ strong > & rarr ; < a href = " //startpage.com/do/search?query=%22Voici+une+liste+d%27autoblogs+h%C3%A9berg%C3%A9s%22 " > Rechercher </ a ></ p >
</ section >
< ? php if ( $update_available ) { ?>
< section id = " màj " >
< header >
< h2 > Mise à jour </ h2 >
</ header >
< p > Une mise à jour du Projet Autoblog est disponible !</ p >
< ul >
< li >& rarr ; < a href = " https://github.com/mitsukarenai/Projet-Autoblog/archive/master.zip " > télécharger la dernière version </ a > ; </ li >
< li >& rarr ; < strong > important :</ strong > < a href = " https://github.com/mitsukarenai/Projet-Autoblog/wiki/Mettre-%C3%A0-jour " > consulter la documentation — mise à jour </ a >.</ li >
</ ul >
</ section >
< ? php } ?>
< ? php if ( ALLOW_NEW_AUTOBLOGS == TRUE ) { ?>
< section id = " ajouter " >
< header >
< h2 > Ajouter un autoblog </ h2 >
</ header >
< ? php
if ( ! empty ( $error ) || ! empty ( $success )) {
echo '<p>Message' . ( count ( $error ) ? 's' : '' ) . " :</p>\n " ;
echo " <ul> \n " ;
foreach ( $error AS $value ) {
echo ' <li class="error">' . $value . " </li> \n " ;
}
foreach ( $success AS $value ) {
echo ' <li class="success">' . $value . " </li> \n " ;
}
echo " </ul> \n " ;
echo " \n " ;
echo ' ' ;
}
$button_list = '<p id="button_list">Ajouter un autoblog via :' . " \n " ;
if ( ALLOW_NEW_AUTOBLOGS_BY_LINKS )
$button_list .= ' <a href="#add_generic" class="button" id="button_generic" onclick="show_form(\'generic\');return false;">Flux RSS</a>' . " \n " ;
if ( ALLOW_NEW_AUTOBLOGS_BY_SOCIAL ) {
$button_list .= ' <a href="#add_social" class="button" id="button_social" onclick="show_form(\'social\');return false;">Compte réseau social</a>' . " \n " ;
$button_list .= ' <a href="#add_shaarli" class="button" id="button_shaarli" onclick="show_form(\'shaarli\');return false;">Shaarli</a>' . " \n " ;
}
if ( ALLOW_NEW_AUTOBLOGS_BY_OPML_FILE )
$button_list .= ' <a href="#add_opmlfile" class="button" id="button_opmlfile" onclick="show_form(\'opmlfile\');return false;">Fichier OPML</a>' . " \n " ;
if ( ALLOW_NEW_AUTOBLOGS_BY_OPML_LINK )
$button_list .= ' <a href="#add_opmllink" class="button" id="button_opmllink" onclick="show_form(\'opmllink\');return false;">Lien vers OPML</a>' . " \n " ;
if ( ALLOW_NEW_AUTOBLOGS_BY_BUTTON )
$button_list .= ' <a href="#add_bookmark" class="button" id="button_bookmark" onclick="show_form(\'bookmark\');return false;">Marque page</a>' . " \n " ;
$button_list .= " </p> \n " ;
echo $button_list ;
if ( ALLOW_NEW_AUTOBLOGS_BY_LINKS == TRUE ) { ?>
< section class = " form " id = " add_generic " >
< header >
< h3 > Ajouter un site web </ h3 >
</ header >
< p > Si vous souhaitez que < em >< ? php echo $_SERVER [ 'SERVER_NAME' ];