Example #1
0
/**
 * Met à jour les tables SQL paquets et plugins pour qui concerne
 * les paquets locaux (ceux présents sur le site).
 *
 * On ne met à jour que ce qui a changé, sauf si on force le recalcule
 * de toutes les informations locales avec var_mode=vider_paquets_locaux
 * dans l'URL ou en mettant le paramètre $force à true.
 * 
 * @param bool $force
 *     - false : n'actualise que les paquets modifiés
 *     - true : efface et recrée la liste de tous les paquets locaux
 * @param array $erreurs_xml
 *     Si des erreurs XML sont présentes, elles se retrouvent dans ce tableau
 * @return string
 *     Temps d'exécution
**/
function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = array())
{
    spip_timer('paquets_locaux');
    $paquets = svp_descriptions_paquets_locaux($erreurs_xml);
    // un mode pour tout recalculer sans désinstaller le plugin... !
    if ($force or _request('var_mode') == 'vider_paquets_locaux') {
        svp_base_supprimer_paquets_locaux();
        svp_base_inserer_paquets_locaux($paquets);
    } else {
        svp_base_modifier_paquets_locaux($paquets);
    }
    svp_base_actualiser_paquets_actifs();
    $temps = spip_timer('paquets_locaux');
    #spip_log('svp_actualiser_paquets_locaux', 'SVP');
    #spip_log($temps, 'SVP');
    return "Éxécuté en : " . $temps;
}
Example #2
0
/**
 * Suppression d'un dépot et de son contenu (paquets, plugins) dans la base de données
 *
 * Cette suppression entraîne des recalcul comme les versions maximales
 * des plugins téléchargeables qui peuvent changer.
 * 
 * @param int $id
 *     Identifiant du dépot
 * @return bool
 *     false si le dépot n'est pas trouvé, true sinon
 */
function svp_supprimer_depot($id)
{
    $id = intval($id);
    // Pas de depot a cet id ?
    if (!($id_depot = sql_getfetsel('id_depot', 'spip_depots', 'id_depot=' . sql_quote($id)))) {
        return false;
    }
    // on calcule les versions max des plugins heberges par le depot
    $vmax = array();
    if ($resultats = sql_allfetsel('id_plugin, version', 'spip_paquets', 'id_depot=' . sql_quote($id))) {
        foreach ($resultats as $paquet) {
            $id_plugin = $paquet['id_plugin'];
            if (!isset($vmax[$id_plugin]) or spip_version_compare($vmax[$id_plugin], $paquet['version'], '<')) {
                $vmax[$id_plugin] = $paquet['version'];
            }
        }
    }
    // On supprime les paquets heberges par le depot
    sql_delete('spip_paquets', 'id_depot=' . sql_quote($id_depot));
    // Si on est pas en mode runtime, on utilise surement l'espace public pour afficher les plugins.
    // Il faut donc verifier que les urls suivent bien la mise à jour
    // Donc avant de nettoyer la base des plugins du depot ayant disparus on supprime toutes les urls
    // associees a ce depot : on les recreera apres le nettoyage
    if (!_SVP_MODE_RUNTIME) {
        svp_actualiser_url_plugins($id_depot);
    }
    // Nettoyer les autres relations à ce dépot
    svp_nettoyer_apres_suppression($id_depot, $vmax);
    // Si on est pas en mode runtime, on utilise surement l'espace public pour afficher les plugins.
    // Il faut donc s'assurer que les urls suivent bien la mise à jour
    // - on supprime toutes les urls plugin
    // - on les regenere pour la liste des plugins mise a jour
    if (!_SVP_MODE_RUNTIME) {
        svp_actualiser_url_plugins($id_depot);
    }
    // On supprime le depot lui-meme
    sql_delete('spip_depots', 'id_depot=' . sql_quote($id_depot));
    // on supprime les paquets locaux pour reactualisation
    include_spip('inc/svp_depoter_local');
    svp_base_supprimer_paquets_locaux();
    return true;
}