/** * Ajoute le préfixe des plugins dans chaque ligne de paquets * * Cette mise à jour permet de dupliquer le préfixe des plugins * dans la ligne des paquets (cette colonne était absente avant) * pour plus de simplicité ensuite dans les requêtes SQL. */ function svp_synchroniser_prefixe() { $paquets = sql_allfetsel(array('pa.id_paquet', 'pl.prefixe'), array('spip_paquets AS pa', 'spip_plugins AS pl'), 'pl.id_plugin=pa.id_plugin'); if ($paquets) { // On insere, en encapsulant pour sqlite... if (sql_preferer_transaction()) { sql_demarrer_transaction(); } foreach ($paquets as $paquet) { sql_updateq('spip_paquets', array('prefixe' => $paquet['prefixe']), 'id_paquet=' . intval($paquet['id_paquet'])); } if (sql_preferer_transaction()) { sql_terminer_transaction(); } } }
/** * Détermine la version max de chaque plugin, c'est à dire * la version maxi d'un des paquets qui lui est lié. * * @param array $plugins Liste d'identifiant de plugins **/ function svp_corriger_vmax_plugins($plugins) { // tous les plugins encore lies a des depots (hors local)... // la vmax est a retablir... if ($plugins) { $p = sql_allfetsel('DISTINCT(p.id_plugin)', array('spip_plugins AS p', 'spip_paquets AS pa'), array(sql_in('p.id_plugin', $plugins), 'p.id_plugin=pa.id_plugin', 'pa.id_depot>' . intval(0))); $p = array_map('array_shift', $p); // pour les autres, on la fixe correctement // On insere, en encapsulant pour sqlite... if (sql_preferer_transaction()) { sql_demarrer_transaction(); } foreach ($p as $id_plugin) { $vmax = ''; if ($pa = sql_allfetsel('version', 'spip_paquets', array('id_plugin=' . $id_plugin, 'id_depot>' . intval(0)))) { foreach ($pa as $v) { if (spip_version_compare($v['version'], $vmax, '>')) { $vmax = $v['version']; } } } sql_updateq('spip_plugins', array('vmax' => $vmax), 'id_plugin=' . intval($id_plugin)); } if (sql_preferer_transaction()) { sql_terminer_transaction(); } } }
/** * Actualise l'information 'maj_version' pour tous les paquets locaux **/ function svp_actualiser_maj_version() { $update = array(); // tous les paquets locaux if ($locaux = sql_allfetsel(array('id_paquet', 'prefixe', 'version', 'maj_version', 'etatnum'), array('spip_paquets'), array('id_depot=' . sql_quote(0)))) { foreach ($locaux as $paquet) { $new_maj_version = svp_rechercher_maj_version($paquet['prefixe'], $paquet['version'], $paquet['etatnum']); if ($new_maj_version != $paquet['maj_version']) { $update[$paquet['id_paquet']] = array('maj_version' => $new_maj_version); } } } if ($update) { // On insere, en encapsulant pour sqlite... if (sql_preferer_transaction()) { sql_demarrer_transaction(); } foreach ($update as $id_paquet => $data) { sql_updateq('spip_paquets', $data, 'id_paquet=' . intval($id_paquet)); } if (sql_preferer_transaction()) { sql_terminer_transaction(); } } }