/**
 * 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();
        }
    }
}
Exemple #3
0
/**
 * 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();
        }
    }
}