Changeset 93616 in spip-zone


Ignore:
Timestamp:
Dec 13, 2015, 11:42:34 AM (5 years ago)
Author:
cedric@…
Message:

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

Location:
_core_/plugins/medias
Files:
47 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/medias/action/acceder_document.php

    r88959 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined('_ECRIRE_INC_VERSION')) return;
     13if (!defined('_ECRIRE_INC_VERSION')) {
     14        return;
     15}
    1416
    1517include_spip('inc/headers');
     
    3032
    3133        $status = $dcc = false;
    32         if (strpos($f,'../') !== false
    33         OR preg_match(',^\w+://,', $f)) {
     34        if (strpos($f, '../') !== false
     35                OR preg_match(',^\w+://,', $f)
     36        ) {
    3437                $status = 403;
    35         }
    36         else if (!file_exists($file) OR !is_readable($file)) {
    37                 $status = 404;
    3838        } else {
    39                 $where = "D.fichier=".sql_quote(set_spip_doc($file))
    40                 . ($arg ? " AND D.id_document=".intval($arg): '');
    41 
    42                 $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);
    43                 if (!$doc) {
     39                if (!file_exists($file) OR !is_readable($file)) {
    4440                        $status = 404;
    4541                } else {
     42                        $where = "D.fichier=" . sql_quote(set_spip_doc($file))
     43                                . ($arg ? " AND D.id_document=" . intval($arg) : '');
    4644
    47                         // ETag pour gerer le status 304
    48                         $ETag = md5($file . ': '. filemtime($file));
    49                         if (isset($_SERVER['HTTP_IF_NONE_MATCH'])
    50                         AND $_SERVER['HTTP_IF_NONE_MATCH'] == $ETag) {
    51                                 http_status(304); // Not modified
    52                                 exit;
     45                        $doc = sql_fetsel("D.id_document, D.titre, D.fichier, T.mime_type, T.inclus, D.extension",
     46                                "spip_documents AS D LEFT JOIN spip_types_documents AS T ON D.extension=T.extension", $where);
     47                        if (!$doc) {
     48                                $status = 404;
    5349                        } else {
    54                                 header('ETag: '.$ETag);
    55                         }
    5650
    57                         //
    58                         // Verifier les droits de lecture du document
    59                         // en controlant la cle passee en argument
    60                         //
    61                         include_spip('inc/securiser_action');
    62                         $cle = _request('cle');
    63                         if (!verifier_cle_action($doc['id_document'].','.$f, $cle)) {
    64                                 spip_log("acces interdit $cle erronee");
    65                                 $status = 403;
     51                                // ETag pour gerer le status 304
     52                                $ETag = md5($file . ': ' . filemtime($file));
     53                                if (isset($_SERVER['HTTP_IF_NONE_MATCH'])
     54                                        AND $_SERVER['HTTP_IF_NONE_MATCH'] == $ETag
     55                                ) {
     56                                        http_status(304); // Not modified
     57                                        exit;
     58                                } else {
     59                                        header('ETag: ' . $ETag);
     60                                }
     61
     62                                //
     63                                // Verifier les droits de lecture du document
     64                                // en controlant la cle passee en argument
     65                                //
     66                                include_spip('inc/securiser_action');
     67                                $cle = _request('cle');
     68                                if (!verifier_cle_action($doc['id_document'] . ',' . $f, $cle)) {
     69                                        spip_log("acces interdit $cle erronee");
     70                                        $status = 403;
     71                                }
    6672                        }
    6773                }
    6874        }
    6975
    70         switch($status) {
     76        switch ($status) {
    7177
    72         case 403:
    73                 include_spip('inc/minipres');
    74                 echo minipres();
    75                 break;
     78                case 403:
     79                        include_spip('inc/minipres');
     80                        echo minipres();
     81                        break;
    7682
    77         case 404:
    78                 http_status(404);
    79                 include_spip('inc/minipres');
    80                 echo minipres(_T('erreur').' 404',
    81                         _T('medias:info_document_indisponible'));
    82                 break;
     83                case 404:
     84                        http_status(404);
     85                        include_spip('inc/minipres');
     86                        echo minipres(_T('erreur') . ' 404',
     87                                _T('medias:info_document_indisponible'));
     88                        break;
    8389
    84         default:
    85                 header("Content-Type: ". $doc['mime_type']);
     90                default:
     91                        header("Content-Type: " . $doc['mime_type']);
    8692
    87                 // pour les images ne pas passer en attachment
    88                 // sinon, lorsqu'on pointe directement sur leur adresse,
    89                 // le navigateur les downloade au lieu de les afficher
     93                        // pour les images ne pas passer en attachment
     94                        // sinon, lorsqu'on pointe directement sur leur adresse,
     95                        // le navigateur les downloade au lieu de les afficher
    9096
    91                 if ($doc['inclus']=='non') {
     97                        if ($doc['inclus'] == 'non') {
    9298
    93                   // Si le fichier a un titre avec extension,
    94                   // ou si c'est un nom bien connu d'Unix, le prendre
    95                   // sinon l'ignorer car certains navigateurs pataugent
     99                                // Si le fichier a un titre avec extension,
     100                                // ou si c'est un nom bien connu d'Unix, le prendre
     101                                // sinon l'ignorer car certains navigateurs pataugent
    96102
    97                         $f = basename($file);
    98                         if (isset($doc['titre'])
    99                                 AND (preg_match('/^\w+[.]\w+$/', $doc['titre']) OR $doc['titre'] == 'Makefile'))
    100                                 $f = $doc['titre'];
     103                                $f = basename($file);
     104                                if (isset($doc['titre'])
     105                                        AND (preg_match('/^\w+[.]\w+$/', $doc['titre']) OR $doc['titre'] == 'Makefile')
     106                                ) {
     107                                        $f = $doc['titre'];
     108                                }
    101109
    102                         // ce content-type est necessaire pour eviter des corruptions de zip dans ie6
    103                         header('Content-Type: application/octet-stream');
     110                                // ce content-type est necessaire pour eviter des corruptions de zip dans ie6
     111                                header('Content-Type: application/octet-stream');
    104112
    105                         header("Content-Disposition: attachment; filename=\"$f\";");
    106                         header("Content-Transfer-Encoding: binary");
     113                                header("Content-Disposition: attachment; filename=\"$f\";");
     114                                header("Content-Transfer-Encoding: binary");
    107115
    108                         // fix for IE catching or PHP bug issue
    109                         header("Pragma: public");
    110                         header("Expires: 0"); // set expiration time
    111                         header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     116                                // fix for IE catching or PHP bug issue
     117                                header("Pragma: public");
     118                                header("Expires: 0"); // set expiration time
     119                                header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    112120
    113                 }
     121                        }
    114122
    115                 if ($cl = filesize($file))
    116                         header("Content-Length: ". $cl);
     123                        if ($cl = filesize($file)) {
     124                                header("Content-Length: " . $cl);
     125                        }
    117126
    118                 readfile($file);
    119                 break;
     127                        readfile($file);
     128                        break;
    120129        }
    121130
  • _core_/plugins/medias/action/ajouter_documents.php

    r93092 r93616  
    1515 *
    1616 * @package SPIP\Medias\Action
    17 **/
    18 
    19 if (!defined("_ECRIRE_INC_VERSION")) return;
     17 **/
     18
     19if (!defined("_ECRIRE_INC_VERSION")) {
     20        return;
     21}
    2022
    2123include_spip('inc/getdocument');
     
    4143 *   Liste des id_documents inserés
    4244 */
    43 function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet, $mode){
    44         $ajouter_un_document = charger_fonction('ajouter_un_document','action');
     45function action_ajouter_documents_dist($id_document, $files, $objet, $id_objet, $mode) {
     46        $ajouter_un_document = charger_fonction('ajouter_un_document', 'action');
    4547        $ajoutes = array();
    4648
    4749        // on ne peut mettre qu'un seul document a la place d'un autre ou en vignette d'un autre
    48         if (intval($id_document)){
     50        if (intval($id_document)) {
    4951                $ajoutes[] = $ajouter_un_document($id_document, reset($files), $objet, $id_objet, $mode);
    50         }
    51         else
    52                 foreach($files as $file){
     52        } else {
     53                foreach ($files as $file) {
    5354                        $ajoutes[] = $ajouter_un_document('new', $file, $objet, $id_objet, $mode);
    5455                }
     56        }
     57
    5558        return $ajoutes;
    5659}
     
    6467 * @param array $file
    6568 *   Propriétes au format $_FILE étendu :
    66  * 
     69 *
    6770 *   - string tmp_name : source sur le serveur
    6871 *   - string name : nom du fichier envoye
     
    8083 *   - int : l'id_document ajouté (opération réussie)
    8184 *   - string : une erreur s'est produit, la chaine est le message d'erreur
    82  * 
     85 *
    8386 */
    8487function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, $mode) {
     
    9295        // et on aura une collision en cas de changement de file system
    9396        $file['name'] = strtolower(translitteration($file['name']));
    94        
     97
    9598        // Pouvoir definir dans mes_options.php que l'on veut titrer tous les documents par d?faut
    96         if (!defined('_TITRER_DOCUMENTS')) { define('_TITRER_DOCUMENTS', false); }
    97 
    98         $titrer = isset($file['titrer'])?$file['titrer']:_TITRER_DOCUMENTS;
    99         $mode = ((isset($file['mode']) AND $file['mode'])?$file['mode']:$mode);
     99        if (!defined('_TITRER_DOCUMENTS')) {
     100                define('_TITRER_DOCUMENTS', false);
     101        }
     102
     103        $titrer = isset($file['titrer']) ? $file['titrer'] : _TITRER_DOCUMENTS;
     104        $mode = ((isset($file['mode']) AND $file['mode']) ? $file['mode'] : $mode);
    100105
    101106        include_spip('inc/modifier');
    102         if (isset($file['distant']) AND $file['distant'] AND !in_array($mode,array('choix','auto','image','document'))) {
     107        if (isset($file['distant']) AND $file['distant'] AND !in_array($mode, array('choix', 'auto', 'image', 'document'))) {
    103108                include_spip('inc/distant');
    104109                $file['tmp_name'] = _DIR_RACINE . copie_locale($source);
     
    118123                        # $a['fichier'] est une copie locale du fichier
    119124
    120                         $infos = renseigner_taille_dimension_image($champs['fichier'],$champs['extension'], true);
     125                        $infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension'], true);
    121126                        // on ignore erreur eventuelle sur $infos car on est distant, ca ne marche pas forcement
    122                         if (is_array($infos)){
     127                        if (is_array($infos)) {
    123128                                $champs = array_merge($champs, $infos);
    124129                        }
    125130
    126131                        unset($champs['type_image']);
    127                 }
    128                 // on ne doit plus arriver ici, car l'url distante a ete verifiee a la saisie !
     132                } // on ne doit plus arriver ici, car l'url distante a ete verifiee a la saisie !
    129133                else {
    130134                        spip_log("Echec du lien vers le document $source, abandon");
     135
    131136                        return $a; // message d'erreur
    132137                }
    133         }
    134         else { // pas distant
     138        } else { // pas distant
    135139
    136140                $champs = array(
    137141                        'distant' => 'non'
    138142                );
    139                
     143
    140144                $type_image = ''; // au pire
    141145                $champs['titre'] = '';
    142                 if ($titrer){
    143                         $titre = substr($nom_envoye,0, strrpos($nom_envoye, ".")); // Enlever l'extension du nom du fichier
     146                if ($titrer) {
     147                        $titre = substr($nom_envoye, 0, strrpos($nom_envoye, ".")); // Enlever l'extension du nom du fichier
    144148                        $titre = preg_replace(',[[:punct:][:space:]]+,u', ' ', $titre);
    145149                        $champs['titre'] = preg_replace(',\.([^.]+)$,', '', $titre);
    146150                }
    147151
    148                 if (!is_array($fichier = fixer_fichier_upload($file, $mode)))
    149                         return is_string($fichier)?$fichier:_T("medias:erreur_upload_type_interdit",array('nom'=>$file['name']));
    150                
     152                if (!is_array($fichier = fixer_fichier_upload($file, $mode))) {
     153                        return is_string($fichier) ? $fichier : _T("medias:erreur_upload_type_interdit", array('nom' => $file['name']));
     154                }
     155
    151156                $champs['inclus'] = $fichier['inclus'];
    152157                $champs['extension'] = $fichier['extension'];
     
    161166                 * -* ses metadonnées si une fonction de metadatas/ est présente
    162167                 */
    163                 $infos = renseigner_taille_dimension_image($champs['fichier'],$champs['extension']);
    164                 if (is_string($infos))
    165                         return $infos; // c'est un message d'erreur !
    166                
    167                 $champs = array_merge($champs,$infos);
     168                $infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension']);
     169                if (is_string($infos)) {
     170                        return $infos;
     171                } // c'est un message d'erreur !
     172
     173                $champs = array_merge($champs, $infos);
    168174
    169175                // Si mode == 'choix', fixer le mode image/document
    170                 if (in_array($mode,array('choix','auto'))) {
    171                         $choisir_mode_document = charger_fonction('choisir_mode_document','inc');
     176                if (in_array($mode, array('choix', 'auto'))) {
     177                        $choisir_mode_document = charger_fonction('choisir_mode_document', 'inc');
    172178                        $mode = $choisir_mode_document($champs, $champs['inclus'] == 'image', $objet);
    173179                }
    174180                $champs['mode'] = $mode;
    175181
    176                 if (($test = verifier_taille_document_acceptable($champs))!==true){
     182                if (($test = verifier_taille_document_acceptable($champs)) !== true) {
    177183                        spip_unlink($champs['fichier']);
     184
    178185                        return $test; // erreur sur les dimensions du fichier
    179186                }
     
    185192
    186193        // si le media est pas renseigne, le faire, en fonction de l'extension
    187         if (!isset($champs['media'])){
    188                 $champs['media'] = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($champs['extension']));
    189         }
    190        
     194        if (!isset($champs['media'])) {
     195                $champs['media'] = sql_getfetsel('media_defaut', 'spip_types_documents',
     196                        'extension=' . sql_quote($champs['extension']));
     197        }
     198
    191199        // lier le parent si necessaire
    192         if ($id_objet=intval($id_objet) AND $objet)
     200        if ($id_objet = intval($id_objet) AND $objet) {
    193201                $champs['parents'][] = "$objet|$id_objet";
     202        }
    194203
    195204        // "mettre a jour un document" si on lui
    196205        // passe un id_document
    197         if ($id_document=intval($id_document)){
     206        if ($id_document = intval($id_document)) {
    198207                unset($champs['titre']); // garder le titre d'origine
    199208                unset($champs['date']); // garder la date d'origine
     
    205214        include_spip('action/editer_document');
    206215        // Installer le document dans la base
    207         if (!$id_document){
    208                 if ($id_document = document_inserer())
    209                         spip_log ("ajout du document ".$file['tmp_name']." ".$file['name']."  (M '$mode' T '$objet' L '$id_objet' D '$id_document')",'medias');
    210                 else
    211                         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);
    212         }
    213         if (!$id_document)
    214                 return _T('medias:erreur_insertion_document_base',array('fichier'=>"<em>".$file['name']."</em>"));
    215        
    216         document_modifier($id_document,$champs);
     216        if (!$id_document) {
     217                if ($id_document = document_inserer()) {
     218                        spip_log("ajout du document " . $file['tmp_name'] . " " . $file['name'] . "  (M '$mode' T '$objet' L '$id_objet' D '$id_document')",
     219                                'medias');
     220                } else {
     221                        spip_log("Echec insert_document() du document " . $file['tmp_name'] . " " . $file['name'] . "  (M '$mode' T '$objet' L '$id_objet' D '$id_document')",
     222                                'medias' . _LOG_ERREUR);
     223                }
     224        }
     225        if (!$id_document) {
     226                return _T('medias:erreur_insertion_document_base', array('fichier' => "<em>" . $file['name'] . "</em>"));
     227        }
     228
     229        document_modifier($id_document, $champs);
    217230
    218231        // permettre aux plugins de faire des modifs a l'ajout initial
     
    225238                                'table_objet' => 'documents',
    226239                                'spip_table_objet' => 'spip_documents',
    227                                 'type' =>'document',
     240                                'type' => 'document',
    228241                                'id_objet' => $id_document,
    229242                                'champs' => array_keys($champs),
     
    236249        );
    237250
    238         return $id_document ;
     251        return $id_document;
    239252}
    240253
     
    242255/**
    243256 * Corrige l'extension du fichier dans quelques cas particuliers
    244  * 
     257 *
    245258 * @note
    246259 *     Une extension 'pdf ' passe dans la requête de contrôle
     
    249262 * @todo
    250263 *     À passer dans base/typedoc
    251  * 
     264 *
    252265 * @param string $ext
    253266 * @return string
     
    257270        switch ($ext) {
    258271                case 'htm':
    259                         $ext='html';
     272                        $ext = 'html';
    260273                        break;
    261274                case 'jpeg':
    262                         $ext='jpg';
     275                        $ext = 'jpg';
    263276                        break;
    264277                case 'tiff':
    265                         $ext='tif';
     278                        $ext = 'tif';
    266279                        break;
    267280                case 'aif':
    268                         $ext='aiff';
     281                        $ext = 'aiff';
    269282                        break;
    270283                case 'mpeg':
    271                         $ext='mpg';
     284                        $ext = 'mpg';
    272285                        break;
    273286        }
     287
    274288        return $ext;
    275289}
     
    277291/**
    278292 * Vérifie la possibilité d'uploader une extension
    279  * 
     293 *
    280294 * Vérifie aussi si l'extension est autorisée pour le mode demandé
    281295 * si on connait le mode à ce moment là
     
    291305 *     - false ou message d'erreur si l'extension est refusée
    292306 */
    293 function verifier_upload_autorise($source, $mode = ''){
    294         $infos = array('fichier'=>$source);
     307function verifier_upload_autorise($source, $mode = '') {
     308        $infos = array('fichier' => $source);
    295309        $res = false;
    296310        if (preg_match(",\.([a-z0-9]+)(\?.*)?$,i", $source, $match)
    297           AND $ext = $match[1]){
    298                
    299           $ext = corriger_extension(strtolower($ext));
    300                 if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'"))
    301                         $infos = array_merge($infos,$res);
    302         }
    303         if (!$res){
    304                 if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension='zip' AND upload='oui'")){
    305                         $infos = array_merge($infos,$res);
     311                AND $ext = $match[1]
     312        ) {
     313
     314                $ext = corriger_extension(strtolower($ext));
     315                if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents",
     316                        "extension=" . sql_quote($ext) . " AND upload='oui'")
     317                ) {
     318                        $infos = array_merge($infos, $res);
     319                }
     320        }
     321        if (!$res) {
     322                if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents",
     323                        "extension='zip' AND upload='oui'")
     324                ) {
     325                        $infos = array_merge($infos, $res);
    306326                        $res['autozip'] = true;
    307327                }
    308328        }
    309         if ($mode AND $res){
     329        if ($mode AND $res) {
    310330                // verifier en fonction du mode si une fonction est proposee
    311                 if ($verifier_document_mode = charger_fonction("verifier_document_mode_".$mode,"inc",true)){
     331                if ($verifier_document_mode = charger_fonction("verifier_document_mode_" . $mode, "inc", true)) {
    312332                        $check = $verifier_document_mode($infos); // true ou message d'erreur sous forme de chaine
    313                         if ($check!==true)
     333                        if ($check !== true) {
    314334                                $res = $check;
     335                        }
    315336                }
    316337        }
    317338
    318339        if (!$res OR is_string($res)) {
    319                 spip_log("Upload $source interdit ($res)",_LOG_INFO_IMPORTANTE);
     340                spip_log("Upload $source interdit ($res)", _LOG_INFO_IMPORTANTE);
    320341        }
    321342
     
    326347/**
    327348 * Tester le type de document
    328  * 
     349 *
    329350 * - le document existe et n'est pas de taille 0 ?
    330351 * - interdit a l'upload ?
    331352 * - quelle extension dans spip_types_documents ?
    332353 * - est-ce "inclus" comme une image ?
    333  * 
     354 *
    334355 * Le zipper si necessaire
    335  * 
     356 *
    336357 * @param array $file
    337358 *     Au format $_FILES
     
    340361 * @return array
    341362 */
    342 function fixer_fichier_upload($file, $mode = ''){
     363function fixer_fichier_upload($file, $mode = '') {
    343364        /**
    344          * On vérifie que le fichier existe et qu'il contient quelque chose 
     365         * On vérifie que le fichier existe et qu'il contient quelque chose
    345366         */
    346         if (is_array($row=verifier_upload_autorise($file['name'], $mode))) {
    347                 if (!isset($row['autozip'])){
     367        if (is_array($row = verifier_upload_autorise($file['name'], $mode))) {
     368                if (!isset($row['autozip'])) {
    348369                        $row['fichier'] = copier_document($row['extension'], $file['name'], $file['tmp_name']);
    349370                        /**
     
    351372                         * si non, on le supprime et on affiche une erreur
    352373                         */
    353                         if($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) {
    354                                 spip_log ("Echec copie du fichier ".$file['tmp_name']." (taille de fichier indéfinie)");
     374                        if ($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) {
     375                                spip_log("Echec copie du fichier " . $file['tmp_name'] . " (taille de fichier indéfinie)");
    355376                                spip_unlink(get_spip_doc($row['fichier']));
    356                                 return _T('medias:erreur_copie_fichier',array('nom'=> $file['tmp_name']));
    357                         }else
     377
     378                                return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name']));
     379                        } else {
    358380                                return $row;
     381                        }
    359382                }
    360383                // creer un zip comme demande
    361384                // pour encapsuler un fichier dont l'extension n'est pas supportee
    362                 else{
    363                
     385                else {
     386
    364387                        unset($row['autozip']);
    365388
    366389                        $ext = 'zip';
    367                         if (!$tmp_dir = tempnam(_DIR_TMP, 'tmp_upload'))
     390                        if (!$tmp_dir = tempnam(_DIR_TMP, 'tmp_upload')) {
    368391                                return false;
     392                        }
    369393
    370394                        spip_unlink($tmp_dir);
     
    372396
    373397                        include_spip('inc/charsets');
    374                         $tmp = $tmp_dir.'/'.translitteration($file['name']);
    375 
    376                         $file['name'] .= '.'.$ext; # conserver l'extension dans le nom de fichier, par exemple toto.js => toto.js.zip
     398                        $tmp = $tmp_dir . '/' . translitteration($file['name']);
     399
     400                        $file['name'] .= '.' . $ext; # conserver l'extension dans le nom de fichier, par exemple toto.js => toto.js.zip
    377401
    378402                        // deplacer le fichier tmp_name dans le dossier tmp
     
    380404
    381405                        include_spip('inc/pclzip');
    382                         $source = _DIR_TMP . basename($tmp_dir) . '.'.$ext;
     406                        $source = _DIR_TMP . basename($tmp_dir) . '.' . $ext;
    383407                        $archive = new PclZip($source);
    384408
    385409                        $v_list = $archive->create($tmp,
    386                                         PCLZIP_OPT_REMOVE_PATH, $tmp_dir,
    387                                         PCLZIP_OPT_ADD_PATH, '');
     410                                PCLZIP_OPT_REMOVE_PATH, $tmp_dir,
     411                                PCLZIP_OPT_ADD_PATH, '');
    388412
    389413                        effacer_repertoire_temporaire($tmp_dir);
    390414                        if (!$v_list) {
    391415                                spip_log("Echec creation du zip ");
     416
    392417                                return false;
    393418                        }
    394419
    395                         $row['fichier']  = copier_document($row['extension'], $file['name'], $source);
     420                        $row['fichier'] = copier_document($row['extension'], $file['name'], $source);
    396421                        spip_unlink($source);
    397422                        /**
     
    399424                         * si non, on le supprime et on affiche une erreur
    400425                         */
    401                         if($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) {
    402                                 spip_log ("Echec copie du fichier ".$file['tmp_name']." (taille de fichier indéfinie)");
     426                        if ($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) {
     427                                spip_log("Echec copie du fichier " . $file['tmp_name'] . " (taille de fichier indéfinie)");
    403428                                spip_unlink(get_spip_doc($row['fichier']));
    404                                 return _T('medias:erreur_copie_fichier',array('nom'=> $file['tmp_name']));
    405                         }else
     429
     430                                return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name']));
     431                        } else {
    406432                                return $row;
    407                 }
    408         }
    409         else
    410                 return $row; // retourner le message d'erreur
     433                        }
     434                }
     435        } else {
     436                return $row;
     437        } // retourner le message d'erreur
    411438}
    412439
    413440/**
    414441 * Verifier si le fichier respecte les contraintes de tailles
    415  * 
     442 *
    416443 * @param  array $infos
    417444 * @return bool|mixed|string
    418445 */
    419 function verifier_taille_document_acceptable(&$infos){
    420        
     446function verifier_taille_document_acceptable(&$infos) {
     447
    421448        // si ce n'est pas une image
    422449        if (!$infos['type_image']) {
    423                 if (defined('_DOC_MAX_SIZE') AND _DOC_MAX_SIZE > 0 AND $infos['taille'] > _DOC_MAX_SIZE*1024){
     450                if (defined('_DOC_MAX_SIZE') AND _DOC_MAX_SIZE > 0 AND $infos['taille'] > _DOC_MAX_SIZE*1024) {
    424451                        return _T('medias:info_doc_max_poids',
    425452                                array(
     
    429456                        );
    430457                }
    431         }
    432        
    433         // si c'est une image
     458        } // si c'est une image
    434459        else {
    435460
    436                 if ((defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH AND $infos['largeur']>_IMG_MAX_WIDTH)
    437                         OR (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT AND $infos['hauteur']>_IMG_MAX_HEIGHT) ){
     461                if ((defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH AND $infos['largeur'] > _IMG_MAX_WIDTH)
     462                        OR (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT AND $infos['hauteur'] > _IMG_MAX_HEIGHT)
     463                ) {
    438464                        $max_width = (defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH) ? _IMG_MAX_WIDTH : '*';
    439465                        $max_height = (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT) ? _IMG_MAX_HEIGHT : '*';
     
    441467                        // pas la peine d'embeter le redacteur avec ca si on a active le calcul des miniatures
    442468                        // on met directement a la taille maxi a la volee
    443                         if (isset($GLOBALS['meta']['creer_preview']) AND $GLOBALS['meta']['creer_preview']=='oui'){
     469                        if (isset($GLOBALS['meta']['creer_preview']) AND $GLOBALS['meta']['creer_preview'] == 'oui') {
    444470                                include_spip('inc/filtres');
    445471                                $img = filtrer('image_reduire', $infos['fichier'], $max_width, $max_height);
    446472                                $img = extraire_attribut($img, 'src');
    447473                                $img = supprimer_timestamp($img);
    448                                 if (@file_exists($img) AND $img!==$infos['fichier']){
     474                                if (@file_exists($img) AND $img !== $infos['fichier']) {
    449475                                        spip_unlink($infos['fichier']);
    450476                                        @rename($img, $infos['fichier']);
     
    456482                        }
    457483
    458                         if ((defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH AND $infos['largeur']>_IMG_MAX_WIDTH)
    459                                 OR (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT AND $infos['hauteur']>_IMG_MAX_HEIGHT) ){
     484                        if ((defined('_IMG_MAX_WIDTH') AND _IMG_MAX_WIDTH AND $infos['largeur'] > _IMG_MAX_WIDTH)
     485                                OR (defined('_IMG_MAX_HEIGHT') AND _IMG_MAX_HEIGHT AND $infos['hauteur'] > _IMG_MAX_HEIGHT)
     486                        ) {
    460487
    461488                                return _T('medias:info_image_max_taille',
     
    463490                                                'maxi' =>
    464491                                                        _T('info_largeur_vignette',
    465                                                                 array('largeur_vignette' => $max_width,
    466                                                                         'hauteur_vignette' => $max_height)),
     492                                                                array(
     493                                                                        'largeur_vignette' => $max_width,
     494                                                                        'hauteur_vignette' => $max_height
     495                                                                )),
    467496                                                'actuel' =>
    468497                                                        _T('info_largeur_vignette',
    469                                                                 array('largeur_vignette' => $infos['largeur'],
    470                                                                         'hauteur_vignette' => $infos['hauteur']))
     498                                                                array(
     499                                                                        'largeur_vignette' => $infos['largeur'],
     500                                                                        'hauteur_vignette' => $infos['hauteur']
     501                                                                ))
    471502                                        ));
    472503                        }
    473504                }
    474505
    475                 if (defined('_IMG_MAX_SIZE') AND  _IMG_MAX_SIZE > 0 AND $infos['taille'] > _IMG_MAX_SIZE*1024){
     506                if (defined('_IMG_MAX_SIZE') AND _IMG_MAX_SIZE > 0 AND $infos['taille'] > _IMG_MAX_SIZE*1024) {
    476507                        return _T('medias:info_image_max_poids',
    477508                                array(
     
    486517
    487518        // verifier en fonction du mode si une fonction est proposee
    488         if ($verifier_document_mode = charger_fonction("verifier_document_mode_".$infos['mode'],"inc",true))
     519        if ($verifier_document_mode = charger_fonction("verifier_document_mode_" . $infos['mode'], "inc", true)) {
    489520                return $verifier_document_mode($infos);
     521        }
    490522
    491523        return true;
  • _core_/plugins/medias/action/changer_mode_document.php

    r93092 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517
     
    2325 * @return void
    2426 */
    25 function action_changer_mode_document_dist($id_document = null, $mode = null){
    26         if (is_null($id_document) OR is_null($mode)){
     27function action_changer_mode_document_dist($id_document = null, $mode = null) {
     28        if (is_null($id_document) OR is_null($mode)) {
    2729                $securiser_action = charger_fonction('securiser_action', 'inc');
    2830                $arg = $securiser_action();
    2931
    30                 if (!preg_match(",^(\d+)\W(\w+)$,", $arg, $r))
     32                if (!preg_match(",^(\d+)\W(\w+)$,", $arg, $r)) {
    3133                        spip_log("action_changer_mode_document $arg pas compris");
    32                 else {
     34                } else {
    3335                        array_shift($r);
    34             list($id_document, $mode) = $r;
     36                        list($id_document, $mode) = $r;
    3537                }
    3638        }
     
    3840        if ($id_document
    3941                AND include_spip('inc/autoriser')
    40           AND autoriser('modifier','document',$id_document))
     42                AND autoriser('modifier', 'document', $id_document)
     43        ) {
    4144                action_changer_mode_document_post($id_document, $mode);
     45        }
    4246}
    4347
    4448// http://code.spip.net/@action_changer_mode_document_post
    45 function action_changer_mode_document_post($id_document, $mode){
     49function action_changer_mode_document_post($id_document, $mode) {
    4650        // - id_document le doc a modifier
    4751        // - mode le mode a lui donner
    4852        if ($id_document = intval($id_document)
    49         AND in_array($mode, array('vignette', 'image', 'document'))) {
     53                AND in_array($mode, array('vignette', 'image', 'document'))
     54        ) {
    5055                include_spip('action/editer_document');
    51                 document_modifier($id_document,array('mode'=>$mode));
     56                document_modifier($id_document, array('mode' => $mode));
    5257        }
    5358}
     59
    5460?>
  • _core_/plugins/medias/action/copier_local.php

    r93092 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517/**
     
    2628function action_copier_local_dist($id_document = null) {
    2729
    28         if (!$id_document){
     30        if (!$id_document) {
    2931                // Recupere les arguments.
    3032                $securiser_action = charger_fonction('securiser_action', 'inc');
    3133                $arg = $securiser_action();
    32        
     34
    3335                $id_document = intval($arg);
    3436        }
     
    3638        if (!$id_document) {
    3739                spip_log("action_copier_local_dist $arg pas compris");
     40
    3841                return false;
    39         } else  {
     42        } else {
    4043                // arguments recuperes, on peut maintenant appeler la fonction.
    4144                return action_copier_local_post($id_document);
     
    5962        if ($fichier) {
    6063                $fichier = _DIR_RACINE . $fichier;
    61                 $files[] = array('tmp_name'=>$fichier,'name'=>basename($fichier));
    62                 $ajouter_documents = charger_fonction('ajouter_documents','action');
     64                $files[] = array('tmp_name' => $fichier, 'name' => basename($fichier));
     65                $ajouter_documents = charger_fonction('ajouter_documents', 'action');
    6366                spip_log("convertit doc $id_document en local: $source => $fichier");
    6467                $liste = array();
    65                 $ajouter_documents($id_document,$files,'',0,$row['mode'],$liste);
     68                $ajouter_documents($id_document, $files, '', 0, $row['mode'], $liste);
    6669
    6770                spip_unlink($fichier);
    68                
     71
    6972                // ajouter l'origine du document aux credits
    7073                include_spip('action/editer_document');
    71                 document_modifier($id_document,array('credits'=>($row['credits']?$row['credits'].', ':'').$source));
     74                document_modifier($id_document, array('credits' => ($row['credits'] ? $row['credits'] . ', ' : '') . $source));
     75
    7276                return true;
    73                
     77
    7478        } else {
    7579                spip_log("echec copie locale $source");
    7680        }
    77         return _T('medias:erreur_copie_fichier',array('nom'=>$source));
     81
     82        return _T('medias:erreur_copie_fichier', array('nom' => $source));
    7883}
    7984
  • _core_/plugins/medias/action/dissocier_document.php

    r93092 r93616  
    1515 *
    1616 * @package SPIP\Medias\Action
    17 **/
     17 **/
    1818
    19 if (!defined("_ECRIRE_INC_VERSION")) return;
     19if (!defined("_ECRIRE_INC_VERSION")) {
     20        return;
     21}
    2022
    2123
     
    2931 *     - 4eme arg : suppr = true, false sinon
    3032 *     - 5eme arg : safe = true, false sinon
    31  * 
     33 *
    3234 * @return void
    3335 */
    34 function action_dissocier_document_dist($arg = null){
    35         if(is_null($arg)){
     36function action_dissocier_document_dist($arg = null) {
     37        if (is_null($arg)) {
    3638                $securiser_action = charger_fonction('securiser_action', 'inc');
    3739                $arg = $securiser_action();
     
    3941
    4042        // attention au cas ou id_objet est negatif !
    41         if (strncmp($arg,'-',1)==0){
    42                 $arg = explode('-',substr($arg,1));
     43        if (strncmp($arg, '-', 1) == 0) {
     44                $arg = explode('-', substr($arg, 1));
    4345                list($id_objet, $objet, $document) = $arg;
    4446                $id_objet = -$id_objet;
    45         }
    46         else {
    47                 $arg = explode('-',$arg);
     47        } else {
     48                $arg = explode('-', $arg);
    4849                list($id_objet, $objet, $document) = $arg;
    4950        }
    5051
    5152        $suppr = $check = false;
    52         if (count($arg)>3 AND $arg[3]=='suppr')
     53        if (count($arg) > 3 AND $arg[3] == 'suppr') {
    5354                $suppr = true;
    54         if (count($arg)>4 AND $arg[4]=='safe')
     55        }
     56        if (count($arg) > 4 AND $arg[4] == 'safe') {
    5557                $check = true;
    56         if ($id_objet=intval($id_objet)
     58        }
     59        if ($id_objet = intval($id_objet)
    5760                AND (
    58                         ($id_objet<0 AND $id_objet==-$GLOBALS['visiteur_session']['id_auteur'])
    59                         OR autoriser('dissocierdocuments',$objet,$id_objet)
    60                 ))
     61                        ($id_objet < 0 AND $id_objet == -$GLOBALS['visiteur_session']['id_auteur'])
     62                        OR autoriser('dissocierdocuments', $objet, $id_objet)
     63                )
     64        ) {
    6165                dissocier_document($document, $objet, $id_objet, $suppr, $check);
    62         else
    63                 spip_log("Interdit de modifier $objet $id_objet","spip");
     66        } else {
     67                spip_log("Interdit de modifier $objet $id_objet", "spip");
     68        }
    6469}
    6570
     
    7883 */
    7984function supprimer_lien_document($id_document, $objet, $id_objet, $supprime = false, $check = false) {
    80         if (!$id_document = intval($id_document))
     85        if (!$id_document = intval($id_document)) {
    8186                return false;
     87        }
    8288
    8389        // [TODO] le mettre en paramètre de la fonction ?
    84         $serveur = ''; 
     90        $serveur = '';
    8591
    8692        // D'abord on ne supprime pas, on dissocie
    8793        include_spip('action/editer_liens');
    88         objet_dissocier(array('document'=>$id_document),array($objet=>$id_objet));
     94        objet_dissocier(array('document' => $id_document), array($objet => $id_objet));
    8995
    9096        // Si c'est une vignette, l'eliminer du document auquel elle appartient
    9197        // cas tordu peu probable
    92         sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=".$id_document);
     98        sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=" . $id_document);
    9399
    94100        // verifier son statut apres une suppression de lien
     
    118124                $spip_table_objet = table_objet_sql($objet);
    119125                $table_objet = table_objet($objet);
    120                 $id_table_objet = id_table_objet($objet,$serveur);
    121                 $champs = sql_fetsel('*',$spip_table_objet,addslashes($id_table_objet)."=".intval($id_objet));
     126                $id_table_objet = id_table_objet($objet, $serveur);
     127                $champs = sql_fetsel('*', $spip_table_objet, addslashes($id_table_objet) . "=" . intval($id_objet));
    122128
    123                 $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc');
    124                 $marquer_doublons_doc($champs,$id_objet,$objet,$id_table_objet,$table_objet,$spip_table_objet, '', $serveur);
     129                $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc');
     130                $marquer_doublons_doc($champs, $id_objet, $objet, $id_table_objet, $table_objet, $spip_table_objet, '', $serveur);
    125131        }
    126132
     
    128134        // et si demande
    129135        // ici on ne bloque pas la suppression d'un document rattache a un autre
    130         if ($supprime AND !sql_countsel('spip_documents_liens', "objet!='document' AND id_document=".$id_document)){
    131                 $supprimer_document = charger_fonction('supprimer_document','action');
     136        if ($supprime AND !sql_countsel('spip_documents_liens', "objet!='document' AND id_document=" . $id_document)) {
     137                $supprimer_document = charger_fonction('supprimer_document', 'action');
     138
    132139                return $supprimer_document($id_document);
    133140        }
     
    152159 * @return void
    153160 */
    154 function dissocier_document($document, $objet, $id_objet, $supprime = false, $check = false){
    155         if ($id_document=intval($document)) {
     161function dissocier_document($document, $objet, $id_objet, $supprime = false, $check = false) {
     162        if ($id_document = intval($document)) {
    156163                supprimer_lien_document($id_document, $objet, $id_objet, $supprime, $check);
    157         }
    158         else {
    159                 list($image,$mode) = explode('/',$document);
    160                 $image = ($image=='I');
    161                 $typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $image  ? '' : 'NOT');
     164        } else {
     165                list($image, $mode) = explode('/', $document);
     166                $image = ($image == 'I');
     167                $typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $image ? '' : 'NOT');
    162168
    163                 $obj = "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet);
     169                $obj = "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet);
    164170
    165171                $s = sql_select('docs.id_document',
    166172                        "spip_documents AS docs LEFT JOIN spip_documents_liens AS l ON l.id_document=docs.id_document",
    167                         "$obj AND vu='non' AND docs.mode=".sql_quote($mode)." AND $typdoc");
     173                        "$obj AND vu='non' AND docs.mode=" . sql_quote($mode) . " AND $typdoc");
    168174                while ($t = sql_fetch($s)) {
    169175                        supprimer_lien_document($t['id_document'], $objet, $id_objet, $supprime, $check);
     
    177183        }
    178184}
     185
    179186?>
  • _core_/plugins/medias/action/editer_document.php

    r93542 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517
     
    2224function action_editer_document_dist($arg = null) {
    2325
    24         if (is_null($arg)){
     26        if (is_null($arg)) {
    2527                $securiser_action = charger_fonction('securiser_action', 'inc');
    2628                $arg = $securiser_action();
     
    3234        }
    3335
    34         if (!$id_document)
    35                 return array(0,''); // erreur
     36        if (!$id_document) {
     37                return array(0, '');
     38        } // erreur
    3639
    3740        $err = document_modifier($id_document);
    3841
    39         return array($id_document,$err);
     42        return array($id_document, $err);
    4043}
    4144
     
    5558        );
    5659
    57         if ($set)
     60        if ($set) {
    5861                $champs = array_merge($champs, $set);
     62        }
    5963
    6064        // Envoyer aux plugins
     
    9498        include_spip('inc/modifier');
    9599        include_spip('inc/filtres');
    96        
     100
    97101        // champs normaux
    98102        $champs = collecter_requests(
    99                 // white list
    100                 objet_info('document','champs_editables'),
     103        // white list
     104                objet_info('document', 'champs_editables'),
    101105                // black list
    102106                array('parents', 'ajout_parents'),
     
    110114
    111115        // Si le document est publie, invalider les caches et demander sa reindexation
    112         $t = sql_getfetsel("statut", "spip_documents", 'id_document='.intval($id_document));
     116        $t = sql_getfetsel("statut", "spip_documents", 'id_document=' . intval($id_document));
    113117        if ($t == 'publie') {
    114118                $invalideur = "id='id_document/$id_document'";
    115119                $indexation = true;
    116120        }
    117        
     121
    118122        $ancien_fichier = "";
    119123        // si le fichier est modifie, noter le nom de l'ancien pour faire le menage
    120         if (isset($champs['fichier'])){
    121                 $ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document));
     124        if (isset($champs['fichier'])) {
     125                $ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document));
    122126        }
    123127
     
    128132                        'indexation' => $indexation
    129133                ),
    130                 $champs))
     134                $champs)
     135        ) {
    131136                return $err;
     137        }
    132138
    133139        // nettoyer l'ancien fichier si necessaire
    134140        if (isset($champs['fichier']) // un plugin a pu interdire la modif du fichier en virant le champ
    135          AND $champs['fichier']
    136          AND $ancien_fichier // on avait bien note le nom du fichier avant la modif
    137          AND $ancien_fichier!==$champs['fichier'] // et il a ete modifie
    138          AND @file_exists($f = get_spip_doc($ancien_fichier)))
    139                 spip_unlink($f);
     141                AND $champs['fichier']
     142                AND $ancien_fichier // on avait bien note le nom du fichier avant la modif
     143                AND $ancien_fichier !== $champs['fichier'] // et il a ete modifie
     144                AND @file_exists($f = get_spip_doc($ancien_fichier))
     145        ) {
     146                spip_unlink($f);
     147        }
    140148
    141149        // Changer le statut du document ?
    142150        // le statut n'est jamais fixe manuellement mais decoule de celui des objets lies
    143         $champs = collecter_requests(array('parents','ajouts_parents'),array(),$set);
    144         if(document_instituer($id_document,$champs)) {
     151        $champs = collecter_requests(array('parents', 'ajouts_parents'), array(), $set);
     152        if (document_instituer($id_document, $champs)) {
    145153
    146154                //
    147155                // Post-modifications
    148156                //
    149        
     157
    150158                // Invalider les caches
    151159                include_spip('inc/invalideur');
    152                 suivre_invalideur("id='id_document/$id_document'");     
     160                suivre_invalideur("id='id_document/$id_document'");
    153161        }
    154162
     
    164172 * @return bool
    165173 */
    166 function document_instituer($id_document, $champs = array()){
    167        
    168         $statut=isset($champs['statut'])?$champs['statut']:null;
    169         $date_publication = isset($champs['date_publication'])?$champs['date_publication']:null;
    170         if (isset($champs['parents']))
    171                 medias_revision_document_parents($id_document,$champs['parents']);
    172         if (isset($champs['ajout_parents']))
    173                 medias_revision_document_parents($id_document,$champs['ajout_parents'],true);
    174        
     174function document_instituer($id_document, $champs = array()) {
     175
     176        $statut = isset($champs['statut']) ? $champs['statut'] : null;
     177        $date_publication = isset($champs['date_publication']) ? $champs['date_publication'] : null;
     178        if (isset($champs['parents'])) {
     179                medias_revision_document_parents($id_document, $champs['parents']);
     180        }
     181        if (isset($champs['ajout_parents'])) {
     182                medias_revision_document_parents($id_document, $champs['ajout_parents'], true);
     183        }
     184
    175185        $row = sql_fetsel("statut,date_publication", "spip_documents", "id_document=$id_document");
    176186        $statut_ancien = $row['statut'];
     
    178188
    179189        /* Autodetermination du statut si non fourni */
    180         if (is_null($statut)){
     190        if (is_null($statut)) {
    181191                $statut = 'prepa';
    182192
    183                 $trouver_table = charger_fonction('trouver_table','base');
    184                 $res = sql_select('id_objet,objet','spip_documents_liens',"objet!='document' AND id_document=".intval($id_document));
     193                $trouver_table = charger_fonction('trouver_table', 'base');
     194                $res = sql_select('id_objet,objet', 'spip_documents_liens',
     195                        "objet!='document' AND id_document=" . intval($id_document));
    185196                // dans 10 ans, ca nous fera un bug a corriger vers 2018
    186197                // penser a ouvrir un ticket d'ici la :p
    187                 $date_publication=time()+10*365*24*3600;
     198                $date_publication = time()+10*365*24*3600;
    188199                include_spip('base/objets');
    189                 while($row = sql_fetch($res)){
     200                while ($row = sql_fetch($res)) {
    190201                        if (
    191202                                // cas particulier des rubriques qui sont publiees des qu'elles contiennent un document !
    192                           $row['objet']=='rubrique'
     203                                $row['objet'] == 'rubrique'
    193204                                // ou si objet publie selon sa declaration
    194                           OR objet_test_si_publie($row['objet'],$row['id_objet'])){
     205                                OR objet_test_si_publie($row['objet'], $row['id_objet'])
     206                        ) {
    195207                                $statut = 'publie';
    196                                 $date_publication=0;
     208                                $date_publication = 0;
    197209                                continue;
     210                        } // si pas publie, et article, il faut checker la date de post-publi eventuelle
     211                        elseif ($row['objet'] == 'article'
     212                                AND $row2 = sql_fetsel('date', 'spip_articles',
     213                                        'id_article=' . intval($row['id_objet']) . " AND statut='publie'")
     214                        ) {
     215                                $statut = 'publie';
     216                                $date_publication = min($date_publication, strtotime($row2['date']));
    198217                        }
    199                         // si pas publie, et article, il faut checker la date de post-publi eventuelle
    200                         elseif ($row['objet']=='article'
    201                           AND $row2 = sql_fetsel('date','spip_articles','id_article='.intval($row['id_objet'])." AND statut='publie'")){
    202                                 $statut = 'publie';
    203                                 $date_publication = min($date_publication,strtotime($row2['date']));
     218                }
     219                $date_publication = date('Y-m-d H:i:s', $date_publication);
     220                if ($statut == 'publie' AND $statut_ancien == 'publie' AND $date_publication == $date_publication_ancienne) {
     221                        return false;
     222                }
     223                if ($statut != 'publie' AND $statut_ancien != 'publie' AND $statut_ancien != '0') {
     224                        return false;
     225                }
     226        }
     227        if ($statut !== $statut_ancien
     228                OR $date_publication != $date_publication_ancienne
     229        ) {
     230                sql_updateq('spip_documents', array('statut' => $statut, 'date_publication' => $date_publication),
     231                        'id_document=' . intval($id_document));
     232                if ($statut !== $statut_ancien) {
     233                        $publier_rubriques = sql_allfetsel('id_objet', 'spip_documents_liens',
     234                                "objet='rubrique' AND id_document=" . intval($id_document));
     235                        if (count($publier_rubriques)) {
     236                                include_spip('inc/rubriques');
     237                                foreach ($publier_rubriques as $r) {
     238                                        calculer_rubriques_if($r['id_objet'], array('statut' => $statut), $statut_ancien, false);
     239                                }
    204240                        }
    205241                }
    206                 $date_publication = date('Y-m-d H:i:s',$date_publication);
    207                 if ($statut=='publie' AND $statut_ancien=='publie' AND $date_publication==$date_publication_ancienne)
    208                         return false;
    209                 if ($statut!='publie' AND $statut_ancien!='publie' AND $statut_ancien!='0')
    210                         return false;
    211         }
    212         if ($statut!==$statut_ancien
    213           OR $date_publication!=$date_publication_ancienne){
    214                 sql_updateq('spip_documents',array('statut'=>$statut,'date_publication'=>$date_publication),'id_document='.intval($id_document));
    215                 if ($statut!==$statut_ancien){
    216                         $publier_rubriques = sql_allfetsel('id_objet','spip_documents_liens',"objet='rubrique' AND id_document=".intval($id_document));
    217                         if (count($publier_rubriques)){
    218                                 include_spip('inc/rubriques');
    219                                 foreach($publier_rubriques as $r)
    220                                         calculer_rubriques_if($r['id_objet'],array('statut'=>$statut),$statut_ancien,false);
    221                         }
    222                 }
     242
    223243                return true;
    224244        }
     245
    225246        return false;
    226247}
     
    235256 * @param bool $ajout
    236257 */
    237 function medias_revision_document_parents($id_document, $parents = null, $ajout = false){
    238         if (!is_array($parents))
     258function medias_revision_document_parents($id_document, $parents = null, $ajout = false) {
     259        if (!is_array($parents)) {
    239260                return;
    240        
     261        }
     262
    241263        $insertions = array();
    242264        $objets_parents = array(); // array('article'=>array(12,23))
    243        
     265
    244266        // au format objet|id_objet
    245         foreach($parents as $p){
    246                 $p = explode('|',$p);
    247                 if (preg_match('/^[a-z0-9_]+$/i', $objet=$p[0])
    248                   AND $p[1]=intval($p[1])){ // securite
     267        foreach ($parents as $p) {
     268                $p = explode('|', $p);
     269                if (preg_match('/^[a-z0-9_]+$/i', $objet = $p[0])
     270                        AND $p[1] = intval($p[1])
     271                ) { // securite
    249272                        $objets_parents[$p[0]][] = $p[1];
    250273                }
    251274        }
    252        
     275
    253276        include_spip('action/editer_liens');
    254277        // les liens actuels
    255         $liens = objet_trouver_liens(array('document'=>$id_document),'*');
     278        $liens = objet_trouver_liens(array('document' => $id_document), '*');
    256279        $deja_parents = array();
    257280        // si ce n'est pas un ajout, il faut supprimer les liens actuels qui ne sont pas dans $objets_parents
    258         if (!$ajout){
    259                 foreach($liens as $k=>$lien)
    260                         if (!isset($objets_parents[$lien['objet']]) OR !in_array($lien['id_objet'],$objets_parents[$lien['objet']])) {
    261                                 if (autoriser('dissocierdocuments',$lien['objet'],$lien['id_objet'])){
    262                                         objet_dissocier(array('document'=>$id_document),array($lien['objet']=>$lien['id_objet']));
     281        if (!$ajout) {
     282                foreach ($liens as $k => $lien) {
     283                        if (!isset($objets_parents[$lien['objet']]) OR !in_array($lien['id_objet'], $objets_parents[$lien['objet']])) {
     284                                if (autoriser('dissocierdocuments', $lien['objet'], $lien['id_objet'])) {
     285                                        objet_dissocier(array('document' => $id_document), array($lien['objet'] => $lien['id_objet']));
    263286                                }
    264287                                unset($liens[$k]);
     288                        } else {
     289                                $deja_parents[$lien['objet']][] = $lien['id_objet'];
    265290                        }
    266                         else $deja_parents[$lien['objet']][] = $lien['id_objet'];
     291                }
    267292        }
    268293
    269294        // verifier les droits d'associer
    270         foreach($objets_parents as $objet=>$ids){
    271                 foreach($ids as $k=>$id){
    272                         if (!autoriser('associerdocuments',$objet,$id)){
     295        foreach ($objets_parents as $objet => $ids) {
     296                foreach ($ids as $k => $id) {
     297                        if (!autoriser('associerdocuments', $objet, $id)) {
    273298                                unset($objets_parents[$objet][$k]);
    274299                        }
    275300                }
    276301        }
    277         objet_associer(array('document'=>$id_document),$objets_parents);
     302        objet_associer(array('document' => $id_document), $objets_parents);
    278303
    279304}
     
    284309
    285310/**
    286  * Insertion d'un document 
     311 * Insertion d'un document
    287312 *
    288313 * @deprecated Utiliser document_inserer()
     
    295320
    296321/**
    297  * Modification d'un document 
     322 * Modification d'un document
    298323 *
    299324 * @deprecated Utiliser document_modifier()
     
    307332
    308333/**
    309  * Insituer un document 
     334 * Insituer un document
    310335 *
    311336 * @deprecated Utiliser document_instituer()
     
    314339 * @param array $champs
    315340 */
    316 function instituer_document($id_document, $champs = array()){
    317         return document_instituer($id_document,$champs);
    318 }
    319 
    320 /**
    321  * Réviser un document 
     341function instituer_document($id_document, $champs = array()) {
     342        return document_instituer($id_document, $champs);
     343}
     344
     345/**
     346 * Réviser un document
    322347 *
    323348 * @deprecated Utiliser document_modifier()
     
    327352 */
    328353function revision_document($id_document, $c = false) {
    329         return document_modifier($id_document,$c);
     354        return document_modifier($id_document, $c);
    330355}
    331356
  • _core_/plugins/medias/action/supprimer_document.php

    r93092 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517// http://code.spip.net/@supprimer_document
    1618function action_supprimer_document_dist($id_document = 0) {
    17         if (!$id_document){
    18                 $securiser_action = charger_fonction('securiser_action','inc');
     19        if (!$id_document) {
     20                $securiser_action = charger_fonction('securiser_action', 'inc');
    1921                $id_document = $securiser_action();
    2022        }
    2123        include_spip('inc/autoriser');
    22         if (!autoriser('supprimer','document',$id_document)){
    23                 spip_log("Echec : Suppression document $id_document interdite",_LOG_ERREUR);
     24        if (!autoriser('supprimer', 'document', $id_document)) {
     25                spip_log("Echec : Suppression document $id_document interdite", _LOG_ERREUR);
     26
    2427                return false;
    2528        }
    2629
    2730        // si c'etait une vignette, modifier le document source !
    28         if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette='.intval($id_document))){
     31        if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette=' . intval($id_document))) {
    2932                include_spip('action/editer_document');
    30                 document_modifier($source,array("id_vignette" => 0));
     33                document_modifier($source, array("id_vignette" => 0));
    3134        }
    3235
    3336        include_spip('inc/documents');
    34         if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.intval($id_document))){
    35                 spip_log("Echec : Suppression document $id_document : le document n'existe pas en base",_LOG_ERREUR);
     37        if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document))) {
     38                spip_log("Echec : Suppression document $id_document : le document n'existe pas en base", _LOG_ERREUR);
     39
    3640                return false;
    3741        }
    3842
    39         spip_log("Suppression du document $id_document (".$doc['fichier'].")");
     43        spip_log("Suppression du document $id_document (" . $doc['fichier'] . ")");
    4044        include_spip('action/editer_liens');
    4145
     
    4347        if ($doc['id_vignette']) {
    4448                action_supprimer_document_dist($doc['id_vignette']);
    45                 objet_dissocier(array('document'=>$doc['id_vignette']),'*');
     49                objet_dissocier(array('document' => $doc['id_vignette']), '*');
    4650        }
    4751        // Si c'est un document ayant des documents annexes (sous-titre, ...)
    4852        // les supprimer aussi
    49         $annexes = array_map('reset',sql_allfetsel("id_document","spip_documents_liens","objet='document' AND id_objet=".intval($id_document)));
    50         foreach($annexes as $id){
     53        $annexes = array_map('reset',
     54                sql_allfetsel("id_document", "spip_documents_liens", "objet='document' AND id_objet=" . intval($id_document)));
     55        foreach ($annexes as $id) {
    5156                action_supprimer_document_dist($id);
    5257        }
    5358
    5459        // dereferencer dans la base
    55         objet_dissocier(array('document'=>$id_document),'*');
    56         sql_delete('spip_documents', 'id_document='.intval($id_document));
     60        objet_dissocier(array('document' => $id_document), '*');
     61        sql_delete('spip_documents', 'id_document=' . intval($id_document));
    5762
    5863
     
    6166        if ($doc['distant'] == 'oui') {
    6267                include_spip('inc/distant');
    63                 if ($local = _DIR_RACINE . copie_locale($doc['fichier'],'test'))
     68                if ($local = _DIR_RACINE . copie_locale($doc['fichier'], 'test')) {
    6469                        spip_unlink($local);
     70                }
     71        } else {
     72                spip_unlink(get_spip_doc($doc['fichier']));
    6573        }
    66         else
    67                 spip_unlink(get_spip_doc($doc['fichier']));
    6874
    6975        pipeline('post_edition',
     
    7985                )
    8086        );
     87
    8188        return true;
    8289}
  • _core_/plugins/medias/action/supprimer_tous_orphelins.php

    r79783 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517include_spip('base/abstract_sql');
     
    1719function action_supprimer_tous_orphelins() {
    1820
    19         $securiser_action = charger_fonction('securiser_action','inc');
     21        $securiser_action = charger_fonction('securiser_action', 'inc');
    2022        $arg = $securiser_action();
    2123
    2224        //on recupere le contexte pour ne supprimer les orphelins que de ce dernier
    23         list($media,$distant,$statut,$sanstitre) = explode('/',$arg);
    24        
     25        list($media, $distant, $statut, $sanstitre) = explode('/', $arg);
     26
    2527        //critere sur le media
    26         if($media)
    27                 $select = "media=".sql_quote($media);
     28        if ($media) {
     29                $select = "media=" . sql_quote($media);
     30        }
    2831
    2932        //critere sur le distant
    30         if($distant)
    31                 $where[] = "distant=".sql_quote($distant);
     33        if ($distant) {
     34                $where[] = "distant=" . sql_quote($distant);
     35        }
    3236
    3337        //critere sur le statut
    34         if($statut)
    35                 $where[] = "statut REGEXP ".sql_quote("($statut)");
     38        if ($statut) {
     39                $where[] = "statut REGEXP " . sql_quote("($statut)");
     40        }
    3641
    3742        //critere sur le sanstitre
    38         if($sanstitre)
     43        if ($sanstitre) {
    3944                $where[] = "titre=''";
     45        }
    4046
    4147        //on isole les orphelins
    42         $select = sql_get_select("DISTINCT id_document","spip_documents_liens as oooo");
     48        $select = sql_get_select("DISTINCT id_document", "spip_documents_liens as oooo");
    4349        $cond = "spip_documents.id_document NOT IN ($select)";
    4450        $where[] = $cond;
    4551
    46         $ids_doc_orphelins = sql_select( "id_document", "spip_documents", $where );
     52        $ids_doc_orphelins = sql_select("id_document", "spip_documents", $where);
    4753
    48         $supprimer_document = charger_fonction('supprimer_document','action');
     54        $supprimer_document = charger_fonction('supprimer_document', 'action');
    4955        while ($row = sql_fetch($ids_doc_orphelins)) {
    5056                $supprimer_document($row['id_document']); // pour les orphelins du contexte, on traite avec la fonction existante
  • _core_/plugins/medias/action/tourner.php

    r93092 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517/**
     
    2729 */
    2830function action_tourner_dist($id_document = null, $angle = null) {
    29         if (is_null($id_document) OR is_null($angle)){
     31        if (is_null($id_document) OR is_null($angle)) {
    3032                $securiser_action = charger_fonction('securiser_action', 'inc');
    3133                $arg = $securiser_action();
     
    3335                if (!preg_match(",^\W*(\d+)\W?(-?\d+)$,", $arg, $r)) {
    3436                        spip_log("action_tourner_dist $arg pas compris");
    35                 }
    36                 else{
     37                } else {
    3738                        array_shift($r);
    38                         list($id_document,$angle) = $r;
     39                        list($id_document, $angle) = $r;
    3940                }
    4041
    4142        }
    42         if ($id_document AND autoriser('modifier','document',$id_document))
    43                 action_tourner_post($id_document,$angle);
     43        if ($id_document AND autoriser('modifier', 'document', $id_document)) {
     44                action_tourner_post($id_document, $angle);
     45        }
    4446}
    4547
     
    5456 * @return
    5557 */
    56 function action_tourner_post($id_document, $angle)
    57 {
    58         $row = sql_fetsel("fichier,extension", "spip_documents", "id_document=".intval($id_document));
     58function action_tourner_post($id_document, $angle) {
     59        $row = sql_fetsel("fichier,extension", "spip_documents", "id_document=" . intval($id_document));
    5960
    60         if (!$row) return;
     61        if (!$row) {
     62                return;
     63        }
    6164
    62         include_spip('inc/charsets');   # pour le nom de fichier
    63         include_spip('inc/documents'); 
     65        include_spip('inc/charsets');  # pour le nom de fichier
     66        include_spip('inc/documents');
    6467        // Fichier destination : on essaie toujours de repartir de l'original
    6568        $var_rot = $angle;
     
    7073        if (preg_match(',^(.*)-r(90|180|270)\.([^.]+)$,', $src, $match)) {
    7174                $effacer = $src;
    72                 $src = $match[1].'.'.$match[3];
     75                $src = $match[1] . '.' . $match[3];
    7376                $var_rot += intval($match[2]);
    7477        }
    75         $var_rot = ((360 + $var_rot) % 360); // 0, 90, 180 ou 270
     78        $var_rot = ((360+$var_rot)%360); // 0, 90, 180 ou 270
    7679
    7780        if ($var_rot > 0) {
    78                 $dest = preg_replace(',\.[^.]+$,', '-r'.$var_rot.'$0', $src);
     81                $dest = preg_replace(',\.[^.]+$,', '-r' . $var_rot . '$0', $src);
    7982                spip_log("rotation $var_rot $src : $dest");
    8083
    8184                include_spip('inc/filtres');
    8285                include_spip('public/parametrer'); // charger les fichiers fonctions #bugfix spip 2.1.0
    83                 $res = filtrer('image_rotation',$src,$var_rot);
    84                 $res = filtrer('image_format',$res,$row['extension']);
     86                $res = filtrer('image_rotation', $src, $var_rot);
     87                $res = filtrer('image_format', $res, $row['extension']);
    8588
    86                 list($hauteur,$largeur) = taille_image($res);
    87                 $res = extraire_attribut($res,'src');
     89                list($hauteur, $largeur) = taille_image($res);
     90                $res = extraire_attribut($res, 'src');
    8891
    8992                include_spip('inc/getdocument');
    90                 deplacer_fichier_upload($res,$dest);
    91         }
    92         else {
     93                deplacer_fichier_upload($res, $dest);
     94        } else {
    9395                $dest = $src;
    9496                $size_image = @getimagesize($dest);
     
    98100
    99101        // succes !
    100         if ($largeur>0 AND $hauteur>0) {
     102        if ($largeur > 0 AND $hauteur > 0) {
    101103                $set = array(
    102104                        'fichier' => set_spip_doc($dest),
    103                         'largeur'=>$largeur, 'hauteur'=>$hauteur,
    104                         'distant'=>'non' // le document n'est plus distant apres une transformation
    105                         );
    106                 if ($taille = @filesize($dest))
     105                        'largeur' => $largeur,
     106                        'hauteur' => $hauteur,
     107                        'distant' => 'non' // le document n'est plus distant apres une transformation
     108                );
     109                if ($taille = @filesize($dest)) {
    107110                        $set['taille'] = $taille;
    108                 sql_updateq('spip_documents', $set, "id_document=".intval($id_document));
     111                }
     112                sql_updateq('spip_documents', $set, "id_document=" . intval($id_document));
    109113                if ($effacer) {
    110114                        spip_log("rotation : j'efface $effacer");
     
    118122                                        'table_objet' => 'documents',
    119123                                        'spip_table_objet' => 'spip_documents',
    120                                         'type' =>'document',
     124                                        'type' => 'document',
    121125                                        'id_objet' => $id_document,
    122                                         'champs' => array('rotation'=>$angle,'orientation'=>$var_rot,'fichier'=>$row['fichier']),
    123                                         'action'=>'tourner',
     126                                        'champs' => array('rotation' => $angle, 'orientation' => $var_rot, 'fichier' => $row['fichier']),
     127                                        'action' => 'tourner',
    124128                                ),
    125129                                'data' => $set
     
    136140
    137141        if (function_exists('exif_read_data')
    138         AND $exif = exif_read_data($fichier)
    139         AND (
    140                 $ort = $exif['IFD0']['Orientation']
    141                 OR $ort = $exif['Orientation'])
     142                AND $exif = exif_read_data($fichier)
     143                AND (
     144                        $ort = $exif['IFD0']['Orientation']
     145                        OR $ort = $exif['Orientation'])
    142146        ) {
    143         spip_log("rotation: $ort");
     147                spip_log("rotation: $ort");
    144148                $rot = null;
    145149                switch ($ort) {
     
    151155                                $rot = -90;
    152156                }
    153                 if ($rot)
    154                         action_tourner_post(array(null,$id_document, $rot));
     157                if ($rot) {
     158                        action_tourner_post(array(null, $id_document, $rot));
     159                }
    155160        }
    156161}
  • _core_/plugins/medias/action/verifier_documents_brises.php

    r79783 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517/**
     
    2325
    2426        include_spip('inc/autoriser');
    25         if (autoriser('administrer','mediatheque')) {
     27        if (autoriser('administrer', 'mediatheque')) {
    2628                include_spip('inc/documents');
    27                 $res = sql_select('fichier,brise,id_document','spip_documents',"distant='non'");
    28                 while ($row = sql_fetch($res)){
    29                         if (($brise = !@file_exists(get_spip_doc($row['fichier'])))!=$row['brise'])
    30                                 sql_updateq('spip_documents',array('brise'=>$brise),'id_document='.intval($row['id_document']));
     29                $res = sql_select('fichier,brise,id_document', 'spip_documents', "distant='non'");
     30                while ($row = sql_fetch($res)) {
     31                        if (($brise = !@file_exists(get_spip_doc($row['fichier']))) != $row['brise']) {
     32                                sql_updateq('spip_documents', array('brise' => $brise), 'id_document=' . intval($row['id_document']));
     33                        }
    3134                }
    3235        }
  • _core_/plugins/medias/action/verifier_documents_liens.php

    r93092 r93616  
    1515 *
    1616 * @package SPIP\Medias\Action
    17 **/
     17 **/
    1818
    19 if (!defined("_ECRIRE_INC_VERSION")) return;
     19if (!defined("_ECRIRE_INC_VERSION")) {
     20        return;
     21}
    2022
    2123/**
     
    2830function action_verifier_documents_liens_dist($id_document = null) {
    2931
    30         if (is_null($id_document)){
     32        if (is_null($id_document)) {
    3133                $securiser_action = charger_fonction('securiser_action', 'inc');
    3234                $id_document = $securiser_action();
    3335        }
    3436
    35         $id_document = ($id_document=='*')?'*':intval($id_document);
     37        $id_document = ($id_document == '*') ? '*' : intval($id_document);
    3638        include_spip('action/editer_liens');
    37         objet_optimiser_liens(array('document'=>$id_document),'*');
     39        objet_optimiser_liens(array('document' => $id_document), '*');
    3840
    3941}
  • _core_/plugins/medias/base/medias.php

    r93092 r93616  
    1515 *
    1616 * @package SPIP\Medias\Pipelines
    17 **/
    18 
    19 if (!defined('_ECRIRE_INC_VERSION')) return;
     17 **/
     18
     19if (!defined('_ECRIRE_INC_VERSION')) {
     20        return;
     21}
    2022
    2123/**
     
    2628 */
    2729function medias_declarer_tables_interfaces($interfaces) {
    28         $interfaces['table_des_tables']['documents']='documents';
    29         $interfaces['table_des_tables']['types_documents']='types_documents';
    30 
    31         $interfaces['exceptions_des_tables']['documents']['type_document']=array('types_documents', 'titre');
    32         $interfaces['exceptions_des_tables']['documents']['extension_document']=array('types_documents', 'extension');
    33         $interfaces['exceptions_des_tables']['documents']['mime_type']=array('types_documents', 'mime_type');
    34         $interfaces['exceptions_des_tables']['documents']['media_document']=array('types_documents', 'media');
    35 
    36         $interfaces['exceptions_des_jointures']['spip_documents']['id_forum']=array('spip_documents_liens','id_forum');
    37         $interfaces['exceptions_des_jointures']['spip_documents']['vu']=array('spip_documents_liens', 'vu');
    38         $interfaces['table_date']['types_documents']='date';
    39 
    40         $interfaces['table_des_traitements']['FICHIER'][]= 'get_spip_doc(%s)';
     30        $interfaces['table_des_tables']['documents'] = 'documents';
     31        $interfaces['table_des_tables']['types_documents'] = 'types_documents';
     32
     33        $interfaces['exceptions_des_tables']['documents']['type_document'] = array('types_documents', 'titre');
     34        $interfaces['exceptions_des_tables']['documents']['extension_document'] = array('types_documents', 'extension');
     35        $interfaces['exceptions_des_tables']['documents']['mime_type'] = array('types_documents', 'mime_type');
     36        $interfaces['exceptions_des_tables']['documents']['media_document'] = array('types_documents', 'media');
     37
     38        $interfaces['exceptions_des_jointures']['spip_documents']['id_forum'] = array('spip_documents_liens', 'id_forum');
     39        $interfaces['exceptions_des_jointures']['spip_documents']['vu'] = array('spip_documents_liens', 'vu');
     40        $interfaces['table_date']['types_documents'] = 'date';
     41
     42        $interfaces['table_des_traitements']['FICHIER'][] = 'get_spip_doc(%s)';
    4143
    4244        return $interfaces;
     
    5355
    5456        $spip_types_documents = array(
    55                         "extension"     => "varchar(10) DEFAULT '' NOT NULL",
    56                         "titre" => "text DEFAULT '' NOT NULL",
    57                         "descriptif"    => "text DEFAULT '' NOT NULL",
    58                         "mime_type"     => "varchar(100) DEFAULT '' NOT NULL",
    59                         "inclus"        => "ENUM('non', 'image', 'embed') DEFAULT 'non'  NOT NULL",
    60                         "upload"        => "ENUM('oui', 'non') DEFAULT 'oui'  NOT NULL",
    61                         "media_defaut" => "varchar(10) DEFAULT 'file' NOT NULL",
    62                         "maj"   => "TIMESTAMP");
     57                "extension" => "varchar(10) DEFAULT '' NOT NULL",
     58                "titre" => "text DEFAULT '' NOT NULL",
     59                "descriptif" => "text DEFAULT '' NOT NULL",
     60                "mime_type" => "varchar(100) DEFAULT '' NOT NULL",
     61                "inclus" => "ENUM('non', 'image', 'embed') DEFAULT 'non'  NOT NULL",
     62                "upload" => "ENUM('oui', 'non') DEFAULT 'oui'  NOT NULL",
     63                "media_defaut" => "varchar(10) DEFAULT 'file' NOT NULL",
     64                "maj" => "TIMESTAMP"
     65        );
    6366
    6467        $spip_types_documents_key = array(
    65                         "PRIMARY KEY"   => "extension",
    66                         "KEY inclus"    => "inclus");
    67 
    68         $tables_principales['spip_types_documents']     =
     68                "PRIMARY KEY" => "extension",
     69                "KEY inclus" => "inclus"
     70        );
     71
     72        $tables_principales['spip_types_documents'] =
    6973                array('field' => &$spip_types_documents, 'key' => &$spip_types_documents_key);
    7074
     
    7478/**
    7579 * Table des liens documents-objets spip_documents_liens
     80 *
    7681 * @param array $tables_auxiliaires
    7782 * @return array
     
    8085
    8186        $spip_documents_liens = array(
    82                         "id_document"   => "bigint(21) DEFAULT '0' NOT NULL",
    83                         "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
    84                         "objet" => "VARCHAR (25) DEFAULT '' NOT NULL",
    85                         "vu"    => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL");
     87                "id_document" => "bigint(21) DEFAULT '0' NOT NULL",
     88                "id_objet" => "bigint(21) DEFAULT '0' NOT NULL",
     89                "objet" => "VARCHAR (25) DEFAULT '' NOT NULL",
     90                "vu" => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL"
     91        );
    8692
    8793        $spip_documents_liens_key = array(
    88                         "PRIMARY KEY"           => "id_document,id_objet,objet",
    89                         "KEY id_document"       => "id_document",
    90                         "KEY id_objet"  => "id_objet",
    91                         "KEY objet"     => "objet",
     94                "PRIMARY KEY" => "id_document,id_objet,objet",
     95                "KEY id_document" => "id_document",
     96                "KEY id_objet" => "id_objet",
     97                "KEY objet" => "objet",
    9298        );
    9399
    94100        $tables_auxiliaires['spip_documents_liens'] = array(
    95101                'field' => &$spip_documents_liens,
    96                 'key' => &$spip_documents_liens_key);
     102                'key' => &$spip_documents_liens_key
     103        );
    97104
    98105        return $tables_auxiliaires;
     
    112119}
    113120
    114 function medias_declarer_tables_objets_sql($tables){
     121function medias_declarer_tables_objets_sql($tables) {
    115122        $tables['spip_articles']['champs_versionnes'][] = 'jointure_documents';
    116123        $tables['spip_documents'] = array(
    117                 'table_objet_surnoms'=>array('doc','img','emb'),
     124                'table_objet_surnoms' => array('doc', 'img', 'emb'),
    118125                'type_surnoms' => array(),
    119126                'url_voir' => 'document_edit',
    120127                'url_edit' => 'document_edit',
    121                 'page'=>'',
     128                'page' => '',
    122129                'texte_retour' => 'icone_retour',
    123130                'texte_objets' => 'medias:objet_documents',
    124131                'texte_objet' => 'medias:objet_document',
    125132                'texte_modifier' => 'medias:info_modifier_document',
    126                 'info_aucun_objet'=> 'medias:aucun_document',
     133                'info_aucun_objet' => 'medias:aucun_document',
    127134                'info_1_objet' => 'medias:un_document',
    128135                'info_nb_objets' => 'medias:des_documents',
    129136                'titre' => "CASE WHEN length(titre)>0 THEN titre ELSE fichier END as titre, '' AS lang",
    130137                'date' => 'date',
    131                 'principale'=>'oui',
     138                'principale' => 'oui',
    132139                'field' => array(
    133                         "id_document"   => "bigint(21) NOT NULL",
    134                         "id_vignette"   => "bigint(21) DEFAULT '0' NOT NULL",
    135                         "extension"     => "VARCHAR(10) DEFAULT '' NOT NULL",
    136                         "titre" => "text DEFAULT '' NOT NULL",
    137                         "date"  => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
    138                         "descriptif"    => "text DEFAULT '' NOT NULL",
    139                         "fichier"       => "text NOT NULL DEFAULT ''",
    140                         "taille"        => "bigint",
    141                         "largeur"       => "integer",
    142                         "hauteur"       => "integer",
     140                        "id_document" => "bigint(21) NOT NULL",
     141                        "id_vignette" => "bigint(21) DEFAULT '0' NOT NULL",
     142                        "extension" => "VARCHAR(10) DEFAULT '' NOT NULL",
     143                        "titre" => "text DEFAULT '' NOT NULL",
     144                        "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
     145                        "descriptif" => "text DEFAULT '' NOT NULL",
     146                        "fichier" => "text NOT NULL DEFAULT ''",
     147                        "taille" => "bigint",
     148                        "largeur" => "integer",
     149                        "hauteur" => "integer",
    143150                        "media" => "varchar(10) DEFAULT 'file' NOT NULL",
    144                         "mode"  => "varchar(10) DEFAULT 'document' NOT NULL",
    145                         "distant"       => "VARCHAR(3) DEFAULT 'non'",
     151                        "mode" => "varchar(10) DEFAULT 'document' NOT NULL",
     152                        "distant" => "VARCHAR(3) DEFAULT 'non'",
    146153                        "statut" => "varchar(10) DEFAULT '0' NOT NULL",
    147154                        "credits" => "varchar(255) DEFAULT '' NOT NULL",
    148155                        "date_publication" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
    149156                        "brise" => "tinyint DEFAULT 0",
    150                         "maj"   => "TIMESTAMP"
     157                        "maj" => "TIMESTAMP"
    151158                ),
    152159                'key' => array(
    153                         "PRIMARY KEY"   => "id_document",
    154                         "KEY id_vignette"       => "id_vignette",
    155                         "KEY mode"      => "mode",
    156                         "KEY extension" => "extension"
     160                        "PRIMARY KEY" => "id_document",
     161                        "KEY id_vignette" => "id_vignette",
     162                        "KEY mode" => "mode",
     163                        "KEY extension" => "extension"
    157164                ),
    158165                'join' => array(
    159                         "id_document"=>"id_document",
    160                         "extension"=>"extension"
    161                 ),
    162                 'statut'=> array(
     166                        "id_document" => "id_document",
     167                        "extension" => "extension"
     168                ),
     169                'statut' => array(
    163170                        array(
    164171                                'champ' => 'statut',
     
    166173                                'previsu' => 'publie,prop,prepa',
    167174                                'post_date' => 'date_publication',
    168                                 'exception' => array('statut','tout')
     175                                'exception' => array('statut', 'tout')
    169176                        )
    170177                ),
    171178                'tables_jointures' => array('types_documents'),
    172179                'rechercher_champs' => array(
    173                         'titre' => 3, 'descriptif' => 1, 'fichier' => 1, 'credits' => 1,
    174                 ),
    175                 'champs_editables' => array('titre', 'descriptif', 'date', 'taille', 'largeur','hauteur','mode','credits','fichier','distant','extension', 'id_vignette', 'media'),
    176                 'champs_versionnes' => array('id_vignette', 'titre', 'descriptif', 'hauteur', 'largeur','fichier','taille', 'mode','credits','distant'),
    177                 'modeles' => array('document','doc','img','emb','image','video','text','audio','application'),
     180                        'titre' => 3,
     181                        'descriptif' => 1,
     182                        'fichier' => 1,
     183                        'credits' => 1,
     184                ),
     185                'champs_editables' => array(
     186                        'titre',
     187                        'descriptif',
     188                        'date',
     189                        'taille',
     190                        'largeur',
     191                        'hauteur',
     192                        'mode',
     193                        'credits',
     194                        'fichier',
     195                        'distant',
     196                        'extension',
     197                        'id_vignette',
     198                        'media'
     199                ),
     200                'champs_versionnes' => array(
     201                        'id_vignette',
     202                        'titre',
     203                        'descriptif',
     204                        'hauteur',
     205                        'largeur',
     206                        'fichier',
     207                        'taille',
     208                        'mode',
     209                        'credits',
     210                        'distant'
     211                ),
     212                'modeles' => array('document', 'doc', 'img', 'emb', 'image', 'video', 'text', 'audio', 'application'),
    178213        );
    179214
    180215        // jointures sur les forum pour tous les objets
    181         $tables[]['tables_jointures'][]= 'documents_liens';
     216        $tables[]['tables_jointures'][] = 'documents_liens';
    182217
    183218        // recherche jointe sur les documents pour les articles et rubriques
    184219        $tables['spip_articles']['rechercher_jointures']['document'] = array('titre' => 2, 'descriptif' => 1);
    185220        $tables['spip_rubriques']['rechercher_jointures']['document'] = array('titre' => 2, 'descriptif' => 1);
     221
    186222        return $tables;
    187223}
     
    200236
    201237        // charger en memoire tous les types deja definis pour limiter les requettes
    202         $rows = sql_allfetsel('mime_type,titre,inclus,extension,'.$champ_media.',upload,descriptif','spip_types_documents','','','','','',$serveur);
     238        $rows = sql_allfetsel('mime_type,titre,inclus,extension,' . $champ_media . ',upload,descriptif',
     239                'spip_types_documents', '', '', '', '', '', $serveur);
    203240        $deja = array();
    204         foreach ($rows as $k=>$row){
     241        foreach ($rows as $k => $row) {
    205242                $deja[$row['extension']] = &$rows[$k];
    206243        }
     
    212249                if (isset($tables_images[$extension])) {
    213250                        $titre = $tables_images[$extension];
    214                         $inclus='image';
     251                        $inclus = 'image';
     252                } else {
     253                        if (isset($tables_sequences[$extension])) {
     254                                $titre = $tables_sequences[$extension];
     255                                $inclus = 'embed';
     256                        } else {
     257                                $inclus = 'non';
     258                                if (isset($tables_documents[$extension])) {
     259                                        $titre = $tables_documents[$extension];
     260                                } else {
     261                                        $titre = '';
     262                                }
     263                        }
    215264                }
    216                 else if (isset($tables_sequences[$extension])) {
    217                         $titre = $tables_sequences[$extension];
    218                         $inclus='embed';
     265
     266                // type de media
     267                $media = "file";
     268                if (preg_match(",^image/,", $type_mime) OR in_array($type_mime, array('application/illustrator'))) {
     269                        $media = "image";
     270                } elseif (preg_match(",^audio/,", $type_mime)) {
     271                        $media = "audio";
     272                } elseif (preg_match(",^video/,", $type_mime) OR in_array($type_mime,
     273                                array('application/ogg', 'application/x-shockwave-flash', 'application/mp4'))
     274                ) {
     275                        $media = "video";
    219276                }
    220                 else {
    221                         $inclus='non';
    222                         if (isset($tables_documents[$extension]))
    223                                 $titre = $tables_documents[$extension];
    224                         else
    225                                 $titre = '';
    226                 }
    227 
    228                 // type de media
    229           $media = "file";
    230           if (preg_match(",^image/,",$type_mime) OR in_array($type_mime,array('application/illustrator')))
    231                   $media = "image";
    232           elseif (preg_match(",^audio/,",$type_mime))
    233                   $media = "audio";
    234           elseif (preg_match(",^video/,",$type_mime) OR in_array($type_mime,array('application/ogg','application/x-shockwave-flash','application/mp4')))
    235                   $media = "video";
    236277
    237278                $set = array(
    238                         'mime_type' => $type_mime,
    239                         'titre' => $titre,
    240                         'inclus' => $inclus,
    241                         'extension' => $extension,
    242                         $champ_media => $media,
    243                         'upload' => 'oui',
    244                         'descriptif' => '',
    245                                         );
    246                 if (!isset($deja[$extension])){
     279                        'mime_type' => $type_mime,
     280                        'titre' => $titre,
     281                        'inclus' => $inclus,
     282                        'extension' => $extension,
     283                        $champ_media => $media,
     284                        'upload' => 'oui',
     285                        'descriptif' => '',
     286                );
     287                if (!isset($deja[$extension])) {
    247288                        $insertions[] = $set;
    248                 }
    249                 elseif (array_diff($deja[$extension],$set)){
     289                } elseif (array_diff($deja[$extension], $set)) {
    250290                        $updates[$extension] = $set;
    251291                }
    252292        }
    253293
    254         if (count($updates)){
    255                 foreach ($updates as $extension=>$set){
    256                         sql_updateq('spip_types_documents',$set,'extension='.sql_quote($extension));
     294        if (count($updates)) {
     295                foreach ($updates as $extension => $set) {
     296                        sql_updateq('spip_types_documents', $set, 'extension=' . sql_quote($extension));
    257297                }
    258298        }
    259299
    260         if ($insertions)
     300        if ($insertions) {
    261301                sql_insertq_multi('spip_types_documents', $insertions, '', $serveur);
    262 
    263 }
    264 
     302        }
     303
     304}
    265305
    266306
     
    271311 * @return array
    272312 */
    273 function medias_optimiser_base_disparus($flux){
     313function medias_optimiser_base_disparus($flux) {
    274314
    275315        include_spip('action/editer_liens');
     
    277317        // entre documents vers des objets effaces
    278318        // depuis des documents effaces
    279         $flux['data'] += objet_optimiser_liens(array('document'=>'*'),'*');
     319        $flux['data'] += objet_optimiser_liens(array('document' => '*'), '*');
     320
    280321        // on ne nettoie volontairement pas automatiquement les documents orphelins
    281322
  • _core_/plugins/medias/base/typedoc.php

    r86322 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined('_ECRIRE_INC_VERSION')) return;
     13if (!defined('_ECRIRE_INC_VERSION')) {
     14        return;
     15}
    1416
    1517global $tables_images, $tables_sequences, $tables_documents, $tables_mime, $mime_alias;
    1618
    1719$tables_images = array(
    18                         // Images reconnues par PHP
    19                         'jpg' => 'JPEG',
    20                         'png' => 'PNG',
    21                         'gif' => 'GIF',
    22 
    23                         // Autres images (peuvent utiliser le tag <img>)
    24                         'bmp' => 'BMP',
    25                         );
     20        // Images reconnues par PHP
     21        'jpg' => 'JPEG',
     22        'png' => 'PNG',
     23        'gif' => 'GIF',
     24
     25        // Autres images (peuvent utiliser le tag <img>)
     26        'bmp' => 'BMP',
     27);
    2628
    2729// Multimedia (peuvent utiliser le tag <embed>)
    2830
    2931$tables_sequences = array(
    30                         'aac' => 'Advanced Audio Coding',
    31                         'ac3' => 'AC-3 Compressed Audio',
    32                         'aifc' => 'Compressed AIFF Audio',
    33                         'aiff' => 'AIFF',
    34                         'amr' => 'Adaptive Multi-Rate Audio',
    35                         'anx' => 'Annodex',
    36                         'ape' => 'Monkey\'s Audio File',
    37                         'axa' => 'Annodex Audio',
    38                         'axv' => 'Annodex Video',
    39                         'asf' => 'Windows Media',
    40                         'avi' => 'AVI',
    41                         'dv'    => 'Digital Video',
    42                         'f4a' => 'Audio for Adobe Flash Player',
    43                         'f4b' => 'Audio Book for Adobe Flash Player',
    44                         'f4p' => 'Protected Video for Adobe Flash Player',
    45                         'f4v' => 'Video for Adobe Flash Player',
    46                         'flac' => 'Free Lossless Audio Codec',
    47                         'flv' => 'Flash Video',
    48                         'm2p' => 'MPEG-PS',
    49                         'm2ts' => 'BDAV MPEG-2 Transport Stream',
    50                         'm4a' => 'MPEG4 Audio',
    51                         'm4b' => 'MPEG4 Audio',
    52                         'm4p' => 'MPEG4 Audio',
    53                         'm4r' => 'iPhone Ringtone',
    54                         'm4v' => 'MPEG4 Video',
    55                         'mid' => 'Midi',
    56                         'mng' => 'MNG',
    57                         'mka' => 'Matroska Audio',
    58                         'mkv' => 'Matroska Video',
    59                         'mov' => 'QuickTime',
    60                         'mp3' => 'MP3',
    61                         'mp4' => 'MPEG4',
    62                         'mpc' => 'Musepack',
    63                         'mpg' => 'MPEG',
    64                         'mts' => 'AVCHD MPEG-2 transport stream',
    65                         'oga' => 'Ogg Audio',
    66                         'ogg' => 'Ogg Vorbis',
    67                         'ogv' => 'Ogg Video',
    68                         'ogx' => 'Ogg Multiplex',
    69                         'qt' => 'QuickTime',
    70                         'ra' => 'RealAudio',
    71                         'ram' => 'RealAudio',
    72                         'rm' => 'RealAudio',
    73                         'spx' => 'Ogg Speex',
    74                         'svg' => 'Scalable Vector Graphics',
    75                         'svgz' => 'Compressed Scalable Vector Graphic',
    76                         'swf' => 'Flash',
    77                         'tif' => 'TIFF',
    78                         'ts' => 'MPEG transport stream',
    79                         'wav' => 'WAV',
    80                         'webm' => 'WebM',
    81                         'wma' => 'Windows Media Audio',
    82                         'wmv' => 'Windows Media Video',
    83                         'y4m' => 'YUV4MPEG2',
    84                         '3ga' => '3GP Audio File',
    85                         '3gp' => '3rd Generation Partnership Project'
    86                 );
     32        'aac' => 'Advanced Audio Coding',
     33        'ac3' => 'AC-3 Compressed Audio',
     34        'aifc' => 'Compressed AIFF Audio',
     35        'aiff' => 'AIFF',
     36        'amr' => 'Adaptive Multi-Rate Audio',
     37        'anx' => 'Annodex',
     38        'ape' => 'Monkey\'s Audio File',
     39        'axa' => 'Annodex Audio',
     40        'axv' => 'Annodex Video',
     41        'asf' => 'Windows Media',
     42        'avi' => 'AVI',
     43        'dv' => 'Digital Video',
     44        'f4a' => 'Audio for Adobe Flash Player',
     45        'f4b' => 'Audio Book for Adobe Flash Player',
     46        'f4p' => 'Protected Video for Adobe Flash Player',
     47        'f4v' => 'Video for Adobe Flash Player',
     48        'flac' => 'Free Lossless Audio Codec',
     49        'flv' => 'Flash Video',
     50        'm2p' => 'MPEG-PS',
     51        'm2ts' => 'BDAV MPEG-2 Transport Stream',
     52        'm4a' => 'MPEG4 Audio',
     53        'm4b' => 'MPEG4 Audio',
     54        'm4p' => 'MPEG4 Audio',
     55        'm4r' => 'iPhone Ringtone',
     56        'm4v' => 'MPEG4 Video',
     57        'mid' => 'Midi',
     58        'mng' => 'MNG',
     59        'mka' => 'Matroska Audio',
     60        'mkv' => 'Matroska Video',
     61        'mov' => 'QuickTime',
     62        'mp3' => 'MP3',
     63        'mp4' => 'MPEG4',
     64        'mpc' => 'Musepack',
     65        'mpg' => 'MPEG',
     66        'mts' => 'AVCHD MPEG-2 transport stream',
     67        'oga' => 'Ogg Audio',
     68        'ogg' => 'Ogg Vorbis',
     69        'ogv' => 'Ogg Video',
     70        'ogx' => 'Ogg Multiplex',
     71        'qt' => 'QuickTime',
     72        'ra' => 'RealAudio',
     73        'ram' => 'RealAudio',
     74        'rm' => 'RealAudio',
     75        'spx' => 'Ogg Speex',
     76        'svg' => 'Scalable Vector Graphics',
     77        'svgz' => 'Compressed Scalable Vector Graphic',
     78        'swf' => 'Flash',
     79        'tif' => 'TIFF',
     80        'ts' => 'MPEG transport stream',
     81        'wav' => 'WAV',
     82        'webm' => 'WebM',
     83        'wma' => 'Windows Media Audio',
     84        'wmv' => 'Windows Media Video',
     85        'y4m' => 'YUV4MPEG2',
     86        '3ga' => '3GP Audio File',
     87        '3gp' => '3rd Generation Partnership Project'
     88);
    8789
    8890// Documents varies
    8991$tables_documents = array(
    90                         '7z' => '7 Zip',
    91                         'abw' => 'Abiword',
    92                         'ai' => 'Adobe Illustrator',
    93                         'asx' => 'Advanced Stream Redirector',
    94                         'bib' => 'BibTeX',
    95                         'bz2' => 'BZip',
    96                         'bin' => 'Binary Data',
    97                         'blend' => 'Blender',
    98                         'c' => 'C source',
    99                         'cls' => 'LaTeX Class',
    100                         'csl' => 'Citation Style Language',
    101                         'css' => 'Cascading Style Sheet',
    102                         'csv' => 'Comma Separated Values',
    103                         'deb' => 'Debian',
    104                         'doc' => 'Word',
    105                         'dot' => 'Word Template',
    106                         'djvu' => 'DjVu',
    107                         'dvi' => 'LaTeX DVI',
    108                         'emf' => 'Enhanced Metafile',
    109                         'enl' => 'EndNote Library',
    110                         'ens' => 'EndNote Style',
    111                         'epub' => 'EPUB',
    112                         'eps' => 'PostScript',
    113                         'gpx' => 'GPS eXchange Format',
    114                         'gz' => 'GZ',
    115                         'h' => 'C header',
    116                         'html' => 'HTML',
    117                         'jar' => 'Java Archive',
    118                         'json' => 'JSON',
    119                         'kml' => 'Keyhole Markup Language',
    120                         'kmz' => 'Google Earth Placemark File',
    121                         'lyx' => 'Lyx file',
    122                         'mathml' => 'MathML',
    123                         'mbtiles' => 'MBTiles',
    124                         'm3u' => 'M3U Playlist',
    125                         'm3u8' => 'M3U8 Playlist',
    126                         'm4u' => 'MPEG4 Playlist',
    127                         'md' => 'Markdown Document',
    128                         'pas' => 'Pascal',
    129                         'pdf' => 'PDF',
    130                         'pgn' => 'Portable Game Notation',
    131                         'pls' => 'Playlist',
    132                         'pot' => 'PowerPoint Template',
    133                         'ppt' => 'PowerPoint',
    134                         'ps' => 'PostScript',
    135                         'psd' => 'Photoshop',
    136                         'rar' => 'WinRAR',
    137                         'rdf' => 'Resource Description Framework',
    138                         'ris' => 'RIS',
    139                         'rpm' => 'RedHat/Mandrake/SuSE',
    140                         'rtf' => 'RTF',
    141                         'sdc' => 'StarOffice Spreadsheet',
    142                         'sdd' => 'StarOffice Presentation',
    143                         'sdw' => 'StarOffice Writer document',
    144                         'sit' => 'Stuffit',
    145                         'sla' => 'Scribus',
    146                         'srt' => 'SubRip Subtitle',
    147                         'ssa' => 'SubStation Alpha Subtitle',
    148                         'sty' => 'LaTeX Style Sheet',
    149                         'sxc' => 'OpenOffice.org Calc',
    150                         'sxi' => 'OpenOffice.org Impress',
    151                         'sxw' => 'OpenOffice.org',
    152                         'tar' => 'Tar',
    153                         'tex' => 'LaTeX',
    154                         'tgz' => 'TGZ',
    155                         'torrent' => 'BitTorrent',
    156                         'ttf' => 'TTF Font',
    157                         'txt' => 'Texte',
    158                         'usf' => 'Universal Subtitle Format',
    159                         'wmf' => 'Windows Metafile',
    160                         'wpl' => 'Windows Media Player Playlist',
    161                         'xcf' => 'GIMP multi-layer',
    162                         'xspf' => 'XSPF',
    163                         'xls' => 'Excel',
    164                         'xlt' => 'Excel Template',
    165                         'xml' => 'XML',
    166                         'y4m' => 'YUV4MPEG2',
    167                         'yaml' => 'YAML',
    168                         'zip' => 'Zip',
    169 
    170                         // open document format
    171                        
    172                         'odb' => 'OpenDocument Database',
    173                         'odc' => 'OpenDocument Chart',
    174                         'odf' => 'OpenDocument Formula',
    175                         'odg' => 'OpenDocument Graphics',
    176                         'odi' => 'OpenDocument Image',
    177                         'odm' => 'OpenDocument Text-master',
    178                         'odp' => 'OpenDocument Presentation',
    179                         'ods' => 'OpenDocument Spreadsheet',
    180                         'odt' => 'OpenDocument Text',
    181                         'otg' => 'OpenDocument Graphics-template',
    182                         'otp' => 'OpenDocument Presentation-template',
    183                         'ots' => 'OpenDocument Spreadsheet-template',
    184                         'ott' => 'OpenDocument Text-template',
    185 
    186 
    187                         // Open XML File Formats
    188                         'docm' => 'Word',
    189                         'docx' => 'Word',
    190                         'dotm' => 'Word template',
    191                         'dotx' => 'Word template',
    192 
    193                         'potm' => 'Powerpoint template',
    194                         'potx' => 'Powerpoint template',
    195                         'ppam' => 'Powerpoint addin',
    196                         'ppsm' => 'Powerpoint slideshow',
    197                         'ppsx' => 'Powerpoint slideshow',
    198                         'pptm' => 'Powerpoint',
    199                         'pptx' => 'Powerpoint',
    200 
    201                         'xlam' => 'Excel',
    202                         'xlsb' => 'Excel binary',
    203                         'xlsm' => 'Excel',
    204                         'xlsx' => 'Excel',
    205                         'xltm' => 'Excel template',
    206                         'xltx' => 'Excel template'
    207                 );
     92        '7z' => '7 Zip',
     93        'abw' => 'Abiword',
     94        'ai' => 'Adobe Illustrator',
     95        'asx' => 'Advanced Stream Redirector',
     96        'bib' => 'BibTeX',
     97        'bz2' => 'BZip',
     98        'bin' => 'Binary Data',
     99        'blend' => 'Blender',
     100        'c' => 'C source',
     101        'cls' => 'LaTeX Class',
     102        'csl' => 'Citation Style Language',
     103        'css' => 'Cascading Style Sheet',
     104        'csv' => 'Comma Separated Values',
     105        'deb' => 'Debian',
     106        'doc' => 'Word',
     107        'dot' => 'Word Template',
     108        'djvu' => 'DjVu',
     109        'dvi' => 'LaTeX DVI',
     110        'emf' => 'Enhanced Metafile',
     111        'enl' => 'EndNote Library',
     112        'ens' => 'EndNote Style',
     113        'epub' => 'EPUB',
     114        'eps' => 'PostScript',
     115        'gpx' => 'GPS eXchange Format',
     116        'gz' => 'GZ',
     117        'h' => 'C header',
     118        'html' => 'HTML',
     119        'jar' => 'Java Archive',
     120        'json' => 'JSON',
     121        'kml' => 'Keyhole Markup Language',
     122        'kmz' => 'Google Earth Placemark File',
     123        'lyx' => 'Lyx file',
     124        'mathml' => 'MathML',
     125        'mbtiles' => 'MBTiles',
     126        'm3u' => 'M3U Playlist',
     127        'm3u8' => 'M3U8 Playlist',
     128        'm4u' => 'MPEG4 Playlist',
     129        'md' => 'Markdown Document',
     130        'pas' => 'Pascal',
     131        'pdf' => 'PDF',
     132        'pgn' => 'Portable Game Notation',
     133        'pls' => 'Playlist',
     134        'pot' => 'PowerPoint Template',
     135        'ppt' => 'PowerPoint',
     136        'ps' => 'PostScript',
     137        'psd' => 'Photoshop',
     138        'rar' => 'WinRAR',
     139        'rdf' => 'Resource Description Framework',
     140        'ris' => 'RIS',
     141        'rpm' => 'RedHat/Mandrake/SuSE',
     142        'rtf' => 'RTF',
     143        'sdc' => 'StarOffice Spreadsheet',
     144        'sdd' => 'StarOffice Presentation',
     145        'sdw' => 'StarOffice Writer document',
     146        'sit' => 'Stuffit',
     147        'sla' => 'Scribus',
     148        'srt' => 'SubRip Subtitle',
     149        'ssa' => 'SubStation Alpha Subtitle',
     150        'sty' => 'LaTeX Style Sheet',
     151        'sxc' => 'OpenOffice.org Calc',
     152        'sxi' => 'OpenOffice.org Impress',
     153        'sxw' => 'OpenOffice.org',
     154        'tar' => 'Tar',
     155        'tex' => 'LaTeX',
     156        'tgz' => 'TGZ',
     157        'torrent' => 'BitTorrent',
     158        'ttf' => 'TTF Font',
     159        'txt' => 'Texte',
     160        'usf' => 'Universal Subtitle Format',
     161        'wmf' => 'Windows Metafile',
     162        'wpl' => 'Windows Media Player Playlist',
     163        'xcf' => 'GIMP multi-layer',
     164        'xspf' => 'XSPF',
     165        'xls' => 'Excel',
     166        'xlt' => 'Excel Template',
     167        'xml' => 'XML',
     168        'y4m' => 'YUV4MPEG2',
     169        'yaml' => 'YAML',
     170        'zip' => 'Zip',
     171
     172        // open document format
     173
     174        'odb' => 'OpenDocument Database',
     175        'odc' => 'OpenDocument Chart',
     176        'odf' => 'OpenDocument Formula',
     177        'odg' => 'OpenDocument Graphics',
     178        'odi' => 'OpenDocument Image',
     179        'odm' => 'OpenDocument Text-master',
     180        'odp' => 'OpenDocument Presentation',
     181        'ods' => 'OpenDocument Spreadsheet',
     182        'odt' => 'OpenDocument Text',
     183        'otg' => 'OpenDocument Graphics-template',
     184        'otp' => 'OpenDocument Presentation-template',
     185        'ots' => 'OpenDocument Spreadsheet-template',
     186        'ott' => 'OpenDocument Text-template',
     187
     188
     189        // Open XML File Formats
     190        'docm' => 'Word',
     191        'docx' => 'Word',
     192        'dotm' => 'Word template',
     193        'dotx' => 'Word template',
     194
     195        'potm' => 'Powerpoint template',
     196        'potx' => 'Powerpoint template',
     197        'ppam' => 'Powerpoint addin',
     198        'ppsm' => 'Powerpoint slideshow',
     199        'ppsx' => 'Powerpoint slideshow',
     200        'pptm' => 'Powerpoint',
     201        'pptx' => 'Powerpoint',
     202
     203        'xlam' => 'Excel',
     204        'xlsb' => 'Excel binary',
     205        'xlsm' => 'Excel',
     206        'xlsx' => 'Excel',
     207        'xltm' => 'Excel template',
     208        'xltx' => 'Excel template'
     209);
    208210
    209211$tables_mime = array(
    210                 // Images reconnues par PHP
    211                 'jpg' => 'image/jpeg',
    212                 'png' => 'image/png',
    213                 'gif' => 'image/gif',
    214 
    215                 // Autres images (peuvent utiliser le tag <img>)
    216                 'bmp' => 'image/x-ms-bmp', // pas enregistre par IANA, variante: image/bmp
    217                 'tif' => 'image/tiff',
    218                
    219                 // Multimedia (peuvent utiliser le tag <embed>)
    220                 'aac' => 'audio/mp4a-latm',
    221                 'ac3' => 'audio/x-aac',
    222                 'aifc' => 'audio/x-aifc',
    223                 'aiff' => 'audio/x-aiff',
    224                 'amr' => 'audio/amr',
    225                 'ape' => 'audio/x-monkeys-audio',
    226                 'asf' => 'video/x-ms-asf',
    227                 'avi' => 'video/x-msvideo',
    228                 'anx' => 'application/annodex',
    229                 'axa' => 'audio/annodex',
    230                 'axv' => 'video/annodex',
    231                 'dv' => 'video/x-dv',
    232                 'f4a' => 'audio/mp4',
    233                 'f4b' => 'audio/mp4',
    234                 'f4p' => 'video/mp4',
    235                 'f4v' => 'video/mp4',
    236                 'flac' => 'audio/x-flac',
    237                 'flv' => 'video/x-flv',
    238                 'm2p' => 'video/MP2P',
    239                 'm2ts' => 'video/MP2T',
    240                 'm4a' => 'audio/mp4a-latm',
    241                 'm4b' => 'audio/mp4a-latm',
    242                 'm4p' => 'audio/mp4a-latm',
    243                 'm4r' => 'audio/aac',
    244                 'm4u' => 'video/vnd.mpegurl',
    245                 'm4v' => 'video/x-m4v',
    246                 'mid' => 'audio/midi',
    247                 'mka' => 'audio/mka',
    248                 'mkv' => 'video/mkv',
    249                 'mng' => 'video/x-mng',
    250                 'mov' => 'video/quicktime',
    251                 'mp3' => 'audio/mpeg',
    252                 'mp4' => 'application/mp4',
    253                 'mpc' => 'audio/x-musepack',
    254                 'mpg' => 'video/mpeg',
    255                 'mts' => 'video/MP2T',
    256                 'oga' => 'audio/ogg',
    257                 'ogg' => 'audio/ogg',
    258                 'ogv' => 'video/ogg',
    259                 'ogx' => 'application/ogg',
    260                 'qt' => 'video/quicktime',
    261                 'ra' => 'audio/x-pn-realaudio',
    262                 'ram' => 'audio/x-pn-realaudio',
    263                 'rm' => 'audio/x-pn-realaudio',
    264                 'spx' => 'audio/ogg',
    265                 'svg' => 'image/svg+xml',
    266                 'svgz' => 'image/svg+xml',
    267                 'swf' => 'application/x-shockwave-flash',
    268                 'ts' => 'video/MP2T',
    269                 'wav' => 'audio/x-wav',
    270                 'webm' => 'video/webm',
    271                 'wma' => 'audio/x-ms-wma',
    272                 'wmv' => 'video/x-ms-wmv',
    273                 'y4m' => 'video/x-raw-yuv',
    274                 '3gp' => 'video/3gpp',
    275                 '3ga' => 'audio/3ga',
    276 
    277                 // Documents varies
    278                 '7z' => 'application/x-7z-compressed',
    279                 'ai' => 'application/illustrator',
    280                 'abw' => 'application/abiword',
    281                 'asx' => 'video/x-ms-asf',
    282                 'bib' => 'application/x-bibtex',
    283                 'bin' => 'application/octet-stream', # le tout-venant
    284                 'blend' => 'application/x-blender',
    285                 'bz2' => 'application/x-bzip2',
    286                 'c' => 'text/x-csrc',
    287                 'csl' => 'application/xml',
    288                 'css' => 'text/css',
    289                 'csv' => 'text/csv',
    290                 'deb' => 'application/x-debian-package',
    291                 'doc' => 'application/msword',
    292                 'dot' => 'application/msword',
    293                 'djvu' => 'image/vnd.djvu',
    294                 'dvi' => 'application/x-dvi',
    295                 'emf' => 'image/x-emf',
    296                 'enl' => 'application/octet-stream',
    297                 'ens' => 'application/octet-stream',
    298                 'eps' => 'application/postscript',
    299                 'epub' => 'application/epub+zip', // pas enregistre par IANA
    300                 'gpx' => 'application/gpx+xml', // pas enregistre par IANA
    301                 'gz' => 'application/x-gzip',
    302                 'h' => 'text/x-chdr',
    303                 'html' => 'text/html',
    304                 'jar' => 'application/java-archive',
    305                 'json' => 'application/json',
    306                 'kml' => 'application/vnd.google-earth.kml+xml',
    307                 'kmz' => 'application/vnd.google-earth.kmz',
    308                 'lyx' => 'application/x-lyx',
    309                 'm3u' => 'text/plain',
    310                 'm3u8' => 'text/plain',
    311                 'mathml' => 'application/mathml+xml',
    312                 'mbtiles' => 'application/x-sqlite3',
    313                 'md' => 'text/x-markdown',
    314                 'pas' => 'text/x-pascal',
    315                 'pdf' => 'application/pdf',
    316                 'pgn' => 'application/x-chess-pgn',
    317                 'pls' => 'text/plain',
    318                 'ppt' => 'application/vnd.ms-powerpoint',
    319                 'pot' => 'application/vnd.ms-powerpoint',
    320                 'ps' => 'application/postscript',
    321                 'psd' => 'image/x-photoshop', // pas enregistre par IANA
    322                 'rar' => 'application/x-rar-compressed',
    323                 'rdf' => 'application/rdf+xml',
    324                 'ris' => 'application/x-research-info-systems',
    325                 'rpm' => 'application/x-redhat-package-manager',
    326                 'rtf' => 'application/rtf',
    327                 'sdc' => 'application/vnd.stardivision.calc',
    328                 'sdd' => 'application/vnd.stardivision.impress',
    329                 'sdw' => 'application/vnd.stardivision.writer',
    330                 'sit' => 'application/x-stuffit',
    331                 'sla' => 'application/x-scribus',
    332                 'srt' => 'text/plain',
    333                 'ssa' => 'text/plain',
    334                 'sxc' => 'application/vnd.sun.xml.calc',
    335                 'sxi' => 'application/vnd.sun.xml.impress',
    336                 'sxw' => 'application/vnd.sun.xml.writer',
    337                 'tar' => 'application/x-tar',
    338                 'tex' => 'text/x-tex',
    339                 'tgz' => 'application/x-gtar',
    340                 'torrent' => 'application/x-bittorrent',
    341                 'ttf' => 'application/x-font-ttf',
    342                 'txt' => 'text/plain',
    343                 'usf' => 'application/xml',
    344                 'xcf' => 'application/x-xcf',
    345                 'xls' => 'application/vnd.ms-excel',
    346                 'xlt' => 'application/vnd.ms-excel',
    347                 'wmf' => 'image/x-emf',
    348                 'wpl' => 'application/vnd.ms-wpl',
    349                 'xspf' => 'application/xspf+xml',
    350                 'xml' => 'application/xml',
    351                 'yaml' => 'text/yaml',
    352                 'zip' => 'application/zip',
    353 
    354                 // Open Document format
    355                 'odt' => 'application/vnd.oasis.opendocument.text',
    356                 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
    357                 'odp' => 'application/vnd.oasis.opendocument.presentation',
    358                 'odg' => 'application/vnd.oasis.opendocument.graphics',
    359                 'odc' => 'application/vnd.oasis.opendocument.chart',
    360                 'odf' => 'application/vnd.oasis.opendocument.formula',
    361                 'odb' => 'application/vnd.oasis.opendocument.database',
    362                 'odi' => 'application/vnd.oasis.opendocument.image',
    363                 'odm' => 'application/vnd.oasis.opendocument.text-master',
    364                 'ott' => 'application/vnd.oasis.opendocument.text-template',
    365                 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
    366                 'otp' => 'application/vnd.oasis.opendocument.presentation-template',
    367                 'otg' => 'application/vnd.oasis.opendocument.graphics-template',
    368 
    369                 'cls' => 'text/x-tex',
    370                 'sty' => 'text/x-tex',
    371 
    372                 // Open XML File Formats
    373                 'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
    374                 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    375                 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
    376                 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
    377 
    378                 'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
    379                 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
    380                 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
    381                 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
    382                 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
    383                 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
    384                 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
    385 
    386                 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
    387                 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
    388                 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
    389                 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    390                 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
    391                 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'
    392         );
    393 
    394 
    395         $mime_alias = array (
    396                 'application/x-ogg' => 'application/ogg',
    397                 'audio/3gpp' => 'video/3gpp',
    398                 'audio/x-mpeg' => 'audio/mpeg',
    399                 'audio/x-musepack' => 'audio/musepack',
    400                 'audio/webm' => 'video/webm',
    401                 'video/flv' => 'video/x-flv',
    402                 'video/mp4' => 'application/mp4',
    403                 'image/jpg' => 'image/jpeg'
    404         );
     212        // Images reconnues par PHP
     213        'jpg' => 'image/jpeg',
     214        'png' => 'image/png',
     215        'gif' => 'image/gif',
     216
     217        // Autres images (peuvent utiliser le tag <img>)
     218        'bmp' => 'image/x-ms-bmp', // pas enregistre par IANA, variante: image/bmp
     219        'tif' => 'image/tiff',
     220
     221        // Multimedia (peuvent utiliser le tag <embed>)
     222        'aac' => 'audio/mp4a-latm',
     223        'ac3' => 'audio/x-aac',
     224        'aifc' => 'audio/x-aifc',
     225        'aiff' => 'audio/x-aiff',
     226        'amr' => 'audio/amr',
     227        'ape' => 'audio/x-monkeys-audio',
     228        'asf' => 'video/x-ms-asf',
     229        'avi' => 'video/x-msvideo',
     230        'anx' => 'application/annodex',
     231        'axa' => 'audio/annodex',
     232        'axv' => 'video/annodex',
     233        'dv' => 'video/x-dv',
     234        'f4a' => 'audio/mp4',
     235        'f4b' => 'audio/mp4',
     236        'f4p' => 'video/mp4',
     237        'f4v' => 'video/mp4',
     238        'flac' => 'audio/x-flac',
     239        'flv' => 'video/x-flv',
     240        'm2p' => 'video/MP2P',
     241        'm2ts' => 'video/MP2T',
     242        'm4a' => 'audio/mp4a-latm',
     243        'm4b' => 'audio/mp4a-latm',
     244        'm4p' => 'audio/mp4a-latm',
     245        'm4r' => 'audio/aac',
     246        'm4u' => 'video/vnd.mpegurl',
     247        'm4v' => 'video/x-m4v',
     248        'mid' => 'audio/midi',
     249        'mka' => 'audio/mka',
     250        'mkv' => 'video/mkv',
     251        'mng' => 'video/x-mng',
     252        'mov' => 'video/quicktime',
     253        'mp3' => 'audio/mpeg',
     254        'mp4' => 'application/mp4',
     255        'mpc' => 'audio/x-musepack',
     256        'mpg' => 'video/mpeg',
     257        'mts' => 'video/MP2T',
     258        'oga' => 'audio/ogg',
     259        'ogg' => 'audio/ogg',
     260        'ogv' => 'video/ogg',
     261        'ogx' => 'application/ogg',
     262        'qt' => 'video/quicktime',
     263        'ra' => 'audio/x-pn-realaudio',
     264        'ram' => 'audio/x-pn-realaudio',
     265        'rm' => 'audio/x-pn-realaudio',
     266        'spx' => 'audio/ogg',
     267        'svg' => 'image/svg+xml',
     268        'svgz' => 'image/svg+xml',
     269        'swf' => 'application/x-shockwave-flash',
     270        'ts' => 'video/MP2T',
     271        'wav' => 'audio/x-wav',
     272        'webm' => 'video/webm',
     273        'wma' => 'audio/x-ms-wma',
     274        'wmv' => 'video/x-ms-wmv',
     275        'y4m' => 'video/x-raw-yuv',
     276        '3gp' => 'video/3gpp',
     277        '3ga' => 'audio/3ga',
     278
     279        // Documents varies
     280        '7z' => 'application/x-7z-compressed',
     281        'ai' => 'application/illustrator',
     282        'abw' => 'application/abiword',
     283        'asx' => 'video/x-ms-asf',
     284        'bib' => 'application/x-bibtex',
     285        'bin' => 'application/octet-stream', # le tout-venant
     286        'blend' => 'application/x-blender',
     287        'bz2' => 'application/x-bzip2',
     288        'c' => 'text/x-csrc',
     289        'csl' => 'application/xml',
     290        'css' => 'text/css',
     291        'csv' => 'text/csv',
     292        'deb' => 'application/x-debian-package',
     293        'doc' => 'application/msword',
     294        'dot' => 'application/msword',
     295        'djvu' => 'image/vnd.djvu',
     296        'dvi' => 'application/x-dvi',
     297        'emf' => 'image/x-emf',
     298        'enl' => 'application/octet-stream',
     299        'ens' => 'application/octet-stream',
     300        'eps' => 'application/postscript',
     301        'epub' => 'application/epub+zip', // pas enregistre par IANA
     302        'gpx' => 'application/gpx+xml', // pas enregistre par IANA
     303        'gz' => 'application/x-gzip',
     304        'h' => 'text/x-chdr',
     305        'html' => 'text/html',
     306        'jar' => 'application/java-archive',
     307        'json' => 'application/json',
     308        'kml' => 'application/vnd.google-earth.kml+xml',
     309        'kmz' => 'application/vnd.google-earth.kmz',
     310        'lyx' => 'application/x-lyx',
     311        'm3u' => 'text/plain',
     312        'm3u8' => 'text/plain',
     313        'mathml' => 'application/mathml+xml',
     314        'mbtiles' => 'application/x-sqlite3',
     315        'md' => 'text/x-markdown',
     316        'pas' => 'text/x-pascal',
     317        'pdf' => 'application/pdf',
     318        'pgn' => 'application/x-chess-pgn',
     319        'pls' => 'text/plain',
     320        'ppt' => 'application/vnd.ms-powerpoint',
     321        'pot' => 'application/vnd.ms-powerpoint',
     322        'ps' => 'application/postscript',
     323        'psd' => 'image/x-photoshop', // pas enregistre par IANA
     324        'rar' => 'application/x-rar-compressed',
     325        'rdf' => 'application/rdf+xml',
     326        'ris' => 'application/x-research-info-systems',
     327        'rpm' => 'application/x-redhat-package-manager',
     328        'rtf' => 'application/rtf',
     329        'sdc' => 'application/vnd.stardivision.calc',
     330        'sdd' => 'application/vnd.stardivision.impress',
     331        'sdw' => 'application/vnd.stardivision.writer',
     332        'sit' => 'application/x-stuffit',
     333        'sla' => 'application/x-scribus',
     334        'srt' => 'text/plain',
     335        'ssa' => 'text/plain',
     336        'sxc' => 'application/vnd.sun.xml.calc',
     337        'sxi' => 'application/vnd.sun.xml.impress',
     338        'sxw' => 'application/vnd.sun.xml.writer',
     339        'tar' => 'application/x-tar',
     340        'tex' => 'text/x-tex',
     341        'tgz' => 'application/x-gtar',
     342        'torrent' => 'application/x-bittorrent',
     343        'ttf' => 'application/x-font-ttf',
     344        'txt' => 'text/plain',
     345        'usf' => 'application/xml',
     346        'xcf' => 'application/x-xcf',
     347        'xls' => 'application/vnd.ms-excel',
     348        'xlt' => 'application/vnd.ms-excel',
     349        'wmf' => 'image/x-emf',
     350        'wpl' => 'application/vnd.ms-wpl',
     351        'xspf' => 'application/xspf+xml',
     352        'xml' => 'application/xml',
     353        'yaml' => 'text/yaml',
     354        'zip' => 'application/zip',
     355
     356        // Open Document format
     357        'odt' => 'application/vnd.oasis.opendocument.text',
     358        'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
     359        'odp' => 'application/vnd.oasis.opendocument.presentation',
     360        'odg' => 'application/vnd.oasis.opendocument.graphics',
     361        'odc' => 'application/vnd.oasis.opendocument.chart',
     362        'odf' => 'application/vnd.oasis.opendocument.formula',
     363        'odb' => 'application/vnd.oasis.opendocument.database',
     364        'odi' => 'application/vnd.oasis.opendocument.image',
     365        'odm' => 'application/vnd.oasis.opendocument.text-master',
     366        'ott' => 'application/vnd.oasis.opendocument.text-template',
     367        'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
     368        'otp' => 'application/vnd.oasis.opendocument.presentation-template',
     369        'otg' => 'application/vnd.oasis.opendocument.graphics-template',
     370
     371        'cls' => 'text/x-tex',
     372        'sty' => 'text/x-tex',
     373
     374        // Open XML File Formats
     375        'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
     376        'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
     377        'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
     378        'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
     379
     380        'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
     381        'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
     382        'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
     383        'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
     384        'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
     385        'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
     386        'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
     387
     388        'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
     389        'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
     390        'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
     391        'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
     392        'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
     393        'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'
     394);
     395
     396
     397$mime_alias = array(
     398        'application/x-ogg' => 'application/ogg',
     399        'audio/3gpp' => 'video/3gpp',
     400        'audio/x-mpeg' => 'audio/mpeg',
     401        'audio/x-musepack' => 'audio/musepack',
     402        'audio/webm' => 'video/webm',
     403        'video/flv' => 'video/x-flv',
     404        'video/mp4' => 'application/mp4',
     405        'image/jpg' => 'image/jpeg'
     406);
    405407
    406408?>
  • _core_/plugins/medias/formulaires/changer_fichier_document.php

    r79783 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    15 function formulaires_changer_fichier_document_charger_dist($id_document){
    16         $valeurs = sql_fetsel('id_document,fichier,distant','spip_documents','id_document='.intval($id_document));
    17         if (!$valeurs)
    18                 return array('editable'=>false);
     17function formulaires_changer_fichier_document_charger_dist($id_document) {
     18        $valeurs = sql_fetsel('id_document,fichier,distant', 'spip_documents', 'id_document=' . intval($id_document));
     19        if (!$valeurs) {
     20                return array('editable' => false);
     21        }
    1922
    20         $charger = charger_fonction('charger','formulaires/joindre_document');
    21         $valeurs = array_merge($valeurs,$charger($id_document,0,'','choix'));
     23        $charger = charger_fonction('charger', 'formulaires/joindre_document');
     24        $valeurs = array_merge($valeurs, $charger($id_document, 0, '', 'choix'));
    2225
    2326        $valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />";
    24        
     27
    2528        return $valeurs;
    2629}
    2730
    28 function formulaires_changer_fichier_document_verifier_dist($id_document){
     31function formulaires_changer_fichier_document_verifier_dist($id_document) {
    2932        $erreurs = array();
    30         if (_request('copier_local')){
    31         }
    32         else {
    33                 $verifier = charger_fonction('verifier','formulaires/joindre_document');
     33        if (_request('copier_local')) {
     34        } else {
     35                $verifier = charger_fonction('verifier', 'formulaires/joindre_document');
    3436                $erreurs = $verifier($id_document);
    3537        }
     38
    3639        return $erreurs;
    3740}
    3841
    39 function formulaires_changer_fichier_document_traiter_dist($id_document){
    40         if (_request('copier_local')){
    41                 $copier_local = charger_fonction('copier_local','action');
    42                 $res = array('editable'=>true);
    43                 if (($err=$copier_local($id_document))===true)
     42function formulaires_changer_fichier_document_traiter_dist($id_document) {
     43        if (_request('copier_local')) {
     44                $copier_local = charger_fonction('copier_local', 'action');
     45                $res = array('editable' => true);
     46                if (($err = $copier_local($id_document)) === true) {
    4447                        $res['message_ok'] = _T('medias:document_copie_locale_succes');
    45                 else
     48                } else {
    4649                        $res['message_erreur'] = $err;
    47         }
    48         else {
     50                }
     51        } else {
    4952                // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom
    50                 if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document))
    51                   AND @file_exists($f = get_spip_doc($ancien_fichier))){
     53                if ($ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document))
     54                        AND @file_exists($f = get_spip_doc($ancien_fichier))
     55                ) {
    5256                        spip_unlink($f);
    5357                }
    54                 $traiter = charger_fonction('traiter','formulaires/joindre_document');
     58                $traiter = charger_fonction('traiter', 'formulaires/joindre_document');
    5559                $res = $traiter($id_document);
    5660        }
     61
    5762        return $res;
    5863}
  • _core_/plugins/medias/formulaires/configurer_documents.php

    r79783 r93616  
    1515 *
    1616 * @package SPIP\Medias\Formulaires
    17 **/
     17 **/
    1818
    19 if (!defined('_ECRIRE_INC_VERSION')) return;
     19if (!defined('_ECRIRE_INC_VERSION')) {
     20        return;
     21}
    2022
    2123/**
     
    2426 * @return array
    2527 *     Environnement du formulaire
    26 **/
    27 function formulaires_configurer_documents_charger_dist(){
    28         foreach(array(
    29                 "documents_objets",
    30                 "documents_date",
    31                 ) as $m)
     28 **/
     29function formulaires_configurer_documents_charger_dist() {
     30        foreach (array(
     31                         "documents_objets",
     32                         "documents_date",
     33                 ) as $m) {
    3234                $valeurs[$m] = isset($GLOBALS['meta'][$m]) ? $GLOBALS['meta'][$m] : '';
    33         $valeurs['documents_objets']=explode(',',$valeurs['documents_objets']);
     35        }
     36        $valeurs['documents_objets'] = explode(',', $valeurs['documents_objets']);
     37
    3438        return $valeurs;
    3539}
     
    4044 * @return array
    4145 *     Retours du traitement
    42 **/
    43 function formulaires_configurer_documents_traiter_dist(){
    44         $res = array('editable'=>true);
    45         if (!is_null($v=_request($m='documents_date')))
    46                 ecrire_meta($m, $v=='oui'?'oui':'non');
    47         if (!is_null($v=_request($m='documents_objets')))
    48                 ecrire_meta($m, is_array($v)?implode(',',$v):'');
     46 **/
     47function formulaires_configurer_documents_traiter_dist() {
     48        $res = array('editable' => true);
     49        if (!is_null($v = _request($m = 'documents_date'))) {
     50                ecrire_meta($m, $v == 'oui' ? 'oui' : 'non');
     51        }
     52        if (!is_null($v = _request($m = 'documents_objets'))) {
     53                ecrire_meta($m, is_array($v) ? implode(',', $v) : '');
     54        }
    4955
    5056        $res['message_ok'] = _T('config_info_enregistree');
     57
    5158        return $res;
    5259}
  • _core_/plugins/medias/formulaires/editer_document.php

    r93092 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517include_spip('inc/actions');
     
    1820include_spip('inc/config');
    1921
    20 function formulaires_editer_document_charger_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = ''){
    21         $valeurs = formulaires_editer_objet_charger('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden);
     22function formulaires_editer_document_charger_dist(
     23        $id_document = 'new',
     24        $id_parent = '',
     25        $retour = '',
     26        $lier_trad = 0,
     27        $config_fonc = 'documents_edit_config',
     28        $row = array(),
     29        $hidden = ''
     30) {
     31        $valeurs = formulaires_editer_objet_charger('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc,
     32                $row, $hidden);
    2233
    2334        // relier les parents
    2435        $valeurs['parents'] = array();
    2536        $valeurs['_hidden'] = "";
    26         $parents = sql_allfetsel('objet,id_objet','spip_documents_liens','id_document='.intval($id_document));
    27         foreach($parents as $p){
    28                 if (in_array($p['objet'],array('article','rubrique')) AND $p['id_objet']>0)
    29                         $valeurs['parents'][] = $p['objet'].'|'.$p['id_objet'];
    30                 else
    31                         $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='".$p['objet'].'|'.$p['id_objet']."' />";
     37        $parents = sql_allfetsel('objet,id_objet', 'spip_documents_liens', 'id_document=' . intval($id_document));
     38        foreach ($parents as $p) {
     39                if (in_array($p['objet'], array('article', 'rubrique')) AND $p['id_objet'] > 0) {
     40                        $valeurs['parents'][] = $p['objet'] . '|' . $p['id_objet'];
     41                } else {
     42                        $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='" . $p['objet'] . '|' . $p['id_objet'] . "' />";
     43                }
    3244        }
    3345
    3446        // en fonction de la config du site on a le droit ou pas de modifier la date
    35         if ($valeurs['_editer_date'] = (lire_config('documents_date') == 'oui' ? ' ' : '')){
    36                 $valeurs['saisie_date'] = affdate($valeurs['date'],'d/m/Y');
    37                 $valeurs['saisie_heure'] = affdate($valeurs['date'],'H:i');
    38         }
    39         elseif (isset($valeurs['date'])){
     47        if ($valeurs['_editer_date'] = (lire_config('documents_date') == 'oui' ? ' ' : '')) {
     48                $valeurs['saisie_date'] = affdate($valeurs['date'], 'd/m/Y');
     49                $valeurs['saisie_heure'] = affdate($valeurs['date'], 'H:i');
     50        } elseif (isset($valeurs['date'])) {
    4051                unset($valeurs['date']);
    4152        }
    42        
     53
    4354        // en fonction du format
    44         $valeurs['_editer_dimension'] = autoriser('tailler','document',$id_document)?' ':'';
     55        $valeurs['_editer_dimension'] = autoriser('tailler', 'document', $id_document) ? ' ' : '';
    4556
    4657        // type du document et inclusion
    47         $row = sql_fetsel('titre as type_document,inclus','spip_types_documents','extension='.sql_quote($valeurs['extension']));
     58        $row = sql_fetsel('titre as type_document,inclus', 'spip_types_documents',
     59                'extension=' . sql_quote($valeurs['extension']));
    4860        $valeurs['type_document'] = $row['type_document'];
    4961        $valeurs['_inclus'] = $row['inclus'];
    50         if (in_array($valeurs['extension'],array('jpg','gif','png'))){
     62        if (in_array($valeurs['extension'], array('jpg', 'gif', 'png'))) {
    5163                $valeurs['apercu'] = get_spip_doc($valeurs['fichier']);
    5264        }
     
    5466        // verifier les infos de taille et dimensions sur les fichiers locaux
    5567        // cas des maj de fichier directes par ftp
    56         if ($valeurs['distant']!=='oui'){
     68        if ($valeurs['distant'] !== 'oui') {
    5769                include_spip('inc/renseigner_document');
    58                 $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']),$valeurs['extension']);
    59                 if ($infos AND is_array($infos) AND isset($infos['taille'])){
    60                         if ($infos['taille']!=$valeurs['taille']
    61                                 OR ($infos['type_image'] && ($infos['largeur']!=$valeurs['largeur']))
    62                                 OR ($infos['type_image'] && ($infos['hauteur']!=$valeurs['hauteur']))){
     70                $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']), $valeurs['extension']);
     71                if ($infos AND is_array($infos) AND isset($infos['taille'])) {
     72                        if ($infos['taille'] != $valeurs['taille']
     73                                OR ($infos['type_image'] && ($infos['largeur'] != $valeurs['largeur']))
     74                                OR ($infos['type_image'] && ($infos['hauteur'] != $valeurs['hauteur']))
     75                        ) {
    6376                                $valeurs['_taille_modif'] = $infos['taille'];
    6477                                $valeurs['_largeur_modif'] = $infos['largeur'];
    6578                                $valeurs['_hauteur_modif'] = $infos['hauteur'];
    66                                 $valeurs['_hidden'].=
    67                                 "<input type='hidden' name='_taille_modif' value='".$infos['taille']."' />"
    68                                 . "<input type='hidden' name='_largeur_modif' value='".$infos['largeur']."' />"
    69                                 . "<input type='hidden' name='_hauteur_modif' value='".$infos['hauteur']."' />";
     79                                $valeurs['_hidden'] .=
     80                                        "<input type='hidden' name='_taille_modif' value='" . $infos['taille'] . "' />"
     81                                        . "<input type='hidden' name='_largeur_modif' value='" . $infos['largeur'] . "' />"
     82                                        . "<input type='hidden' name='_hauteur_modif' value='" . $infos['hauteur'] . "' />";
    7083                        }
    7184                }
     
    7487
    7588        // pour l'upload d'un nouveau doc
    76         if ($valeurs['fichier']){
    77                 $charger = charger_fonction('charger','formulaires/joindre_document');
    78                 $valeurs = array_merge($valeurs,$charger($id_document,0,'','choix'));
     89        if ($valeurs['fichier']) {
     90                $charger = charger_fonction('charger', 'formulaires/joindre_document');
     91                $valeurs = array_merge($valeurs, $charger($id_document, 0, '', 'choix'));
    7992                $valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />";
    8093        }
     
    8497
    8598// Choix par defaut des options de presentation
    86 function documents_edit_config($row)
    87 {
     99function documents_edit_config($row) {
    88100        global $spip_lang;
    89101
     
    93105
    94106        $config['restreint'] = ($row['statut'] == 'publie');
     107
    95108        return $config;
    96109}
    97110
    98 function formulaires_editer_document_verifier_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = ''){
    99         $erreurs = formulaires_editer_objet_verifier('document',$id_document,is_numeric($id_document)?array():array('titre'));
     111function formulaires_editer_document_verifier_dist(
     112        $id_document = 'new',
     113        $id_parent = '',
     114        $retour = '',
     115        $lier_trad = 0,
     116        $config_fonc = 'documents_edit_config',
     117        $row = array(),
     118        $hidden = ''
     119) {
     120        $erreurs = formulaires_editer_objet_verifier('document', $id_document,
     121                is_numeric($id_document) ? array() : array('titre'));
    100122
    101123        // verifier l'upload si on a demande a changer le document
    102         if (_request('joindre_upload') OR _request('joindre_ftp') OR _request('joindre_distant')){
    103                 if (_request('copier_local')){
    104                 }
    105                 else {
    106                         $verifier = charger_fonction('verifier','formulaires/joindre_document');
    107                         $erreurs = array_merge($erreurs,$verifier($id_document));
    108                 }
    109         }
    110        
     124        if (_request('joindre_upload') OR _request('joindre_ftp') OR _request('joindre_distant')) {
     125                if (_request('copier_local')) {
     126                } else {
     127                        $verifier = charger_fonction('verifier', 'formulaires/joindre_document');
     128                        $erreurs = array_merge($erreurs, $verifier($id_document));
     129                }
     130        }
     131
    111132        // On ne vérifie la date que si on avait le droit de la modifier
    112         if (lire_config('documents_date') == 'oui'){
    113                 if (!$date = recup_date(_request('saisie_date').' '._request('saisie_heure').':00')
    114                   OR !($date = mktime($date[3],$date[4],0,$date[1],$date[2],$date[0])))
    115                   $erreurs['saisie_date'] = _T('medias:format_date_incorrect');
    116                 else {
    117                         set_request('saisie_date',date('d/m/Y',$date));
    118                         set_request('saisie_heure',date('H:i',$date));
    119                         set_request('date',date("Y-m-d H:i:s",$date));
     133        if (lire_config('documents_date') == 'oui') {
     134                if (!$date = recup_date(_request('saisie_date') . ' ' . _request('saisie_heure') . ':00')
     135                        OR !($date = mktime($date[3], $date[4], 0, $date[1], $date[2], $date[0]))
     136                ) {
     137                        $erreurs['saisie_date'] = _T('medias:format_date_incorrect');
     138                } else {
     139                        set_request('saisie_date', date('d/m/Y', $date));
     140                        set_request('saisie_heure', date('H:i', $date));
     141                        set_request('date', date("Y-m-d H:i:s", $date));
    120142                }
    121143        }
     
    125147
    126148// http://code.spip.net/@inc_editer_article_dist
    127 function formulaires_editer_document_traiter_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = ''){
    128         if (is_null(_request('parents')))
    129                 set_request('parents',array());
     149function formulaires_editer_document_traiter_dist(
     150        $id_document = 'new',
     151        $id_parent = '',
     152        $retour = '',
     153        $lier_trad = 0,
     154        $config_fonc = 'documents_edit_config',
     155        $row = array(),
     156        $hidden = ''
     157) {
     158        if (is_null(_request('parents'))) {
     159                set_request('parents', array());
     160        }
    130161
    131162        // verifier les infos de taille et dimensions sur les fichiers locaux
    132163        // cas des maj de fichier directes par ftp
    133         foreach(array('taille','largeur','hauteur') as $c)
    134         if (($v=_request("_{$c}_modif")) AND !_request($c)){
    135                 set_request($c,$v);
    136         }
    137 
    138         $res = formulaires_editer_objet_traiter('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden);
     164        foreach (array('taille', 'largeur', 'hauteur') as $c) {
     165                if (($v = _request("_{$c}_modif")) AND !_request($c)) {
     166                        set_request($c, $v);
     167                }
     168        }
     169
     170        $res = formulaires_editer_objet_traiter('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, $row,
     171                $hidden);
    139172        set_request('parents');
    140173        $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>";
    141174        if (_request('copier_local')
    142           OR _request('joindre_upload')
    143           OR _request('joindre_ftp')
    144           OR _request('joindre_distant')
    145           OR _request('joindre_zip')){
     175                OR _request('joindre_upload')
     176                OR _request('joindre_ftp')
     177                OR _request('joindre_distant')
     178                OR _request('joindre_zip')
     179        ) {
    146180                $autoclose = "";
    147                 if (_request('copier_local')){
    148                         $copier_local = charger_fonction('copier_local','action');
    149                         $res = array('editable'=>true);
    150                         if (($err=$copier_local($id_document))===true)
    151                                 $res['message_ok'] = (isset($res['message_ok'])?$res['message_ok'].'<br />':'')._T('medias:document_copie_locale_succes');
    152                         else
    153                                 $res['message_erreur'] = (isset($res['message_erreur'])?$res['message_erreur'].'<br />':'').$err;
     181                if (_request('copier_local')) {
     182                        $copier_local = charger_fonction('copier_local', 'action');
     183                        $res = array('editable' => true);
     184                        if (($err = $copier_local($id_document)) === true) {
     185                                $res['message_ok'] = (isset($res['message_ok']) ? $res['message_ok'] . '<br />' : '') . _T('medias:document_copie_locale_succes');
     186                        } else {
     187                                $res['message_erreur'] = (isset($res['message_erreur']) ? $res['message_erreur'] . '<br />' : '') . $err;
     188                        }
    154189                        set_request('credits'); // modifie par la copie locale
    155                 }
    156                 else {
     190                } else {
    157191                        // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom
    158                         if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document))
    159                                 AND @file_exists($rename = get_spip_doc($ancien_fichier))){
    160                                 @rename($rename,"$rename--.old");
    161 
    162                         }
    163                         $traiter = charger_fonction('traiter','formulaires/joindre_document');
     192                        if ($ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document))
     193                                AND @file_exists($rename = get_spip_doc($ancien_fichier))
     194                        ) {
     195                                @rename($rename, "$rename--.old");
     196
     197                        }
     198                        $traiter = charger_fonction('traiter', 'formulaires/joindre_document');
    164199                        $res2 = $traiter($id_document);
    165                         if (isset($res2['message_erreur'])){
     200                        if (isset($res2['message_erreur'])) {
    166201                                $res['message_erreur'] = $res2['message_erreur'];
    167202                                // retablir le fichier !
    168                                 if ($rename)
    169                                         @rename("$rename--.old",$rename);
    170                         }
    171                         else
    172                                 // supprimer vraiment le fichier initial
     203                                if ($rename) {
     204                                        @rename("$rename--.old", $rename);
     205                                }
     206                        } else // supprimer vraiment le fichier initial
     207                        {
    173208                                spip_unlink("$rename--.old");
     209                        }
    174210                }
    175211                // on annule les saisies largeur/hauteur : l'upload a pu charger les siens
    176212                set_request('largeur');
    177213                set_request('hauteur');
    178         }
    179         else{
     214        } else {
    180215                // regarder si une demande de rotation a eu lieu
    181216                // c'est un bouton image, dont on a pas toujours le name en request, on fait avec
    182217                $angle = 0;
    183                 if (_request('tournerL90') OR _request('tournerL90_x'))
     218                if (_request('tournerL90') OR _request('tournerL90_x')) {
    184219                        $angle = -90;
    185                 if (_request('tournerR90') OR _request('tournerR90_x'))
     220                }
     221                if (_request('tournerR90') OR _request('tournerR90_x')) {
    186222                        $angle = 90;
    187                 if (_request('tourner180') OR _request('tourner180_x'))
     223                }
     224                if (_request('tourner180') OR _request('tourner180_x')) {
    188225                        $angle = 180;
    189                 if ($angle){
     226                }
     227                if ($angle) {
    190228                        $autoclose = "";
    191                         $tourner = charger_fonction('tourner','action');
    192                         action_tourner_post($id_document,$angle);
    193                 }
    194         }
    195 
    196         if (!isset($res['redirect']))
     229                        $tourner = charger_fonction('tourner', 'action');
     230                        action_tourner_post($id_document, $angle);
     231                }
     232        }
     233
     234        if (!isset($res['redirect'])) {
    197235                $res['editable'] = true;
    198         if (!isset($res['message_erreur']))
    199                 $res['message_ok'] = _T('info_modification_enregistree').$autoclose;
    200 
    201         if ($res['message_ok'])
    202                 $res['message_ok'].='<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>';
     236        }
     237        if (!isset($res['message_erreur'])) {
     238                $res['message_ok'] = _T('info_modification_enregistree') . $autoclose;
     239        }
     240
     241        if ($res['message_ok']) {
     242                $res['message_ok'] .= '<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>';
     243        }
    203244
    204245        return $res;
  • _core_/plugins/medias/formulaires/illustrer_document.php

    r79783 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    15 function formulaires_illustrer_document_charger_dist($id_document){
     17function formulaires_illustrer_document_charger_dist($id_document) {
    1618        include_spip('inc/documents');
    17         $valeurs = sql_fetsel('id_document,mode,id_vignette,extension,media','spip_documents','id_document='.intval($id_document));
    18         if (!$valeurs /*OR in_array($valeurs['extension'],array('jpg','gif','png'))*/)
    19                 return array('editable'=>false,'id'=>$id_document);
     19        $valeurs = sql_fetsel('id_document,mode,id_vignette,extension,media', 'spip_documents',
     20                'id_document=' . intval($id_document));
     21        if (!$valeurs /*OR in_array($valeurs['extension'],array('jpg','gif','png'))*/) {
     22                return array('editable' => false, 'id' => $id_document);
     23        }
    2024
    2125        $valeurs['id'] = $id_document;
    2226        $valeurs['_hidden'] = "<input name='id_document' value='$id_document' type='hidden' />";
    2327        $valeurs['mode'] = 'vignette'; // pour les id dans le dom
    24         $vignette = sql_fetsel('fichier,largeur,hauteur,id_document','spip_documents','id_document='.$valeurs['id_vignette']);
     28        $vignette = sql_fetsel('fichier,largeur,hauteur,id_document', 'spip_documents',
     29                'id_document=' . $valeurs['id_vignette']);
    2530        $valeurs['vignette'] = get_spip_doc($vignette['fichier']);
    2631        $valeurs['hauteur'] = $vignette['hauteur'];
    2732        $valeurs['largeur'] = $vignette['largeur'];
    2833        $valeurs['id_vignette'] = $vignette['id_document'];
    29         $valeurs['_pipeline'] = array('editer_contenu_objet',array('type'=>'illustrer_document','id'=>$id_document));
     34        $valeurs['_pipeline'] = array('editer_contenu_objet', array('type' => 'illustrer_document', 'id' => $id_document));
    3035
    3136        return $valeurs;
    3237}
    3338
    34 function formulaires_illustrer_document_verifier_dist($id_document){
     39function formulaires_illustrer_document_verifier_dist($id_document) {
    3540        $erreurs = array();
    36         if (_request('supprimer')){
     41        if (_request('supprimer')) {
    3742
     43        } else {
     44
     45                $id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document=' . intval($id_document));
     46                $verifier = charger_fonction('verifier', 'formulaires/joindre_document');
     47                $erreurs = $verifier($id_vignette, 0, '', 'vignette');
    3848        }
    39         else {
    4049
    41                 $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
    42                 $verifier = charger_fonction('verifier','formulaires/joindre_document');
    43                 $erreurs = $verifier($id_vignette,0,'','vignette');
    44         }
    4550        return $erreurs;
    4651}
    4752
    48 function formulaires_illustrer_document_traiter_dist($id_document){
    49         $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
    50         $res = array('editable'=>true);
    51         if (_request('supprimer')){
    52                 $supprimer_document = charger_fonction('supprimer_document','action');
    53                 if ($id_vignette AND $supprimer_document($id_vignette))
     53function formulaires_illustrer_document_traiter_dist($id_document) {
     54        $id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document=' . intval($id_document));
     55        $res = array('editable' => true);
     56        if (_request('supprimer')) {
     57                $supprimer_document = charger_fonction('supprimer_document', 'action');
     58                if ($id_vignette AND $supprimer_document($id_vignette)) {
    5459                        $res['message_ok'] = _T('medias:vignette_supprimee');
    55           else
    56                   $res['message_erreur'] = _T('medias:erreur_suppression_vignette');
    57         }
    58         else {
     60                } else {
     61                        $res['message_erreur'] = _T('medias:erreur_suppression_vignette');
     62                }
     63        } else {
    5964                $ajouter_documents = charger_fonction('ajouter_documents', 'action');
    6065
     
    6267                $files = joindre_trouver_fichier_envoye();
    6368
    64                 $ajoute = $ajouter_documents($id_vignette,$files,'',0,'vignette');
     69                $ajoute = $ajouter_documents($id_vignette, $files, '', 0, 'vignette');
    6570
    6671                if (is_numeric(reset($ajoute))
    67                   AND $id_vignette = reset($ajoute)){
     72                        AND $id_vignette = reset($ajoute)
     73                ) {
    6874                        include_spip('action/editer_document');
    69                         document_modifier($id_document,array("id_vignette" => $id_vignette,'mode'=>'document'));
     75                        document_modifier($id_document, array("id_vignette" => $id_vignette, 'mode' => 'document'));
    7076                        $res['message_ok'] = _T('medias:document_installe_succes');
     77                } else {
     78                        $res['message_erreur'] = reset($ajoute);
    7179                }
    72                 else
    73                         $res['message_erreur'] = reset($ajoute);
    7480        }
    7581
  • _core_/plugins/medias/formulaires/joindre_document.php

    r93092 r93616  
    1616 * @package SPIP\Medias\Formulaires
    1717 */
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022/**
    2123 * Déterminer le mode d'upload si la valeur au chargement du formulaire est "auto"
    22  * 
     24 *
    2325 * @param string $mode
    24  *              Le mode passé au formulaire
     26 *    Le mode passé au formulaire
    2527 * @param int|string $id_document
    26  *              L'identifiant numérique du document à remplacer ou "new" par défaut
     28 *    L'identifiant numérique du document à remplacer ou "new" par défaut
    2729 * @param string $objet
    28  *              Le type d'objet sur lequel ajouter le document
     30 *    Le type d'objet sur lequel ajouter le document
    2931 * @return string $mode
    30  *              Le mode définitif
    31  */
    32 function joindre_determiner_mode($mode, $id_document, $objet){
    33         if ($mode=='auto'){
    34                 if (intval($id_document))
    35                         $mode = sql_getfetsel('mode','spip_documents','id_document='.intval($id_document));
    36                 if (!in_array($mode,array('choix','document','image'))){
    37                         $mode='choix';
    38                         if ($objet AND !in_array(table_objet_sql($objet),explode(',',$GLOBALS['meta']["documents_objets"])))
     32 *    Le mode définitif
     33 */
     34function joindre_determiner_mode($mode, $id_document, $objet) {
     35        if ($mode == 'auto') {
     36                if (intval($id_document)) {
     37                        $mode = sql_getfetsel('mode', 'spip_documents', 'id_document=' . intval($id_document));
     38                }
     39                if (!in_array($mode, array('choix', 'document', 'image'))) {
     40                        $mode = 'choix';
     41                        if ($objet AND !in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']["documents_objets"]))) {
    3942                                $mode = 'image';
    40                 }
    41         }
     43                        }
     44                }
     45        }
     46
    4247        return $mode;
    4348}
     
    4550/**
    4651 * Chargement du formulaire
    47  * 
     52 *
    4853 * @param int|string $id_document
    49  *              L'identidiant numérique du document s'il est à remplacer, sinon "new"
     54 *    L'identidiant numérique du document s'il est à remplacer, sinon "new"
    5055 * @param int $id_objet
    51  *              L'identifiant numérique de l'objet sur lequel on ajoute le document
     56 *    L'identifiant numérique de l'objet sur lequel on ajoute le document
    5257 * @param string $objet
    53  *              Le type de l'objet sur lequel on ajoute le document
     58 *    Le type de l'objet sur lequel on ajoute le document
    5459 * @param string $mode
    55  *              Le mode du document (auto,choix,document,image,vignette...), par défaut auto
     60 *    Le mode du document (auto,choix,document,image,vignette...), par défaut auto
    5661 * @param string $galerie
    57  *              Passer optionnellement une galerie jointe au form, plus utilise nativement,
    58  *              on prefere la mise a jour apres upload par ajaxReload('documents')
     62 *    Passer optionnellement une galerie jointe au form, plus utilise nativement,
     63 *    on prefere la mise a jour apres upload par ajaxReload('documents')
    5964 * @param bool|string $proposer_media
    60  *              Doit on afficher la médiathèque ?  par défaut oui
    61  *              Valeurs possibles si string : false,'non','no'.
    62  * @param bool|string $proposer_ftp 
    63  *              Doit on afficher le ftp ? par défaut oui
    64  *              Valeurs possibles si string : false,'non','no'.
     65 *    Doit on afficher la médiathèque ?  par défaut oui
     66 *    Valeurs possibles si string : false,'non','no'.
     67 * @param bool|string $proposer_ftp
     68 *    Doit on afficher le ftp ? par défaut oui
     69 *    Valeurs possibles si string : false,'non','no'.
    6570 * @return array $valeurs
    66  *              Les valeurs chargées dans le formulaire
    67  */
    68 function formulaires_joindre_document_charger_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true){
     71 *    Les valeurs chargées dans le formulaire
     72 */
     73function formulaires_joindre_document_charger_dist(
     74        $id_document = 'new',
     75        $id_objet = 0,
     76        $objet = '',
     77        $mode = 'auto',
     78        $galerie = false,
     79        $proposer_media = true,
     80        $proposer_ftp = true
     81) {
    6982        $valeurs = array();
    70         $mode = joindre_determiner_mode($mode,$id_document,$objet);
    71        
     83        $mode = joindre_determiner_mode($mode, $id_document, $objet);
     84
    7285        $valeurs['id'] = $id_document;
    7386        $valeurs['_mode'] = $mode;
    74        
     87
    7588        $valeurs['url'] = 'http://';
    76         $valeurs['fichier_upload'] = $valeurs['_options_upload_ftp'] = $valeurs['_dir_upload_ftp'] = '';       
    77         $valeurs['joindre_upload'] = $valeurs['joindre_distant'] = $valeurs['joindre_ftp'] = $valeurs['joindre_mediatheque'] = ''; 
     89        $valeurs['fichier_upload'] = $valeurs['_options_upload_ftp'] = $valeurs['_dir_upload_ftp'] = '';
     90        $valeurs['joindre_upload'] = $valeurs['joindre_distant'] = $valeurs['joindre_ftp'] = $valeurs['joindre_mediatheque'] = '';
    7891
    7992        $valeurs['editable'] = ' ';
    80         if (intval($id_document))
    81                 $valeurs['editable'] = autoriser('modifier','document',$id_document)?' ':'';
    82        
    83         $valeurs['proposer_media'] = is_string($proposer_media) ? (preg_match('/^(false|non|no)$/i', $proposer_media) ? false : true) : $proposer_media;
    84         $valeurs['proposer_ftp'] = is_string($proposer_ftp) ? (preg_match('/^(false|non|no)$/i', $proposer_ftp) ? false : true) : $proposer_ftp;
    85        
     93        if (intval($id_document)) {
     94                $valeurs['editable'] = autoriser('modifier', 'document', $id_document) ? ' ' : '';
     95        }
     96
     97        $valeurs['proposer_media'] = is_string($proposer_media) ? (preg_match('/^(false|non|no)$/i',
     98                $proposer_media) ? false : true) : $proposer_media;
     99        $valeurs['proposer_ftp'] = is_string($proposer_ftp) ? (preg_match('/^(false|non|no)$/i',
     100                $proposer_ftp) ? false : true) : $proposer_ftp;
     101
    86102        # regarder si un choix d'upload FTP est vraiment possible
    87103        if (
     
    91107                //AND !$vignette_de_doc         # pas pour une vignette (NB: la ligne precedente suffit, mais si on la supprime il faut conserver ce test-ci)
    92108                AND $GLOBALS['flag_upload']
    93          ) {
     109        ) {
    94110                include_spip('inc/documents');
    95111                if ($dir = determine_upload('documents')) {
     
    98114                        // s'il n'y en a pas, on affiche un message d'aide
    99115                        // en mode document, mais pas en mode image
    100                         if ($valeurs['_options_upload_ftp'] OR ($mode == 'document' OR $mode=='choix'))
    101                                 $valeurs['_dir_upload_ftp'] = "<b>".joli_repertoire($dir)."</b>";
     116                        if ($valeurs['_options_upload_ftp'] OR ($mode == 'document' OR $mode == 'choix')) {
     117                                $valeurs['_dir_upload_ftp'] = "<b>" . joli_repertoire($dir) . "</b>";
     118                        }
    102119                }
    103120        }
    104121        // On ne propose le FTP que si on a des choses a afficher
    105122        $valeurs['proposer_ftp'] = ($valeurs['_options_upload_ftp'] or $valeurs['_dir_upload_ftp']);
    106        
    107         if ($galerie){
     123
     124        if ($galerie) {
    108125                # passer optionnellement une galerie jointe au form
    109126                # plus utilise nativement, on prefere la mise a jour
     
    111128                $valeurs['_galerie'] = $galerie;
    112129        }
    113         if ($objet AND $id_objet){
     130        if ($objet AND $id_objet) {
    114131                $valeurs['id_objet'] = $id_objet;
    115132                $valeurs['objet'] = $objet;
    116133                $valeurs['refdoc_joindre'] = '';
    117                 if ($valeurs['editable']){
     134                if ($valeurs['editable']) {
    118135                        include_spip('inc/autoriser');
    119                         $valeurs['editable'] = autoriser('joindredocument',$objet,$id_objet)?' ':'';
     136                        $valeurs['editable'] = autoriser('joindredocument', $objet, $id_objet) ? ' ' : '';
    120137                }
    121138        }
     
    126143/**
    127144 * Vérification du formulaire
    128  * 
     145 *
    129146 * @param int|string $id_document
    130  *              L'identidiant numérique du document s'il est à remplacer, sinon "new"
     147 *    L'identidiant numérique du document s'il est à remplacer, sinon "new"
    131148 * @param int $id_objet
    132  *              L'identifiant numérique de l'objet sur lequel on ajoute le document
     149 *    L'identifiant numérique de l'objet sur lequel on ajoute le document
    133150 * @param string $objet
    134  *              Le type de l'objet sur lequel on ajoute le document
     151 *    Le type de l'objet sur lequel on ajoute le document
    135152 * @param string $mode
    136  *              Le mode du document (auto,choix,document,image,vignette...), par défaut auto
     153 *    Le mode du document (auto,choix,document,image,vignette...), par défaut auto
    137154 * @param string $galerie
    138  *              Passer optionnellement une galerie jointe au form, plus utilise nativement,
    139  *              on prefere la mise a jour apres upload par ajaxReload('documents')
     155 *    Passer optionnellement une galerie jointe au form, plus utilise nativement,
     156 *    on prefere la mise a jour apres upload par ajaxReload('documents')
    140157 * @param bool|string $proposer_media
    141  *              Doit on afficher la médiathèque ?  par défaut oui
    142  *              Valeurs possibles si string : false,'non','no'.
    143  * @param bool|string $proposer_ftp 
    144  *              Doit on afficher le ftp ? par défaut oui
    145  *              Valeurs possibles si string : false,'non','no'.
     158 *    Doit on afficher la médiathèque ?  par défaut oui
     159 *    Valeurs possibles si string : false,'non','no'.
     160 * @param bool|string $proposer_ftp
     161 *    Doit on afficher le ftp ? par défaut oui
     162 *    Valeurs possibles si string : false,'non','no'.
    146163 * @return array $erreurs
    147  *              Les erreurs éventuelles dans un tableau
    148  */
    149 function formulaires_joindre_document_verifier_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true){
     164 *    Les erreurs éventuelles dans un tableau
     165 */
     166function formulaires_joindre_document_verifier_dist(
     167        $id_document = 'new',
     168        $id_objet = 0,
     169        $objet = '',
     170        $mode = 'auto',
     171        $galerie = false,
     172        $proposer_media = true,
     173        $proposer_ftp = true
     174) {
    150175        include_spip('inc/joindre_document');
    151        
     176
    152177        $erreurs = array();
    153178        // on joint un document deja dans le site
    154         if (_request('joindre_mediatheque')){
    155         $refdoc_joindre = intval(preg_replace(',^(doc|document|img),','',_request('refdoc_joindre')));
    156                 if (!sql_getfetsel('id_document','spip_documents','id_document='.intval($refdoc_joindre)))
     179        if (_request('joindre_mediatheque')) {
     180                $refdoc_joindre = intval(preg_replace(',^(doc|document|img),', '', _request('refdoc_joindre')));
     181                if (!sql_getfetsel('id_document', 'spip_documents', 'id_document=' . intval($refdoc_joindre))) {
    157182                        $erreurs['message_erreur'] = _T('medias:erreur_aucun_document');
    158         }
    159         // sinon c'est un upload
     183                }
     184        } // sinon c'est un upload
    160185        else {
    161186                $files = joindre_trouver_fichier_envoye();
    162                 if (is_string($files))
     187                if (is_string($files)) {
    163188                        $erreurs['message_erreur'] = $files;
    164                 elseif(is_array($files)){
     189                } elseif (is_array($files)) {
    165190                        // erreur si on a pas trouve de fichier
    166                         if (!count($files))
     191                        if (!count($files)) {
    167192                                $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier');
    168 
    169                         else{
     193                        } else {
    170194                                // regarder si on a eu une erreur sur l'upload d'un fichier
    171                                 foreach($files as $file){
     195                                foreach ($files as $file) {
    172196                                        if (isset($file['error'])
    173                                                 AND $test = joindre_upload_error($file['error'])){
    174                                                         if (is_string($test))
    175                                                                 $erreurs['message_erreur'] = $test;
    176                                                         else
    177                                                                 $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier');
     197                                                AND $test = joindre_upload_error($file['error'])
     198                                        ) {
     199                                                if (is_string($test)) {
     200                                                        $erreurs['message_erreur'] = $test;
     201                                                } else {
     202                                                        $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier');
     203                                                }
    178204                                        }
    179205                                }
     
    183209                                if (!count($erreurs)
    184210                                        AND !_request('joindre_zip')
    185                                         AND $contenu_zip = joindre_verifier_zip($files)){
    186                                         list($fichiers,$erreurs,$tmp_zip) = $contenu_zip;
     211                                        AND $contenu_zip = joindre_verifier_zip($files)
     212                                ) {
     213                                        list($fichiers, $erreurs, $tmp_zip) = $contenu_zip;
    187214                                        if ($fichiers) {
    188215                                                $erreurs['message_erreur'] = '';
    189                                                 $erreurs['lister_contenu_archive'] = recuperer_fond("formulaires/inc-lister_archive_jointe",array('chemin_zip'=>$tmp_zip,'liste_fichiers_zip'=>$fichiers,'erreurs_fichier_zip'=>$erreurs));
     216                                                $erreurs['lister_contenu_archive'] = recuperer_fond("formulaires/inc-lister_archive_jointe",
     217                                                        array('chemin_zip' => $tmp_zip, 'liste_fichiers_zip' => $fichiers, 'erreurs_fichier_zip' => $erreurs));
    190218                                        } else {
    191219                                                $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier');
     
    195223                }
    196224
    197                 if (count($erreurs) AND defined('_tmp_dir'))
     225                if (count($erreurs) AND defined('_tmp_dir')) {
    198226                        effacer_repertoire_temporaire(_tmp_dir);
    199         }
    200        
     227                }
     228        }
     229
    201230        return $erreurs;
    202231}
     
    204233/**
    205234 * Traitement du formulaire
    206  * 
     235 *
    207236 * @param int|string $id_document
    208  *              L'identidiant numérique du document s'il est à remplacer, sinon "new"
     237 *    L'identidiant numérique du document s'il est à remplacer, sinon "new"
    209238 * @param int $id_objet
    210  *              L'identifiant numérique de l'objet sur lequel on ajoute le document
     239 *    L'identifiant numérique de l'objet sur lequel on ajoute le document
    211240 * @param string $objet
    212  *              Le type de l'objet sur lequel on ajoute le document
     241 *    Le type de l'objet sur lequel on ajoute le document
    213242 * @param string $mode
    214  *              Le mode du document (auto,choix,document,image,vignette...), par défaut auto
     243 *    Le mode du document (auto,choix,document,image,vignette...), par défaut auto
    215244 * @param string $galerie
    216  *              Passer optionnellement une galerie jointe au form, plus utilise nativement,
    217  *              on prefere la mise a jour apres upload par ajaxReload('documents')
     245 *    Passer optionnellement une galerie jointe au form, plus utilise nativement,
     246 *    on prefere la mise a jour apres upload par ajaxReload('documents')
    218247 * @param bool|string $proposer_media
    219  *              Doit on afficher la médiathèque ?  par défaut oui
    220  *              Valeurs possibles si string : false,'non','no'.
    221  * @param bool|string $proposer_ftp 
    222  *              Doit on afficher le ftp ? par défaut oui
    223  *              Valeurs possibles si string : false,'non','no'.
     248 *    Doit on afficher la médiathèque ?  par défaut oui
     249 *    Valeurs possibles si string : false,'non','no'.
     250 * @param bool|string $proposer_ftp
     251 *    Doit on afficher le ftp ? par défaut oui
     252 *    Valeurs possibles si string : false,'non','no'.
    224253 * @return array $res
    225  *              Le tableau renvoyé par les CVT avec le message et editable
    226  */
    227 function formulaires_joindre_document_traiter_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true){
    228         $res = array('editable'=>true);
     254 *    Le tableau renvoyé par les CVT avec le message et editable
     255 */
     256function formulaires_joindre_document_traiter_dist(
     257        $id_document = 'new',
     258        $id_objet = 0,
     259        $objet = '',
     260        $mode = 'auto',
     261        $galerie = false,
     262        $proposer_media = true,
     263        $proposer_ftp = true
     264) {
     265        $res = array('editable' => true);
    229266        $ancre = '';
    230267        // on joint un document deja dans le site
    231         if (_request('joindre_mediatheque')){
     268        if (_request('joindre_mediatheque')) {
    232269                $refdoc_joindre = _request('refdoc_joindre');
    233                 $refdoc_joindre = strtr($refdoc_joindre,";,","  ");
    234                 $refdoc_joindre = preg_replace(',\b(doc|document|img),','',$refdoc_joindre);
     270                $refdoc_joindre = strtr($refdoc_joindre, ";,", "  ");
     271                $refdoc_joindre = preg_replace(',\b(doc|document|img),', '', $refdoc_joindre);
    235272                // expliciter les intervales xxx-yyy
    236                 while(preg_match(",\b(\d+)-(\d+)\b,",$refdoc_joindre,$m))
    237                         $refdoc_joindre = str_replace($m[0],implode(" ",range($m[1],$m[2])),$refdoc_joindre);
    238                 $refdoc_joindre = explode(" ",$refdoc_joindre);
     273                while (preg_match(",\b(\d+)-(\d+)\b,", $refdoc_joindre, $m)) {
     274                        $refdoc_joindre = str_replace($m[0], implode(" ", range($m[1], $m[2])), $refdoc_joindre);
     275                }
     276                $refdoc_joindre = explode(" ", $refdoc_joindre);
    239277                include_spip('action/editer_document');
    240                 foreach($refdoc_joindre as $j){
    241                         if ($j = intval(preg_replace(',^(doc|document|img),','',$j))){
     278                foreach ($refdoc_joindre as $j) {
     279                        if ($j = intval(preg_replace(',^(doc|document|img),', '', $j))) {
    242280                                // lier le parent en plus
    243281                                $champs = array('ajout_parents' => array("$objet|$id_objet"));
    244                                 document_modifier($j,$champs);
    245                                 if (!$ancre)
     282                                document_modifier($j, $champs);
     283                                if (!$ancre) {
    246284                                        $ancre = $j;
     285                                }
    247286                                $sel[] = $j;
    248287                                $res['message_ok'] = _T('medias:document_attache_succes');
    249288                        }
    250289                }
    251                 if ($sel)
    252                         $res['message_ok'] = singulier_ou_pluriel(count($sel),'medias:document_attache_succes','medias:nb_documents_attache_succes');
    253                 set_request('refdoc_joindre',''); // vider la saisie
    254         }
    255         // sinon c'est un upload
     290                if ($sel) {
     291                        $res['message_ok'] = singulier_ou_pluriel(count($sel), 'medias:document_attache_succes',
     292                                'medias:nb_documents_attache_succes');
     293                }
     294                set_request('refdoc_joindre', ''); // vider la saisie
     295        } // sinon c'est un upload
    256296        else {
    257297                $ajouter_documents = charger_fonction('ajouter_documents', 'action');
    258298
    259                 $mode = joindre_determiner_mode($mode,$id_document,$objet);
     299                $mode = joindre_determiner_mode($mode, $id_document, $objet);
    260300                include_spip('inc/joindre_document');
    261301                $files = joindre_trouver_fichier_envoye();
    262302
    263                 $nouveaux_doc = $ajouter_documents($id_document,$files,$objet,$id_objet,$mode);
    264 
    265                 if (defined('_tmp_zip'))
     303                $nouveaux_doc = $ajouter_documents($id_document, $files, $objet, $id_objet, $mode);
     304
     305                if (defined('_tmp_zip')) {
    266306                        unlink(_tmp_zip);
    267                 if (defined('_tmp_dir'))
     307                }
     308                if (defined('_tmp_dir')) {
    268309                        effacer_repertoire_temporaire(_tmp_dir);
     310                }
    269311
    270312                // checker les erreurs eventuelles
     
    273315                $sel = array();
    274316                foreach ($nouveaux_doc as $doc) {
    275                         if (!is_numeric($doc))
     317                        if (!is_numeric($doc)) {
    276318                                $messages_erreur[] = $doc;
    277                         // cas qui devrait etre traite en amont
    278                         elseif(!$doc)
    279                                 $messages_erreur[] = _T('medias:erreur_insertion_document_base',array('fichier'=>'<em>???</em>'));
    280                         else{
    281                                 if (!$ancre)
     319                        } // cas qui devrait etre traite en amont
     320                        elseif (!$doc) {
     321                                $messages_erreur[] = _T('medias:erreur_insertion_document_base', array('fichier' => '<em>???</em>'));
     322                        } else {
     323                                if (!$ancre) {
    282324                                        $ancre = $doc;
     325                                }
    283326                                $sel[] = $doc;
    284327                        }
    285328                }
    286                 if (count($messages_erreur))
    287                         $res['message_erreur'] = implode('<br />',$messages_erreur);
    288                 if ($sel)
    289                         $res['message_ok'] = singulier_ou_pluriel(count($sel),'medias:document_installe_succes','medias:nb_documents_installe_succes');
    290                 if ($ancre)
     329                if (count($messages_erreur)) {
     330                        $res['message_erreur'] = implode('<br />', $messages_erreur);
     331                }
     332                if ($sel) {
     333                        $res['message_ok'] = singulier_ou_pluriel(count($sel), 'medias:document_installe_succes',
     334                                'medias:nb_documents_installe_succes');
     335                }
     336                if ($ancre) {
    291337                        $res['redirect'] = "#doc$ancre";
    292         }
    293         if (count($sel) OR isset($res['message_ok'])){
     338                }
     339        }
     340        if (count($sel) OR isset($res['message_ok'])) {
    294341                $callback = "";
    295                 if ($ancre)
     342                if ($ancre) {
    296343                        $callback .= "jQuery('#doc$ancre a.editbox').eq(0).focus();";
    297                 if (count($sel)){
     344                }
     345                if (count($sel)) {
    298346                        // passer les ids document selectionnes aux pipelines
    299347                        $res['ids'] = $sel;
    300348
    301                         $sel = "#doc".implode(",#doc",$sel);
     349                        $sel = "#doc" . implode(",#doc", $sel);
    302350                        $callback .= "jQuery('$sel').animateAppend();";
    303351                }
    304352                $js = "if (window.jQuery) jQuery(function(){ajaxReload('documents',{callback:function(){ $callback }});});";
    305353                $js = "<script type='text/javascript'>$js</script>";
    306                 if (isset($res['message_erreur']))
    307                         $res['message_erreur'].= $js;
    308                 else
    309                 $res['message_ok'] .= $js;
    310         }
     354                if (isset($res['message_erreur'])) {
     355                        $res['message_erreur'] .= $js;
     356                } else {
     357                        $res['message_ok'] .= $js;
     358                }
     359        }
     360
    311361        return $res;
    312362}
     
    316366 *
    317367 * @param string $dir
    318  *              Le répertoire de recherche des documents
     368 *    Le répertoire de recherche des documents
    319369 * @param string $mode
    320  *              Le mode d'ajout de document
     370 *    Le mode d'ajout de document
    321371 * @return string $texte
    322  *              Le contenu HTML du selecteur de documents
     372 *    Le contenu HTML du selecteur de documents
    323373 */
    324374function joindre_options_upload_ftp($dir, $mode = 'document') {
     
    327377
    328378        // en mode "charger une image", ne proposer que les inclus
    329         $inclus = ($mode == 'image' OR $mode =='vignette')
     379        $inclus = ($mode == 'image' OR $mode == 'vignette')
    330380                ? " AND inclus='image'"
    331381                : '';
    332382
    333383        foreach ($fichiers as $f) {
    334                 $f = preg_replace(",^$dir,",'',$f);
     384                $f = preg_replace(",^$dir,", '', $f);
    335385                if (preg_match(",\.([^.]+)$,", $f, $match)) {
    336386                        $ext = strtolower($match[1]);
     
    338388                                include_spip('action/ajouter_documents');
    339389                                $ext = corriger_extension($ext);
    340                                 if (sql_fetsel('extension', 'spip_types_documents', $a = "extension='$ext'" . $inclus))
     390                                if (sql_fetsel('extension', 'spip_types_documents', $a = "extension='$ext'" . $inclus)) {
    341391                                        $exts[$ext] = 'oui';
    342                                 else $exts[$ext] = 'non';
    343                         }
    344 
    345                         $k = 2*substr_count($f,'/');
     392                                } else {
     393                                        $exts[$ext] = 'non';
     394                                }
     395                        }
     396
     397                        $k = 2*substr_count($f, '/');
    346398                        $n = strrpos($f, "/");
    347                         if ($n === false)
     399                        if ($n === false) {
    348400                                $lefichier = $f;
    349                         else {
     401                        } else {
    350402                                $lefichier = substr($f, $n+1, strlen($f));
    351403                                $ledossier = substr($f, 0, $n);
    352404                                if (!in_array($ledossier, $dirs)) {
    353405                                        $texte_upload[] = "\n<option value=\"$ledossier\">"
    354                                         .str_repeat("&nbsp;",$k)
    355                                         ._T('medias:tout_dossier_upload', array('upload' => $ledossier))
    356                                         ."</option>";
    357                                         $dirs[]= $ledossier;
    358                                 }
    359                         }
    360 
    361                         if ($exts[$ext] == 'oui')
     406                                                . str_repeat("&nbsp;", $k)
     407                                                . _T('medias:tout_dossier_upload', array('upload' => $ledossier))
     408                                                . "</option>";
     409                                        $dirs[] = $ledossier;
     410                                }
     411                        }
     412
     413                        if ($exts[$ext] == 'oui') {
    362414                                $texte_upload[] = "\n<option value=\"$f\">"
    363                                 .str_repeat("&nbsp;",$k+2)
    364                                 .$lefichier
    365                                 ."</option>";
     415                                        . str_repeat("&nbsp;", $k+2)
     416                                        . $lefichier
     417                                        . "</option>";
     418                        }
    366419                }
    367420        }
    368421
    369422        $texte = join('', $texte_upload);
    370         if (count($texte_upload)>1) {
     423        if (count($texte_upload) > 1) {
    371424                $texte = "\n<option value=\"/\" style='font-weight: bold;'>"
    372                                 ._T('medias:info_installer_tous_documents')
    373                                 ."</option>" . $texte;
    374         }
     425                        . _T('medias:info_installer_tous_documents')
     426                        . "</option>" . $texte;
     427        }
     428
    375429        return $texte;
    376430}
     
    381435 *
    382436 * @param array $files
    383  *              La liste des fichiers
     437 *    La liste des fichiers
    384438 * @return string $res
    385  *              La liste HTML des fichiers <li>...</li>
     439 *    La liste HTML des fichiers <li>...</li>
    386440 */
    387441function joindre_liste_contenu_tailles_archive($files) {
     
    389443
    390444        $res = '';
    391         if (is_array($files))
     445        if (is_array($files)) {
    392446                foreach ($files as $nom => $file) {
    393447                        $nom = translitteration($nom);
    394448                        $date = date_interface(date("Y-m-d H:i:s", $file['mtime']));
    395        
     449
    396450                        $taille = taille_en_octets($file['size']);
    397                         $res .= "<li title=\"".attribut_html($title)."\"><b>$nom</b> &ndash; $taille<br />&nbsp; $date</li>\n";
    398                 }
    399        
     451                        $res .= "<li title=\"" . attribut_html($title) . "\"><b>$nom</b> &ndash; $taille<br />&nbsp; $date</li>\n";
     452                }
     453        }
     454
    400455        return $res;
    401456}
     
    404459 * Lister les erreurs dans une archive jointe
    405460 * Utilisé formulaires/inc-lister_archive_jointe.html
    406  * 
     461 *
    407462 * @param array $erreurs
    408  *              La liste des erreurs
     463 *    La liste des erreurs
    409464 * @return string $res
    410  *              Le code HTML des erreurs
    411  */
    412 function joindre_liste_erreurs_to_li($erreurs){
    413         if (count($erreurs)==1)
    414                 return "<p>".reset($erreurs)."</p>";
    415 
    416         $res = implode("</li><li>",$erreurs);
    417         if (strlen($res)) $res = "<li>$res</li></ul>";
    418         if (count($erreurs)>4)
    419                 $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>";
    420         else
     465 *    Le code HTML des erreurs
     466 */
     467function joindre_liste_erreurs_to_li($erreurs) {
     468        if (count($erreurs) == 1) {
     469                return "<p>" . reset($erreurs) . "</p>";
     470        }
     471
     472        $res = implode("</li><li>", $erreurs);
     473        if (strlen($res)) {
     474                $res = "<li>$res</li></ul>";
     475        }
     476        if (count($erreurs) > 4) {
     477                $res = "<p style='cursor:pointer;' onclick='jQuery(this).siblings(\"ul\").toggle();return false;'>" . _T("medias:erreurs_voir",
     478                                array('nb' => count($erreurs))) . "</p><ul class=\"spip none-js\">" . $res . "</ul>";
     479        } else {
    421480                $res = "<ul class=\"spip\">$res</ul>";
     481        }
     482
    422483        return $res;
    423484}
  • _core_/plugins/medias/inc/choisir_mode_document.php

    r79783 r93616  
    1616 * @package SPIP\Medias\Modes
    1717 */
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022/**
     
    3032 *     Mode du document
    3133 */
    32 function inc_choisir_mode_document($infos, $type_inclus_image, $objet){
    33        
     34function inc_choisir_mode_document($infos, $type_inclus_image, $objet) {
     35
    3436        // si ce n'est pas une image, c'est forcement un document
    35         if (!$infos['type_image'] OR !$type_inclus_image)
     37        if (!$infos['type_image'] OR !$type_inclus_image) {
    3638                return 'document';
     39        }
    3740
    3841        // si on a pas le droit d'ajouter de document a l'objet, c'est donc un mode image
    39         if ($objet AND isset($GLOBALS['meta']["documents_$objet"]) AND ($GLOBALS['meta']["documents_$objet"]=='non'))
     42        if ($objet AND isset($GLOBALS['meta']["documents_$objet"]) AND ($GLOBALS['meta']["documents_$objet"] == 'non')) {
    4043                return 'image';
    41        
     44        }
     45
    4246
    4347        // _INTERFACE_DOCUMENTS
     
    4953        // pour beneficier de cette detection auto
    5054        @define('_LARGEUR_MODE_IMAGE', 0);
    51        
    52         if (!_LARGEUR_MODE_IMAGE)
     55
     56        if (!_LARGEUR_MODE_IMAGE) {
    5357                return 'image';
    54        
     58        }
     59
    5560        if ($infos['largeur'] > 0
    56           AND $infos['largeur'] < _LARGEUR_MODE_IMAGE)
     61                AND $infos['largeur'] < _LARGEUR_MODE_IMAGE
     62        ) {
    5763                return 'image';
    58         else
     64        } else {
    5965                return 'document';
     66        }
    6067}
    6168
  • _core_/plugins/medias/inc/documenter_objet.php

    r92759 r93616  
    1515 *
    1616 * @package SPIP\Medias\Fonctions
    17 **/
     17 **/
    1818
    19 if (!defined("_ECRIRE_INC_VERSION")) return;
     19if (!defined("_ECRIRE_INC_VERSION")) {
     20        return;
     21}
    2022
    2123/**
     
    2426 * @note
    2527 *     Marque les documents vus dans les textes de l'objet avant le calcul !
    26  * 
     28 *
    2729 * @uses inc_marquer_doublons_doc_dist()
    28  * 
     30 *
    2931 * @param int $id Identifiant de l'objet
    3032 * @param string $type Type d'objet
    3133 * @return string code HTML
    32 **/
     34 **/
    3335function inc_documenter_objet_dist($id, $type) {
    3436        $serveur = '';
     
    3739        $spip_table_objet = table_objet_sql($type);
    3840        $table_objet = table_objet($type);
    39         $id_table_objet = id_table_objet($type,$serveur);
     41        $id_table_objet = id_table_objet($type, $serveur);
    4042        $champs = sql_fetsel('*', $spip_table_objet, addslashes($id_table_objet) . "=" . intval($id));
    4143
    42         $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc');
    43         $marquer_doublons_doc($champs,$id,$type,$id_table_objet,$table_objet,$spip_table_objet, '', $serveur);
     44        $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc');
     45        $marquer_doublons_doc($champs, $id, $type, $id_table_objet, $table_objet, $spip_table_objet, '', $serveur);
    4446
    45         $contexte = array('objet'=>$type,'id_objet'=>$id);
     47        $contexte = array('objet' => $type, 'id_objet' => $id);
     48
    4649        return recuperer_fond('prive/objets/contenu/portfolio_document', array_merge($_GET, $contexte));
    4750}
  • _core_/plugins/medias/inc/documents.php

    r93092 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined('_ECRIRE_INC_VERSION')) return;
     13if (!defined('_ECRIRE_INC_VERSION')) {
     14        return;
     15}
    1416
    1517// inclure les fonctions bases du core
     
    2022// Constante indiquant le charset probable des documents non utf-8 joints
    2123
    22 if (!defined('CHARSET_JOINT')) define('CHARSET_JOINT', 'iso-8859-1');
     24if (!defined('CHARSET_JOINT')) {
     25        define('CHARSET_JOINT', 'iso-8859-1');
     26}
    2327
    2428// Filtre pour #FICHIER permettant d'incruster le contenu d'un document
     
    2933        include_spip('inc/distant');
    3034        if (is_numeric($arg)) {
    31                 $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=".intval($arg));
    32                 if (!$r) return '';
     35                $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($arg));
     36                if (!$r) {
     37                        return '';
     38                }
    3339                $f = $r['fichier'];
    34                 $f = ($r['distant'] =='oui') ? _DIR_RACINE . copie_locale($f) : get_spip_doc($f);
    35         }
    36         else {
    37                 if (!@file_exists($f=$arg)){
    38                         if (!$f = copie_locale($f))
     40                $f = ($r['distant'] == 'oui') ? _DIR_RACINE . copie_locale($f) : get_spip_doc($f);
     41        } else {
     42                if (!@file_exists($f = $arg)) {
     43                        if (!$f = copie_locale($f)) {
    3944                                return '';
     45                        }
    4046                        $f = _DIR_RACINE . $f;
    4147                }
     
    4854                if ($charset !== 'auto') {
    4955                        $r = importer_charset($r, $charset);
    50                 } elseif ($GLOBALS['meta']['charset'] == 'utf-8' AND !is_utf8($r))
     56                } elseif ($GLOBALS['meta']['charset'] == 'utf-8' AND !is_utf8($r)) {
    5157                        $r = importer_charset($r, CHARSET_JOINT);
    52         }
     58                }
     59        }
     60
    5361        return $r;
    5462}
     
    5866
    5967        include_spip('inc/autoriser');
    60         if (!autoriser('voir', 'document', $id_document)) return '';
    61 
    62         $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=".intval($id_document));
    63 
    64         if (!$r) return '';
     68        if (!autoriser('voir', 'document', $id_document)) {
     69                return '';
     70        }
     71
     72        $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($id_document));
     73
     74        if (!$r) {
     75                return '';
     76        }
    6577
    6678        $f = $r['fichier'];
    6779
    68         if ($r['distant'] == 'oui') return $f;
     80        if ($r['distant'] == 'oui') {
     81                return $f;
     82        }
    6983
    7084        // Si droit de voir tous les docs, pas seulement celui-ci
    7185        // il est inutilement couteux de rajouter une protection
    7286        $r = (autoriser('voir', 'document'));
    73         if (($r AND $r !== 'htaccess'))
     87        if (($r AND $r !== 'htaccess')) {
    7488                return get_spip_doc($f);
     89        }
    7590
    7691        include_spip('inc/securiser_action');
     
    7994        return generer_url_action('acceder_document',
    8095                $args . ($args ? "&" : '')
    81                         . 'arg='.$id_document
    82                         . ($ancre ? "&ancre=$ancre" : '')
    83                         . '&cle=' . calculer_cle_action($id_document.','.$f)
    84                         . '&file=' . rawurlencode($f)
    85                         ,true,true);
     96                . 'arg=' . $id_document
     97                . ($ancre ? "&ancre=$ancre" : '')
     98                . '&cle=' . calculer_cle_action($id_document . ',' . $f)
     99                . '&file=' . rawurlencode($f)
     100                , true, true);
    86101}
    87102
     
    104119                if ($img = image_du_document($doc)) {
    105120                        if (!$x AND !$y) // eviter une double reduction
     121                        {
    106122                                $img = image_reduire($img);
    107                 }
    108                 else{
    109                         $f = charger_fonction('vignette','inc');
     123                        }
     124                } else {
     125                        $f = charger_fonction('vignette', 'inc');
    110126                        $img = $f($e, false);
    111127                        $size = @getimagesize($img);
    112                         $img = "<img src='$img' ".$size[3]." />";
    113                 }
    114         }
    115         else{
     128                        $img = "<img src='$img' " . $size[3] . " />";
     129                }
     130        } else {
    116131                $size = @getimagesize($img);
    117                 $img = "<img src='$img' ".$size[3]." />";
     132                $img = "<img src='$img' " . $size[3] . " />";
    118133        }
    119134        // on appelle image_reduire independamment de la presence ou non
     
    125140        $img = inserer_attribut($img, 'alt', '');
    126141        $img = inserer_attribut($img, 'class', $class);
    127         if ($align) $img = inserer_attribut($img, 'align', $align);
    128 
    129         if (!$lien) return $img;
     142        if ($align) {
     143                $img = inserer_attribut($img, 'align', $align);
     144        }
     145
     146        if (!$lien) {
     147                return $img;
     148        }
    130149
    131150        $titre = supprimer_tags(typo($doc['titre']));
    132         $titre = " - " .taille_en_octets($doc['taille'])
    133           . ($titre ? " - $titre" : "");
    134 
    135         $type = sql_fetsel('titre, mime_type','spip_types_documents', "extension = " . sql_quote($e));
     151        $titre = " - " . taille_en_octets($doc['taille'])
     152                . ($titre ? " - $titre" : "");
     153
     154        $type = sql_fetsel('titre, mime_type', 'spip_types_documents', "extension = " . sql_quote($e));
    136155
    137156        $mime = $type['mime_type'];
     
    149168function image_du_document($document) {
    150169        if ($e = $document['extension']
    151           AND isset($GLOBALS['meta']['formats_graphiques'])
    152           AND (strpos($GLOBALS['meta']['formats_graphiques'], $e) !== false)
    153           AND (!test_espace_prive() OR $GLOBALS['meta']['creer_preview']=='oui')
    154           AND $document['fichier']) {
     170                AND isset($GLOBALS['meta']['formats_graphiques'])
     171                AND (strpos($GLOBALS['meta']['formats_graphiques'], $e) !== false)
     172                AND (!test_espace_prive() OR $GLOBALS['meta']['creer_preview'] == 'oui')
     173                AND $document['fichier']
     174        ) {
    155175                if ($document['distant'] == 'oui') {
    156                         $image = _DIR_RACINE.copie_locale($document['fichier']);
    157                 }
    158                 else
     176                        $image = _DIR_RACINE . copie_locale($document['fichier']);
     177                } else {
    159178                        $image = get_spip_doc($document['fichier']);
    160                 if (@file_exists($image)) return $image;
    161         }
     179                }
     180                if (@file_exists($image)) {
     181                        return $image;
     182                }
     183        }
     184
    162185        return '';
    163186}
     
    180203 *     Code HTML permettant de gérer des documents
    181204 */
    182 function afficher_documents_colonne($id, $type = "article", $script = NULL) {
    183         return recuperer_fond('prive/objets/editer/colonne_document', array('objet'=>$type,'id_objet'=>$id));
     205function afficher_documents_colonne($id, $type = "article", $script = null) {
     206        return recuperer_fond('prive/objets/editer/colonne_document', array('objet' => $type, 'id_objet' => $id));
    184207}
    185208
     
    189212 *
    190213 * Affiche un code de raccourcis de document, et l'insère
    191  * dans le textarea principal de l'objet (champ 'texte') sur un double-clic 
     214 * dans le textarea principal de l'objet (champ 'texte') sur un double-clic
    192215 *
    193216 * @param string $doc
    194  *              Type de raccourcis : doc,img,emb...
     217 *    Type de raccourcis : doc,img,emb...
    195218 * @param int $id
    196  *              Identifiant du document
     219 *    Identifiant du document
    197220 * @param string $align
    198  *              Alignement du document : left,center,right
    199  * 
     221 *    Alignement du document : left,center,right
     222 *
    200223 * @return string
    201  *              Texte du raccourcis
    202 **/
     224 *    Texte du raccourcis
     225 **/
    203226function affiche_raccourci_doc($doc, $id, $align) {
    204227        static $num = 0;
     
    207230        if ($align) {
    208231                $pipe = "|$align";
    209                 $onclick = "\nondblclick=\"barre_inserer('\\x3C$doc$id$pipe&gt;', $('textarea[name=texte]')[0]);\"\ntitle=\"". str_replace('&amp;', '&', entites_html(_T('medias:double_clic_inserer_doc')))."\"";
     232                $onclick = "\nondblclick=\"barre_inserer('\\x3C$doc$id$pipe&gt;', $('textarea[name=texte]')[0]);\"\ntitle=\"" . str_replace('&amp;',
     233                                '&', entites_html(_T('medias:double_clic_inserer_doc'))) . "\"";
    210234        } else {
    211                 $align='center';
     235                $align = 'center';
    212236        }
    213237
  • _core_/plugins/medias/inc/getdocument.php

    r92663 r93616  
    1616 * Fichier obsolète, à supprimer.
    1717 * Mais fonction utilisée encore dans medias_detecter_fond_par_defaut()
    18  * 
     18 *
    1919 * @package SPIP\Medias\Upload
    20 **/
     20 **/
    2121
    2222#
     
    2424#
    2525
    26 if (!defined('_ECRIRE_INC_VERSION')) return;
     26if (!defined('_ECRIRE_INC_VERSION')) {
     27        return;
     28}
    2729
    2830// inclure les fonctions bases du core
     
    3133include_spip('inc/minipres');
    3234
    33  
     35
    3436/**
    3537 * Traite l'erreur d'un upload trop gros
    36  * 
     38 *
    3739 * L'erreur est appelée depuis public.php et medias_detecter_fond_par_defaut
    3840 * et affiche un minipres avec la taille limite de documents possibles
    3941 *
    4042 * @see minipres()
    41 **/
     43 **/
    4244function erreur_upload_trop_gros() {
    4345        include_spip('inc/filtres');
    4446
    4547        $msg = "<p>"
    46                 .taille_en_octets($_SERVER["CONTENT_LENGTH"])
    47                 .'<br />'
    48                 ._T('medias:upload_limit',
    49                 array('max' => ini_get('upload_max_filesize')))
    50                 ."</p>";
     48                . taille_en_octets($_SERVER["CONTENT_LENGTH"])
     49                . '<br />'
     50                . _T('medias:upload_limit',
     51                        array('max' => ini_get('upload_max_filesize')))
     52                . "</p>";
    5153
    52         echo minipres(_T('pass_erreur'),"<div class='upload_answer upload_error'>".$msg."</div>");
     54        echo minipres(_T('pass_erreur'), "<div class='upload_answer upload_error'>" . $msg . "</div>");
    5355        exit;
    5456}
  • _core_/plugins/medias/inc/joindre_document.php

    r93092 r93616  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517
     
    1719 * Recuperer le nom du fichier selon le mode d'upload choisi
    1820 * et mettre cela au format $_FILES
    19  * 
     21 *
    2022 * Renvoie une liste de fichier ou un message en cas d'erreur
    2123 *
    2224 * @return string/array
    2325 */
    24 function joindre_trouver_fichier_envoye(){
     26function joindre_trouver_fichier_envoye() {
    2527        static $files = array();
    2628        // on est appele deux fois dans un hit, resservir ce qu'on a trouve a la verif
    2729        // lorsqu'on est appelle au traitement
    28        
    29         if (count($files))
     30
     31        if (count($files)) {
    3032                return $files;
    31        
    32         if (_request('joindre_upload')){
     33        }
     34
     35        if (_request('joindre_upload')) {
    3336                $post = isset($_FILES) ? $_FILES : $GLOBALS['HTTP_POST_FILES'];
    3437                $files = array();
    35                 if (is_array($post)){
     38                if (is_array($post)) {
    3639                        include_spip('action/ajouter_documents');
    37                   foreach ($post as $file) {
    38                         if (is_array($file['name'])){
    39                                 while (count($file['name'])){
    40                                                 $test=array(
    41                                                         'error'=>array_shift($file['error']),
    42                                                         'name'=>array_shift($file['name']),
    43                                                         'tmp_name'=>array_shift($file['tmp_name']),
    44                                                         'type'=>array_shift($file['type']),
    45                                                         );
    46                                                 if (!($test['error'] == 4)){
    47                                                         if (is_string($err = joindre_upload_error($test['error'])))
    48                                                                 return $err; // un erreur upload
    49                                                         if (!is_array(verifier_upload_autorise($test['name'])))
    50                                                                 return _T('medias:erreur_upload_type_interdit',array('nom'=>$test['name']));
    51                                                         $files[]=$test;
     40                        foreach ($post as $file) {
     41                                if (is_array($file['name'])) {
     42                                        while (count($file['name'])) {
     43                                                $test = array(
     44                                                        'error' => array_shift($file['error']),
     45                                                        'name' => array_shift($file['name']),
     46                                                        'tmp_name' => array_shift($file['tmp_name']),
     47                                                        'type' => array_shift($file['type']),
     48                                                );
     49                                                if (!($test['error'] == 4)) {
     50                                                        if (is_string($err = joindre_upload_error($test['error']))) {
     51                                                                return $err;
     52                                                        } // un erreur upload
     53                                                        if (!is_array(verifier_upload_autorise($test['name']))) {
     54                                                                return _T('medias:erreur_upload_type_interdit', array('nom' => $test['name']));
     55                                                        }
     56                                                        $files[] = $test;
    5257                                                }
    53                                 }
    54                         }
    55                         else {
    56                                 //UPLOAD_ERR_NO_FILE
    57                                         if (!($file['error'] == 4)){
    58                                                 if (is_string($err = joindre_upload_error($file['error'])))
    59                                                         return $err; // un erreur upload
    60                                                 if (!is_array(verifier_upload_autorise($file['name'])))
    61                                                         return _T('medias:erreur_upload_type_interdit',array('nom'=>$file['name']));
    62                                                 $files[]=$file;
    6358                                        }
    64                         }
    65                         }
    66                         if (!count($files))
     59                                } else {
     60                                        //UPLOAD_ERR_NO_FILE
     61                                        if (!($file['error'] == 4)) {