Exemple #1
0
function action_spip_image_ajouter_dist($arg, $sousaction2, $source, $return = false)
{
    global $formats_logos;
    include_spip('inc/documents');
    if (!$sousaction2) {
        if (!$_FILES) {
            $_FILES = $GLOBALS['HTTP_POST_FILES'];
        }
        $source = is_array($_FILES) ? array_pop($_FILES) : "";
    }
    $erreur = "";
    if (!$source) {
        spip_log("spip_image_ajouter : source inconnue");
    } else {
        $f = _DIR_LOGOS . $arg . '.tmp';
        if (!is_array($source)) {
            // fichier dans upload/
            $source = @copy(determine_upload() . $source, $f);
        } else {
            // Intercepter une erreur a l'envoi
            if ($erreur = check_upload_error($source['error'], "", $return)) {
                $source = "";
            } else {
                // analyse le type de l'image (on ne fait pas confiance au nom de
                // fichier envoye par le browser : pour les Macs c'est plus sur)
                $source = deplacer_fichier_upload($source['tmp_name'], $f);
            }
        }
        if (!$source) {
            spip_log("pb de copie pour {$f}");
        }
    }
    if ($source and $f) {
        $size = @getimagesize($f);
        $type = !$size ? '' : ($size[2] > 3 ? '' : $formats_logos[$size[2] - 1]);
        if ($type) {
            $poids = filesize($f);
            if (_LOGO_MAX_SIZE > 0 and $poids > _LOGO_MAX_SIZE * 1024) {
                spip_unlink($f);
                $erreur = _T('info_logo_max_poids', array('maxi' => taille_en_octets(_LOGO_MAX_SIZE * 1024), 'actuel' => taille_en_octets($poids)));
            } elseif (_LOGO_MAX_WIDTH * _LOGO_MAX_HEIGHT and ($size[0] > _LOGO_MAX_WIDTH or $size[1] > _LOGO_MAX_HEIGHT)) {
                spip_unlink($f);
                $erreur = _T('info_logo_max_poids', array('maxi' => _T('info_largeur_vignette', array('largeur_vignette' => _LOGO_MAX_WIDTH, 'hauteur_vignette' => _LOGO_MAX_HEIGHT)), 'actuel' => _T('info_largeur_vignette', array('largeur_vignette' => $size[0], 'hauteur_vignette' => $size[1]))));
            } else {
                @rename($f, _DIR_LOGOS . $arg . ".{$type}");
            }
        } else {
            spip_unlink($f);
            $erreur = _T('info_logo_format_interdit', array('formats' => join(', ', $formats_logos)));
        }
    }
    if ($erreur) {
        if ($return) {
            return $erreur;
        } else {
            check_upload_error(6, $erreur);
        }
    }
}
Exemple #2
0
function base_dump_dir($meta){
	// determine upload va aussi initialiser l'index "restreint"
	$maindir = determine_upload();
	if (!$GLOBALS['visiteur_session']['restreint'])
		$maindir = _DIR_DUMP;
	$dir = sous_repertoire($maindir, $meta);
	return $dir;
}
Exemple #3
0
function formulaires_joindre_document_charger_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true)
{
    $valeurs = array();
    $mode = joindre_determiner_mode($mode, $id_document, $objet);
    $valeurs['id'] = $id_document;
    $valeurs['_mode'] = $mode;
    $valeurs['url'] = 'http://';
    $valeurs['fichier_upload'] = $valeurs['_options_upload_ftp'] = $valeurs['_dir_upload_ftp'] = '';
    $valeurs['joindre_upload'] = $valeurs['joindre_distant'] = $valeurs['joindre_ftp'] = $valeurs['joindre_mediatheque'] = '';
    $valeurs['editable'] = ' ';
    if (intval($id_document)) {
        $valeurs['editable'] = autoriser('modifier', 'document', $id_document) ? ' ' : '';
    }
    $valeurs['proposer_media'] = is_string($proposer_media) ? preg_match('/^(false|non|no)$/i', $proposer_media) ? false : true : $proposer_media;
    $valeurs['proposer_ftp'] = is_string($proposer_ftp) ? preg_match('/^(false|non|no)$/i', $proposer_ftp) ? false : true : $proposer_ftp;
    # regarder si un choix d'upload FTP est vraiment possible
    if ($valeurs['proposer_ftp'] and test_espace_prive() and $mode != 'image' and $mode != 'vignette' and $GLOBALS['flag_upload']) {
        include_spip('inc/documents');
        if ($dir = determine_upload('documents')) {
            // quels sont les docs accessibles en ftp ?
            $valeurs['_options_upload_ftp'] = joindre_options_upload_ftp($dir, $mode);
            // s'il n'y en a pas, on affiche un message d'aide
            // en mode document, mais pas en mode image
            if ($valeurs['_options_upload_ftp'] or ($mode == 'document' or $mode == 'choix')) {
                $valeurs['_dir_upload_ftp'] = "<b>" . joli_repertoire($dir) . "</b>";
            }
        }
    }
    // On ne propose le FTP que si on a des choses a afficher
    $valeurs['proposer_ftp'] = ($valeurs['_options_upload_ftp'] or $valeurs['_dir_upload_ftp']);
    if ($galerie) {
        # passer optionnellement une galerie jointe au form
        # plus utilise nativement, on prefere la mise a jour
        # apres upload par ajaxReload('documents')
        $valeurs['_galerie'] = $galerie;
    }
    if ($objet and $id_objet) {
        $valeurs['id_objet'] = $id_objet;
        $valeurs['objet'] = $objet;
        $valeurs['refdoc_joindre'] = '';
        if ($valeurs['editable']) {
            include_spip('inc/autoriser');
            $valeurs['editable'] = autoriser('joindredocument', $objet, $id_objet) ? ' ' : '';
        }
    }
    return $valeurs;
}
Exemple #4
0
function spip_importer_articles($spip_data)
{
    global $tables_conversion;
    foreach ($spip_data as $entry) {
        $id_rubrique = null;
        $type = $entry['metadata']['type'];
        journaliser(sprintf("Traitement d'un nouvel item : %s - %s", $entry['metadata']['nid'], $type), 2);
        if (binlog_contient($entry['metadata']['nid'])) {
            journaliser("L'élément %s a déjà été converti", $entry['metadata']['nid']);
            continue;
        }
        journaliser("Recherche de la catégorie cible pour l'article");
        /* FIXME: doit être déplacé hors de cette fonction (spécifique site cible). */
        /* CATEGORIE CIBLE */
        /* Remarque : les articles de type 'story' sont dispatchés par la
         * fonction dispatch_story_type() */
        $cat_cible = array('video' => 14, 'photos' => 23, 'audio' => 24, 'commission' => 36, 'livre' => 15, 'evenement' => 11);
        $fct = "dispatch_{$type}_type";
        if (function_exists($fct)) {
            $id_rubrique = call_user_func($fct, $entry);
        } elseif ($cat_cible[$type]) {
            $id_rubrique = $cat_cible[$type];
        }
        if ($id_rubrique == null) {
            journaliser("Catégorie cible introuvable pour le type de contenu " . $type, 4);
            die;
        }
        journaliser("Envoi de l'article dans la rubrique %s", $id_rubrique, 1);
        /* --- VIDEO --- */
        if ($type == "video") {
            if ($entry['documents']['video']) {
                /* Si une vidéo est présente dans ce champ, il faut modifier le
                 * texte de l'article et ajouter le lien vers la video à la
                 * fin. */
                $entry['article']['texte'] .= sprintf("\n\n%s", $entry['documents']['video']);
            }
        }
        /* --- AUDIO --- */
        if ($type == "audio") {
            journaliser("Gestion des documents audio");
            $audio_path = $entry['documents']['audio'];
            $audio_name = $entry['documents']['audio_name'];
            $id_document = importer_document($audio_path, $audio_name);
            journaliser("Import du document : " . $id_document, 1);
            $entry['article']['texte'] = sprintf("<emb%s>\nRéalisation : %s\n\n%s", $id_document, $entry['documents']['audio_desc'], $entry['article']['texte']);
            document_modifier($id_document, array('credits' => $entry['documents']['audio_desc']));
        }
        /* --- PIECES JOINTES --- */
        if ($entry['documents']['pdf']) {
            journaliser("Ajout des pièces jointes au format PDF");
            foreach ($entry['documents']['pdf'] as $document) {
                $id_document = importer_document($document['filepath'], $document['filename']);
                journaliser(sprintf("Document PDF %s importé", $id_document), 1);
                $entry['article']['texte'] = sprintf("%s\n\n<lecteurpdf%s>", $entry['article']['texte'], $id_document);
            }
        }
        /* --- ARTICLE --- */
        journaliser("Création du nouvel article");
        $id_article = article_inserer($id_rubrique);
        journaliser("Nouvel article créee : {$id_article}", 1);
        //print_r($entry['article']);
        article_modifier($id_article, $entry['article']);
        journaliser("Ajout des données dans l'article n° {$id_article}", 1);
        /* --- AUTEUR => ARTICLE --- */
        journaliser("Création ou récupération des auteurs qui doivent être associées à l'article");
        $id_auteurs = array();
        if ($entry['auteur']['nom']) {
            foreach ($entry['auteur']['nom'] as $nom_auteur) {
                journaliser("Recherche de l'auteur « {$nom_auteur} »", 1);
                if ($id = sql_getfetsel("id_auteur", "spip_auteurs", 'nom LIKE ' . sql_quote("% - {$nom_auteur}"))) {
                    journaliser("« {$nom_auteur} » trouvé : {$id} (REGEXP)", 1);
                    $id_auteurs[] = $id;
                } elseif ($id = sql_getfetsel("id_auteur", "spip_auteurs", 'nom=' . sql_quote($nom_auteur))) {
                    journaliser("« {$nom_auteur} » trouvé : {$id}", 1);
                    $id_auteurs[] = $id;
                } else {
                    $id = auteur_inserer();
                    auteur_modifier($id, array('nom' => $nom_auteur, 'statut' => '1comite'));
                    $id_auteurs[] = $id;
                    journaliser("« {$nom_auteur} » créé : {$id}", 1);
                }
            }
            foreach ($id_auteurs as $id) {
                journaliser("Association de l'auteur %s à l'article", $id, 1);
                auteur_associer($id, array('article' => $id_article));
            }
        }
        if (!in_array(1, $id_auteurs)) {
            journaliser("Retrait de l'auteur 1", 1);
            auteur_dissocier(1, array('article' => $id_article));
        }
        /* --- CAMPAGNE --- */
        if ($entry['metadata']['campagne']) {
            journaliser("Ajout des mots-clés de campagne");
            foreach ($entry['metadata']['campagne'] as $campagne) {
                journaliser("Association du mot clé %s à l'article %s", $campagne, $id_article, 1);
                mot_associer($campagne, array('article' => $id_article));
            }
        }
        /* --- ATTACPÉDIA --- */
        if ($entry['metadata']['attacpedia']) {
            journaliser("Ajout des mots-clés Attacpédia");
            foreach ($entry['metadata']['attacpedia'] as $attacpedia) {
                journaliser("Association du mot clé %s à l'article %s", $attacpedia, $id_article, 1);
                mot_associer($attacpedia, array('article' => $id_article));
            }
        }
        /* EVENEMENT */
        if ($type == "evenement") {
            journaliser("Création de l'évènement");
            foreach ($entry['evenement']['dates'] as $dates_evt) {
                $id_evenement = evenement_inserer($id_article);
                journaliser("Numéro de l'évènement : %s", $id_evenement, 1);
                evenement_modifier($id_evenement, array('titre' => $entry['article']['titre'], 'lieu' => $entry['evenement']['lieu'], 'date_debut' => $dates_evt['date_debut'], 'date_fin' => $dates_evt['date_fin'], 'statut' => $entry['article']['statut']));
                journaliser("Géolocation GIS", 1);
                $id_gis = gis_inserer();
                journaliser("Création du lieu GIS : %s", $id_gis, 1);
                gis_modifier($id_gis, $entry['gis']);
                lier_gis($id_gis, "evenement", $id_evenement);
                journaliser("Lien de l'évènement %s au lieu %s", $id_evenement, $id_gis, 1);
            }
        }
        /* --- TYPE D'EVENEMENT --- */
        if ($type == "evenement") {
            $id_mot_drupal = $entry['metadata']['type_evenement'];
            $mod_evt = $tables_conversion['type_evenement'][$id_mot_drupal];
            mot_associer($mod_evt, array('article' => $id_article));
            journaliser("Association du mot clé %s/%s à l'article %s", $id_mot_drupal, $mod_evt, $id_article, 1);
        }
        /* --- PIECES JOINTES --- */
        if ($entry['documents']['pj']) {
            journaliser("Ajout des pièces jointes");
            foreach ($entry['documents']['pj'] as $document) {
                $id_document = importer_document($document['filepath'], $document['filename'], $id_article);
                journaliser(sprintf("Document %s importé", $id_document), 1);
            }
        }
        /* --- GALERIES PHOTO --- */
        if ($entry['documents']['photos']) {
            journaliser("Ajout des pĥotos jointes");
            foreach ($entry['documents']['photos'] as $document) {
                $id_document = importer_document($document['filepath'], $document['filename'], $id_article, "document");
                journaliser(sprintf("Document %s importé", $id_document), 1);
            }
        }
        /* --- URL --- */
        journaliser("Gestion des URL");
        $urls = array();
        $urls[] = "node/" . $entry['metadata']['nid'];
        $urls[] = $entry['url']['url'];
        foreach ($urls as $url) {
            if ($url) {
                if ($url_existante = sql_fetsel(array('id_objet', 'type'), 'spip_urls', 'url=' . sql_quote($url))) {
                    journaliser(sprintf("URL ({$url}) déjà existante (%s / %s)", $url_existante['type'], $url_existante['id_objet']), 4);
                } else {
                    $sql_url = array('url' => $url, 'type' => 'article', 'id_objet' => $id_article, 'perma' => 1, 'id_parent' => $id_rubrique);
                    url_insert($sql_url, false, '-');
                    journaliser(sprintf("URL ajoutée : %s/%s", $GLOBALS['meta']['adresse_site'], $url), 1);
                }
            }
        }
        /* --- LOGO --- */
        if ($entry['logo']['chemin']) {
            journaliser("Import du logo");
            $remote = sprintf("http://www.france.attac.org/%s", $entry['logo']['chemin']);
            $filename = $entry['logo']['fichier'];
            $fic = copie_locale($remote, 'auto', determine_upload() . $filename);
            journaliser("Logo ({$remote}) => {$fic}", 1);
            $spip_image_ajouter = charger_fonction('spip_image_ajouter', 'action');
            $spip_image_ajouter('arton' . $id_article, true, $filename);
            spip_unlink($fic);
        }
        $dest_url = sprintf("%s/%s", $GLOBALS['meta']['adresse_site'], $id_article);
        journaliser(sprintf("Article publié : <%s>", $dest_url), 2);
        binlog($entry['metadata']['nid'], $entry['metadata']['type'], $id_article, $entry['article']['titre'], $dest_url);
    }
}
Exemple #5
0
function inc_joindre3_dist($path, $mode, $type, $id, $id_document,$hash, $redirect, &$actifs, $iframe_redirect)
{
	if (!$path || strstr($path, '..')) return;
	    
	$upload = determine_upload();
	if ($path != '/' AND $path != './') $upload .= $path;

	if (!is_dir($upload))
	  // seul un fichier est demande
	  $files = array(array ('name' => basename($upload),
				'tmp_name' => $upload)
			 );
	else {
	  include_spip('inc/documents');
	  $files = array();
	  foreach (preg_files($upload) as $fichier) {
			$files[]= array (
					'name' => basename($fichier),
					'tmp_name' => $fichier
					);
	  }
	}

	return joindre_documents($files, $mode, $type, $id, $id_document, $hash, $redirect, $actifs, $iframe_redirect);
}
/**
 * Recuperer le nom du fichier selon le mode d'upload choisi
 * et mettre cela au format $_FILES
 *
 * Renvoie une liste de fichier ou un message en cas d'erreur
 *
 * @return string/array
 */
