diff --git a/action/acceder_document.php b/action/acceder_document.php index 81336c985571e01b7b4343cc00ff80f035ab0225..2b33862c649e850f398c7ae16b71e1254f229e1c 100644 --- a/action/acceder_document.php +++ b/action/acceder_document.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} include_spip('inc/headers'); @@ -29,94 +31,101 @@ function action_acceder_document_dist() { $arg = rawurldecode(_request('arg')); $status = $dcc = false; - if (strpos($f,'../') !== false - OR preg_match(',^\w+://,', $f)) { + if (strpos($f, '../') !== false + OR preg_match(',^\w+://,', $f) + ) { $status = 403; - } - else if (!file_exists($file) OR !is_readable($file)) { - $status = 404; } else { - $where = "D.fichier=".sql_quote(set_spip_doc($file)) - . ($arg ? " AND D.id_document=".intval($arg): ''); - - $doc = sql_fetsel("D.id_document, D.titre, D.fichier, T.mime_type, T.inclus, D.extension", "spip_documents AS D LEFT JOIN spip_types_documents AS T ON D.extension=T.extension",$where); - if (!$doc) { + if (!file_exists($file) OR !is_readable($file)) { $status = 404; } else { + $where = "D.fichier=" . sql_quote(set_spip_doc($file)) + . ($arg ? " AND D.id_document=" . intval($arg) : ''); - // ETag pour gerer le status 304 - $ETag = md5($file . ': '. filemtime($file)); - if (isset($_SERVER['HTTP_IF_NONE_MATCH']) - AND $_SERVER['HTTP_IF_NONE_MATCH'] == $ETag) { - http_status(304); // Not modified - exit; + $doc = sql_fetsel("D.id_document, D.titre, D.fichier, T.mime_type, T.inclus, D.extension", + "spip_documents AS D LEFT JOIN spip_types_documents AS T ON D.extension=T.extension", $where); + if (!$doc) { + $status = 404; } else { - header('ETag: '.$ETag); - } - // - // Verifier les droits de lecture du document - // en controlant la cle passee en argument - // - include_spip('inc/securiser_action'); - $cle = _request('cle'); - if (!verifier_cle_action($doc['id_document'].','.$f, $cle)) { - spip_log("acces interdit $cle erronee"); - $status = 403; + // ETag pour gerer le status 304 + $ETag = md5($file . ': ' . filemtime($file)); + if (isset($_SERVER['HTTP_IF_NONE_MATCH']) + AND $_SERVER['HTTP_IF_NONE_MATCH'] == $ETag + ) { + http_status(304); // Not modified + exit; + } else { + header('ETag: ' . $ETag); + } + + // + // Verifier les droits de lecture du document + // en controlant la cle passee en argument + // + include_spip('inc/securiser_action'); + $cle = _request('cle'); + if (!verifier_cle_action($doc['id_document'] . ',' . $f, $cle)) { + spip_log("acces interdit $cle erronee"); + $status = 403; + } } } } - switch($status) { + switch ($status) { - case 403: - include_spip('inc/minipres'); - echo minipres(); - break; + case 403: + include_spip('inc/minipres'); + echo minipres(); + break; - case 404: - http_status(404); - include_spip('inc/minipres'); - echo minipres(_T('erreur').' 404', - _T('medias:info_document_indisponible')); - break; + case 404: + http_status(404); + include_spip('inc/minipres'); + echo minipres(_T('erreur') . ' 404', + _T('medias:info_document_indisponible')); + break; - default: - header("Content-Type: ". $doc['mime_type']); + default: + header("Content-Type: " . $doc['mime_type']); - // pour les images ne pas passer en attachment - // sinon, lorsqu'on pointe directement sur leur adresse, - // le navigateur les downloade au lieu de les afficher + // pour les images ne pas passer en attachment + // sinon, lorsqu'on pointe directement sur leur adresse, + // le navigateur les downloade au lieu de les afficher - if ($doc['inclus']=='non') { + if ($doc['inclus'] == 'non') { - // Si le fichier a un titre avec extension, - // ou si c'est un nom bien connu d'Unix, le prendre - // sinon l'ignorer car certains navigateurs pataugent + // Si le fichier a un titre avec extension, + // ou si c'est un nom bien connu d'Unix, le prendre + // sinon l'ignorer car certains navigateurs pataugent - $f = basename($file); - if (isset($doc['titre']) - AND (preg_match('/^\w+[.]\w+$/', $doc['titre']) OR $doc['titre'] == 'Makefile')) - $f = $doc['titre']; + $f = basename($file); + if (isset($doc['titre']) + AND (preg_match('/^\w+[.]\w+$/', $doc['titre']) OR $doc['titre'] == 'Makefile') + ) { + $f = $doc['titre']; + } - // ce content-type est necessaire pour eviter des corruptions de zip dans ie6 - header('Content-Type: application/octet-stream'); + // ce content-type est necessaire pour eviter des corruptions de zip dans ie6 + header('Content-Type: application/octet-stream'); - header("Content-Disposition: attachment; filename=\"$f\";"); - header("Content-Transfer-Encoding: binary"); + header("Content-Disposition: attachment; filename=\"$f\";"); + header("Content-Transfer-Encoding: binary"); - // fix for IE catching or PHP bug issue - header("Pragma: public"); - header("Expires: 0"); // set expiration time - header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + // fix for IE catching or PHP bug issue + header("Pragma: public"); + header("Expires: 0"); // set expiration time + header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); - } + } - if ($cl = filesize($file)) - header("Content-Length: ". $cl); + if ($cl = filesize($file)) { + header("Content-Length: " . $cl); + } - readfile($file); - break; + readfile($file); + break; } } diff --git a/action/ajouter_documents.php b/action/ajouter_documents.php index ba1ffb122386feac31ef83d3a795e57c73a023b9..28e1d42324885a4b3398a996f34177f66fc65155 100644 --- a/action/ajouter_documents.php +++ b/action/ajouter_documents.php @@ -14,9 +14,11 @@ * Gestion de l'action ajouter_documents * * @package SPIP\Medias\Action -**/ + **/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} include_spip('inc/getdocument'); include_spip('inc/documents'); @@ -40,18 +42,19 @@ include_spip('inc/renseigner_document'); * @return array * Liste des id_documents inserés */ -function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet, $mode){ - $ajouter_un_document = charger_fonction('ajouter_un_document','action'); +function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet, $mode) { + $ajouter_un_document = charger_fonction('ajouter_un_document', 'action'); $ajoutes = array(); // on ne peut mettre qu'un seul document a la place d'un autre ou en vignette d'un autre - if (intval($id_document)){ + if (intval($id_document)) { $ajoutes[] = $ajouter_un_document($id_document, reset($files), $objet, $id_objet, $mode); - } - else - foreach($files as $file){ + } else { + foreach ($files as $file) { $ajoutes[] = $ajouter_un_document('new', $file, $objet, $id_objet, $mode); } + } + return $ajoutes; } @@ -63,7 +66,7 @@ function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet, * 0 ou 'new' pour une insertion * @param array $file * Propriétes au format $_FILE étendu : - * + * * - string tmp_name : source sur le serveur * - string name : nom du fichier envoye * - bool titrer : donner ou non un titre a partir du nom du fichier @@ -79,7 +82,7 @@ function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet, * * - int : l'id_document ajouté (opération réussie) * - string : une erreur s'est produit, la chaine est le message d'erreur - * + * */ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, $mode) { @@ -91,15 +94,17 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, // pas que Toto.pdf et toto.pdf // et on aura une collision en cas de changement de file system $file['name'] = strtolower(translitteration($file['name'])); - + // Pouvoir definir dans mes_options.php que l'on veut titrer tous les documents par d?faut - if (!defined('_TITRER_DOCUMENTS')) { define('_TITRER_DOCUMENTS', false); } + if (!defined('_TITRER_DOCUMENTS')) { + define('_TITRER_DOCUMENTS', false); + } - $titrer = isset($file['titrer'])?$file['titrer']:_TITRER_DOCUMENTS; - $mode = ((isset($file['mode']) AND $file['mode'])?$file['mode']:$mode); + $titrer = isset($file['titrer']) ? $file['titrer'] : _TITRER_DOCUMENTS; + $mode = ((isset($file['mode']) AND $file['mode']) ? $file['mode'] : $mode); include_spip('inc/modifier'); - if (isset($file['distant']) AND $file['distant'] AND !in_array($mode,array('choix','auto','image','document'))) { + if (isset($file['distant']) AND $file['distant'] AND !in_array($mode, array('choix', 'auto', 'image', 'document'))) { include_spip('inc/distant'); $file['tmp_name'] = _DIR_RACINE . copie_locale($source); $source = $file['tmp_name']; @@ -117,37 +122,37 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, # NB: dans les bonnes conditions (fichier autorise et pas trop gros) # $a['fichier'] est une copie locale du fichier - $infos = renseigner_taille_dimension_image($champs['fichier'],$champs['extension'], true); + $infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension'], true); // on ignore erreur eventuelle sur $infos car on est distant, ca ne marche pas forcement - if (is_array($infos)){ + if (is_array($infos)) { $champs = array_merge($champs, $infos); } unset($champs['type_image']); - } - // on ne doit plus arriver ici, car l'url distante a ete verifiee a la saisie ! + } // on ne doit plus arriver ici, car l'url distante a ete verifiee a la saisie ! else { spip_log("Echec du lien vers le document $source, abandon"); + return $a; // message d'erreur } - } - else { // pas distant + } else { // pas distant $champs = array( 'distant' => 'non' ); - + $type_image = ''; // au pire $champs['titre'] = ''; - if ($titrer){ - $titre = substr($nom_envoye,0, strrpos($nom_envoye, ".")); // Enlever l'extension du nom du fichier + if ($titrer) { + $titre = substr($nom_envoye, 0, strrpos($nom_envoye, ".")); // Enlever l'extension du nom du fichier $titre = preg_replace(',[[:punct:][:space:]]+,u', ' ', $titre); $champs['titre'] = preg_replace(',\.([^.]+)$,', '', $titre); } - if (!is_array($fichier = fixer_fichier_upload($file, $mode))) - return is_string($fichier)?$fichier:_T("medias:erreur_upload_type_interdit",array('nom'=>$file['name'])); - + if (!is_array($fichier = fixer_fichier_upload($file, $mode))) { + return is_string($fichier) ? $fichier : _T("medias:erreur_upload_type_interdit", array('nom' => $file['name'])); + } + $champs['inclus'] = $fichier['inclus']; $champs['extension'] = $fichier['extension']; $champs['fichier'] = $fichier['fichier']; @@ -160,21 +165,23 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, * -* taille * -* ses metadonnées si une fonction de metadatas/ est présente */ - $infos = renseigner_taille_dimension_image($champs['fichier'],$champs['extension']); - if (is_string($infos)) - return $infos; // c'est un message d'erreur ! - - $champs = array_merge($champs,$infos); + $infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']); + if (is_string($infos)) { + return $infos; + } // c'est un message d'erreur ! + + $champs = array_merge($champs, $infos); // Si mode == 'choix', fixer le mode image/document - if (in_array($mode,array('choix','auto'))) { - $choisir_mode_document = charger_fonction('choisir_mode_document','inc'); + if (in_array($mode, array('choix', 'auto'))) { + $choisir_mode_document = charger_fonction('choisir_mode_document', 'inc'); $mode = $choisir_mode_document($champs, $champs['inclus'] == 'image', $objet); } $champs['mode'] = $mode; - if (($test = verifier_taille_document_acceptable($champs))!==true){ + if (($test = verifier_taille_document_acceptable($champs)) !== true) { spip_unlink($champs['fichier']); + return $test; // erreur sur les dimensions du fichier } @@ -184,17 +191,19 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, } // si le media est pas renseigne, le faire, en fonction de l'extension - if (!isset($champs['media'])){ - $champs['media'] = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($champs['extension'])); + if (!isset($champs['media'])) { + $champs['media'] = sql_getfetsel('media_defaut', 'spip_types_documents', + 'extension=' . sql_quote($champs['extension'])); } - + // lier le parent si necessaire - if ($id_objet=intval($id_objet) AND $objet) + if ($id_objet = intval($id_objet) AND $objet) { $champs['parents'][] = "$objet|$id_objet"; + } // "mettre a jour un document" si on lui // passe un id_document - if ($id_document=intval($id_document)){ + if ($id_document = intval($id_document)) { unset($champs['titre']); // garder le titre d'origine unset($champs['date']); // garder la date d'origine unset($champs['descriptif']); // garder la desc d'origine @@ -204,16 +213,20 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, include_spip('action/editer_document'); // Installer le document dans la base - if (!$id_document){ - if ($id_document = document_inserer()) - spip_log ("ajout du document ".$file['tmp_name']." ".$file['name']." (M '$mode' T '$objet' L '$id_objet' D '$id_document')",'medias'); - else - spip_log ("Echec insert_document() du document ".$file['tmp_name']." ".$file['name']." (M '$mode' T '$objet' L '$id_objet' D '$id_document')",'medias'._LOG_ERREUR); + if (!$id_document) { + if ($id_document = document_inserer()) { + spip_log("ajout du document " . $file['tmp_name'] . " " . $file['name'] . " (M '$mode' T '$objet' L '$id_objet' D '$id_document')", + 'medias'); + } else { + spip_log("Echec insert_document() du document " . $file['tmp_name'] . " " . $file['name'] . " (M '$mode' T '$objet' L '$id_objet' D '$id_document')", + 'medias' . _LOG_ERREUR); + } + } + if (!$id_document) { + return _T('medias:erreur_insertion_document_base', array('fichier' => "<em>" . $file['name'] . "</em>")); } - if (!$id_document) - return _T('medias:erreur_insertion_document_base',array('fichier'=>"<em>".$file['name']."</em>")); - - document_modifier($id_document,$champs); + + document_modifier($id_document, $champs); // permettre aux plugins de faire des modifs a l'ajout initial // ex EXIF qui tourne les images si necessaire @@ -224,7 +237,7 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, 'table' => 'spip_documents', // compatibilite 'table_objet' => 'documents', 'spip_table_objet' => 'spip_documents', - 'type' =>'document', + 'type' => 'document', 'id_objet' => $id_document, 'champs' => array_keys($champs), 'serveur' => '', // serveur par defaut, on ne sait pas faire mieux pour le moment @@ -235,20 +248,20 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, ) ); - return $id_document ; + return $id_document; } /** * Corrige l'extension du fichier dans quelques cas particuliers - * + * * @note * Une extension 'pdf ' passe dans la requête de contrôle * mysql> SELECT * FROM spip_types_documents WHERE extension="pdf "; * * @todo * À passer dans base/typedoc - * + * * @param string $ext * @return string */ @@ -256,27 +269,28 @@ function corriger_extension($ext) { $ext = preg_replace(',[^a-z0-9],i', '', $ext); switch ($ext) { case 'htm': - $ext='html'; + $ext = 'html'; break; case 'jpeg': - $ext='jpg'; + $ext = 'jpg'; break; case 'tiff': - $ext='tif'; + $ext = 'tif'; break; case 'aif': - $ext='aiff'; + $ext = 'aiff'; break; case 'mpeg': - $ext='mpg'; + $ext = 'mpg'; break; } + return $ext; } /** * Vérifie la possibilité d'uploader une extension - * + * * Vérifie aussi si l'extension est autorisée pour le mode demandé * si on connait le mode à ce moment là * @@ -290,33 +304,40 @@ function corriger_extension($ext) { * Avec un index 'autozip' si il faut zipper * - false ou message d'erreur si l'extension est refusée */ -function verifier_upload_autorise($source, $mode = ''){ - $infos = array('fichier'=>$source); +function verifier_upload_autorise($source, $mode = '') { + $infos = array('fichier' => $source); $res = false; if (preg_match(",\.([a-z0-9]+)(\?.*)?$,i", $source, $match) - AND $ext = $match[1]){ - - $ext = corriger_extension(strtolower($ext)); - if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'")) - $infos = array_merge($infos,$res); + AND $ext = $match[1] + ) { + + $ext = corriger_extension(strtolower($ext)); + if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", + "extension=" . sql_quote($ext) . " AND upload='oui'") + ) { + $infos = array_merge($infos, $res); + } } - if (!$res){ - if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension='zip' AND upload='oui'")){ - $infos = array_merge($infos,$res); + if (!$res) { + if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", + "extension='zip' AND upload='oui'") + ) { + $infos = array_merge($infos, $res); $res['autozip'] = true; } } - if ($mode AND $res){ + if ($mode AND $res) { // verifier en fonction du mode si une fonction est proposee - if ($verifier_document_mode = charger_fonction("verifier_document_mode_".$mode,"inc",true)){ + if ($verifier_document_mode = charger_fonction("verifier_document_mode_" . $mode, "inc", true)) { $check = $verifier_document_mode($infos); // true ou message d'erreur sous forme de chaine - if ($check!==true) + if ($check !== true) { $res = $check; + } } } if (!$res OR is_string($res)) { - spip_log("Upload $source interdit ($res)",_LOG_INFO_IMPORTANTE); + spip_log("Upload $source interdit ($res)", _LOG_INFO_IMPORTANTE); } return $res; @@ -325,102 +346,108 @@ function verifier_upload_autorise($source, $mode = ''){ /** * Tester le type de document - * + * * - le document existe et n'est pas de taille 0 ? * - interdit a l'upload ? * - quelle extension dans spip_types_documents ? * - est-ce "inclus" comme une image ? - * + * * Le zipper si necessaire - * + * * @param array $file * Au format $_FILES * @param string $mode * Mode d'inclusion du fichier, si connu * @return array */ -function fixer_fichier_upload($file, $mode = ''){ +function fixer_fichier_upload($file, $mode = '') { /** - * On vérifie que le fichier existe et qu'il contient quelque chose + * On vérifie que le fichier existe et qu'il contient quelque chose */ - if (is_array($row=verifier_upload_autorise($file['name'], $mode))) { - if (!isset($row['autozip'])){ + if (is_array($row = verifier_upload_autorise($file['name'], $mode))) { + if (!isset($row['autozip'])) { $row['fichier'] = copier_document($row['extension'], $file['name'], $file['tmp_name']); /** * On vérifie que le fichier a une taille * si non, on le supprime et on affiche une erreur */ - if($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) { - spip_log ("Echec copie du fichier ".$file['tmp_name']." (taille de fichier indéfinie)"); + if ($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) { + spip_log("Echec copie du fichier " . $file['tmp_name'] . " (taille de fichier indéfinie)"); spip_unlink(get_spip_doc($row['fichier'])); - return _T('medias:erreur_copie_fichier',array('nom'=> $file['tmp_name'])); - }else + + return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name'])); + } else { return $row; + } } // creer un zip comme demande // pour encapsuler un fichier dont l'extension n'est pas supportee - else{ - + else { + unset($row['autozip']); $ext = 'zip'; - if (!$tmp_dir = tempnam(_DIR_TMP, 'tmp_upload')) + if (!$tmp_dir = tempnam(_DIR_TMP, 'tmp_upload')) { return false; + } spip_unlink($tmp_dir); @mkdir($tmp_dir); include_spip('inc/charsets'); - $tmp = $tmp_dir.'/'.translitteration($file['name']); + $tmp = $tmp_dir . '/' . translitteration($file['name']); - $file['name'] .= '.'.$ext; # conserver l'extension dans le nom de fichier, par exemple toto.js => toto.js.zip + $file['name'] .= '.' . $ext; # conserver l'extension dans le nom de fichier, par exemple toto.js => toto.js.zip // deplacer le fichier tmp_name dans le dossier tmp deplacer_fichier_upload($file['tmp_name'], $tmp, true); include_spip('inc/pclzip'); - $source = _DIR_TMP . basename($tmp_dir) . '.'.$ext; + $source = _DIR_TMP . basename($tmp_dir) . '.' . $ext; $archive = new PclZip($source); $v_list = $archive->create($tmp, - PCLZIP_OPT_REMOVE_PATH, $tmp_dir, - PCLZIP_OPT_ADD_PATH, ''); + PCLZIP_OPT_REMOVE_PATH, $tmp_dir, + PCLZIP_OPT_ADD_PATH, ''); effacer_repertoire_temporaire($tmp_dir); if (!$v_list) { spip_log("Echec creation du zip "); + return false; } - $row['fichier'] = copier_document($row['extension'], $file['name'], $source); + $row['fichier'] = copier_document($row['extension'], $file['name'], $source); spip_unlink($source); /** * On vérifie que le fichier a une taille * si non, on le supprime et on affiche une erreur */ - if($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) { - spip_log ("Echec copie du fichier ".$file['tmp_name']." (taille de fichier indéfinie)"); + if ($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) { + spip_log("Echec copie du fichier " . $file['tmp_name'] . " (taille de fichier indéfinie)"); spip_unlink(get_spip_doc($row['fichier'])); - return _T('medias:erreur_copie_fichier',array('nom'=> $file['tmp_name'])); - }else + + return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name'])); + } else { return $row; + } } - } - else - return $row; // retourner le message d'erreur + } else { + return $row; + } // retourner le message d'erreur } /** * Verifier si le fichier respecte les contraintes de tailles - * + * * @param array $infos * @return bool|mixed|string */ -function verifier_taille_document_acceptable(&$infos){ - +function verifier_taille_document_acceptable(&$infos) { + // si ce n'est pas une image if (!$infos['type_image']) { - if (defined('_DOC_MAX_SIZE') AND _DOC_MAX_SIZE > 0 AND $infos['taille'] > _DOC_MAX_SIZE*1024){ + if (defined('_DOC_MAX_SIZE') AND _DOC_MAX_SIZE > 0 AND $infos['taille'] > _DOC_MAX_SIZE*1024) { return _T('medias:info_doc_max_poids', array( 'maxi' => taille_en_octets(_DOC_MAX_SIZE*1024), @@ -428,24 +455,23 @@ function verifier_taille_document_acceptable(&$infos){ ) ); } - } - - // si c'est une image + } // si c'est une image else { - if ((defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH AND $infos['largeur']>_IMG_MAX_WIDTH) - OR (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT AND $infos['hauteur']>_IMG_MAX_HEIGHT) ){ + if ((defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH AND $infos['largeur'] > _IMG_MAX_WIDTH) + OR (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT AND $infos['hauteur'] > _IMG_MAX_HEIGHT) + ) { $max_width = (defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH) ? _IMG_MAX_WIDTH : '*'; $max_height = (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT) ? _IMG_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'){ + if (isset($GLOBALS['meta']['creer_preview']) AND $GLOBALS['meta']['creer_preview'] == 'oui') { include_spip('inc/filtres'); $img = filtrer('image_reduire', $infos['fichier'], $max_width, $max_height); $img = extraire_attribut($img, 'src'); $img = supprimer_timestamp($img); - if (@file_exists($img) AND $img!==$infos['fichier']){ + if (@file_exists($img) AND $img !== $infos['fichier']) { spip_unlink($infos['fichier']); @rename($img, $infos['fichier']); $size = @getimagesize($infos['fichier']); @@ -455,24 +481,29 @@ function verifier_taille_document_acceptable(&$infos){ } } - if ((defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH AND $infos['largeur']>_IMG_MAX_WIDTH) - OR (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT AND $infos['hauteur']>_IMG_MAX_HEIGHT) ){ + if ((defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH AND $infos['largeur'] > _IMG_MAX_WIDTH) + OR (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT AND $infos['hauteur'] > _IMG_MAX_HEIGHT) + ) { return _T('medias:info_image_max_taille', array( 'maxi' => _T('info_largeur_vignette', - array('largeur_vignette' => $max_width, - 'hauteur_vignette' => $max_height)), + array( + 'largeur_vignette' => $max_width, + 'hauteur_vignette' => $max_height + )), 'actuel' => _T('info_largeur_vignette', - array('largeur_vignette' => $infos['largeur'], - 'hauteur_vignette' => $infos['hauteur'])) + array( + 'largeur_vignette' => $infos['largeur'], + 'hauteur_vignette' => $infos['hauteur'] + )) )); } } - if (defined('_IMG_MAX_SIZE') AND _IMG_MAX_SIZE > 0 AND $infos['taille'] > _IMG_MAX_SIZE*1024){ + if (defined('_IMG_MAX_SIZE') AND _IMG_MAX_SIZE > 0 AND $infos['taille'] > _IMG_MAX_SIZE*1024) { return _T('medias:info_image_max_poids', array( 'maxi' => taille_en_octets(_IMG_MAX_SIZE*1024), @@ -485,8 +516,9 @@ function verifier_taille_document_acceptable(&$infos){ } // verifier en fonction du mode si une fonction est proposee - if ($verifier_document_mode = charger_fonction("verifier_document_mode_".$infos['mode'],"inc",true)) + if ($verifier_document_mode = charger_fonction("verifier_document_mode_" . $infos['mode'], "inc", true)) { return $verifier_document_mode($infos); + } return true; } diff --git a/action/changer_mode_document.php b/action/changer_mode_document.php index 5953c02dba6a82f451c16a835d8f060f856cd8f3..ee26252ef15daf926350619e0c83e9b6d55fa790 100644 --- a/action/changer_mode_document.php +++ b/action/changer_mode_document.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** @@ -22,33 +24,37 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @param string $mode * @return void */ -function action_changer_mode_document_dist($id_document = null, $mode = null){ - if (is_null($id_document) OR is_null($mode)){ +function action_changer_mode_document_dist($id_document = null, $mode = null) { + if (is_null($id_document) OR is_null($mode)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); - if (!preg_match(",^(\d+)\W(\w+)$,", $arg, $r)) + if (!preg_match(",^(\d+)\W(\w+)$,", $arg, $r)) { spip_log("action_changer_mode_document $arg pas compris"); - else { + } else { array_shift($r); - list($id_document, $mode) = $r; + list($id_document, $mode) = $r; } } if ($id_document AND include_spip('inc/autoriser') - AND autoriser('modifier','document',$id_document)) + AND autoriser('modifier', 'document', $id_document) + ) { action_changer_mode_document_post($id_document, $mode); + } } // http://code.spip.net/@action_changer_mode_document_post -function action_changer_mode_document_post($id_document, $mode){ +function action_changer_mode_document_post($id_document, $mode) { // - id_document le doc a modifier // - mode le mode a lui donner if ($id_document = intval($id_document) - AND in_array($mode, array('vignette', 'image', 'document'))) { + AND in_array($mode, array('vignette', 'image', 'document')) + ) { include_spip('action/editer_document'); - document_modifier($id_document,array('mode'=>$mode)); + document_modifier($id_document, array('mode' => $mode)); } } + ?> diff --git a/action/copier_local.php b/action/copier_local.php index 5d7052c53f818a2c9bdaae4f1d63a812f3bf994d..c2a28dd35209b6ccdbc506da58ef6c5a9a384897 100644 --- a/action/copier_local.php +++ b/action/copier_local.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Fonction appellee lorsque l'utilisateur clique sur le bouton @@ -25,18 +27,19 @@ if (!defined("_ECRIRE_INC_VERSION")) return; */ function action_copier_local_dist($id_document = null) { - if (!$id_document){ + if (!$id_document) { // Recupere les arguments. $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); - + $id_document = intval($arg); } if (!$id_document) { spip_log("action_copier_local_dist $arg pas compris"); + return false; - } else { + } else { // arguments recuperes, on peut maintenant appeler la fonction. return action_copier_local_post($id_document); } @@ -58,23 +61,25 @@ function action_copier_local_post($id_document) { $fichier = copie_locale($source); if ($fichier) { $fichier = _DIR_RACINE . $fichier; - $files[] = array('tmp_name'=>$fichier,'name'=>basename($fichier)); - $ajouter_documents = charger_fonction('ajouter_documents','action'); + $files[] = array('tmp_name' => $fichier, 'name' => basename($fichier)); + $ajouter_documents = charger_fonction('ajouter_documents', 'action'); spip_log("convertit doc $id_document en local: $source => $fichier"); $liste = array(); - $ajouter_documents($id_document,$files,'',0,$row['mode'],$liste); + $ajouter_documents($id_document, $files, '', 0, $row['mode'], $liste); spip_unlink($fichier); - + // ajouter l'origine du document aux credits include_spip('action/editer_document'); - document_modifier($id_document,array('credits'=>($row['credits']?$row['credits'].', ':'').$source)); + document_modifier($id_document, array('credits' => ($row['credits'] ? $row['credits'] . ', ' : '') . $source)); + return true; - + } else { spip_log("echec copie locale $source"); } - return _T('medias:erreur_copie_fichier',array('nom'=>$source)); + + return _T('medias:erreur_copie_fichier', array('nom' => $source)); } ?> diff --git a/action/dissocier_document.php b/action/dissocier_document.php index d0cba927a834e9dd88714164fe13b449a60c9428..f63586f4a25a3dba646e4370a72c5d2be2e483bc 100644 --- a/action/dissocier_document.php +++ b/action/dissocier_document.php @@ -14,9 +14,11 @@ * Gestion de l'action dissocier_document * * @package SPIP\Medias\Action -**/ + **/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** @@ -28,39 +30,42 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * * - 4eme arg : suppr = true, false sinon * - 5eme arg : safe = true, false sinon - * + * * @return void */ -function action_dissocier_document_dist($arg = null){ - if(is_null($arg)){ +function action_dissocier_document_dist($arg = null) { + if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } // attention au cas ou id_objet est negatif ! - if (strncmp($arg,'-',1)==0){ - $arg = explode('-',substr($arg,1)); + if (strncmp($arg, '-', 1) == 0) { + $arg = explode('-', substr($arg, 1)); list($id_objet, $objet, $document) = $arg; $id_objet = -$id_objet; - } - else { - $arg = explode('-',$arg); + } else { + $arg = explode('-', $arg); list($id_objet, $objet, $document) = $arg; } $suppr = $check = false; - if (count($arg)>3 AND $arg[3]=='suppr') + if (count($arg) > 3 AND $arg[3] == 'suppr') { $suppr = true; - if (count($arg)>4 AND $arg[4]=='safe') + } + if (count($arg) > 4 AND $arg[4] == 'safe') { $check = true; - if ($id_objet=intval($id_objet) + } + if ($id_objet = intval($id_objet) AND ( - ($id_objet<0 AND $id_objet==-$GLOBALS['visiteur_session']['id_auteur']) - OR autoriser('dissocierdocuments',$objet,$id_objet) - )) + ($id_objet < 0 AND $id_objet == -$GLOBALS['visiteur_session']['id_auteur']) + OR autoriser('dissocierdocuments', $objet, $id_objet) + ) + ) { dissocier_document($document, $objet, $id_objet, $suppr, $check); - else - spip_log("Interdit de modifier $objet $id_objet","spip"); + } else { + spip_log("Interdit de modifier $objet $id_objet", "spip"); + } } /** @@ -77,19 +82,20 @@ function action_dissocier_document_dist($arg = null){ * @return bool */ function supprimer_lien_document($id_document, $objet, $id_objet, $supprime = false, $check = false) { - if (!$id_document = intval($id_document)) + if (!$id_document = intval($id_document)) { return false; + } // [TODO] le mettre en paramètre de la fonction ? - $serveur = ''; + $serveur = ''; // D'abord on ne supprime pas, on dissocie include_spip('action/editer_liens'); - objet_dissocier(array('document'=>$id_document),array($objet=>$id_objet)); + objet_dissocier(array('document' => $id_document), array($objet => $id_objet)); // Si c'est une vignette, l'eliminer du document auquel elle appartient // cas tordu peu probable - sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=".$id_document); + sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=" . $id_document); // verifier son statut apres une suppression de lien include_spip('action/editer_document'); @@ -117,18 +123,19 @@ function supprimer_lien_document($id_document, $objet, $id_objet, $supprime = fa // si demande, on verifie que ses documents vus sont bien lies ! $spip_table_objet = table_objet_sql($objet); $table_objet = table_objet($objet); - $id_table_objet = id_table_objet($objet,$serveur); - $champs = sql_fetsel('*',$spip_table_objet,addslashes($id_table_objet)."=".intval($id_objet)); + $id_table_objet = id_table_objet($objet, $serveur); + $champs = sql_fetsel('*', $spip_table_objet, addslashes($id_table_objet) . "=" . intval($id_objet)); - $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc'); - $marquer_doublons_doc($champs,$id_objet,$objet,$id_table_objet,$table_objet,$spip_table_objet, '', $serveur); + $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc'); + $marquer_doublons_doc($champs, $id_objet, $objet, $id_table_objet, $table_objet, $spip_table_objet, '', $serveur); } // On supprime ensuite s'il est orphelin // et si demande // ici on ne bloque pas la suppression d'un document rattache a un autre - if ($supprime AND !sql_countsel('spip_documents_liens', "objet!='document' AND id_document=".$id_document)){ - $supprimer_document = charger_fonction('supprimer_document','action'); + if ($supprime AND !sql_countsel('spip_documents_liens', "objet!='document' AND id_document=" . $id_document)) { + $supprimer_document = charger_fonction('supprimer_document', 'action'); + return $supprimer_document($id_document); } } @@ -151,20 +158,19 @@ function supprimer_lien_document($id_document, $objet, $id_objet, $supprime = fa * verifier le texte des documents et relier les documents references dans l'objet * @return void */ -function dissocier_document($document, $objet, $id_objet, $supprime = false, $check = false){ - if ($id_document=intval($document)) { +function dissocier_document($document, $objet, $id_objet, $supprime = false, $check = false) { + if ($id_document = intval($document)) { supprimer_lien_document($id_document, $objet, $id_objet, $supprime, $check); - } - else { - list($image,$mode) = explode('/',$document); - $image = ($image=='I'); - $typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $image ? '' : 'NOT'); + } else { + list($image, $mode) = explode('/', $document); + $image = ($image == 'I'); + $typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $image ? '' : 'NOT'); - $obj = "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet); + $obj = "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet); $s = sql_select('docs.id_document', "spip_documents AS docs LEFT JOIN spip_documents_liens AS l ON l.id_document=docs.id_document", - "$obj AND vu='non' AND docs.mode=".sql_quote($mode)." AND $typdoc"); + "$obj AND vu='non' AND docs.mode=" . sql_quote($mode) . " AND $typdoc"); while ($t = sql_fetch($s)) { supprimer_lien_document($t['id_document'], $objet, $id_objet, $supprime, $check); } @@ -176,4 +182,5 @@ function dissocier_document($document, $objet, $id_objet, $supprime = false, $ch depublier_branche_rubrique_if($id_objet); } } + ?> diff --git a/action/editer_document.php b/action/editer_document.php index 8d1344002b2c74850c463a2fb1def5c63014747c..7b8dce00adc0105ded20de68aeddc8c27638e0db 100644 --- a/action/editer_document.php +++ b/action/editer_document.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** @@ -21,7 +23,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; */ function action_editer_document_dist($arg = null) { - if (is_null($arg)){ + if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } @@ -31,12 +33,13 @@ function action_editer_document_dist($arg = null) { $id_document = document_inserer(); } - if (!$id_document) - return array(0,''); // erreur + if (!$id_document) { + return array(0, ''); + } // erreur $err = document_modifier($id_document); - return array($id_document,$err); + return array($id_document, $err); } /** @@ -54,8 +57,9 @@ function document_inserer($id_parent = null, $set = null) { 'date' => 'NOW()', ); - if ($set) + if ($set) { $champs = array_merge($champs, $set); + } // Envoyer aux plugins $champs = pipeline('pre_insertion', @@ -93,11 +97,11 @@ function document_modifier($id_document, $set = null) { include_spip('inc/modifier'); include_spip('inc/filtres'); - + // champs normaux $champs = collecter_requests( - // white list - objet_info('document','champs_editables'), + // white list + objet_info('document', 'champs_editables'), // black list array('parents', 'ajout_parents'), // donnees eventuellement fournies @@ -109,16 +113,16 @@ function document_modifier($id_document, $set = null) { $indexation = false; // Si le document est publie, invalider les caches et demander sa reindexation - $t = sql_getfetsel("statut", "spip_documents", 'id_document='.intval($id_document)); + $t = sql_getfetsel("statut", "spip_documents", 'id_document=' . intval($id_document)); if ($t == 'publie') { $invalideur = "id='id_document/$id_document'"; $indexation = true; } - + $ancien_fichier = ""; // si le fichier est modifie, noter le nom de l'ancien pour faire le menage - if (isset($champs['fichier'])){ - $ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document)); + if (isset($champs['fichier'])) { + $ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document)); } if ($err = objet_modifier_champs('document', $id_document, @@ -127,29 +131,33 @@ function document_modifier($id_document, $set = null) { 'invalideur' => $invalideur, 'indexation' => $indexation ), - $champs)) + $champs) + ) { return $err; + } // nettoyer l'ancien fichier si necessaire if (isset($champs['fichier']) // un plugin a pu interdire la modif du fichier en virant le champ - AND $champs['fichier'] - AND $ancien_fichier // on avait bien note le nom du fichier avant la modif - AND $ancien_fichier!==$champs['fichier'] // et il a ete modifie - AND @file_exists($f = get_spip_doc($ancien_fichier))) - spip_unlink($f); + AND $champs['fichier'] + AND $ancien_fichier // on avait bien note le nom du fichier avant la modif + AND $ancien_fichier !== $champs['fichier'] // et il a ete modifie + AND @file_exists($f = get_spip_doc($ancien_fichier)) + ) { + spip_unlink($f); + } // Changer le statut du document ? // le statut n'est jamais fixe manuellement mais decoule de celui des objets lies - $champs = collecter_requests(array('parents','ajouts_parents'),array(),$set); - if(document_instituer($id_document,$champs)) { + $champs = collecter_requests(array('parents', 'ajouts_parents'), array(), $set); + if (document_instituer($id_document, $champs)) { // // Post-modifications // - + // Invalider les caches include_spip('inc/invalideur'); - suivre_invalideur("id='id_document/$id_document'"); + suivre_invalideur("id='id_document/$id_document'"); } } @@ -163,65 +171,78 @@ function document_modifier($id_document, $set = null) { * @param array $champs * @return bool */ -function document_instituer($id_document, $champs = array()){ - - $statut=isset($champs['statut'])?$champs['statut']:null; - $date_publication = isset($champs['date_publication'])?$champs['date_publication']:null; - if (isset($champs['parents'])) - medias_revision_document_parents($id_document,$champs['parents']); - if (isset($champs['ajout_parents'])) - medias_revision_document_parents($id_document,$champs['ajout_parents'],true); - +function document_instituer($id_document, $champs = array()) { + + $statut = isset($champs['statut']) ? $champs['statut'] : null; + $date_publication = isset($champs['date_publication']) ? $champs['date_publication'] : null; + if (isset($champs['parents'])) { + medias_revision_document_parents($id_document, $champs['parents']); + } + if (isset($champs['ajout_parents'])) { + medias_revision_document_parents($id_document, $champs['ajout_parents'], true); + } + $row = sql_fetsel("statut,date_publication", "spip_documents", "id_document=$id_document"); $statut_ancien = $row['statut']; $date_publication_ancienne = $row['date_publication']; /* Autodetermination du statut si non fourni */ - if (is_null($statut)){ + if (is_null($statut)) { $statut = 'prepa'; - $trouver_table = charger_fonction('trouver_table','base'); - $res = sql_select('id_objet,objet','spip_documents_liens',"objet!='document' AND id_document=".intval($id_document)); + $trouver_table = charger_fonction('trouver_table', 'base'); + $res = sql_select('id_objet,objet', 'spip_documents_liens', + "objet!='document' AND id_document=" . intval($id_document)); // dans 10 ans, ca nous fera un bug a corriger vers 2018 // penser a ouvrir un ticket d'ici la :p - $date_publication=time()+10*365*24*3600; + $date_publication = time()+10*365*24*3600; include_spip('base/objets'); - while($row = sql_fetch($res)){ + while ($row = sql_fetch($res)) { if ( // cas particulier des rubriques qui sont publiees des qu'elles contiennent un document ! - $row['objet']=='rubrique' + $row['objet'] == 'rubrique' // ou si objet publie selon sa declaration - OR objet_test_si_publie($row['objet'],$row['id_objet'])){ + OR objet_test_si_publie($row['objet'], $row['id_objet']) + ) { $statut = 'publie'; - $date_publication=0; + $date_publication = 0; continue; - } - // si pas publie, et article, il faut checker la date de post-publi eventuelle - elseif ($row['objet']=='article' - AND $row2 = sql_fetsel('date','spip_articles','id_article='.intval($row['id_objet'])." AND statut='publie'")){ + } // si pas publie, et article, il faut checker la date de post-publi eventuelle + elseif ($row['objet'] == 'article' + AND $row2 = sql_fetsel('date', 'spip_articles', + 'id_article=' . intval($row['id_objet']) . " AND statut='publie'") + ) { $statut = 'publie'; - $date_publication = min($date_publication,strtotime($row2['date'])); + $date_publication = min($date_publication, strtotime($row2['date'])); } } - $date_publication = date('Y-m-d H:i:s',$date_publication); - if ($statut=='publie' AND $statut_ancien=='publie' AND $date_publication==$date_publication_ancienne) + $date_publication = date('Y-m-d H:i:s', $date_publication); + if ($statut == 'publie' AND $statut_ancien == 'publie' AND $date_publication == $date_publication_ancienne) { return false; - if ($statut!='publie' AND $statut_ancien!='publie' AND $statut_ancien!='0') + } + if ($statut != 'publie' AND $statut_ancien != 'publie' AND $statut_ancien != '0') { return false; + } } - if ($statut!==$statut_ancien - OR $date_publication!=$date_publication_ancienne){ - sql_updateq('spip_documents',array('statut'=>$statut,'date_publication'=>$date_publication),'id_document='.intval($id_document)); - if ($statut!==$statut_ancien){ - $publier_rubriques = sql_allfetsel('id_objet','spip_documents_liens',"objet='rubrique' AND id_document=".intval($id_document)); - if (count($publier_rubriques)){ + if ($statut !== $statut_ancien + OR $date_publication != $date_publication_ancienne + ) { + sql_updateq('spip_documents', array('statut' => $statut, 'date_publication' => $date_publication), + 'id_document=' . intval($id_document)); + if ($statut !== $statut_ancien) { + $publier_rubriques = sql_allfetsel('id_objet', 'spip_documents_liens', + "objet='rubrique' AND id_document=" . intval($id_document)); + if (count($publier_rubriques)) { include_spip('inc/rubriques'); - foreach($publier_rubriques as $r) - calculer_rubriques_if($r['id_objet'],array('statut'=>$statut),$statut_ancien,false); + foreach ($publier_rubriques as $r) { + calculer_rubriques_if($r['id_objet'], array('statut' => $statut), $statut_ancien, false); + } } } + return true; } + return false; } @@ -234,47 +255,51 @@ function document_instituer($id_document, $champs = array()){ * @param array $parents * @param bool $ajout */ -function medias_revision_document_parents($id_document, $parents = null, $ajout = false){ - if (!is_array($parents)) +function medias_revision_document_parents($id_document, $parents = null, $ajout = false) { + if (!is_array($parents)) { return; - + } + $insertions = array(); $objets_parents = array(); // array('article'=>array(12,23)) - + // au format objet|id_objet - foreach($parents as $p){ - $p = explode('|',$p); - if (preg_match('/^[a-z0-9_]+$/i', $objet=$p[0]) - AND $p[1]=intval($p[1])){ // securite + foreach ($parents as $p) { + $p = explode('|', $p); + if (preg_match('/^[a-z0-9_]+$/i', $objet = $p[0]) + AND $p[1] = intval($p[1]) + ) { // securite $objets_parents[$p[0]][] = $p[1]; } } - + include_spip('action/editer_liens'); // les liens actuels - $liens = objet_trouver_liens(array('document'=>$id_document),'*'); + $liens = objet_trouver_liens(array('document' => $id_document), '*'); $deja_parents = array(); // si ce n'est pas un ajout, il faut supprimer les liens actuels qui ne sont pas dans $objets_parents - if (!$ajout){ - foreach($liens as $k=>$lien) - if (!isset($objets_parents[$lien['objet']]) OR !in_array($lien['id_objet'],$objets_parents[$lien['objet']])) { - if (autoriser('dissocierdocuments',$lien['objet'],$lien['id_objet'])){ - objet_dissocier(array('document'=>$id_document),array($lien['objet']=>$lien['id_objet'])); + if (!$ajout) { + foreach ($liens as $k => $lien) { + if (!isset($objets_parents[$lien['objet']]) OR !in_array($lien['id_objet'], $objets_parents[$lien['objet']])) { + if (autoriser('dissocierdocuments', $lien['objet'], $lien['id_objet'])) { + objet_dissocier(array('document' => $id_document), array($lien['objet'] => $lien['id_objet'])); } unset($liens[$k]); + } else { + $deja_parents[$lien['objet']][] = $lien['id_objet']; } - else $deja_parents[$lien['objet']][] = $lien['id_objet']; + } } // verifier les droits d'associer - foreach($objets_parents as $objet=>$ids){ - foreach($ids as $k=>$id){ - if (!autoriser('associerdocuments',$objet,$id)){ + foreach ($objets_parents as $objet => $ids) { + foreach ($ids as $k => $id) { + if (!autoriser('associerdocuments', $objet, $id)) { unset($objets_parents[$objet][$k]); } } } - objet_associer(array('document'=>$id_document),$objets_parents); + objet_associer(array('document' => $id_document), $objets_parents); } @@ -283,7 +308,7 @@ function medias_revision_document_parents($id_document, $parents = null, $ajout // -------------------- /** - * Insertion d'un document + * Insertion d'un document * * @deprecated Utiliser document_inserer() * @see document_inserer() @@ -294,7 +319,7 @@ function insert_document() { } /** - * Modification d'un document + * Modification d'un document * * @deprecated Utiliser document_modifier() * @see document_modifier() @@ -306,19 +331,19 @@ function document_set($id_document, $set = false) { } /** - * Insituer un document + * Insituer un document * * @deprecated Utiliser document_instituer() * @see document_instituer() * @param int $id_document Identifiant du document * @param array $champs */ -function instituer_document($id_document, $champs = array()){ - return document_instituer($id_document,$champs); +function instituer_document($id_document, $champs = array()) { + return document_instituer($id_document, $champs); } /** - * Réviser un document + * Réviser un document * * @deprecated Utiliser document_modifier() * @see document_modifier() @@ -326,7 +351,7 @@ function instituer_document($id_document, $champs = array()){ * @param array $c */ function revision_document($id_document, $c = false) { - return document_modifier($id_document,$c); + return document_modifier($id_document, $c); } ?> diff --git a/action/supprimer_document.php b/action/supprimer_document.php index 0f3e74b51bdc49ad668cbb6d55016323362ac35c..5df567e98bc2f8396eb166718d9e9dc25c10caca 100644 --- a/action/supprimer_document.php +++ b/action/supprimer_document.php @@ -10,61 +10,67 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} // http://code.spip.net/@supprimer_document function action_supprimer_document_dist($id_document = 0) { - if (!$id_document){ - $securiser_action = charger_fonction('securiser_action','inc'); + if (!$id_document) { + $securiser_action = charger_fonction('securiser_action', 'inc'); $id_document = $securiser_action(); } include_spip('inc/autoriser'); - if (!autoriser('supprimer','document',$id_document)){ - spip_log("Echec : Suppression document $id_document interdite",_LOG_ERREUR); + if (!autoriser('supprimer', 'document', $id_document)) { + spip_log("Echec : Suppression document $id_document interdite", _LOG_ERREUR); + return false; } // si c'etait une vignette, modifier le document source ! - if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette='.intval($id_document))){ + if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette=' . intval($id_document))) { include_spip('action/editer_document'); - document_modifier($source,array("id_vignette" => 0)); + document_modifier($source, array("id_vignette" => 0)); } include_spip('inc/documents'); - if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.intval($id_document))){ - spip_log("Echec : Suppression document $id_document : le document n'existe pas en base",_LOG_ERREUR); + if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document))) { + spip_log("Echec : Suppression document $id_document : le document n'existe pas en base", _LOG_ERREUR); + return false; } - spip_log("Suppression du document $id_document (".$doc['fichier'].")"); + spip_log("Suppression du document $id_document (" . $doc['fichier'] . ")"); include_spip('action/editer_liens'); // Si c'est un document ayant une vignette, supprimer aussi la vignette if ($doc['id_vignette']) { action_supprimer_document_dist($doc['id_vignette']); - objet_dissocier(array('document'=>$doc['id_vignette']),'*'); + objet_dissocier(array('document' => $doc['id_vignette']), '*'); } // Si c'est un document ayant des documents annexes (sous-titre, ...) // les supprimer aussi - $annexes = array_map('reset',sql_allfetsel("id_document","spip_documents_liens","objet='document' AND id_objet=".intval($id_document))); - foreach($annexes as $id){ + $annexes = array_map('reset', + sql_allfetsel("id_document", "spip_documents_liens", "objet='document' AND id_objet=" . intval($id_document))); + foreach ($annexes as $id) { action_supprimer_document_dist($id); } // dereferencer dans la base - objet_dissocier(array('document'=>$id_document),'*'); - sql_delete('spip_documents', 'id_document='.intval($id_document)); + objet_dissocier(array('document' => $id_document), '*'); + sql_delete('spip_documents', 'id_document=' . intval($id_document)); // Supprimer le fichier si le doc est local, // et la copie locale si le doc est distant if ($doc['distant'] == 'oui') { include_spip('inc/distant'); - if ($local = _DIR_RACINE . copie_locale($doc['fichier'],'test')) + if ($local = _DIR_RACINE . copie_locale($doc['fichier'], 'test')) { spip_unlink($local); - } - else + } + } else { spip_unlink(get_spip_doc($doc['fichier'])); + } pipeline('post_edition', array( @@ -78,6 +84,7 @@ function action_supprimer_document_dist($id_document = 0) { 'data' => null ) ); + return true; } diff --git a/action/supprimer_tous_orphelins.php b/action/supprimer_tous_orphelins.php index 93d80b4987f5d4f3e41e0bd4af8a325ca34e2293..4044c2f351f1c923f2f91ea0aedcb05b55ece23d 100644 --- a/action/supprimer_tous_orphelins.php +++ b/action/supprimer_tous_orphelins.php @@ -10,42 +10,48 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} include_spip('base/abstract_sql'); function action_supprimer_tous_orphelins() { - $securiser_action = charger_fonction('securiser_action','inc'); + $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); //on recupere le contexte pour ne supprimer les orphelins que de ce dernier - list($media,$distant,$statut,$sanstitre) = explode('/',$arg); - + list($media, $distant, $statut, $sanstitre) = explode('/', $arg); + //critere sur le media - if($media) - $select = "media=".sql_quote($media); + if ($media) { + $select = "media=" . sql_quote($media); + } //critere sur le distant - if($distant) - $where[] = "distant=".sql_quote($distant); + if ($distant) { + $where[] = "distant=" . sql_quote($distant); + } //critere sur le statut - if($statut) - $where[] = "statut REGEXP ".sql_quote("($statut)"); + if ($statut) { + $where[] = "statut REGEXP " . sql_quote("($statut)"); + } //critere sur le sanstitre - if($sanstitre) + if ($sanstitre) { $where[] = "titre=''"; + } //on isole les orphelins - $select = sql_get_select("DISTINCT id_document","spip_documents_liens as oooo"); + $select = sql_get_select("DISTINCT id_document", "spip_documents_liens as oooo"); $cond = "spip_documents.id_document NOT IN ($select)"; $where[] = $cond; - $ids_doc_orphelins = sql_select( "id_document", "spip_documents", $where ); + $ids_doc_orphelins = sql_select("id_document", "spip_documents", $where); - $supprimer_document = charger_fonction('supprimer_document','action'); + $supprimer_document = charger_fonction('supprimer_document', 'action'); while ($row = sql_fetch($ids_doc_orphelins)) { $supprimer_document($row['id_document']); // pour les orphelins du contexte, on traite avec la fonction existante } diff --git a/action/tourner.php b/action/tourner.php index 85e47027538366304b7ea35b205752815fa1ef51..acbd6efc3bf738d06bb7cfc58a511c40a7b7c80f 100644 --- a/action/tourner.php +++ b/action/tourner.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Tourner un document @@ -26,21 +28,21 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return void */ function action_tourner_dist($id_document = null, $angle = null) { - if (is_null($id_document) OR is_null($angle)){ + if (is_null($id_document) OR is_null($angle)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); if (!preg_match(",^\W*(\d+)\W?(-?\d+)$,", $arg, $r)) { spip_log("action_tourner_dist $arg pas compris"); - } - else{ + } else { array_shift($r); - list($id_document,$angle) = $r; + list($id_document, $angle) = $r; } } - if ($id_document AND autoriser('modifier','document',$id_document)) - action_tourner_post($id_document,$angle); + if ($id_document AND autoriser('modifier', 'document', $id_document)) { + action_tourner_post($id_document, $angle); + } } /** @@ -53,14 +55,15 @@ function action_tourner_dist($id_document = null, $angle = null) { * angle de rotation en degre>0 * @return */ -function action_tourner_post($id_document, $angle) -{ - $row = sql_fetsel("fichier,extension", "spip_documents", "id_document=".intval($id_document)); +function action_tourner_post($id_document, $angle) { + $row = sql_fetsel("fichier,extension", "spip_documents", "id_document=" . intval($id_document)); - if (!$row) return; + if (!$row) { + return; + } - include_spip('inc/charsets'); # pour le nom de fichier - include_spip('inc/documents'); + include_spip('inc/charsets'); # pour le nom de fichier + include_spip('inc/documents'); // Fichier destination : on essaie toujours de repartir de l'original $var_rot = $angle; $effacer = false; @@ -69,27 +72,26 @@ function action_tourner_post($id_document, $angle) $src = _DIR_RACINE . copie_locale(get_spip_doc($row['fichier'])); if (preg_match(',^(.*)-r(90|180|270)\.([^.]+)$,', $src, $match)) { $effacer = $src; - $src = $match[1].'.'.$match[3]; + $src = $match[1] . '.' . $match[3]; $var_rot += intval($match[2]); } - $var_rot = ((360 + $var_rot) % 360); // 0, 90, 180 ou 270 + $var_rot = ((360+$var_rot)%360); // 0, 90, 180 ou 270 if ($var_rot > 0) { - $dest = preg_replace(',\.[^.]+$,', '-r'.$var_rot.'$0', $src); + $dest = preg_replace(',\.[^.]+$,', '-r' . $var_rot . '$0', $src); spip_log("rotation $var_rot $src : $dest"); include_spip('inc/filtres'); include_spip('public/parametrer'); // charger les fichiers fonctions #bugfix spip 2.1.0 - $res = filtrer('image_rotation',$src,$var_rot); - $res = filtrer('image_format',$res,$row['extension']); + $res = filtrer('image_rotation', $src, $var_rot); + $res = filtrer('image_format', $res, $row['extension']); - list($hauteur,$largeur) = taille_image($res); - $res = extraire_attribut($res,'src'); + list($hauteur, $largeur) = taille_image($res); + $res = extraire_attribut($res, 'src'); include_spip('inc/getdocument'); - deplacer_fichier_upload($res,$dest); - } - else { + deplacer_fichier_upload($res, $dest); + } else { $dest = $src; $size_image = @getimagesize($dest); $largeur = $size_image[0]; @@ -97,15 +99,17 @@ function action_tourner_post($id_document, $angle) } // succes ! - if ($largeur>0 AND $hauteur>0) { + if ($largeur > 0 AND $hauteur > 0) { $set = array( 'fichier' => set_spip_doc($dest), - 'largeur'=>$largeur, 'hauteur'=>$hauteur, - 'distant'=>'non' // le document n'est plus distant apres une transformation - ); - if ($taille = @filesize($dest)) + 'largeur' => $largeur, + 'hauteur' => $hauteur, + 'distant' => 'non' // le document n'est plus distant apres une transformation + ); + if ($taille = @filesize($dest)) { $set['taille'] = $taille; - sql_updateq('spip_documents', $set, "id_document=".intval($id_document)); + } + sql_updateq('spip_documents', $set, "id_document=" . intval($id_document)); if ($effacer) { spip_log("rotation : j'efface $effacer"); spip_unlink($effacer); @@ -117,10 +121,10 @@ function action_tourner_post($id_document, $angle) 'table' => 'spip_documents', 'table_objet' => 'documents', 'spip_table_objet' => 'spip_documents', - 'type' =>'document', + 'type' => 'document', 'id_objet' => $id_document, - 'champs' => array('rotation'=>$angle,'orientation'=>$var_rot,'fichier'=>$row['fichier']), - 'action'=>'tourner', + 'champs' => array('rotation' => $angle, 'orientation' => $var_rot, 'fichier' => $row['fichier']), + 'action' => 'tourner', ), 'data' => $set ) @@ -135,12 +139,12 @@ function action_tourner_post($id_document, $angle) function tourner_selon_exif_orientation($id_document, $fichier) { if (function_exists('exif_read_data') - AND $exif = exif_read_data($fichier) - AND ( - $ort = $exif['IFD0']['Orientation'] - OR $ort = $exif['Orientation']) + AND $exif = exif_read_data($fichier) + AND ( + $ort = $exif['IFD0']['Orientation'] + OR $ort = $exif['Orientation']) ) { - spip_log("rotation: $ort"); + spip_log("rotation: $ort"); $rot = null; switch ($ort) { case 3: @@ -150,8 +154,9 @@ function tourner_selon_exif_orientation($id_document, $fichier) { case 8: $rot = -90; } - if ($rot) - action_tourner_post(array(null,$id_document, $rot)); + if ($rot) { + action_tourner_post(array(null, $id_document, $rot)); + } } } diff --git a/action/verifier_documents_brises.php b/action/verifier_documents_brises.php index f5868e6dafb2c1bf73fbf0a910d11d09dedc7dba..6ef201df45d290556919e2f589deb36945e34dd3 100644 --- a/action/verifier_documents_brises.php +++ b/action/verifier_documents_brises.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Verifier tous les fichiers brises @@ -22,12 +24,13 @@ function action_verifier_documents_brises_dist() { $arg = $securiser_action(); include_spip('inc/autoriser'); - if (autoriser('administrer','mediatheque')) { + if (autoriser('administrer', 'mediatheque')) { include_spip('inc/documents'); - $res = sql_select('fichier,brise,id_document','spip_documents',"distant='non'"); - while ($row = sql_fetch($res)){ - if (($brise = !@file_exists(get_spip_doc($row['fichier'])))!=$row['brise']) - sql_updateq('spip_documents',array('brise'=>$brise),'id_document='.intval($row['id_document'])); + $res = sql_select('fichier,brise,id_document', 'spip_documents', "distant='non'"); + while ($row = sql_fetch($res)) { + if (($brise = !@file_exists(get_spip_doc($row['fichier']))) != $row['brise']) { + sql_updateq('spip_documents', array('brise' => $brise), 'id_document=' . intval($row['id_document'])); + } } } } diff --git a/action/verifier_documents_liens.php b/action/verifier_documents_liens.php index 65ed61c1a493d45303e996360c0f45a1f8aadb2e..bcad8adfbe638674c1104f752a9a35663a5b20b8 100644 --- a/action/verifier_documents_liens.php +++ b/action/verifier_documents_liens.php @@ -14,9 +14,11 @@ * Gestion de l'action verifier_documents_liens * * @package SPIP\Medias\Action -**/ + **/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Vérifier tous les fichiers brisés @@ -27,14 +29,14 @@ if (!defined("_ECRIRE_INC_VERSION")) return; */ function action_verifier_documents_liens_dist($id_document = null) { - if (is_null($id_document)){ + if (is_null($id_document)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $id_document = $securiser_action(); } - $id_document = ($id_document=='*')?'*':intval($id_document); + $id_document = ($id_document == '*') ? '*' : intval($id_document); include_spip('action/editer_liens'); - objet_optimiser_liens(array('document'=>$id_document),'*'); + objet_optimiser_liens(array('document' => $id_document), '*'); } diff --git a/base/medias.php b/base/medias.php index 7169600609f88db375a4f09344b19ba58eb09bce..c681887bf1cfee69b588867312a3cfe20411718b 100644 --- a/base/medias.php +++ b/base/medias.php @@ -14,9 +14,11 @@ * Déclarations relatives à la base de données * * @package SPIP\Medias\Pipelines -**/ + **/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Interfaces des tables documents pour le compilateur @@ -25,19 +27,19 @@ if (!defined('_ECRIRE_INC_VERSION')) return; * @return array */ function medias_declarer_tables_interfaces($interfaces) { - $interfaces['table_des_tables']['documents']='documents'; - $interfaces['table_des_tables']['types_documents']='types_documents'; + $interfaces['table_des_tables']['documents'] = 'documents'; + $interfaces['table_des_tables']['types_documents'] = 'types_documents'; - $interfaces['exceptions_des_tables']['documents']['type_document']=array('types_documents', 'titre'); - $interfaces['exceptions_des_tables']['documents']['extension_document']=array('types_documents', 'extension'); - $interfaces['exceptions_des_tables']['documents']['mime_type']=array('types_documents', 'mime_type'); - $interfaces['exceptions_des_tables']['documents']['media_document']=array('types_documents', 'media'); + $interfaces['exceptions_des_tables']['documents']['type_document'] = array('types_documents', 'titre'); + $interfaces['exceptions_des_tables']['documents']['extension_document'] = array('types_documents', 'extension'); + $interfaces['exceptions_des_tables']['documents']['mime_type'] = array('types_documents', 'mime_type'); + $interfaces['exceptions_des_tables']['documents']['media_document'] = array('types_documents', 'media'); - $interfaces['exceptions_des_jointures']['spip_documents']['id_forum']=array('spip_documents_liens','id_forum'); - $interfaces['exceptions_des_jointures']['spip_documents']['vu']=array('spip_documents_liens', 'vu'); - $interfaces['table_date']['types_documents']='date'; + $interfaces['exceptions_des_jointures']['spip_documents']['id_forum'] = array('spip_documents_liens', 'id_forum'); + $interfaces['exceptions_des_jointures']['spip_documents']['vu'] = array('spip_documents_liens', 'vu'); + $interfaces['table_date']['types_documents'] = 'date'; - $interfaces['table_des_traitements']['FICHIER'][]= 'get_spip_doc(%s)'; + $interfaces['table_des_traitements']['FICHIER'][] = 'get_spip_doc(%s)'; return $interfaces; } @@ -52,20 +54,22 @@ function medias_declarer_tables_interfaces($interfaces) { function medias_declarer_tables_principales($tables_principales) { $spip_types_documents = array( - "extension" => "varchar(10) DEFAULT '' NOT NULL", - "titre" => "text DEFAULT '' NOT NULL", - "descriptif" => "text DEFAULT '' NOT NULL", - "mime_type" => "varchar(100) DEFAULT '' NOT NULL", - "inclus" => "ENUM('non', 'image', 'embed') DEFAULT 'non' NOT NULL", - "upload" => "ENUM('oui', 'non') DEFAULT 'oui' NOT NULL", - "media_defaut" => "varchar(10) DEFAULT 'file' NOT NULL", - "maj" => "TIMESTAMP"); + "extension" => "varchar(10) DEFAULT '' NOT NULL", + "titre" => "text DEFAULT '' NOT NULL", + "descriptif" => "text DEFAULT '' NOT NULL", + "mime_type" => "varchar(100) DEFAULT '' NOT NULL", + "inclus" => "ENUM('non', 'image', 'embed') DEFAULT 'non' NOT NULL", + "upload" => "ENUM('oui', 'non') DEFAULT 'oui' NOT NULL", + "media_defaut" => "varchar(10) DEFAULT 'file' NOT NULL", + "maj" => "TIMESTAMP" + ); $spip_types_documents_key = array( - "PRIMARY KEY" => "extension", - "KEY inclus" => "inclus"); + "PRIMARY KEY" => "extension", + "KEY inclus" => "inclus" + ); - $tables_principales['spip_types_documents'] = + $tables_principales['spip_types_documents'] = array('field' => &$spip_types_documents, 'key' => &$spip_types_documents_key); return $tables_principales; @@ -73,27 +77,30 @@ function medias_declarer_tables_principales($tables_principales) { /** * Table des liens documents-objets spip_documents_liens + * * @param array $tables_auxiliaires * @return array */ function medias_declarer_tables_auxiliaires($tables_auxiliaires) { $spip_documents_liens = array( - "id_document" => "bigint(21) DEFAULT '0' NOT NULL", - "id_objet" => "bigint(21) DEFAULT '0' NOT NULL", - "objet" => "VARCHAR (25) DEFAULT '' NOT NULL", - "vu" => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL"); + "id_document" => "bigint(21) DEFAULT '0' NOT NULL", + "id_objet" => "bigint(21) DEFAULT '0' NOT NULL", + "objet" => "VARCHAR (25) DEFAULT '' NOT NULL", + "vu" => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL" + ); $spip_documents_liens_key = array( - "PRIMARY KEY" => "id_document,id_objet,objet", - "KEY id_document" => "id_document", - "KEY id_objet" => "id_objet", - "KEY objet" => "objet", + "PRIMARY KEY" => "id_document,id_objet,objet", + "KEY id_document" => "id_document", + "KEY id_objet" => "id_objet", + "KEY objet" => "objet", ); $tables_auxiliaires['spip_documents_liens'] = array( 'field' => &$spip_documents_liens, - 'key' => &$spip_documents_liens_key); + 'key' => &$spip_documents_liens_key + ); return $tables_auxiliaires; } @@ -111,78 +118,107 @@ function medias_declarer_tables_objets_surnoms($surnoms) { return $surnoms; } -function medias_declarer_tables_objets_sql($tables){ +function medias_declarer_tables_objets_sql($tables) { $tables['spip_articles']['champs_versionnes'][] = 'jointure_documents'; $tables['spip_documents'] = array( - 'table_objet_surnoms'=>array('doc','img','emb'), + 'table_objet_surnoms' => array('doc', 'img', 'emb'), 'type_surnoms' => array(), 'url_voir' => 'document_edit', 'url_edit' => 'document_edit', - 'page'=>'', + 'page' => '', 'texte_retour' => 'icone_retour', 'texte_objets' => 'medias:objet_documents', 'texte_objet' => 'medias:objet_document', 'texte_modifier' => 'medias:info_modifier_document', - 'info_aucun_objet'=> 'medias:aucun_document', + 'info_aucun_objet' => 'medias:aucun_document', 'info_1_objet' => 'medias:un_document', 'info_nb_objets' => 'medias:des_documents', 'titre' => "CASE WHEN length(titre)>0 THEN titre ELSE fichier END as titre, '' AS lang", 'date' => 'date', - 'principale'=>'oui', + 'principale' => 'oui', 'field' => array( - "id_document" => "bigint(21) NOT NULL", - "id_vignette" => "bigint(21) DEFAULT '0' NOT NULL", - "extension" => "VARCHAR(10) DEFAULT '' NOT NULL", - "titre" => "text DEFAULT '' NOT NULL", - "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", - "descriptif" => "text DEFAULT '' NOT NULL", - "fichier" => "text NOT NULL DEFAULT ''", - "taille" => "bigint", - "largeur" => "integer", - "hauteur" => "integer", + "id_document" => "bigint(21) NOT NULL", + "id_vignette" => "bigint(21) DEFAULT '0' NOT NULL", + "extension" => "VARCHAR(10) DEFAULT '' NOT NULL", + "titre" => "text DEFAULT '' NOT NULL", + "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", + "descriptif" => "text DEFAULT '' NOT NULL", + "fichier" => "text NOT NULL DEFAULT ''", + "taille" => "bigint", + "largeur" => "integer", + "hauteur" => "integer", "media" => "varchar(10) DEFAULT 'file' NOT NULL", - "mode" => "varchar(10) DEFAULT 'document' NOT NULL", - "distant" => "VARCHAR(3) DEFAULT 'non'", + "mode" => "varchar(10) DEFAULT 'document' NOT NULL", + "distant" => "VARCHAR(3) DEFAULT 'non'", "statut" => "varchar(10) DEFAULT '0' NOT NULL", "credits" => "varchar(255) DEFAULT '' NOT NULL", "date_publication" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", "brise" => "tinyint DEFAULT 0", - "maj" => "TIMESTAMP" + "maj" => "TIMESTAMP" ), 'key' => array( - "PRIMARY KEY" => "id_document", - "KEY id_vignette" => "id_vignette", - "KEY mode" => "mode", - "KEY extension" => "extension" + "PRIMARY KEY" => "id_document", + "KEY id_vignette" => "id_vignette", + "KEY mode" => "mode", + "KEY extension" => "extension" ), 'join' => array( - "id_document"=>"id_document", - "extension"=>"extension" + "id_document" => "id_document", + "extension" => "extension" ), - 'statut'=> array( + 'statut' => array( array( 'champ' => 'statut', 'publie' => 'publie', 'previsu' => 'publie,prop,prepa', 'post_date' => 'date_publication', - 'exception' => array('statut','tout') + 'exception' => array('statut', 'tout') ) ), 'tables_jointures' => array('types_documents'), 'rechercher_champs' => array( - 'titre' => 3, 'descriptif' => 1, 'fichier' => 1, 'credits' => 1, + 'titre' => 3, + 'descriptif' => 1, + 'fichier' => 1, + 'credits' => 1, + ), + 'champs_editables' => array( + 'titre', + 'descriptif', + 'date', + 'taille', + 'largeur', + 'hauteur', + 'mode', + 'credits', + 'fichier', + 'distant', + 'extension', + 'id_vignette', + 'media' + ), + 'champs_versionnes' => array( + 'id_vignette', + 'titre', + 'descriptif', + 'hauteur', + 'largeur', + 'fichier', + 'taille', + 'mode', + 'credits', + 'distant' ), - 'champs_editables' => array('titre', 'descriptif', 'date', 'taille', 'largeur','hauteur','mode','credits','fichier','distant','extension', 'id_vignette', 'media'), - 'champs_versionnes' => array('id_vignette', 'titre', 'descriptif', 'hauteur', 'largeur','fichier','taille', 'mode','credits','distant'), - 'modeles' => array('document','doc','img','emb','image','video','text','audio','application'), + 'modeles' => array('document', 'doc', 'img', 'emb', 'image', 'video', 'text', 'audio', 'application'), ); // jointures sur les forum pour tous les objets - $tables[]['tables_jointures'][]= 'documents_liens'; + $tables[]['tables_jointures'][] = 'documents_liens'; // recherche jointe sur les documents pour les articles et rubriques $tables['spip_articles']['rechercher_jointures']['document'] = array('titre' => 2, 'descriptif' => 1); $tables['spip_rubriques']['rechercher_jointures']['document'] = array('titre' => 2, 'descriptif' => 1); + return $tables; } @@ -199,9 +235,10 @@ function creer_base_types_doc($serveur = '', $champ_media = "media_defaut") { include_spip('base/abstract_sql'); // charger en memoire tous les types deja definis pour limiter les requettes - $rows = sql_allfetsel('mime_type,titre,inclus,extension,'.$champ_media.',upload,descriptif','spip_types_documents','','','','','',$serveur); + $rows = sql_allfetsel('mime_type,titre,inclus,extension,' . $champ_media . ',upload,descriptif', + 'spip_types_documents', '', '', '', '', '', $serveur); $deja = array(); - foreach ($rows as $k=>$row){ + foreach ($rows as $k => $row) { $deja[$row['extension']] = &$rows[$k]; } @@ -211,72 +248,76 @@ function creer_base_types_doc($serveur = '', $champ_media = "media_defaut") { foreach ($tables_mime as $extension => $type_mime) { if (isset($tables_images[$extension])) { $titre = $tables_images[$extension]; - $inclus='image'; - } - else if (isset($tables_sequences[$extension])) { - $titre = $tables_sequences[$extension]; - $inclus='embed'; - } - else { - $inclus='non'; - if (isset($tables_documents[$extension])) - $titre = $tables_documents[$extension]; - else - $titre = ''; + $inclus = 'image'; + } else { + if (isset($tables_sequences[$extension])) { + $titre = $tables_sequences[$extension]; + $inclus = 'embed'; + } else { + $inclus = 'non'; + if (isset($tables_documents[$extension])) { + $titre = $tables_documents[$extension]; + } else { + $titre = ''; + } + } } // type de media - $media = "file"; - if (preg_match(",^image/,",$type_mime) OR in_array($type_mime,array('application/illustrator'))) - $media = "image"; - elseif (preg_match(",^audio/,",$type_mime)) - $media = "audio"; - elseif (preg_match(",^video/,",$type_mime) OR in_array($type_mime,array('application/ogg','application/x-shockwave-flash','application/mp4'))) - $media = "video"; + $media = "file"; + if (preg_match(",^image/,", $type_mime) OR in_array($type_mime, array('application/illustrator'))) { + $media = "image"; + } elseif (preg_match(",^audio/,", $type_mime)) { + $media = "audio"; + } elseif (preg_match(",^video/,", $type_mime) OR in_array($type_mime, + array('application/ogg', 'application/x-shockwave-flash', 'application/mp4')) + ) { + $media = "video"; + } $set = array( - 'mime_type' => $type_mime, - 'titre' => $titre, - 'inclus' => $inclus, - 'extension' => $extension, - $champ_media => $media, - 'upload' => 'oui', - 'descriptif' => '', - ); - if (!isset($deja[$extension])){ + 'mime_type' => $type_mime, + 'titre' => $titre, + 'inclus' => $inclus, + 'extension' => $extension, + $champ_media => $media, + 'upload' => 'oui', + 'descriptif' => '', + ); + if (!isset($deja[$extension])) { $insertions[] = $set; - } - elseif (array_diff($deja[$extension],$set)){ + } elseif (array_diff($deja[$extension], $set)) { $updates[$extension] = $set; } } - if (count($updates)){ - foreach ($updates as $extension=>$set){ - sql_updateq('spip_types_documents',$set,'extension='.sql_quote($extension)); + if (count($updates)) { + foreach ($updates as $extension => $set) { + sql_updateq('spip_types_documents', $set, 'extension=' . sql_quote($extension)); } } - if ($insertions) + if ($insertions) { sql_insertq_multi('spip_types_documents', $insertions, '', $serveur); + } } - /** * Optimiser la base de données en supprimant les liens orphelins * * @param array $flux * @return array */ -function medias_optimiser_base_disparus($flux){ +function medias_optimiser_base_disparus($flux) { include_spip('action/editer_liens'); // optimiser les liens morts : // entre documents vers des objets effaces // depuis des documents effaces - $flux['data'] += objet_optimiser_liens(array('document'=>'*'),'*'); + $flux['data'] += objet_optimiser_liens(array('document' => '*'), '*'); + // on ne nettoie volontairement pas automatiquement les documents orphelins return $flux; diff --git a/base/typedoc.php b/base/typedoc.php index 7cb1cdd2248aa04d4e50c0213a8d0a5e6426c2cf..acabc133807054f8307066957016b26db6892868 100644 --- a/base/typedoc.php +++ b/base/typedoc.php @@ -10,397 +10,399 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} global $tables_images, $tables_sequences, $tables_documents, $tables_mime, $mime_alias; $tables_images = array( - // Images reconnues par PHP - 'jpg' => 'JPEG', - 'png' => 'PNG', - 'gif' => 'GIF', + // Images reconnues par PHP + 'jpg' => 'JPEG', + 'png' => 'PNG', + 'gif' => 'GIF', - // Autres images (peuvent utiliser le tag <img>) - 'bmp' => 'BMP', - ); + // Autres images (peuvent utiliser le tag <img>) + 'bmp' => 'BMP', +); // Multimedia (peuvent utiliser le tag <embed>) $tables_sequences = array( - 'aac' => 'Advanced Audio Coding', - 'ac3' => 'AC-3 Compressed Audio', - 'aifc' => 'Compressed AIFF Audio', - 'aiff' => 'AIFF', - 'amr' => 'Adaptive Multi-Rate Audio', - 'anx' => 'Annodex', - 'ape' => 'Monkey\'s Audio File', - 'axa' => 'Annodex Audio', - 'axv' => 'Annodex Video', - 'asf' => 'Windows Media', - 'avi' => 'AVI', - 'dv' => 'Digital Video', - 'f4a' => 'Audio for Adobe Flash Player', - 'f4b' => 'Audio Book for Adobe Flash Player', - 'f4p' => 'Protected Video for Adobe Flash Player', - 'f4v' => 'Video for Adobe Flash Player', - 'flac' => 'Free Lossless Audio Codec', - 'flv' => 'Flash Video', - 'm2p' => 'MPEG-PS', - 'm2ts' => 'BDAV MPEG-2 Transport Stream', - 'm4a' => 'MPEG4 Audio', - 'm4b' => 'MPEG4 Audio', - 'm4p' => 'MPEG4 Audio', - 'm4r' => 'iPhone Ringtone', - 'm4v' => 'MPEG4 Video', - 'mid' => 'Midi', - 'mng' => 'MNG', - 'mka' => 'Matroska Audio', - 'mkv' => 'Matroska Video', - 'mov' => 'QuickTime', - 'mp3' => 'MP3', - 'mp4' => 'MPEG4', - 'mpc' => 'Musepack', - 'mpg' => 'MPEG', - 'mts' => 'AVCHD MPEG-2 transport stream', - 'oga' => 'Ogg Audio', - 'ogg' => 'Ogg Vorbis', - 'ogv' => 'Ogg Video', - 'ogx' => 'Ogg Multiplex', - 'qt' => 'QuickTime', - 'ra' => 'RealAudio', - 'ram' => 'RealAudio', - 'rm' => 'RealAudio', - 'spx' => 'Ogg Speex', - 'svg' => 'Scalable Vector Graphics', - 'svgz' => 'Compressed Scalable Vector Graphic', - 'swf' => 'Flash', - 'tif' => 'TIFF', - 'ts' => 'MPEG transport stream', - 'wav' => 'WAV', - 'webm' => 'WebM', - 'wma' => 'Windows Media Audio', - 'wmv' => 'Windows Media Video', - 'y4m' => 'YUV4MPEG2', - '3ga' => '3GP Audio File', - '3gp' => '3rd Generation Partnership Project' - ); + 'aac' => 'Advanced Audio Coding', + 'ac3' => 'AC-3 Compressed Audio', + 'aifc' => 'Compressed AIFF Audio', + 'aiff' => 'AIFF', + 'amr' => 'Adaptive Multi-Rate Audio', + 'anx' => 'Annodex', + 'ape' => 'Monkey\'s Audio File', + 'axa' => 'Annodex Audio', + 'axv' => 'Annodex Video', + 'asf' => 'Windows Media', + 'avi' => 'AVI', + 'dv' => 'Digital Video', + 'f4a' => 'Audio for Adobe Flash Player', + 'f4b' => 'Audio Book for Adobe Flash Player', + 'f4p' => 'Protected Video for Adobe Flash Player', + 'f4v' => 'Video for Adobe Flash Player', + 'flac' => 'Free Lossless Audio Codec', + 'flv' => 'Flash Video', + 'm2p' => 'MPEG-PS', + 'm2ts' => 'BDAV MPEG-2 Transport Stream', + 'm4a' => 'MPEG4 Audio', + 'm4b' => 'MPEG4 Audio', + 'm4p' => 'MPEG4 Audio', + 'm4r' => 'iPhone Ringtone', + 'm4v' => 'MPEG4 Video', + 'mid' => 'Midi', + 'mng' => 'MNG', + 'mka' => 'Matroska Audio', + 'mkv' => 'Matroska Video', + 'mov' => 'QuickTime', + 'mp3' => 'MP3', + 'mp4' => 'MPEG4', + 'mpc' => 'Musepack', + 'mpg' => 'MPEG', + 'mts' => 'AVCHD MPEG-2 transport stream', + 'oga' => 'Ogg Audio', + 'ogg' => 'Ogg Vorbis', + 'ogv' => 'Ogg Video', + 'ogx' => 'Ogg Multiplex', + 'qt' => 'QuickTime', + 'ra' => 'RealAudio', + 'ram' => 'RealAudio', + 'rm' => 'RealAudio', + 'spx' => 'Ogg Speex', + 'svg' => 'Scalable Vector Graphics', + 'svgz' => 'Compressed Scalable Vector Graphic', + 'swf' => 'Flash', + 'tif' => 'TIFF', + 'ts' => 'MPEG transport stream', + 'wav' => 'WAV', + 'webm' => 'WebM', + 'wma' => 'Windows Media Audio', + 'wmv' => 'Windows Media Video', + 'y4m' => 'YUV4MPEG2', + '3ga' => '3GP Audio File', + '3gp' => '3rd Generation Partnership Project' +); // Documents varies $tables_documents = array( - '7z' => '7 Zip', - 'abw' => 'Abiword', - 'ai' => 'Adobe Illustrator', - 'asx' => 'Advanced Stream Redirector', - 'bib' => 'BibTeX', - 'bz2' => 'BZip', - 'bin' => 'Binary Data', - 'blend' => 'Blender', - 'c' => 'C source', - 'cls' => 'LaTeX Class', - 'csl' => 'Citation Style Language', - 'css' => 'Cascading Style Sheet', - 'csv' => 'Comma Separated Values', - 'deb' => 'Debian', - 'doc' => 'Word', - 'dot' => 'Word Template', - 'djvu' => 'DjVu', - 'dvi' => 'LaTeX DVI', - 'emf' => 'Enhanced Metafile', - 'enl' => 'EndNote Library', - 'ens' => 'EndNote Style', - 'epub' => 'EPUB', - 'eps' => 'PostScript', - 'gpx' => 'GPS eXchange Format', - 'gz' => 'GZ', - 'h' => 'C header', - 'html' => 'HTML', - 'jar' => 'Java Archive', - 'json' => 'JSON', - 'kml' => 'Keyhole Markup Language', - 'kmz' => 'Google Earth Placemark File', - 'lyx' => 'Lyx file', - 'mathml' => 'MathML', - 'mbtiles' => 'MBTiles', - 'm3u' => 'M3U Playlist', - 'm3u8' => 'M3U8 Playlist', - 'm4u' => 'MPEG4 Playlist', - 'md' => 'Markdown Document', - 'pas' => 'Pascal', - 'pdf' => 'PDF', - 'pgn' => 'Portable Game Notation', - 'pls' => 'Playlist', - 'pot' => 'PowerPoint Template', - 'ppt' => 'PowerPoint', - 'ps' => 'PostScript', - 'psd' => 'Photoshop', - 'rar' => 'WinRAR', - 'rdf' => 'Resource Description Framework', - 'ris' => 'RIS', - 'rpm' => 'RedHat/Mandrake/SuSE', - 'rtf' => 'RTF', - 'sdc' => 'StarOffice Spreadsheet', - 'sdd' => 'StarOffice Presentation', - 'sdw' => 'StarOffice Writer document', - 'sit' => 'Stuffit', - 'sla' => 'Scribus', - 'srt' => 'SubRip Subtitle', - 'ssa' => 'SubStation Alpha Subtitle', - 'sty' => 'LaTeX Style Sheet', - 'sxc' => 'OpenOffice.org Calc', - 'sxi' => 'OpenOffice.org Impress', - 'sxw' => 'OpenOffice.org', - 'tar' => 'Tar', - 'tex' => 'LaTeX', - 'tgz' => 'TGZ', - 'torrent' => 'BitTorrent', - 'ttf' => 'TTF Font', - 'txt' => 'Texte', - 'usf' => 'Universal Subtitle Format', - 'wmf' => 'Windows Metafile', - 'wpl' => 'Windows Media Player Playlist', - 'xcf' => 'GIMP multi-layer', - 'xspf' => 'XSPF', - 'xls' => 'Excel', - 'xlt' => 'Excel Template', - 'xml' => 'XML', - 'y4m' => 'YUV4MPEG2', - 'yaml' => 'YAML', - 'zip' => 'Zip', + '7z' => '7 Zip', + 'abw' => 'Abiword', + 'ai' => 'Adobe Illustrator', + 'asx' => 'Advanced Stream Redirector', + 'bib' => 'BibTeX', + 'bz2' => 'BZip', + 'bin' => 'Binary Data', + 'blend' => 'Blender', + 'c' => 'C source', + 'cls' => 'LaTeX Class', + 'csl' => 'Citation Style Language', + 'css' => 'Cascading Style Sheet', + 'csv' => 'Comma Separated Values', + 'deb' => 'Debian', + 'doc' => 'Word', + 'dot' => 'Word Template', + 'djvu' => 'DjVu', + 'dvi' => 'LaTeX DVI', + 'emf' => 'Enhanced Metafile', + 'enl' => 'EndNote Library', + 'ens' => 'EndNote Style', + 'epub' => 'EPUB', + 'eps' => 'PostScript', + 'gpx' => 'GPS eXchange Format', + 'gz' => 'GZ', + 'h' => 'C header', + 'html' => 'HTML', + 'jar' => 'Java Archive', + 'json' => 'JSON', + 'kml' => 'Keyhole Markup Language', + 'kmz' => 'Google Earth Placemark File', + 'lyx' => 'Lyx file', + 'mathml' => 'MathML', + 'mbtiles' => 'MBTiles', + 'm3u' => 'M3U Playlist', + 'm3u8' => 'M3U8 Playlist', + 'm4u' => 'MPEG4 Playlist', + 'md' => 'Markdown Document', + 'pas' => 'Pascal', + 'pdf' => 'PDF', + 'pgn' => 'Portable Game Notation', + 'pls' => 'Playlist', + 'pot' => 'PowerPoint Template', + 'ppt' => 'PowerPoint', + 'ps' => 'PostScript', + 'psd' => 'Photoshop', + 'rar' => 'WinRAR', + 'rdf' => 'Resource Description Framework', + 'ris' => 'RIS', + 'rpm' => 'RedHat/Mandrake/SuSE', + 'rtf' => 'RTF', + 'sdc' => 'StarOffice Spreadsheet', + 'sdd' => 'StarOffice Presentation', + 'sdw' => 'StarOffice Writer document', + 'sit' => 'Stuffit', + 'sla' => 'Scribus', + 'srt' => 'SubRip Subtitle', + 'ssa' => 'SubStation Alpha Subtitle', + 'sty' => 'LaTeX Style Sheet', + 'sxc' => 'OpenOffice.org Calc', + 'sxi' => 'OpenOffice.org Impress', + 'sxw' => 'OpenOffice.org', + 'tar' => 'Tar', + 'tex' => 'LaTeX', + 'tgz' => 'TGZ', + 'torrent' => 'BitTorrent', + 'ttf' => 'TTF Font', + 'txt' => 'Texte', + 'usf' => 'Universal Subtitle Format', + 'wmf' => 'Windows Metafile', + 'wpl' => 'Windows Media Player Playlist', + 'xcf' => 'GIMP multi-layer', + 'xspf' => 'XSPF', + 'xls' => 'Excel', + 'xlt' => 'Excel Template', + 'xml' => 'XML', + 'y4m' => 'YUV4MPEG2', + 'yaml' => 'YAML', + 'zip' => 'Zip', - // open document format - - 'odb' => 'OpenDocument Database', - 'odc' => 'OpenDocument Chart', - 'odf' => 'OpenDocument Formula', - 'odg' => 'OpenDocument Graphics', - 'odi' => 'OpenDocument Image', - 'odm' => 'OpenDocument Text-master', - 'odp' => 'OpenDocument Presentation', - 'ods' => 'OpenDocument Spreadsheet', - 'odt' => 'OpenDocument Text', - 'otg' => 'OpenDocument Graphics-template', - 'otp' => 'OpenDocument Presentation-template', - 'ots' => 'OpenDocument Spreadsheet-template', - 'ott' => 'OpenDocument Text-template', + // open document format + 'odb' => 'OpenDocument Database', + 'odc' => 'OpenDocument Chart', + 'odf' => 'OpenDocument Formula', + 'odg' => 'OpenDocument Graphics', + 'odi' => 'OpenDocument Image', + 'odm' => 'OpenDocument Text-master', + 'odp' => 'OpenDocument Presentation', + 'ods' => 'OpenDocument Spreadsheet', + 'odt' => 'OpenDocument Text', + 'otg' => 'OpenDocument Graphics-template', + 'otp' => 'OpenDocument Presentation-template', + 'ots' => 'OpenDocument Spreadsheet-template', + 'ott' => 'OpenDocument Text-template', - // Open XML File Formats - 'docm' => 'Word', - 'docx' => 'Word', - 'dotm' => 'Word template', - 'dotx' => 'Word template', - 'potm' => 'Powerpoint template', - 'potx' => 'Powerpoint template', - 'ppam' => 'Powerpoint addin', - 'ppsm' => 'Powerpoint slideshow', - 'ppsx' => 'Powerpoint slideshow', - 'pptm' => 'Powerpoint', - 'pptx' => 'Powerpoint', + // Open XML File Formats + 'docm' => 'Word', + 'docx' => 'Word', + 'dotm' => 'Word template', + 'dotx' => 'Word template', - 'xlam' => 'Excel', - 'xlsb' => 'Excel binary', - 'xlsm' => 'Excel', - 'xlsx' => 'Excel', - 'xltm' => 'Excel template', - 'xltx' => 'Excel template' - ); + 'potm' => 'Powerpoint template', + 'potx' => 'Powerpoint template', + 'ppam' => 'Powerpoint addin', + 'ppsm' => 'Powerpoint slideshow', + 'ppsx' => 'Powerpoint slideshow', + 'pptm' => 'Powerpoint', + 'pptx' => 'Powerpoint', + + 'xlam' => 'Excel', + 'xlsb' => 'Excel binary', + 'xlsm' => 'Excel', + 'xlsx' => 'Excel', + 'xltm' => 'Excel template', + 'xltx' => 'Excel template' +); $tables_mime = array( - // Images reconnues par PHP - 'jpg' => 'image/jpeg', - 'png' => 'image/png', - 'gif' => 'image/gif', + // Images reconnues par PHP + 'jpg' => 'image/jpeg', + 'png' => 'image/png', + 'gif' => 'image/gif', + + // Autres images (peuvent utiliser le tag <img>) + 'bmp' => 'image/x-ms-bmp', // pas enregistre par IANA, variante: image/bmp + 'tif' => 'image/tiff', - // Autres images (peuvent utiliser le tag <img>) - 'bmp' => 'image/x-ms-bmp', // pas enregistre par IANA, variante: image/bmp - 'tif' => 'image/tiff', - - // Multimedia (peuvent utiliser le tag <embed>) - 'aac' => 'audio/mp4a-latm', - 'ac3' => 'audio/x-aac', - 'aifc' => 'audio/x-aifc', - 'aiff' => 'audio/x-aiff', - 'amr' => 'audio/amr', - 'ape' => 'audio/x-monkeys-audio', - 'asf' => 'video/x-ms-asf', - 'avi' => 'video/x-msvideo', - 'anx' => 'application/annodex', - 'axa' => 'audio/annodex', - 'axv' => 'video/annodex', - 'dv' => 'video/x-dv', - 'f4a' => 'audio/mp4', - 'f4b' => 'audio/mp4', - 'f4p' => 'video/mp4', - 'f4v' => 'video/mp4', - 'flac' => 'audio/x-flac', - 'flv' => 'video/x-flv', - 'm2p' => 'video/MP2P', - 'm2ts' => 'video/MP2T', - 'm4a' => 'audio/mp4a-latm', - 'm4b' => 'audio/mp4a-latm', - 'm4p' => 'audio/mp4a-latm', - 'm4r' => 'audio/aac', - 'm4u' => 'video/vnd.mpegurl', - 'm4v' => 'video/x-m4v', - 'mid' => 'audio/midi', - 'mka' => 'audio/mka', - 'mkv' => 'video/mkv', - 'mng' => 'video/x-mng', - 'mov' => 'video/quicktime', - 'mp3' => 'audio/mpeg', - 'mp4' => 'application/mp4', - 'mpc' => 'audio/x-musepack', - 'mpg' => 'video/mpeg', - 'mts' => 'video/MP2T', - 'oga' => 'audio/ogg', - 'ogg' => 'audio/ogg', - 'ogv' => 'video/ogg', - 'ogx' => 'application/ogg', - 'qt' => 'video/quicktime', - 'ra' => 'audio/x-pn-realaudio', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'spx' => 'audio/ogg', - 'svg' => 'image/svg+xml', - 'svgz' => 'image/svg+xml', - 'swf' => 'application/x-shockwave-flash', - 'ts' => 'video/MP2T', - 'wav' => 'audio/x-wav', - 'webm' => 'video/webm', - 'wma' => 'audio/x-ms-wma', - 'wmv' => 'video/x-ms-wmv', - 'y4m' => 'video/x-raw-yuv', - '3gp' => 'video/3gpp', - '3ga' => 'audio/3ga', + // Multimedia (peuvent utiliser le tag <embed>) + 'aac' => 'audio/mp4a-latm', + 'ac3' => 'audio/x-aac', + 'aifc' => 'audio/x-aifc', + 'aiff' => 'audio/x-aiff', + 'amr' => 'audio/amr', + 'ape' => 'audio/x-monkeys-audio', + 'asf' => 'video/x-ms-asf', + 'avi' => 'video/x-msvideo', + 'anx' => 'application/annodex', + 'axa' => 'audio/annodex', + 'axv' => 'video/annodex', + 'dv' => 'video/x-dv', + 'f4a' => 'audio/mp4', + 'f4b' => 'audio/mp4', + 'f4p' => 'video/mp4', + 'f4v' => 'video/mp4', + 'flac' => 'audio/x-flac', + 'flv' => 'video/x-flv', + 'm2p' => 'video/MP2P', + 'm2ts' => 'video/MP2T', + 'm4a' => 'audio/mp4a-latm', + 'm4b' => 'audio/mp4a-latm', + 'm4p' => 'audio/mp4a-latm', + 'm4r' => 'audio/aac', + 'm4u' => 'video/vnd.mpegurl', + 'm4v' => 'video/x-m4v', + 'mid' => 'audio/midi', + 'mka' => 'audio/mka', + 'mkv' => 'video/mkv', + 'mng' => 'video/x-mng', + 'mov' => 'video/quicktime', + 'mp3' => 'audio/mpeg', + 'mp4' => 'application/mp4', + 'mpc' => 'audio/x-musepack', + 'mpg' => 'video/mpeg', + 'mts' => 'video/MP2T', + 'oga' => 'audio/ogg', + 'ogg' => 'audio/ogg', + 'ogv' => 'video/ogg', + 'ogx' => 'application/ogg', + 'qt' => 'video/quicktime', + 'ra' => 'audio/x-pn-realaudio', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'spx' => 'audio/ogg', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + 'swf' => 'application/x-shockwave-flash', + 'ts' => 'video/MP2T', + 'wav' => 'audio/x-wav', + 'webm' => 'video/webm', + 'wma' => 'audio/x-ms-wma', + 'wmv' => 'video/x-ms-wmv', + 'y4m' => 'video/x-raw-yuv', + '3gp' => 'video/3gpp', + '3ga' => 'audio/3ga', - // Documents varies - '7z' => 'application/x-7z-compressed', - 'ai' => 'application/illustrator', - 'abw' => 'application/abiword', - 'asx' => 'video/x-ms-asf', - 'bib' => 'application/x-bibtex', - 'bin' => 'application/octet-stream', # le tout-venant - 'blend' => 'application/x-blender', - 'bz2' => 'application/x-bzip2', - 'c' => 'text/x-csrc', - 'csl' => 'application/xml', - 'css' => 'text/css', - 'csv' => 'text/csv', - 'deb' => 'application/x-debian-package', - 'doc' => 'application/msword', - 'dot' => 'application/msword', - 'djvu' => 'image/vnd.djvu', - 'dvi' => 'application/x-dvi', - 'emf' => 'image/x-emf', - 'enl' => 'application/octet-stream', - 'ens' => 'application/octet-stream', - 'eps' => 'application/postscript', - 'epub' => 'application/epub+zip', // pas enregistre par IANA - 'gpx' => 'application/gpx+xml', // pas enregistre par IANA - 'gz' => 'application/x-gzip', - 'h' => 'text/x-chdr', - 'html' => 'text/html', - 'jar' => 'application/java-archive', - 'json' => 'application/json', - 'kml' => 'application/vnd.google-earth.kml+xml', - 'kmz' => 'application/vnd.google-earth.kmz', - 'lyx' => 'application/x-lyx', - 'm3u' => 'text/plain', - 'm3u8' => 'text/plain', - 'mathml' => 'application/mathml+xml', - 'mbtiles' => 'application/x-sqlite3', - 'md' => 'text/x-markdown', - 'pas' => 'text/x-pascal', - 'pdf' => 'application/pdf', - 'pgn' => 'application/x-chess-pgn', - 'pls' => 'text/plain', - 'ppt' => 'application/vnd.ms-powerpoint', - 'pot' => 'application/vnd.ms-powerpoint', - 'ps' => 'application/postscript', - 'psd' => 'image/x-photoshop', // pas enregistre par IANA - 'rar' => 'application/x-rar-compressed', - 'rdf' => 'application/rdf+xml', - 'ris' => 'application/x-research-info-systems', - 'rpm' => 'application/x-redhat-package-manager', - 'rtf' => 'application/rtf', - 'sdc' => 'application/vnd.stardivision.calc', - 'sdd' => 'application/vnd.stardivision.impress', - 'sdw' => 'application/vnd.stardivision.writer', - 'sit' => 'application/x-stuffit', - 'sla' => 'application/x-scribus', - 'srt' => 'text/plain', - 'ssa' => 'text/plain', - 'sxc' => 'application/vnd.sun.xml.calc', - 'sxi' => 'application/vnd.sun.xml.impress', - 'sxw' => 'application/vnd.sun.xml.writer', - 'tar' => 'application/x-tar', - 'tex' => 'text/x-tex', - 'tgz' => 'application/x-gtar', - 'torrent' => 'application/x-bittorrent', - 'ttf' => 'application/x-font-ttf', - 'txt' => 'text/plain', - 'usf' => 'application/xml', - 'xcf' => 'application/x-xcf', - 'xls' => 'application/vnd.ms-excel', - 'xlt' => 'application/vnd.ms-excel', - 'wmf' => 'image/x-emf', - 'wpl' => 'application/vnd.ms-wpl', - 'xspf' => 'application/xspf+xml', - 'xml' => 'application/xml', - 'yaml' => 'text/yaml', - 'zip' => 'application/zip', + // Documents varies + '7z' => 'application/x-7z-compressed', + 'ai' => 'application/illustrator', + 'abw' => 'application/abiword', + 'asx' => 'video/x-ms-asf', + 'bib' => 'application/x-bibtex', + 'bin' => 'application/octet-stream', # le tout-venant + 'blend' => 'application/x-blender', + 'bz2' => 'application/x-bzip2', + 'c' => 'text/x-csrc', + 'csl' => 'application/xml', + 'css' => 'text/css', + 'csv' => 'text/csv', + 'deb' => 'application/x-debian-package', + 'doc' => 'application/msword', + 'dot' => 'application/msword', + 'djvu' => 'image/vnd.djvu', + 'dvi' => 'application/x-dvi', + 'emf' => 'image/x-emf', + 'enl' => 'application/octet-stream', + 'ens' => 'application/octet-stream', + 'eps' => 'application/postscript', + 'epub' => 'application/epub+zip', // pas enregistre par IANA + 'gpx' => 'application/gpx+xml', // pas enregistre par IANA + 'gz' => 'application/x-gzip', + 'h' => 'text/x-chdr', + 'html' => 'text/html', + 'jar' => 'application/java-archive', + 'json' => 'application/json', + 'kml' => 'application/vnd.google-earth.kml+xml', + 'kmz' => 'application/vnd.google-earth.kmz', + 'lyx' => 'application/x-lyx', + 'm3u' => 'text/plain', + 'm3u8' => 'text/plain', + 'mathml' => 'application/mathml+xml', + 'mbtiles' => 'application/x-sqlite3', + 'md' => 'text/x-markdown', + 'pas' => 'text/x-pascal', + 'pdf' => 'application/pdf', + 'pgn' => 'application/x-chess-pgn', + 'pls' => 'text/plain', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pot' => 'application/vnd.ms-powerpoint', + 'ps' => 'application/postscript', + 'psd' => 'image/x-photoshop', // pas enregistre par IANA + 'rar' => 'application/x-rar-compressed', + 'rdf' => 'application/rdf+xml', + 'ris' => 'application/x-research-info-systems', + 'rpm' => 'application/x-redhat-package-manager', + 'rtf' => 'application/rtf', + 'sdc' => 'application/vnd.stardivision.calc', + 'sdd' => 'application/vnd.stardivision.impress', + 'sdw' => 'application/vnd.stardivision.writer', + 'sit' => 'application/x-stuffit', + 'sla' => 'application/x-scribus', + 'srt' => 'text/plain', + 'ssa' => 'text/plain', + 'sxc' => 'application/vnd.sun.xml.calc', + 'sxi' => 'application/vnd.sun.xml.impress', + 'sxw' => 'application/vnd.sun.xml.writer', + 'tar' => 'application/x-tar', + 'tex' => 'text/x-tex', + 'tgz' => 'application/x-gtar', + 'torrent' => 'application/x-bittorrent', + 'ttf' => 'application/x-font-ttf', + 'txt' => 'text/plain', + 'usf' => 'application/xml', + 'xcf' => 'application/x-xcf', + 'xls' => 'application/vnd.ms-excel', + 'xlt' => 'application/vnd.ms-excel', + 'wmf' => 'image/x-emf', + 'wpl' => 'application/vnd.ms-wpl', + 'xspf' => 'application/xspf+xml', + 'xml' => 'application/xml', + 'yaml' => 'text/yaml', + 'zip' => 'application/zip', - // Open Document format - 'odt' => 'application/vnd.oasis.opendocument.text', - 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', - 'odp' => 'application/vnd.oasis.opendocument.presentation', - 'odg' => 'application/vnd.oasis.opendocument.graphics', - 'odc' => 'application/vnd.oasis.opendocument.chart', - 'odf' => 'application/vnd.oasis.opendocument.formula', - 'odb' => 'application/vnd.oasis.opendocument.database', - 'odi' => 'application/vnd.oasis.opendocument.image', - 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'ott' => 'application/vnd.oasis.opendocument.text-template', - 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', - 'otp' => 'application/vnd.oasis.opendocument.presentation-template', - 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + // Open Document format + 'odt' => 'application/vnd.oasis.opendocument.text', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'odb' => 'application/vnd.oasis.opendocument.database', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', - 'cls' => 'text/x-tex', - 'sty' => 'text/x-tex', + 'cls' => 'text/x-tex', + 'sty' => 'text/x-tex', - // Open XML File Formats - 'docm' => 'application/vnd.ms-word.document.macroEnabled.12', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', - 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + // Open XML File Formats + 'docm' => 'application/vnd.ms-word.document.macroEnabled.12', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', - 'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12', - 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', - 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12', - 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', - 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', - 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12', + 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', - 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12', - 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' - ); + 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', + 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' +); - $mime_alias = array ( - 'application/x-ogg' => 'application/ogg', - 'audio/3gpp' => 'video/3gpp', - 'audio/x-mpeg' => 'audio/mpeg', - 'audio/x-musepack' => 'audio/musepack', - 'audio/webm' => 'video/webm', - 'video/flv' => 'video/x-flv', - 'video/mp4' => 'application/mp4', - 'image/jpg' => 'image/jpeg' - ); +$mime_alias = array( + 'application/x-ogg' => 'application/ogg', + 'audio/3gpp' => 'video/3gpp', + 'audio/x-mpeg' => 'audio/mpeg', + 'audio/x-musepack' => 'audio/musepack', + 'audio/webm' => 'video/webm', + 'video/flv' => 'video/x-flv', + 'video/mp4' => 'application/mp4', + 'image/jpg' => 'image/jpeg' +); ?> diff --git a/formulaires/changer_fichier_document.php b/formulaires/changer_fichier_document.php index a3106381ee2a5b169dc792d768c032e72683b487..44323d5078a4e3e87e9a1968822c7da819487186 100644 --- a/formulaires/changer_fichier_document.php +++ b/formulaires/changer_fichier_document.php @@ -10,50 +10,55 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} -function formulaires_changer_fichier_document_charger_dist($id_document){ - $valeurs = sql_fetsel('id_document,fichier,distant','spip_documents','id_document='.intval($id_document)); - if (!$valeurs) - return array('editable'=>false); +function formulaires_changer_fichier_document_charger_dist($id_document) { + $valeurs = sql_fetsel('id_document,fichier,distant', 'spip_documents', 'id_document=' . intval($id_document)); + if (!$valeurs) { + return array('editable' => false); + } - $charger = charger_fonction('charger','formulaires/joindre_document'); - $valeurs = array_merge($valeurs,$charger($id_document,0,'','choix')); + $charger = charger_fonction('charger', 'formulaires/joindre_document'); + $valeurs = array_merge($valeurs, $charger($id_document, 0, '', 'choix')); $valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />"; - + return $valeurs; } -function formulaires_changer_fichier_document_verifier_dist($id_document){ +function formulaires_changer_fichier_document_verifier_dist($id_document) { $erreurs = array(); - if (_request('copier_local')){ - } - else { - $verifier = charger_fonction('verifier','formulaires/joindre_document'); + if (_request('copier_local')) { + } else { + $verifier = charger_fonction('verifier', 'formulaires/joindre_document'); $erreurs = $verifier($id_document); } + return $erreurs; } -function formulaires_changer_fichier_document_traiter_dist($id_document){ - if (_request('copier_local')){ - $copier_local = charger_fonction('copier_local','action'); - $res = array('editable'=>true); - if (($err=$copier_local($id_document))===true) +function formulaires_changer_fichier_document_traiter_dist($id_document) { + if (_request('copier_local')) { + $copier_local = charger_fonction('copier_local', 'action'); + $res = array('editable' => true); + if (($err = $copier_local($id_document)) === true) { $res['message_ok'] = _T('medias:document_copie_locale_succes'); - else + } else { $res['message_erreur'] = $err; - } - else { + } + } else { // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom - if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document)) - AND @file_exists($f = get_spip_doc($ancien_fichier))){ + if ($ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document)) + AND @file_exists($f = get_spip_doc($ancien_fichier)) + ) { spip_unlink($f); } - $traiter = charger_fonction('traiter','formulaires/joindre_document'); + $traiter = charger_fonction('traiter', 'formulaires/joindre_document'); $res = $traiter($id_document); } + return $res; } diff --git a/formulaires/configurer_documents.php b/formulaires/configurer_documents.php index e056ce25e83046a18870b4ccfb35712e22dfe0e4..92af9a79da13e028973821c7d744f4e7c3f12f2c 100644 --- a/formulaires/configurer_documents.php +++ b/formulaires/configurer_documents.php @@ -14,23 +14,27 @@ * Gestion du formulaire de configuration des documents * * @package SPIP\Medias\Formulaires -**/ + **/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Chargement du formulaire de configuration des documents * * @return array * Environnement du formulaire -**/ -function formulaires_configurer_documents_charger_dist(){ - foreach(array( - "documents_objets", - "documents_date", - ) as $m) + **/ +function formulaires_configurer_documents_charger_dist() { + foreach (array( + "documents_objets", + "documents_date", + ) as $m) { $valeurs[$m] = isset($GLOBALS['meta'][$m]) ? $GLOBALS['meta'][$m] : ''; - $valeurs['documents_objets']=explode(',',$valeurs['documents_objets']); + } + $valeurs['documents_objets'] = explode(',', $valeurs['documents_objets']); + return $valeurs; } @@ -39,15 +43,18 @@ function formulaires_configurer_documents_charger_dist(){ * * @return array * Retours du traitement -**/ -function formulaires_configurer_documents_traiter_dist(){ - $res = array('editable'=>true); - if (!is_null($v=_request($m='documents_date'))) - ecrire_meta($m, $v=='oui'?'oui':'non'); - if (!is_null($v=_request($m='documents_objets'))) - ecrire_meta($m, is_array($v)?implode(',',$v):''); + **/ +function formulaires_configurer_documents_traiter_dist() { + $res = array('editable' => true); + if (!is_null($v = _request($m = 'documents_date'))) { + ecrire_meta($m, $v == 'oui' ? 'oui' : 'non'); + } + if (!is_null($v = _request($m = 'documents_objets'))) { + ecrire_meta($m, is_array($v) ? implode(',', $v) : ''); + } $res['message_ok'] = _T('config_info_enregistree'); + return $res; } diff --git a/formulaires/editer_document.php b/formulaires/editer_document.php index 73c4d7e0b44aee5b3cebb263047b25cb086a1b70..19dc9842ea54e25b25aae4eea4fd9a0bca1579dc 100644 --- a/formulaires/editer_document.php +++ b/formulaires/editer_document.php @@ -10,72 +10,85 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} include_spip('inc/actions'); include_spip('inc/editer'); include_spip('inc/documents'); include_spip('inc/config'); -function formulaires_editer_document_charger_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = ''){ - $valeurs = formulaires_editer_objet_charger('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden); +function formulaires_editer_document_charger_dist( + $id_document = 'new', + $id_parent = '', + $retour = '', + $lier_trad = 0, + $config_fonc = 'documents_edit_config', + $row = array(), + $hidden = '' +) { + $valeurs = formulaires_editer_objet_charger('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, + $row, $hidden); // relier les parents $valeurs['parents'] = array(); $valeurs['_hidden'] = ""; - $parents = sql_allfetsel('objet,id_objet','spip_documents_liens','id_document='.intval($id_document)); - foreach($parents as $p){ - if (in_array($p['objet'],array('article','rubrique')) AND $p['id_objet']>0) - $valeurs['parents'][] = $p['objet'].'|'.$p['id_objet']; - else - $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='".$p['objet'].'|'.$p['id_objet']."' />"; + $parents = sql_allfetsel('objet,id_objet', 'spip_documents_liens', 'id_document=' . intval($id_document)); + foreach ($parents as $p) { + if (in_array($p['objet'], array('article', 'rubrique')) AND $p['id_objet'] > 0) { + $valeurs['parents'][] = $p['objet'] . '|' . $p['id_objet']; + } else { + $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='" . $p['objet'] . '|' . $p['id_objet'] . "' />"; + } } // en fonction de la config du site on a le droit ou pas de modifier la date - if ($valeurs['_editer_date'] = (lire_config('documents_date') == 'oui' ? ' ' : '')){ - $valeurs['saisie_date'] = affdate($valeurs['date'],'d/m/Y'); - $valeurs['saisie_heure'] = affdate($valeurs['date'],'H:i'); - } - elseif (isset($valeurs['date'])){ + if ($valeurs['_editer_date'] = (lire_config('documents_date') == 'oui' ? ' ' : '')) { + $valeurs['saisie_date'] = affdate($valeurs['date'], 'd/m/Y'); + $valeurs['saisie_heure'] = affdate($valeurs['date'], 'H:i'); + } elseif (isset($valeurs['date'])) { unset($valeurs['date']); } - + // en fonction du format - $valeurs['_editer_dimension'] = autoriser('tailler','document',$id_document)?' ':''; + $valeurs['_editer_dimension'] = autoriser('tailler', 'document', $id_document) ? ' ' : ''; // type du document et inclusion - $row = sql_fetsel('titre as type_document,inclus','spip_types_documents','extension='.sql_quote($valeurs['extension'])); + $row = sql_fetsel('titre as type_document,inclus', 'spip_types_documents', + 'extension=' . sql_quote($valeurs['extension'])); $valeurs['type_document'] = $row['type_document']; $valeurs['_inclus'] = $row['inclus']; - if (in_array($valeurs['extension'],array('jpg','gif','png'))){ + if (in_array($valeurs['extension'], array('jpg', 'gif', 'png'))) { $valeurs['apercu'] = get_spip_doc($valeurs['fichier']); } // verifier les infos de taille et dimensions sur les fichiers locaux // cas des maj de fichier directes par ftp - if ($valeurs['distant']!=='oui'){ + if ($valeurs['distant'] !== 'oui') { include_spip('inc/renseigner_document'); - $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']),$valeurs['extension']); - if ($infos AND is_array($infos) AND isset($infos['taille'])){ - if ($infos['taille']!=$valeurs['taille'] - OR ($infos['type_image'] && ($infos['largeur']!=$valeurs['largeur'])) - OR ($infos['type_image'] && ($infos['hauteur']!=$valeurs['hauteur']))){ + $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']), $valeurs['extension']); + if ($infos AND is_array($infos) AND isset($infos['taille'])) { + if ($infos['taille'] != $valeurs['taille'] + OR ($infos['type_image'] && ($infos['largeur'] != $valeurs['largeur'])) + OR ($infos['type_image'] && ($infos['hauteur'] != $valeurs['hauteur'])) + ) { $valeurs['_taille_modif'] = $infos['taille']; $valeurs['_largeur_modif'] = $infos['largeur']; $valeurs['_hauteur_modif'] = $infos['hauteur']; - $valeurs['_hidden'].= - "<input type='hidden' name='_taille_modif' value='".$infos['taille']."' />" - . "<input type='hidden' name='_largeur_modif' value='".$infos['largeur']."' />" - . "<input type='hidden' name='_hauteur_modif' value='".$infos['hauteur']."' />"; + $valeurs['_hidden'] .= + "<input type='hidden' name='_taille_modif' value='" . $infos['taille'] . "' />" + . "<input type='hidden' name='_largeur_modif' value='" . $infos['largeur'] . "' />" + . "<input type='hidden' name='_hauteur_modif' value='" . $infos['hauteur'] . "' />"; } } } // pour l'upload d'un nouveau doc - if ($valeurs['fichier']){ - $charger = charger_fonction('charger','formulaires/joindre_document'); - $valeurs = array_merge($valeurs,$charger($id_document,0,'','choix')); + if ($valeurs['fichier']) { + $charger = charger_fonction('charger', 'formulaires/joindre_document'); + $valeurs = array_merge($valeurs, $charger($id_document, 0, '', 'choix')); $valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />"; } @@ -83,8 +96,7 @@ function formulaires_editer_document_charger_dist($id_document = 'new', $id_pare } // Choix par defaut des options de presentation -function documents_edit_config($row) -{ +function documents_edit_config($row) { global $spip_lang; $config = array();//$GLOBALS['meta']; @@ -92,31 +104,41 @@ function documents_edit_config($row) $config['langue'] = $spip_lang; $config['restreint'] = ($row['statut'] == 'publie'); + return $config; } -function formulaires_editer_document_verifier_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = ''){ - $erreurs = formulaires_editer_objet_verifier('document',$id_document,is_numeric($id_document)?array():array('titre')); +function formulaires_editer_document_verifier_dist( + $id_document = 'new', + $id_parent = '', + $retour = '', + $lier_trad = 0, + $config_fonc = 'documents_edit_config', + $row = array(), + $hidden = '' +) { + $erreurs = formulaires_editer_objet_verifier('document', $id_document, + is_numeric($id_document) ? array() : array('titre')); // verifier l'upload si on a demande a changer le document - if (_request('joindre_upload') OR _request('joindre_ftp') OR _request('joindre_distant')){ - if (_request('copier_local')){ - } - else { - $verifier = charger_fonction('verifier','formulaires/joindre_document'); - $erreurs = array_merge($erreurs,$verifier($id_document)); + if (_request('joindre_upload') OR _request('joindre_ftp') OR _request('joindre_distant')) { + if (_request('copier_local')) { + } else { + $verifier = charger_fonction('verifier', 'formulaires/joindre_document'); + $erreurs = array_merge($erreurs, $verifier($id_document)); } } - + // On ne vérifie la date que si on avait le droit de la modifier - if (lire_config('documents_date') == 'oui'){ - if (!$date = recup_date(_request('saisie_date').' '._request('saisie_heure').':00') - OR !($date = mktime($date[3],$date[4],0,$date[1],$date[2],$date[0]))) - $erreurs['saisie_date'] = _T('medias:format_date_incorrect'); - else { - set_request('saisie_date',date('d/m/Y',$date)); - set_request('saisie_heure',date('H:i',$date)); - set_request('date',date("Y-m-d H:i:s",$date)); + if (lire_config('documents_date') == 'oui') { + if (!$date = recup_date(_request('saisie_date') . ' ' . _request('saisie_heure') . ':00') + OR !($date = mktime($date[3], $date[4], 0, $date[1], $date[2], $date[0])) + ) { + $erreurs['saisie_date'] = _T('medias:format_date_incorrect'); + } else { + set_request('saisie_date', date('d/m/Y', $date)); + set_request('saisie_heure', date('H:i', $date)); + set_request('date', date("Y-m-d H:i:s", $date)); } } @@ -124,82 +146,101 @@ function formulaires_editer_document_verifier_dist($id_document = 'new', $id_par } // http://code.spip.net/@inc_editer_article_dist -function formulaires_editer_document_traiter_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = ''){ - if (is_null(_request('parents'))) - set_request('parents',array()); +function formulaires_editer_document_traiter_dist( + $id_document = 'new', + $id_parent = '', + $retour = '', + $lier_trad = 0, + $config_fonc = 'documents_edit_config', + $row = array(), + $hidden = '' +) { + if (is_null(_request('parents'))) { + set_request('parents', array()); + } // verifier les infos de taille et dimensions sur les fichiers locaux // cas des maj de fichier directes par ftp - foreach(array('taille','largeur','hauteur') as $c) - if (($v=_request("_{$c}_modif")) AND !_request($c)){ - set_request($c,$v); + foreach (array('taille', 'largeur', 'hauteur') as $c) { + if (($v = _request("_{$c}_modif")) AND !_request($c)) { + set_request($c, $v); + } } - $res = formulaires_editer_objet_traiter('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden); + $res = formulaires_editer_objet_traiter('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, $row, + $hidden); set_request('parents'); $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>"; if (_request('copier_local') - OR _request('joindre_upload') - OR _request('joindre_ftp') - OR _request('joindre_distant') - OR _request('joindre_zip')){ + OR _request('joindre_upload') + OR _request('joindre_ftp') + OR _request('joindre_distant') + OR _request('joindre_zip') + ) { $autoclose = ""; - if (_request('copier_local')){ - $copier_local = charger_fonction('copier_local','action'); - $res = array('editable'=>true); - if (($err=$copier_local($id_document))===true) - $res['message_ok'] = (isset($res['message_ok'])?$res['message_ok'].'<br />':'')._T('medias:document_copie_locale_succes'); - else - $res['message_erreur'] = (isset($res['message_erreur'])?$res['message_erreur'].'<br />':'').$err; + if (_request('copier_local')) { + $copier_local = charger_fonction('copier_local', 'action'); + $res = array('editable' => true); + if (($err = $copier_local($id_document)) === true) { + $res['message_ok'] = (isset($res['message_ok']) ? $res['message_ok'] . '<br />' : '') . _T('medias:document_copie_locale_succes'); + } else { + $res['message_erreur'] = (isset($res['message_erreur']) ? $res['message_erreur'] . '<br />' : '') . $err; + } set_request('credits'); // modifie par la copie locale - } - else { + } else { // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom - if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document)) - AND @file_exists($rename = get_spip_doc($ancien_fichier))){ - @rename($rename,"$rename--.old"); + if ($ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document)) + AND @file_exists($rename = get_spip_doc($ancien_fichier)) + ) { + @rename($rename, "$rename--.old"); } - $traiter = charger_fonction('traiter','formulaires/joindre_document'); + $traiter = charger_fonction('traiter', 'formulaires/joindre_document'); $res2 = $traiter($id_document); - if (isset($res2['message_erreur'])){ + if (isset($res2['message_erreur'])) { $res['message_erreur'] = $res2['message_erreur']; // retablir le fichier ! - if ($rename) - @rename("$rename--.old",$rename); - } - else - // supprimer vraiment le fichier initial + if ($rename) { + @rename("$rename--.old", $rename); + } + } else // supprimer vraiment le fichier initial + { spip_unlink("$rename--.old"); + } } // on annule les saisies largeur/hauteur : l'upload a pu charger les siens set_request('largeur'); set_request('hauteur'); - } - else{ + } else { // regarder si une demande de rotation a eu lieu // c'est un bouton image, dont on a pas toujours le name en request, on fait avec $angle = 0; - if (_request('tournerL90') OR _request('tournerL90_x')) + if (_request('tournerL90') OR _request('tournerL90_x')) { $angle = -90; - if (_request('tournerR90') OR _request('tournerR90_x')) + } + if (_request('tournerR90') OR _request('tournerR90_x')) { $angle = 90; - if (_request('tourner180') OR _request('tourner180_x')) + } + if (_request('tourner180') OR _request('tourner180_x')) { $angle = 180; - if ($angle){ + } + if ($angle) { $autoclose = ""; - $tourner = charger_fonction('tourner','action'); - action_tourner_post($id_document,$angle); + $tourner = charger_fonction('tourner', 'action'); + action_tourner_post($id_document, $angle); } } - if (!isset($res['redirect'])) + if (!isset($res['redirect'])) { $res['editable'] = true; - if (!isset($res['message_erreur'])) - $res['message_ok'] = _T('info_modification_enregistree').$autoclose; + } + if (!isset($res['message_erreur'])) { + $res['message_ok'] = _T('info_modification_enregistree') . $autoclose; + } - if ($res['message_ok']) - $res['message_ok'].='<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>'; + if ($res['message_ok']) { + $res['message_ok'] .= '<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>'; + } return $res; } diff --git a/formulaires/illustrer_document.php b/formulaires/illustrer_document.php index a67af45377868e67a725a90ae30a82d8d974c1fd..8072805094cd4778520e1eb4d329383583ac1d0f 100644 --- a/formulaires/illustrer_document.php +++ b/formulaires/illustrer_document.php @@ -10,67 +10,73 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} -function formulaires_illustrer_document_charger_dist($id_document){ +function formulaires_illustrer_document_charger_dist($id_document) { include_spip('inc/documents'); - $valeurs = sql_fetsel('id_document,mode,id_vignette,extension,media','spip_documents','id_document='.intval($id_document)); - if (!$valeurs /*OR in_array($valeurs['extension'],array('jpg','gif','png'))*/) - return array('editable'=>false,'id'=>$id_document); + $valeurs = sql_fetsel('id_document,mode,id_vignette,extension,media', 'spip_documents', + 'id_document=' . intval($id_document)); + if (!$valeurs /*OR in_array($valeurs['extension'],array('jpg','gif','png'))*/) { + return array('editable' => false, 'id' => $id_document); + } $valeurs['id'] = $id_document; $valeurs['_hidden'] = "<input name='id_document' value='$id_document' type='hidden' />"; $valeurs['mode'] = 'vignette'; // pour les id dans le dom - $vignette = sql_fetsel('fichier,largeur,hauteur,id_document','spip_documents','id_document='.$valeurs['id_vignette']); + $vignette = sql_fetsel('fichier,largeur,hauteur,id_document', 'spip_documents', + 'id_document=' . $valeurs['id_vignette']); $valeurs['vignette'] = get_spip_doc($vignette['fichier']); $valeurs['hauteur'] = $vignette['hauteur']; $valeurs['largeur'] = $vignette['largeur']; $valeurs['id_vignette'] = $vignette['id_document']; - $valeurs['_pipeline'] = array('editer_contenu_objet',array('type'=>'illustrer_document','id'=>$id_document)); + $valeurs['_pipeline'] = array('editer_contenu_objet', array('type' => 'illustrer_document', 'id' => $id_document)); return $valeurs; } -function formulaires_illustrer_document_verifier_dist($id_document){ +function formulaires_illustrer_document_verifier_dist($id_document) { $erreurs = array(); - if (_request('supprimer')){ + if (_request('supprimer')) { - } - else { + } else { - $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document)); - $verifier = charger_fonction('verifier','formulaires/joindre_document'); - $erreurs = $verifier($id_vignette,0,'','vignette'); + $id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document=' . intval($id_document)); + $verifier = charger_fonction('verifier', 'formulaires/joindre_document'); + $erreurs = $verifier($id_vignette, 0, '', 'vignette'); } + return $erreurs; } -function formulaires_illustrer_document_traiter_dist($id_document){ - $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document)); - $res = array('editable'=>true); - if (_request('supprimer')){ - $supprimer_document = charger_fonction('supprimer_document','action'); - if ($id_vignette AND $supprimer_document($id_vignette)) +function formulaires_illustrer_document_traiter_dist($id_document) { + $id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document=' . intval($id_document)); + $res = array('editable' => true); + if (_request('supprimer')) { + $supprimer_document = charger_fonction('supprimer_document', 'action'); + if ($id_vignette AND $supprimer_document($id_vignette)) { $res['message_ok'] = _T('medias:vignette_supprimee'); - else - $res['message_erreur'] = _T('medias:erreur_suppression_vignette'); - } - else { + } else { + $res['message_erreur'] = _T('medias:erreur_suppression_vignette'); + } + } else { $ajouter_documents = charger_fonction('ajouter_documents', 'action'); include_spip('inc/joindre_document'); $files = joindre_trouver_fichier_envoye(); - $ajoute = $ajouter_documents($id_vignette,$files,'',0,'vignette'); + $ajoute = $ajouter_documents($id_vignette, $files, '', 0, 'vignette'); if (is_numeric(reset($ajoute)) - AND $id_vignette = reset($ajoute)){ + AND $id_vignette = reset($ajoute) + ) { include_spip('action/editer_document'); - document_modifier($id_document,array("id_vignette" => $id_vignette,'mode'=>'document')); + document_modifier($id_document, array("id_vignette" => $id_vignette, 'mode' => 'document')); $res['message_ok'] = _T('medias:document_installe_succes'); - } - else + } else { $res['message_erreur'] = reset($ajoute); + } } // todo : diff --git a/formulaires/joindre_document.php b/formulaires/joindre_document.php index c10d76a62154413666aa76d721ff13d05676f96f..7761223b28013efe027af07926b1c54af7258e07 100644 --- a/formulaires/joindre_document.php +++ b/formulaires/joindre_document.php @@ -15,74 +15,90 @@ * * @package SPIP\Medias\Formulaires */ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Déterminer le mode d'upload si la valeur au chargement du formulaire est "auto" - * + * * @param string $mode - * Le mode passé au formulaire + * Le mode passé au formulaire * @param int|string $id_document - * L'identifiant numérique du document à remplacer ou "new" par défaut + * L'identifiant numérique du document à remplacer ou "new" par défaut * @param string $objet - * Le type d'objet sur lequel ajouter le document + * Le type d'objet sur lequel ajouter le document * @return string $mode - * Le mode définitif + * Le mode définitif */ -function joindre_determiner_mode($mode, $id_document, $objet){ - if ($mode=='auto'){ - if (intval($id_document)) - $mode = sql_getfetsel('mode','spip_documents','id_document='.intval($id_document)); - if (!in_array($mode,array('choix','document','image'))){ - $mode='choix'; - if ($objet AND !in_array(table_objet_sql($objet),explode(',',$GLOBALS['meta']["documents_objets"]))) +function joindre_determiner_mode($mode, $id_document, $objet) { + if ($mode == 'auto') { + if (intval($id_document)) { + $mode = sql_getfetsel('mode', 'spip_documents', 'id_document=' . intval($id_document)); + } + if (!in_array($mode, array('choix', 'document', 'image'))) { + $mode = 'choix'; + if ($objet AND !in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']["documents_objets"]))) { $mode = 'image'; + } } } + return $mode; } /** * Chargement du formulaire - * + * * @param int|string $id_document - * L'identidiant numérique du document s'il est à remplacer, sinon "new" + * L'identidiant numérique du document s'il est à remplacer, sinon "new" * @param int $id_objet - * L'identifiant numérique de l'objet sur lequel on ajoute le document + * L'identifiant numérique de l'objet sur lequel on ajoute le document * @param string $objet - * Le type de l'objet sur lequel on ajoute le document + * Le type de l'objet sur lequel on ajoute le document * @param string $mode - * Le mode du document (auto,choix,document,image,vignette...), par défaut auto + * Le mode du document (auto,choix,document,image,vignette...), par défaut auto * @param string $galerie - * Passer optionnellement une galerie jointe au form, plus utilise nativement, - * on prefere la mise a jour apres upload par ajaxReload('documents') + * Passer optionnellement une galerie jointe au form, plus utilise nativement, + * on prefere la mise a jour apres upload par ajaxReload('documents') * @param bool|string $proposer_media - * Doit on afficher la médiathèque ? par défaut oui - * Valeurs possibles si string : false,'non','no'. - * @param bool|string $proposer_ftp - * Doit on afficher le ftp ? par défaut oui - * Valeurs possibles si string : false,'non','no'. + * Doit on afficher la médiathèque ? par défaut oui + * Valeurs possibles si string : false,'non','no'. + * @param bool|string $proposer_ftp + * Doit on afficher le ftp ? par défaut oui + * Valeurs possibles si string : false,'non','no'. * @return array $valeurs - * Les valeurs chargées dans le formulaire + * Les valeurs chargées dans le formulaire */ -function formulaires_joindre_document_charger_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true){ +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); - + $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['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; - + 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'] @@ -90,33 +106,34 @@ function formulaires_joindre_document_charger_dist($id_document = 'new', $id_obj AND ($mode != 'image') AND ($mode != 'vignette') # 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'] - ) { + ) { 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>"; + 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){ + + 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){ + if ($objet AND $id_objet) { $valeurs['id_objet'] = $id_objet; $valeurs['objet'] = $objet; $valeurs['refdoc_joindre'] = ''; - if ($valeurs['editable']){ + if ($valeurs['editable']) { include_spip('inc/autoriser'); - $valeurs['editable'] = autoriser('joindredocument',$objet,$id_objet)?' ':''; + $valeurs['editable'] = autoriser('joindredocument', $objet, $id_objet) ? ' ' : ''; } } @@ -125,56 +142,65 @@ function formulaires_joindre_document_charger_dist($id_document = 'new', $id_obj /** * Vérification du formulaire - * + * * @param int|string $id_document - * L'identidiant numérique du document s'il est à remplacer, sinon "new" + * L'identidiant numérique du document s'il est à remplacer, sinon "new" * @param int $id_objet - * L'identifiant numérique de l'objet sur lequel on ajoute le document + * L'identifiant numérique de l'objet sur lequel on ajoute le document * @param string $objet - * Le type de l'objet sur lequel on ajoute le document + * Le type de l'objet sur lequel on ajoute le document * @param string $mode - * Le mode du document (auto,choix,document,image,vignette...), par défaut auto + * Le mode du document (auto,choix,document,image,vignette...), par défaut auto * @param string $galerie - * Passer optionnellement une galerie jointe au form, plus utilise nativement, - * on prefere la mise a jour apres upload par ajaxReload('documents') + * Passer optionnellement une galerie jointe au form, plus utilise nativement, + * on prefere la mise a jour apres upload par ajaxReload('documents') * @param bool|string $proposer_media - * Doit on afficher la médiathèque ? par défaut oui - * Valeurs possibles si string : false,'non','no'. - * @param bool|string $proposer_ftp - * Doit on afficher le ftp ? par défaut oui - * Valeurs possibles si string : false,'non','no'. + * Doit on afficher la médiathèque ? par défaut oui + * Valeurs possibles si string : false,'non','no'. + * @param bool|string $proposer_ftp + * Doit on afficher le ftp ? par défaut oui + * Valeurs possibles si string : false,'non','no'. * @return array $erreurs - * Les erreurs éventuelles dans un tableau + * Les erreurs éventuelles dans un tableau */ -function formulaires_joindre_document_verifier_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true){ +function formulaires_joindre_document_verifier_dist( + $id_document = 'new', + $id_objet = 0, + $objet = '', + $mode = 'auto', + $galerie = false, + $proposer_media = true, + $proposer_ftp = true +) { include_spip('inc/joindre_document'); - + $erreurs = array(); // on joint un document deja dans le site - if (_request('joindre_mediatheque')){ - $refdoc_joindre = intval(preg_replace(',^(doc|document|img),','',_request('refdoc_joindre'))); - if (!sql_getfetsel('id_document','spip_documents','id_document='.intval($refdoc_joindre))) + if (_request('joindre_mediatheque')) { + $refdoc_joindre = intval(preg_replace(',^(doc|document|img),', '', _request('refdoc_joindre'))); + if (!sql_getfetsel('id_document', 'spip_documents', 'id_document=' . intval($refdoc_joindre))) { $erreurs['message_erreur'] = _T('medias:erreur_aucun_document'); - } - // sinon c'est un upload + } + } // sinon c'est un upload else { $files = joindre_trouver_fichier_envoye(); - if (is_string($files)) + if (is_string($files)) { $erreurs['message_erreur'] = $files; - elseif(is_array($files)){ + } elseif (is_array($files)) { // erreur si on a pas trouve de fichier - if (!count($files)) + if (!count($files)) { $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier'); - - else{ + } else { // regarder si on a eu une erreur sur l'upload d'un fichier - foreach($files as $file){ + foreach ($files as $file) { if (isset($file['error']) - AND $test = joindre_upload_error($file['error'])){ - if (is_string($test)) - $erreurs['message_erreur'] = $test; - else - $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier'); + AND $test = joindre_upload_error($file['error']) + ) { + if (is_string($test)) { + $erreurs['message_erreur'] = $test; + } else { + $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier'); + } } } @@ -182,11 +208,13 @@ function formulaires_joindre_document_verifier_dist($id_document = 'new', $id_ob // regarder si il faut lister le contenu du zip et le presenter if (!count($erreurs) AND !_request('joindre_zip') - AND $contenu_zip = joindre_verifier_zip($files)){ - list($fichiers,$erreurs,$tmp_zip) = $contenu_zip; + AND $contenu_zip = joindre_verifier_zip($files) + ) { + list($fichiers, $erreurs, $tmp_zip) = $contenu_zip; if ($fichiers) { $erreurs['message_erreur'] = ''; - $erreurs['lister_contenu_archive'] = recuperer_fond("formulaires/inc-lister_archive_jointe",array('chemin_zip'=>$tmp_zip,'liste_fichiers_zip'=>$fichiers,'erreurs_fichier_zip'=>$erreurs)); + $erreurs['lister_contenu_archive'] = recuperer_fond("formulaires/inc-lister_archive_jointe", + array('chemin_zip' => $tmp_zip, 'liste_fichiers_zip' => $fichiers, 'erreurs_fichier_zip' => $erreurs)); } else { $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier'); } @@ -194,120 +222,142 @@ function formulaires_joindre_document_verifier_dist($id_document = 'new', $id_ob } } - if (count($erreurs) AND defined('_tmp_dir')) + if (count($erreurs) AND defined('_tmp_dir')) { effacer_repertoire_temporaire(_tmp_dir); + } } - + return $erreurs; } /** * Traitement du formulaire - * + * * @param int|string $id_document - * L'identidiant numérique du document s'il est à remplacer, sinon "new" + * L'identidiant numérique du document s'il est à remplacer, sinon "new" * @param int $id_objet - * L'identifiant numérique de l'objet sur lequel on ajoute le document + * L'identifiant numérique de l'objet sur lequel on ajoute le document * @param string $objet - * Le type de l'objet sur lequel on ajoute le document + * Le type de l'objet sur lequel on ajoute le document * @param string $mode - * Le mode du document (auto,choix,document,image,vignette...), par défaut auto + * Le mode du document (auto,choix,document,image,vignette...), par défaut auto * @param string $galerie - * Passer optionnellement une galerie jointe au form, plus utilise nativement, - * on prefere la mise a jour apres upload par ajaxReload('documents') + * Passer optionnellement une galerie jointe au form, plus utilise nativement, + * on prefere la mise a jour apres upload par ajaxReload('documents') * @param bool|string $proposer_media - * Doit on afficher la médiathèque ? par défaut oui - * Valeurs possibles si string : false,'non','no'. - * @param bool|string $proposer_ftp - * Doit on afficher le ftp ? par défaut oui - * Valeurs possibles si string : false,'non','no'. + * Doit on afficher la médiathèque ? par défaut oui + * Valeurs possibles si string : false,'non','no'. + * @param bool|string $proposer_ftp + * Doit on afficher le ftp ? par défaut oui + * Valeurs possibles si string : false,'non','no'. * @return array $res - * Le tableau renvoyé par les CVT avec le message et editable + * Le tableau renvoyé par les CVT avec le message et editable */ -function formulaires_joindre_document_traiter_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true){ - $res = array('editable'=>true); +function formulaires_joindre_document_traiter_dist( + $id_document = 'new', + $id_objet = 0, + $objet = '', + $mode = 'auto', + $galerie = false, + $proposer_media = true, + $proposer_ftp = true +) { + $res = array('editable' => true); $ancre = ''; // on joint un document deja dans le site - if (_request('joindre_mediatheque')){ + if (_request('joindre_mediatheque')) { $refdoc_joindre = _request('refdoc_joindre'); - $refdoc_joindre = strtr($refdoc_joindre,";,"," "); - $refdoc_joindre = preg_replace(',\b(doc|document|img),','',$refdoc_joindre); + $refdoc_joindre = strtr($refdoc_joindre, ";,", " "); + $refdoc_joindre = preg_replace(',\b(doc|document|img),', '', $refdoc_joindre); // expliciter les intervales xxx-yyy - while(preg_match(",\b(\d+)-(\d+)\b,",$refdoc_joindre,$m)) - $refdoc_joindre = str_replace($m[0],implode(" ",range($m[1],$m[2])),$refdoc_joindre); - $refdoc_joindre = explode(" ",$refdoc_joindre); + while (preg_match(",\b(\d+)-(\d+)\b,", $refdoc_joindre, $m)) { + $refdoc_joindre = str_replace($m[0], implode(" ", range($m[1], $m[2])), $refdoc_joindre); + } + $refdoc_joindre = explode(" ", $refdoc_joindre); include_spip('action/editer_document'); - foreach($refdoc_joindre as $j){ - if ($j = intval(preg_replace(',^(doc|document|img),','',$j))){ + foreach ($refdoc_joindre as $j) { + if ($j = intval(preg_replace(',^(doc|document|img),', '', $j))) { // lier le parent en plus $champs = array('ajout_parents' => array("$objet|$id_objet")); - document_modifier($j,$champs); - if (!$ancre) + document_modifier($j, $champs); + if (!$ancre) { $ancre = $j; + } $sel[] = $j; $res['message_ok'] = _T('medias:document_attache_succes'); } } - if ($sel) - $res['message_ok'] = singulier_ou_pluriel(count($sel),'medias:document_attache_succes','medias:nb_documents_attache_succes'); - set_request('refdoc_joindre',''); // vider la saisie - } - // sinon c'est un upload + if ($sel) { + $res['message_ok'] = singulier_ou_pluriel(count($sel), 'medias:document_attache_succes', + 'medias:nb_documents_attache_succes'); + } + set_request('refdoc_joindre', ''); // vider la saisie + } // sinon c'est un upload else { $ajouter_documents = charger_fonction('ajouter_documents', 'action'); - $mode = joindre_determiner_mode($mode,$id_document,$objet); + $mode = joindre_determiner_mode($mode, $id_document, $objet); include_spip('inc/joindre_document'); $files = joindre_trouver_fichier_envoye(); - $nouveaux_doc = $ajouter_documents($id_document,$files,$objet,$id_objet,$mode); + $nouveaux_doc = $ajouter_documents($id_document, $files, $objet, $id_objet, $mode); - if (defined('_tmp_zip')) + if (defined('_tmp_zip')) { unlink(_tmp_zip); - if (defined('_tmp_dir')) + } + if (defined('_tmp_dir')) { effacer_repertoire_temporaire(_tmp_dir); + } // checker les erreurs eventuelles $messages_erreur = array(); $nb_docs = 0; $sel = array(); foreach ($nouveaux_doc as $doc) { - if (!is_numeric($doc)) + if (!is_numeric($doc)) { $messages_erreur[] = $doc; - // cas qui devrait etre traite en amont - elseif(!$doc) - $messages_erreur[] = _T('medias:erreur_insertion_document_base',array('fichier'=>'<em>???</em>')); - else{ - if (!$ancre) + } // cas qui devrait etre traite en amont + elseif (!$doc) { + $messages_erreur[] = _T('medias:erreur_insertion_document_base', array('fichier' => '<em>???</em>')); + } else { + if (!$ancre) { $ancre = $doc; + } $sel[] = $doc; } } - if (count($messages_erreur)) - $res['message_erreur'] = implode('<br />',$messages_erreur); - if ($sel) - $res['message_ok'] = singulier_ou_pluriel(count($sel),'medias:document_installe_succes','medias:nb_documents_installe_succes'); - if ($ancre) + if (count($messages_erreur)) { + $res['message_erreur'] = implode('<br />', $messages_erreur); + } + if ($sel) { + $res['message_ok'] = singulier_ou_pluriel(count($sel), 'medias:document_installe_succes', + 'medias:nb_documents_installe_succes'); + } + if ($ancre) { $res['redirect'] = "#doc$ancre"; + } } - if (count($sel) OR isset($res['message_ok'])){ + if (count($sel) OR isset($res['message_ok'])) { $callback = ""; - if ($ancre) + if ($ancre) { $callback .= "jQuery('#doc$ancre a.editbox').eq(0).focus();"; - if (count($sel)){ + } + if (count($sel)) { // passer les ids document selectionnes aux pipelines $res['ids'] = $sel; - $sel = "#doc".implode(",#doc",$sel); + $sel = "#doc" . implode(",#doc", $sel); $callback .= "jQuery('$sel').animateAppend();"; } $js = "if (window.jQuery) jQuery(function(){ajaxReload('documents',{callback:function(){ $callback }});});"; $js = "<script type='text/javascript'>$js</script>"; - if (isset($res['message_erreur'])) - $res['message_erreur'].= $js; - else - $res['message_ok'] .= $js; + if (isset($res['message_erreur'])) { + $res['message_erreur'] .= $js; + } else { + $res['message_ok'] .= $js; + } } + return $res; } @@ -315,63 +365,67 @@ function formulaires_joindre_document_traiter_dist($id_document = 'new', $id_obj * Retourner le contenu du select HTML d'utilisation de fichiers envoyes par le serveur * * @param string $dir - * Le répertoire de recherche des documents + * Le répertoire de recherche des documents * @param string $mode - * Le mode d'ajout de document + * Le mode d'ajout de document * @return string $texte - * Le contenu HTML du selecteur de documents + * Le contenu HTML du selecteur de documents */ function joindre_options_upload_ftp($dir, $mode = 'document') { $fichiers = preg_files($dir); $exts = $dirs = $texte_upload = array(); // en mode "charger une image", ne proposer que les inclus - $inclus = ($mode == 'image' OR $mode =='vignette') + $inclus = ($mode == 'image' OR $mode == 'vignette') ? " AND inclus='image'" : ''; foreach ($fichiers as $f) { - $f = preg_replace(",^$dir,",'',$f); + $f = preg_replace(",^$dir,", '', $f); if (preg_match(",\.([^.]+)$,", $f, $match)) { $ext = strtolower($match[1]); if (!isset($exts[$ext])) { include_spip('action/ajouter_documents'); $ext = corriger_extension($ext); - if (sql_fetsel('extension', 'spip_types_documents', $a = "extension='$ext'" . $inclus)) + if (sql_fetsel('extension', 'spip_types_documents', $a = "extension='$ext'" . $inclus)) { $exts[$ext] = 'oui'; - else $exts[$ext] = 'non'; + } else { + $exts[$ext] = 'non'; + } } - $k = 2*substr_count($f,'/'); + $k = 2*substr_count($f, '/'); $n = strrpos($f, "/"); - if ($n === false) + if ($n === false) { $lefichier = $f; - else { + } else { $lefichier = substr($f, $n+1, strlen($f)); $ledossier = substr($f, 0, $n); if (!in_array($ledossier, $dirs)) { $texte_upload[] = "\n<option value=\"$ledossier\">" - .str_repeat(" ",$k) - ._T('medias:tout_dossier_upload', array('upload' => $ledossier)) - ."</option>"; - $dirs[]= $ledossier; + . str_repeat(" ", $k) + . _T('medias:tout_dossier_upload', array('upload' => $ledossier)) + . "</option>"; + $dirs[] = $ledossier; } } - if ($exts[$ext] == 'oui') + if ($exts[$ext] == 'oui') { $texte_upload[] = "\n<option value=\"$f\">" - .str_repeat(" ",$k+2) - .$lefichier - ."</option>"; + . str_repeat(" ", $k+2) + . $lefichier + . "</option>"; + } } } $texte = join('', $texte_upload); - if (count($texte_upload)>1) { + if (count($texte_upload) > 1) { $texte = "\n<option value=\"/\" style='font-weight: bold;'>" - ._T('medias:info_installer_tous_documents') - ."</option>" . $texte; + . _T('medias:info_installer_tous_documents') + . "</option>" . $texte; } + return $texte; } @@ -380,45 +434,52 @@ function joindre_options_upload_ftp($dir, $mode = 'document') { * Lister les fichiers contenus dans un zip * * @param array $files - * La liste des fichiers + * La liste des fichiers * @return string $res - * La liste HTML des fichiers <li>...</li> + * La liste HTML des fichiers <li>...</li> */ function joindre_liste_contenu_tailles_archive($files) { include_spip('inc/charsets'); # pour le nom de fichier $res = ''; - if (is_array($files)) + if (is_array($files)) { foreach ($files as $nom => $file) { $nom = translitteration($nom); $date = date_interface(date("Y-m-d H:i:s", $file['mtime'])); - + $taille = taille_en_octets($file['size']); - $res .= "<li title=\"".attribut_html($title)."\"><b>$nom</b> – $taille<br /> $date</li>\n"; + $res .= "<li title=\"" . attribut_html($title) . "\"><b>$nom</b> – $taille<br /> $date</li>\n"; } - + } + return $res; } /** * Lister les erreurs dans une archive jointe * Utilisé formulaires/inc-lister_archive_jointe.html - * + * * @param array $erreurs - * La liste des erreurs + * La liste des erreurs * @return string $res - * Le code HTML des erreurs + * Le code HTML des erreurs */ -function joindre_liste_erreurs_to_li($erreurs){ - if (count($erreurs)==1) - return "<p>".reset($erreurs)."</p>"; - - $res = implode("</li><li>",$erreurs); - if (strlen($res)) $res = "<li>$res</li></ul>"; - if (count($erreurs)>4) - $res = "<p style='cursor:pointer;' onclick='jQuery(this).siblings(\"ul\").toggle();return false;'>"._T("medias:erreurs_voir",array('nb'=>count($erreurs)))."</p><ul class=\"spip none-js\">".$res."</ul>"; - else +function joindre_liste_erreurs_to_li($erreurs) { + if (count($erreurs) == 1) { + return "<p>" . reset($erreurs) . "</p>"; + } + + $res = implode("</li><li>", $erreurs); + if (strlen($res)) { + $res = "<li>$res</li></ul>"; + } + if (count($erreurs) > 4) { + $res = "<p style='cursor:pointer;' onclick='jQuery(this).siblings(\"ul\").toggle();return false;'>" . _T("medias:erreurs_voir", + array('nb' => count($erreurs))) . "</p><ul class=\"spip none-js\">" . $res . "</ul>"; + } else { $res = "<ul class=\"spip\">$res</ul>"; + } + return $res; } diff --git a/inc/choisir_mode_document.php b/inc/choisir_mode_document.php index c70eb06a43121ed349fe7d9b767632ccb9b99df5..52880e6e332b2bfa78ff2cfd16cf9a20b5a4797f 100644 --- a/inc/choisir_mode_document.php +++ b/inc/choisir_mode_document.php @@ -15,7 +15,9 @@ * * @package SPIP\Medias\Modes */ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Choisir le mode du document : image/document @@ -29,16 +31,18 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @return string * Mode du document */ -function inc_choisir_mode_document($infos, $type_inclus_image, $objet){ - +function inc_choisir_mode_document($infos, $type_inclus_image, $objet) { + // si ce n'est pas une image, c'est forcement un document - if (!$infos['type_image'] OR !$type_inclus_image) + if (!$infos['type_image'] OR !$type_inclus_image) { return 'document'; + } // si on a pas le droit d'ajouter de document a l'objet, c'est donc un mode image - if ($objet AND isset($GLOBALS['meta']["documents_$objet"]) AND ($GLOBALS['meta']["documents_$objet"]=='non')) + if ($objet AND isset($GLOBALS['meta']["documents_$objet"]) AND ($GLOBALS['meta']["documents_$objet"] == 'non')) { return 'image'; - + } + // _INTERFACE_DOCUMENTS // en fonction de la taille de l'image @@ -48,15 +52,18 @@ function inc_choisir_mode_document($infos, $type_inclus_image, $objet){ // define('_LARGEUR_MODE_IMAGE', 450); // pour beneficier de cette detection auto @define('_LARGEUR_MODE_IMAGE', 0); - - if (!_LARGEUR_MODE_IMAGE) + + if (!_LARGEUR_MODE_IMAGE) { return 'image'; - + } + if ($infos['largeur'] > 0 - AND $infos['largeur'] < _LARGEUR_MODE_IMAGE) + AND $infos['largeur'] < _LARGEUR_MODE_IMAGE + ) { return 'image'; - else + } else { return 'document'; + } } ?> diff --git a/inc/documenter_objet.php b/inc/documenter_objet.php index 05e9f7f21d715b526ab18ecd64c4d01866c9709a..aacb67285448f98b806085c5e0f711d63caabfe1 100644 --- a/inc/documenter_objet.php +++ b/inc/documenter_objet.php @@ -14,34 +14,37 @@ * Calcul du portfolio / liste de documents de l'espace privé * * @package SPIP\Medias\Fonctions -**/ + **/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Retourne le code HTML du portfolio, liste des documents et formulaire d'ajout de documents * * @note * Marque les documents vus dans les textes de l'objet avant le calcul ! - * + * * @uses inc_marquer_doublons_doc_dist() - * + * * @param int $id Identifiant de l'objet * @param string $type Type d'objet * @return string code HTML -**/ + **/ function inc_documenter_objet_dist($id, $type) { $serveur = ''; // avant de documenter un objet, on verifie que ses documents vus sont bien lies ! $spip_table_objet = table_objet_sql($type); $table_objet = table_objet($type); - $id_table_objet = id_table_objet($type,$serveur); + $id_table_objet = id_table_objet($type, $serveur); $champs = sql_fetsel('*', $spip_table_objet, addslashes($id_table_objet) . "=" . intval($id)); - $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc'); - $marquer_doublons_doc($champs,$id,$type,$id_table_objet,$table_objet,$spip_table_objet, '', $serveur); + $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc'); + $marquer_doublons_doc($champs, $id, $type, $id_table_objet, $table_objet, $spip_table_objet, '', $serveur); + + $contexte = array('objet' => $type, 'id_objet' => $id); - $contexte = array('objet'=>$type,'id_objet'=>$id); return recuperer_fond('prive/objets/contenu/portfolio_document', array_merge($_GET, $contexte)); } diff --git a/inc/documents.php b/inc/documents.php index 673b583bcbdd5249eac29c3f8494bab3fcbde1fc..cecb83739e3ebffaf17f45082fa4484d017ff054 100644 --- a/inc/documents.php +++ b/inc/documents.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} // inclure les fonctions bases du core include_once _DIR_RESTREINT . "inc/documents.php"; @@ -19,7 +21,9 @@ include_spip('inc/actions'); // *action_auteur et determine_upload // Constante indiquant le charset probable des documents non utf-8 joints -if (!defined('CHARSET_JOINT')) define('CHARSET_JOINT', 'iso-8859-1'); +if (!defined('CHARSET_JOINT')) { + define('CHARSET_JOINT', 'iso-8859-1'); +} // Filtre pour #FICHIER permettant d'incruster le contenu d'un document // Si 2e arg fourni, conversion dans le charset du site si possible @@ -28,15 +32,17 @@ if (!defined('CHARSET_JOINT')) define('CHARSET_JOINT', 'iso-8859-1'); function contenu_document($arg, $charset = '') { include_spip('inc/distant'); if (is_numeric($arg)) { - $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=".intval($arg)); - if (!$r) return ''; + $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($arg)); + if (!$r) { + return ''; + } $f = $r['fichier']; - $f = ($r['distant'] =='oui') ? _DIR_RACINE . copie_locale($f) : get_spip_doc($f); - } - else { - if (!@file_exists($f=$arg)){ - if (!$f = copie_locale($f)) + $f = ($r['distant'] == 'oui') ? _DIR_RACINE . copie_locale($f) : get_spip_doc($f); + } else { + if (!@file_exists($f = $arg)) { + if (!$f = copie_locale($f)) { return ''; + } $f = _DIR_RACINE . $f; } } @@ -47,9 +53,11 @@ function contenu_document($arg, $charset = '') { include_spip('inc/charset'); if ($charset !== 'auto') { $r = importer_charset($r, $charset); - } elseif ($GLOBALS['meta']['charset'] == 'utf-8' AND !is_utf8($r)) + } elseif ($GLOBALS['meta']['charset'] == 'utf-8' AND !is_utf8($r)) { $r = importer_charset($r, CHARSET_JOINT); + } } + return $r; } @@ -57,32 +65,39 @@ function contenu_document($arg, $charset = '') { function generer_url_document_dist($id_document, $args = '', $ancre = '') { include_spip('inc/autoriser'); - if (!autoriser('voir', 'document', $id_document)) return ''; + if (!autoriser('voir', 'document', $id_document)) { + return ''; + } - $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=".intval($id_document)); + $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($id_document)); - if (!$r) return ''; + if (!$r) { + return ''; + } $f = $r['fichier']; - if ($r['distant'] == 'oui') return $f; + if ($r['distant'] == 'oui') { + return $f; + } // Si droit de voir tous les docs, pas seulement celui-ci // il est inutilement couteux de rajouter une protection $r = (autoriser('voir', 'document')); - if (($r AND $r !== 'htaccess')) + if (($r AND $r !== 'htaccess')) { return get_spip_doc($f); + } include_spip('inc/securiser_action'); // cette action doit etre publique ! return generer_url_action('acceder_document', $args . ($args ? "&" : '') - . 'arg='.$id_document - . ($ancre ? "&ancre=$ancre" : '') - . '&cle=' . calculer_cle_action($id_document.','.$f) - . '&file=' . rawurlencode($f) - ,true,true); + . 'arg=' . $id_document + . ($ancre ? "&ancre=$ancre" : '') + . '&cle=' . calculer_cle_action($id_document . ',' . $f) + . '&file=' . rawurlencode($f) + , true, true); } // @@ -103,18 +118,18 @@ function vignette_automatique($img, $doc, $lien, $x = 0, $y = 0, $align = '', $c if (!$img) { if ($img = image_du_document($doc)) { if (!$x AND !$y) // eviter une double reduction + { $img = image_reduire($img); - } - else{ - $f = charger_fonction('vignette','inc'); + } + } else { + $f = charger_fonction('vignette', 'inc'); $img = $f($e, false); $size = @getimagesize($img); - $img = "<img src='$img' ".$size[3]." />"; + $img = "<img src='$img' " . $size[3] . " />"; } - } - else{ + } else { $size = @getimagesize($img); - $img = "<img src='$img' ".$size[3]." />"; + $img = "<img src='$img' " . $size[3] . " />"; } // on appelle image_reduire independamment de la presence ou non // des librairies graphiques @@ -124,15 +139,19 @@ function vignette_automatique($img, $doc, $lien, $x = 0, $y = 0, $align = '', $c } $img = inserer_attribut($img, 'alt', ''); $img = inserer_attribut($img, 'class', $class); - if ($align) $img = inserer_attribut($img, 'align', $align); + if ($align) { + $img = inserer_attribut($img, 'align', $align); + } - if (!$lien) return $img; + if (!$lien) { + return $img; + } $titre = supprimer_tags(typo($doc['titre'])); - $titre = " - " .taille_en_octets($doc['taille']) - . ($titre ? " - $titre" : ""); + $titre = " - " . taille_en_octets($doc['taille']) + . ($titre ? " - $titre" : ""); - $type = sql_fetsel('titre, mime_type','spip_types_documents', "extension = " . sql_quote($e)); + $type = sql_fetsel('titre, mime_type', 'spip_types_documents', "extension = " . sql_quote($e)); $mime = $type['mime_type']; $titre = attribut_html(couper($type['titre'] . $titre, 80)); @@ -148,17 +167,21 @@ function vignette_automatique($img, $doc, $lien, $x = 0, $y = 0, $align = '', $c function image_du_document($document) { if ($e = $document['extension'] - AND isset($GLOBALS['meta']['formats_graphiques']) - AND (strpos($GLOBALS['meta']['formats_graphiques'], $e) !== false) - AND (!test_espace_prive() OR $GLOBALS['meta']['creer_preview']=='oui') - AND $document['fichier']) { + AND isset($GLOBALS['meta']['formats_graphiques']) + AND (strpos($GLOBALS['meta']['formats_graphiques'], $e) !== false) + AND (!test_espace_prive() OR $GLOBALS['meta']['creer_preview'] == 'oui') + AND $document['fichier'] + ) { if ($document['distant'] == 'oui') { - $image = _DIR_RACINE.copie_locale($document['fichier']); - } - else + $image = _DIR_RACINE . copie_locale($document['fichier']); + } else { $image = get_spip_doc($document['fichier']); - if (@file_exists($image)) return $image; + } + if (@file_exists($image)) { + return $image; + } } + return ''; } @@ -179,8 +202,8 @@ function image_du_document($document) { * @return string * Code HTML permettant de gérer des documents */ -function afficher_documents_colonne($id, $type = "article", $script = NULL) { - return recuperer_fond('prive/objets/editer/colonne_document', array('objet'=>$type,'id_objet'=>$id)); +function afficher_documents_colonne($id, $type = "article", $script = null) { + return recuperer_fond('prive/objets/editer/colonne_document', array('objet' => $type, 'id_objet' => $id)); } @@ -188,27 +211,28 @@ function afficher_documents_colonne($id, $type = "article", $script = NULL) { * Affiche le code d'un raccourcis de document, tel que <doc123|left> * * Affiche un code de raccourcis de document, et l'insère - * dans le textarea principal de l'objet (champ 'texte') sur un double-clic + * dans le textarea principal de l'objet (champ 'texte') sur un double-clic * * @param string $doc - * Type de raccourcis : doc,img,emb... + * Type de raccourcis : doc,img,emb... * @param int $id - * Identifiant du document + * Identifiant du document * @param string $align - * Alignement du document : left,center,right - * + * Alignement du document : left,center,right + * * @return string - * Texte du raccourcis -**/ + * Texte du raccourcis + **/ function affiche_raccourci_doc($doc, $id, $align) { static $num = 0; $pipe = $onclick = ""; if ($align) { $pipe = "|$align"; - $onclick = "\nondblclick=\"barre_inserer('\\x3C$doc$id$pipe>', $('textarea[name=texte]')[0]);\"\ntitle=\"". str_replace('&', '&', entites_html(_T('medias:double_clic_inserer_doc')))."\""; + $onclick = "\nondblclick=\"barre_inserer('\\x3C$doc$id$pipe>', $('textarea[name=texte]')[0]);\"\ntitle=\"" . str_replace('&', + '&', entites_html(_T('medias:double_clic_inserer_doc'))) . "\""; } else { - $align='center'; + $align = 'center'; } return "\n<div style='text-align: $align'$onclick><$doc$id$pipe></div>\n"; diff --git a/inc/getdocument.php b/inc/getdocument.php index ef14bf00e4eae92c5d55ddbed1d0909519fac6df..d3cb665e58482d1cd83a414612f2f5b293fe4c63 100644 --- a/inc/getdocument.php +++ b/inc/getdocument.php @@ -15,41 +15,43 @@ * * Fichier obsolète, à supprimer. * Mais fonction utilisée encore dans medias_detecter_fond_par_defaut() - * + * * @package SPIP\Medias\Upload -**/ + **/ # # Fichier obsolete, a supprimer # -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} // inclure les fonctions bases du core include_once _DIR_RESTREINT . "inc/documents.php"; include_spip('inc/minipres'); - + /** * Traite l'erreur d'un upload trop gros - * + * * L'erreur est appelée depuis public.php et medias_detecter_fond_par_defaut * et affiche un minipres avec la taille limite de documents possibles * * @see minipres() -**/ + **/ function erreur_upload_trop_gros() { include_spip('inc/filtres'); $msg = "<p>" - .taille_en_octets($_SERVER["CONTENT_LENGTH"]) - .'<br />' - ._T('medias:upload_limit', - array('max' => ini_get('upload_max_filesize'))) - ."</p>"; + . taille_en_octets($_SERVER["CONTENT_LENGTH"]) + . '<br />' + . _T('medias:upload_limit', + array('max' => ini_get('upload_max_filesize'))) + . "</p>"; - echo minipres(_T('pass_erreur'),"<div class='upload_answer upload_error'>".$msg."</div>"); + echo minipres(_T('pass_erreur'), "<div class='upload_answer upload_error'>" . $msg . "</div>"); exit; } diff --git a/inc/joindre_document.php b/inc/joindre_document.php index 885ad7df48b099b36799a5c04ec01160306e93ed..dcc3d1af462faaf1b823491780002e873b01c598 100644 --- a/inc/joindre_document.php +++ b/inc/joindre_document.php @@ -10,73 +10,82 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * 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(){ +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)) + + if (count($files)) { return $files; - - if (_request('joindre_upload')){ + } + + if (_request('joindre_upload')) { $post = isset($_FILES) ? $_FILES : $GLOBALS['HTTP_POST_FILES']; $files = array(); - if (is_array($post)){ + 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; + 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; } - } + } 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)) + if (!count($files)) { return _T('medias:erreur_indiquez_un_fichier'); + } } + return $files; - } - elseif (_request('joindre_distant')){ + } elseif (_request('joindre_distant')) { $path = _request('url'); - if (!strlen($path) OR $path=='http://') + 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; // message d'erreur - else + if (!is_array($infos)) { + return $infos; + } // message d'erreur + else { return array( array( 'name' => basename($path), @@ -84,57 +93,63 @@ function joindre_trouver_fichier_envoye(){ 'distant' => true, ) ); - } - elseif (_request('joindre_ftp')){ + } + } elseif (_request('joindre_ftp')) { $path = _request('cheminftp'); - if (!$path || strstr($path, '..')) return _T('medias:erreur_indiquez_un_fichier'); - - include_spip('inc/documents'); + 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)) - // seul un fichier est demande - return array( - array ( - 'name' => basename($upload), + if ($path != '/' AND $path != './') { + $upload .= $path; + } + + if (!is_dir($upload)) // seul un fichier est demande + { + 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 ( + } else { + // on upload tout un repertoire + $files = array(); + foreach (preg_files($upload) as $fichier) { + $files[] = array( 'name' => basename($fichier), 'tmp_name' => $fichier ); - } - return $files; + } + + return $files; } - } - elseif (_request('joindre_zip') AND $path = _request('chemin_zip')){ + } elseif (_request('joindre_zip') AND $path = _request('chemin_zip')) { 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) + 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); - + 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( + if (_request('options_upload_zip') == 'upload' OR _request('options_deballe_zip_conserver')) { + $files[] = array( 'name' => basename($path), 'tmp_name' => $path, - ); - } + ); + } + + return $files; - return $files; - } return array(); @@ -147,25 +162,27 @@ function joindre_trouver_fichier_envoye(){ // pour les autres erreurs renvoie le message d'erreur function joindre_upload_error($error) { - if (!$error) return false; + if (!$error) { + return false; + } spip_log("Erreur upload $error -- cf. http://php.net/manual/fr/features.file-upload.errors.php"); switch ($error) { - + case 4: /* UPLOAD_ERR_NO_FILE */ return true; # on peut affiner les differents messages d'erreur case 1: /* UPLOAD_ERR_INI_SIZE */ $msg = _T('medias:upload_limit', - array('max' => ini_get('upload_max_filesize'))); + array('max' => ini_get('upload_max_filesize'))); break; case 2: /* UPLOAD_ERR_FORM_SIZE */ $msg = _T('medias:upload_limit', - array('max' => ini_get('upload_max_filesize'))); + array('max' => ini_get('upload_max_filesize'))); break; case 3: /* UPLOAD_ERR_PARTIAL */ $msg = _T('medias:upload_limit', - array('max' => ini_get('upload_max_filesize'))); + array('max' => ini_get('upload_max_filesize'))); break; case 6: /* UPLOAD_ERR_NO_TMP_DIR */ $msg = _T('medias:erreur_dossier_tmp_manquant'); @@ -174,15 +191,17 @@ function joindre_upload_error($error) { $msg = _T('medias:erreur_ecriture_fichier'); default: /* autre */ - if (!$msg) - $msg = _T('pass_erreur').' '. $error - . '<br />' . propre("[->http://php.net/manual/fr/features.file-upload.errors.php]"); + if (!$msg) { + $msg = _T('pass_erreur') . ' ' . $error + . '<br />' . propre("[->http://php.net/manual/fr/features.file-upload.errors.php]"); + } break; } - spip_log ("erreur upload $error"); + spip_log("erreur upload $error"); + return $msg; - + } /** @@ -192,41 +211,42 @@ function joindre_upload_error($error) { * @param array $files * @return string */ -function joindre_verifier_zip($files){ +function joindre_verifier_zip($files) { if (function_exists('gzopen') - AND (count($files) == 1) - AND !isset($files[0]['distant']) - AND - (preg_match('/\.zip$/i', $files[0]['name']) - OR (isset($files[0]['type']) AND $files[0]['type'] == 'application/zip')) - ){ - - // on pose le fichier dans le repertoire zip - // (nota : copier_document n'ecrase pas un fichier avec lui-meme - // ca autorise a boucler) - include_spip('inc/getdocument'); + AND (count($files) == 1) + AND !isset($files[0]['distant']) + AND + (preg_match('/\.zip$/i', $files[0]['name']) + OR (isset($files[0]['type']) AND $files[0]['type'] == 'application/zip')) + ) { + + // on pose le fichier dans le repertoire zip + // (nota : copier_document n'ecrase pas un fichier avec lui-meme + // ca autorise a boucler) + include_spip('inc/getdocument'); $desc = $files[0]; $zip = copier_document("zip", - $desc['name'], - $desc['tmp_name'] - ); - + $desc['name'], + $desc['tmp_name'] + ); + // Est-ce qu'on sait le lire ? include_spip('inc/pclzip'); if ($zip AND $archive = new PclZip($zip) - AND $contenu = joindre_decrire_contenu_zip($archive) - AND $tmp = sous_repertoire(_DIR_TMP,"zip") - AND rename($zip, $tmp = $tmp.basename($zip)) - ){ - $zip_to_clean = (isset($GLOBALS['visiteur_session']['zip_to_clean'])?unserialize($GLOBALS['visiteur_session']['zip_to_clean']):array()); + AND $contenu = joindre_decrire_contenu_zip($archive) + AND $tmp = sous_repertoire(_DIR_TMP, "zip") + AND rename($zip, $tmp = $tmp . basename($zip)) + ) { + $zip_to_clean = (isset($GLOBALS['visiteur_session']['zip_to_clean']) ? unserialize($GLOBALS['visiteur_session']['zip_to_clean']) : array()); $zip_to_clean[] = $tmp; - session_set('zip_to_clean',serialize($zip_to_clean)); - $contenu[] = $tmp; - return $contenu; - } + session_set('zip_to_clean', serialize($zip_to_clean)); + $contenu[] = $tmp; + + return $contenu; + } } - + // ce n'est pas un zip sur lequel il faut demander plus de precisions return false; } @@ -242,76 +262,89 @@ function joindre_verifier_zip($files){ function joindre_decrire_contenu_zip($zip) { include_spip('action/ajouter_documents'); // si pas possible de decompacter: installer comme fichier zip joint - if (!$list = $zip->listContent()) return false; + if (!$list = $zip->listContent()) { + return false; + } // Verifier si le contenu peut etre uploade (verif extension) $fichiers = array(); $erreurs = array(); foreach ($list as $file) { - if (accepte_fichier_upload($f = $file['stored_filename'])) + if (accepte_fichier_upload($f = $file['stored_filename'])) { $fichiers[$f] = $file; - else - // pas de message pour les dossiers et fichiers caches - if (substr($f,-1)!=='/' AND substr(basename($f),0,1)!=='.') - $erreurs[] = _T('medias:erreur_upload_type_interdit',array('nom'=>$f)); + } else // pas de message pour les dossiers et fichiers caches + { + if (substr($f, -1) !== '/' AND substr(basename($f), 0, 1) !== '.') { + $erreurs[] = _T('medias:erreur_upload_type_interdit', array('nom' => $f)); + } + } } // si aucun fichier uploadable : installer comme fichier zip joint - if (!count($fichiers)) + if (!count($fichiers)) { return false; + } ksort($fichiers); - return array($fichiers,$erreurs); -} + return array($fichiers, $erreurs); +} // http://code.spip.net/@joindre_deballes function joindre_deballer_lister_zip($path, $tmp_dir) { - include_spip('inc/pclzip'); + include_spip('inc/pclzip'); $archive = new PclZip($path); $archive->extract( PCLZIP_OPT_PATH, _tmp_dir, PCLZIP_CB_PRE_EXTRACT, 'callback_deballe_fichier' ); - if ($contenu = joindre_decrire_contenu_zip($archive)){ + if ($contenu = joindre_decrire_contenu_zip($archive)) { $files = array(); - $fichiers = reset($contenu); - foreach($fichiers as $fichier){ + $fichiers = reset($contenu); + foreach ($fichiers as $fichier) { $f = basename($fichier['filename']); - $files[] = array('tmp_name'=>$tmp_dir. $f,'name'=>$f,'titrer'=>_request('options_deballe_zip_titrer'),'mode'=>_request('options_deballe_zip_mode_document')?'document':null); + $files[] = array( + 'tmp_name' => $tmp_dir . $f, + 'name' => $f, + 'titrer' => _request('options_deballe_zip_titrer'), + 'mode' => _request('options_deballe_zip_mode_document') ? 'document' : null + ); } + return $files; } - return _T('avis_operation_impossible'); + + return _T('avis_operation_impossible'); } -if (!function_exists('fixer_extension_document')){ -/** - * Cherche dans la base le type-mime du tableau representant le document - * et corrige le nom du fichier ; retourne array(extension, nom corrige) - * s'il ne trouve pas, retourne '' et le nom inchange - * - * @param unknown_type $doc - * @return unknown - */ +if (!function_exists('fixer_extension_document')) { + /** + * Cherche dans la base le type-mime du tableau representant le document + * et corrige le nom du fichier ; retourne array(extension, nom corrige) + * s'il ne trouve pas, retourne '' et le nom inchange + * + * @param unknown_type $doc + * @return unknown + */ // http://code.spip.net/@fixer_extension_document -function fixer_extension_document($doc) { - $extension = ''; - $name = $doc['name']; - if (preg_match(',\.([^.]+)$,', $name, $r) - AND $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote(corriger_extension($r[1]))) - ) { - $extension = $t['extension']; - $name = preg_replace(',\.[^.]*$,', '', $doc['name']).'.'.$extension; - } - else if ($t = sql_fetsel("extension", "spip_types_documents", "mime_type=" . sql_quote($doc['type']))) { - $extension = $t['extension']; - $name = preg_replace(',\.[^.]*$,', '', $doc['name']).'.'.$extension; - } + function fixer_extension_document($doc) { + $extension = ''; + $name = $doc['name']; + if (preg_match(',\.([^.]+)$,', $name, $r) + AND $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote(corriger_extension($r[1]))) + ) { + $extension = $t['extension']; + $name = preg_replace(',\.[^.]*$,', '', $doc['name']) . '.' . $extension; + } else { + if ($t = sql_fetsel("extension", "spip_types_documents", "mime_type=" . sql_quote($doc['type']))) { + $extension = $t['extension']; + $name = preg_replace(',\.[^.]*$,', '', $doc['name']) . '.' . $extension; + } + } - return array($extension,$name); -} + return array($extension, $name); + } } // @@ -319,11 +352,13 @@ function fixer_extension_document($doc) { // // http://code.spip.net/@accepte_fichier_upload -function accepte_fichier_upload ($f) { +function accepte_fichier_upload($f) { if (!preg_match(",.*__MACOSX/,", $f) - AND !preg_match(",^\.,", basename($f))) { - include_spip('action/ajouter_documents'); + AND !preg_match(",^\.,", basename($f)) + ) { + include_spip('action/ajouter_documents'); $ext = corriger_extension((strtolower(substr(strrchr($f, "."), 1)))); + return sql_countsel('spip_types_documents', "extension=" . sql_quote($ext) . " AND upload='oui'"); } } @@ -335,6 +370,7 @@ function accepte_fichier_upload ($f) { function callback_deballe_fichier($p_event, &$p_header) { if (accepte_fichier_upload($p_header['filename'])) { $p_header['filename'] = _tmp_dir . basename($p_header['filename']); + return 1; } else { return 0; diff --git a/inc/marquer_doublons_doc.php b/inc/marquer_doublons_doc.php index e0bbe6363791979506ae9b02ba897aabebe71207..bdd1b69bc5a7aad47f4283230be5e4a2800218da 100644 --- a/inc/marquer_doublons_doc.php +++ b/inc/marquer_doublons_doc.php @@ -14,21 +14,23 @@ * Analyse des textes pour trouver et marquer comme vu les documents utilisés dedans * * @package SPIP\Medias\Fonctions -**/ + **/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} // la dist ne regarde que chapo et texte, on laisse comme ca, // mais ca permet d etendre a descriptif ou toto depuis d autres plugins $GLOBALS['medias_liste_champs'][] = 'texte'; $GLOBALS['medias_liste_champs'][] = 'chapo'; - + /** * Trouver les documents utilisés dans le texte d'un objet et enregistrer cette liaison comme vue. * * La liste des champs susceptibles de contenir des documents ou images est indiquée * par la globale `medias_liste_champs` (un tableau). - * + * * Le contenu de ces champs (du moins ceux qui existent pour l'objet demandé) est récupéré et analysé. * La présence d'un modèle de document dans ces contenus, tel que imgXX, docXX ou embXX * indique que le document est utilisé et doit être lié à l'objet, avec le champ `vu=oui` @@ -38,7 +40,7 @@ $GLOBALS['medias_liste_champs'][] = 'chapo'; * @note * La fonction pourrait avoir bien moins d'arguments : seuls $champs, $id, $type ou $objet, $desc, $serveur * sont nécessaires. On calcule $desc s'il est absent, et il contient toutes les infos… - * + * * @param array $champs * Couples [champ => valeur] connus de l'objet * @param int $id @@ -56,8 +58,17 @@ $GLOBALS['medias_liste_champs'][] = 'chapo'; * @param string $serveur * Serveur sql utilisé. * @return void|null -**/ -function inc_marquer_doublons_doc_dist($champs, $id, $type, $id_table_objet, $table_objet, $spip_table_objet, $desc = array(), $serveur = ''){ + **/ +function inc_marquer_doublons_doc_dist( + $champs, + $id, + $type, + $id_table_objet, + $table_objet, + $spip_table_objet, + $desc = array(), + $serveur = '' +) { // On conserve uniquement les champs qui modifient le calcul des doublons de documents // S'il n'il en a aucun, les doublons ne sont pas impactés, donc rien à faire d'autre.. @@ -65,7 +76,7 @@ function inc_marquer_doublons_doc_dist($champs, $id, $type, $id_table_objet, $ta return; } - if (!$desc){ + if (!$desc) { $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($table_objet, $serveur); } @@ -84,7 +95,7 @@ function inc_marquer_doublons_doc_dist($champs, $id, $type, $id_table_objet, $ta // Retrouver les textes des champs manquants if ($absents) { - $row = sql_fetsel($absents, $spip_table_objet, "$id_table_objet=".sql_quote($id)); + $row = sql_fetsel($absents, $spip_table_objet, "$id_table_objet=" . sql_quote($id)); if ($row) { $champs = array_merge($row, $champs); } @@ -104,8 +115,8 @@ function inc_marquer_doublons_doc_dist($champs, $id, $type, $id_table_objet, $ta // detecter les doublons dans ces textes traiter_modeles(implode(" ", $champs), array('documents' => $modeles), '', '', null, array( - 'objet' => $type, - 'id_objet' => $id, + 'objet' => $type, + 'id_objet' => $id, $id_table_objet => $id )); @@ -117,7 +128,7 @@ function inc_marquer_doublons_doc_dist($champs, $id, $type, $id_table_objet, $ta 'non' => array() ); - $liaisons = objet_trouver_liens(array('document'=>'*'), array($type => $id)); + $liaisons = objet_trouver_liens(array('document' => '*'), array($type => $id)); foreach ($liaisons as $l) { $bdd_documents_vus[$l['vu']][] = $l['id_document']; } diff --git a/inc/renseigner_document.php b/inc/renseigner_document.php index 9c9e4417732b4db0c3f4bdea3350d2bfa8baad89..a531b97b6a86fc2b3735100de603766139fce72e 100644 --- a/inc/renseigner_document.php +++ b/inc/renseigner_document.php @@ -14,23 +14,25 @@ * Fonctions pour compléter les informations connues d'un document * * @package SPIP\Medias\Renseigner -**/ + **/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} /** * Récuperer les infos distantes d'une URL, * et renseigner pour une insertion en base - * + * * Utilise une variable static car appellée plusieurs fois au cours du même hit * (vérification puis traitement) * * Un plugin peut avec le pipeline renseigner_document_distant renseigner * les informations fichier et mode avant l'analyse et traitement par ce plugin, * qui dans ce cas ne les fera pas. Exemple : OEmbed - * + * * @pipeline_appel renseigner_document_distant - * + * * @param string $source * URL du document * @return array|string @@ -42,23 +44,24 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * - mode : Mode d'inclusion * - fichier : Chemin local du fichier s'il a été recopié */ -function renseigner_source_distante($source){ +function renseigner_source_distante($source) { static $infos = array(); - if (isset($infos[$source])) + if (isset($infos[$source])) { return $infos[$source]; - + } + include_spip('inc/distant'); // on passe la source dans le pipeline, le premier plugin // qui est capable de renseigner complete // fichier et mode + tous les autres champs a son gout // ex : oembed - $a = pipeline('renseigner_document_distant',array('source'=>$source)); + $a = pipeline('renseigner_document_distant', array('source' => $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 (!isset($a['fichier']) OR !isset($a['mode'])) { if (!$a = recuperer_infos_distantes($a['source'])) { - return _T('medias:erreur_chemin_distant',array('nom'=>$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 @@ -74,18 +77,18 @@ function renseigner_source_distante($source){ /** * 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 $fichier + * Le fichier à examiner * @param string $ext * L'extension du fichier à examiner * @param bool $distant @@ -95,59 +98,63 @@ function renseigner_source_distante($source){ * - Si c'est une chaîne, 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, $distant = false){ +function renseigner_taille_dimension_image($fichier, $ext, $distant = false) { $infos = array( - 'largeur'=>0, - 'hauteur'=>0, - 'type_image'=>'', - 'taille'=>0 + '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))) { + OR !$infos['taille'] = @intval(filesize($fichier)) + ) { - if ($distant){ + if ($distant) { // on ne saura pas la taille unset($infos['taille']); // recuperer un debut de fichier 512ko semblent suffire $tmp = _DIR_TMP . md5($fichier); - $res = recuperer_url($fichier,array('file'=>$tmp,'taille_max'=>512*1024)); - if (!$res){ - spip_log ("Echec copie du fichier $fichier"); - return _T('medias:erreur_copie_fichier',array('nom'=> $fichier)); + $res = recuperer_url($fichier, array('file' => $tmp, 'taille_max' => 512*1024)); + if (!$res) { + spip_log("Echec copie du fichier $fichier"); + + return _T('medias:erreur_copie_fichier', array('nom' => $fichier)); } $fichier = $tmp; - } - else { - spip_log ("Echec copie du fichier $fichier"); - return _T('medias:erreur_copie_fichier',array('nom'=> $fichier)); + } else { + 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)){ + 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)){ + } 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)); + $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)) + $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; } diff --git a/inc/verifier_document_mode_image.php b/inc/verifier_document_mode_image.php index 3fbd60771fe3618d7da5e53087131d71093dd4dd..d5f1a615741239c9dd5771e07ea27e893c0e4590 100644 --- a/inc/verifier_document_mode_image.php +++ b/inc/verifier_document_mode_image.php @@ -9,17 +9,21 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} -function inc_verifier_document_mode_image_dist($infos){ +function inc_verifier_document_mode_image_dist($infos) { // Si on veut uploader une image, il faut qu'elle ait ete bien lue - if ($infos['inclus'] != 'image') - return _T('medias:erreur_format_fichier_image',array('nom'=> $infos['fichier'])); #SVG + if ($infos['inclus'] != 'image') { + return _T('medias:erreur_format_fichier_image', array('nom' => $infos['fichier'])); + } #SVG - if (isset($infos['largeur']) AND isset($infos['hauteur'])){ - if (!($infos['largeur'] OR $infos['hauteur'])) - return _T('medias:erreur_upload_vignette',array('nom'=>$infos['fichier'])); + if (isset($infos['largeur']) AND isset($infos['hauteur'])) { + if (!($infos['largeur'] OR $infos['hauteur'])) { + return _T('medias:erreur_upload_vignette', array('nom' => $infos['fichier'])); + } } return true; diff --git a/inc/verifier_document_mode_vignette.php b/inc/verifier_document_mode_vignette.php index 9ef1e93307497d3b852364b707943a5e9cb8654a..3b0996ec080505a4670e585713cebb39694b7cb8 100644 --- a/inc/verifier_document_mode_vignette.php +++ b/inc/verifier_document_mode_vignette.php @@ -9,17 +9,21 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} -function inc_verifier_document_mode_vignette_dist($infos){ +function inc_verifier_document_mode_vignette_dist($infos) { // Si on veut uploader une vignette, il faut qu'elle ait ete bien lue - if ($infos['inclus'] != 'image') - return _T('medias:erreur_format_fichier_image',array('nom'=> $infos['fichier'])); #SVG + if ($infos['inclus'] != 'image') { + return _T('medias:erreur_format_fichier_image', array('nom' => $infos['fichier'])); + } #SVG - if (isset($infos['largeur']) AND isset($infos['hauteur'])){ - if (!($infos['largeur'] OR $infos['hauteur'])) - return _T('medias:erreur_upload_vignette',array('nom'=>$infos['fichier'])); + if (isset($infos['largeur']) AND isset($infos['hauteur'])) { + if (!($infos['largeur'] OR $infos['hauteur'])) { + return _T('medias:erreur_upload_vignette', array('nom' => $infos['fichier'])); + } } return true; diff --git a/inc/vignette.php b/inc/vignette.php index 16bb1277e2fbc5e886fb6444810bc69209bb9df8..7f25e855dbea778b7a1591a7a0480fdf72857f25 100644 --- a/inc/vignette.php +++ b/inc/vignette.php @@ -13,13 +13,15 @@ * Gestion des vignettes de types de fichier * * @package SPIP\Medias\Vignette -**/ + **/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Vignette pour une extension de document - * + * * Recherche les fichiers d'icones au format png pour l'extension demandée. * On cherche prive/vignettes/ext.png dans le path. * @@ -38,23 +40,27 @@ if (!defined('_ECRIRE_INC_VERSION')) return; */ function inc_vignette_dist($ext, $size = true, $loop = true) { - if (!$ext) + if (!$ext) { $ext = 'txt'; + } // Chercher la vignette correspondant a ce type de document // dans les vignettes persos, ou dans les vignettes standard if ( - # installation dans un dossier /vignettes personnel, par exemple /squelettes/vignettes - !$v = find_in_path("prive/vignettes/".$ext.".png") - ) - if ($loop){ - $f = charger_fonction('vignette','inc'); - $v = $f('defaut', false, $loop=false); + # installation dans un dossier /vignettes personnel, par exemple /squelettes/vignettes + !$v = find_in_path("prive/vignettes/" . $ext . ".png") + ) { + if ($loop) { + $f = charger_fonction('vignette', 'inc'); + $v = $f('defaut', false, $loop = false); + } else { + $v = false; } - else - $v = false; # pas trouve l'icone de base + } # pas trouve l'icone de base - if (!$size) return $v; + if (!$size) { + return $v; + } $largeur = $hauteur = 0; if ($v AND $size = @getimagesize($v)) { diff --git a/medias_administrations.php b/medias_administrations.php index db8ee94428ee96a72034cb57707047a22f3951ee..d6929353edb34bcaced9852c3c86d043ea85ae10 100644 --- a/medias_administrations.php +++ b/medias_administrations.php @@ -10,115 +10,127 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * verifier et maj le statut des documents + * * @param bool $affiche * @return */ -function medias_check_statuts($affiche = false){ - $trouver_table = charger_fonction('trouver_table','base'); +function medias_check_statuts($affiche = false) { + $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table('documents'); # securite, si jamais on arrive ici avant un upgrade de base - if (!isset($desc['field']['statut'])) + if (!isset($desc['field']['statut'])) { return; + } // utiliser sql_allfetsel pour clore la requete avant la mise a jour en base sur chaque doc (sqlite) // iterer par groupe de 100 pour ne pas exploser sur les grosses bases - $docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100")); - while (count($docs)){ + $docs = array_map('reset', sql_allfetsel('id_document', 'spip_documents', "statut='0'", '', '', "0,100")); + while (count($docs)) { include_spip('action/editer_document'); - foreach($docs as $id_document) - // mettre a jour le statut si necessaire + foreach ($docs as $id_document) // mettre a jour le statut si necessaire + { instituer_document($id_document); - if ($affiche) echo " ."; - $docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100")); + } + if ($affiche) { + echo " ."; + } + $docs = array_map('reset', sql_allfetsel('id_document', 'spip_documents', "statut='0'", '', '', "0,100")); } } /** * Mise a jour de la BDD + * * @param string $nom_meta_base_version * @param string $version_cible */ -function medias_upgrade($nom_meta_base_version, $version_cible){ +function medias_upgrade($nom_meta_base_version, $version_cible) { // ne pas installer tant qu'on est pas a jour sur version base SPIP // cas typique d'un upgrade qui commence par suppression de connect.php // SPIP lance la maj des plugins lors de la connexion, alors que l'upgrade SPIP // a pas encore ete joue : ca casse cet upgrade quand on migre depuis un tres vieux SPIP if (isset($GLOBALS['meta']['version_installee']) - AND ($GLOBALS['spip_version_base'] != (str_replace(',','.',$GLOBALS['meta']['version_installee'])))) + AND ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee']))) + ) { return; + } - if (!isset($GLOBALS['meta'][$nom_meta_base_version])){ - $trouver_table = charger_fonction('trouver_table','base'); + if (!isset($GLOBALS['meta'][$nom_meta_base_version])) { + $trouver_table = charger_fonction('trouver_table', 'base'); if ($desc = $trouver_table('spip_documents') - AND !isset($desc['field']['statut'])) - ecrire_meta($nom_meta_base_version,'0.1.0'); + AND !isset($desc['field']['statut']) + ) { + ecrire_meta($nom_meta_base_version, '0.1.0'); + } } $maj = array(); $maj['create'] = array( - array('maj_tables',array('spip_documents','spip_documents_liens','spip_types_documents')), + array('maj_tables', array('spip_documents', 'spip_documents_liens', 'spip_types_documents')), array('creer_base_types_doc') ); $maj['0.2.0'] = array( - array('sql_alter',"TABLE spip_documents ADD statut varchar(10) DEFAULT '0' NOT NULL"), + array('sql_alter', "TABLE spip_documents ADD statut varchar(10) DEFAULT '0' NOT NULL"), ); $maj['0.3.0'] = array( - array('sql_alter',"TABLE spip_documents ADD date_publication datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"), + array('sql_alter', "TABLE spip_documents ADD date_publication datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"), ); $maj['0.4.0'] = array( // recalculer tous les statuts en tenant compte de la date de publi des articles... - array('medias_check_statuts',true), + array('medias_check_statuts', true), ); $maj['0.5.0'] = array( - array('sql_alter',"TABLE spip_documents ADD brise tinyint DEFAULT 0"), + array('sql_alter', "TABLE spip_documents ADD brise tinyint DEFAULT 0"), ); $maj['0.6.0'] = array( - array('sql_alter',"TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL"), - array('creer_base_types_doc','','media'), + array('sql_alter', "TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL"), + array('creer_base_types_doc', '', 'media'), ); $maj['0.7.0'] = array( - array('sql_alter',"TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL"), + array('sql_alter', "TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL"), ); $maj['0.10.0'] = array( - array('sql_alter',"TABLE spip_documents CHANGE fichier fichier TEXT NOT NULL DEFAULT ''"), + array('sql_alter', "TABLE spip_documents CHANGE fichier fichier TEXT NOT NULL DEFAULT ''"), ); $maj['0.11.0'] = array( - array('sql_alter',"TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL"), + array('sql_alter', "TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL"), ); $maj['0.14.0'] = array( array('medias_maj_meta_documents'), - array('creer_base_types_doc','','media'), + array('creer_base_types_doc', '', 'media'), ); $maj['0.15.0'] = array( - array('creer_base_types_doc','','media'), + array('creer_base_types_doc', '', 'media'), ); $maj['0.15.1'] = array( - array('sql_alter',"TABLE spip_documents CHANGE taille taille bigint"), + array('sql_alter', "TABLE spip_documents CHANGE taille taille bigint"), ); $maj['0.16.0'] = array( - array('creer_base_types_doc','','media'), + array('creer_base_types_doc', '', 'media'), ); $maj['1.0.0'] = array( // on cree le champ en defaut '?' pour reperer les nouveaux a peupler - array('sql_alter',"TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"), + array('sql_alter', "TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"), array('medias_peuple_media_document', 'media'), // puis on retablit le bon defaut - array('sql_alter',"TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"), + array('sql_alter', "TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"), ); $maj['1.0.1'] = array( // puis on retablit le bon defaut - array('sql_alter',"TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"), + array('sql_alter', "TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"), ); $maj['1.1.0'] = array( - array('sql_alter',"TABLE spip_documents_liens ADD INDEX id_objet (id_objet)"), - array('sql_alter',"TABLE spip_documents_liens ADD INDEX objet (objet)"), + array('sql_alter', "TABLE spip_documents_liens ADD INDEX id_objet (id_objet)"), + array('sql_alter', "TABLE spip_documents_liens ADD INDEX objet (objet)"), ); $maj['1.1.1'] = array( array('creer_base_types_doc'), @@ -126,7 +138,7 @@ function medias_upgrade($nom_meta_base_version, $version_cible){ // reparer les media sur les file suite a upgrade rate depuis SPIP 2.x $maj['1.2.0'] = array( // on remet en ? tous les media=file - array('sql_updateq',"spip_documents",array('media'=>'?'),"media='file'"), + array('sql_updateq', "spip_documents", array('media' => '?'), "media='file'"), // et on repeuple array('medias_peuple_media_document'), ); @@ -137,9 +149,9 @@ function medias_upgrade($nom_meta_base_version, $version_cible){ // ajout de mbtiles array('creer_base_types_doc'), // reparer les clauses DEFAULT manquantes de maniere reccurente sur cette table - array('sql_alter',"TABLE spip_documents CHANGE extension extension VARCHAR(10) DEFAULT '' NOT NULL"), - array('sql_alter',"TABLE spip_documents CHANGE credits credits varchar(255) DEFAULT '' NOT NULL"), - array('sql_alter',"TABLE spip_documents CHANGE statut statut varchar(10) DEFAULT '0' NOT NULL"), + array('sql_alter', "TABLE spip_documents CHANGE extension extension VARCHAR(10) DEFAULT '' NOT NULL"), + array('sql_alter', "TABLE spip_documents CHANGE credits credits varchar(255) DEFAULT '' NOT NULL"), + array('sql_alter', "TABLE spip_documents CHANGE statut statut varchar(10) DEFAULT '0' NOT NULL"), ); $maj['1.2.4'] = array( // ajout de tar @@ -163,23 +175,27 @@ function medias_upgrade($nom_meta_base_version, $version_cible){ /** * Maj des meta documents */ -function medias_maj_meta_documents(){ +function medias_maj_meta_documents() { $config = array(); - if (isset($GLOBALS['meta']['documents_article']) AND $GLOBALS['meta']['documents_article']!=='non') + if (isset($GLOBALS['meta']['documents_article']) AND $GLOBALS['meta']['documents_article'] !== 'non') { $config[] = 'spip_articles'; - if (isset($GLOBALS['meta']['documents_rubrique']) AND $GLOBALS['meta']['documents_rubrique']!=='non') + } + if (isset($GLOBALS['meta']['documents_rubrique']) AND $GLOBALS['meta']['documents_rubrique'] !== 'non') { $config[] = 'spip_rubriques'; - ecrire_meta('documents_objets',implode(',',$config)); + } + ecrire_meta('documents_objets', implode(',', $config)); } -function medias_peuple_media_document($champ_media = "media_defaut"){ - $res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?')); - while($row = sql_fetch($res)){ +function medias_peuple_media_document($champ_media = "media_defaut") { + $res = sql_select("DISTINCT extension", "spip_documents", "media=" . sql_quote('?')); + while ($row = sql_fetch($res)) { // attention ici c'est encore le champ media, car on le renomme juste apres - $media = sql_getfetsel($champ_media,'spip_types_documents','extension='.sql_quote($row['extension'])); - sql_updateq('spip_documents',array('media'=>$media),"media=".sql_quote('?').' AND extension='.sql_quote($row['extension'])); - if (time() >= _TIME_OUT) + $media = sql_getfetsel($champ_media, 'spip_types_documents', 'extension=' . sql_quote($row['extension'])); + sql_updateq('spip_documents', array('media' => $media), + "media=" . sql_quote('?') . ' AND extension=' . sql_quote($row['extension'])); + if (time() >= _TIME_OUT) { return; + } } } diff --git a/medias_autoriser.php b/medias_autoriser.php index 00fec890b011e9a98c7ba4364a97d7173e3c1673..e0873295a4ac3c70991b6f8a400d4f68f82a40dc 100644 --- a/medias_autoriser.php +++ b/medias_autoriser.php @@ -14,26 +14,29 @@ * Définit les autorisations du plugin Médias * * @package SPIP\Medias\Autorisations -**/ + **/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Fonction d'appel pour le pipeline + * * @pipeline autoriser */ -function medias_autoriser(){} +function medias_autoriser() { } /** * Autorisation d'administrer la médiathèque * * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $opt Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon -**/ + **/ function autoriser_mediatheque_administrer_dist($faire, $type, $id, $qui, $opt) { return $qui['statut'] == '0minirezo'; } @@ -42,88 +45,94 @@ function autoriser_mediatheque_administrer_dist($faire, $type, $id, $qui, $opt) * Autorisation de voir le bouton Documents dans le menu * * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $opt Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon -**/ + **/ function autoriser_documents_menu_dist($faire, $type, $id, $qui, $opt) { - return autoriser('administrer','mediatheque',$id,$qui,$opt); + return autoriser('administrer', 'mediatheque', $id, $qui, $opt); } /** * Autoriser le changement des dimensions sur un document - * + * * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $options Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $options Options de cette autorisation * @return bool true s'il a le droit, false sinon */ function autoriser_document_tailler_dist($faire, $type, $id, $qui, $options) { - if (!$id_document=intval($id)) + if (!$id_document = intval($id)) { return false; - if (!autoriser('modifier','document',$id,$qui,$options)) + } + if (!autoriser('modifier', 'document', $id, $qui, $options)) { return false; - - if (!isset($options['document']) OR !$document = $options['document']) - $document = sql_fetsel('*','spip_documents','id_document='.intval($id_document)); - + } + + if (!isset($options['document']) OR !$document = $options['document']) { + $document = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document)); + } + // (on ne le propose pas pour les images qu'on sait // lire : gif jpg png), sauf bug, ou document distant - if (in_array($document['extension'], array('gif','jpg','png')) + if (in_array($document['extension'], array('gif', 'jpg', 'png')) AND $document['hauteur'] AND $document['largeur'] - AND $document['distant']!='oui') + AND $document['distant'] != 'oui' + ) { return false; - + } + // Donnees sur le type de document $extension = $document['extension']; - $type_inclus = sql_getfetsel('inclus','spip_types_documents', "extension=".sql_quote($extension)); + $type_inclus = sql_getfetsel('inclus', 'spip_types_documents', "extension=" . sql_quote($extension)); if (($type_inclus == "embed" OR $type_inclus == "image") - AND ( - // documents dont la taille est definie - ($document['largeur'] * $document['hauteur']) - // ou distants - OR $document['distant'] == 'oui' - // ou tous les formats qui s'affichent en embed - OR $type_inclus == "embed" - )) + AND ( + // documents dont la taille est definie + ($document['largeur']*$document['hauteur']) + // ou distants + OR $document['distant'] == 'oui' + // ou tous les formats qui s'affichent en embed + OR $type_inclus == "embed" + ) + ) { return true; + } } /** * Autorisation de joindre un document - * + * * On ne peut joindre un document qu'a un objet qu'on a le droit d'editer * mais il faut prevoir le cas d'une *creation* par un redacteur, qui correspond * au hack id_objet = 0-id_auteur - * + * * Il faut aussi que les documents aient ete actives sur les objets concernes * ou que ce soit un article, sur lequel on peut toujours uploader des images * * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $opt Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon */ -function autoriser_joindredocument_dist($faire, $type, $id, $qui, $opt){ +function autoriser_joindredocument_dist($faire, $type, $id, $qui, $opt) { include_spip('inc/config'); // objet autorisé en upload ? - if ($type=='article' OR in_array(table_objet_sql($type), explode(',', lire_config('documents_objets', '')))) { + if ($type == 'article' OR in_array(table_objet_sql($type), explode(',', lire_config('documents_objets', '')))) { // sur un objet existant - if ($id>0) { + if ($id > 0) { return autoriser('modifier', $type, $id, $qui, $opt); - } - // sur un nouvel objet - elseif ($id<0 AND (abs($id) == $qui['id_auteur'])) { + } // sur un nouvel objet + elseif ($id < 0 AND (abs($id) == $qui['id_auteur'])) { return autoriser('ecrire', $type, $id, $qui, $opt); } } @@ -134,40 +143,44 @@ function autoriser_joindredocument_dist($faire, $type, $id, $qui, $opt){ /** * Autorisation de modifier un document - * + * * On ne peut modifier un document que s'il n'est pas lie a un objet qu'on n'a pas le droit d'editer * * @staticvar <type> $m * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $opt Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon */ -function autoriser_document_modifier_dist($faire, $type, $id, $qui, $opt){ +function autoriser_document_modifier_dist($faire, $type, $id, $qui, $opt) { static $m = array(); - $q=$qui['id_auteur']; - if (isset($m[$q][$id])) + $q = $qui['id_auteur']; + if (isset($m[$q][$id])) { return $m[$q][$id]; - - $s = sql_getfetsel("statut", "spip_documents", "id_document=".intval($id)); + } + + $s = sql_getfetsel("statut", "spip_documents", "id_document=" . intval($id)); // les admins ont le droit de modifier tous les documents existants if ($qui['statut'] == '0minirezo' - AND !$qui['restreint']) - return is_string($s)?true:false; + AND !$qui['restreint'] + ) { + return is_string($s) ? true : false; + } if (!isset($m[$q][$id])) { // un document non publie peut etre modifie par tout le monde (... ?) - if ($s AND $s!=='publie' AND ($qui['id_auteur'] > 0)) + if ($s AND $s !== 'publie' AND ($qui['id_auteur'] > 0)) { $m[$q][$id] = true; + } } if (!isset($m[$q][$id])) { $interdit = false; - $s = sql_select("id_objet,objet", "spip_documents_liens", "id_document=".intval($id)); + $s = sql_select("id_objet,objet", "spip_documents_liens", "id_document=" . intval($id)); while ($t = sql_fetch($s)) { if (!autoriser('modifier', $t['objet'], $t['id_objet'], $qui, $opt)) { $interdit = true; @@ -175,7 +188,7 @@ function autoriser_document_modifier_dist($faire, $type, $id, $qui, $opt){ } } - $m[$q][$id] = ($interdit?false:true); + $m[$q][$id] = ($interdit ? false : true); } return $m[$q][$id]; @@ -184,98 +197,113 @@ function autoriser_document_modifier_dist($faire, $type, $id, $qui, $opt){ /** * Autorisation de supprimer un document - * + * * On ne peut supprimer un document que s'il n'est lie a aucun objet * ET qu'on a le droit de le modifier ! * * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $opt Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon */ -function autoriser_document_supprimer_dist($faire, $type, $id, $qui, $opt){ +function autoriser_document_supprimer_dist($faire, $type, $id, $qui, $opt) { if (!intval($id) OR !$qui['id_auteur'] - OR !autoriser('ecrire','','',$qui)) + OR !autoriser('ecrire', '', '', $qui) + ) { return false; + } // ne pas considerer les document parent // (cas des vignettes ou autre document annexe rattache a un document) - if (sql_countsel('spip_documents_liens', "objet!='document' AND id_document=".intval($id))) + if (sql_countsel('spip_documents_liens', "objet!='document' AND id_document=" . intval($id))) { return false; + } // si c'est une vignette, se ramener a l'autorisation de son parent - if (sql_getfetsel('mode','spip_documents','id_document='.intval($id))=='vignette'){ - $id_document = sql_getfetsel('id_document','spip_documents','id_vignette='.intval($id)); - return !$id_document OR autoriser('modifier','document',$id_document); + if (sql_getfetsel('mode', 'spip_documents', 'id_document=' . intval($id)) == 'vignette') { + $id_document = sql_getfetsel('id_document', 'spip_documents', 'id_vignette=' . intval($id)); + + return !$id_document OR autoriser('modifier', 'document', $id_document); } // si c'est un document annexe, se ramener a l'autorisation de son parent - if ($id_document=sql_getfetsel('id_objet','spip_documents_liens',"objet='document' AND id_document=".intval($id))){ - return autoriser('modifier','document',$id_document); + if ($id_document = sql_getfetsel('id_objet', 'spip_documents_liens', + "objet='document' AND id_document=" . intval($id)) + ) { + return autoriser('modifier', 'document', $id_document); } - return autoriser('modifier','document',$id,$qui,$opt); + return autoriser('modifier', 'document', $id, $qui, $opt); } /** * Autorisation de voir un document - * + * * Peut-on voir un document dans _DIR_IMG ? * * Tout le monde (y compris les visiteurs non enregistrés), puisque par * défaut ce repertoire n'est pas protégé ; si une extension comme * acces_restreint a positionné creer_htaccess, on regarde * si le document est lié à un élément publié. - * + * * @todo * À revoir car c'est dommage de sortir de l'API true/false - * + * * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $opt Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon -**/ + **/ function autoriser_document_voir_dist($faire, $type, $id, $qui, $opt) { if (!isset($GLOBALS['meta']["creer_htaccess"]) - OR $GLOBALS['meta']["creer_htaccess"] != 'oui') + OR $GLOBALS['meta']["creer_htaccess"] != 'oui' + ) { return true; + } - if ((!is_numeric($id)) OR $id < 0) return false; + if ((!is_numeric($id)) OR $id < 0) { + return false; + } - if (in_array($qui['statut'], array('0minirezo', '1comite'))) + if (in_array($qui['statut'], array('0minirezo', '1comite'))) { return 'htaccess'; + } - if ($liens = sql_allfetsel('objet,id_objet', 'spip_documents_liens', 'id_document='.intval($id))) - foreach ($liens as $l) { - $table_sql = table_objet_sql($l['objet']); - $id_table = id_table_objet($l['objet']); - if (sql_countsel($table_sql, "$id_table = ". intval($l['id_objet']) - . (in_array($l['objet'], array('article', 'rubrique', 'breve')) - ? " AND statut = 'publie'" - : '') - ) > 0) - return 'htaccess'; + if ($liens = sql_allfetsel('objet,id_objet', 'spip_documents_liens', 'id_document=' . intval($id))) { + foreach ($liens as $l) { + $table_sql = table_objet_sql($l['objet']); + $id_table = id_table_objet($l['objet']); + if (sql_countsel($table_sql, "$id_table = " . intval($l['id_objet']) + . (in_array($l['objet'], array('article', 'rubrique', 'breve')) + ? " AND statut = 'publie'" + : '') + ) > 0 + ) { + return 'htaccess'; + } + } } + return false; } /** * Autorisation d'auto-association de documents à du contenu editorial qui le référence - * + * * Par defaut true pour tous les objets * * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $opt Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon */ function autoriser_autoassocierdocument_dist($faire, $type, $id, $qui, $opt) { @@ -288,22 +316,25 @@ function autoriser_autoassocierdocument_dist($faire, $type, $id, $qui, $opt) { * Réservé aux admins complets. * * @param string $faire Action demandée - * @param string $type Type d'objet sur lequel appliquer l'action - * @param int $id Identifiant de l'objet - * @param array $qui Description de l'auteur demandant l'autorisation - * @param array $opt Options de cette autorisation + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon */ -function autoriser_orphelins_supprimer_dist($faire, $type, $id, $qui, $opt){ +function autoriser_orphelins_supprimer_dist($faire, $type, $id, $qui, $opt) { if ($qui['statut'] == '0minirezo' - AND !$qui['restreint']) + AND !$qui['restreint'] + ) { return true; + } } /** * Autoriser a associer des documents a un objet : * il faut avoir le droit de modifier cet objet + * * @param $faire * @param $type * @param $id @@ -311,17 +342,19 @@ function autoriser_orphelins_supprimer_dist($faire, $type, $id, $qui, $opt){ * @param $opt * @return bool */ -function autoriser_associerdocuments_dist($faire, $type, $id, $qui, $opt){ +function autoriser_associerdocuments_dist($faire, $type, $id, $qui, $opt) { // cas particulier (hack nouvel objet) - if (intval($id)<0 AND $id==-$qui['id_auteur']){ + if (intval($id) < 0 AND $id == -$qui['id_auteur']) { return true; } - return autoriser('modifier',$type,$id,$qui,$opt); + + return autoriser('modifier', $type, $id, $qui, $opt); } /** * Autoriser a dissocier des documents a un objet : * il faut avoir le droit de modifier cet objet + * * @param $faire * @param $type * @param $id @@ -329,10 +362,11 @@ function autoriser_associerdocuments_dist($faire, $type, $id, $qui, $opt){ * @param $opt * @return bool */ -function autoriser_dissocierdocuments_dist($faire, $type, $id, $qui, $opt){ +function autoriser_dissocierdocuments_dist($faire, $type, $id, $qui, $opt) { // cas particulier (hack nouvel objet) - if (intval($id)<0 AND $id==-$qui['id_auteur']){ + if (intval($id) < 0 AND $id == -$qui['id_auteur']) { return true; } - return autoriser('modifier',$type,$id,$qui,$opt); + + return autoriser('modifier', $type, $id, $qui, $opt); } diff --git a/medias_fonctions.php b/medias_fonctions.php index 84980aa66a0b016afface90d3eef17b4ab96456d..907918cf1a58032786b5e4255bb997bc838aa931 100644 --- a/medias_fonctions.php +++ b/medias_fonctions.php @@ -15,21 +15,25 @@ * pour le compilateur * * @package SPIP\Medias\Fonctions -**/ + **/ // sécurité -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} // nettoyer les zip abandonnes par l'utilisateur if (isset($GLOBALS['visiteur_session']['zip_to_clean']) - AND test_espace_prive() - AND isset($_SERVER['REQUEST_METHOD']) - AND $_SERVER['REQUEST_METHOD']!=='POST'){ + AND test_espace_prive() + AND isset($_SERVER['REQUEST_METHOD']) + AND $_SERVER['REQUEST_METHOD'] !== 'POST' +) { $zip_to_clean = unserialize($GLOBALS['visiteur_session']['zip_to_clean']); - if ($zip_to_clean){ - foreach ($zip_to_clean as $zip){ - if (@file_exists($zip)) + if ($zip_to_clean) { + foreach ($zip_to_clean as $zip) { + if (@file_exists($zip)) { @unlink($zip); + } } } session_set('zip_to_clean'); @@ -38,41 +42,46 @@ if (isset($GLOBALS['visiteur_session']['zip_to_clean']) // capturer un formulaire POST plus grand que post_max_size // on genere un minipres car on ne peut rien faire de mieux if (isset($_SERVER['REQUEST_METHOD']) - AND $_SERVER['REQUEST_METHOD']=='POST' + AND $_SERVER['REQUEST_METHOD'] == 'POST' AND empty($_POST) - AND strlen($_SERVER['CONTENT_TYPE'])>0 - AND strncmp($_SERVER['CONTENT_TYPE'],'multipart/form-data', 19)==0 - AND $_SERVER['CONTENT_LENGTH']>medias_inigetoctets('post_max_size')){ + AND strlen($_SERVER['CONTENT_TYPE']) > 0 + AND strncmp($_SERVER['CONTENT_TYPE'], 'multipart/form-data', 19) == 0 + AND $_SERVER['CONTENT_LENGTH'] > medias_inigetoctets('post_max_size') +) { include_spip('inc/minipres'); - echo minipres(_T('medias:upload_limit',array('max' => ini_get('post_max_size')))); + echo minipres(_T('medias:upload_limit', array('max' => ini_get('post_max_size')))); exit; } /** - * Retourne la taille en octet d'une valeur de configuration php - * + * Retourne la taille en octet d'une valeur de configuration php + * * @param string $var * Clé de configuration ; valeur récupérée par `ini_get()`. Exemple `post_max_size` * @return int|string * Taille en octet, sinon chaine vide. -**/ -function medias_inigetoctets($var){ + **/ +function medias_inigetoctets($var) { $last = ''; $val = trim(@ini_get($var)); if (is_numeric($val)) { return $val; } // en octet si "32M" - if ($val !='' ){ + if ($val != '') { $last = strtolower($val[strlen($val)-1]); $val = substr($val, 0, -1); } switch ($last) { // The 'G' modifier is available since PHP 5.1.0 - case 'g': $val *= 1024; - case 'm': $val *= 1024; - case 'k': $val *= 1024; + case 'g': + $val *= 1024; + case 'm': + $val *= 1024; + case 'k': + $val *= 1024; } + return $val; } @@ -86,18 +95,20 @@ function medias_inigetoctets($var){ * @return string * Code HTML de l'image de puce */ -function medias_puce_statut_document($id_document, $statut){ - if ($statut=='publie') { - $puce='puce-verte.gif'; - } - else if ($statut == "prepa") { - $puce = 'puce-blanche.gif'; - } - else if ($statut == "poubelle") { - $puce = 'puce-poubelle.gif'; +function medias_puce_statut_document($id_document, $statut) { + if ($statut == 'publie') { + $puce = 'puce-verte.gif'; + } else { + if ($statut == "prepa") { + $puce = 'puce-blanche.gif'; + } else { + if ($statut == "poubelle") { + $puce = 'puce-poubelle.gif'; + } else { + $puce = 'puce-blanche.gif'; + } + } } - else - $puce = 'puce-blanche.gif'; return http_img_pack($puce, $statut, "class='puce'"); } @@ -105,7 +116,7 @@ function medias_puce_statut_document($id_document, $statut){ /** * Compile la boucle `DOCUMENTS` qui retourne une liste de documents multimédia - * + * * `<BOUCLE(DOCUMENTS)>` * * @param string $id_boucle @@ -114,25 +125,26 @@ function medias_puce_statut_document($id_document, $statut){ * AST du squelette * @return string * Code PHP compilé de la boucle -**/ + **/ function boucle_DOCUMENTS($id_boucle, &$boucles) { $boucle = &$boucles[$id_boucle]; $id_table = $boucle->id_table; // on ne veut pas des fichiers de taille nulle, // sauf s'ils sont distants (taille inconnue) - array_unshift($boucle->where,array("'($id_table.taille > 0 OR $id_table.distant=\\'oui\\')'")); + array_unshift($boucle->where, array("'($id_table.taille > 0 OR $id_table.distant=\\'oui\\')'")); /** * N'afficher que les modes de documents que l'on accepte * Utiliser le "pipeline medias_documents_visibles" pour en ajouter */ if (!isset($boucle->modificateur['criteres']['mode']) - AND !isset($boucle->modificateur['tout'])) { - $modes = pipeline('medias_documents_visibles',array('image','document')); + AND !isset($boucle->modificateur['tout']) + ) { + $modes = pipeline('medias_documents_visibles', array('image', 'document')); $f = sql_serveur('quote', $boucle->sql_serveur, true); $modes = addslashes(join(',', array_map($f, array_unique($modes)))); - array_unshift($boucle->where,array("'IN'", "'$id_table.mode'", "'($modes)'")); + array_unshift($boucle->where, array("'IN'", "'$id_table.mode'", "'($modes)'")); } return calculer_boucle($id_boucle, $boucles); @@ -141,6 +153,7 @@ function boucle_DOCUMENTS($id_boucle, &$boucles) { /** * Pour compat uniquement, utiliser generer_lien_entite + * * @deprecated * @uses generer_lien_entite() * @@ -150,8 +163,8 @@ function boucle_DOCUMENTS($id_boucle, &$boucles) { * @param null $connect * @return string */ -function lien_objet($id, $type, $longueur = 80, $connect = NULL){ - return generer_lien_entite($id,$type,$longueur,$connect); +function lien_objet($id, $type, $longueur = 80, $connect = null) { + return generer_lien_entite($id, $type, $longueur, $connect); } /** @@ -165,16 +178,16 @@ function critere_DOCUMENTS_orphelins_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; $cond = $crit->cond; - $not = $crit->not?"":"NOT"; + $not = $crit->not ? "" : "NOT"; - $select = sql_get_select("DISTINCT id_document","spip_documents_liens as oooo"); - $where = "'".$boucle->id_table.".id_document $not IN ($select)'"; - if ($cond){ + $select = sql_get_select("DISTINCT id_document", "spip_documents_liens as oooo"); + $where = "'" . $boucle->id_table . ".id_document $not IN ($select)'"; + if ($cond) { $_quoi = '@$Pile[0]["orphelins"]'; $where = "($_quoi)?$where:''"; } - $boucle->where[]= $where; + $boucle->where[] = $where; } /** @@ -191,7 +204,7 @@ function critere_DOCUMENTS_orphelins_dist($idb, &$boucles, $crit) { function critere_DOCUMENTS_portrait_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; $table = $boucle->id_table; - $not = ($crit->not?"NOT ":""); + $not = ($crit->not ? "NOT " : ""); $boucle->where[] = "'$not($table.largeur>0 AND $table.hauteur > $table.largeur)'"; } @@ -209,7 +222,7 @@ function critere_DOCUMENTS_portrait_dist($idb, &$boucles, $crit) { function critere_DOCUMENTS_paysage_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; $table = $boucle->id_table; - $not = ($crit->not?"NOT ":""); + $not = ($crit->not ? "NOT " : ""); $boucle->where[] = "'$not($table.largeur>0 AND $table.largeur > $table.hauteur)'"; } @@ -227,7 +240,7 @@ function critere_DOCUMENTS_paysage_dist($idb, &$boucles, $crit) { function critere_DOCUMENTS_carre_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; $table = $boucle->id_table; - $not = ($crit->not?"NOT ":""); + $not = ($crit->not ? "NOT " : ""); $boucle->where[] = "'$not($table.largeur>0 AND $table.largeur = $table.hauteur)'"; } @@ -238,7 +251,7 @@ function critere_DOCUMENTS_carre_dist($idb, &$boucles, $crit) { * Utile dans une boucle DOCUMENTS pour afficher une vignette du type * du document (balise `#EXTENSION`) alors que ce document a déjà une vignette * personnalisée (affichable par `#LOGO_DOCUMENT`). - * + * * @example * `[(#EXTENSION|vignette)]` produit une balise `<img ... />` * `[(#EXTENSION|vignette{true})]` retourne le chemin de l'image @@ -250,7 +263,7 @@ function critere_DOCUMENTS_carre_dist($idb, &$boucles, $crit) { * true pour obtenir seulement le chemin du fichier * @return string * Balise HTML <img...> ou chemin du fichier -**/ + **/ function filtre_vignette_dist($extension = 'defaut', $get_chemin = false) { static $vignette = false; static $balise_img = false; @@ -265,6 +278,7 @@ function filtre_vignette_dist($extension = 'defaut', $get_chemin = false) { if ($get_chemin) { return $fichier; } + // retourne une balise <img ... /> return $balise_img($fichier); } diff --git a/medias_ieconfig.php b/medias_ieconfig.php index 62fe034679c80524c3b9f048decf4d27d440334b..e666cabc8ed60cc7a9ffc566b2a1bdf06f4e2c22 100644 --- a/medias_ieconfig.php +++ b/medias_ieconfig.php @@ -1,13 +1,15 @@ <?php -if (!defined("_ECRIRE_INC_VERSION")) return; +if (!defined("_ECRIRE_INC_VERSION")) { + return; +} // On déclare ici la config du core -function medias_ieconfig_metas($table){ +function medias_ieconfig_metas($table) { $table['medias']['titre'] = _T('medias:titre_documents_joints'); $table['medias']['icone'] = 'document-16.png'; $table['medias']['metas_brutes'] = 'documents_objets,documents_date'; - + return $table; } diff --git a/medias_pipelines.php b/medias_pipelines.php index 4eebb1b60f96f28959e91f06c76c19df63e6e990..2259d51455aa483f8867b04943fdae05af589773 100644 --- a/medias_pipelines.php +++ b/medias_pipelines.php @@ -11,13 +11,15 @@ \***************************************************************************/ /** - * Utilisations de pipelines + * Utilisations de pipelines * * @package SPIP\Medias\Pipelines -**/ + **/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Traiter le cas pathologique d'un upload de document ayant echoué @@ -29,15 +31,17 @@ if (!defined('_ECRIRE_INC_VERSION')) return; * Nom du squelette par défaut qui sera utilisé * @return string * Nom du squelette par défaut qui sera utilisé -**/ -function medias_detecter_fond_par_defaut($fond){ + **/ +function medias_detecter_fond_par_defaut($fond) { if (empty($_GET) AND empty($_POST) AND empty($_FILES) - AND isset($_SERVER["CONTENT_LENGTH"]) - AND strstr($_SERVER["CONTENT_TYPE"], "multipart/form-data;")) { + AND isset($_SERVER["CONTENT_LENGTH"]) + AND strstr($_SERVER["CONTENT_TYPE"], "multipart/form-data;") + ) { include_spip('inc/getdocument'); erreur_upload_trop_gros(); } - return $fond; + + return $fond; } @@ -46,24 +50,25 @@ function medias_detecter_fond_par_defaut($fond){ * auquel on a attaché des documents, restituer l'identifiant * du nouvel objet crée sur les liaisons documents/objet, * qui ont ponctuellement un identifiant id_objet négatif. - * + * * @see medias_affiche_gauche() * @pipeline post_insertion - * + * * @param array $flux * Données du pipeline * @return array * Données du pipeline -**/ -function medias_post_insertion($flux){ + **/ +function medias_post_insertion($flux) { - $objet = objet_type($flux['args']['table']); + $objet = objet_type($flux['args']['table']); $id_objet = $flux['args']['id_objet']; - + include_spip('inc/autoriser'); - + if (autoriser('joindredocument', $objet, $id_objet) - AND $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur'])){ + AND $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']) + ) { # cf. HACK medias_affiche_gauche() # rattrapper les documents associes a cet objet nouveau @@ -71,15 +76,15 @@ function medias_post_insertion($flux){ # utiliser l'api editer_lien pour les appels aux pipeline edition_lien include_spip('action/editer_liens'); - $liens = objet_trouver_liens(array('document'=>'*'),array($objet=>0-$id_auteur)); - foreach($liens as $lien){ - objet_associer(array('document'=>$lien['document']),array($objet=>$id_objet),$lien); + $liens = objet_trouver_liens(array('document' => '*'), array($objet => 0-$id_auteur)); + foreach ($liens as $lien) { + objet_associer(array('document' => $lien['document']), array($objet => $id_objet), $lien); } // un simple delete pour supprimer les liens temporaires - sql_delete("spip_documents_liens", array("id_objet = ".(0-$id_auteur),"objet=".sql_quote($objet))); + sql_delete("spip_documents_liens", array("id_objet = " . (0-$id_auteur), "objet=" . sql_quote($objet))); } - return $flux; + return $flux; } /** @@ -89,10 +94,12 @@ function medias_post_insertion($flux){ * @param array $flux * @return array */ -function medias_affiche_milieu($flux){ +function medias_affiche_milieu($flux) { if ($flux["args"]["exec"] == "configurer_contenu") { - $flux["data"] .= recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_documents')); + $flux["data"] .= recuperer_fond('prive/squelettes/inclure/configurer', + array('configurer' => 'configurer_documents')); } + return $flux; } @@ -105,9 +112,10 @@ function medias_affiche_milieu($flux){ * @return array * Couples nom de la méta => valeur par défaut */ -function medias_configurer_liste_metas($config){ +function medias_configurer_liste_metas($config) { $config['documents_objets'] = 'spip_articles'; $config['documents_date'] = 'non'; + return $config; } @@ -119,63 +127,70 @@ function medias_configurer_liste_metas($config){ * Données du pipeline * @return array * Données du pipeline -**/ -function medias_post_edition($flux){ + **/ +function medias_post_edition($flux) { // le serveur n'est pas toujours la $serveur = (isset($flux['args']['serveur']) ? $flux['args']['serveur'] : ''); // si on ajoute un document, mettre son statut a jour - if (isset($flux['args']['action']) and $flux['args']['action']=='ajouter_document'){ + if (isset($flux['args']['action']) and $flux['args']['action'] == 'ajouter_document') { include_spip('action/editer_document'); // mettre a jour le statut si necessaire document_instituer($flux['args']['id_objet']); - } - // si on institue un objet, mettre ses documents lies a jour - elseif (isset($flux['args']['table']) and $flux['args']['table']!=='spip_documents'){ - $type = isset($flux['args']['type'])?$flux['args']['type']:objet_type($flux['args']['table']); + } // si on institue un objet, mettre ses documents lies a jour + elseif (isset($flux['args']['table']) and $flux['args']['table'] !== 'spip_documents') { + $type = isset($flux['args']['type']) ? $flux['args']['type'] : objet_type($flux['args']['table']); // verifier d'abord les doublons ! include_spip('inc/autoriser'); - if (autoriser('autoassocierdocument',$type,$flux['args']['id_objet'])){ - $table_objet = isset($flux['args']['table_objet'])?$flux['args']['table_objet']:table_objet($flux['args']['table'],$serveur); - $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc'); - $marquer_doublons_doc($flux['data'],$flux['args']['id_objet'],$type,id_table_objet($type, $serveur),$table_objet,$flux['args']['table'], '', $serveur); + if (autoriser('autoassocierdocument', $type, $flux['args']['id_objet'])) { + $table_objet = isset($flux['args']['table_objet']) ? $flux['args']['table_objet'] : table_objet($flux['args']['table'], + $serveur); + $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc'); + $marquer_doublons_doc($flux['data'], $flux['args']['id_objet'], $type, id_table_objet($type, $serveur), + $table_objet, $flux['args']['table'], '', $serveur); } - if (($flux['args']['action'] and $flux['args']['action']=='instituer') OR isset($flux['data']['statut'])){ + if (($flux['args']['action'] and $flux['args']['action'] == 'instituer') OR isset($flux['data']['statut'])) { include_spip('base/abstract_sql'); $id = $flux['args']['id_objet']; - $docs = array_map('reset',sql_allfetsel('id_document','spip_documents_liens','id_objet='.intval($id).' AND objet='.sql_quote($type))); + $docs = array_map('reset', sql_allfetsel('id_document', 'spip_documents_liens', + 'id_objet=' . intval($id) . ' AND objet=' . sql_quote($type))); include_spip('action/editer_document'); - foreach($docs as $id_document) - // mettre a jour le statut si necessaire + foreach ($docs as $id_document) // mettre a jour le statut si necessaire + { document_instituer($id_document); + } } - } - else { - if (isset($flux['args']['table']) and $flux['args']['table']!=='spip_documents'){ + } else { + if (isset($flux['args']['table']) and $flux['args']['table'] !== 'spip_documents') { // verifier les doublons ! - $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc'); - $marquer_doublons_doc($flux['data'],$flux['args']['id_objet'],$flux['args']['type'],id_table_objet($flux['args']['type'], $serveur),$flux['args']['table_objet'],$flux['args']['spip_table_objet'], '', $serveur); + $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc'); + $marquer_doublons_doc($flux['data'], $flux['args']['id_objet'], $flux['args']['type'], + id_table_objet($flux['args']['type'], $serveur), $flux['args']['table_objet'], + $flux['args']['spip_table_objet'], '', $serveur); } } + return $flux; } /** * Ajouter le portfolio et ajout de document sur les fiches objet - * + * * Uniquement sur les objets pour lesquelles les medias ont été activés * * @pipeline afficher_complement_objet * @param array $flux * @return array */ -function medias_afficher_complement_objet($flux){ - if ($type=$flux['args']['type'] - AND $id=intval($flux['args']['id']) - AND (autoriser('joindredocument',$type,$id))) { - $documenter_objet = charger_fonction('documenter_objet','inc'); - $flux['data'] .= $documenter_objet($id,$type); +function medias_afficher_complement_objet($flux) { + if ($type = $flux['args']['type'] + AND $id = intval($flux['args']['id']) + AND (autoriser('joindredocument', $type, $id)) + ) { + $documenter_objet = charger_fonction('documenter_objet', 'inc'); + $flux['data'] .= $documenter_objet($id, $type); } + return $flux; } @@ -193,24 +208,24 @@ function medias_afficher_complement_objet($flux){ * * @pipeline affiche_gauche * @see medias_post_insertion() - * + * * @param array $flux * Données du pipeline * @return array * Données du pipeline */ -function medias_affiche_gauche($flux){ +function medias_affiche_gauche($flux) { if ($en_cours = trouver_objet_exec($flux['args']['exec']) - AND $en_cours['edition']!==false // page edition uniquement + AND $en_cours['edition'] !== false // page edition uniquement AND $type = $en_cours['type'] AND $id_table_objet = $en_cours['id_table_objet'] // id non defini sur les formulaires de nouveaux objets AND (isset($flux['args'][$id_table_objet]) and $id = intval($flux['args'][$id_table_objet]) // et justement dans ce cas, on met un identifiant negatif OR $id = 0-$GLOBALS['visiteur_session']['id_auteur']) - AND autoriser('joindredocument',$type,$id)) - { - $flux['data'] .= recuperer_fond('prive/objets/editer/colonne_document', array('objet'=>$type,'id_objet'=>$id)); + AND autoriser('joindredocument', $type, $id) + ) { + $flux['data'] .= recuperer_fond('prive/objets/editer/colonne_document', array('objet' => $type, 'id_objet' => $id)); } return $flux; @@ -229,8 +244,8 @@ function medias_affiche_gauche($flux){ * Données du pipeline * @return array * Données du pipeline -**/ -function medias_document_desc_actions($flux){ + **/ +function medias_document_desc_actions($flux) { return $flux; } @@ -247,8 +262,8 @@ function medias_document_desc_actions($flux){ * Données du pipeline * @return array * Données du pipeline -**/ -function medias_editer_document_actions($flux){ + **/ +function medias_editer_document_actions($flux) { return $flux; } @@ -267,8 +282,8 @@ function medias_editer_document_actions($flux){ * Données du pipeline * @return array * Données du pipeline -**/ -function medias_renseigner_document_distant($flux){ + **/ +function medias_renseigner_document_distant($flux) { return $flux; } @@ -279,16 +294,20 @@ function medias_renseigner_document_distant($flux){ * @param array $flux * @return array */ -function medias_objet_compte_enfants($flux){ +function medias_objet_compte_enfants($flux) { if ($objet = $flux['args']['objet'] - AND $id=intval($flux['args']['id_objet'])) { + AND $id = intval($flux['args']['id_objet']) + ) { // juste les publies ? if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) { - $flux['data']['document'] = sql_countsel('spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', "L.objet=".sql_quote($objet)."AND L.id_objet=".intval($id)." AND (D.statut='publie')"); + $flux['data']['document'] = sql_countsel('spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', + "L.objet=" . sql_quote($objet) . "AND L.id_objet=" . intval($id) . " AND (D.statut='publie')"); } else { - $flux['data']['document'] = sql_countsel('spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', "L.objet=".sql_quote($objet)."AND L.id_objet=".intval($id)." AND (D.statut='publie' OR D.statut='prepa')"); + $flux['data']['document'] = sql_countsel('spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', + "L.objet=" . sql_quote($objet) . "AND L.id_objet=" . intval($id) . " AND (D.statut='publie' OR D.statut='prepa')"); } } + return $flux; } @@ -299,43 +318,49 @@ function medias_objet_compte_enfants($flux){ * @param array $flux * @return array */ -function medias_boite_infos($flux){ - if ($flux['args']['type']=='rubrique' - AND $id_rubrique = $flux['args']['id']){ - if ($nb = sql_countsel('spip_documents_liens',"objet='rubrique' AND id_objet=".intval($id_rubrique))){ - $nb = "<div>". singulier_ou_pluriel($nb, "medias:un_document", "medias:des_documents") . "</div>"; - if ($p = strpos($flux['data'],"<!--nb_elements-->")) - $flux['data'] = substr_replace($flux['data'],$nb,$p,0); +function medias_boite_infos($flux) { + if ($flux['args']['type'] == 'rubrique' + AND $id_rubrique = $flux['args']['id'] + ) { + if ($nb = sql_countsel('spip_documents_liens', "objet='rubrique' AND id_objet=" . intval($id_rubrique))) { + $nb = "<div>" . singulier_ou_pluriel($nb, "medias:un_document", "medias:des_documents") . "</div>"; + if ($p = strpos($flux['data'], "<!--nb_elements-->")) { + $flux['data'] = substr_replace($flux['data'], $nb, $p, 0); + } } } + return $flux; } /** * Insertion dans le pipeline revisions_chercher_label (Plugin révisions) * Trouver le bon label à afficher sur les champs dans les listes de révisions - * + * * Si un champ est un champ extra, son label correspond au label défini du champs extra - * + * * @pipeline revisions_chercher_label * @param array $flux Données du pipeline * @return array Données du pipeline -**/ -function medias_revisions_chercher_label($flux){ - foreach(array('id_vignette', 'hauteur', 'largeur','mode','taille') as $champ){ - if($flux['args']['champ'] == $champ){ - $flux['data'] = _T('medias:info_'.$champ); + **/ +function medias_revisions_chercher_label($flux) { + foreach (array('id_vignette', 'hauteur', 'largeur', 'mode', 'taille') as $champ) { + if ($flux['args']['champ'] == $champ) { + $flux['data'] = _T('medias:info_' . $champ); + return $flux; } } - foreach(array('fichier','taille', 'mode','credits') as $champ){ - if($flux['args']['champ'] == $champ){ - $flux['data'] = _T('medias:label_'.$champ); + foreach (array('fichier', 'taille', 'mode', 'credits') as $champ) { + if ($flux['args']['champ'] == $champ) { + $flux['data'] = _T('medias:label_' . $champ); + return $flux; } } - if($flux['args']['champ'] == 'distant') + if ($flux['args']['champ'] == 'distant') { $flux['data'] = $flux['data'] = _T('medias:fichier_distant'); - + } + return $flux; } diff --git a/metadata/html.php b/metadata/html.php index 92815e22692bd2d2b9ef6ec18a06867ecc466971..d6c28930f9a04cf272de3e735aa5dfee76353828 100644 --- a/metadata/html.php +++ b/metadata/html.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} include_spip('inc/autoriser'); /** @@ -20,19 +22,22 @@ include_spip('inc/autoriser'); * @param string $file * @return array */ -function medata_html_dist($file){ +function medata_html_dist($file) { $meta = array(); // Securite si pas autorise : virer les scripts et les references externes // sauf si on est en mode javascript 'ok' (1), cf. inc_version if ($GLOBALS['filtrer_javascript'] < 1 - AND !autoriser('televerser','script')) { + AND !autoriser('televerser', 'script') + ) { $texte = spip_file_get_contents($file); include_spip('inc/texte'); $new = trim(safehtml($texte)); // petit bug safehtml - if ($new != $texte) ecrire_fichier($file, $new); + if ($new != $texte) { + ecrire_fichier($file, $new); + } } - + return $meta; } \ No newline at end of file diff --git a/metadata/image.php b/metadata/image.php index 92ad33dd5dba072cae461bd12939f72eb31e305f..1a390b586fb7b3917280ece2a5fd063d3f90b835 100644 --- a/metadata/image.php +++ b/metadata/image.php @@ -10,9 +10,11 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} -function metadata_image_dist($fichier){ +function metadata_image_dist($fichier) { $meta = array(); if ($size_image = @getimagesize($fichier)) { @@ -53,4 +55,5 @@ function decoder_type_image($type, $strict = false) { return ""; } } + ?> \ No newline at end of file diff --git a/metadata/svg.php b/metadata/svg.php index 1b42ff45bf4684e85c43077d5d141010ec2ecb48..26591b6c89b4a1c8c04d6cada1a06e4e311769d1 100644 --- a/metadata/svg.php +++ b/metadata/svg.php @@ -14,14 +14,16 @@ * Informations meta d'un SVG * * @package SPIP\Medias\Metadata -**/ + **/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} include_spip('inc/autoriser'); /** * Déterminer les dimensions d'un svg, et enlever ses scripts si nécessaire - * + * * On utilise safehtml qui n'est pas apropriée pour ça en attendant mieux * cf http://www.slideshare.net/x00mario/the-image-that-called-me * http://heideri.ch/svgpurifier/SVGPurifier/index.php @@ -29,47 +31,55 @@ include_spip('inc/autoriser'); * @param string $file * @return array Tableau (largeur, hauteur) */ -function metadata_svg_dist($file){ +function metadata_svg_dist($file) { $meta = array(); $texte = spip_file_get_contents($file); // Securite si pas autorise : virer les scripts et les references externes // sauf si on est en mode javascript 'ok' (1), cf. inc_version - if ($GLOBALS['filtrer_javascript']<1 + if ($GLOBALS['filtrer_javascript'] < 1 AND !autoriser('televerser', 'script') - ){ + ) { include_spip('inc/texte'); $new = trim(safehtml($texte)); // petit bug safehtml - if (substr($new, 0, 2)==']>') $new = ltrim(substr($new, 2)); - if ($new!=$texte) ecrire_fichier($file, $texte = $new); + if (substr($new, 0, 2) == ']>') { + $new = ltrim(substr($new, 2)); + } + if ($new != $texte) { + ecrire_fichier($file, $texte = $new); + } } $width = $height = 150; - if (preg_match(',<svg[^>]+>,', $texte, $s)){ + if (preg_match(',<svg[^>]+>,', $texte, $s)) { $s = $s[0]; - if (preg_match(',\WviewBox\s*=\s*.\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+),i', $s, $r)){ + if (preg_match(',\WviewBox\s*=\s*.\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+),i', $s, $r)) { $width = $r[3]; $height = $r[4]; - } - else { + } else { // si la taille est en centimetre, estimer le pixel a 1/64 de cm - if (preg_match(',\Wwidth\s*=\s*.(\d+)([^"\']*),i', $s, $r)){ - if ($r[2]!='%'){ + if (preg_match(',\Wwidth\s*=\s*.(\d+)([^"\']*),i', $s, $r)) { + if ($r[2] != '%') { $width = $r[1]; - if ($r[2]=='cm') $width <<= 6; + if ($r[2] == 'cm') { + $width <<= 6; + } } } - if (preg_match(',\Wheight\s*=\s*.(\d+)([^"\']*),i', $s, $r)){ - if ($r[2]!='%'){ + if (preg_match(',\Wheight\s*=\s*.(\d+)([^"\']*),i', $s, $r)) { + if ($r[2] != '%') { $height = $r[1]; - if ($r[2]=='cm') $height <<= 6; + if ($r[2] == 'cm') { + $height <<= 6; + } } } } } $meta['largeur'] = $width; $meta['hauteur'] = $height; + return $meta; } diff --git a/metadata/swf.php b/metadata/swf.php index 22d6765357db94c8ecdf7c1af33d2e7a63dbe7c1..de8e7452d6c28d420ea41836357008003888f594 100644 --- a/metadata/swf.php +++ b/metadata/swf.php @@ -10,9 +10,12 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +function metadata_swf_dist($file) { + $metadata = charger_fonction('image', 'metadata'); -function metadata_swf_dist($file){ - $metadata = charger_fonction('image','metadata'); return $metadata($file); } \ No newline at end of file diff --git a/metadata/video.php b/metadata/video.php index 2ae9ee783ad9af5603120f53092887d52f67a494..3684a5a866cd7fe643b46964fa87d0e487c996af 100644 --- a/metadata/video.php +++ b/metadata/video.php @@ -10,18 +10,20 @@ * @package SPIP\GetID3\Metadatas */ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Fonction de récupération des métadonnées sur les fichiers vidéo * appelée à l'insertion en base dans le plugin medias (inc/renseigner_document) - * + * * @param string $file - * Le chemin du fichier à analyser + * Le chemin du fichier à analyser * @return array $metas - * Le tableau comprenant les différentes metas à mettre en base + * Le tableau comprenant les différentes metas à mettre en base */ -function metadata_video($file){ +function metadata_video($file) { $meta = array(); include_spip('lib/getid3/getid3'); @@ -34,20 +36,20 @@ function metadata_video($file){ /** * Les pistes vidéos */ - if(isset($file_info['video'])){ + if (isset($file_info['video'])) { $id3['hasvideo'] = 'oui'; - if (isset($file_info['video']['resolution_x'])){ - $meta['largeur'] = $file_info['video']['resolution_x']; + if (isset($file_info['video']['resolution_x'])) { + $meta['largeur'] = $file_info['video']['resolution_x']; } - if (isset($file_info['video']['resolution_y'])){ - $meta['hauteur'] = $file_info['video']['resolution_y']; + if (isset($file_info['video']['resolution_y'])) { + $meta['hauteur'] = $file_info['video']['resolution_y']; } - if (isset($file_info['video']['frame_rate'])){ - $meta['framerate'] = $file_info['video']['frame_rate']; + if (isset($file_info['video']['frame_rate'])) { + $meta['framerate'] = $file_info['video']['frame_rate']; } } - if (isset($file_info['playtime_seconds'])){ - $meta['duree'] = round($file_info['playtime_seconds'],0); + if (isset($file_info['playtime_seconds'])) { + $meta['duree'] = round($file_info['playtime_seconds'], 0); } return $meta; diff --git a/modeles/document_case_fonctions.php b/modeles/document_case_fonctions.php index 9bf6be39c76e2bee8ef899ae682ddc68c5b28f90..ca4904f380c6267dc23eec86cfe8c873c4333acd 100644 --- a/modeles/document_case_fonctions.php +++ b/modeles/document_case_fonctions.php @@ -8,36 +8,51 @@ * @package SPIP\Medias\Fonctions */ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} define('_BOUTON_MODE_IMAGE', true); include_spip('inc/documents'); // pour la fonction affiche_raccourci_doc -function medias_raccourcis_doc($id_document, $titre, $descriptif, $inclus, $largeur, $hauteur, $mode, $vu, $media = null){ +function medias_raccourcis_doc( + $id_document, + $titre, + $descriptif, + $inclus, + $largeur, + $hauteur, + $mode, + $vu, + $media = null +) { $raccourci = ''; $doc = 'doc'; - if ($mode=='image' AND (strlen($descriptif.$titre) == 0)) + if ($mode == 'image' AND (strlen($descriptif . $titre) == 0)) { $doc = 'img'; + } // Affichage du raccourci <doc...> correspondant - $raccourci = - affiche_raccourci_doc($doc, $id_document, 'left') + $raccourci = + affiche_raccourci_doc($doc, $id_document, 'left') . affiche_raccourci_doc($doc, $id_document, 'center') . affiche_raccourci_doc($doc, $id_document, 'right'); - if ($mode=='document' + if ($mode == 'document' AND ($inclus == "embed" OR $inclus == "image") - AND (($largeur > 0 AND $hauteur > 0) - OR in_array($media,array('video','audio')))) { + AND (($largeur > 0 AND $hauteur > 0) + OR in_array($media, array('video', 'audio'))) + ) { $raccourci = - "<span>"._T('medias:info_inclusion_vignette')."</span>" - . $raccourci - . "<span>"._T('medias:info_inclusion_directe')."</span>" - . affiche_raccourci_doc('emb', $id_document, 'left') - . affiche_raccourci_doc('emb', $id_document, 'center') - . affiche_raccourci_doc('emb', $id_document, 'right'); + "<span>" . _T('medias:info_inclusion_vignette') . "</span>" + . $raccourci + . "<span>" . _T('medias:info_inclusion_directe') . "</span>" + . affiche_raccourci_doc('emb', $id_document, 'left') + . affiche_raccourci_doc('emb', $id_document, 'center') + . affiche_raccourci_doc('emb', $id_document, 'right'); } - return "<div class='raccourcis'>".$raccourci."</div>"; + + return "<div class='raccourcis'>" . $raccourci . "</div>"; } diff --git a/modeles/document_desc_fonctions.php b/modeles/document_desc_fonctions.php index 8796a56888db6ea68f3063dbd47cbb45ae1ab51d..3b8693d19ee8b9daf55dd722f970dd7c67295f8f 100644 --- a/modeles/document_desc_fonctions.php +++ b/modeles/document_desc_fonctions.php @@ -8,7 +8,9 @@ * @package SPIP\Medias\Fonctions */ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} // constante _BOUTON_MODE_IMAGE include_spip('modeles/document_case_fonctions'); diff --git a/modeles/emb_fonctions.php b/modeles/emb_fonctions.php index 3f3232cb2ad8a25d7e77e94a11aa10bb2aca6fa1..624856cacfd24f1104d67887476654414b2e4514 100644 --- a/modeles/emb_fonctions.php +++ b/modeles/emb_fonctions.php @@ -1,6 +1,8 @@ <?php -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** * Trouver le fond pour embarquer un document @@ -10,18 +12,19 @@ if (!defined('_ECRIRE_INC_VERSION')) return; * => modeles/emb_html.html si il existe * => modeles/text_html.html si il existe, * => modeles/text.html sinon - * + * * @param $extension * @param $mime_type * @return mixed */ -function trouver_modele_emb($extension, $mime_type){ - if ($extension AND trouve_modele($fond="emb_".$extension)){ +function trouver_modele_emb($extension, $mime_type) { + if ($extension AND trouve_modele($fond = "emb_" . $extension)) { return $fond; } - $fond = preg_replace(',\W,','_',$mime_type); - if (trouve_modele($fond)) + $fond = preg_replace(',\W,', '_', $mime_type); + if (trouve_modele($fond)) { return $fond; - else - return preg_replace(',\W.*$,','',$mime_type); + } else { + return preg_replace(',\W.*$,', '', $mime_type); + } } \ No newline at end of file diff --git a/prive/squelettes/inclure/ajouter-documents_fonctions.php b/prive/squelettes/inclure/ajouter-documents_fonctions.php index 2231bf14a77a6f1f9d1ed156a6c081f4f24686ad..226afb71570145931b9b4844d059c4f2271d4e77 100644 --- a/prive/squelettes/inclure/ajouter-documents_fonctions.php +++ b/prive/squelettes/inclure/ajouter-documents_fonctions.php @@ -11,6 +11,8 @@ \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} include_spip('formulaires/joindre_document'); \ No newline at end of file diff --git a/prive/squelettes/inclure/mediatheque-navigation_fonctions.php b/prive/squelettes/inclure/mediatheque-navigation_fonctions.php index 886e86c93a3b6234ccdd0cc926acd4ff27d36fe9..fad02a8214c7bd3f10798716f74516610cd7afb1 100644 --- a/prive/squelettes/inclure/mediatheque-navigation_fonctions.php +++ b/prive/squelettes/inclure/mediatheque-navigation_fonctions.php @@ -11,9 +11,12 @@ \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} -function liste_extensions_utilisees($media){ - return $media?array_map('reset',sql_allfetsel('extension','spip_documents','media='.sql_quote($media))):array(); +function liste_extensions_utilisees($media) { + return $media ? array_map('reset', + sql_allfetsel('extension', 'spip_documents', 'media=' . sql_quote($media))) : array(); } \ No newline at end of file diff --git a/prive/vignettes/index.php b/prive/vignettes/index.php index 42124e0ed8f771e5f3f69df750cdb7b9bbf76a28..1bebc2c6001e8b7bd012c02eb6625384fb9d6b84 100644 --- a/prive/vignettes/index.php +++ b/prive/vignettes/index.php @@ -5,21 +5,26 @@ <link rel="up" href="../"> </head> <body style="background: #fff; text-align: center;"> - <h1>Index des vignettes de SPIP</h1> - <table> - <tr><th colspan='10'>Format png & gif</th> +<h1>Index des vignettes de SPIP</h1> +<table> + <tr> + <th colspan='10'>Format png & gif</th> <?php - $myDir = opendir('.'); - $i= 0; - while($file = readdir($myDir)) { - if (preg_match(",\.(png|gif)$,i", $file)) { + $myDir = opendir('.'); + $i = 0; + while ($file = readdir($myDir)) { + if (preg_match(",\.(png|gif)$,i", $file)) { $r = "\n\t<td style='text-align:center; padding:10px'>$file<br /><img src='$file' alt='$file' /></td>"; - if ($i%10) echo $r; else echo "</tr>\n<tr>", $r; + if ($i%10) { + echo $r; + } else { + echo "</tr>\n<tr>", $r; + } $i++; - } } + } ?> - </tr> - </table> + </tr> +</table> </body> </html> \ No newline at end of file diff --git a/puce_statut/document.php b/puce_statut/document.php index 6366548fb6b663c29bc6f8f3b8a7da45b31dad11..791844f991178d5e860c9fec38034b263da20bbe 100644 --- a/puce_statut/document.php +++ b/puce_statut/document.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** diff --git a/urls/generer_url_document.php b/urls/generer_url_document.php index eb31899570b732e94b52be18ca9bad044ad47c07..45ff3e34e12376216b2766f27ba9777de1e88c70 100644 --- a/urls/generer_url_document.php +++ b/urls/generer_url_document.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** @@ -28,5 +30,6 @@ if (!defined('_ECRIRE_INC_VERSION')) return; */ function urls_generer_url_document_dist($id, $args = '', $ancre = '', $public = null, $connect = '') { include_spip('inc/documents'); + return generer_url_document_dist($id, $args, $ancre); } \ No newline at end of file diff --git a/urls/generer_url_ecrire_document.php b/urls/generer_url_ecrire_document.php index 84bf746dc2a5b14889158c84df39936e6841867f..6da9503d1e0441f638305b7454c83e762a0a2218 100644 --- a/urls/generer_url_ecrire_document.php +++ b/urls/generer_url_ecrire_document.php @@ -10,7 +10,9 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} /** @@ -28,5 +30,6 @@ if (!defined('_ECRIRE_INC_VERSION')) return; */ function urls_generer_url_ecrire_document_dist($id, $args = '', $ancre = '', $public = null, $connect = '') { include_spip('inc/documents'); + return generer_url_document_dist($id); } \ No newline at end of file