[SPIP] v3.2.1-->v3.2.3
[lhc/web/www.git] / www / plugins-dist / medias / formulaires / editer_document.php
index 044fd44..b128797 100644 (file)
@@ -3,77 +3,94 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2014                                                *
+ *  Copyright (c) 2001-2019                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined("_ECRIRE_INC_VERSION")) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 include_spip('inc/actions');
 include_spip('inc/editer');
 include_spip('inc/documents');
 include_spip('inc/config');
 
-function formulaires_editer_document_charger_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){
-       $valeurs = formulaires_editer_objet_charger('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden);
+function formulaires_editer_document_charger_dist(
+       $id_document = 'new',
+       $id_parent = '',
+       $retour = '',
+       $lier_trad = 0,
+       $config_fonc = 'documents_edit_config',
+       $row = array(),
+       $hidden = ''
+) {
+       $valeurs = formulaires_editer_objet_charger('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, $row, $hidden);
 
        // relier les parents
        $valeurs['parents'] = array();
-       $valeurs['_hidden'] = "";
-       $parents = sql_allfetsel('objet,id_objet','spip_documents_liens','id_document='.intval($id_document));
-       foreach($parents as $p){
-               if (in_array($p['objet'],array('article','rubrique')) AND $p['id_objet']>0)
-                       $valeurs['parents'][] = $p['objet'].'|'.$p['id_objet'];
-               else
-                       $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='".$p['objet'].'|'.$p['id_objet']."' />";
+       $valeurs['_hidden'] = '';
+       $parents = sql_allfetsel('objet,id_objet', 'spip_documents_liens', 'id_document=' . intval($id_document));
+       foreach ($parents as $p) {
+               if (in_array($p['objet'], array('article', 'rubrique')) and $p['id_objet'] > 0) {
+                       $valeurs['parents'][] = $p['objet'] . '|' . $p['id_objet'];
+               } else {
+                       $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='" . $p['objet'] . '|' . $p['id_objet'] . "' />";
+               }
        }
 
        // en fonction de la config du site on a le droit ou pas de modifier la date
-       if ($valeurs['_editer_date'] = (lire_config('documents_date') == 'oui' ? ' ' : '')){
-               $valeurs['saisie_date'] = affdate($valeurs['date'],'d/m/Y');
-               $valeurs['saisie_heure'] = affdate($valeurs['date'],'H:i');
-       }
-       elseif (isset($valeurs['date'])){
+       if ($valeurs['_editer_date'] = (lire_config('documents_date') == 'oui' ? ' ' : '')) {
+               $valeurs['saisie_date'] = affdate($valeurs['date'], 'd/m/Y');
+               $valeurs['saisie_heure'] = affdate($valeurs['date'], 'H:i');
+       } elseif (isset($valeurs['date'])) {
                unset($valeurs['date']);
        }
-       
+
        // en fonction du format
-       $valeurs['_editer_dimension'] = autoriser('tailler','document',$id_document)?' ':'';
+       $valeurs['_editer_dimension'] = autoriser('tailler', 'document', $id_document) ? ' ' : '';
 
        // type du document et inclusion
-       $row = sql_fetsel('titre as type_document,inclus','spip_types_documents','extension='.sql_quote($valeurs['extension']));
+       $row = sql_fetsel(
+               'titre as type_document,inclus',
+               'spip_types_documents',
+               'extension=' . sql_quote($valeurs['extension'])
+       );
        $valeurs['type_document'] = $row['type_document'];
        $valeurs['_inclus'] = $row['inclus'];
-       if (in_array($valeurs['extension'],array('jpg','gif','png'))){
+       if (in_array($valeurs['extension'], array('jpg', 'gif', 'png'))) {
                $valeurs['apercu'] = get_spip_doc($valeurs['fichier']);
        }
 
        // verifier les infos de taille et dimensions sur les fichiers locaux
        // cas des maj de fichier directes par ftp
-       if ($valeurs['distant']!=='oui'){
+       if ($valeurs['distant'] !== 'oui') {
                include_spip('inc/renseigner_document');
-               $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']),$valeurs['extension']);
-               if ($infos['taille']!=$valeurs['taille']
-                       OR ($infos['type_image'] && ($infos['largeur']!=$valeurs['largeur']))
-                       OR ($infos['type_image'] && ($infos['hauteur']!=$valeurs['hauteur']))){
-                       $valeurs['_taille_modif'] = $infos['taille'];
-                       $valeurs['_largeur_modif'] = $infos['largeur'];
-                       $valeurs['_hauteur_modif'] = $infos['hauteur'];
-                       $valeurs['_hidden'].=
-                       "<input type='hidden' name='_taille_modif' value='".$infos['taille']."' />"
-                       . "<input type='hidden' name='_largeur_modif' value='".$infos['largeur']."' />"
-                       . "<input type='hidden' name='_hauteur_modif' value='".$infos['hauteur']."' />";
+               $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']), $valeurs['extension']);
+               if ($infos and is_array($infos) and isset($infos['taille'])) {
+                       if ($infos['taille'] != $valeurs['taille']
+                               or ($infos['type_image'] && ($infos['largeur'] != $valeurs['largeur']))
+                               or ($infos['type_image'] && ($infos['hauteur'] != $valeurs['hauteur']))
+                       ) {
+                               $valeurs['_taille_modif'] = $infos['taille'];
+                               $valeurs['_largeur_modif'] = $infos['largeur'];
+                               $valeurs['_hauteur_modif'] = $infos['hauteur'];
+                               $valeurs['_hidden'] .=
+                                       "<input type='hidden' name='_taille_modif' value='" . $infos['taille'] . "' />"
+                                       . "<input type='hidden' name='_largeur_modif' value='" . $infos['largeur'] . "' />"
+                                       . "<input type='hidden' name='_hauteur_modif' value='" . $infos['hauteur'] . "' />";
+                       }
                }
        }
 
 
        // pour l'upload d'un nouveau doc
-       if ($valeurs['fichier']){
-               $charger = charger_fonction('charger','formulaires/joindre_document');
-               $valeurs = array_merge($valeurs,$charger($id_document,0,'','choix'));
+       if ($valeurs['fichier']) {
+               $charger = charger_fonction('charger', 'formulaires/joindre_document');
+               $valeurs = array_merge($valeurs, $charger($id_document, 0, '', 'choix'));
                $valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />";
        }
 
@@ -81,8 +98,7 @@ function formulaires_editer_document_charger_dist($id_document='new', $id_parent
 }
 
 // Choix par defaut des options de presentation
-function documents_edit_config($row)
-{
+function documents_edit_config($row) {
        global $spip_lang;
 
        $config = array();//$GLOBALS['meta'];
@@ -90,116 +106,141 @@ function documents_edit_config($row)
        $config['langue'] = $spip_lang;
 
        $config['restreint'] = ($row['statut'] == 'publie');
+
        return $config;
 }
 
-function formulaires_editer_document_verifier_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){
-       $erreurs = formulaires_editer_objet_verifier('document',$id_document,is_numeric($id_document)?array():array('titre'));
+function formulaires_editer_document_verifier_dist(
+       $id_document = 'new',
+       $id_parent = '',
+       $retour = '',
+       $lier_trad = 0,
+       $config_fonc = 'documents_edit_config',
+       $row = array(),
+       $hidden = ''
+) {
+       $erreurs = formulaires_editer_objet_verifier('document', $id_document, is_numeric($id_document) ? array() : array('titre'));
 
        // verifier l'upload si on a demande a changer le document
-       if (_request('joindre_upload') OR _request('joindre_ftp') OR _request('joindre_distant')){
-               if (_request('copier_local')){
-               }
-               else {
-                       $verifier = charger_fonction('verifier','formulaires/joindre_document');
-                       $erreurs = array_merge($erreurs,$verifier($id_document));
+       if (_request('joindre_upload') or _request('joindre_ftp') or _request('joindre_distant')) {
+               if (_request('copier_local')) {
+               } else {
+                       $verifier = charger_fonction('verifier', 'formulaires/joindre_document');
+                       $erreurs = array_merge($erreurs, $verifier($id_document));
                }
        }
-       
+
        // On ne vĂ©rifie la date que si on avait le droit de la modifier
-       if (lire_config('documents_date') == 'oui'){
-               if (!$date = recup_date(_request('saisie_date').' '._request('saisie_heure').':00')
-                 OR !($date = mktime($date[3],$date[4],0,$date[1],$date[2],$date[0])))
-                 $erreurs['saisie_date'] = _T('medias:format_date_incorrect');
-               else {
-                       set_request('saisie_date',date('d/m/Y',$date));
-                       set_request('saisie_heure',date('H:i',$date));
-                       set_request('date',date("Y-m-d H:i:s",$date));
+       if (lire_config('documents_date') == 'oui') {
+               if (!$date = recup_date(_request('saisie_date') . ' ' . _request('saisie_heure') . ':00')
+                       or !($date = mktime($date[3], $date[4], 0, $date[1], $date[2], $date[0]))
+               ) {
+                       $erreurs['saisie_date'] = _T('medias:format_date_incorrect');
+               } else {
+                       set_request('saisie_date', date('d/m/Y', $date));
+                       set_request('saisie_heure', date('H:i', $date));
+                       set_request('date', date('Y-m-d H:i:s', $date));
                }
        }
 
        return $erreurs;
 }
 
-// http://code.spip.net/@inc_editer_article_dist
-function formulaires_editer_document_traiter_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){
-       if (is_null(_request('parents')))
-               set_request('parents',array());
+// https://code.spip.net/@inc_editer_article_dist
+function formulaires_editer_document_traiter_dist(
+       $id_document = 'new',
+       $id_parent = '',
+       $retour = '',
+       $lier_trad = 0,
+       $config_fonc = 'documents_edit_config',
+       $row = array(),
+       $hidden = ''
+) {
+       if (is_null(_request('parents'))) {
+               set_request('parents', array());
+       }
 
        // verifier les infos de taille et dimensions sur les fichiers locaux
        // cas des maj de fichier directes par ftp
-       foreach(array('taille','largeur','hauteur') as $c)
-       if (($v=_request("_{$c}_modif")) AND !_request($c)){
-               set_request($c,$v);
+       foreach (array('taille', 'largeur', 'hauteur') as $c) {
+               if (($v = _request("_{$c}_modif")) and !_request($c)) {
+                       set_request($c, $v);
+               }
        }
 
-       $res = formulaires_editer_objet_traiter('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden);
+       $res = formulaires_editer_objet_traiter('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, $row, $hidden);
        set_request('parents');
        $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>";
        if (_request('copier_local')
-         OR _request('joindre_upload')
-         OR _request('joindre_ftp')
-         OR _request('joindre_distant')
-         OR _request('joindre_zip')){
-               $autoclose = "";
-               if (_request('copier_local')){
-                       $copier_local = charger_fonction('copier_local','action');
-                       $res = array('editable'=>true);
-                       if (($err=$copier_local($id_document))===true)
-                               $res['message_ok'] = (isset($res['message_ok'])?$res['message_ok'].'<br />':'')._T('medias:document_copie_locale_succes');
-                       else
-                               $res['message_erreur'] = (isset($res['message_erreur'])?$res['message_erreur'].'<br />':'').$err;
+               or _request('joindre_upload')
+               or _request('joindre_ftp')
+               or _request('joindre_distant')
+               or _request('joindre_zip')
+       ) {
+               $autoclose = '';
+               if (_request('copier_local')) {
+                       $copier_local = charger_fonction('copier_local', 'action');
+                       $res = array('editable' => true);
+                       if (($err = $copier_local($id_document)) === true) {
+                               $res['message_ok'] = (isset($res['message_ok']) ? $res['message_ok'] . '<br />' : '') . _T('medias:document_copie_locale_succes');
+                       } else {
+                               $res['message_erreur'] = (isset($res['message_erreur']) ? $res['message_erreur'] . '<br />' : '') . $err;
+                       }
                        set_request('credits'); // modifie par la copie locale
-               }
-               else {
+               } else {
                        // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom
-                       if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document))
-                               AND @file_exists($rename = get_spip_doc($ancien_fichier))){
-                               @rename($rename,"$rename--.old");
-
+                       if ($ancien_fichier = sql_getfetsel('fichier', 'spip_documents', 'id_document=' . intval($id_document))
+                               and !tester_url_absolue($ancien_fichier)
+                               and @file_exists($rename = get_spip_doc($ancien_fichier))
+                       ) {
+                               @rename($rename, "$rename--.old");
                        }
-                       $traiter = charger_fonction('traiter','formulaires/joindre_document');
+                       $traiter = charger_fonction('traiter', 'formulaires/joindre_document');
                        $res2 = $traiter($id_document);
-                       if (isset($res2['message_erreur'])){
+                       if (isset($res2['message_erreur'])) {
                                $res['message_erreur'] = $res2['message_erreur'];
                                // retablir le fichier !
-                               if ($rename)
-                                       @rename("$rename--.old",$rename);
-                       }
-                       else
-                               // supprimer vraiment le fichier initial
+                               if ($rename) {
+                                       @rename("$rename--.old", $rename);
+                               }
+                       } else // supprimer vraiment le fichier initial
+                       {
                                spip_unlink("$rename--.old");
+                       }
                }
                // on annule les saisies largeur/hauteur : l'upload a pu charger les siens
                set_request('largeur');
                set_request('hauteur');
-       }
-       else{
+       } else {
                // regarder si une demande de rotation a eu lieu
                // c'est un bouton image, dont on a pas toujours le name en request, on fait avec
                $angle = 0;
-               if (_request('tournerL90') OR _request('tournerL90_x'))
+               if (_request('tournerL90') or _request('tournerL90_x')) {
                        $angle = -90;
-               if (_request('tournerR90') OR _request('tournerR90_x'))
+               }
+               if (_request('tournerR90') or _request('tournerR90_x')) {
                        $angle = 90;
-               if (_request('tourner180') OR _request('tourner180_x'))
+               }
+               if (_request('tourner180') or _request('tourner180_x')) {
                        $angle = 180;
-               if ($angle){
-                       $autoclose = "";
-                       $tourner = charger_fonction('tourner','action');
-                       action_tourner_post($id_document,$angle);
+               }
+               if ($angle) {
+                       $autoclose = '';
+                       $tourner = charger_fonction('tourner', 'action');
+                       action_tourner_post($id_document, $angle);
                }
        }
 
-       if (!isset($res['redirect']))
+       if (!isset($res['redirect'])) {
                $res['editable'] = true;
-       if (!isset($res['message_erreur']))
-               $res['message_ok'] = _T('info_modification_enregistree').$autoclose;
+       }
+       if (!isset($res['message_erreur'])) {
+               $res['message_ok'] = _T('info_modification_enregistree') . $autoclose;
+       }
 
-       if ($res['message_ok'])
-               $res['message_ok'].='<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>';
+       if ($res['message_ok']) {
+               $res['message_ok'] .= '<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>';
+       }
 
        return $res;
 }
-
-?>