/** * 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; }
function logo_revision($id, $file, $type, $ref) { $chercher_logo = charger_fonction('chercher_logo', 'inc'); $_id_objet = id_table_objet($type); // Chargement d'un nouveau logo ? if ($file['logo']) { define('FILE_UPLOAD', true); // message pour crayons_json_export :( if (include_spip("action/editer_logo") and function_exists("logo_modifier")) { logo_modifier($type, $id, "on", $file['logo']); } else { // supprimer l'ancien logo $on = $chercher_logo($id, $_id_objet, 'on'); if ($on) { @unlink($on[0]); } // ajouter le nouveau include_spip('action/iconifier'); action_spip_image_ajouter_dist(type_du_logo($_id_objet) . 'on' . $id, false, false); // beurk } } else { // Suppression du logo ? if ($wid = array_pop($ref) and $_POST['content_' . $wid . '_logo_supprimer'] == 'on') { if (include_spip("action/editer_logo") and function_exists("logo_supprimer")) { logo_supprimer($type, $id, "on"); } else { if ($on = $chercher_logo($id, $_id_objet, 'on')) { @unlink($on[0]); } } } } // Reduire le logo ? if (is_array($cfg = @unserialize($GLOBALS['meta']['crayons'])) and $max = intval($cfg['reduire_logo'])) { $on = $chercher_logo($id, $_id_objet, 'on'); include_spip('inc/filtres'); @copy($on[0], $temp = _DIR_VAR . 'tmp' . rand(0, 999) . '.' . $on[3]); $img1 = filtrer('image_reduire', $temp, $max); $img2 = preg_replace(',[?].*,', '', extraire_attribut($img1, 'src')); if (@file_exists($img2) and $img2 != $temp) { if (include_spip("action/editer_logo") and function_exists("logo_modifier")) { logo_modifier($type, $id, "on", $img2); } else { @unlink($on[0]); $dest = $on[1] . $on[2] . '.' . preg_replace(',^.*\\.(gif|jpg|png)$,', '\\1', $img2); @rename($img2, $dest); } } @unlink($temp); } return true; }