function ecran_securite_pre_description_outil($flux) { if($flux['outil']!="ecran_securite") return $flux; // ecran de securite dans config/ $f = dirname(cs_spip_file_options(4))."/ecran_securite.php"; // conflit/doublon potentiel ? // $flux['non'] est vrai si le Couteau Suisse ne lance aucun fichier par lui-meme $conf = (@file_exists($f) && !defined('_SPIP20100')) || (defined("_ECRAN_SECURITE") && $flux['non']) ?"<hr/>\n@puce@ <span style=\"color: red;\">"._T("couteauprive:ecran_conflit".($flux['non']?"2":""), array("file"=>_NOM_PERMANENTS_INACCESSIBLES."ecran_securite.php"))."</span>" :""; if(defined('_ECRAN_SECURITE')) { $vers = _ECRAN_SECURITE; // recherche de la version du fichier distant include_spip("outils/maj_auto_action_rapide"); $maj = maj_auto_rev_distante(_MAJ_ECRAN_SECU,false,",(\d+\.\d+(\.\d+)?),",0,true); if($maj{0} != "-") $tmp = "\n".(_ECRAN_SECURITE!=$maj?"- "._T("couteauprive:ecran_maj_ko", array("n"=>"<span style=\"color: red;\">$maj</span>")):_T("couteauprive:ecran_maj_ok")); } else $vers=_T("couteauprive:ecran_ko"); // options SPIP en amont ? (mieux !) if(!defined("_CS_SPIP_OPTIONS_OK")) $tmp .= "\n- "._T("couteauprive:detail_spip_options2"); $flux['texte'] = str_replace(array("@_ECRAN_SECURITE@","@_ECRAN_CONFLIT@","@_ECRAN_SUITE@"), array($vers,$conf,$tmp), $flux['texte']); return $flux; }
function plugin_get_infos_maj($p, $timeout=false) { $get_infos = defined('_SPIP20100')?charger_fonction('get_infos','plugins'):'plugin_get_infos'; $infos = $get_infos($p); // fichier svn.revision $ok = lire_fichier($svn_rev = _DIR_PLUGINS.$p.'/svn.revision', $svn); $lastmodified = @file_exists($svn_rev)?@filemtime($svn_rev):0; if($ok && preg_match(',<origine>(.+)</origine>,', $svn, $regs)) { $url_origine = str_replace(array(_MAJ_SVN_FILE, _MAJ_SVN_DEBUT), _MAJ_LOG_DEBUT, $regs[1]); // prise en compte du recent demenagement de la Zone... $url_origine = preg_replace(',/_plugins_/_(?:stable|dev|test)_/,','/_plugins_/', $url_origine); } else $url_origine = ''; $infos['commit'] = ($ok && preg_match(',<commit>(.+)</commit>,', $svn, $regs))?$regs[1]:''; $rev_local = (strlen($svn) && preg_match(',<revision>(.+)</revision>,', $svn, $regs)) ?intval($regs[1]):version_svn_courante(_DIR_PLUGINS.$p); if($infos['svn'] = $rev_local<0) { // fichier SVN if (lire_fichier(_DIR_PLUGINS.$p.'/.svn/entries', $svn) && preg_match(',(?:'.preg_quote(_MAJ_SVN_TRAC).'|'.preg_quote(_MAJ_SVN_DEBUT).')[^\n\r]+,ms', $svn, $regs)) { $url_origine = str_replace(array(_MAJ_SVN_TRAC,_MAJ_SVN_DEBUT), _MAJ_LOG_DEBUT, $regs[0]); // prise en compte du recent demenagement de la Zone... $url_origine = preg_replace(',/_plugins_/_(?:stable|dev|test)_/,','/_plugins_/', $url_origine); } //$infos['zip_trac'] = 'SVN'; } $infos['url_origine'] = strlen($url_origine)?$url_origine._MAJ_LOG_FIN:''; $infos['rev_local'] = abs($rev_local); $infos['rev_rss'] = intval(maj_auto_rev_distante($infos['url_origine'], $timeout, ', \[(\d+)\],', $lastmodified)); $infos['maj_dispo'] = $infos['rev_rss']>0 && $infos['rev_local']>0 && $infos['rev_rss']>$infos['rev_local']; // fichiers zip $infos['zip_log'] = $infos['zip_trac'] = ''; $p2 = preg_match(',^auto/(.*)$,', $p, $regs)?$regs[1]:''; if(strlen($p2)) { // supposition du nom d'archive sur files.spip.org if(intval(maj_auto_rev_distante($f = _MAJ_ZIP.$p2.'.zip', $timeout))) $infos['zip_trac'] = $f; // nom de l'archive recemment installee par chargeur if(lire_fichier(sous_repertoire(_DIR_CACHE, 'chargeur').$p2.'/install.log', $log) && preg_match(',[\n\r]source: *([^\n\r]+),msi', $log, $regs) && intval(maj_auto_rev_distante($regs[1], $timeout))) $infos['zip_log'] = $regs[1]; // au final on prend le bon if(!$infos['zip_trac']) $infos['zip_trac'] = $infos['zip_log']; } return $infos; }