=')); break; case 'install': if (function_exists($upgrade = $prefix."_upgrade")) $upgrade($nom_meta, $version_cible, $table); break; case 'uninstall': if (function_exists($vider_tables = $prefix."_vider_tables")) $vider_tables($nom_meta, $table); break; } } /** * Compare 2 numeros de version entre elles. * * Cette fonction est identique (arguments et retours) a la fonction PHP * version_compare() qu'elle appelle. Cependant, cette fonction reformate * les numeros de versions pour ameliorer certains usages dans SPIP ou bugs * dans PHP. On permet ainsi de comparer 3.0.4 à 3.0.* par exemple. * * @param string $v1 * Numero de version servant de base a la comparaison. * Ce numero ne peut pas comporter d'etoile. * @param string $v2 * Numero de version a comparer. * Il peut posseder des etoiles tel que 3.0.* * @param string $op * Un operateur eventuel (<, >, <=, >=, =, == ...) * @return int|bool * Sans operateur : int. -1 pour inferieur, 0 pour egal, 1 pour superieur * Avec operateur : bool. **/ function spip_version_compare($v1,$v2,$op=null){ $v1 = strtolower(preg_replace(',([0-9])[\s-.]?(dev|alpha|a|beta|b|rc|pl|p),i','\\1.\\2',$v1)); $v2 = strtolower(preg_replace(',([0-9])[\s-.]?(dev|alpha|a|beta|b|rc|pl|p),i','\\1.\\2',$v2)); $v1 = str_replace('rc','RC',$v1); // certaines versions de PHP ne comprennent RC qu'en majuscule $v2 = str_replace('rc','RC',$v2); // certaines versions de PHP ne comprennent RC qu'en majuscule $v1 = explode('.',$v1); $v2 = explode('.',$v2); // $v1 est toujours une version, donc sans etoile while (count($v1) $v) { if (!isset($v2[$k])) $v2[] = ($etoile AND (is_numeric($v) OR $v=='pl' OR $v=='p')) ? $v : '0'; else if ($v2[$k] == '*') { $etoile = true; $v2[$k] = $v; } } $v1 = implode('.',$v1); $v2 = implode('.',$v2); return $op?version_compare($v1, $v2,$op):version_compare($v1, $v2); } // Cette fonction retourne la meta "plugin" deserialisee // mais en fait une mise a jour qui aurait du intervenir au chgt de version // http://doc.spip.org/@liste_plugin_actifs function liste_plugin_actifs(){ $liste = isset($GLOBALS['meta']['plugin'])?$GLOBALS['meta']['plugin']:''; if (!$liste) return array(); if (!is_array($liste=unserialize($liste))) { // compatibilite pre 1.9.2, mettre a jour la meta spip_log("MAJ meta plugin vieille version : $liste","plugin"); $new = true; list(, $liste) = liste_plugin_valides(explode(",",$liste)); } else { $new = false; // compat au moment d'une migration depuis version anterieure // si pas de dir_type, alors c'est _DIR_PLUGINS foreach ($liste as $prefix=>$infos) { if (!isset($infos['dir_type'])) { $liste[$prefix]['dir_type'] = "_DIR_PLUGINS"; $new = true; } } } if ($new) ecrire_meta('plugin',serialize($liste)); return $liste; } ?>