='))
include_spip('outils/maj_auto_php5'); else { function cs_svn17($dir) { return false; } }
define('_MAJ_SVN_FILE', 'file:///home/svn/repository/spip-zone/');
define('_MAJ_SVN_DEBUT', 'svn://zone.spip.org/spip-zone/');
define('_MAJ_SVN_TRAC', 'svn://trac.rezo.net/spip-zone/'); // ancienne URL
define('_MAJ_ZONE', 'http://zone.spip.org/trac/spip-zone/');
define('_MAJ_LOG_DEBUT', _MAJ_ZONE.'log/');
define('_MAJ_LOG_FIN', '?format=changelog');
define('_MAJ_ZIP', 'http://files.spip.org/spip-zone/');
define('_MAJ_ECRAN_SECU', _MAJ_ZONE.'browser/_core_/securite/ecran_securite.php?format=txt');
// Pour SPIP = 2.0.X
if(!function_exists('info_maj_spip')) {
include_spip('inc/plugin');
if(!function_exists('spip_version_compare')) {
function spip_version_compare($v1,$v2,$op) { return version_compare($v1,$v2,$op); }
}
function info_maj_spip(){
if (!autoriser('webmestre')) return "";
// derniere version de SPIP
$maj = $GLOBALS['meta']['info_maj_spip'];
if (!$maj) return "";
$maj = explode('|',$maj);
// c'est une ancienne notif, on a fait la maj depuis !
if ($GLOBALS['spip_version_branche']!==array_shift($maj)) {
// compat_maj_spip(true);
return "";
}
// derniere version de SPIP 2.?.?
$maj = implode('|',$maj);
if (strncmp($maj,"$maj, 'url'=>$lien, 'zip'=>''));
// derniere version de SPIP 2.0.?
include_spip('lib/maj_auto/distant_mise_a_jour');
if(function_exists('info_maj_cache')) {
list(,,$rev) = preg_split('/\D+/', $GLOBALS['spip_version_branche']);
$nom = _DIR_CACHE_XML . _VERSIONS_LISTE;
$page = info_maj_cache($nom, 'spip', !file_exists($nom) ? '' : file_get_contents($nom));
preg_match_all(',/SPIP\D+2\D+0(\D+(\d+))?.*?[.]zip",i', $page, $m, PREG_SET_ORDER);
$page=0;
foreach ($m as $v) if ($v[2]>$rev && $v[2]>$page) $page = $v[2];
if($page) {
$lien = "http://files.spip.org/spip/archives/SPIP-v2-0-$page.zip"; // 'http://files.spip.org/spip/archives/#SPIP-v2-0-'.$page;
$maj = _T('couteau:maj_rev_ok',array('revision'=>'2.0.'.$page, 'url'=>$lien, 'zip'=>'')) . '
' . $maj;
}
}
// liens morts
return preg_replace(',\[([^[]+)->\],', '$1', $maj);
}
function compat_maj_spip($forcer=false) {
include_spip('lib/maj_auto/distant_mise_a_jour');
if(function_exists('genie_mise_a_jour_dist') && $forcer) return genie_mise_a_jour_dist(0);
}
}
function maj_auto_action_rapide() {
global $spip_version_affichee, $spip_version_base;
$arg_chargeur = $spip_version_base>=15828?'url_zip_plugin2':'url_zip_plugin'; // eq. SPIP >= 2.1.2
$time = time();
$timeout = ini_get('max_execution_time');
$timeout = $timeout?min(30,floor($timeout/2)):10;
$style = 'style="padding:0.4em;"';
// verification des mises a jour de SPIP>=2.1
include_spip('inc/presentation');
list($m1,$m2) = preg_split('/\D+/', $GLOBALS['spip_version_branche']);
$html1 = (function_exists('info_maj_spip') && ($html1=info_maj_spip()))
?"
'
:'';
// verification de l'ecran de securite
if(defined('_ECRAN_SECURITE')) {
$maj = maj_auto_rev_distante(_MAJ_ECRAN_SECU,false,",(\d+\.\d+(\.\d+)?),",0,true);
if($maj{0}!="-" && _ECRAN_SECURITE!=$maj) {
include_spip('inc/description_outil');
$html1 .= "\n';
}
}
// verification des plugins
include_spip('inc/plugin');
$plugins_actifs = array_values(liste_chemin_plugin_actifs());
// liste des extensions dispo sous SPIP 2.1
$plugins_extensions = defined('_SPIP20100')?array_values(liste_chemin_plugin_actifs(_DIR_EXTENSIONS)):array();
// tous, mais les actifs d'abord...
$plugins = array_unique(array_merge($plugins_actifs, $plugins_extensions, liste_plugin_files()));
$html_actifs = $html_inactifs = $html_extensions = array();
foreach ($plugins as $p) /*if(preg_match(',^auto/,', $p))*/ {
$actif = in_array($p, $plugins_actifs, true);
$extension = in_array($p, $plugins_extensions, true);
$auto = preg_match(',^auto/,', $p);
$infos = plugin_get_infos_maj($p, $stop=time()-$time>$timeout, $extension?_DIR_EXTENSIONS:_DIR_PLUGINS);
$maj_lib = $checked = '';
if($stop)
$maj_lib = ''.'Temps serveur écoulé : [poursuivre->#].'.'';
elseif($infos['maj_dispo']) {
$maj_lib = _T('couteau:maj_rev_ok',
array('revision' => $infos['rev_rss'], 'url'=>$infos['url_origine'], 'zip'=>$infos['zip_trac']));
$checked = " class='maj_checked'"; }
elseif($infos['rev_rss']>0 && $infos['rev_local'])
$maj_lib = _T('couteau:maj'.($infos['svn']?'_svn':'_ok'),
array('zip'=>$infos['zip_trac'], 'url'=>$infos['url_origine']));
elseif($auto) {
$maj_lib = _T('couteau:maj_rev_ko', array('url'=>$infos['url_origine']));
$checked = " class='maj_checked'"; }
elseif($infos['rev_local'] && $infos['rev_rss']<=0)
$maj_lib = _T('couteau:maj_rev_ko', array('url'=>$infos['url_origine']));
// eventuels liens morts
$maj_lib = preg_replace(',\[([^[]+)->\],', '$1', $maj_lib);
$nom = preg_replace(",[\n\r]+,",' ',$infos['nom']). ' (v' .$infos['version'] . ')' . ($maj_lib?"\n_ {{".$maj_lib.'}}':'');
$rev = $infos['rev_local']?_T('couteau:maj_rev', array('revision' => $infos['rev_local'])):'';
if(strlen($infos['commit'])) $rev .= (strlen($rev)?'
':'') . cs_date_court($infos['commit']);
if($infos['svn']) $rev .= '
SVN';
if(!strlen($rev)) $rev = ' ';
$zip_log = (strlen($infos['zip_log']) && $infos['zip_log']!=$infos['zip_trac'])
?"":'';
$bouton = ' ';
if($auto && !$stop) $bouton = strlen($infos['zip_trac'])
?""
:'?';
if(strlen($zip_log)) {
if (!$stop)
$nom .= "\n_ "._T('couteau:maj_verif') . "\n_ $zip_log\n_ {$bouton}[->$infos[zip_trac]]