$source)); // si la source est encore la, en revenir a la // methode traditionnelle : chargement de l'url puis analyse if (!isset($a['fichier']) OR !isset($a['mode'])){ if (!$a = recuperer_infos_distantes($a['source'])) { return _T('medias:erreur_chemin_distant',array('nom'=>$source)); } # NB: dans les bonnes conditions (fichier autorise et pas trop gros) # $a['fichier'] est une copie locale du fichier unset($a['body']); $a['distant'] = 'oui'; $a['mode'] = 'document'; $a['fichier'] = set_spip_doc($source); } // stocker pour la seconde demande return $infos[$source] = $a; } /** * Renseigner les informations de taille et dimension d'un document * * Récupère les informations de taille (largeur / hauteur / type_image / taille) d'un document * Utilise pour cela les fonctions du répertoire metadatas/* * * Ces fonctions de récupérations peuvent retourner d'autres champs si ces champs sont définis * comme editable dans la déclaration de la table spip_documents * * TODO Renommer cette fonction sans "_image" * * @param string $fichier * Le fichier à examiner * @param string $ext * L'extension du fichier à examiner * @return array|string $infos * Si c'est une chaine, c'est une erreur * Si c'est un tableau, l'ensemble des informations récupérées du fichier */ function renseigner_taille_dimension_image($fichier,$ext){ $infos = array( 'largeur'=>0, 'hauteur'=>0, 'type_image'=>'', 'taille'=>0 ); // Quelques infos sur le fichier if ( !$fichier OR !@file_exists($fichier) OR !$infos['taille'] = @intval(filesize($fichier))) { spip_log ("Echec copie du fichier $fichier"); return _T('medias:erreur_copie_fichier',array('nom'=> $fichier)); } // chercher une fonction de description $meta = array(); if ($metadata = charger_fonction($ext,"metadata",true)){ $meta = $metadata($fichier); } else { $media = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($ext)); if ($metadata = charger_fonction($media,"metadata",true)){ $meta = $metadata($fichier); } } $meta = pipeline('renseigner_document',array('args'=>array('extension'=>$ext,'fichier'=>$fichier),'data' => $meta)); include_spip('inc/filtres'); # pour objet_info() $editables = objet_info('document','champs_editables'); foreach($meta as $m=>$v) if (isset($infos[$m]) OR in_array($m,$editables)) $infos[$m] = $v; return $infos; } ?>