function joindre_trouver_fichier_envoye()
{
    static $files = array();
    // on est appele deux fois dans un hit, resservir ce qu'on a trouve a la verif
    // lorsqu'on est appelle au traitement
    if (count($files)) {
        return $files;
    }
    if (_request('joindre_upload')) {
        $post = isset($_FILES) ? $_FILES : $GLOBALS['HTTP_POST_FILES'];
        $files = array();
        if (is_array($post)) {
            include_spip('action/ajouter_documents');
            foreach ($post as $file) {
                if (is_array($file['name'])) {
                    while (count($file['name'])) {
                        $test = array('error' => array_shift($file['error']), 'name' => array_shift($file['name']), 'tmp_name' => array_shift($file['tmp_name']), 'type' => array_shift($file['type']));
                        if (!($test['error'] == 4)) {
                            if (is_string($err = joindre_upload_error($test['error']))) {
                                return $err;
                            }
                            // un erreur upload
                            if (!is_array(verifier_upload_autorise($test['name']))) {
                                return _T('medias:erreur_upload_type_interdit', array('nom' => $test['name']));
                            }
                            $files[] = $test;
                        }
                    }
                } else {
                    //UPLOAD_ERR_NO_FILE
                    if (!($file['error'] == 4)) {
                        if (is_string($err = joindre_upload_error($file['error']))) {
                            return $err;
                        }
                        // un erreur upload
                        if (!is_array(verifier_upload_autorise($file['name']))) {
                            return _T('medias:erreur_upload_type_interdit', array('nom' => $file['name']));
                        }
                        $files[] = $file;
                    }
                }
            }
            if (!count($files)) {
                return _T('medias:erreur_indiquez_un_fichier');
            }
        }
        return $files;
    } elseif (_request('joindre_distant')) {
        $path = _request('url');
        if (!strlen($path) or $path == 'http://') {
            return _T('medias:erreur_indiquez_un_fichier');
        }
        include_spip('action/ajouter_documents');
        $infos = renseigner_source_distante($path);
        if (!is_array($infos)) {
            return $infos;
        } else {
            return array(array('name' => basename($path), 'tmp_name' => $path, 'distant' => true));
        }
    } elseif (_request('joindre_ftp')) {
        $path = _request('cheminftp');
        if (!$path || strstr($path, '..')) {
            return _T('medias:erreur_indiquez_un_fichier');
        }
        include_spip('inc/documents');
        include_spip('inc/actions');
        $upload = determine_upload();
        if ($path != '/' and $path != './') {
            $upload .= $path;
        }
        if (!is_dir($upload)) {
            return array(array('name' => basename($upload), 'tmp_name' => $upload));
        } else {
            // on upload tout un repertoire
            $files = array();
            foreach (preg_files($upload) as $fichier) {
                $files[] = array('name' => basename($fichier), 'tmp_name' => $fichier);
            }
            return $files;
        }
    } elseif (_request('joindre_zip') and $token_zip = _request('chemin_zip')) {
        $zip_to_clean = isset($GLOBALS['visiteur_session']['zip_to_clean']) ? unserialize($GLOBALS['visiteur_session']['zip_to_clean']) : array();
        if (!$zip_to_clean or !isset($zip_to_clean[$token_zip]) or !($path = $zip_to_clean[$token_zip])) {
            return _T('avis_operation_impossible');
        }
        include_spip('inc/documents');
        //pour creer_repertoire_documents
        define('_tmp_zip', $path);
        define('_tmp_dir', creer_repertoire_documents(md5($path . $GLOBALS['visiteur_session']['id_auteur'])));
        if (_tmp_dir == _DIR_IMG) {
            return _T('avis_operation_impossible');
        }
        $files = array();
        if (_request('options_upload_zip') == 'deballe') {
            $files = joindre_deballer_lister_zip($path, _tmp_dir);
        }
        // si le zip doit aussi etre conserve, l'ajouter
        if (_request('options_upload_zip') == 'upload' or _request('options_deballe_zip_conserver')) {
            $files[] = array('name' => basename($path), 'tmp_name' => $path);
        }
        return $files;
    }
    return array();
}
Exemple #7
0
function joindre_formulaire(&$v) {
	global $spip_lang_right;
	$depliable = false;

	$mode = $v['mode'];
	$vignette_de_doc = ($mode == 'vignette' AND $v['id_document']>0);
	$distant = (($mode == 'document' OR $mode == 'choix') AND $v['type']);

	# indiquer un choix d'upload FTP
	$dir_ftp = '';
	if (test_espace_prive()
	AND ($mode == 'document' OR $mode == 'choix') # si c'est pour un document
	AND !$vignette_de_doc		# pas pour une vignette (NB: la ligne precedente suffit, mais si on la supprime il faut conserver ce test-ci)
	AND $GLOBALS['flag_upload']) {
		if ($dir = determine_upload('documents')) {
			// quels sont les docs accessibles en ftp ?
			$l = texte_upload_manuel($dir, $mode);
			// s'il n'y en a pas, on affiche un message d'aide
			// en mode document, mais pas en mode image
			if ($l OR ($mode == 'document' OR $mode=='choix'))
				$dir_ftp = afficher_transferer_upload($l, $dir);
		}
	}
  
  // Add the redirect url when uploading via iframe

  $iframe = "";
  if($v['iframe_script'])
    $iframe = "<input type='hidden' name='iframe_redirect' value='".rawurlencode($v['iframe_script'])."' />\n";

	// Un menu depliant si on a une possibilite supplementaire

	if ($dir_ftp OR $distant OR $vignette_de_doc) {
		$bloc = "ftp_". $mode .'_'. intval($v['id_document']);

		if ($vignette_de_doc)
			$debut = bouton_block_depliable($v['intitule'],false,$bloc);
		else
			$debut = $v['intitule'];

		$milieu = debut_block_depliable(false,$bloc);
		$fin = "\n\t" . fin_block();
		$v['titre'] = bouton_block_depliable($v['titre'],false,$bloc);

	} else
		$debut = $milieu = $fin = '';

	// Lien document distant, jamais en mode image
	if ($distant) {
		$distant = "<br />\n<div style='border: 1px #303030 solid; padding: 4px; color: #505050;'>" .
			"\n\t<img src='". chemin_image('attachment.gif') .
			"' style='float: $spip_lang_right;' alt=\"\" />\n" .
			"<label for='url'>" .
			_T('info_referencer_doc_distant') .
			"</label><br />\n\t<input name='url' id='url' value='http://' />" .
			"\n\t<div style='text-align: $spip_lang_right'><input name='sousaction2' type='submit' value='".
			_T('bouton_choisir').
			"' /></div>" .
			"\n</div>";
	}

	$res = "<input name='fichier' id='fichier_$mode" .'_'. strval($v['id_document']) . "' type='file' class='forml spip_xx-small' size='15' />"
	. ($v['ancre']
		? "\n\t\t<input type='hidden' name='ancre' value='".$v['ancre']."' />"
		: ''
	)
	. "\n\t\t<div style='text-align: $spip_lang_right'><input name='sousaction1' type='submit' value='"
	. _T('bouton_telecharger')
	. "' /></div>";

	if ($vignette_de_doc)
		$res = $milieu . $res;
	else
		$res = $res . $milieu;

	return "$iframe$debut$res$dir_ftp$distant$fin";
}
Exemple #8
0
/**
 * @param string $objet
 * @param int $id_objet
 * @param string $etat
 *   on ou off
 * @param string|array $source
 *   array : sous tableau de $_FILE issu de l'upload
 *   string : fichier source (chemin complet ou chemin relatif a tmp/upload)
 * @return string
 */
