From 04486d240eb03fa644a448ff692149dea5c68a42 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Mon, 12 Oct 2009 12:47:53 +0000 Subject: [PATCH] =?UTF-8?q?Oracle=20accepte=20finalement=20que=20ses=20mot?= =?UTF-8?q?-cl=C3=A9s=20soient=20utilis=C3=A9s=20comme=20nom=20de=20colonn?= =?UTF-8?q?e=20si=20on=20les=20met=20entre=20apostrophes=20(mais=20celles-?= =?UTF-8?q?ci=20sont=20refus=C3=A9es=20quand=20elles=20sont=20inutiles,=20?= =?UTF-8?q?fallait=20le=20savoir).=20Ca=20pose=20des=20probl=C3=A8mes=20po?= =?UTF-8?q?ur=20=C3=A9crire=20de=20Trigger,=20mais=20on=20n'a=20pas=20beso?= =?UTF-8?q?in=20du=20moins=20dans=20l'imm=C3=A9diat=20(et=20il=20semblerai?= =?UTF-8?q?t=20qu'on=20puisse=20ruser=20en=20passant=20par=20une=20vue=20s?= =?UTF-8?q?i=20=C3=A7a=20devient=20n=C3=A9cessaire).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit En conséquence, retour du champ {((mode}}} en rétablissant les fichiers pre[14588]. La MAJ pour les installations ayant chargé cette version restaurera ce nom de champ, les autres auront une mise à jour qui se réduira à changer le numéro de version installée, pas la peine de faire et défaire. --- ecrire/action/changer_mode_document.php | 2 +- ecrire/action/documenter.php | 2 +- ecrire/base/serial.php | 4 ++-- ecrire/exec/documents_liste.php | 2 +- ecrire/inc/ajouter_documents.php | 4 +--- ecrire/inc/documenter.php | 4 ++-- ecrire/inc/documents.php | 16 ++++++++-------- ecrire/inc/legender.php | 4 ++-- ecrire/inc_version.php | 9 +++++---- ecrire/maj/svn10000.php | 16 +++++++++++++++- ecrire/public/boucles.php | 4 ++-- ecrire/public/quete.php | 2 +- prive/modeles/doc.html | 4 ++-- prive/modeles/img.html | 4 ++-- squelettes-dist/inc-documents.html | 8 ++++---- squelettes-dist/inc-rss-item.html | 2 +- squelettes-dist/rubrique.html | 2 +- 17 files changed, 51 insertions(+), 38 deletions(-) diff --git a/ecrire/action/changer_mode_document.php b/ecrire/action/changer_mode_document.php index b58cdaea70..bd78f19f8b 100644 --- a/ecrire/action/changer_mode_document.php +++ b/ecrire/action/changer_mode_document.php @@ -34,7 +34,7 @@ function action_changer_mode_document_post($r) list(, $id_document, $mode) = $r; if ($id_document = intval($id_document) AND in_array($mode, array('vignette', 'image', 'document'))) { - sql_updateq('spip_documents', array('genre'=>$mode), 'id_document='.$id_document); + sql_updateq('spip_documents', array('mode'=>$mode), 'id_document='.$id_document); } if ($case = _request('afficher_case')){ $case = explode('-',$case); diff --git a/ecrire/action/documenter.php b/ecrire/action/documenter.php index 3d25cfeb95..121359344b 100644 --- a/ecrire/action/documenter.php +++ b/ecrire/action/documenter.php @@ -63,7 +63,7 @@ function action_documenter_post($r) else { $obj = "id_objet=".intval($id)." AND objet=".sql_quote($type); - $s = sql_select('D.id_document AS id_doc', "spip_documents AS D LEFT JOIN spip_documents_liens AS L ON L.id_document=D.id_document", "$obj AND D.genre='document' AND " . (sql_in('D.extension', array('gif', 'jpg', 'png'), $sign ? '' : 'NOT'))); + $s = sql_select('D.id_document AS id_doc', "spip_documents AS D LEFT JOIN spip_documents_liens AS L ON L.id_document=D.id_document", "$obj AND D.mode='document' AND " . (sql_in('D.extension', array('gif', 'jpg', 'png'), $sign ? '' : 'NOT'))); while ($t = sql_fetch($s)) { supprimer_lien_document($t['id_doc'], $type, $id); diff --git a/ecrire/base/serial.php b/ecrire/base/serial.php index 143093380b..195adcf79f 100644 --- a/ecrire/base/serial.php +++ b/ecrire/base/serial.php @@ -204,14 +204,14 @@ $spip_documents = array( "taille" => "integer", "largeur" => "integer", "hauteur" => "integer", - "genre" => "ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL", + "mode" => "ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL", "distant" => "VARCHAR(3) DEFAULT 'non'", "maj" => "TIMESTAMP"); $spip_documents_key = array( "PRIMARY KEY" => "id_document", "KEY id_vignette" => "id_vignette", - "KEY genre" => "genre", + "KEY mode" => "mode", "KEY extension" => "extension"); $spip_documents_join = array( "id_document"=>"id_document", diff --git a/ecrire/exec/documents_liste.php b/ecrire/exec/documents_liste.php index 6f1f1befeb..1bf51565d8 100644 --- a/ecrire/exec/documents_liste.php +++ b/ecrire/exec/documents_liste.php @@ -46,7 +46,7 @@ echo debut_droite('', true); while ($row = sql_fetch($res)) $types[$row['extension']] = $row; - $result = sql_select("D.id_document AS id_doc, D.extension AS extension, D.fichier AS fichier, D.date AS date, D.titre AS titre, D.descriptif AS descriptif, R.id_rubrique AS id_rub, R.titre AS titre_rub", "spip_documents AS D, spip_documents_liens AS L, spip_rubriques AS R", "D.id_document = L.id_document AND R.id_rubrique = L.id_objet AND L.objet='rubrique' AND D.genre = 'document'", "", "D.date DESC"); + $result = sql_select("D.id_document AS id_doc, D.extension AS extension, D.fichier AS fichier, D.date AS date, D.titre AS titre, D.descriptif AS descriptif, R.id_rubrique AS id_rub, R.titre AS titre_rub", "spip_documents AS D, spip_documents_liens AS L, spip_rubriques AS R", "D.id_document = L.id_document AND R.id_rubrique = L.id_objet AND L.objet='rubrique' AND D.mode = 'document'", "", "D.date DESC"); while ($row=sql_fetch($result)){ $titre=$row['titre']; diff --git a/ecrire/inc/ajouter_documents.php b/ecrire/inc/ajouter_documents.php index 164fd679e5..900358e58a 100644 --- a/ecrire/inc/ajouter_documents.php +++ b/ecrire/inc/ajouter_documents.php @@ -289,8 +289,6 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode, // note : la fonction peut "mettre a jour un document" si on lui // passe "mode=document" et "id_document=.." (pas utilise) - // "mode" est interdit en Oracle. Cf svn 14588) - if (isset($a['mode'])) {$a['genre'] = $a['mode']; unset($a['mode']);} $id = sql_insertq("spip_documents", $a); spip_log ("ajout du document $source $nom_envoye (M '$mode' T '$type_lien' L '$id_lien' D '$id')"); @@ -305,7 +303,7 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode, } else spip_log("Pb d'insertion $id_lien $type_lien"); if ($id_document) { - sql_updateq("spip_documents", array("id_vignette" => $id, "genre" => 'document'), "id_document=$id_document"); + sql_updateq("spip_documents", array("id_vignette" => $id, "mode" => 'document'), "id_document=$id_document"); } else $id_document = $id; diff --git a/ecrire/inc/documenter.php b/ecrire/inc/documenter.php index a0e42ca223..92396d25e8 100644 --- a/ecrire/inc/documenter.php +++ b/ecrire/inc/documenter.php @@ -28,9 +28,9 @@ function inc_documenter_dist( if (is_int($doc)) { $prim = 'id_' . $type; $img = ($ancre == 'portfolio') ? '' : " NOT"; - $select = "D.id_document, D.id_vignette, D.extension, D.titre, D.date, D.descriptif, D.fichier, D.taille, D.largeur, D.hauteur, D.genre, D.distant, L.vu, L.id_objet, L.id_objet as $prim"; + $select = "D.id_document, D.id_vignette, D.extension, D.titre, D.date, D.descriptif, D.fichier, D.taille, D.largeur, D.hauteur, D.mode, D.distant, L.vu, L.id_objet, L.id_objet as $prim"; $from = "spip_documents AS D LEFT JOIN spip_documents_liens AS L ON L.id_document=D.id_document"; - $where = "L.id_objet=$doc AND L.objet='$type' AND D.genre='document' AND D.extension $img IN ('gif', 'jpg', 'png')"; + $where = "L.id_objet=$doc AND L.objet='$type' AND D.mode='document' AND D.extension $img IN ('gif', 'jpg', 'png')"; $order = "0+D.titre, D.date"; $docs = sql_allfetsel($select, $from, $where, '', $order); $opt = array('objet'=>$type, 'id_objet' => $doc); diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index f243ac196b..b7f13866cc 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -293,7 +293,7 @@ function afficher_documents_colonne($id, $type="article",$script=NULL) { 'args' => "id_$type=$id", 'id' => $id, 'intitule' => _T('info_telecharger'), - 'mode' => 'image', // mode = genre + 'mode' => 'image', 'type' => $type, 'ancre' => '', 'id_document' => 0, @@ -303,7 +303,7 @@ function afficher_documents_colonne($id, $type="article",$script=NULL) { if (!_INTERFACE_DOCUMENTS) { //// Images sans documents - $res = sql_select("D.id_document", "spip_documents AS D LEFT JOIN spip_documents_liens AS T ON T.id_document=D.id_document", "T.id_objet=" . intval($id) . " AND T.objet=" . sql_quote($type) . " AND D.genre='image'", "", "D.id_document"); + $res = sql_select("D.id_document", "spip_documents AS D LEFT JOIN spip_documents_liens AS T ON T.id_document=D.id_document", "T.id_objet=" . intval($id) . " AND T.objet=" . sql_quote($type) . " AND D.mode='image'", "", "D.id_document"); $ret .= "\n<div id='liste_images'>"; @@ -347,9 +347,9 @@ function afficher_documents_colonne($id, $type="article",$script=NULL) { //// Documents associes $res = sql_select("D.id_document", "spip_documents AS D LEFT JOIN spip_documents_liens AS T ON T.id_document=D.id_document", "T.id_objet=" . intval($id) . " AND T.objet=" . sql_quote($type) . ((!_INTERFACE_DOCUMENTS) - ? " AND D.genre='document'" - : " AND D.genre IN ('image','document')" - ), "", "D.genre, D.id_document"); + ? " AND D.mode='document'" + : " AND D.mode IN ('image','document')" + ), "", "D.mode, D.id_document"); while($row = sql_fetch($res)) $ret .= afficher_case_document($row['id_document'], $id, $script, $type, ($id_document_actif==$row['id_document'])); @@ -405,7 +405,7 @@ function est_inclus($id_document) { function afficher_case_document($id_document, $id, $script, $type, $deplier=false) { global $spip_lang_right; - $document = sql_fetsel("D.id_document, D.id_vignette,D.extension,D.titre,D.descriptif,D.fichier,D.largeur,D.hauteur,D.taille,D.genre,D.distant, D.date, L.vu", "spip_documents AS D INNER JOIN spip_documents_liens AS L ON L.id_document=D.id_document", "L.id_objet=".intval($id)." AND objet=".sql_quote($type)." AND L.id_document=".intval($id_document)); + $document = sql_fetsel("D.id_document, D.id_vignette,D.extension,D.titre,D.descriptif,D.fichier,D.largeur,D.hauteur,D.taille,D.mode,D.distant, D.date, L.vu", "spip_documents AS D INNER JOIN spip_documents_liens AS L ON L.id_document=D.id_document", "L.id_objet=".intval($id)." AND objet=".sql_quote($type)." AND L.id_document=".intval($id_document)); if (!$document) return ""; @@ -415,7 +415,7 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals $fichier = $document['fichier']; $largeur = $document['largeur']; $hauteur = $document['hauteur']; - $mode = $document['genre']; + $mode = $document['mode']; $distant = $document['distant']; $titre = $document['titre']; $legender = charger_fonction('legender', 'inc'); @@ -522,7 +522,7 @@ function lister_les_documents_orphelins() { } // les vignettes qui n'appartiennent a aucun document sont aussi orphelines - $s = sql_select("V.id_document", "spip_documents AS V LEFT JOIN spip_documents AS D ON V.id_document=D.id_vignette", "V.genre='vignette' AND D.id_document IS NULL"); + $s = sql_select("V.id_document", "spip_documents AS V LEFT JOIN spip_documents AS D ON V.id_document=D.id_vignette", "V.mode='vignette' AND D.id_document IS NULL"); while ($t = sql_fetch($s)) $orphelins[$t['id_document']] = true; diff --git a/ecrire/inc/legender.php b/ecrire/inc/legender.php index e3c9c8d557..e4a89b61ea 100644 --- a/ecrire/inc/legender.php +++ b/ecrire/inc/legender.php @@ -40,7 +40,7 @@ function inc_legender_dist($id_document, $document, $script, $type, $id, $ancre, $flag = 'ajax'; } - if ($document['genre'] == 'image') { + if ($document['mode'] == 'image') { $supp = 'image-24.gif'; $label = _T('entree_titre_image'); $taille = $vignette = ''; @@ -187,7 +187,7 @@ function legender_image_doc($document, $id_document, $id, $type, $s, $script, $a if (!_BOUTON_MODE_IMAGE OR !in_array($document['extension'], array('jpg', 'gif', 'png'))) return ''; - if ($document['genre'] == 'image') { + if ($document['mode'] == 'image') { $texte = _T('upload_info_mode_document'); $mode = 'document'; $logo = 'doc-24.gif'; diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index 34afb8f8a1..a01c19bffa 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -374,14 +374,15 @@ $liste_des_authentifications = array( @umask(0); // numero de branche, utilise par les plugins -// pour specifier les versions de SPIP necessaire -// il faut s'en tenir a un nombre de decimales fixe ex : 2.0.0, 2.0.0-dev, 2.0.0-beta, 2.0.0-beta2 +// pour specifier les versions de SPIP necessaires +// il faut s'en tenir a un nombre de decimales fixe +// ex : 2.0.0, 2.0.0-dev, 2.0.0-beta, 2.0.0-beta2 $spip_version_branche = "2.1.0 dev"; // version des signatures de fonctions PHP // (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes) -$spip_version_code = 14588; +$spip_version_code = 14598; // version de la base SQL (= numero SVN de sa derniere modif) -$spip_version_base = 14588; +$spip_version_base = 14598; // version de l'interface a la base $spip_sql_version = 1; diff --git a/ecrire/maj/svn10000.php b/ecrire/maj/svn10000.php index 39adc494cb..cba9528a10 100644 --- a/ecrire/maj/svn10000.php +++ b/ecrire/maj/svn10000.php @@ -228,9 +228,23 @@ $GLOBALS['maj'][14558] = array(array('upgrade_types_documents')); // etre sur qu'ils sont bien unipotents(?)... $GLOBALS['maj'][14559] = $GLOBALS['maj'][13904]+$GLOBALS['maj'][13929]+$GLOBALS['maj'][14558]; -$GLOBALS['maj'][14588] = array( + +// La version 14588 etait une mauvaise piste: +// Retour en arriere pour ceux qui l'ont subi, ne rien faire sinon +if (@$GLOBALS['meta']['version_installee'] >= 14588) { + + // "mode" est un mot-cle d'Oracle + $GLOBALS['maj'][14588] = array( array('sql_alter',"TABLE spip_documents DROP INDEX mode"), array('sql_alter',"TABLE spip_documents CHANGE mode genre ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"), array('sql_alter',"TABLE spip_documents ADD INDEX genre(genre)") ); + // solution moins intrusive au pb de mot-clé d'Oracle, retour avant 14588 + $GLOBALS['maj'][14598] = array( + array('sql_alter',"TABLE spip_documents DROP INDEX genre"), + array('sql_alter',"TABLE spip_documents CHANGE genre mode ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"), + array('sql_alter',"TABLE spip_documents ADD INDEX mode(mode)") + ); +} + ?> diff --git a/ecrire/public/boucles.php b/ecrire/public/boucles.php index 9fe4bae072..aee6e770f8 100644 --- a/ecrire/public/boucles.php +++ b/ecrire/public/boucles.php @@ -141,9 +141,9 @@ function boucle_DOCUMENTS_dist($id_boucle, &$boucles) { array_unshift($boucle->where,array("'($id_table.taille > 0 OR $id_table.distant=\\'oui\\')'")); // Supprimer les vignettes - if (!isset($boucle->modificateur['criteres']['genre']) + if (!isset($boucle->modificateur['criteres']['mode']) AND !isset($boucle->modificateur['criteres']['tout'])) { - array_unshift($boucle->where,array("'!='", "'$id_table.genre'", "'\\'vignette\\''")); + array_unshift($boucle->where,array("'!='", "'$id_table.mode'", "'\\'vignette\\''")); } // Pour une boucle generique (DOCUMENTS) sans critere de lien, verifier diff --git a/ecrire/public/quete.php b/ecrire/public/quete.php index 10a27bbc05..c2ddbeb758 100644 --- a/ecrire/public/quete.php +++ b/ecrire/public/quete.php @@ -186,7 +186,7 @@ function vignette_logo_document($row, $connect='') } $f = get_spip_doc($fichier); if ($f AND @file_exists($f)) return $f; - if ($row['genre'] !== 'vignette') return ''; + if ($row['mode'] !== 'vignette') return ''; return generer_url_entite($row['id_document'], 'document','','', $connect); } diff --git a/prive/modeles/doc.html b/prive/modeles/doc.html index 019d61e792..9f79c0b829 100644 --- a/prive/modeles/doc.html +++ b/prive/modeles/doc.html @@ -10,13 +10,13 @@ Dans le cas d'une simple image (mode=image), on affiche le document lui-meme, sans lien de telechargement ] -[(#GENRE|=={image}|oui) +[(#MODE|=={image}|oui) #SET{fichier,#URL_DOCUMENT} #SET{width,#LARGEUR} #SET{height,#HAUTEUR} #SET{url,#ENV{lien}} ] -[(#GENRE|=={image}|non) +[(#MODE|=={image}|non) [(#SET{fichier,[(#LOGO_DOCUMENT||extraire_attribut{src})]})] [(#SET{width,[(#LOGO_DOCUMENT||extraire_attribut{width})]})] [(#SET{height,[(#LOGO_DOCUMENT||extraire_attribut{height})]})] diff --git a/prive/modeles/img.html b/prive/modeles/img.html index 61134d49fa..96111d417d 100644 --- a/prive/modeles/img.html +++ b/prive/modeles/img.html @@ -1,4 +1,4 @@ -<BOUCLE_document (DOCUMENTS) {id_document} {genre?} {tout}> +<BOUCLE_document (DOCUMENTS) {id_document} {mode?} {tout}> [(#REM) Modele pour <img> @@ -12,7 +12,7 @@ ] [(#SET{ image, - #GENRE|match{'image|vignette'} + #MODE|match{'image|vignette'} |sinon{#ENV{embed}} |?{' '} })][ diff --git a/squelettes-dist/inc-documents.html b/squelettes-dist/inc-documents.html index 22f373848d..04de79e980 100644 --- a/squelettes-dist/inc-documents.html +++ b/squelettes-dist/inc-documents.html @@ -2,7 +2,7 @@ <B_documents_portfolio> <div id="documents_portfolio"> <h2><:info_portfolio:></h2> - <BOUCLE_documents_portfolio(DOCUMENTS) {id_article} {genre=document}{extension IN png,jpg,gif} {par num titre, date}{doublons}{vu=non}>[ + <BOUCLE_documents_portfolio(DOCUMENTS) {id_article} {mode=document}{extension IN png,jpg,gif} {par num titre, date}{doublons}{vu=non}>[ <a href="(#URL_DOCUMENT)" type="#MIME_TYPE" onclick="location.href='[(#URL_ARTICLE |parametre_url{id_document,#ID_DOCUMENT} )]#documents_portfolio';return false;"[ class="(#EXPOSER)"][ title="(#TITRE|attribut_html|couper{80})"]>[(#FICHIER @@ -16,7 +16,7 @@ [(#REM) Afficher en grand le document demande dans l'URL ] -<BOUCLE_afficher_document(DOCUMENTS) {id_document}{id_article} {genre=document}{extension IN png,jpg,gif}> +<BOUCLE_afficher_document(DOCUMENTS) {id_document}{id_article} {mode=document}{extension IN png,jpg,gif}> [(#MODELE{emb}|image_reduire{500,0})] </BOUCLE_afficher_document> @@ -25,7 +25,7 @@ Si un seul document est joint a l'article, et si le texte est vide, on incruste automatiquement ce document ] -<BOUCLE_documents_decompte(DOCUMENTS spip_documents_liens articles) {id_article} {genre=document}{texte=''}{extension !IN gif,jpg,png} {vu=non}> +<BOUCLE_documents_decompte(DOCUMENTS spip_documents_liens articles) {id_article} {mode=document}{texte=''}{extension !IN gif,jpg,png} {vu=non}> [(#TOTAL_BOUCLE|=={1} |?{[(#INCLURE{fond=modeles/emb, id_document} |trim)]})]</BOUCLE_documents_decompte> @@ -49,4 +49,4 @@ </div> </B_documents_joints> -<//B_documents_decompte> +<//B_documents_decompte> \ No newline at end of file diff --git a/squelettes-dist/inc-rss-item.html b/squelettes-dist/inc-rss-item.html index 26003f9cc1..3846ec6c0f 100644 --- a/squelettes-dist/inc-rss-item.html +++ b/squelettes-dist/inc-rss-item.html @@ -46,7 +46,7 @@ [(#REM) Le bloc qui suit diffuse l'adresse des documents associes aux articles ; ajouter par ex. {extension=mp3} pour limiter a un certain type de document. -] <BOUCLE_documents(DOCUMENTS){id_article}{genre=document}{doublons}>[ +] <BOUCLE_documents(DOCUMENTS){id_article}{mode=document}{doublons}>[ <enclosure url="(#URL_DOCUMENT|url_absolue|unique)"[ length="(#TAILLE)"][ type="(#MIME_TYPE)"] />] </BOUCLE_documents> diff --git a/squelettes-dist/rubrique.html b/squelettes-dist/rubrique.html index 11b124e7c0..8676ae9107 100644 --- a/squelettes-dist/rubrique.html +++ b/squelettes-dist/rubrique.html @@ -87,7 +87,7 @@ <div class="menu" id="documents_joints"> <h2><:titre_documents_joints:></h2> <ul> - <BOUCLE_documents_joints(DOCUMENTS) {id_rubrique} {genre=document} {par num titre, date} {doublons}> + <BOUCLE_documents_joints(DOCUMENTS) {id_rubrique} {mode=document} {par num titre, date} {doublons}> <li> <strong><a href="#URL_DOCUMENT" title="<:bouton_telecharger:>" type="#MIME_TYPE">[(#TITRE|sinon{<:info_document:>})]</a></strong> <small>(#TYPE_DOCUMENT[ – (#TAILLE|taille_en_octets)])</small> -- GitLab