* Its based on the getDatabase.php script that Owen and Tomasz wrote. * */ $wgDBdevboxUser = '******'; $wgDBdevboxPass = '******'; $wgDBdevboxServer1 = 'dev-db-a1'; $wgDBdevboxServer2 = 'dev-db-b1'; $wgControlPageID = 6741; $wgDatabaseDirectories = array("database_A", "database_B", "database_C"); $USAGE = "Usage:\tphp syncDevData.php\n"; $wikis = what_to_sync(); find_dumps(&$wikis); foreach ($wikis as $name => $detail) { echo "\n== Importing new content for {$name} ==\n"; // See if the dump is newer and if not skip it if (!needs_update($name, $detail)) { continue; } $file = save_dump($name, $detail); import_dump($name, $detail, $file); } /******************************************************************************/ function what_to_sync() { global $wgDBdevboxServer2, $wgDBdevboxUser, $wgDBdevboxPass, $wgControlPageID; // DBs to sync are reprented as links from page $wgControlPageID. The // pages don't have exist and just have to be named Sync:DBNAME $response = `mysql -h{$wgDBdevboxServer2} -u{$wgDBdevboxUser} -p{$wgDBdevboxPass} devbox -s -N -e "select pl_title from pagelinks where pl_from = {$wgControlPageID}"`; // Skip any links that don't start with Sync: and strip the Sync: off the // links that do match $dbnames = array();
* la clé est le nom du plugin, ou plus exactement le nom de la classe dérivé de PlxPlugin * la valeur est un tableau associatif avec : * la clé est le numéro de version du plugin * la valeur est un tableau ordinaire contenant * le nom de l'archive ($filename) * la date de l'archive ($filedate) * le numéro de version comme indiqué dans le fichier infos.xml ($version) * l'url où demander l'archive zip du plugin ($repository) * l'auteur ($author) * le site web de l'auteur ($site) * la description du plugin ($description) * les pré-requis ($requirements). * le numéro de version contenu dans infos.xml est converti en flottant à multiplier par 1000 * et à convertir en entier pour trier les versions * */ if (needs_update()) { list($cache, $cache_icons) = buildCaches($files); // tri et sauvegarde du cache sur le disque dur si non vide if (!empty($cache)) { ksort($cache); // tri décroissant des versions de chaque plugin foreach (array_keys($cache) as $k) { krsort($cache[$k]); } // encodage et sauvegarde (il y a du javascript dans l'air) if (file_put_contents(CACHE_FILE, json_encode($cache), LOCK_EX) === false) { $error = 'Pas de droit en écriture sur le disque dur<br />Contactez votre webmaster.'; } else { // file_put_contents(CACHE_ICONS, json_encode($cache_icons), LOCK_EX); file_put_contents(CACHE_ICONS, serialize($cache_icons), LOCK_EX); }