/**
 * Traitement de l'upload d'un logo
 *
 * Il est affecte au site si la balise n'est pas dans une boucle,
 * sinon a l'objet concerne par la boucle ou indiquee par les parametres d'appel
 *
 * @param string $objet Objet SPIP auquel sera lie le document (ex. article)
 * @param int $id_objet Identifiant de l'objet
 * @param string $retour Url de redirection apres traitement
 * @param array $options Tableau d'option (exemple : image_reduire => 50)
 * @return array               Retour des traitements
 */
function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour = '', $options = array())
{
    $res = array('editable' => ' ');
    // pas dans une boucle ? formulaire pour le logo du site
    // dans ce cas, il faut chercher un 'siteon0.ext'
    if (!$objet) {
        $objet = 'site';
    }
    include_spip("action/editer_logo");
    // effectuer la suppression si demandee d'un logo
    $on = _request('supprimer_logo_on');
    if ($on or _request('supprimer_logo_off')) {
        logo_supprimer($objet, $id_objet, $on ? 'on' : 'off');
        $res['message_ok'] = '';
        // pas besoin de message : la validation est visuelle
        set_request('logo_up', ' ');
    } else {
        $sources = formulaire_editer_logo_get_sources();
        foreach ($sources as $etat => $file) {
            if ($file and $file['error'] == 0) {
                if ($err = logo_modifier($objet, $id_objet, $etat, $file)) {
                    $res['message_erreur'] = $err;
                } else {
                    $res['message_ok'] = '';
                }
                // pas besoin de message : la validation est visuelle
                set_request('logo_up', ' ');
            }
        }
    }
    // Invalider les caches de l'objet
    include_spip('inc/invalideur');
    suivre_invalideur("id='{$objet}/{$id_objet}'");
    if ($retour) {
        $res['redirect'] = $retour;
    }
    return $res;
}
Example #2
0
/**
 * Traitement de l'upload d'un logo
 *
 * Il est affecte au site si la balise n'est pas dans une boucle,
 * sinon a l'objet concerne par la boucle ou indiquee par les parametres d'appel
 *
 * @param string $objet
 * @param integer $id_objet
 * @param string $retour
 * @return Array
 */
function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour = '')
{
    $res = array('editable' => ' ');
    // pas dans une boucle ? formulaire pour le logo du site
    // dans ce cas, il faut chercher un 'siteon0.ext'
    if (!$objet) {
        $objet = 'site';
    }
    $objet = objet_type($objet);
    $_id_objet = id_table_objet($objet);
    // supprimer l'ancien logo puis copier le nouveau
    include_spip('inc/chercher_logo');
    include_spip('inc/flock');
    $type = type_du_logo($_id_objet);
    $chercher_logo = charger_fonction('chercher_logo', 'inc');
    // effectuer la suppression si demandee d'un logo
    $on = _request('supprimer_logo_on');
    if ($on or _request('supprimer_logo_off')) {
        $logo = $chercher_logo($id_objet, $_id_objet, $on ? 'on' : 'off');
        if ($logo) {
            spip_unlink($logo[0]);
        }
        $res['message_ok'] = '';
        // pas besoin de message : la validation est visuelle
    } else {
        include_spip('action/iconifier');
        $ajouter_image = charger_fonction('spip_image_ajouter', 'action');
        $sources = formulaire_editer_logo_get_sources();
        foreach ($sources as $etat => $file) {
            if ($file and $file['error'] == 0) {
                $logo = $chercher_logo($id_objet, $_id_objet, $etat);
                if ($logo) {
                    spip_unlink($logo[0]);
                }
                $ajouter_image($type . $etat . $id_objet, " ", $file);
                $res['message_ok'] = '';
                // pas besoin de message : la validation est visuelle
            }
        }
    }
    if ($retour) {
        include_spip('inc/headers');
        $res['redirect'] = parametre_url($retour, 'var_mode', 'calcul');
    }
    return $res;
}