function logo_modifier($objet, $id_objet, $etat, $source)
{
    $chercher_logo = charger_fonction('chercher_logo', 'inc');
    $objet = objet_type($objet);
    $primary = id_table_objet($objet);
    include_spip('inc/chercher_logo');
    $type = type_du_logo($primary);
    // nom du logo
    $nom = $type . $etat . $id_objet;
    // supprimer le logo eventueel existant
    logo_supprimer($objet, $id_objet, $etat);
    include_spip('inc/documents');
    $erreur = "";
    if (!$source) {
        spip_log("spip_image_ajouter : source inconnue");
        $erreur = "source inconnue";
        return $erreur;
    }
    $file_tmp = _DIR_LOGOS . $nom . '.tmp';
    $ok = false;
    // fichier dans upload/
    if (is_string($source)) {
        if (file_exists($source)) {
            $ok = @copy($source, $file_tmp);
        } elseif (file_exists($f = determine_upload() . $source)) {
            $ok = @copy($f, $file_tmp);
        }
    } elseif (!($erreur = check_upload_error($source['error'], "", true))) {
        // analyse le type de l'image (on ne fait pas confiance au nom de
        // fichier envoye par le browser : pour les Macs c'est plus sur)
        $ok = deplacer_fichier_upload($source['tmp_name'], $file_tmp);
    }
    if ($erreur) {
        return $erreur;
    }
    if (!$ok or !file_exists($file_tmp)) {
        spip_log($erreur = "probleme de copie pour {$file_tmp} ");
        return $erreur;
    }
    $size = @getimagesize($file_tmp);
    $type = !$size ? '' : ($size[2] > 3 ? '' : $GLOBALS['formats_logos'][$size[2] - 1]);
    if ($type) {
        @rename($file_tmp, $file_tmp . ".{$type}");
        $file_tmp = $file_tmp . ".{$type}";
        $poids = filesize($file_tmp);
        if (defined('_LOGO_MAX_WIDTH') or defined('_LOGO_MAX_HEIGHT')) {
            if (defined('_LOGO_MAX_WIDTH') and _LOGO_MAX_WIDTH and $size[0] > _LOGO_MAX_WIDTH or defined('_LOGO_MAX_HEIGHT') and _LOGO_MAX_HEIGHT and $size[1] > _LOGO_MAX_HEIGHT) {
                $max_width = (defined('_LOGO_MAX_WIDTH') and _LOGO_MAX_WIDTH) ? _LOGO_MAX_WIDTH : '*';
                $max_height = (defined('_LOGO_MAX_HEIGHT') and _LOGO_MAX_HEIGHT) ? _LOGO_MAX_HEIGHT : '*';
                // pas la peine d'embeter le redacteur avec ca si on a active le calcul des miniatures
                // on met directement a la taille maxi a la volee
                if (isset($GLOBALS['meta']['creer_preview']) and $GLOBALS['meta']['creer_preview'] == 'oui') {
                    include_spip('inc/filtres');
                    $img = filtrer('image_reduire', $file_tmp, $max_width, $max_height);
                    $img = extraire_attribut($img, 'src');
                    $img = supprimer_timestamp($img);
                    if (@file_exists($img) and $img !== $file_tmp) {
                        spip_unlink($file_tmp);
                        @rename($img, $file_tmp);
                        $size = @getimagesize($file_tmp);
                    }
                }
                // verifier au cas ou image_reduire a echoue
                if (defined('_LOGO_MAX_WIDTH') and _LOGO_MAX_WIDTH and $size[0] > _LOGO_MAX_WIDTH or defined('_LOGO_MAX_HEIGHT') and _LOGO_MAX_HEIGHT and $size[1] > _LOGO_MAX_HEIGHT) {
                    spip_unlink($file_tmp);
                    $erreur = _T('info_logo_max_poids', array('maxi' => _T('info_largeur_vignette', array('largeur_vignette' => $max_width, 'hauteur_vignette' => $max_height)), 'actuel' => _T('info_largeur_vignette', array('largeur_vignette' => $size[0], 'hauteur_vignette' => $size[1]))));
                }
            }
        }
        if (!$erreur and defined('_LOGO_MAX_SIZE') and _LOGO_MAX_SIZE and $poids > _LOGO_MAX_SIZE * 1024) {
            spip_unlink($file_tmp);
            $erreur = _T('info_logo_max_poids', array('maxi' => taille_en_octets(_LOGO_MAX_SIZE * 1024), 'actuel' => taille_en_octets($poids)));
        }
        if (!$erreur) {
            @rename($file_tmp, _DIR_LOGOS . $nom . ".{$type}");
        }
    } else {
        spip_unlink($file_tmp);
        $erreur = _T('info_logo_format_interdit', array('formats' => join(', ', $GLOBALS['formats_logos'])));
    }
    return $erreur;
}
Exemple #9
0
function nom_fichier_dump()
{
	global $connect_toutes_rubriques;

	if ($connect_toutes_rubriques AND file_exists(_DIR_DUMP))
		$dir = _DIR_DUMP;
	else $dir = determine_upload();
	$site = isset($GLOBALS['meta']['nom_site'])
	  ? preg_replace(array(",\W,is",",_(?=_),",",_$,"),array("_","",""), couper(translitteration(trim($GLOBALS['meta']['nom_site'])),30,""))
	  : 'spip';

	$site .= '_' . date('Ymd');

	$nom = $site;
	$cpt=0;
	while (file_exists($dir. $nom . ".xml") OR
	       file_exists($dir. $nom . ".xml.gz")) {
		$nom = $site . sprintf('_%03d', ++$cpt);
	}
	return $nom;
}