[SPIP] ~2.1.12 -->2.1.25 2.0.0
authorLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Mon, 10 Feb 2014 17:09:48 +0000 (18:09 +0100)
committerLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Tue, 11 Feb 2014 07:28:10 +0000 (08:28 +0100)
594 files changed:
scripts/maj.sh [new file with mode: 0755]
www/CHANGELOG.txt
www/config/mes_fonctions.php [deleted file]
www/config/remove.txt [changed mode: 0755->0644]
www/ecrire/action/acceder_document.php
www/ecrire/action/activer_plugins.php
www/ecrire/action/auth.php
www/ecrire/action/changer_mode_document.php
www/ecrire/action/charger_plugin.php
www/ecrire/action/configurer.php
www/ecrire/action/configurer_notifications_forum.php
www/ecrire/action/configurer_previsualiseur.php
www/ecrire/action/configurer_relayeur.php
www/ecrire/action/confirmer_email.php
www/ecrire/action/converser.php
www/ecrire/action/cookie.php
www/ecrire/action/copier_local.php
www/ecrire/action/dater.php
www/ecrire/action/desinstaller_plugin.php
www/ecrire/action/documenter.php
www/ecrire/action/editer_article.php
www/ecrire/action/editer_auteur.php
www/ecrire/action/editer_auteurs.php
www/ecrire/action/editer_breve.php
www/ecrire/action/editer_groupe_mot.php
www/ecrire/action/editer_message.php
www/ecrire/action/editer_mot.php
www/ecrire/action/editer_mots.php
www/ecrire/action/editer_rubrique.php
www/ecrire/action/editer_signatures.php
www/ecrire/action/editer_site.php
www/ecrire/action/editer_url.php
www/ecrire/action/export_all.php
www/ecrire/action/iconifier.php
www/ecrire/action/instituer_article.php
www/ecrire/action/instituer_auteur.php
www/ecrire/action/instituer_breve.php
www/ecrire/action/instituer_collaboration.php
www/ecrire/action/instituer_forum.php
www/ecrire/action/instituer_groupe_mots.php
www/ecrire/action/instituer_langue_rubrique.php
www/ecrire/action/instituer_rubrique_breves.php
www/ecrire/action/instituer_site.php
www/ecrire/action/instituer_syndic.php
www/ecrire/action/joindre.php
www/ecrire/action/legender.php
www/ecrire/action/logout.php
www/ecrire/action/petitionner.php
www/ecrire/action/poster_forum_prive.php
www/ecrire/action/preferer.php
www/ecrire/action/purger.php
www/ecrire/action/redirect.php
www/ecrire/action/referencer_traduction.php
www/ecrire/action/regler_moderation.php
www/ecrire/action/reorganiser.php
www/ecrire/action/supprimer.php
www/ecrire/action/supprimer_document.php
www/ecrire/action/supprimer_traduction.php
www/ecrire/action/tester.php
www/ecrire/action/tester_taille.php
www/ecrire/action/tourner.php
www/ecrire/action/virtualiser.php
www/ecrire/auth/ldap.php
www/ecrire/auth/sha256.inc.php
www/ecrire/auth/spip.php
www/ecrire/balise/formulaire_.php
www/ecrire/balise/formulaire_admin.php
www/ecrire/balise/formulaire_ecrire_auteur.php
www/ecrire/balise/formulaire_forum.php
www/ecrire/balise/formulaire_inscription.php
www/ecrire/balise/formulaire_recherche.php
www/ecrire/balise/formulaire_signature.php
www/ecrire/balise/formulaire_site.php
www/ecrire/balise/login_prive.php
www/ecrire/balise/login_public.php
www/ecrire/balise/logo_.php
www/ecrire/balise/menu_lang.php
www/ecrire/balise/menu_lang_ecrire.php
www/ecrire/balise/url_.php
www/ecrire/balise/url_logout.php
www/ecrire/base/abstract_sql.php
www/ecrire/base/admin_repair.php
www/ecrire/base/auxiliaires.php
www/ecrire/base/connect_sql.php
www/ecrire/base/convert_sql_utf8.php
www/ecrire/base/convert_utf8.php
www/ecrire/base/create.php
www/ecrire/base/delete_all.php
www/ecrire/base/delete_statistiques.php
www/ecrire/base/dump.php
www/ecrire/base/import_all.php
www/ecrire/base/serial.php
www/ecrire/base/trouver_table.php
www/ecrire/base/typedoc.php
www/ecrire/base/upgrade.php
www/ecrire/charsets/iso-8859-15.php
www/ecrire/charsets/iso-8859-6.php
www/ecrire/charsets/iso-8859-9.php
www/ecrire/charsets/translitcomplexe.php
www/ecrire/configuration/accueil.php
www/ecrire/configuration/annonces.php
www/ecrire/configuration/articles.php
www/ecrire/configuration/avertisseur.php
www/ecrire/configuration/breves.php
www/ecrire/configuration/compresseur.php
www/ecrire/configuration/compteur.php
www/ecrire/configuration/contenu_forums.php
www/ecrire/configuration/documents.php
www/ecrire/configuration/forums_prives.php
www/ecrire/configuration/futurs.php
www/ecrire/configuration/indexeur.php
www/ecrire/configuration/langue.php
www/ecrire/configuration/locuteur.php
www/ecrire/configuration/logos.php
www/ecrire/configuration/messagerie_agenda.php
www/ecrire/configuration/mots.php
www/ecrire/configuration/notifications_forum.php
www/ecrire/configuration/participants.php
www/ecrire/configuration/previsualiseur.php
www/ecrire/configuration/redacteurs.php
www/ecrire/configuration/redirection.php
www/ecrire/configuration/reducteur.php
www/ecrire/configuration/referenceur.php
www/ecrire/configuration/relayeur.php
www/ecrire/configuration/rubriques.php
www/ecrire/configuration/syndications.php
www/ecrire/configuration/transcodeur.php
www/ecrire/configuration/type_urls.php
www/ecrire/configuration/versionneur.php
www/ecrire/configuration/visiteurs.php
www/ecrire/exec/404.php
www/ecrire/exec/accueil.php
www/ecrire/exec/admin_declarer.php
www/ecrire/exec/admin_effacer.php
www/ecrire/exec/admin_plugin.php
www/ecrire/exec/admin_repair.php
www/ecrire/exec/admin_tech.php
www/ecrire/exec/admin_vider.php
www/ecrire/exec/aide_index.php
www/ecrire/exec/articles.php
www/ecrire/exec/articles_edit.php
www/ecrire/exec/articles_forum.php
www/ecrire/exec/articles_page.php
www/ecrire/exec/articles_tous.php
www/ecrire/exec/articles_versions.php
www/ecrire/exec/auteur_infos.php
www/ecrire/exec/auteurs.php
www/ecrire/exec/breves.php
www/ecrire/exec/breves_edit.php
www/ecrire/exec/breves_voir.php
www/ecrire/exec/brouteur.php
www/ecrire/exec/brouteur_frame.php
www/ecrire/exec/calendrier.php
www/ecrire/exec/charger_plugin.php
www/ecrire/exec/config_contenu.php
www/ecrire/exec/config_fonctions.php
www/ecrire/exec/config_lang.php
www/ecrire/exec/config_multilang.php
www/ecrire/exec/configuration.php
www/ecrire/exec/configurer.php
www/ecrire/exec/configurer_notifications_forum.php
www/ecrire/exec/configurer_previsualiseur.php
www/ecrire/exec/configurer_relayeur.php
www/ecrire/exec/controle_forum.php
www/ecrire/exec/controle_petition.php
www/ecrire/exec/convert_sql_utf8.php
www/ecrire/exec/convert_utf8.php
www/ecrire/exec/copier_local.php
www/ecrire/exec/dater.php
www/ecrire/exec/delete_all.php
www/ecrire/exec/delete_statistiques.php
www/ecrire/exec/demande_mise_a_jour.php
www/ecrire/exec/discuter.php
www/ecrire/exec/documenter.php
www/ecrire/exec/documents_colonne.php
www/ecrire/exec/documents_liste.php
www/ecrire/exec/editer_auteurs.php
www/ecrire/exec/editer_mots.php
www/ecrire/exec/export_all.php
www/ecrire/exec/fond.php
www/ecrire/exec/forum.php
www/ecrire/exec/forum_admin.php
www/ecrire/exec/grouper_mots.php
www/ecrire/exec/iconifier.php
www/ecrire/exec/import_all.php
www/ecrire/exec/info_plugin.php
www/ecrire/exec/info_plugin_distant.php
www/ecrire/exec/informer.php
www/ecrire/exec/informer_auteur.php
www/ecrire/exec/install.php
www/ecrire/exec/instituer_auteur.php
www/ecrire/exec/lang_raccourcis.php
www/ecrire/exec/legender.php
www/ecrire/exec/meme_rubrique.php
www/ecrire/exec/memoriser.php
www/ecrire/exec/menu_agenda.php
www/ecrire/exec/menu_navigation.php
www/ecrire/exec/menu_rubriques.php
www/ecrire/exec/message.php
www/ecrire/exec/message_edit.php
www/ecrire/exec/messagerie.php
www/ecrire/exec/mots_edit.php
www/ecrire/exec/mots_tous.php
www/ecrire/exec/mots_type.php
www/ecrire/exec/naviguer.php
www/ecrire/exec/petitionner.php
www/ecrire/exec/plonger.php
www/ecrire/exec/poster_forum_prive.php
www/ecrire/exec/puce_statut.php
www/ecrire/exec/recherche.php
www/ecrire/exec/rechercher.php
www/ecrire/exec/rechercher_auteur.php
www/ecrire/exec/referencer_traduction.php
www/ecrire/exec/regler_moderation.php
www/ecrire/exec/rubriques_edit.php
www/ecrire/exec/selectionner.php
www/ecrire/exec/selectionner_auteur.php
www/ecrire/exec/sites.php
www/ecrire/exec/sites_edit.php
www/ecrire/exec/sites_tous.php
www/ecrire/exec/statistiques_lang.php
www/ecrire/exec/statistiques_referers.php
www/ecrire/exec/statistiques_repartition.php
www/ecrire/exec/statistiques_visites.php
www/ecrire/exec/suivi_revisions.php
www/ecrire/exec/synchro.php
www/ecrire/exec/tourner.php
www/ecrire/exec/upgrade.php
www/ecrire/exec/valider_xml.php
www/ecrire/exec/virtualiser.php
www/ecrire/genie/mail.php
www/ecrire/genie/maintenance.php
www/ecrire/genie/mise_a_jour.php
www/ecrire/genie/optimiser.php
www/ecrire/genie/popularites.php
www/ecrire/genie/syndic.php
www/ecrire/genie/visites.php
www/ecrire/inc/acces.php
www/ecrire/inc/actions.php
www/ecrire/inc/admin.php
www/ecrire/inc/afficher_objets.php
www/ecrire/inc/agenda.php
www/ecrire/inc/aider.php
www/ecrire/inc/ajouter_documents.php
www/ecrire/inc/article_select.php
www/ecrire/inc/auteur_infos.php
www/ecrire/inc/auth.php
www/ecrire/inc/autoriser.php
www/ecrire/inc/bandeau.php
www/ecrire/inc/boutons.php
www/ecrire/inc/charger_plugin.php
www/ecrire/inc/charsets.php
www/ecrire/inc/chercher_logo.php
www/ecrire/inc/chercher_rubrique.php
www/ecrire/inc/commencer_page.php
www/ecrire/inc/config.php
www/ecrire/inc/cookie.php
www/ecrire/inc/couleurs.php
www/ecrire/inc/date.php
www/ecrire/inc/dater.php
www/ecrire/inc/diff.php
www/ecrire/inc/discuter.php
www/ecrire/inc/distant.php
www/ecrire/inc/documenter.php
www/ecrire/inc/documenter_objet.php
www/ecrire/inc/documents.php
www/ecrire/inc/drapeau_edition.php
www/ecrire/inc/editer.php
www/ecrire/inc/editer_auteurs.php
www/ecrire/inc/editer_mots.php
www/ecrire/inc/envoyer_mail.php
www/ecrire/inc/export.php
www/ecrire/inc/filtres.php
www/ecrire/inc/filtres_images_lib_mini.php
www/ecrire/inc/filtres_images_mini.php
www/ecrire/inc/filtres_mime.php
www/ecrire/inc/filtres_mini.php
www/ecrire/inc/flock.php
www/ecrire/inc/formater_article.php
www/ecrire/inc/formater_auteur.php
www/ecrire/inc/forum.php
www/ecrire/inc/forum_envoi.php
www/ecrire/inc/forum_insert.php
www/ecrire/inc/gadgets.php
www/ecrire/inc/genie.php
www/ecrire/inc/getdocument.php
www/ecrire/inc/grouper_mots.php
www/ecrire/inc/headers.php
www/ecrire/inc/iconifier.php
www/ecrire/inc/import.php
www/ecrire/inc/import_0_0.php
www/ecrire/inc/import_1_2.php
www/ecrire/inc/import_1_3.php
www/ecrire/inc/import_insere.php
www/ecrire/inc/informer.php
www/ecrire/inc/informer_auteur.php
www/ecrire/inc/install.php
www/ecrire/inc/instituer_article.php
www/ecrire/inc/instituer_auteur.php
www/ecrire/inc/instituer_breve.php
www/ecrire/inc/instituer_site.php
www/ecrire/inc/invalideur.php
www/ecrire/inc/joindre.php
www/ecrire/inc/json.php
www/ecrire/inc/lang.php
www/ecrire/inc/lang_liste.php
www/ecrire/inc/layer.php
www/ecrire/inc/legender.php
www/ecrire/inc/lien.php
www/ecrire/inc/lien_court.php
www/ecrire/inc/log.php
www/ecrire/inc/mail.php
www/ecrire/inc/math.php
www/ecrire/inc/meme_rubrique.php
www/ecrire/inc/message_select.php
www/ecrire/inc/meta.php
www/ecrire/inc/minipres.php
www/ecrire/inc/modifier.php
www/ecrire/inc/mots.php
www/ecrire/inc/notes.php
www/ecrire/inc/notifications.php
www/ecrire/inc/pclzip.php
www/ecrire/inc/petitionner.php
www/ecrire/inc/php3.php
www/ecrire/inc/plonger.php
www/ecrire/inc/plugin.php
www/ecrire/inc/prepare_recherche.php
www/ecrire/inc/presentation.php
www/ecrire/inc/presenter_enfants.php
www/ecrire/inc/presenter_liste.php
www/ecrire/inc/puce_statut.php
www/ecrire/inc/rechercher.php
www/ecrire/inc/referencer_traduction.php
www/ecrire/inc/referenceurs.php
www/ecrire/inc/regler_moderation.php
www/ecrire/inc/revisions.php
www/ecrire/inc/rubriques.php
www/ecrire/inc/securiser_action.php
www/ecrire/inc/selectionner.php
www/ecrire/inc/selectionner_auteur.php
www/ecrire/inc/session.php
www/ecrire/inc/signatures.php
www/ecrire/inc/site.php
www/ecrire/inc/statistiques.php
www/ecrire/inc/suivi_versions.php
www/ecrire/inc/surligne.php
www/ecrire/inc/syndic.php
www/ecrire/inc/texte.php
www/ecrire/inc/tourner.php
www/ecrire/inc/traduire.php
www/ecrire/inc/urls.php
www/ecrire/inc/utils.php
www/ecrire/inc/vieilles_defs.php
www/ecrire/inc/vignette.php
www/ecrire/inc/virtualiser.php
www/ecrire/inc/xml.php
www/ecrire/inc_version.php
www/ecrire/index.php
www/ecrire/install/etape_.php
www/ecrire/install/etape_1.php
www/ecrire/install/etape_2.php
www/ecrire/install/etape_3.php
www/ecrire/install/etape_3b.php
www/ecrire/install/etape_4.php
www/ecrire/install/etape_chmod.php
www/ecrire/install/etape_fin.php
www/ecrire/install/etape_ldap1.php
www/ecrire/install/etape_ldap2.php
www/ecrire/install/etape_ldap3.php
www/ecrire/install/etape_ldap4.php
www/ecrire/install/etape_ldap5.php
www/ecrire/install/etape_sup1.php
www/ecrire/install/etape_sup2.php
www/ecrire/lang/ecrire_ast.php
www/ecrire/lang/ecrire_bg.php
www/ecrire/lang/ecrire_br.php
www/ecrire/lang/ecrire_bs.php
www/ecrire/lang/ecrire_ca.php
www/ecrire/lang/ecrire_cpf.php
www/ecrire/lang/ecrire_cpf_hat.php
www/ecrire/lang/ecrire_cs.php
www/ecrire/lang/ecrire_da.php
www/ecrire/lang/ecrire_de.php
www/ecrire/lang/ecrire_en.php
www/ecrire/lang/ecrire_eo.php
www/ecrire/lang/ecrire_es.php
www/ecrire/lang/ecrire_fa.php
www/ecrire/lang/ecrire_fr.php
www/ecrire/lang/ecrire_gl.php
www/ecrire/lang/ecrire_hu.php
www/ecrire/lang/ecrire_id.php
www/ecrire/lang/ecrire_it.php
www/ecrire/lang/ecrire_it_fem.php
www/ecrire/lang/ecrire_ja.php
www/ecrire/lang/ecrire_km.php
www/ecrire/lang/ecrire_lb.php
www/ecrire/lang/ecrire_my.php
www/ecrire/lang/ecrire_nl.php
www/ecrire/lang/ecrire_oc_auv.php
www/ecrire/lang/ecrire_oc_gsc.php
www/ecrire/lang/ecrire_oc_lms.php
www/ecrire/lang/ecrire_oc_lnc.php
www/ecrire/lang/ecrire_oc_ni.php
www/ecrire/lang/ecrire_oc_ni_la.php
www/ecrire/lang/ecrire_oc_prv.php
www/ecrire/lang/ecrire_oc_va.php
www/ecrire/lang/ecrire_pl.php
www/ecrire/lang/ecrire_pt.php
www/ecrire/lang/ecrire_pt_br.php
www/ecrire/lang/ecrire_ro.php
www/ecrire/lang/ecrire_ru.php
www/ecrire/lang/ecrire_sv.php
www/ecrire/lang/ecrire_tr.php
www/ecrire/lang/ecrire_vi.php
www/ecrire/lang/ecrire_zh.php
www/ecrire/lang/public_br.php [changed mode: 0644->0755]
www/ecrire/lang/spip_fr.php
www/ecrire/maj/svn10000.php
www/ecrire/maj/v009.php
www/ecrire/maj/v010.php
www/ecrire/maj/v011.php
www/ecrire/maj/v012.php
www/ecrire/maj/v013.php
www/ecrire/maj/v014.php
www/ecrire/maj/v015.php
www/ecrire/maj/v016.php
www/ecrire/maj/v017.php
www/ecrire/maj/v018.php
www/ecrire/maj/v019.php
www/ecrire/maj/v019_pre193.php
www/ecrire/maj/vieille_base/10000/auxiliaires.php
www/ecrire/maj/vieille_base/10000/create.php
www/ecrire/maj/vieille_base/10000/serial.php
www/ecrire/maj/vieille_base/10000/typedoc.php
www/ecrire/maj/vieille_base/13000/auxiliaires.php
www/ecrire/maj/vieille_base/13000/create.php
www/ecrire/maj/vieille_base/13000/serial.php
www/ecrire/maj/vieille_base/13000/typedoc.php
www/ecrire/maj/vieille_base/1813/create.php
www/ecrire/maj/vieille_base/1813/inc_auxbase.php
www/ecrire/maj/vieille_base/1813/inc_serialbase.php
www/ecrire/maj/vieille_base/1813/inc_typebase.php
www/ecrire/maj/vieille_base/1821/create.php
www/ecrire/maj/vieille_base/1821/inc_auxbase.php
www/ecrire/maj/vieille_base/1821/inc_serialbase.php
www/ecrire/maj/vieille_base/1821/inc_typebase.php
www/ecrire/maj/vieille_base/1915/auxiliaires.php
www/ecrire/maj/vieille_base/1915/create.php
www/ecrire/maj/vieille_base/1915/serial.php
www/ecrire/maj/vieille_base/1915/typedoc.php
www/ecrire/maj/vieille_base/1917/auxiliaires.php
www/ecrire/maj/vieille_base/1917/create.php
www/ecrire/maj/vieille_base/1917/serial.php
www/ecrire/maj/vieille_base/1917/typedoc.php
www/ecrire/maj/vieille_base/1927/auxiliaires.php
www/ecrire/maj/vieille_base/1927/create.php
www/ecrire/maj/vieille_base/1927/serial.php
www/ecrire/maj/vieille_base/1927/typedoc.php
www/ecrire/maj/vieille_base/charger.php
www/ecrire/maj/vieille_base/create.php
www/ecrire/plugins/afficher_liste.php
www/ecrire/plugins/afficher_nom_plugin.php
www/ecrire/plugins/afficher_plugin.php
www/ecrire/plugins/afficher_plugin_distant.php
www/ecrire/plugins/afficher_repertoires.php
www/ecrire/plugins/extraire_boutons.php
www/ecrire/plugins/extraire_pipelines.php
www/ecrire/plugins/get_infos.php
www/ecrire/plugins/verifie_conformite.php
www/ecrire/prive.php
www/ecrire/public.php
www/ecrire/public/admin.php
www/ecrire/public/aiguiller.php
www/ecrire/public/assembler.php
www/ecrire/public/balises.php
www/ecrire/public/boucles.php
www/ecrire/public/cacher.php
www/ecrire/public/compiler.php
www/ecrire/public/composer.php
www/ecrire/public/criteres.php
www/ecrire/public/debusquer.php
www/ecrire/public/decompiler.php
www/ecrire/public/format_html.php
www/ecrire/public/interfaces.php
www/ecrire/public/jointures.php
www/ecrire/public/normaliser.php
www/ecrire/public/parametrer.php
www/ecrire/public/phraser_html.php
www/ecrire/public/quete.php
www/ecrire/public/references.php
www/ecrire/public/stats.php
www/ecrire/public/styliser.php
www/ecrire/public/tracer.php
www/ecrire/public/vertebrer.php [changed mode: 0644->0755]
www/ecrire/req/mysql.php
www/ecrire/req/pg.php
www/ecrire/req/sqlite2.php
www/ecrire/req/sqlite3.php
www/ecrire/req/sqlite_fonctions.php
www/ecrire/req/sqlite_generique.php
www/ecrire/typographie/en.php
www/ecrire/typographie/fr.php
www/ecrire/urls/arbo.php
www/ecrire/urls/generer_url_forum.php
www/ecrire/urls/html.php
www/ecrire/urls/libres.php
www/ecrire/urls/page.php
www/ecrire/urls/propres.php
www/ecrire/urls/propres2.php
www/ecrire/urls/propres_qs.php
www/ecrire/urls/standard.php
www/ecrire/xml/analyser_dtd.php
www/ecrire/xml/indenter.php
www/ecrire/xml/interfaces.php
www/ecrire/xml/sax.php
www/ecrire/xml/valider.php
www/extensions/compresseur/formulaires/configurer_compresseur.php
www/extensions/compresseur/lib/JavascriptPacker/class.JavaScriptPacker.php
www/extensions/compresseur/plugin.xml
www/extensions/filtres_images/filtres/couleurs.php
www/extensions/filtres_images/filtres/images_lib.php
www/extensions/filtres_images/filtres/images_transforme.php
www/extensions/filtres_images/filtres/images_typo.php
www/extensions/filtres_images/images_fonctions.php
www/extensions/filtres_images/inc/filtres_images.php
www/extensions/filtres_images/inc/filtres_images_compat.php
www/extensions/filtres_images/plugin.xml
www/extensions/msie_compat/action/configurer_iecompat.php
www/extensions/msie_compat/configuration/ie6config.php
www/extensions/porte_plume/configuration/porte_plume.php
www/extensions/porte_plume/formulaires/configurer_porte_plume.php
www/extensions/porte_plume/javascript/jquery.markitup_pour_spip.js
www/extensions/porte_plume/javascript/jquery.previsu_spip.js
www/extensions/porte_plume/plugin.xml
www/extensions/safehtml/inc/safehtml.php
www/extensions/safehtml/lib/safehtml/classes/HTMLSax3.php [changed mode: 0644->0755]
www/extensions/safehtml/lib/safehtml/classes/HTMLSax3/Decorators.php [changed mode: 0644->0755]
www/extensions/safehtml/lib/safehtml/classes/HTMLSax3/States.php [changed mode: 0644->0755]
www/extensions/safehtml/lib/safehtml/classes/safehtml.php [changed mode: 0644->0755]
www/extensions/safehtml/lib/safehtml/license.txt [changed mode: 0644->0755]
www/extensions/safehtml/lib/safehtml/readme-SPIP.txt [changed mode: 0644->0755]
www/extensions/safehtml/lib/safehtml/readme.txt [changed mode: 0644->0755]
www/extensions/vertebres/public/vertebrer.php [changed mode: 0644->0755]
www/favicon.ico [deleted file]
www/prive/aide_body.css
www/prive/aide_menu.html
www/prive/formulaires/editer_article.php
www/prive/formulaires/editer_auteur.php
www/prive/formulaires/editer_breve.php
www/prive/formulaires/editer_groupe_mot.php
www/prive/formulaires/editer_mot.php
www/prive/formulaires/editer_rubrique.php
www/prive/formulaires/editer_site.php
www/prive/formulaires/editer_site_fonctions.php
www/prive/formulaires/login.html
www/prive/formulaires/login.php
www/prive/formulaires/selecteur_groupe_mot_fonctions.php
www/prive/ical_prive.html
www/prive/images/cfg-16.png [changed mode: 0644->0755]
www/prive/images/rien.gif [changed mode: 0644->0755]
www/prive/informer_auteur_fonctions.php
www/prive/javascript/async_upload.js
www/prive/javascript/gadgets.js
www/prive/javascript/jquery.autosave.js
www/prive/javascript/jquery.form.js
www/prive/javascript/login.js
www/prive/javascript/multilang.js
www/prive/modeles/audio.html
www/prive/modeles/pagination_page_precedent_suivant.html
www/prive/rss_fonctions.php
www/prive/spip_admin.css
www/prive/style_prive.html
www/prive/transmettre/signatures_article.html
www/prive/vignettes/epub.png [new file with mode: 0644]
www/prive/vignettes/ogv.png [new file with mode: 0644]
www/prive/vignettes/webm.png [new file with mode: 0644]
www/spip.php
www/squelettes-dist/formulaires/ecrire_auteur.php
www/squelettes-dist/formulaires/forum.php
www/squelettes-dist/formulaires/inscription.php
www/squelettes-dist/formulaires/mot_de_passe.php
www/squelettes-dist/formulaires/oubli.php
www/squelettes-dist/formulaires/recherche.php
www/squelettes-dist/formulaires/signature.php
www/squelettes-dist/formulaires/site.php
www/squelettes-dist/habillage.css [changed mode: 0644->0755]
www/squelettes-dist/impression.css [changed mode: 0644->0755]
www/squelettes-dist/inc-rss-item.html
www/squelettes-dist/polices/dustismo-license.txt [changed mode: 0644->0755]
www/squelettes-dist/polices/dustismo.ttf [changed mode: 0644->0755]
www/squelettes-dist/polices/dustismo_bold.ttf [changed mode: 0644->0755]
www/squelettes-dist/puce.gif
www/squelettes-dist/spip.ico [changed mode: 0644->0755]
www/svn.revision

diff --git a/scripts/maj.sh b/scripts/maj.sh
new file mode 100755 (executable)
index 0000000..8462b1d
--- /dev/null
@@ -0,0 +1,91 @@
+#!/bin/sh
+#
+# Ce script a pour objectif de mettre Ă  jour un spip en protĂ©geant les chemins
+# variables.
+#
+# TODO: vĂ©rifier les vĂ©rsions, et ne faire la maj que si nĂ©cessaire
+
+set -e
+
+BASE_DIR="$(readlink -e "$(dirname "$0")/..")"
+TMP_DIR="$(mktemp -d)"
+NEW_SPIP_DIR="$TMP_DIR/spip"
+CUR_SPIP_DIR="$BASE_DIR/www"
+EXCLUDED= \
+
+cmd() {
+    notice " * running cmd:" "$@"
+    "$@" || { notice " ! command failed ret=$?" ; exit 1 ; }
+}
+
+notice() {
+    if [ "$LOGLVL" -gt 0 ]
+    then
+        echo "$@"
+    fi
+}
+
+cleanup() {
+    [ ! -d "$TMP_DIR" ] || cmd rm -rf "$TMP_DIR"
+}
+
+trap cleanup INT QUIT STOP TERM KILL EXIT
+
+# Traitement des arguments
+SOURCE=""
+LOGLVL=1
+while [ $# -gt 0 ]
+do
+    case "$1" in
+        -s|--source)
+            shift
+            SOURCE="$1"
+            ;;
+        -v|--verbose)
+            LOGLVL=2
+            ;;
+        -q|--quiet)
+            LOGLVL=0
+            ;;
+    esac
+    shift
+done
+
+if [ ! "$SOURCE" ]
+then
+    # Par default on prend la branche 3.0
+    SOURCE="http://files.spip.org/spip/archives/SPIP-v2-1.25.zip"
+fi
+
+cmd wget \
+    $( [ "$LOGLVL" -gt 1 ] || echo -n '-q') \
+    "$SOURCE" -O "$TMP_DIR/spip.zip"
+
+cmd unzip \
+    $( [ "$LOGLVL" -gt 1 ] || echo -n '-q') \
+    ${VERBOSE:+-q} "$TMP_DIR/spip.zip" -d "$TMP_DIR"
+
+[ -d "$CUR_SPIP_DIR" ] || cmd mkdir -p "$CUR_SPIP_DIR"
+
+cmd rsync -a --delete \
+    --exclude /IMG/ \
+    --exclude /config/chmod.php \
+    --exclude /config/connect.php \
+    --exclude /config/mes_options.php \
+    --exclude /lib/ \
+    --exclude /local/ \
+    --exclude /plugins/ \
+    --exclude /squelettes/ \
+    --exclude /themes/ \
+    --exclude /tmp/ \
+    "$NEW_SPIP_DIR/" \
+    "$CUR_SPIP_DIR/"
+
+for SPECIAL_DIR in\
+    IMG\
+    config\
+    local\
+    tmp
+do
+    install -d -m 777 "$CUR_SPIP_DIR/$SPECIAL_DIR"
+done
index eab40de..c534b76 100644 (file)
@@ -1,4 +1,234 @@
+
+SPIP-Core spip-2.1.24 -> spip-2.1.25  19 janvier 2014
+-------------------------------------------------------------
+r20969 | guytarr   |  (ven. 15 nov. 2013) | oubli problematique de r17980 dans r20926  : ne pas envoyer X-Spip-Cache:0 (erational)resout #3094
+r20972 | denisb    |  (ven. 15 nov. 2013) | filtres.php, editer_auteur.php, inscription.php : Ă©viter un xss sur le nom (signature) d'un auteur (report de r20532).
+r20993 | esj       |  (sam. 23 nov. 2013) | Dans le critere agenda, le premier argument Ă©tait traitĂ© trop Ă  l'arrach: * on imposait qu'il soit littĂ©ral, * mais on ne vĂ©rifiait pas que c'Ă©tait bien un champ de la table SQL.A prĂ©sent on accepte que cet argument soit calculĂ©, et on vĂ©rifie dans les deux cas qu'il s'agit bien d'un champ de la table. Sinon, on signale une erreur dès la compilation pour le premier cas, mais pour le second on prend arbitrairement le premier champ (c'est une erreur de l'internaute, pas de l'auteur du squelette).
+r21015 | esj       |  (mer. 27 nov. 2013) | Des indĂ©finis dans une boucle, c'est le commit de rĂ©pĂ©titions ?
+r21018 | denisb    |  (mer. 27 nov. 2013) | ecrire/inc/filtres.php : modification de la fonction de filtrage du nom/signature. on introduit la constante _TAGS_LOGIN (vide par dĂ©faut, dĂ©finissable dans mes_options.php) qui liste les tags html acceptables en plus de <multi> .
+r21020 | esj       |  (mer. 27 nov. 2013) | Quand on tente de crĂ©er un mot de mĂŞme titre qu'un mot existant, il est pĂ©nible que le message d'avertissement ne donne pas le lien vers celui-ci. On le rajoute, et comme il peut y en avoir plusieurs, on met en bulle tous leurs ID.
+r21021 | esj       |  (sam. 30 nov. 2013) | Dans le code PostGres, une utilisation de strpos sans vĂ©rifier que son 2e arg est non vide. RĂ©soud le 2e pb de #3100.
+r21026 | esj       |  (mar. 03 dĂ©c. 2013) | Certaines des pages d'installation de la connexion Ldap avaient le focus sur le bouton de soumission et d'autes non. On unifie.
+r21031 | esj       |  (mar. 03 dĂ©c. 2013) | ComplĂ©ment Ă  r20277, sur le paramĂ©trage de l'export de la base SQL. La fonction recevant en argument une Row, le nom de la table et de la clĂ© primaire reçoit Ă  prĂ©sent comme argument supplĂ©mentaire le nom de la base, c'est utile parfois. Rien de changĂ© pour l'export habituel vers un ficher XML.
+r21034 | denisb    |  (sam. 07 dĂ©c. 2013) | ecrire/inc/filtres.php : _TAGS_LOGIN la mal nommĂ©e est rebaptisĂ©e _TAGS_NOM_AUTEUR (RastaPopoulos.)
+r21084 | fil       |  (dim. 22 dĂ©c. 2013) | report en 2.1 de la machinerie _PREVIEW_TOKEN
+r21094 | denisb    |  (mar. 31 dĂ©c. 2013) | ecrire/inc/getdocument.php : compatibilitĂ© pcre 8.34 (php 5.5). le tiret pour ne pas ĂŞtre considĂ©rĂ© comme marque d'intervalle dans une classe de caractères doit ĂŞtre placĂ© soit au dĂ©but, soit Ă  la fin de l'Ă©numĂ©ration. report de r21091.
+r21097 | denisb    |  (mer. 01 janv. 2014) | bonne annĂ©e 2014 !
+
+SPIP-plugins-dist spip-2.1.24 -> spip-2.1.25  19 janvier 2014
+-------------------------------------------------------------
+r79784 | denisb    |  (mer. 01 janv. 2014) |  feliĉan novan jaron 2014 !
+
+
+
+SPIP-Core spip-2.1.22 -> spip-2.1.23  27 mai 2013
+-------------------------------------------------------------
+
+r20560 | cedric    |  (ven. 24 mai 2013) | suite Ă  r20552 #FORMULAIRE_INSCRIPTION sans argument utilisĂ© dans la page sommaire de squelettes-dist n'Ă©tait plus fonctionnel.On rĂ©tablit le meilleur choix possible (1comite ou 6forum) au niveau de la fonction de la balise dans ce cas particulier (et on enleve la valeur par defaut sur la page identifiants car elle n'est pas equivalente)
+r20564 | ben       |  (ven. 24 mai 2013) | changelog spip 2.1.22
+r20591 | cedric    |  (sam. 25 mai 2013) | Report de r20576 : amelioration de r20562 : si le mode n'est pas fourni, on teste 1comite puis 6forum et on renvoit celui qui est autorise.Evite la duplication de code (Emmanuel)
+r20594 | esj       |  (dim. 26 mai 2013) | Retour sur r19989, correction des arguments des chaĂ®nes de langue lorsqu'il s'agit de balise: non seulement on admet des arguments Ă  cette balise, mais Ă  prĂ©sent aussi des filtres. Ainsi on permet ici ce qu'on permet dans les arguments d'Inclure. Il suffisait de ne pas refuser le caractère "|" entre les signes "=" et "," (ce qui ne servait Ă  rien), puis d'appliquer un code Ă©prouvĂ©.
+r20598 | ben       |  (lun. 27 mai 2013) | 2.1.23
+
+
+SPIP-Core spip-2.1.21 -> spip-2.1.22  24 mai 2013
+-------------------------------------------------------------
+r20438 | esj       |  (mar. 23 avril 2013) | La saletĂ© annoncĂ©e par 14467 quant au passage en minuscule du nom du fichier de connexion avait Ă©tĂ© nettoyĂ©e par r16365, mais il restait 2 cas non vus: sql_showbase et sql_showtable. On applique les mĂŞmes corrections ce qui fait disparaitre les messagess d'erreurs SQL dans les logs. Mais ces 2 blocs de code identiques ne sont peut-ĂŞtre plus nĂ©cessaires, car trouver_table s'est beaucoup amĂ©liorĂ© depuis leur introduction en r10113 et r10371. Dans le doute, je les laisse maintenant qu'ils sont corrigĂ©s.
+r20445 | denisb    |  (ven. 26 avril 2013) | ajouter_documents.php : corrige le bug qui remplaçait les '1' du nom des fichiers par un espace (http://permalink.gmane.org/gmane.comp.web.spip.user/181328)
+r20455 | esj       |  (sam. 27 avril 2013) | Le dĂ©clenchement de la prĂ©visualisation Ă©tait mal situĂ©, car en amont des exĂ©cutions Ă©ventuelles de code PHP prĂ©sents dans le code compilĂ© du squelette.C'Ă©tait dĂ©jĂ  peu jouable pour la prĂ©visualisation HTML, franchement inutilisablepour une prĂ©visualisation PDF (voir notamment le"plugin spipdf":http://contrib.spip.net/spiPDF-v0-2-1-generer-des-contenus-sur-mesure-en-PDFqui oblige Ă  dĂ©doubler tous les squelettes faute de pouvoir faire Ă§a).On dĂ©place donc un peu en aval ce dĂ©clenchement, et on confie le comportementstandard Ă  une fonction surchargeable: "public_previsualisation".Comme exemple d'utilisation avec la lib mpdf (Ă  installer)rajouter dans squelettes-dist/formulaires/administration.htmlle bouton suivant :<pre><code class='html'>[<a class="spip-admin-boutons"     href="(#VAL{lib/mpdf}|is_dir|?{#SELF}    |parametre_url_nonvide{var_mode,preview}        |parametre_url_nonvide{pdf,1})">PDF</a>]</code></pre>et dĂ©finir dans mes_fontions.php<pre><code class='php'>function public_previsualisation($page){  if (!_request('pdf') OR !is_readable($f = _DIR_RACINE . 'lib/mpdf/mpdf.php'))    return public_previsualisation_dist($page);  include_once($f);  $f = str_replace(' ', '_', $GLOBALS['meta']['nom_site']) . '.pdf';  $GLOBALS['flag_preserver'] = true;  $page['entetes']['Content-Type'] = "application/pdf";  $page['entetes']['Content-Disposition'] = "attachment; filename=$f";  $mpdf = new mPDF($GLOBALS['meta']['charset']);  $mpdf->WriteHTML($page['texte']);  $page['texte'] = $mpdf->Output('', 'S');  return $page;}function parametre_url_nonvide($url, $c, $v=NULL, $sep='&amp;') {       return !$url ? '' : parametre_url($url, $c, $v, $sep);}</code></pre>
+r20462 | esj       |  (lun. 29 avril 2013) | Le paramètre optionnel "public", forçant la construction d'URL dans l'espace public, apparu dans generer_action_auteur lors de r12798 et r13014, doit ĂŞtre aussi proposĂ© dans la redirige_action_auteur qui appelle celle-ci, autrement Ă§a oblige Ă  la rĂ©Ă©crire Ă  chaque fois.
+r20463 | esj       |  (lun. 29 avril 2013) | ComplĂ©ment Ă  r20462: Ă©videmment du coup l'URL de l'adresse de retour doit aussi prendre en compte dans quel espace elle sera activĂ©e.
+r20483 | fil       |  (dim. 05 mai 2013) | si un login n'existe pas, plutot que de piocher les infos sur un autre login (au risque de fournir la photo d'un auteur sans lien lorsqu'on se trompe dans son email), inventer une reponse credible a base de secret_du_site(), de la date du jour, et du login
+r20485 | denisb    |  (lun. 06 mai 2013) | chercher_rubrique.php : accessibilitĂ© ; ajouter un alt explicite sur la loupe qui affiche la liste des rubriques ; ajout de la chaĂ®ne de langue correspondante (report de r20484)
+r20487 | fil       |  (lun. 06 mai 2013) | ajouter un debug utile dans log/mysql-slow.log ; avec {{{define('_DEBUG_SLOW_QUERIES', true);}}} dans mes_options (a ajouter un plugin dev j'imagine ?)
+r20491 | denisb    |  (mar. 07 mai 2013) | suite de r20485 : soyons plus gĂ©nĂ©rique, le sĂ©lecteur peut servir pour autre chose que des rubriques.
+r20511 | cedric    |  (sam. 11 mai 2013) | Ferme #2889 : forcer la date du jour quand on a pas reussi a lire la date d'un item
+r20524 | cedric    |  (jeu. 16 mai 2013) | Ferme #2999 : dans le core on definit _IS_BOT en fallback si l'ecran de securite n'est pas present. Pour cela il faut le faire après l'inclusion ! (on n'avait ratĂ© Ă§a car on utilise gĂ©nĂ©ralement l'Ă©cran en php_auto_append)
+r20527 | denisb    |  (ven. 17 mai 2013) | prive/formulaires/login.html : ajout de la variable lang dans le lien vers le formulaire de rappel du mot de passe. report de r20525
+r20541 | cedric    |  (mer. 22 mai 2013) | Inscription d'un auteur : le commentaire dit "Si mode inconnu laisser faire, c'est une extension non std", mais passer quand meme par une autorisation, qui par dĂ©faut sera a false (puisque l'auteur est non connu, donc non identifiĂ©, il n'a aucun droit par defaut).Il suffit que autoriser("inscrireauteur","xxx") renvoie true pour permettre l'inscription d'un auteur avec le statut xxx
+r20552 | esj       |  (jeu. 23 mai 2013) | Retour sur r20451, rĂ©vision des autorisations d'inscriptions. La fonction tester_config devient un appel Ă  une fonction surchargeable autoriser_inscrire prenant en argument le type d'inscription et Ă©ventuellement l'ID d'une rubrique. Par dĂ©faut cette fonction n'accepte que les types 6forum et 1comite, et ignore la rubrique.
+r20555 | cedric    |  (ven. 24 mai 2013) | Suite de r20552 et r20541 : on nomme l'autorisation autoriser('inscrireauteur',$mode,$id_rubrique) pour plus de lisibilite et eviter toute collision avec un autre type d'inscription
+r20558 | ben       |  (ven. 24 mai 2013) | SPIP 2.1.22
+r20560 | cedric    |  (ven. 24 mai 2013) | suite Ă  r20552 #FORMULAIRE_INSCRIPTION sans argument utilisĂ© dans la page sommaire de squelettes-dist n'Ă©tait plus fonctionnel.On rĂ©tablit le meilleur choix possible (1comite ou 6forum) au niveau de la fonction de la balise dans ce cas particulier (et on enleve la valeur par defaut sur la page identifiants car elle n'est pas equivalente)
+
+
+
+SPIP-Core spip-2.1.20 -> spip-2.1.21  21 avril 2013
+-------------------------------------------------------------
+r20332 | esj       |  (lun. 18 mars 2013)  | Tres vieux bug dans l'export partiel de base: le commentaire ci-dessous modifiĂ© disait bien qu'il fallait veiller Ă  avoir la table des documents liĂ©s aux articles avant la table des documents. Cet avertissement a Ă©tĂ© ignorĂ© Ă  un moment, probablement quand on est passĂ© Ă  une table des liens gĂ©nĂ©rique. De fait, l'export partiel avait toujours une liste de documents vide.
+r20334 | b_b       |  (mar. 19 mars 2013)  | Ferme #2961 : cacher le bouton de la page d'admin des plugins avec du js et non des css
+r20343 | esj       |  (jeu. 21 mars 2013)  | Affichage du bloc de document: lorsqu'un nom est trop long, il dĂ©borde du cadre et s'affiche sur le formulaire de saisie Ă  cĂ´tĂ©. C'est particulièrement le cas pour les documents distants. Comme ce nom est rĂ©pĂ©tĂ© en bas du document, on affiche que le domaine de l'URL en haut. Quant au nom en bas dont seul le dĂ©but et la fin sont Ă©crits lorsqu'il est trop long, il vaut mieux Ă©crire un dĂ©but plus long et pas la fin, puisque celle-ci est l'extension du fichier, information dĂ©jĂ  donnĂ©e 2 fois par le type de document et son logo.
+r20350 | marcimat  |  (ven. 22 mars 2013)  | Report de 71003 : ValiditĂ© XHTML, suite de r70994  qui ne convenait pas ! (freebsnet)
+r20386 | esj       |  (ven. 29 mars 2013)  | Je serai surpris que l'accessibilitĂ© recommande que le lien vers un article, au lieu d'ĂŞtre limitĂ© Ă  son titre, engloble un icĂ´ne qui n'a rien Ă  voir mais possède un autre "title" que le descriptif de l'article, le logo de l'article dĂ©portĂ© par un Float, avec visuellement parfois entre le titre et logo le nom de la langue qui n'est pas cliquable, et le mot "pĂ©tition" qui est clicable mais pour un autre lien. Ouf. On limite au seul titre de l'article.
+r20387 | esj       |  (ven. 29 mars 2013)  | Distinguer le titre '0' d'un titre vide (Fil).
+r20396 | esj       |  (dim. 31 mars 2013)  | Lorsque le chemin Ă  un document (notamment un distant) dĂ©passe 255 caractères, le dire et refuser de le charger, plutĂ´t que de le mettre en base avec un nom tronquĂ© qui ne sert qu'Ă  tromper l'utilisateur.
+r20403 | b_b       |  (mer. 03 avril 2013) | syntaxe actualisĂ©e pour #LOGO_
+r20407 | esj       |  (lun. 08 avril 2013) | Deux problèmes dans le squelette du calendrier privĂ©, avec consĂ©quence: * quelques chaĂ®nes n'Ă©taient pas soumises au filtre encodant les entitĂ©s XML (que ICS ne connait pas), c'Ă©tait très laid; * les URL avaient le caractère & encodĂ© sous forme d'entitĂ© XML, ce qui les rendaient inopĂ©rantes sous ICS.Le dernier point a nĂ©cessitĂ© d'aligner la balise URL_ECRIRE sur URL_PAGE: si elles ont un Ă©toile, &  ne sont pas encodĂ©es.
+r20409 | b_b       |  (mar. 09 avril 2013) | report de r2043 : On remplace thumbshots.com qui demande maintenant une inscription par apercite.fr. On supprime aussi girafa qui a disparu depuis longtemps.
+r20418 | esj       |  (mar. 16 avril 2013) | Lorsque l'algorithme de mot ressemblant ne trouve rien, remettre la saisie dans l'attribut "value" pour pouvoir rejouer rapidement le formulaire d'ajout d'auteur après correction.
+
+SPIP-plugins-dist spip-2.1.20 -> spip-2.1.21  21 avril 2013
+-------------------------------------------------------------
+r71028 | suske     |  (sam. 23 mars 2013) | S'il vous plait (http://comments.gmane.org/gmane.comp.web.spip.zone/31692)
+
+
+
+SPIP-Core spip-2.1.19 -> spip-2.1.20  18 mars 2013
+-------------------------------------------------------------
+
+r19920 | ben       |  (lun. 17 sept. 2012) | prĂ©parons gentillement la version suivante
+r19989 | esj       |  (jeu. 01 nov. 2012) | Le phrasĂ© des arguments d'une chaĂ®ne de langue dans un squelette Ă©tait Ă  l'ouest lorsque la valeur d'un argument Ă©tait une balise Ă  plusieurs arguments. Dans certains cas Ă§a produisait mĂŞme une fausse erreur de filtre indĂ©fini. Exemple d'Ă©criture possible Ă  prĂ©sent (cf. plugin Associaspip):<:asso:config_aide_pc_ressources{url=#URL_ECRIRE{'edit_plan',       retour=configurer_association&champ=pc_ressources}}:>
+r19992 | esj       |  (lun. 05 nov. 2012) | AmĂ©lioration de la prĂ©sentation des rĂ©sultats du validateur en boucle.
+r20016 | esj       |  (dim. 18 nov. 2012) | Eviter des warnings.
+r20019 | esj       |  (mar. 20 nov. 2012) | Eviter des nombres dans le Group-By en PG (Lesage & Cohen)
+r20035 | esj       |  (mer. 05 dĂ©c. 2012) | Suite de r19989 sur les arguments d'une chaĂ®ne de langue dans un squelette. Le cas d'un argument sans nom, comme <:foo{=val1,arg=val2}:>, n'Ă©tait pas dĂ©noncĂ© par le phraseur comme un erreur, mais Ă©tait silencieusement Ă©liminĂ© ultĂ©rieurement par le compilateur (et le dĂ©compilateur).Comme, de plus, la syntaxe des chaĂ®nes de langues dans un squelette ne fournit pas la possibilitĂ© d'avoir une chaĂ®ne de langue calculĂ©e, alors que la fonction _T sous-jacente le permet, on utilise cette syntaxe ignorĂ©e pour introduire cette possibilitĂ©. Ainsi, la syntaxe:<pre><:foo:{=#ENV{titre},x=2}:></pre>sera compilĂ©e en<pre>_T('foo:' . $Pile[0]['titre'], array('x' => 2))</pre>et de mĂŞme pour n'importe quelle expression figurant après "{=".Cette possibilitĂ© Ă©vite l'artifice d'utiliser obscurĂ©ment _T en filtre,comme cela se fait plus de 2000 fois sur SPIP-Zone.Langonet peut ainsi repĂ©rer ces chaĂ®nes auparavant indĂ©tectables.
+r20036 | esj       |  (jeu. 06 dĂ©c. 2012) | AccessibilitĂ© et validitĂ©: donner des libellĂ©s diffĂ©rents pour des liens diffĂ©rents, et ne pas utiliser "rel" Ă  contre-emploi (voir les valeurs possibles dans http://www.w3.org/TR/html401/types.html#type-links).
+r20045 | esj       |  (mar. 11 dĂ©c. 2012) | Remaniement du code produisant l'en-tĂŞte HTML de l'espace privĂ©, afin de pouvoir en changer le DOCTYPE sans avoir Ă  tout rĂ©Ă©crire pour respecter celui-ci. Pour ce faire: * la fonction produisant les gadgets est Ă©clatĂ©e en plusieurs afin de remplacer aisĂ©ment ceux qui ne vont pas; * html_lang_attributes admet un argument optionnel demandant ou non l'attribut "dir"; * le code Javascript Ă©crit en dur dans la page HTML migre dans le fichier gadget.js dont il appelait dĂ©jĂ  une fonction, et est remplacĂ© par un unique appel de fonction; * les fonctions envoi_link et debut_javascript admettent un argument optionnel supplĂ©mentaire, code Javascript Ă  insĂ©rer Ă  la fin de celui produit, ce qui permet de fusionner les deux balises scripts existant auparavant.A noter que la concactĂ©nation automatique en un seul des fichiers JS des attributs "src" des balises "script" fait l'hypothèse que le code JS des autres balises scripts n'influent pas sur les fichiers JS auparavant chargĂ©s après celles-ci, puisque la concatĂ©nation fait qu'il sont chargĂ©s dĂ©sormais avant. L'hypothèse est juste Ă  l'heure actuelle et c'est tant mieux, mais les plugins doivent savoir qu'il faut la respecter.Au passage, Ă  une certaine Ă©poque tous les scripts de l'espace privĂ© Ă©taient valide XHTML strict, 21 ne le sont plus Ă  prĂ©sent, il faudra y revenir.
+r20047 | esj       |  (mar. 11 dĂ©c. 2012) | Le validateur intĂ©grĂ© n'avait notoirement jamais su traiter complètement les squlettes internes. C'Ă©tait en particulier le cas des squelettes de prive/exec, qu'on arrive Ă  traiter correctement Ă  prĂ©sent. Pour les autres, c'est toujours le problème de fabriquer automatiquement un contexte plausible pour un squelette donnĂ©, ce n'est pas trivial.
+r20052 | esj       |  (ven. 14 dĂ©c. 2012) | InvaliditĂ© XHTML dans le fichier de langue français. On fait comment pour reperter dans les autres ?
+r20053 | esj       |  (sam. 15 dĂ©c. 2012) | InvaliditĂ© XHTML dans les fichiers de langue, et parfois mĂŞme inconformitĂ© XML. Ca montre au passage que mettre dans les fichiers de langue est Ă  Ă©viter: le risque d'Ă©liminer une balise lors d'une traduction est trop grand. Ou alors il faut que trad-lang le vĂ©rifie avant d'accepter d'enregistrer.
+r20054 | esj       |  (lun. 17 dĂ©c. 2012) | Validateur intĂ©grĂ©: mĂŞme quand on ne l'utilise pas en boucle, se rabattre sur la fonction suffixĂ©e "_args" quand l'exĂ©cution de la fonction prĂ©fixĂ©e "exec_" ramène un message d'erreur fabriquĂ© par Minipres. Et inclure dans le titre de la page le nom de ce qu'on essaye de valider, c'est mieux pour l'historique du navigateur.
+r20055 | esj       |  (mar. 18 dĂ©c. 2012) | Accès aux documents protĂ©gĂ©s, retour sur r13924: ne pas envoyer le "Content-Disposition: attachment; filename=..." Pour tous les documents rĂ©putĂ©s "embed" pas seulement les images comme auparavant pose problème pour certains cas: Ă§a marche pour Flash et PDF, mais pas pour le mp4, et le document est du coup crĂ©Ă© sous le nom "spip.php" avec un contenu qui n'est pas du PHP mais du mp4 ce qui le rend inutilisable si on ne le renomme pas manuellement. Pour Ă©viter Ă§a, on envoie un  "Content-Disposition: inline; filename=...".Mais d'après:http://greenbytes.de/tech/tc2231il n'y a que Firefox qui en tient compte. Examen fait, Safari 5.1.7 a progressĂ© depuis la publication de cette page, espĂ©rons que les autres aussi.
+r20056 | gilles    |  (mar. 18 dĂ©c. 2012) | Eviter des warnings inutiles (un file_exists() avant le filemtime serait peut-etre une meilleure option)for file in `fgrep -R filemtime * | grep -v '@filemtime' | grep -v svn | awk -F: '{print $1}' |uniq`; do sed -i 's/filemtime/@filemtime/' $file ; done
+r20057 | gilles    |  (mar. 18 dĂ©c. 2012) | revert du commit 20056 (mega Oups')
+r20058 | gilles    |  (mar. 18 dĂ©c. 2012) | file_exists() avant filemtime() -- lorsque le controle n'avait pas ete fait avant (sans bug cette-fois ci --je touche du bois)
+r20060 | esj       |  (mar. 18 dĂ©c. 2012) | Encore Revert autour de r20058 pour le validateur intĂ©grĂ©: le file_exists a Ă©tĂ© fait pour find_in_path pour le cas SYSTEM, et pour le cas PUBLIC l'absence de fichier est normale, puisque c'est une URL."
+r20063 | esj       |  (mer. 19 dĂ©c. 2012) | InvaliditĂ© XHTML strict dans les fichiers de langue.
+r20064 | esj       |  (mer. 19 dĂ©c. 2012) | InvalditĂ© XHTML dans les Exec, et Ă©viter au validateur intĂ©grĂ© de provoquer des warnings lorsque la fonction "_args" attend beaucoup d'arguments.
+r20065 | fil       |  (jeu. 27 dĂ©c. 2012) | image/jpg est parfois envoye par des serveurs mal programmes (http://www.cairn.info/loadimg.php?FILE=EG/EG_393/EG_393_0197/fullEG_id9782701156200_pu2010-03s_sa02_art02_img001.jpg)
+r20096 | fil       |  (sam. 12 janv. 2013) | affiner le bookmarklet pour ne plus exploser les accents dans les URLs de wikipedia (ou ailleurs)
+r20097 | fil       |  (sam. 12 janv. 2013) | annule [20096]
+r20103 | fil       |  (ven. 18 janv. 2013) | ne pas copier directement le fichier distant a sa destination, sinon un autre processus concurrent peut croire qu'il est present et le traiter (ca donne des images incompletes si on applique un filtre de reduction 'trop tot')
+r20104 | fil       |  (sam. 19 janv. 2013) | une strategie un peu meilleure : lock/rename
+r20115 | fil       |  (mar. 22 janv. 2013) | fusion des inc/distant de la branche 2.1 et de la branche 3 ; ca permet de revenir sur [20104], sur la branche 2.1, qui etait un peu buggue, et surtout deja regle sur le trunk (spip3) en [19461]au passage, ca reporte aussi [19231] (documents proteges, faussement distants) sur le trunka noter : les modifications d'espaces et de tabulations, bien que effectivement ameliorant le source, produisent de nombreux diffs 'muets' qu'il a fallu verifier un par un... au final une perte de temps desagreable
+r20162 | fil       |  (mar. 19 fĂ©vr. 2013) | si on met une etoile dans un mot de recherche, surligner les mots trouves sans etoile
+r20199 | fil       |  (mer. 27 fĂ©vr. 2013) | quand on passe par un GET on a des chances d'obtenir la ressource complete, il ne faut donc pas se limiter a 1Mo dans ce cas, mais a _COPIE_LOCALE_MAX_SIZE
+r20200 | esj       |  (mer. 27 fĂ©vr. 2013) | ComplĂ©ment Ă  r12071 repĂ©rant les colonnes numĂ©riques dans une table HTML: on ne reconnaissait pas ".9" comme Ă©tant un nombre, et il ne faut pas qu'une cellule vide invalide le statut numĂ©rique de toute une colonne.
+r20201 | fil       |  (mer. 27 fĂ©vr. 2013) | retour sur [20199] : pour ne pas exploser la memoire, il faut une autre approche du problemeici, on evite d'enregistrer le fichier en local s'il est incomplet
+r20209 | denisb    |  (jeu. 28 fĂ©vr. 2013) | ComplĂ©ment Ă  r20200 : reconnaĂ®tre comme numĂ©rique tout contenu de type 123 ; -123 ; + 123 ; 12 345 ; 12.34 ; 123,4
+r20229 | esj       |  (sam. 02 mars 2013) | Lorsque r10917 a deplacĂ© la dĂ©claration de bases externes des scripts d'installation vers un onglet activable ultĂ©rieurement, on n'a pas remplacĂ© FILE_CONNECT_TMP par FILE_CONNECT (i.e. le fichier de connexion) pour repĂ©rer quelle est la base courante, ce qui fait que celle-ci Ă©tait proposĂ©e comme base externe; pas grave, mais pas malin.Quant Ă  la fonction analyse_fichier_connection, lui faire retourner tous les arguments de l'appel de la fonction connexion, pas seulement les 5 premiers: Ă§a permet de savoir quel est le prefixe de table.
+r20255 | esj       |  (dim. 10 mars 2013) | ConformitĂ© XML: Ă©viter 2 occurrences d'un mĂŞme attribut.
+r20276 | esj       |  (mar. 12 mars 2013) | r17431 a ajoutĂ© des ` autour du nom des tables dans les requĂŞtes SQL Drop et Repair, avec pour consĂ©quence que le prĂ©fixe "spip_" n'Ă©tait plus remplacĂ© dans "traite_query" car la RegExp n'en tenait pas compte. Je ne comprends pas vraiment l'intĂ©rĂŞt de Ă§a puisque pour les autres requĂŞtes cet ajout n'est pas fait (il ne l'est que sur le nom de la base). Comme Ă§a doit servir Ă  qqch je ne defais pas r17431, je me contente de mettre ` que si le nom de table n'est pas alphanumĂ©rique: avec un nom pareil, il y a de bonnes chances que Ă§a ne commence pas par "spip_", mais cette hĂ©tĂ©rogĂ©nĂ©itĂ© est regrettable.
+r20277 | esj       |  (mar. 12 mars 2013) | un bug et un manque dans l'export et l'import partiels de base: * l'import partiel Ă©tant gĂ©rĂ© par une meta spĂ©cifique au demandeur, il n'est pas impossible que plusieurs imports soient demandĂ©s simultanĂ©ment, ce qui exige que la table de translation des numĂ©ros des objets soit spĂ©cifique au demandeur. Le nom de cette table est donc suffixĂ© par l'id_auteur du demandeur. * les fonctions d'export Ă©taient limitĂ©es Ă  une transcription en XML des tables de la base, il n'Ă©tait donc pas possible d'exporter les tables des bases dĂ©clarĂ©es externes, et pour en faire autre chose qu'un fichier XML. Ces fonctions sont donc rĂ©Ă©crites pour prendre comme arguments supplĂ©mentaires optionnels la base concernĂ©e et la fonction de transcription. Ces deux arguments peuvent ĂŞtre donnĂ©s Ă  la query-string du script export_all mais aucun formulaire ne les fournit en standard. Bien utilisĂ©s, ils peuvent provoquer directement une opĂ©ration d'import-export (au plutĂ´t d'export-import), chaque Row de la base exportĂ©e (au niveau de la fonction build_while) Ă©tant transmis Ă  une fonction appelant une variante de import_insere en premiere passe, puis import_translate dans la 2e passe.
+r20278 | esj       |  (mar. 12 mars 2013) | Complement pour 20277: cette ligne avait malencontreusement disparue.
+r20304 | esj       |  (ven. 15 mars 2013) | Eviter une ecriture disque pour un log qui n'apprend rien.
+r20308 | esj       |  (sam. 16 mars 2013) | Un bug potentiel dans l'import partiel: un champ id_parent ne doit pas toujours ĂŞtre renumĂ©rotĂ© comme Ă©tant un id_rubrique, ce n'est pas vrai en particulier dans la table spip_forum (qui actuellement n'est pas importĂ©e, le bug n'est donc perceptible que dans d'Ă©ventuelles surcharges de ce code qui l'importeraient). Au passage cela montre qu'il y a une typologie implicite dans les tables de SPIP, fondĂ© sur le nom des champs. Les deux champs id_parent devraient s'appeler id_rubrique_parent et id_forum_parent; on arrive Ă  lever l'ambiguitĂ© Ă  l'aide de la description de la table, mais ce n'est pas gĂ©nĂ©ralisable.Du coup, il faut pouvoir surcharger toutes ces fonctions, aussi on remplace "function_exists" par "charger_fonction". Et quand elles sont absentes, ne le signaler qu'une fois.
+r20309 | esj       |  (sam. 16 mars 2013) | Import partiel: les champs id_vignette sont des rĂ©fĂ©rences aux clĂ©s primaires id_document. Cf http://thread.gmane.org/gmane.comp.web.spip.zone/31355 et http://zone.spip.org/trac/spip-zone/browser/_plugins_/assemblage/trunk/inc/assemblage.php?rev=70785 par Nicolas Dorigny.
+r20323 | esj       |  (lun. 18 mars 2013) | A dĂ©faut d'avoir fait Ă§a au solstice d'hiver, faisons-le Ă  l'Ă©quinoxe du printemps (mĂŞme si Ă§a ne fera pas venir celui-ci plus vite).
+
+SPIP-plugins-dist spip-2.1.19 -> spip-2.1.20  18 mars 2013
+-------------------------------------------------------------
+
+r67199 | b_b       |  (sam. 27 oct. 2012) | report de r67198 : rĂ©parer generer_url_forum_dist() qui ne renvoyait rien vu qu'on ne lui passait pas le bon argument
+r67738 | cedric    |  (jeu. 15 nov. 2012) | Report de r67734 : La suppression a tort du retour ligne qui suit les commentaires // provoque un bug quand celui ci est en fin d'une ligne sans point-virgule, ce qui est une pratique courante dans les js de Bootstrap (hugues)
+r69328 | jack31    |  (jeu. 24 janv. 2013) | On est en 2013 !
+r69336 | jack31    |  (jeu. 24 janv. 2013) |
+r69338 | jack31    |  (jeu. 24 janv. 2013) |
+
+
+plugins 2.1.13->2.1.14 (22/04/2012)
+----------------------------------------
+r61251 | kent1     | 2012-05-13 12:08:13|Pas besoin de ces logs intempestifs
+
+Core 2.1.13->2.1.14 (14/05/2012)
+--------------------------------
+
+r19298 | cedric    | 2012-04-23 17:47:02| Comme r19253 mais compatible PHP 4
+r19308 | b_b       | 2012-04-25 18:31:10| suivre les changements dans les paramètres du callback success de jquery.form suite Ă  r18809
+r19309 | b_b       | 2012-04-25 19:33:47| oubli dans r19308 pour les zip Ă  dĂ©baller
+r19322 | esj       | 2012-04-27 18:29:54| RĂ©gression de SPIP 2 par rapport Ă  SPIP 1.9: la boucle syndic_article (et aussi certains cas pour la boucle Auteur) Ă©tait compilĂ©e avec un Group By inutile, particulièrement mal venu Ă  cause d'un bug de certaines versions de MYSQL. Bug  [http://comments.gmane.org/gmane.comp.web.spip.devel/46063 signalĂ© sur spip-dev] il y a dĂ©jĂ  longtemps, et relancĂ© par Sebastien Rebaudo.
+r19330 | esj       | 2012-04-30 11:11:41| Certaines instllations de PostGres ne considère pas le backslash comme un caratère d'Ă©chappement dans une chaĂ®ne, il ne faut donc pas utiliser "addslashes" mais pg_escape_string. La prĂ©sente correction n'est toutefois pas tout Ă  faite suffisante, Ă  cause de la fonction _q qui n'est toujours pas intĂ©grĂ©e Ă  l'interface SPIP/SQL, mais il n'est mĂŞme pas sĂ»r que le cas problĂ©matique puisse Ă©merger.
+r19333 | cedric    | 2012-04-30 17:28:42| Report de r19331 : Evitons aux pirates schizophrènes de se faire du mal
+r19334 | denisb    | 2012-04-30 22:05:19| inc/ajouter_documents.php : on retrouve la fonctionnalitĂ© de titrage automatique des fichiers extraits de l'upload d'un zip.
+r19358 | marcimat  | 2012-05-11 15:45:10| Report de r19256 (Éviter une erreur en PHP 5.4)
+r19364 | fil       | 2012-05-14 10:12:12| un son n'a pas de #HAUTEUR /#LARGEUR naturelle : fournir des valeurs par defaut permettant de voir le player
+r19365 | fil       | 2012-05-14 10:13:46| d'autres cas ou il ne faut pas ajouter d'insecable
+r19366 | fil       | 2012-05-14 10:14:43| savoir appliquer les filtres d'images sur les img src=data:...base64
+r19367 | fil       | 2012-05-14 10:16:51| sur un fichier vide ou inexistant, taille en octet renvoie une chaine vide plutot que '0 octets'
+r19368 | fil       | 2012-05-14 10:17:41| detection un peu plus laxiste des blocs echappes
+
+
+plugins 2.1.12->2.1.13 (22/04/2012)
+----------------------------------------
+r56754 | b_b        | 2012-01-07 20:13:34 +0100 (sam. 07 janv. 2012) | 2 lignesorthographe
+r56755 | b_b        | 2012-01-07 20:18:06 +0100 (sam. 07 janv. 2012) | 2 lignesne plus perdre la position du scroll dans les textarea des crayons :)
+r59043 | fil       | 2012-03-03 23:23:43 +0100 (sam. 03 mars 2012) | 1 ligneautoriser les iframe de l'oembed youtube (pour pouvoir les utiliser dans les forums avec le plugin oembed)
+r59045 | fil       | 2012-03-03 23:41:53 +0100 (sam. 03 mars 2012) | 1 lignevimeo... ca risque d'etre long cette affaire...
+
+Core 2.1.12->2.1.13 (22/04/2012)
+--------------------------------
+r18747 | b_b        | 2011-11-19 13:06:42 +0100 (sam. 19 nov. 2011) | attribut_html pour l'attribut value des formulaires
+r18776 | denisb    | 2011-12-07 09:22:03 +0100 (mer. 07 dĂ©c. 2011) | ecrire/exec/aide_index.php : protĂ©ger les caractères spĂ©ciaux des titres de paragraphe.
+r18784 | cy_altern@yahoo.fr | 2011-12-09 13:56:45 +0100 (ven. 09 dĂ©c. 2011) | report de http://zone.spip.org/trac/spip-zone/changeset/55295 en 2.1
+r18792 | cy_altern@yahoo.fr | 2011-12-09 18:43:23 +0100 (ven. 09 dĂ©c. 2011) | report de http://zone.spip.org/trac/spip-zone/changeset/55304 en 2.1
+r18809 | b_b        | 2011-12-14 14:52:46 +0100 (mer. 14 dĂ©c. 2011) | report de r18808 : maj de jquery form en 2.94 (règle un bug sous ie7 entre autres)
+r18818 | denisb    | 2011-12-17 14:32:05 +0100 (sam. 17 dĂ©c. 2011) | Ă©viter un open redirect sur le logout.
+r18827 | marcimat  | 2011-12-19 14:26:08 +0100 (lun. 19 dĂ©c. 2011) | Une coquille enpĂŞchait l'affichage du lien "suivant" lorsqu'on Ă©tait sur l'avant dernier Ă©lĂ©ment (choupito, b_b)
+r18829 | cedric    | 2011-12-19 14:54:31 +0100 (lun. 19 dĂ©c. 2011) | SQLite :- implementation erronee de TO_DAYS qui doit compter le nombre de jour depuis 0000-00-00 et non le nombre de jour depuis le debut de l'annĂ©e. Provoquait l'envoi intempestif du mail de nouveautĂ©s- simplifier la fonction LEAST qui peut s'appuyer sur le min() de PHP
+r18846 | marcimat  | 2011-12-26 10:57:56 +0100 (lun. 26 dĂ©c. 2011) | Report de r18841 (RealEt)
+r18919 | ben      | 2012-01-17 10:15:58 +0100 (mar. 17 janv. 2012) | Happy New Year ... on ne sait jamais si on ressort une version de secu sur la branche 1.9.2 2.0 ou 2.1 les dates seront bonnes
+r18920 | b_b        | 2012-01-17 11:38:05 +0100 (mar. 17 janv. 2012) | ferme #2491 : afficher le formulaire d'Ă©dition de mot dĂ©pliĂ© s'il y a une erreur de doublon sur le titre
+r18925 | esj       | 2012-01-21 09:48:15 +0100 (sam. 21 janv. 2012) | Trois bugs:  * un include manquant pour ask_php_auth (et un redondant) dans les forums;  * remettre le formulaire de recherche d'un auteur si envoi prĂ©cĂ©dent vide (jjmĂ©ric);  * le zoom avec affichage d'heures du calendrie ne marchait plus dans certains cas.
+r18943 | esj       | 2012-01-31 08:37:48 +0100 (mar. 31 janv. 2012) | ChaĂ®ne de langue non traduite depuis la refonte de l'authentification par r14581 et r14594.
+r18946 | fil       | 2012-01-31 13:27:10 +0100 (mar. 31 janv. 2012) | ajout du format epub (closes #2514 joachim sene); 
+r18947 | fil       | 2012-01-31 13:30:37 +0100 (mar. 31 janv. 2012) | oups
+r18948 | cedric    | 2012-01-31 14:47:43 +0100 (mar. 31 janv. 2012) | renumeroter l'upgrade de r18946 pour eviter la collision d'upgrade avec la branche SPIP 3
+r18952 | esj       | 2012-01-31 23:30:44 +0100 (mar. 31 janv. 2012) | Pouvoir appeler la fonction Bouton_spip_rss en lui prĂ©cisant l'info-bulle, et Ă©vacuation de code mort autour de son appel. Au passage, on voit ici que la fonction http_img_pack devrait ĂŞtre Ă©vacuĂ©e au profit d'une utilisation systĂ©matique de background-image dans les CSS: les icones n'ont rien Ă  faire dans le code PHP.
+r18953 | denisb    | 2012-02-01 00:13:41 +0100 (mer. 01 fĂ©vr. 2012) | ecrire/inc/auth.php : on Ă©crit dans #SESSION{en_ligne} date et heure de connexion.
+r18954 | denisb    | 2012-02-01 08:46:46 +0100 (mer. 01 fĂ©vr. 2012) | revert de r18953 qui cassait plus qu'il ne rĂ©parait...
+r18958 | kent1     | 2012-02-01 18:16:43 +0100 (mer. 01 fĂ©vr. 2012) | la vignette epub
+r18961 | denisb    | 2012-02-02 17:04:00 +0100 (jeu. 02 fĂ©vr. 2012) | ecrire/inc/auth.php : on force l'Ă©criture de 'en_ligne' dans le fichier de session pour pouvoir rĂ©cupĂ©rer #SESSION{en_ligne}  dans un squelette. sinon, la valeur dans le fichier reste Ă  zĂ©ro et Ă©crase la globale.
+r18967 | b_b        | 2012-02-07 18:06:33 +0100 (mar. 07 fĂ©vr. 2012) | Ă©viter une XSS sur l'aide en ligne (Silvère Cainaud)
+r18970 | esj       | 2012-02-08 14:49:51 +0100 (mer. 08 fĂ©vr. 2012) | Isoler dans une fonction ce bout de code bien utile pour attacher un lien Ă  une date.
+r18973 | kent1     | 2012-02-10 15:29:40 +0100 (ven. 10 fĂ©vr. 2012) | deux vignettes pour :-* ogv (pas terrible, juste une reprise des autres types video);-* webm (pas terrible non plus, basĂ© sur le template pour videos + une partie du logo de webm);
+r18982 | esj       | 2012-02-14 18:01:58 +0100 (mar. 14 fĂ©vr. 2012) | Bug dans la balise PARAMETRES_FORUM: dans le cas oĂą elle figurait dans la partie alternative d'une boucle, elle ne repĂ©rait dans quelle autre boucle elle figurait, et se croyait donc au premier niveau du squelette, sans pouvoir prĂ©ciser son type de forum.
+r19022 | cam.lafit@azerttyu.net | 2012-02-24 14:31:35 +0100 (ven. 24 fĂ©vr. 2012) | DĂ©clarer explictement la requete SQL pour un subselect * l'api SQL ne traduit pas le bon prĂ©fixe dans un SUBSELECT * On calcule donc la bonne requete SQL Ă  fournirVoir le ticket #2493
+r19023 | esj       | 2012-02-24 16:37:00 +0100 (ven. 24 fĂ©vr. 2012) | Lorsque r11084 a pu Ă©tendre #URL_PAGE aux bases externes, il l'a fait avec la restriction que cela ne pouvait concerner qu'une base sous SPIP. C'est un excès de prudence hĂ©ritĂ© des #URL_ARTICLE etc: cette balise a justement pour rĂ´le de crĂ©er des URLs arbitraires non nĂ©cessairement homonyme d'une table dans la base.
+r19024 | cedric    | 2012-02-24 22:42:53 +0100 (ven. 24 fĂ©vr. 2012) | Retour sur r19022 qui ne corrigeait pas vraiment #2493 car sql_get_select ne transpose pas le prefixe. On decompose la requete en deux pour corriger le bug initial. Ferme #2493
+r19026 | esj       | 2012-02-24 23:31:15 +0100 (ven. 24 fĂ©vr. 2012) | Quand on appelle la page privĂ© de gestion des pĂ©titions avec un id_signature en argument (lien issu du moteur de recherche), ne pas oublier de le rajouter dans le lien vers l'autre onglet.
+r19027 | esj       | 2012-02-26 00:18:17 +0100 (dim. 26 fĂ©vr. 2012) | 1Trois petits bugs liĂ©s Ă  la gestion des pĂ©titions:  * le moteur de recherche compte sur l'existence de la puce de signature, on la crĂ©e;  * afficher_objet supposait l'existence de signature-24.gif, on donne un Ă©quivalent;  * quand on appele le script de gestion de signature avec un argument id_signature, ne pas choisir le statut par dĂ©faut mais celui de la signature dĂ©signĂ©e, sinon le moteur de recherche (qui produit un tel appel) semble parler d'un signature inexistante.Ces bugs ont Ă©tĂ© trouvĂ©s suite Ă  la mise en ligne de:http://appel-enseignement-sup-et-recherche.fr/qui implicitement explique pourquoi je ne peux plus participer Ă  SPIP autant qu'avant 2007. J'invite la communautĂ© SPIP Ă  soutenir cette protestation.
+r19028 | esj       | 2012-02-26 19:14:57 +0100 (dim. 26 fĂ©vr. 2012) | Aussi bizarre que cela puisse paraĂ®tre j'ai eu:Fatal error: Call to undefined function securiser_redirect_action() in ... ecrire/action/logout.php on line 22lors de la restauration d'une base.
+r19029 | esj       | 2012-02-26 19:23:27 +0100 (dim. 26 fĂ©vr. 2012) | ComplĂ©ment Ă  r19027: si on appelle controle_petition avec id_signature, ne pas redonner cet argument dans l'URL de l'autre onglet car depuis r19207 il n'y a forcĂ©ment rien avec un tel argument. Autant redonner accès Ă  la liste de toutes les signatures.
+r19030 | fil       | 2012-02-26 19:50:16 +0100 (dim. 26 fĂ©vr. 2012) | dans l'espace prive montrer les sauts de ligne
+r19031 | esj       | 2012-02-26 22:15:32 +0100 (dim. 26 fĂ©vr. 2012) | Curieusement SPIP gĂ©rait bien les accès concurrents de deux confirmation de signatures pour la mĂŞme adresse, mais ne supprimait pas toutes les autres attentes de validation pour cette mĂŞme adresse.
+r19033 | esj       | 2012-02-27 09:09:16 +0100 (lun. 27 fĂ©vr. 2012) | Le nombre de signature en attente lors d'une pĂ©tition atteint des niveaux dĂ©sormais Ă©levĂ©s, sans doute Ă  cause des faux positifs des anti-spams. Il n'est plus possible de cliquer sur les boutons de relance individuelle vu le niveau atteint, on rajoute un bouton gĂ©nĂ©ral de relance.
+r19034 | esj       | 2012-02-27 09:27:24 +0100 (lun. 27 fĂ©vr. 2012) | ComplĂ©ment Ă  r19033: limiter la relance aux attentes de plus d'un jour, c'est plus raisonnable;
+r19036 | esj       | 2012-02-27 14:44:23 +0100 (lun. 27 fĂ©vr. 2012) | ComplĂ©ment Ă  r19033: le lien "mailto" dans la liste des signatures Ă  relancer fourni Ă  prĂ©sent le sujet et le corps du message auquel le signataire n'a pas rĂ©pondu, comportant en particulier le lien provoquant la confirmation. Cet ajout permet d'Ă©diter le message Ă  envoyer quand il est clair que le pb vient d'une adresse mail mal Ă©crite quoique valide. Ce lien n'apparaĂ®t que pour les modĂ©rateurs de la pĂ©tition Ă©videmment.
+r19037 | esj       | 2012-02-27 22:47:04 +0100 (lun. 27 fĂ©vr. 2012) | Augmenter de 4 pixels la taille de la dernière colonne de presenter_liste, sion les numĂ©ros d'objet Ă  4 chiffres ne tiennent pas sur la ligne.
+r19038 | esj       | 2012-02-28 11:47:04 +0100 (mar. 28 fĂ©vr. 2012) | ComplĂ©tement Ă  r19033: mettre dans les logs le nombre de signatures relancĂ©es plutĂ´t que de rĂ©pondre par une page blanche (mais ce serait mieux de donner l'info dans la page).
+r19039 | fil       | 2012-02-29 10:43:57 +0100 (mer. 29 fĂ©vr. 2012) | revert du patch css pour les BR, on va faire ca en html
+r19040 | esj       | 2012-02-29 19:42:14 +0100 (mer. 29 fĂ©vr. 2012) | Dans le CSV des signatures d'une pĂ©tition, donner tous les champs (bizarre que je n'ai pas tout mis Ă  la crĂ©ation de Ă§a en r11119: il suffit de les supprimer avec le tableur si vraiment on n'en veut pas).
+r19048 | esj       | 2012-03-02 16:34:35 +0100 (ven. 02 mars 2012) | La prise en compte de https par r11120 dans rĂ©cupĂ©rer page ne tenait pas compte du cas du proxy.
+r19054 | b_b        | 2012-03-03 12:29:58 +0100 (sam. 03 mars 2012) | report de 19052 sans oups : un admin ne doit pas pouvoir modifier un webmestre s'il ne l'est pas lui mĂŞme
+r19055 | esj       | 2012-03-03 12:54:42 +0100 (sam. 03 mars 2012) | CSV des signatures: il y en a qui Ă©crivent n'importe quoi. Filtrons les enttitĂ©s HTML et les points-virgules.
+r19060 | esj       | 2012-03-04 09:20:34 +0100 (dim. 04 mars 2012) | ContrĂ´le des pĂ©titions. Un complĂ©ment Ă  r19027 encore meilleur que r19029: les deux onglets doivent ĂŞtre actifs en cas de visualisation d'une signature unique.
+r19066 | esj       | 2012-03-05 14:39:33 +0100 (lun. 05 mars 2012) | Gestion des pĂ©titions: dans la page d'accueil de toutes les pĂ©titions, afficher le score des 10 plus signĂ©es.
+r19072 | fil       | 2012-03-06 12:29:47 +0100 (mar. 06 mars 2012) | prendre la css dans prive de maniere a pouvoir la vider dans le public (ce que fait basecss) sans detruire l'espace prive
+r19077 | b_b        | 2012-03-07 19:39:13 +0100 (mer. 07 mars 2012) | Exclure les Ă©ventuels quotes du nom du zip lorsqu'on tente de le rĂ©cupĂ©rer Ă  partir de Content-Disposition: attachment; filename=Note that the filename is surrounded by double quotes, per RFC 2231. This allows for the use of extended characters within the filename (i.e., international characters, though at present Internet Explorer does not support this internationalization).An unfortunately large number of web servers instead do not include the enclosing quotes around the filenamehttp://kb.mozillazine.org/Filenames_with_spaces_are_truncated_upon_download
+r19086 | esj       | 2012-03-09 08:57:35 +0100 (ven. 09 mars 2012) | Le filtre associĂ© au modèle de type MIME text ne doit pas utiliser echapper_tag mais substituer explicitement &  > et <.
+r19087 | fil       | 2012-03-09 11:05:59 +0100 (ven. 09 mars 2012) | mettre en cache le resultat du ping pour ne pas le repeter a chaque fois qu'on veut tester une URL ne precisant pas son extension
+r19088 | kent1     | 2012-03-09 19:48:30 +0100 (ven. 09 mars 2012) | La chaine de langue "nouvel_auteur" n'existe pas..."item_nouvel_auteur" si...
+r19094 | esj       | 2012-03-12 14:26:28 +0100 (lun. 12 mars 2012) | Lorsqu'on envoie un fichier nommĂ© "Makefile", SPIP corrige le manque d'extension en rajoutant ".bin", car les navigateurs ont indiquĂ© un mime-type "application/octet-stream". Cela est dĂ» a fait que le mime-type text/x-makefile existe mais n'a pas d'extension associĂ©e (".mk" parfois utilisĂ©e n'est pas officielle). On rajoute d'autoritĂ© l'extension ".txt" pour permettre l'ouverture par un Ă©diteur de texte lorsqu'un visiteur rĂ©cupère le fichier. On traite aussi ce cas particulier au niveau des entrĂ©es du rĂ©pertoire upload, car c'est justement lors du chargement de tout un rĂ©pertoire qu'on a le plus de chance de rencontrer un tel fichier.
+r19095 | esj       | 2012-03-12 17:59:40 +0100 (lun. 12 mars 2012) | De cette fonction de 400 lignes, extrayons les 10 lignes calculant le titre du document ajoutĂ©, afin de pouvoir programmer des remplacements de documents.
+r19101 | esj       | 2012-03-15 14:48:26 +0100 (jeu. 15 mars 2012) | ComplĂ©ment Ă  r19095: extrayons 1 plutĂ´t que 10 de la fonction de 400 ligns, pour donner l'information que le document sera ou non inclus en Zip. Par ailleurs, tenir compte du cas Makefile aussi ici, et forcer le titre au besoin.
+r19158 | esj       | 2012-03-26 17:47:55 +0200 (lun. 26 mars 2012) | Avant d'importer un document distant, copie_locale teste si l'URL est l'application du script acceder_document sur un document en fait local, dont elle renvoie alors le Path. Mais tester par une RegExp en dur dans le code ne permet pas aux sites jouant avec les Virtual Host d'ĂŞtre repĂ©rĂ©s dans tous les cas. On fait de cette RegExp une constante PHP afin de permettre sa redĂ©finition.
+r19162 | esj       | 2012-03-27 13:51:19 +0200 (mar. 27 mars 2012) | ComplĂ©ment Ă  r19158 sur les URL de documents distants en fait locaux: acceder_document doit accepter soit le path initial soit son propre appel dessus. Du coup on isole dans une fonction le code produisant l'URL de ces action. Par ailleurs il restait un commentaire destinĂ© Ă  une ancienne version, c'Ă©tait trompeur.
+r19202 | cedric    | 2012-04-04 15:22:00 +0200 (mer. 04 avril 2012) | PHP 5.4 :        mysql_list_dbs deprecie, on remplace a minima
+r19203 | cedric    | 2012-04-04 15:30:37 +0200 (mer. 04 avril 2012) | indentation
+r19204 | cedric    | 2012-04-04 15:37:40 +0200 (mer. 04 avril 2012) | #2615 : PHP 5.4 attention au passage par reference dans array_pop, array_shift et reset.mysql_list_dbs est deprecie
+r19205 | cedric    | 2012-04-04 15:41:22 +0200 (mer. 04 avril 2012) | #2615 PHP 5.4 attention aux Illegal offset string
+r19207 | esj       | 2012-04-05 14:23:28 +0200 (jeu. 05 avril 2012) | Afficher le lien vers l'article dans la page de contrĂ´le des pĂ©titions (qui devrait passer au singulier dans ce cas lĂ  d'ailleurs).
+r19228 | marcimat  | 2012-04-10 12:04:00 +0200 (mar. 10 avril 2012) | Report de c19227 (autoriser webmestre et PHP 5.4)
+r19231 | esj       | 2012-04-10 19:21:16 +0200 (mar. 10 avril 2012) | ComplĂ©ment Ă  r19158 sur le calcul du Path d'un document faussement distant: * accepter les variations http/https pour que Ă§a marche dans un espace privĂ© protĂ©gĂ© par https * tenir compte du paramètre $force (mais est-ce vraiment utile ?)
+r19233 | marcimat  | 2012-04-10 22:16:20 +0200 (mar. 10 avril 2012) | Report de z19232 : Lorsqu'un squelette est introuvable, Ă©viter une erreur de PHP 5.4
+r19240 | esj       | 2012-04-12 10:32:59 +0200 (jeu. 12 avril 2012) | Retour sur r19086 pour le filtre des types MIME text: str_replace ne faisant pas les substitutions en parallèle, leur ordre est significatif.
+r19243 | esj       | 2012-04-13 07:31:40 +0200 (ven. 13 avril 2012) | r10136 n'aurait pas dĂ» refuser d'appliquer URL_ACTION_AUTEUR Ă  une base externe, la raison de le faire pour les autres balises URL_XXX n'Ă©tant pas valable (Benjamin Tricault).
+r19247 | esj       | 2012-04-15 17:10:04 +0200 (dim. 15 avril 2012) | Dans la page des statistiques d'une pĂ©tition, ne compter que les signatures validĂ©es.
+r19252 | esj       | 2012-04-16 20:16:15 +0200 (lun. 16 avril 2012) | XSS dans l'espace privĂ© (Christophe Imberti)
+r19253 | esj       | 2012-04-16 20:17:23 +0200 (lun. 16 avril 2012) | XSS via une en-tĂŞte HTTP (Antoine Cervoise)
+
 Core 2.1.11->2.1.12 (16/10/2011)
+
 r18562 | ben      | 2011-09-22 22:39:46 | changelog 2.1.11
 r18580 | denisb   | 2011-09-26 08:18:59 | traduire.php : caster la globale dĂ©truite plus haut pour php5 plus rigoureux que son ancĂŞtre.
 r18582 | fil      | 2011-09-27 10:07:59 | tiens les documents ne passaient pas par les pipelines pre_insertion / post_insertion
diff --git a/www/config/mes_fonctions.php b/www/config/mes_fonctions.php
deleted file mode 100755 (executable)
index b31bf71..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-// {traduction}
-// http://www.spip.net/@traduction
-//   (id_trad>0 AND id_trad=id_trad(precedent))
-//    OR id_article=id_article(precedent)
-function critere_traduction($idb, &$boucles, $param, $not) {
-       $boucle = &$boucles[$idb];
-
-       // cas des rubriques : on va chercher toutes les rubriques contenant
-       // des trads *publiees* de nos articles *publies*
-       if ($boucle->id_table == 'rubriques') {
-       if ($param == 'traduction') {
-               $boucle->from[] = "spip_articles AS source";
-               $boucle->from[] = "spip_articles AS dest";
-               $boucle->group = "rubriques.id_rubrique";
-               $boucle->where[] = "((source.id_trad=dest.id_trad
-                       AND source.statut='publie'
-                       AND dest.statut='publie'
-                       AND rubriques.id_rubrique = source.id_rubrique
-                       AND dest.id_rubrique = '\"."
-                       . calculer_argument_precedent($idb, 'id_rubrique',
-                               $boucles)
-                       . ".\"') OR (rubriques.id_rubrique = '\"."
-                       . calculer_argument_precedent($idb, 'id_rubrique',
-                               $boucles)
-                       . ".\"'))
-                       ";
-               return;
-       } else
-               erreur_squelette(_T('zbug_info_erreur_squelette'), $param);
-       }
-
-       // cas normal (articles) : la table possede un champ id_trad
-       if ($param == 'traduction') {
-               $boucle->where[] = "((".$boucle->id_table.".id_trad > 0 AND "
-                       . $boucle->id_table.".id_trad ='\"."
-                       . calculer_argument_precedent($idb, 'id_trad',
-                               $boucles)
-                       . ".\"')
-               OR
-                       (" . $boucle->id_table.".".$boucle->primary." ='\"."
-                       . calculer_argument_precedent($idb, $boucle->primary,
-                               $boucles)
-                       . ".\"'))";
-       } else
-               erreur_squelette(_T('zbug_info_erreur_squelette'), $param);
-}
-
-?>
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 0784a6a..88bd7c7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -14,9 +14,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 
 include_spip('inc/headers');
 
-// acces aux documents joints securise
-// verifie soit que le demandeur est authentifie
-// soit que le document est publie, c'est-a-dire
+// acces aux documents joints securises
+// verifie que le document est publie, c'est-a-dire
 // joint a au moins 1 article, breve ou rubrique publie
 
 // http://doc.spip.org/@action_acceder_document_dist
@@ -36,8 +35,11 @@ function action_acceder_document_dist() {
        else if (!file_exists($file) OR !is_readable($file)) {
                $status = 404;
        } else {
-               $where = "documents.fichier=".sql_quote(set_spip_doc($file))
-               . ($arg ? " AND documents.id_document=".intval($arg): '');
+               $path = set_spip_doc($file);
+               $path2 = generer_acceder_document($f, $arg);
+               $where = "(documents.fichier=".sql_quote($path)
+                 . ' OR documents.fichier=' . sql_quote($path2) . ')'
+                 . ($arg ? (" AND documents.id_document=".intval($arg)) : '');
 
                $doc = sql_fetsel("documents.id_document, documents.titre, documents.fichier, types.mime_type, types.inclus, documents.extension", "spip_documents AS documents LEFT JOIN spip_types_documents AS types ON documents.extension=types.extension",$where);
                if (!$doc) {
@@ -84,25 +86,34 @@ function action_acceder_document_dist() {
        default:
                header("Content-Type: ". $doc['mime_type']);
 
-               // pour les images ne pas passer en attachment
-               // sinon, lorsqu'on pointe directement sur leur adresse,
-               // le navigateur les downloade au lieu de les afficher
+               // Si le fichier a un titre avec extension,
+               // ou si c'est un nom bien connu d'Unix, le prendre
+               // sinon l'ignorer car certains navigateurs pataugent
 
-               if ($doc['inclus']=='non') {
+               $f = basename($file);
+               if (isset($doc['titre'])
+               AND (preg_match('/^\w+[.]\w+$/', $doc['titre']) OR $doc['titre'] == 'Makefile'))
+                               $f = $doc['titre'];
 
-                 // Si le fichier a un titre avec extension,
-                 // ou si c'est un nom bien connu d'Unix, le prendre
-                 // sinon l'ignorer car certains navigateurs pataugent
+               $f = "filename=\"$f\"";
 
-                       $f = basename($file);
-                       if (isset($doc['titre'])
-                               AND (preg_match('/^\w+[.]\w+$/', $doc['titre']) OR $doc['titre'] == 'Makefile'))
-                               $f = $doc['titre'];
+               // Pour les document affichables par les navigateurs,
+               // ne pas envoyer "Content-Disposition: attachment" sinon 
+               // le navigateur cree un fichier au lieu de l'afficher.
+               // Mais la propriete "affichable" n'est pas toujours devinable,
+               // il faut quand meme donner un nom au fichier eventuel. 
+               // Celui-ci est malheureusement souvent ignore, cf
+               // http://greenbytes.de/tech/tc2231/
 
-                       // ce content-type est necessaire pour eviter des corruptions de zip dans ie6
-                       header('Content-Type: application/octet-stream');
+               if ($doc['inclus']!=='non') {
+                       header("Content-Disposition: inline; $f");
+               } else {
+
+                       header("Content-Disposition: attachment; $f;");
 
-                       header("Content-Disposition: attachment; filename=\"$f\";");
+                       // ce content-type est necessaire
+                       // pour eviter des corruptions de zip dans ie6
+                       header('Content-Type: application/octet-stream');
                        header("Content-Transfer-Encoding: binary");
 
                        // fix for IE catching or PHP bug issue
index 94b3649..6f37a76 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f530ba8..f850e7c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f8960c5..43f0f27 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0d9891d..6f0fdd8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -88,7 +88,7 @@ function action_charger_plugin_dist() {
 
                if (preg_match(",^Content-Type:\s*application/zip$,Uims",$head))
                        $extension = "zip";
-               elseif (preg_match(",^Content-Disposition:\s*attachment;\s*filename=(.*)$,Uims",$head,$m)){
+               elseif (preg_match(',^Content-Disposition:\s*attachment;\s*filename="?([^"]+)"?$,Uims',$head,$m)){
                        $f = $m[1];
                        if (pathinfo($f, PATHINFO_EXTENSION)=="zip"){
                                $fichier = (_request('fichier')?
index c0b2e7f..b33e261 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8b98d36..53bed1f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2135aa1..81fa709 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ceede20..011f7f8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8f553e3..724bf46 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ecfae24..4d07f6f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9d71e8b..83fbf08 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8ce8334..025f22c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 08d4523..3ffcb08 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c6a4cf6..c9d5102 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 63933e3..37966c2 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9f5eea8..104513f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ca18c09..c64b764 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2ab21fb..c1d9648 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -58,10 +58,7 @@ function action_editer_auteurs_dist() {
                        # renvoyer un formulaire de choix
                                redirige_par_entete("$redirect&cherche_auteur=$cherche&ids=" . join(',',$res)  . $ancre);
 
-               } else {
-                       include_spip('inc/actions');
-                       ajax_retour("action_editer_auteur: $arg faux");exit;
-               }
+               } else redirige_par_entete("$redirect&ids=-1");
        } else spip_log("action_editer_auteur: $arg pas compris");
 }
 
index 85b5c24..49c5e45 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3466498..3545e3c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f02d531..a48e047 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7f9ce80..ebe23d4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3e73e7e..eac273d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ac0ac2c..021eb90 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index fc0781b..bf60540 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -18,7 +18,7 @@ function action_editer_signatures_dist()
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
 
-       if (!preg_match(",^(-?\d+)$,", $arg, $r)) {
+       if (!preg_match(",^(-?\d+)(A?)$,", $arg, $r)) {
                 spip_log("action_editer_signature_dist $arg pas compris");
        } else action_editer_signatures_post($r);
 }
@@ -30,7 +30,10 @@ function action_editer_signatures_dist()
 // http://doc.spip.org/@action_editer_signatures_post
 function action_editer_signatures_post($r)
 {
-       $id = intval($r[1]);
+       $id = $id_article = intval($r[1]);
+       if ($r[2] == 'A')
+         $id = 0;
+       else $id_article = 0;
 
        if ($id < 0){
                $id = 0 - $id;
@@ -51,17 +54,40 @@ function action_editer_signatures_post($r)
                                sql_updateq("spip_signatures", array("date_time" => date('Y-m-d H:i:s')), "id_signature=$id");
                        $id = 0;
                }
-
+       } elseif ($id_article) {
+               action_editer_signatures_relance($id_article);
        }
 
        // Invalider les pages ayant trait aux petitions
-       if ($id) {
-               include_spip('inc/invalideur');
+       if (!$id_article AND $id) {
                $id_article = sql_getfetsel("id_article", "spip_signatures", "id_signature=$id");
-               suivre_invalideur("id='varia/pet$id_article'");
+               if ($id_article) {
+                       include_spip('inc/invalideur');
+                       suivre_invalideur("id='varia/pet$id_article'");
+               }
        }
 
        # cette requete devrait figurer dans l'optimisation
        sql_delete("spip_signatures", "NOT (statut='publie' OR statut='poubelle') AND date_time<DATE_SUB(NOW(),INTERVAL 10 DAY)");
 }
+
+// Relance toutes les signatures en attente
+
+function action_editer_signatures_relance($id_article)
+{
+       include_spip('formulaires/signature');
+       include_spip('inc/texte');
+       $url = generer_url_entite_absolue($id_article, 'article','','',true);
+       list($titre, $url) = signature_langue($id_article, $url);
+
+       $envoyer_mail = charger_fonction('envoyer_mail','inc');
+
+       $query = sql_select('*', 'spip_signatures', "id_article=$id_article AND NOT (statut='publie' OR statut='poubelle') AND date_time <  DATE_SUB(NOW(), INTERVAL 1 DAY)", 'ad_email');
+       $n = 0;
+       while ($r = sql_fetch($query)) {
+         list($sujet, $corps) = signature_demande_confirmation($id_article, $url, $r['nom_email'], $r['nom_site'], $r['url_site'], $r['message'], $titre, $r['statut']);
+         if ($envoyer_mail($mail, $sujet, $corps)) $n++;
+       }
+       spip_log("$n signatures relancees pour $titre");
+}
 ?>
index 14a7e98..e0a1e6e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 19ce290..5894b3d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ec06d3c..ca76e37 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -22,87 +22,138 @@ function action_export_all_dist()
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
 
-       @list(, $gz, $archive, $rub, $version) = explode(',', $arg);
+       @list(, , $archive, $rub) = explode(',', $arg);
        $meta = base_dump_meta_name($rub);
+       $file = ramasse_parties($rub, $archive, $meta);
+       $size = !$file ? 0 : @(!file_exists($file) ? 0 : filesize($file));
+       $metatable = $meta . '_tables';
+       $tables = isset($GLOBALS['meta'][$metatable])?unserialize($GLOBALS['meta'][$metatable]):array();
+       effacer_meta($metatable);
+       effacer_meta($meta);
+       utiliser_langue_visiteur();
+       if (!$size)
+               $corps = _T('avis_erreur_sauvegarde', array('type'=>'.', 'id_objet'=>'. .'));
+       else {
+               $corps = export_all_report_size($file, $rub, $size, generer_url_ecrire())
+               .  export_all_report_tables($tables);
+       }
+       include_spip('inc/minipres');
+       echo minipres(_T('info_sauvegarde'), $corps);
+}
+
+function export_all_rename($nom, $subdir)
+{
+       $dir = dirname($subdir);
+       $dest = $dir . '/' . $nom;
+       if (file_exists($dest)) {
+                       $n = 1;
+                       while (@file_exists($new = "$dir/$n-$nom")) $n++;
+                       spip_log("renomme vieux $dest en $new");
+                       @rename($dest, $new);
+       }
+       return $dest;
+}
+
+// Concatenation des tranches
+
+// http://doc.spip.org/@ramasse_parties
+function ramasse_parties($rub, $archive, $meta)
+{
        $dir = base_dump_dir($meta);
-       $file = $dir . $archive;
+       $files = preg_files($dir . $archive . ".part_[0-9]+_[0-9]+[.gz]?");
+       if (!$files) return false;
+       $ok = true;
+       $files_o = array();
+       $but = export_all_rename($archive, $dir);
+       // creer l'en tete du fichier
+       ecrire_fichier($but, export_entete(_VERSION_ARCHIVE),false);
+       foreach($files as $f) {
+         $contenu = "";
+         if (lire_fichier ($f, $contenu)) {
+           if (!ecrire_fichier($but,$contenu,false,false))
+             { $ok = false; break;}
+         }
+         spip_unlink($f);
+         $files_o[]=$f;
+       }
+       ecrire_fichier($but, export_enpied(),false,false);
+       spip_unlink($dir);
+       spip_log("concatenation " . join(' ', $files_o));
+       return $ok ? $but : false;
+}
 
-       utiliser_langue_visiteur();
-       export_all_fin($file, $meta, $rub);
+function export_all_end($meta, $archive){
+       $dir = base_dump_dir($meta);
+       $file = $dir . $archive;
 }
 
-// http://doc.spip.org/@export_all_fin
-function export_all_fin($file, $meta, $rub)
+// http://doc.spip.org/@export_entete
+function export_entete($version_archive)
 {
-       global $spip_lang_left,$spip_lang_right;
+       return
+"<" . "?xml version=\"1.0\" encoding=\"".
+$GLOBALS['meta']['charset']."\"?".">\n" .
+"<SPIP
+       version=\"" . $GLOBALS['spip_version_affichee'] . "\"
+       version_base=\"" . $GLOBALS['spip_version_base'] . "\"
+       version_archive=\"" . $version_archive . "\"
+       adresse_site=\"" .  $GLOBALS['meta']["adresse_site"] . "\"
+       dir_img=\"" . _DIR_IMG . "\"
+       dir_logos=\"" . _DIR_LOGOS . "\"
+>\n";
+}
 
-       $metatable = $meta . '_tables';
-       $tables_sauvegardees = isset($GLOBALS['meta'][$metatable])?unserialize($GLOBALS['meta'][$metatable]):array();
-       effacer_meta($meta);
-       effacer_meta($metatable);
 
-       $size = @(!file_exists($file) ? 0 : filesize($file));
+// production de l'en-pied du fichier d'archive
+// http://doc.spip.org/@export_enpied
+function export_enpied () { return  "</SPIP>\n";}
+
+function export_all_report_size($dest, $rub, $size, $retour)
+{
+       global $spip_lang_left,$spip_lang_right;
 
-       if (!$size) {
-               $corps = _T('avis_erreur_sauvegarde', array('type'=>'.', 'id_objet'=>'. .'));
-       
-       } else {
-               $subdir = dirname($file);
-               $dir = dirname($subdir);
-               $nom = basename($file);
-               $dest = $dir . '/' . $nom;
-               if (file_exists($dest)) {
-                       $n = 1;
-                       while (@file_exists($new = "$dir/$n-$nom")) $n++;
-                       @rename($dest, $new);
-               }
-               if (@rename($file, $dest)) {
-                       spip_unlink($subdir);
-                       spip_log("$file renomme en $dir/$nom");
-               }
        // ne pas effrayer inutilement: il peut y avoir moins de fichiers
        // qu'annonce' si certains etaient vides
 
-               $n = _T('taille_octets', array('taille' => number_format($size, 0, ' ', ' ')));
+       $n = _T('taille_octets', array('taille' => number_format($size, 0, ' ', ' ')));
                
                // cette chaine est a refaire car il y a double ambiguite:
                // - si plusieurs SPIP dans une base SQL (cf table_prefix)
                // - si on exporte seulement une rubrique
 #                        _T('info_sauvegarde_reussi_02',               
 
-               if ($rub) {
+       if ($rub) {
                        $titre = sql_getfetsel('titre', 'spip_rubriques', "id_rubrique=$rub");
                        $titre = _T('info_sauvegarde_rubrique_reussi',
-                                   array('archive' => ':<br /><b>'.joli_repertoire("$dir/$nom")."</b> ($n)", 'titre' => "<b>$titre</b>"));
-               }
-               else
+                                   array('archive' => ':<br /><b>'.joli_repertoire($dest)."</b> ($n)", 'titre' => "<b>$titre</b>"));
+       } else
                        $titre = _T('info_sauvegarde_reussi_02',
-                             array('archive' => ':<br /><b>'.joli_repertoire("$dir/$nom")."</b> ($n)"));
+                             array('archive' => ':<br /><b>'.joli_repertoire($dest)."</b> ($n)"));
 
-               $corps = "<p style='text-align: $spip_lang_left'>".
+       include_spip('inc/filtres');
+       return "<p style='text-align: $spip_lang_left'>".
                          $titre .
-                         " <a href='" . generer_url_ecrire() . "'>".
+                         " <a href='" . $retour . "'>".
                        _T('info_sauvegarde_reussi_03')
                        . "</a> "
                        ._T('info_sauvegarde_reussi_04')
-                       . "</p>\n";
-               
-               include_spip('inc/filtres');
-               $corps .= "<div style='text-align: $spip_lang_right'>"
-                       . bouton_action(_T("retour"), generer_url_ecrire())
-                       . "</div>";
-
-               // afficher la liste des tables qu'on a sauvegarde
-               sort($tables_sauvegardees);
-               $n = floor(count($tables_sauvegardees)/2);
-               $corps .= "<div style='width:49%;float:left;'><ul><li>" . join('</li><li>', array_slice($tables_sauvegardees,0,$n)) . "</li></ul></div>"
-                 . "<div style='width:49%;float:left;'><ul><li>" . join('</li><li>', array_slice($tables_sauvegardees,$n)) . "</li></ul></div>"
-                 . "<div class='nettoyeur'></div>";
-       }
-       include_spip('inc/minipres');
-       echo minipres(_T('info_sauvegarde'), $corps);
-       exit;
+                       . "</p>\n"
+                       .  "<div style='text-align: $spip_lang_right'>"
+                       . bouton_action(_T("retour"), $retour)
+                       . "</div>" ;
 }
 
-
+function export_all_report_tables($tables_sauvegardees)
+{
+       sort($tables_sauvegardees);
+       $n = floor(count($tables_sauvegardees)/2);
+
+       return "<div style='width:49%;float:left;'><ul><li>"
+       . join('</li><li>', array_slice($tables_sauvegardees,0,$n))
+       . "</li></ul></div>"
+       . "<div style='width:49%;float:left;'><ul><li>"
+       . join('</li><li>', array_slice($tables_sauvegardees,$n))
+       . "</li></ul></div>"
+       . "<div class='nettoyeur'></div>";
+}
 ?>
index f7b4b3d..1b3a436 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ee41ada..1c9e290 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 53bb525..f43f9b2 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -27,7 +27,7 @@ function action_instituer_auteur_dist() {
        include_spip('action/editer_auteur');
 
        $c = array(
-               array('statut'=>$statut,'id_parent'=>intval(_request('id_parent')),'restreintes'=>_request('restreintes'))
+               'statut'=>$statut,'id_parent'=>intval(_request('id_parent')),'restreintes'=>_request('restreintes')
        );
        instituer_auteur($id_auteur, $c);
 
index 3316c97..ebf2d15 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 86993fd..1f8f2ff 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7ba6105..d37d6a6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 54ce867..108badc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 75fcfc0..9616c07 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ebae3f4..3203f50 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3ddb830..ea6f0b3 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a334d89..f1efe55 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1e2e11d..4639f59 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 626431c..8087b26 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0c5ae36..8f68c87 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 if (!defined('_ECRIRE_INC_VERSION')) return;
 
 include_spip('inc/cookie');
+include_spip('public/aiguiller');
 
-// http://doc.spip.org/@action_logout_dist
+/**
+ * Se deloger
+ * Pour eviter les CSRF on passe par une etape de confirmation si pas de jeton,
+ * avec un autosubmit js pour ne pas compliquer l'experience utilisateur
+ *
+ * http://doc.spip.org/@action_logout_dist
+ *
+ */
 function action_logout_dist()
 {
-       global $visiteur_session, $ignore_auth_http;
        $logout =_request('logout');
        $url = _request('url');
-       // cas particulier, logout dans l'espace public
-       if ($logout == 'public' AND !$url)
-               $url = url_de_base();
-
-       // seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee)
-       if (is_numeric($visiteur_session['id_auteur'])) {
-               include_spip('inc/auth');
-               auth_trace($visiteur_session, '0000-00-00 00:00:00');
-       // le logout explicite vaut destruction de toutes les sessions
-               if (isset($_COOKIE['spip_session'])) {
+       // seul le loge peut se deloger
+       // (mais id_auteur peut valoir 0 apres une restauration avortee)
+       if (isset($GLOBALS['visiteur_session']['id_auteur']) 
+       AND is_numeric($GLOBALS['visiteur_session']['id_auteur'])
+       // des sessions anonymes avec id_auteur=0 existent,
+       // mais elles n'ont pas de statut : verifier ca aussi
+       AND isset($GLOBALS['visiteur_session']['statut'])) {
+               // relancer si pas de jeton
+               if (!action_logout_secu($logout, $url, _request('jeton'))) {
+                       return; // page submit retournee
+               } elseif (isset($_COOKIE['spip_session'])) {
+               // le logout explicite vaut destruction de toutes les sessions
+                       
                        $session = charger_fonction('session', 'inc');
-                       $session($visiteur_session['id_auteur']);
+                       $session($GLOBALS['visiteur_session']['id_auteur']);
                        spip_setcookie('spip_session', $_COOKIE['spip_session'], time()-3600);
                }
-               // si authentification http, et que la personne est loge,
-               // pour se deconnecter, il faut proposer un nouveau formulaire de connexion http
-               if (isset($_SERVER['PHP_AUTH_USER']) AND !$ignore_auth_http AND $GLOBALS['auth_can_disconnect']) {
-                         ask_php_auth(_T('login_deconnexion_ok'),
-                                      _T('login_verifiez_navigateur'),
-                                      _T('login_retour_public'),
-                                       "redirect=". _DIR_RESTREINT_ABS, 
-                                      _T('login_test_navigateur'),
-                                      true);
-                       
-               }
+               include_spip('inc/auth');
+               auth_trace($GLOBALS['visiteur_session'],'0000-00-00 00:00:00');
        }
-
-       // Rediriger en contrant le cache navigateur (Safari3)
+       // Action terminee (ou non faite si pas les droits) on redirige.
+       // Cas particulier, logout dans l'espace public
+       $url = securiser_redirect_action($url);
+       if ($logout == 'public' AND !$url)
+               $url = url_de_base();
        include_spip('inc/headers');
        redirige_par_entete($url
+               // contrer le cache navigateur (Safari3)
                ? parametre_url($url, 'var_hasard', uniqid(rand()), '&')
                : generer_url_public('login'));
 }
 
+/**
+ * Verifier un jeton si present, ou envoyer une page le produisant
+ * @param string $logout
+ * @param string $url
+ * @param string $jeton
+ * @return boolean
+ */
+
+function action_logout_secu($logout, $url, $jeton)
+{
+       if ($jeton AND verifier_jeton_logout($jeton,$GLOBALS['visiteur_session']))
+               return true;
+       $jeton = generer_jeton_logout($GLOBALS['visiteur_session']);
+       $action = generer_url_action("logout","jeton=$jeton");
+       $action = parametre_url($action,'logout',$logout);
+       $action = parametre_url($action,'url',$url);
+       include_spip("inc/minipres");
+       include_spip("inc/filtres");
+       $texte = bouton_action(_T('spip:icone_deconnecter'),$action);
+       $texte = "<div class='boutons'>$texte</div>";
+       $texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>';
+       echo minipres(_T('spip:icone_deconnecter'),$texte,'',true);
+       return false;
+}
+
+/**
+ * Generer un jeton de logout personnel et ephemere
+ * @param array $session
+ * @param null|string $alea
+ * @return string
+ */
+function generer_jeton_logout($session,$alea=null){
+       if (is_null($alea)){
+               if (!isset($GLOBALS['meta']['alea_ephemere'])){
+                       include_spip('base/abstract_sql');
+                       $GLOBALS['meta']['alea_ephemere'] = sql_getfetsel('valeur', 'spip_meta', "nom='alea_ephemere'");
+               }
+               $alea = $GLOBALS['meta']['alea_ephemere'];
+       }
+
+       $jeton = md5($session['date_session']
+         .$session['id_auteur']
+         .$session['statut']
+         .$alea
+       );
+       return $jeton;
+}
+
+/**
+ * Verifier que le jeton de logout est bon
+ * il faut verifier avec alea_ephemere_ancien si pas bon avec alea_ephemere
+ * pour gerer le cas de la rotation d'alea
+ * @param string $jeton
+ * @param array $session
+ * @return bool
+ */
+function verifier_jeton_logout($jeton,$session){
+       if (generer_jeton_logout($session)===$jeton)
+               return true;
+       if (!isset($GLOBALS['meta']['alea_ephemere_ancien'])){
+               include_spip('base/abstract_sql');
+               $GLOBALS['meta']['alea_ephemere_ancien'] = sql_getfetsel('valeur', 'spip_meta', "nom='alea_ephemere_ancien'");
+       }
+       if (generer_jeton_logout($session,$GLOBALS['meta']['alea_ephemere_ancien'])===$jeton)
+               return true;
+       return false;
+}
+
 ?>
index 73a6d3d..1c6628b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9fc35ad..6245f74 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c976ccc..d8c3a0f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 81eeb38..1adcbc2 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 021ec5d..4684f7e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -17,12 +17,34 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 function action_redirect_dist()
 {
        $type = _request('type');
-       if (!preg_match('/^\w+$/', $type)) return;
+       $id = intval(_request('id'));
+
        if ($m = _request('var_mode')) {
                $GLOBALS['var_urls'] = true; // forcer la mise a jour de l'url de cet objet !
-               $m = 'var_mode='.urlencode($m);
        }
-       $h = generer_url_entite_absolue(intval(_request('id')), $type, $m, '', true);
+
+       if (preg_match('/^\w+$/', $type)) {
+               $h = generer_url_entite_absolue($id, $type, '', '', true);
+       }
+       else if ($page = _request('page')
+       AND preg_match('/^\w+$/', $page)) {
+               $h = generer_url_public($page, '', true);
+       }
+       else return;
+
+       if ($m > '')
+               $h = parametre_url($h, 'var_mode', $m);
+
+       if ($m == 'preview'
+       AND defined('_PREVIEW_TOKEN')
+       AND _PREVIEW_TOKEN
+       AND autoriser('previsualiser')
+       AND $aut = $GLOBALS['visiteur_session']['id_auteur'] ) {
+               include_spip('inc/securiser_action');
+               $token = _action_auteur('previsualiser', $aut, null, 'alea_ephemere');
+               $h = parametre_url($h, 'var_previewtoken', "$aut*$token");
+       }
+
        $status = '302';
        if (_request('status') AND _request('status')=='301')
                $status = '301';
index 6271d75..cee0aa3 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5e1cce3..798c608 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9c64031..0b1b3d7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8e87290..20ca057 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -37,6 +37,7 @@ function action_supprimer_rubrique($r)
 {
        list(,,$id_rubrique) = $r;
        sql_delete("spip_rubriques", "id_rubrique=$id_rubrique");
+       sql_delete("spip_mots_rubriques", "id_rubrique=$id_rubrique");
        // Les admin restreints qui n'administraient que cette rubrique
        // deviennent redacteurs
        // (il y a sans doute moyen de faire ca avec un having)
index a5242dc..367161f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cb86ba1..4ba0da8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8873f3a..5f5e1ee 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 733fd3c..f21d543 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c067a0b..5afb7fb 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8fab2ff..485a796 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index bc59859..b4ea429 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index d0d706a..450ed0a 100644 (file)
@@ -207,9 +207,13 @@ if (!class_exists('nanoSha2'))
                                        $npad = $npad/$this->bytesString;
                                        $length = count($ords);
                                        $ords[] = 0x80; // append the "1" bit followed by 7 0's
-                                       $ords = array_pad($ords,ceil(($length+32/$this->bytesString)/$npad)*$npad-32/$this->bytesString,0);
+                                       $pad = ceil(($length+32/$this->bytesString)/$npad)*$npad-32/$this->bytesString;
+                                       $ords = array_pad($ords,$pad,0);
+
+                                       $pad *= $this->bytesString;
+                                       $bin = array_pad(array(), $pad>>5, 0);
                                        $mask = (1 << $this->bytesString) - 1;
-                                       for($i = 0; $i < count($ords) * $this->bytesString; $i += $this->bytesString)
+                                       for($i = 0; $i < $pad ; $i += $this->bytesString)
                                                $bin[$i>>5] |= ($ords[$i / $this->bytesString] & $mask) << (24 - $i%32);
                                        $bin[] = $length*$this->bytesString;
                                        return $bin;
@@ -384,12 +388,12 @@ if (!function_exists('str_split'))
         $split_length = abs($split_length);
 
         if (($split_length == 0) || ($strlen == 0)) {
-            $result = false;
+            return false;
         } elseif ($split_length >= $strlen) {
-            $result[] = $string;
+           return array($string);
         } else {
             $length = $split_length;
-
+           $result = array();
             for ($i = 0; $i < $strlen; $i++)
             {
                 $i = (($sign < 0) ? $i + $length : $i);
@@ -401,9 +405,8 @@ if (!function_exists('str_split'))
                           ? ($strlen - ($i + 1))
                           : $split_length;
             }
+           return $result;
         }
-
-        return $result;
     }
 }
 
index 3f426d8..c86e6c5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -131,7 +131,7 @@ function auth_spip_verifier_login($new_login, $id_auteur=0, $serveur=''){
        // login et mot de passe
        if (strlen($new_login)){
                if (strlen($new_login) < _LOGIN_TROP_COURT)
-                       return 'info_login_trop_court';
+                       return _T('info_login_trop_court');
                else {
                        $n = sql_countsel('spip_auteurs', "login=" . sql_quote($new_login) . " AND id_auteur!=".intval($id_auteur)." AND statut!='5poubelle'",'','',$serveur);
                        if ($n)
index c35022c..45e66e4 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b6452c7..0897c3d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a9743d4..d0c99a1 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cdbd6b0..28a7a92 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9f56528..081da3f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -31,6 +31,7 @@ function balise_FORMULAIRE_INSCRIPTION ($p) {
 // http://doc.spip.org/@balise_FORMULAIRE_INSCRIPTION_stat
 function balise_FORMULAIRE_INSCRIPTION_stat($args, $context_compil) {
        list($mode, $focus, $id) = $args;
+
        $mode = tester_config($id, $mode);
        return $mode ? array($mode, $focus, $id) : '';
 }
index 4865c4c..c33877d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1ffa31d..63cdb36 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ded6e1c..62488d4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b9bf391..e1af3c7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index eec9f6d..1bb690d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5940b0f..259bfcd 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index fc147a9..d72a5e5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5b6828e..28061ba 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b83912b..4b419bc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -142,19 +142,15 @@ function balise_URL_PAGE_dist($p) {
        $s = !$p->id_boucle ? '' :  $p->boucles[$p->id_boucle]->sql_serveur;
 
        if ($s) {
-               if (!$GLOBALS['connexions'][strtolower($s)]['spip_connect_version']) {
-                       $code = "404";
-               } else {
-                       // si une fonction de generation des url a ete definie pour ce connect l'utiliser
-                       // elle devra aussi traiter le cas derogatoire type=page
-                       if (function_exists($f = 'generer_generer_url_'.$s)){
+               // si une fonction de generation des url a ete definie pour ce connect l'utiliser
+               // elle devra aussi traiter le cas derogatoire type=page
+               if (function_exists($f = 'generer_generer_url_'.$s)){
                                if ($args) $code .= ", $args";
                                $code = $f('page', $code, $s);
                                return $p;
-                       }
-                       $s = 'connect=' .  addslashes($s);
-                       $args = $args ? "$args . '&$s'" : "'$s'";
                }
+               $s = 'connect=' .  addslashes($s);
+               $args = $args ? "$args . '&$s'" : "'$s'";
        }
        if (!$code) {
                $noentities = $p->etoile ? "'&'" : '';
@@ -171,7 +167,7 @@ function balise_URL_PAGE_dist($p) {
 
 //
 // #URL_ECRIRE{naviguer} -> ecrire/?exec=naviguer
-//
+// #URL_ECRIRE*  meme chose, mais sans convertir les & en &amp;
 // http://doc.spip.org/@balise_URL_ECRIRE_dist
 function balise_URL_ECRIRE_dist($p) {
 
@@ -183,8 +179,10 @@ function balise_URL_ECRIRE_dist($p) {
                        $fonc = $code;
                else {$code = "(\$f = $code)"; $fonc = '$f';}
                $args = interprete_argument_balise(2,$p);
-               if ($args != "''" && $args!==NULL)
-                       $fonc .= ',' . $args;
+               if ($args === NULL) $args = "''";
+               $noentities = $p->etoile ? ", true" : '';
+               if (($args != "''")  OR $noentities)
+                       $fonc .= ",$args$noentities";
        }
        $p->code = 'generer_url_ecrire(' . $fonc .')';
        if ($code) 
@@ -200,20 +198,22 @@ function balise_URL_ECRIRE_dist($p) {
 function balise_URL_ACTION_AUTEUR_dist($p) {
        $p->descr['session'] = true;
 
-       if ($p->boucles[$p->id_boucle]->sql_serveur) {
-               $p->code = 'generer_url_public("404")';
-               return $p;
+       $script = interprete_argument_balise(1,$p);
+       if (!$script OR $script == "''") {
+               $msg = array('zbug_balise_sans_argument',
+                       array('balise' => ' URL_ACTION_AUTEUR'));
+               erreur_squelette($msg, $p);
+       } else {
+               $args = interprete_argument_balise(2,$p);
+               if (!$args) $args = "''";
+               $redirect = interprete_argument_balise(3,$p);
+               // cas d'un appel (squelette) avec '' comme valeur de redirection
+               if ($redirect == "''")
+                       $redirect = "";
+               if ($redirect)
+                       $redirect = ",$redirect";
+               $p->code = "generer_action_auteur($script,$args$redirect)";
        }
-
-       $p->code = interprete_argument_balise(1,$p);
-       $args = interprete_argument_balise(2,$p);
-       if ($args != "''" && $args!==NULL)
-               $p->code .= ",".$args;
-       $redirect = interprete_argument_balise(3,$p);
-       if ($redirect != "''" && $redirect!==NULL)
-               $p->code .= ",".$redirect;
-
-       $p->code = "generer_action_auteur(" . $p->code . ")";
        $p->interdire_scripts = false;
        return $p;
 }
index e04c1e5..df091bf 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 08aa394..8797244 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -313,7 +313,7 @@ function sql_drop_view($table, $exist='', $serveur='', $option=true)
 function sql_showbase($spip=NULL, $serveur='', $option=true)
 {
        if ($spip == NULL){
-               $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
+               $connexion = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
                $spip = $connexion['prefixe'] . '\_%';
        }
        
@@ -334,7 +334,7 @@ function sql_alltable($spip=NULL, $serveur='', $option=true)
 function sql_showtable($table, $table_spip = false, $serveur='', $option=true)
 {
        if ($table_spip){
-               $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
+               $connexion = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
                $prefixe = $connexion['prefixe'];
                $vraie_table = preg_replace('/^spip/', $prefixe, $table);
        } else $vraie_table = $table;
index 4b8a096..4a4de0c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9feea00..dea5e12 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6e5b8a4..36b741c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -60,11 +60,7 @@ function spip_connect($serveur='', $version='') {
                if (!isset($GLOBALS['db_ok'])) {
                  // fera mieux la prochaine fois
                        if ($install) return false;
-                       if ($f AND $readable)
-                               spip_log("spip_connect: fichier de connexion '$f' OK.");
-                       else
-                               spip_log("spip_connect: fichier de connexion '$f' non trouve");
-                       spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.");
+                       spip_log("spip_connect: serveur $index mal defini dans '$f'. spip_connect_version: " . @$GLOBALS['spip_connect_version']);
                        // ne plus reessayer si ce n'est pas l'install
                        return $connexions[$index]=false;
                }
@@ -347,6 +343,75 @@ function table_jointure($x, $y) {
        return '';
 }
 
+/**
+ * Echapper les textes entre ' ' ou " " d'une requete SQL
+ * avant son pre-traitement
+ * On renvoi la query sans textes et les textes separes, dans
+ * leur ordre d'apparition dans la query
+ *
+ * @param string $query
+ * @return array
+ */
+function query_echappe_textes($query){
+       static $codeEchappements = array("''"=>"\x1@##@\x1", "\'"=>"\x2@##@\x2", "\\\""=>"\x3@##@\x3");
+       $query = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
+       if (preg_match_all("/((['])[^']*(\\2))|(([\"])[^\"]*(\\5))/S",$query,$textes)){
+               $textes = reset($textes); // indice 0 du match
+               switch(count($textes)){
+                       case 0:$replace=array();break;
+                       case 1:$replace=array('%1$s');break;
+                       case 2:$replace=array('%1$s','%2$s');break;
+                       case 3:$replace=array('%1$s','%2$s','%3$s');break;
+                       case 4:$replace=array('%1$s','%2$s','%3$s','%4$s');break;
+                       case 5:$replace=array('%1$s','%2$s','%3$s','%4$s','%5$s');break;
+                       default:
+                               $replace = range(1,count($textes));
+                               $replace = '%'.implode('$s,%',$replace).'$s';
+                               $replace = explode(',',$replace);
+                               break;
+               }
+               $query = str_replace($textes,$replace,$query);
+       }
+       else
+               $textes = array();
+
+       return array($query, $textes);
+}
+
+/**
+ * Reinjecter les textes d'une requete SQL a leur place initiale,
+ * apres traitement de la requete
+ *
+ * @param string $query
+ * @param array $textes
+ * @return string
+ */
+function query_reinjecte_textes($query, $textes){
+       static $codeEchappements = array("''"=>"\x1@##@\x1", "\'"=>"\x2@##@\x2", "\\\""=>"\x3@##@\x3");
+       # debug de la substitution
+       #if (($c1=substr_count($query,"%"))!=($c2=count($textes))){
+       #       spip_log("$c1 ::". $query,"tradquery"._LOG_ERREUR);
+       #       spip_log("$c2 ::". var_export($textes,1),"tradquery"._LOG_ERREUR);
+       #       spip_log("ini ::". $qi,"tradquery"._LOG_ERREUR);
+       #}
+       switch (count($textes)){
+               case 0:break;
+               case 1:$query=sprintf($query,$textes[0]);break;
+               case 2:$query=sprintf($query,$textes[0],$textes[1]);break;
+               case 3:$query=sprintf($query,$textes[0],$textes[1],$textes[2]);break;
+               case 4:$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3]);break;
+               case 5:$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3],$textes[4]);break;
+               default:
+                       array_unshift($textes,$query);
+                       $query = call_user_func_array('sprintf',$textes);
+                       break;
+       }
+
+       $query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
+
+       return $query;
+}
+
 // Pour compatibilite. Ne plus utiliser.
 // http://doc.spip.org/@spip_query
 function spip_query($query, $serveur='') {
index 8d3423d..50c3d0c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e225c85..cad6e7c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 45494da..9d99b63 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1dd04ed..05abca5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cdd7bf6..8060800 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c4e8fb3..40f6099 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1d62b02..8e1d911 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -75,8 +75,7 @@ function base_import_all_dist($titre='', $reprise=false)
        include_spip('inc/rubriques');
        calculer_rubriques();
        if (!$res) ecrire_acces();      // Mise a jour du fichier htpasswd
-       // revenir a l'accueil pour finir
-       affiche_progression_javascript('100 %', 0);
+       affiche_progression_javascript('100 %', 0, '', $request['retour']);
 }
 
 // http://doc.spip.org/@import_all_milieu
@@ -115,8 +114,9 @@ function import_all_fin($request) {
        effacer_meta('vieille_version_installee');
        effacer_meta('restauration_status_tables');
        effacer_meta('restauration_recopie_tables');
-       if ($request['insertion'] == 'passe2') 
-               sql_drop_table("spip_translate");
-        
+       if ($request['insertion'] == 'passe2') {
+               spip_log("destruction des translations " . _SPIP_TRANSLATE);
+               sql_drop_table(_SPIP_TRANSLATE);
+       }
 }
 ?>
index aad8334..02f6e00 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7a12f43..98446e4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -101,7 +101,9 @@ function base_trouver_table_dist($nom, $serveur=''){
                        if (isset($tables_auxiliaires['spip_' .$nom])) {
                                $nom_sql = 'spip_' . $nom;
                                $fdesc = &$tables_auxiliaires[$nom_sql];
-                       }  # table locale a cote de SPIP, comme non SPIP:
+                       } else {  # table locale a cote de SPIP, comme non SPIP:
+                               $fdesc = array();
+                       }
                }
 
                // faut il interpreter le prefixe 'spip_' ?
@@ -123,8 +125,10 @@ function base_trouver_table_dist($nom, $serveur=''){
                // S'il n'y a pas de key (cas d'une VIEW),
                // on va inventer une PRIMARY KEY en prenant le premier champ
                // de la table
-               if (!$desc['key'])
-                       $desc['key']['PRIMARY KEY'] = array_shift(array_keys($desc['field']));
+               if (!$desc['key']){
+                       $p = array_keys($desc['field']);
+                       $desc['key']['PRIMARY KEY'] = array_shift($p);
+               }
 
                $desc['table']= $nom_sql;
                $desc['connexion']= $serveur;
index e505a04..d4bce36 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -30,8 +30,13 @@ $tables_images = array(
 // Multimedia (peuvent utiliser le tag <embed>)
 
 $tables_sequences = array(
+                       'aac' => 'Advanced Audio Coding',
+                       'ac3' => 'AC-3 Compressed Audio',
+                       'aifc' => 'Compressed AIFF Audio',
                        'aiff' => 'AIFF',
+                       'amr' => 'Adaptive Multi-Rate Audio',
                        'anx' => 'Annodex',
+                       'ape' => 'Monkey\'s Audio File',
                        'axa' => 'Annodex Audio',
                        'axv' => 'Annodex Video',
                        'asf' => 'Windows Media',
@@ -43,6 +48,9 @@ $tables_sequences = array(
                        'f4v' => 'Video for Adobe Flash Player',
                        'flac' => 'Free Lossless Audio Codec',
                        'flv' => 'Flash Video',
+                       'm2p' => 'MPEG-PS',
+                       'm2ts' => 'BDAV MPEG-2 Transport Stream',
+                       'm4r' => 'iPhone Ringtone',
                        'm4v' => 'MPEG4 Video',
                        'm4a' => 'MPEG4 Audio',
                        'm4b' => 'MPEG4 Audio',
@@ -56,6 +64,7 @@ $tables_sequences = array(
                        'mp4' => 'MPEG4',
                        'mpc' => 'Musepack',
                        'mpg' => 'MPEG',
+                       'mts' => 'AVCHD MPEG-2 transport stream',
                        'oga' => 'Ogg Audio',
                        'ogg' => 'Ogg Vorbis',
                        'ogv' => 'Ogg Video',
@@ -66,46 +75,75 @@ $tables_sequences = array(
                        'rm' => 'RealAudio',
                        'spx' => 'Ogg Speex',
                        'svg' => 'Scalable Vector Graphics',
+                       'svgz' => 'Compressed Scalable Vector Graphic',
                        'swf' => 'Flash',
+                       'ts' => 'MPEG transport stream',
                        'wav' => 'WAV',
                        'webm' => 'WebM',
-                       'wmv' => 'Windows Media',
+                       'wma' => 'Windows Media Audio', 
+                       'wmv' => 'Windows Media Video',
+                       'y4m' => 'YUV4MPEG2', 
+                       '3ga' => '3GP Audio File',
                        '3gp' => '3rd Generation Partnership Project'
                );
 
 // Documents varies
 $tables_documents = array(
+                       '7z' => '7 Zip',
                        'abw' => 'Abiword',
                        'ai' => 'Adobe Illustrator',
+                       'asx' => 'Advanced Stream Redirector',
+                       'bib' => 'BibTeX',
                        'bz2' => 'BZip',
                        'bin' => 'Binary Data',
                        'blend' => 'Blender',
                        'c' => 'C source',
                        'cls' => 'LaTeX Class',
+                       'csl' => 'Citation Style Language',
                        'css' => 'Cascading Style Sheet',
                        'csv' => 'Comma Separated Values',
                        'deb' => 'Debian',
                        'doc' => 'Word',
+                       'dot' => 'Word Template',
                        'djvu' => 'DjVu',
                        'dvi' => 'LaTeX DVI',
+                       'emf' => 'Enhanced Metafile',
+                       'enl' => 'EndNote Library',
+                       'ens' => 'EndNote Style',
+                       'epub' => 'ePub',
                        'eps' => 'PostScript',
+                       'gpx' => 'GPS eXchange Format',
                        'gz' => 'GZ',
                        'h' => 'C header',
                        'html' => 'HTML',
+                       'jar' => 'Java Archive',
                        'kml' => 'Keyhole Markup Language',
                        'kmz' => 'Google Earth Placemark File',
-                       'm4u' => 'MPEG4 playliste',
+                       'lyx' => 'Lyx file',
+                       'mathml' => 'MathML',
+                       'm3u' => 'M3U Playlist',
+                       'm3u8' => 'M3U8 Playlist',
+                       'm4u' => 'MPEG4 Playlist',
                        'pas' => 'Pascal',
                        'pdf' => 'PDF',
                        'pgn' => 'Portable Game Notation',
+                       'pls' => 'Playlist',
+                       'pot' => 'PowerPoint Template',
                        'ppt' => 'PowerPoint',
                        'ps' => 'PostScript',
                        'psd' => 'Photoshop',
+                       'rar' => 'WinRAR',
+                       'rdf' => 'Resource Description Framework',
+                       'ris' => 'RIS',
                        'rpm' => 'RedHat/Mandrake/SuSE',
                        'rtf' => 'RTF',
-                       'sdd' => 'StarOffice',
-                       'sdw' => 'StarOffice',
+                       'sdc' => 'StarOffice Spreadsheet',
+                       'sdd' => 'StarOffice Presentation',
+                       'sdw' => 'StarOffice Writer document',
                        'sit' => 'Stuffit',
+                       'sla' => 'Scribus',
+                       'srt' => 'SubRip Subtitle',
+                       'ssa' => 'SubStation Alpha Subtitle',
                        'sty' => 'LaTeX Style Sheet',
                        'sxc' => 'OpenOffice.org Calc',
                        'sxi' => 'OpenOffice.org Impress',
@@ -115,10 +153,15 @@ $tables_documents = array(
                        'torrent' => 'BitTorrent',
                        'ttf' => 'TTF Font',
                        'txt' => 'texte',
+                       'usf' => 'Universal Subtitle Format',
                        'xcf' => 'GIMP multi-layer',
                        'xspf' => 'XSPF',
                        'xls' => 'Excel',
+                       'xlt' => 'Excel Template',
                        'xml' => 'XML',
+                       'wmf' => 'Windows Metafile',
+                       'wpl' => 'Windows Media Player Playlist',
+                       'yaml' => 'YAML',
                        'zip' => 'Zip',
 
                        // open document format
@@ -169,7 +212,12 @@ $tables_mime = array(
                'tif' => 'image/tiff',
 
                // Multimedia (peuvent utiliser le tag <embed>)
+               'aac' => 'audio/mp4a-latm',
+               'ac3' => 'audio/x-aac',
+               'aifc' => 'audio/x-aifc',
                'aiff' => 'audio/x-aiff',
+               'amr' => 'audio/amr',
+               'ape' => 'audio/x-monkeys-audio',
                'asf' => 'video/x-ms-asf',
                'avi' => 'video/x-msvideo',
                'anx' => 'application/annodex',
@@ -182,9 +230,12 @@ $tables_mime = array(
                'f4v' => 'video/mp4',
                'flac' => 'audio/x-flac',
                'flv' => 'video/x-flv',
+               'm2p' => 'video/MP2P',
+               'm2ts' => 'video/MP2T',
                'm4a' => 'audio/mp4a-latm',
                'm4b' => 'audio/mp4a-latm',
                'm4p' => 'audio/mp4a-latm',
+               'm4r' => 'audio/aac',
                'm4u' => 'video/vnd.mpegurl',
                'm4v' => 'video/x-m4v',
                'mid' => 'audio/midi',
@@ -195,6 +246,7 @@ $tables_mime = array(
                'mp3' => 'audio/mpeg',
                'mp4' => 'application/mp4',
                'mpc' => 'audio/x-musepack',
+               'mts' => 'video/MP2T',
                'mpg' => 'video/mpeg',
                'oga' => 'audio/ogg',
                'ogg' => 'audio/ogg',
@@ -206,42 +258,71 @@ $tables_mime = array(
                'rm' => 'audio/x-pn-realaudio',
                'spx' => 'audio/ogg',
                'svg' => 'image/svg+xml',
+               'svgz' => 'image/svg+xml',
                'swf' => 'application/x-shockwave-flash',
+               'ts' => 'video/MP2T',
                'wav' => 'audio/x-wav',
                'webm' => 'video/webm',
+               'wma' => 'audio/x-ms-wma',
                'wmv' => 'video/x-ms-wmv',
+               'y4m' => 'video/x-raw-yuv', 
+               '3ga' => 'audio/3ga',
                '3gp' => 'video/3gpp',
 
                // Documents varies
+               '7z' => 'application/x-7z-compressed',
                'ai' => 'application/illustrator',
                'abw' => 'application/abiword',
+               'asx' => 'video/x-ms-asf',
+               'bib' => 'application/x-bibtex',
                'bin' => 'application/octet-stream', # le tout-venant
                'blend' => 'application/x-blender',
                'bz2' => 'application/x-bzip2',
                'c'  => 'text/x-csrc',
+               'csl' => 'application/xml',
                'css' => 'text/css',
                'csv' => 'text/csv',
                'deb' => 'application/x-debian-package',
                'doc' => 'application/msword',
+               'dot' => 'application/msword',
                'djvu' => 'image/vnd.djvu',
                'dvi' => 'application/x-dvi',
+               'emf' => 'image/x-emf',
+               'enl' => 'application/octet-stream',
+               'ens' => 'application/octet-stream',
                'eps' => 'application/postscript',
+               'epub' => 'application/epub+zip', // pas enregistre par IANA
+               'gpx' => 'application/gpx+xml', // pas enregistre par IANA
                'gz' => 'application/x-gzip',
                'h'  => 'text/x-chdr',
                'html' => 'text/html',
+               'jar' => 'application/java-archive',
                'kml' => 'application/vnd.google-earth.kml+xml',
                'kmz' => 'application/vnd.google-earth.kmz',
+               'lyx' => 'application/x-lyx',
+               'm3u' => 'text/plain',
+               'm3u8' => 'text/plain',
+               'mathml' => 'application/mathml+xml',
                'pas' => 'text/x-pascal',
                'pdf' => 'application/pdf',
                'pgn' => 'application/x-chess-pgn',
-               'ppt' => 'application/vnd.ms-powerpoint',
+               'pls' => 'text/plain',
+               'ppt' => 'application/vnd.ms-powerpoint',
+               'pot' => 'application/vnd.ms-powerpoint',
                'ps' => 'application/postscript',
                'psd' => 'image/x-photoshop', // pas enregistre par IANA
+               'rar' => 'application/x-rar-compressed',
+               'rdf' => 'application/rdf+xml',
+               'ris' => 'application/x-research-info-systems',
                'rpm' => 'application/x-redhat-package-manager',
                'rtf' => 'application/rtf',
+               'sdc' => 'application/vnd.stardivision.calc',
                'sdd' => 'application/vnd.stardivision.impress',
                'sdw' => 'application/vnd.stardivision.writer',
                'sit' => 'application/x-stuffit',
+               'sla' => 'application/x-scribus',
+               'srt' => 'text/plain',
+               'ssa' => 'text/plain',
                'sxc' => 'application/vnd.sun.xml.calc',
                'sxi' => 'application/vnd.sun.xml.impress',
                'sxw' => 'application/vnd.sun.xml.writer',
@@ -250,10 +331,15 @@ $tables_mime = array(
                'torrent' => 'application/x-bittorrent',
                'ttf' => 'application/x-font-ttf',
                'txt' => 'text/plain',
+               'usf' => 'application/xml',
                'xcf' => 'application/x-xcf',
                'xls' => 'application/vnd.ms-excel',
+               'xlt' => 'application/vnd.ms-excel',
                'xspf' => 'application/xspf+xml',
                'xml' => 'application/xml',
+               'wmf' => 'image/x-emf',
+               'wpl' => 'application/vnd.ms-wpl',
+               'yaml' => 'text/yaml',
                'zip' => 'application/zip',
 
                // Open Document format
@@ -304,7 +390,8 @@ $tables_mime = array(
                'application/x-ogg' => 'application/ogg',
                'video/mp4' => 'application/mp4',
                'video/flv' => 'video/x-flv',
-               'audio/3gpp' => 'video/3gpp'
+               'audio/3gpp' => 'video/3gpp',
+               'image/jpg' => 'image/jpeg'
        );
 
 ?>
index 585f08d..a94665e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4d801b4..34e39a0 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 51c87dc..1ed320a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f34f1e6..bbdd0bc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3d67476..71f29b6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 095e53a..5809491 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ab0ba70..8ad3a3e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index eb076a1..cfb3d70 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8bc87c1..88ec75f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index bd77bae..d448839 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5e17176..5874009 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 450b156..f6a8270 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 62fba95..4e8af86 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 726be0d..ba7dd54 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3876b22..8ba92d7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4eec410..5e9d33d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b879766..32e2fe3 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 67ad85c..44776e4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2e14d01..bb1a944 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b258983..bb56164 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0ffb0f8..fb0e437 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2cf1302..eccdb24 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8b7c575..3f63e67 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f68d24c..fc85bae 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 02c0ba1..f97cc1e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 901c2db..a40c42c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0113de8..b76623c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f1cc626..2e8cb54 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5748019..8027c5f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b7283f3..6c62a78 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3fd374b..a98cb78 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7d98996..7e48ef9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 739fcf9..265dd3f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3437fd4..960bfa3 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f956e59..677140b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 14b62fb..5baab0e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8fffffa..6e39d6a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4c02e04..04d4e39 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3b9be54..ac2e9c3 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -53,7 +53,7 @@ function exec_admin_declarer_dist()
 // http://doc.spip.org/@autres_bases
 function autres_bases()
 {
-       $tables =  bases_referencees(_FILE_CONNECT_TMP);
+       $tables =  bases_referencees(_FILE_CONNECT);
 
        if ($tables)
                $tables = "<br /><br /><fieldset style='margin-bottom: 10px;'>"
index 52113af..56e7f2f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b7bc20f..42d4bac 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -117,7 +117,7 @@ function exec_admin_plugin_dist($retour='') {
                                                _T('plugins_actif_aucun')
                                                )."</h3>";
 
-       $sub = "\n<div class='boutons' style='display:none;'>"
+       $sub = "\n<div class='boutons'>"
        .  "<input type='submit' class='submit save' value='"._T('bouton_enregistrer')
        ."' />"
        . "</div>";
@@ -158,6 +158,7 @@ function exec_admin_plugin_dist($retour='') {
        
        echo    http_script("
        jQuery(function(){
+               jQuery('#plugins .boutons').hide();
                jQuery('.plugins li.item a[rel=info]').click(function(){
                        var li = jQuery(this).parents('li').eq(0);
                        var prefix = li.find('input.checkbox').attr('name');
index 3e9cfc9..4370c36 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6299224..5ace30d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -21,7 +21,11 @@ function exec_admin_tech_dist()
        if (!autoriser('sauvegarder')){
                include_spip('inc/minipres');
                echo minipres();
-       } else {
+       } else exec_admin_tech_args(options_avancees_dump());
+}
+
+function exec_admin_tech_args($tables)
+{
        $commencer_page = charger_fonction('commencer_page', 'inc');
        echo $commencer_page(_T('titre_admin_tech'), "configuration", "base");
 
@@ -57,8 +61,6 @@ function exec_admin_tech_dist()
        // Sauvegarde de la base
        //
 
-       echo debut_cadre_trait_couleur('',true,'',_T('texte_sauvegarde'),'sauvegarder');
-
        // a passer en fonction
        if (substr(_DIR_IMG, 0, strlen(_DIR_RACINE)) === _DIR_RACINE)
         $dir_img = substr(_DIR_IMG,strlen(_DIR_RACINE));
@@ -80,17 +82,29 @@ function exec_admin_tech_dist()
                      )) .
        "</p>";
        
+       $file = nom_fichier_dump();
+
        $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc');
 
-       $form = $chercher_rubrique(0, 'rubrique', !$GLOBALS['connect_toutes_rubriques'], 0, 'admin_tech');
+       $form = $chercher_rubrique(0, $GLOBALS['connect_id_rubrique'] ? 'breve' : 'rubrique', $GLOBALS['connect_id_rubrique'], 0, 'admin_tech');
 
        if ($form) {
+               if (preg_match('@^<select([^>]*)>(\s*<option[^>]*)>([^[<]+)(.*)$@s', $form, $r)) {
+                       if (!strpos($r[2], 'selected='))
+                               $r[2] .=  " selected='selected'";
+                       $form = "<select onchange='x=this.options[this.options.selectedIndex].firstChild.data.match(/\w+/); findObj_forcer(\"znom_sauvegarde\").value=x[0]; findObj_forcer(\"nom_sauvegarde\").value=x[0];'" . $r[1] . '>' . $r[2] . '>' . $r[3] . $r[4];
+                       if ($GLOBALS['connect_id_rubrique'])
+                               $file = trim($r[3]);
+               } elseif (preg_match('@^<input[^>]*>([^[<]+)@', $form, $r))
+                       if ($GLOBALS['connect_id_rubrique'])
+                               $file = trim($r[1]);
+
                $res .= "\n<label for='id_parent'>" .
                          _T('texte_admin_tech_04') .
-                         "</label><br /><br />" .
-                         $form . '<br />';
+                         "</label><br /><br />\n" .
+                         $form . '<br /><br />';
        }
-       $file = nom_fichier_dump();
+
        $nom = "\n<input name='nom_sauvegarde' id='nom_sauvegarde' size='40' value='$file' />";
        $znom = "\n<input name='znom_sauvegarde' id='znom_sauvegarde' size='40' value='$file' />";
        
@@ -107,12 +121,23 @@ function exec_admin_tech_dist()
          _T('bouton_radio_sauvegarde_non_compressee',  array('fichier'=>'')) .
          '</label><br /><b>' .
          $dir_dump .
-         "</b>$nom<b>.xml</b></li></ul>\n"
-         . "\n<input type='hidden' name='reinstall' value='non' />";
+         "</b>$nom<b>.xml</b></li></ul>\n" .
+         "\n<input type='hidden' name='reinstall' value='non' />";
+
+       if (!$GLOBALS['connect_toutes_rubriques'])
+         foreach($tables as $k => $v)
+           if (!strpos($v, 'checked')) unset($tables[$k]);
+
+       $bloc = "<h3>"._T('install_tables_base')."</h3>" .
+         "\n<ol style='spip'><li>\n" .
+         join("</li>\n<li>", $tables) .
+         "</li></ol>\n";
 
-       $res .= options_avancees_dump();
-       echo 
-               generer_form_ecrire('export_all', $res, '', _T('texte_sauvegarde_base')),
+       $bloc = block_parfois_visible('export_tables', _T('info_options_avancees'), $bloc, '', false);
+
+       echo
+               debut_cadre_trait_couleur('',true,'',_T('texte_sauvegarde'),'sauvegarder'),
+               generer_form_ecrire('export_all', $res . $bloc, '', _T('texte_sauvegarde_base')),
                fin_cadre_trait_couleur(true);
 
        //
@@ -144,7 +169,6 @@ function exec_admin_tech_dist()
        echo "<br />";
 
        echo fin_gauche(), fin_page();
-       }
 }
 
 function admin_sauvegardes($dir_dump, $tri)
@@ -272,15 +296,7 @@ function nom_fichier_dump()
 
 function options_avancees_dump(){
        list($tables,) = base_liste_table_for_dump(lister_tables_noexport());
-       $plie = _T('info_options_avancees');
-       $res = controle_tables_en_base('export', $tables);
-       $res = "<h3>"._T('install_tables_base')."</h3>"
-        . "\n<ol style='spip'><li>\n" .
-                       join("</li>\n<li>", $res) .
-                       "</li></ol>\n";
-
-       $res = block_parfois_visible('export_tables', $plie, $res, '', false);
-       return $res;
+       return controle_tables_en_base('export', $tables);
 }
 
 
index 905f059..d3b6069 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1e7b5d0..57f6fb7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -172,7 +172,7 @@ function help_body($aide) {
 function help_section($aide, $contenu, $prof=2)
 {
        $maxprof = ($prof >=2) ? "12" : "1";
-       $r = "@<h$prof" . '(?: class="spip")?' . '>\s*' . $aide 
+       $r = "@<h$prof" . '(?: class="spip")?' . '>\s*' . preg_quote($aide) 
          ."\s*(?:/.+?)?</h$prof>(.*?)<(?:(?:h[$maxprof])|/body)@ism";
 
        if (preg_match($r, $contenu, $m))
@@ -305,11 +305,12 @@ function exec_aide_index_dist()
        global $help_server;
        if (!is_array($help_server)) $help_server = array($help_server);
        if (!preg_match(_HELP_PLACE_IMG,  _request('img'), $r)) {
-               aide_index_frame(_request('var_lang_r'),
-                                _request('lang_r'),
-                                _request('frame'),
-                                strtr(_request('aide'),'<>"\'', '____'),
-                                $help_server);
+               aide_index_frame(
+                               preg_replace(',[^\w-]+,', '', _request('var_lang_r')),
+                               preg_replace(',[^\w-]+,', '', _request('lang_r')),
+                               _request('frame'),
+                               strtr(_request('aide'),'<>"\'', '____'),
+                               $help_server);
        } else {
                list (,$server, $cache, $rep, $lang, $file, $ext) = $r;
                if ($rep=="IMG" AND $lang=="cache"
index 1172f6e..ba08fa9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8d18c31..0446ab3 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index d7c2dd6..eeb11ba 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -91,7 +91,6 @@ function articles_forum_cadres($id_rubrique, $id_article, $titre, $script, $args
          aide ("suiviforum"),
          "</p>";
 
-       $img = http_img_pack('feed.png', 'RSS', '', 'RSS');
        $url = bouton_spip_rss('forums_public', array("id_article" => $id_article));
 
        echo "<div style='text-align: $spip_lang_right;'>", $url, "</div>";
@@ -117,7 +116,7 @@ function articles_forum_cadres($id_rubrique, $id_article, $titre, $script, $args
        echo "<td>" . http_img_pack('rien.gif', " ", "width='10'") ."</td>\n";
        echo "<td style='width: 100%'>";
        echo _T('texte_messages_publics');
-       echo "<a href='$url'>".gros_titre($titre,'', false)."</a>";
+       echo gros_titre("<a href='$url'>$titre</a>",'', false);
        echo "</td></tr></table>";
 }
 ?>
index 88d74fd..8fec0ca 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 802b343..c2efcf4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7f8141c..b81ab8f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index dcc677b..2ba1a79 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 99c82cc..663ee84 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -56,9 +56,14 @@ function exec_auteurs_args($statut, $tri, $debut, $recherche=NULL, $trouve='', $
                  lettres_d_auteurs(requete_auteurs($tri, $statut, $recherche), $debut, MAX_AUTEURS_PAR_PAGE, $tri);
 
 
-               $recherche = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, MAX_AUTEURS_PAR_PAGE, $nombre_auteurs,$cherche);
+
+               $arg = ($statut ? ("&statut=" .urlencode($statut)) : '')
+                 .  ($cherche ? ("&recherche=" . urlencode($cherche)) : '');
+
+               $recherche = auteurs_tranches(afficher_n_auteurs($auteurs), $debut, $lettre, $tri, $statut, MAX_AUTEURS_PAR_PAGE, $nombre_auteurs, $arg);
 
                if ($cherche){
+                       $cherche = htmlspecialchars($cherche);
                        if (count($auteurs))
                                $recherche = "<h3>". _T('info_resultat_recherche')." &laquo;$cherche&raquo;</h3>" . $recherche;
                        else
@@ -79,7 +84,7 @@ function exec_auteurs_args($statut, $tri, $debut, $recherche=NULL, $trouve='', $
                        $visiteurs ? _T('info_visiteurs') :  _T('info_auteurs'),
                                     "auteurs","redacteurs");
 
-               echo bandeau_auteurs($tri, $visiteurs);
+               echo bandeau_auteurs($visiteurs);
                
                echo  $trouve, "<div class='nettoyeur'></div>";
 
@@ -90,9 +95,9 @@ function exec_auteurs_args($statut, $tri, $debut, $recherche=NULL, $trouve='', $
 }
 
 // http://doc.spip.org/@bandeau_auteurs
-function bandeau_auteurs($tri, $visiteurs)
+function bandeau_auteurs($visiteurs)
 {
-       global $connect_id_auteur,   $connect_statut,   $connect_toutes_rubriques;
+       global $connect_id_auteur;
 
        $ret = debut_gauche("auteurs",true) . debut_boite_info(true);
 
@@ -101,16 +106,16 @@ function bandeau_auteurs($tri, $visiteurs)
        else 
                $ret .= "\n<p class='arial1'>"._T('info_gauche_auteurs'). '</p>';
 
-       if ($connect_statut == '0minirezo')
+       if (autoriser('voir', 'auteur'))
                $ret .= "\n<p class='arial1'>". _T('info_gauche_auteurs_exterieurs') . '</p>';
 
        $ret .= fin_boite_info(true);
 
        $ret .= pipeline('affiche_gauche',array('args'=>array('exec'=>'auteurs'),'data'=>''));
 
-       if ($connect_statut == '0minirezo') {
+       if (autoriser('voir', 'auteur')) {
 
-               if ($connect_toutes_rubriques) 
+               if (autoriser('creer', 'auteur'))
                        $res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos", 'new=oui'), "auteur-24.gif", "creer.gif", false);
                else $res = '';
 
@@ -173,13 +178,10 @@ function lettres_d_auteurs($query, $debut, $max_par_page, $tri)
 }
 
 // http://doc.spip.org/@auteurs_tranches
-function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs, $cherche='')
+function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs, $arg='')
 {
        global $spip_lang_right;
 
-       $arg = ($statut ? ("&statut=" .urlencode($statut)) : '')
-          .  ($cherche ? ("&recherche=" . urlencode($cherche)) : '');
-
        $res ="\n<tr class='titrem'>"
        . "\n<th style='width: 20px'>";
 
@@ -291,37 +293,40 @@ function auteurs_href($clic, $args='', $att='')
 // http://doc.spip.org/@requete_auteurs
 function requete_auteurs($tri, $statut, $recherche=NULL)
 {
-       global $connect_statut, $spip_lang, $connect_id_auteur;
+       global $connect_id_auteur;
 
-       //
-       // Construire la requete
-       //
-       
        // si on n'est pas minirezo, ignorer les auteurs sans article
        // sauf les admins, toujours visibles.
 
        // limiter les statuts affiches
-       if ($connect_statut == '0minirezo') {
+       if (autoriser('voir', 'auteur')) {
                if ($statut[0]=='!') {
                          $statut = substr($statut,1); $not = "NOT";
                } else $not = '';
                $visit = !statut_min_redac($statut);
                $statut = preg_split('/\W+/', $statut); 
-               $sql_visible = sql_in("aut.statut", $statut, $not);
+               $where = sql_in("aut.statut", $statut, $not);
        } else {
-               $sql_visible = "(
+               $where = "(
                        aut.statut = '0minirezo'
                        OR aut.id_auteur=$connect_id_auteur
                        OR " . sql_in('art.statut', array('prop', 'publie'))
                . ')';
                $visit = false;
        }
+       if ($recherche) $where .= " AND $recherche" ;
+       return requete_auteurs_tri($tri, $where, $visit);
+}
+
+function requete_auteurs_tri($tri, $where, $visit=false)
+{
+       global $spip_lang;
 
        $sql_sel = '';
        $join = $visit ?
         ""
         : 
-        (strpos($sql_visible,'art.statut')?("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" . " LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)"):"");
+        (strpos($where,'art.statut')?("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" . " LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)"):"");
        
        // tri
        switch ($tri) {
@@ -331,7 +336,7 @@ function requete_auteurs($tri, $statut, $recherche=NULL)
                $join = $visit ?
                 "LEFT JOIN spip_forum AS lien ON aut.id_auteur=lien.id_auteur"
                 : ("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" 
-               . (strpos($sql_visible,'art.statut')?" LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)":""));
+               . (strpos($where,'art.statut')?" LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)":""));
                break;
        
        case 'site':
@@ -360,9 +365,7 @@ function requete_auteurs($tri, $statut, $recherche=NULL)
                                "UPPER(aut.nom) AS unom", 
                                $sql_sel),array('',null)),
                     'FROM' => "spip_auteurs AS aut $join",
-                    'WHERE' => $sql_visible . ($recherche 
-                               ? " AND $recherche" 
-                               : ''),
+                    'WHERE' => $where,
                     'GROUP BY' => "aut.statut, aut.nom_site, aut.nom, aut.id_auteur", 
                     'ORDER BY' => $sql_order);
 }
index bd3241d..1e1dbda 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5580e5f..16cb16f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index bb5185d..d20e186 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a7f2786..4162052 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ad15107..92453bf 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2317b22..4a3aff7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cd1839a..3ae247f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b30a3fb..5873c22 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c27920e..93d339f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index dcd9f09..6eb3453 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7021147..ca2459a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7b0f474..d81f97f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 46fc101..6f96772 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 94a10cb..6c7e113 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0e7156c..78a13e5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f937c32..252cc68 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f22a28a..7bd2020 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -34,7 +34,7 @@ function forum_parent($id_forum) {
          $statut = $row['statut'];
          if ($forum_stat == "prive" OR $forum_stat == "privoff") {
            return array('pref' => _T('item_reponse_article'),
-                        'url' => generer_url_ecrire("articles","id_article=$id_article"),
+                        'url' => generer_url_ecrire("articles#poster_forum_prive-$id_forum","id_article=$id_article"),
                         'type' => 'id_article',
                         'valeur' => $id_article,
                         'titre' => $titre);
@@ -170,7 +170,7 @@ function controle_forum_boucle($row, $args) {
        if ($forum_notes = safehtml(calculer_notes()))
                $suite .= "<div class='notes controle'>".justifier(safehtml($forum_notes))."</div>";
 
-       if (strlen($forum_url_site) > 10 AND strlen($forum_nom_site) > 3)
+       if (strlen($forum_url_site) > 10 AND strlen($forum_nom_site) >= 3)
                $suite .= "\n<div style='text-align: left' class='serif'><b><a href='$forum_url_site'>$forum_nom_site</a></b></div>";
 
        return  "\n<div><br /><a id='forum$id_forum'></a></div>" .
@@ -210,12 +210,16 @@ function exec_controle_forum_args($id_rubrique, $type, $debut, $pas, $enplus, $r
        } else {
 
        if (!preg_match('/^\w+$/', $type)) $type = 'public';
-       $formulaire_recherche = formulaire_recherche("controle_forum","<input type='hidden' name='type' value='$type' />");
-
        list($from,$where) = critere_statut_controle_forum($type, $id_rubrique, $recherche);
 
+       exec_controle_forum_args2($id_rubrique, $type, $debut, $pas, $enplus, $recherche, $from, $where, intval(_request('debut_id_forum')));
+       }
+}
+
+function exec_controle_forum_args2($id_rubrique, $type, $debut, $pas, $enplus, $recherche, $from, $where, $debut_id_forum)
+{
        // Si un id_controle_forum est demande, on adapte le debut
-       if ($debut_id_forum = intval(_request('debut_id_forum'))
+       if ($debut_id_forum
        AND (NULL !== ($d = sql_getfetsel('date_heure', 'spip_forum', "id_forum=$debut_id_forum")))) {
          $debut = sql_countsel($from, $where . (" AND F.date_heure > '$d'"));
        }
@@ -244,12 +248,8 @@ function exec_controle_forum_args($id_rubrique, $type, $debut, $pas, $enplus, $r
        if (_AJAX) {
                ajax_retour($res);
        } else {
-               $ancre = 'controle_forum';
-               $res = "<div id='$ancre' class='serif2'>$res</div>";
-
                pipeline('exec_init',array('args'=>array('exec'=>'controle_forum', 'type'=>$type),'data'=>''));
 
-
                $commencer_page = charger_fonction('commencer_page', 'inc');
                echo $commencer_page(_T('titre_page_forum_suivi'), "forum", "forum-controle");
 
@@ -285,14 +285,13 @@ function exec_controle_forum_args($id_rubrique, $type, $debut, $pas, $enplus, $r
                echo creer_colonne_droite('', true);
                echo pipeline('affiche_droite',array('args'=>array('exec'=>'controle_forum', 'type'=>$type),'data'=>''));
                        
-                       
                echo debut_droite('', true);
                echo pipeline('affiche_milieu',array('args'=>array('exec'=>'controle_forum', 'type'=>$type),'data'=>''));
 
-               echo $formulaire_recherche . "<div class='nettoyeur'></div>";
-               echo $res; 
+               echo formulaire_recherche("controle_forum","<input type='hidden' name='type' value='$type' />");
+               echo "<div class='nettoyeur'></div>";
+               echo "<div id='controle_forum' class='serif2'>", $res, "</div>";
                echo fin_gauche(), fin_page();
        }
-       }
 }
 ?>
index f217977..7c0d6c5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -29,16 +29,19 @@ function exec_controle_petition_dist()
 function exec_controle_petition_args($id_article, $type, $date, $debut, $id_signature, $pas=NULL)
 {
        if ($id_signature) {
-               $id_article = sql_getfetsel("id_article", "spip_signatures", "id_signature=$id_signature");
+               $r = sql_fetsel("id_article, statut", "spip_signatures", "id_signature=$id_signature");
+               $id_article = $r['id_article'];
+               $s = $r['statut'];
+               $type = ($s=='publie' OR $s=='poubelle') ? 'public' : 'interne';
                $where = '(id_signature=' . sql_quote($id_signature) . ') AND ';
        } else  $where = '';
        if ($id_article AND !($titre = sql_getfetsel("titre", "spip_articles", "id_article=$id_article"))) {
                include_spip('inc/minipres');
                 echo minipres(_T('public:aucun_article'));
-       }       else controle_petition_args($id_article, $type, $date, $debut, $titre, $where, $pas);
+       }       else controle_petition_args($id_article, $type, $date, $debut, $titre, $where, $pas, $id_signature);
 }
 
-function controle_petition_args($id_article, $type, $date, $debut, $titre, $where, $pas)
+function controle_petition_args($id_article, $type, $date, $debut, $titre, $where, $pas, $id_signature=0)
 {
        if (!preg_match('/^\w+$/',$type)) $type = 'public';
        if ($id_article) $where .= "id_article=$id_article AND ";
@@ -60,32 +63,37 @@ function controle_petition_args($id_article, $type, $date, $debut, $titre, $wher
        $res = $signatures('controle_petition', $id_article, $debut, $pas, $where, $order, $type);
 
        if (_AJAX) {
-                       ajax_retour($res);
+               ajax_retour($res);
        } else {
-
-               if (autoriser('modererpetition')
-               OR (
-                       $id_article > 0
-                       AND autoriser('modererpetition', 'article', $id_article)
-                       ))
-                       $ong = controle_petition_onglet($id_article, $debut, $type);
-               else {
-                 $type = 'public';
-                 $ong = '';
-               }
-               controle_petition_page($id_article, $titre, $ong, $res);
+               $count = ($type != 'interne') ? 0 : sql_countsel("spip_signatures", $where);
+               controle_petition_page($id_article, $titre, $id_signature ? '' : $type, $res, $count);
        }
 }
 
 // http://doc.spip.org/@controle_petition_page
-function controle_petition_page($id_article, $titre,  $ong, $corps)
+function controle_petition_page($id_article, $titre, $type,  $corps, $count)
 {
-       if ($id_article) {
-               $a =  generer_url_ecrire("statistiques_visites","id_article=$id_article");
-               $rac = "<br /><br /><br /><br /><br />" .
-               bloc_des_raccourcis(icone_horizontale(_T('icone_statistiques_visites'),$a, "statistiques-24.gif","rien.gif", false));
-
-               $titre = "<a href='" .
+       $args = array();
+       $rac = '';
+
+       if (!(autoriser('modererpetition')
+       OR (
+               $id_article > 0
+               AND autoriser('modererpetition', 'article', $id_article)
+           ))) {
+               $ong = '';
+       } else {
+               $ong = controle_petition_onglet($id_article, $debut, $type, '');
+               if ($id_article) {
+                       $h = generer_url_ecrire("statistiques_visites","id_article=$id_article");
+                       $rac = icone_horizontale(_T('icone_statistiques_visites'), $h, "statistiques-24.gif","rien.gif", false);
+                       if ($type !== 'public') {
+
+                               $h = redirige_action_auteur('editer_signatures', $id_article . 'A', 'controle_petition', "id_article=$id_article&type=interne");
+                               $rac .= icone_horizontale(_T('icone_relancer_signataire') . " ($count)", $h, "envoi-message-24.gif","rien.gif", false);
+                       }
+                       $rac = bloc_des_raccourcis($rac);
+                       $titre = "<a href='" .
                        generer_url_entite($id_article,'article') .
                        "'>" .
                        typo($titre) .
@@ -95,15 +103,36 @@ function controle_petition_page($id_article, $titre,  $ong, $corps)
                        $id_article .
                        ")</span>";
 
-               if (!sql_countsel('spip_petitions', "id_article=$id_article"))
-                       $titre .= '<br >' . _T('info_petition_close');
+                       if (!sql_countsel('spip_petitions', "id_article=$id_article"))
+                               $titre .= '<br >' . _T('info_petition_close');
+
+                       $args = array('id_article' => $id_article);
+               } else {
+
+                 $q = sql_select('A.titre, A.date, A.id_article, count(*) AS n', 
+                            'spip_signatures AS S LEFT JOIN spip_articles AS A ON A.id_article=S.id_article',
+                            '',
+                            'A.id_article',
+                                 'n desc',
+                                 "0,10");
+                 while ($r = sql_fetch($q)) {
+                   $id = $r['id_article'];
+                   $h = generer_url_entite($id, 'article');
+                   $title = affdate_jourcourt($r['date']) . "\n" .$r['titre'];
+                   $rac .= "<li><a href='$h' title=\"" .  attribut_html($title).  '">' . _T('info_numero_abbreviation') . " $id" . '</a>&nbsp;: '. $r['n'] . ' ' . _T('signatures') . "</li>";
+                 }
+                 if ($rac) $rac = "<ul>$rac</ul>";
+                 $rac = debut_cadre_enfonce('',true)
+                   . "\n<div style='font-size: x-small' class='verdana1'><b>"
+                   ._T('public:articles_populaires')
+                   ."</b>"
+                   . $rac
+                   . "</div>"
+                   . fin_cadre_enfonce(true);
 
-               $args = array('id_article' => $id_article);
-       } else  {
-               $args = array();
-               $rac = $titre = '';
+               }
+               $rac = "<br /><br /><br /><br /><br />" . $rac;
        }
-
        $head = _T('titre_page_controle_petition');
        $idom = "editer_signature-" . $id_article;
        $commencer_page = charger_fonction('commencer_page', 'inc');
index c7a2db5..01fcc15 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index abd6cd4..7792dcc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 69028b2..a52494a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c42050c..6983133 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a71f8bd..a2af7e7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 18f90cd..14a08ba 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2b3e396..c157cf8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5a64252..bd45dc5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 625a478..ee49c59 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 097c3bf..e329223 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5f7976d..4b65cf1 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a42cfac..907f3c8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 614a77a..224bd7d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c22ae2a..51f2b86 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -23,6 +23,9 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  * - on renvoie
  *   vers action=export_all pour afficher le resume
  * 
+ * Deux parametres sont geres mais non disponibles en standard;
+ *     $serveur : nom d'une base externe qu'on veut exporter
+ *     $save : fonction creant la sauvegarde (defaut: inc_export_xml)
  */
 
 include_spip('inc/presentation');
@@ -30,33 +33,41 @@ include_spip('base/dump');
 
 // http://doc.spip.org/@exec_export_all_dist
 function exec_export_all_dist(){
-       $rub = intval(_request('id_parent'));
-       $meta = base_dump_meta_name($rub);
+       exec_export_all_init(intval(_request('id_parent')),
+                       _request('gz'),
+                       _request('export'),
+                       preg_replace('@[^\d\w-_]@', '_', _request('serveur')),
+                       preg_replace('@[^\d\w-_]@', '_', _request('save')));
+}
 
+function exec_export_all_init($rub, $gz, $tables, $serveur='', $save=''){
+       $meta = base_dump_meta_name($rub);
+       utiliser_langue_visiteur();
        if (!isset($GLOBALS['meta'][$meta])){
                // c'est un demarrage en arrivee directe depuis exec=admin_tech
                // on initialise  (mais si c'est le validateur, ne rien faire)
                if ($GLOBALS['exec'] == 'valider_xml') return;
-               exec_export_all_args($meta, $rub, _request('gz'));
+               $archive = exec_export_all_args($rub, $gz);
+               $tables = export_all_start($meta, $archive, $rub, $tables);
+               $v = array($gz, $archive, $rub, $tables, 1, 0, $serveur, $save);
+               ecrire_meta($meta, serialize($v), 'non');
+               // rub=$rub sert AUSSI a distinguer cette redirection
+               // d'avec l'appel initial sinon FireFox croit malin
+               // d'optimiser la redirection
+               $url = generer_url_ecrire('export_all',"rub=$rub", true);
+       } else {
+               // appels suivants
+               $export = charger_fonction('export', 'inc');
+               $arg = $export($meta);
+               // Si retour de $export c'est fini; dernier appel pour ramasser
+               // et produire l'en tete du fichier a partir de l'espace public
+               $url = generer_action_auteur("export_all",$arg,'',true, true, true);
        }
-
-       $export = charger_fonction('export', 'inc');
-       $arg = $export($meta);
-       @list(, $gz, $archive, $rub, $version) = explode(',', $arg);
-
-       // quand on sort de $export c'est qu'on a fini
-       export_all_end($meta,$archive);
-
        include_spip('inc/headers');
-       redirige_par_entete(generer_action_auteur("export_all",$arg,'',true, true));
-
+       redirige_par_entete($url);
 }
 
-// L'en tete du fichier doit etre cree a partir de l'espace public
-// Ici on construit la liste des tables pour confirmation.
-// Envoi automatique en cas d'inaction (sauf si appel incorrect $nom=NULL)
-
-function exec_export_all_args($meta, $rub, $gz){
+function exec_export_all_args($rub, $gz){
 
        $gz = $gz ? '.gz' : '';
        $nom = $gz 
@@ -64,27 +75,16 @@ function exec_export_all_args($meta, $rub, $gz){
        :  _request('nom_sauvegarde');
 
        if (!preg_match(',^[\w_][\w_.]*$,', $nom)) $nom = 'dump';
-       $archive = $nom . '.xml' . $gz;
-
-       // si pas de tables listees en post, utiliser la liste par defaut
-       if (!$tables = _request('export'))
-               list($tables,) = base_liste_table_for_dump(lister_tables_noexport());
-
-       export_all_start($meta, $gz, $archive, $rub, _VERSION_ARCHIVE, $tables);
-       
+       return $nom . '.xml' . $gz;
 }
 
+// Ici on construit la liste des tables pour confirmation.
 
-function export_all_start($meta, $gz, $archive, $rub, $version, $tables){
-
-       // determine upload va aussi initialiser l'index "restreint"
-       $maindir = determine_upload();
-       if (!$GLOBALS['visiteur_session']['restreint'])
-               $maindir = _DIR_DUMP;
-       $dir = sous_repertoire($maindir, $meta);
-       $file = $dir . $archive;
+function export_all_start($meta, $archive, $rub, $tables){
 
-       utiliser_langue_visiteur();
+       // si pas de tables listees en post, utiliser la liste par defaut
+       if (!$tables)
+               list($tables,) = base_liste_table_for_dump(lister_tables_noexport());
 
        // en mode partiel, commencer par les articles et les rubriques
        // pour savoir quelles parties des autres tables sont a sauver
@@ -97,45 +97,12 @@ function export_all_start($meta, $gz, $archive, $rub, $version, $tables){
                        unset($tables[$t]);
                        array_unshift($tables, 'spip_articles');
                }
+               if ($t = array_search('spip_documents', $tables)) {
+                       unset($tables[$t]);
+                       array_push($tables, 'spip_documents');
+               }
        }
-       // creer l'en tete du fichier et retourner dans l'espace prive
-       ecrire_fichier($file, export_entete($version),false);
-       $v = serialize(array($gz, $archive, $rub, $tables, 1, 0));
-       ecrire_meta($meta, $v, 'non');
-       include_spip('inc/headers');
-               // rub=$rub sert AUSSI a distinguer cette redirection
-               // d'avec l'appel initial sinon FireFox croit malin
-               // d'optimiser la redirection
-       redirige_url_ecrire('export_all',"rub=$rub");
-
-
-}
-
-function export_all_end($meta, $archive){
-       $dir = base_dump_dir($meta);
-       $file = $dir . $archive;
-       ecrire_fichier($file, export_enpied(),false,false);
+       return $tables;
 }
 
-// http://doc.spip.org/@export_entete
-function export_entete($version_archive)
-{
-       return
-"<" . "?xml version=\"1.0\" encoding=\"".
-$GLOBALS['meta']['charset']."\"?".">\n" .
-"<SPIP
-       version=\"" . $GLOBALS['spip_version_affichee'] . "\"
-       version_base=\"" . $GLOBALS['spip_version_base'] . "\"
-       version_archive=\"" . $version_archive . "\"
-       adresse_site=\"" .  $GLOBALS['meta']["adresse_site"] . "\"
-       dir_img=\"" . _DIR_IMG . "\"
-       dir_logos=\"" . _DIR_LOGOS . "\"
->\n";
-}
-
-
-// production de l'entete du fichier d'archive
-// http://doc.spip.org/@export_enpied
-function export_enpied () { return  "</SPIP>\n";}
-
 ?>
index f0e2c81..05a98cc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -18,11 +18,16 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  */
 function exec_fond_dist(){
 
+       exec_fond_args(_request('exec'));
+}
+
+function exec_fond_args($exec){
+
+       $fond = trim(recuperer_fond("prive/exec/$exec", $_REQUEST));
        // pas d'autorisation
-       // c'est au fond de les gerer avec #AUTORISER, et de renvoyer un fond vide le cas echeant
+       // c'est au fond de les gerer avec #AUTORISER,
+       // et de renvoyer un fond vide le cas echeant
        // qui declenchera un minipres acces interdit
-       $exec = _request('exec');
-       $fond = trim(recuperer_fond("prive/exec/$exec",$_REQUEST));
        if (!$fond) {
                include_spip('inc/minipres');
                echo minipres();
index 97a1af9..66ba502 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8d0bbbd..3ad1b9f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f9fe437..541683b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 591c9d2..5195d52 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b41c264..141dae4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -28,7 +28,6 @@ include_spip('inc/headers');
  *
  */
 
-
 // Restauration d'une base. Comme ca peut etre interrompu pour cause
 // de Timeout, un javascript relance automatiquement (cf inc/import.php)
 // Comme il peut relancer une action qui vient de se terminer,
@@ -38,60 +37,68 @@ include_spip('inc/headers');
 // http://doc.spip.org/@exec_import_all_dist
 function exec_import_all_dist()
 {
+       // permettre l'appel en GET
+       if (!$_POST) $_POST = $_GET;
        $archive=_request('archive');
        if (!strlen($archive)) {
                $_POST['archive'] = $archive = _request('archive_perso');
        }
+       exec_import_all_args($archive);
+}
 
-       // si on arrive ici en debut d'operation
+function exec_import_all_args($archive)
+{
        if ($archive) {
+               // On arrive ici en debut d'operation
+               // Est-ce une fusion ou un ecrasement ?
+               $insert = _request('insertion'); 
+               if (!$insert AND !autoriser('detruire'))
+                       export_all_abort();
                $dir = import_queldir();
                $_POST['dir'] = $dir;
                // voir si un message d'avertissement est necessaire
                $commentaire = verifier_sauvegarde($dir . $archive);
-
-               // est-ce une fusion de base au lieu d'un ecrasement ?
-               $insert = _request('insertion'); 
-       }
-       // sinon, si on a bien la meta qui donne l'etat d'avancement
-       // on est en cours d'operation
-       elseif (isset($GLOBALS['meta']['import_all'])) {
-               $request = @unserialize($GLOBALS['meta']['import_all']);
+       } else {
+               // sinon, si on a bien la meta qui donne l'etat d'avancement
+               // on est en cours d'operation
                // Tester si l'archive est toujous la:
                // ca sert pour forcer a sortir d'une restauration inachevee
-               if (is_readable($request['dir'] . $request['archive'])) {
+
+               if (!isset($GLOBALS['meta']['import_all'])
+               OR (!$request = @unserialize($GLOBALS['meta']['import_all']))
+               OR (!is_readable($request['dir'] . $request['archive']))) {
+                       // on ne sait pas quoi importer, il faut sortir de la
+                       export_all_abort();
+               }
                        $archive = $request['archive'];
                        $insert = $request['insertion'];
                        $commentaire = '';
-               }
        }
-
-       if ($archive) {
-         // il faut changer cette chaine depuis qu'on fait aussi de la fusion
-         // _T('info_restauration_sauvegarde', 
-               $action = _T($insert
+       $action = _T($insert
                             ? 'info_restauration_sauvegarde_insert' 
                             : 'info_restauration_sauvegarde',
                             array('archive' => $archive));
-               $admin = charger_fonction('admin', 'inc');
-               echo $admin('import_all', $action, $commentaire, !$insert);
-       }
-       // on ne sait pas quoi importer, il faut sortir de la
-       // sauf s'il s'agit du validateur (a ameliorer)
-       elseif (_request('exec') <> 'valider_xml')  {
-               include_spip('base/import_all');
-               import_all_fin(array());
-               include_spip('inc/import');
-               detruit_restaurateur();
-               effacer_meta('admin');
-               // et verifier la session
-               include_spip('inc/auth');
-               if (!$auteur = auth_retrouver_login($GLOBALS['visiteur_session']['login'])
-                       OR $auteur['id_auteur']!=$GLOBALS['visiteur_session']['id_auteur'])
+       $admin = charger_fonction('admin', 'inc');
+       echo $admin('import_all', $action, $commentaire, !$insert);
+}
+
+function export_all_abort()
+{
+       // evacuer la fausse erreur du cas du validateur en boucle.
+       if (_request('exec') == 'valider_xml')  return;
+       include_spip('base/import_all');
+       import_all_fin(array());
+       include_spip('inc/import');
+       detruit_restaurateur();
+       effacer_meta('admin');
+       // et verifier la session
+       include_spip('inc/auth');
+       $login = auth_retrouver_login($GLOBALS['visiteur_session']['login']);
+       $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login));
+       if ($GLOBALS['visiteur_session']['id_auteur'] != $id_auteur)
                        auth_deloger();
-               else
+       else
                        redirige_url_ecrire();
-       }
 }
 
 // http://doc.spip.org/@import_queldir
index 6295c4e..7c9d4d6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 39c66b7..859f041 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1c426f3..7abfd23 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 662b874..857aee2 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ac4a50b..818740b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index aa9ce41..c218475 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3eea00a..e91d1d6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a03cdb8..fd43007 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 40e450e..a83853c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6a91b77..d7b893a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9789895..ef184ec 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index aac7ca2..35c7848 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index dc3e31a..6cec8fb 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2fe5e80..197f03b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e86a84c..6df6e37 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2c060aa..149ab84 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b8b895d..581721e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 06c583c..fea89f4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b2bd356..a2a13dc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0a992b3..2cc538d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index eae46fa..12d29f4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b845958..49b959b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4fd3570..c40b393 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8afbd33..4791743 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 90599b3..2f12218 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8ff88fe..d795193 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index be0a3e6..df0aed5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9a61d56..900cf9e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c46b36d..802a3c5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4dd841c..9beae99 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3be36b9..710c7f0 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 36a94ad..854d1e9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a27bdbd..d3fe2ef 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -47,21 +47,17 @@ function exec_sites_args($id_syndic)
 // http://doc.spip.org/@afficher_site
 function afficher_site($id_syndic, $id_rubrique, $nom_site, $row){
 
-       global $spip_lang_left,  
-$spip_lang_right;
+       global $spip_lang_right;
 
        $cherche_mot = _request('cherche_mot');
        $select_groupe = _request('select_groupe');
        $id_secteur = $row["id_secteur"];
        $url_site = $row["url_site"];
        $url_syndic = $row["url_syndic"];
-       $descriptif = $row["descriptif"];
        $syndication = $row["syndication"];
        $statut = $row["statut"];
        $date_heure = $row["date"];
        $date_syndic = $row['date_syndic'];
-       $mod = $row['moderation'];
-       $extra=$row["extra"];
 
        $flag_administrable = autoriser('modifier','site',$id_syndic);
        $flag_editable = ($flag_administrable OR ($GLOBALS['meta']["proposer_sites"] > 0 AND ($statut == 'prop')));
@@ -219,8 +215,7 @@ function options_moderation($row) {
        $moderation = $row['moderation'];
        if ($moderation != 'oui') $moderation='non';
 
-       $res = '';
-       $res .= "<div style='text-align: ".$GLOBALS['spip_lang_left']."'>".
+       $res = "<div style='text-align: ".$GLOBALS['spip_lang_left']."'>".
                  _T('syndic_choix_moderation')
                . "<div style='padding-$spip_lang_left: 40px;'>"
                . afficher_choix('moderation', $moderation,
@@ -284,15 +279,6 @@ function choix_feed($id_syndic, $id_rubrique, $nom_site, $row) {
        if (!preg_match(',^\s*select: (.*),', $row['url_syndic'], $regs))
                return '';
 
-       $url_site = $row["url_site"];
-       $descriptif = $row["descriptif"];
-       $statut = $row["statut"];
-
-       $date_heure = $row["date"];
-       $date_syndic = $row['date_syndic'];
-       $mod = $row['moderation'];
-       $extra=$row["extra"];
-
        $res = "";
 
        foreach (array('id_rubrique', 'nom_site', 'url_site', 'descriptif', 'statut')   as $var) {
index 8878bed..017c68a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cbaac0b..5835153 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 11dc777..09c9473 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -72,10 +72,9 @@ function statistiques_lang_ok()
 
        $result = sql_select("lang, SUM(".$critere.") AS cnt", "spip_articles", "statut='publie' ", "lang");
                
-       echo "\n<table cellpadding='2' cellspacing='0' border='0' width='100%' style='border: 1px solid #aaaaaa;'>";
        $ifond = 1;
-               
        $visites_abs = 0;
+       $res = '';
        while ($row = sql_fetch($result)) {
 
                $lang = $row['lang'];
@@ -92,23 +91,24 @@ function statistiques_lang_ok()
                                        $couleur="eeeeee";
                                }
        
-                               echo "\n<tr style='background-color: $couleur'>";
+                               $res .= "\n<tr style='background-color: $couleur'>";
                                $dir=lang_dir($lang,'',' dir="rtl"');
-                               echo "<td style='width: 100%; border-bottom: 1px solid #cccccc;'><span class='verdana2'$dir><span style='float: $spip_lang_right;'>$pourcent%</span>".traduire_nom_langue($lang)."</span></td>";
+                               $res .= "<td style='width: 100%; border-bottom: 1px solid #cccccc;'><span class='verdana2'$dir><span style='float: $spip_lang_right;'>$pourcent%</span>".traduire_nom_langue($lang)."</span></td>";
                                
-                               echo "<td style='border-bottom: 1px solid #cccccc;'>";
-                               echo "\n<table cellpadding='0' cellspacing='0' border='0' width='".($taille+5)."'>";
-                               echo "\n<tr><td style='align:$spip_lang_right; background-color: #eeeeee; border: 1px solid #999999; white-space: nowrap;'>";
-                               if ($visites_abs > 0) echo "<img src='" . chemin_image('rien.gif') . "' width='$visites_abs' height='8' alt=' ' />";
-                               if ($visites>0) echo "<img src='" . chemin_image('rien.gif') . "' class='couleur_langue' style='border: 0px;' width='$visites' height='8' alt=' ' />";
-                               echo "</td></tr></table>\n";
+                               $res .= "<td style='border-bottom: 1px solid #cccccc;'>";
+                               $res .= "\n<table cellpadding='0' cellspacing='0' border='0' width='".($taille+5)."'>";
+                               $res .= "\n<tr><td style='align:$spip_lang_right; background-color: #eeeeee; border: 1px solid #999999; white-space: nowrap;'>";
+                               if ($visites_abs > 0) $res .= "<img src='" . chemin_image('rien.gif') . "' width='$visites_abs' height='8' alt=' ' />";
+                               if ($visites>0) $res .= "<img src='" . chemin_image('rien.gif') . "' class='couleur_langue' style='border: 0px;' width='$visites' height='8' alt=' ' />";
+                               $res .= "</td></tr></table>\n";
        
-                               echo "</td>";
-                               echo "</tr>";
+                               $res .= "</td>";
+                               $res .= "</tr>";
                                $visites_abs += $visites;
                }
        }
-       echo "</table>\n";
+       if ($res)
+               echo "\n<table cellpadding='2' cellspacing='0' border='0' width='100%' style='border: 1px solid #aaaaaa;'>", $res, "</table>\n";
 
 
 //echo "<p><span class='verdana1 spip_medium'>"._T('texte_signification')."</span>";
index 73f03c3..7803e41 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -66,8 +66,8 @@ function exec_statistiques_referers_dist()
                echo join("</li><li>\n", $res);
                echo "</li></ul>";
                echo $plus;
+               echo "</div><br />";
        }
-       echo "</div><br />";
 
        echo fin_gauche(), fin_page();
        }
index fc44293..4bc73c4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a85060d..6fc0c95 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3f5be0e..ab14233 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index d10f85e..5a07e57 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1501b8e..d00e6ac 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 584f6a5..9d7bc15 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ede9be5..f142e22 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -35,7 +35,7 @@ function exec_valider_xml_dist()
 // http://doc.spip.org/@valider_xml_ok
 function valider_xml_ok($url, $req_ext, $limit, $rec)
 {
-       $url = urldecode($url);
+       $url = urldecode(trim($url));
        $rec = !$rec ? false : array();
        if (!$limit) $limit = 200;
        $titre = _T('analyse_xml');
@@ -45,7 +45,6 @@ function valider_xml_ok($url, $req_ext, $limit, $rec)
                $texte = $bandeau = $err = '';
        } else {
                include_spip('inc/distant');
-
                if (is_dir($url)) {
                        $dir = (substr($url,-1,1) === '/') ? $url : "$url/";
                        $ext = !preg_match('/^[.*\w]+$/', $req_ext) ? 'php' : $req_ext;
@@ -56,13 +55,15 @@ function valider_xml_ok($url, $req_ext, $limit, $rec)
                        }
                        if ($files) {
                                $res = valider_dir($files, $ext, $url);
-                               list($err, $res) = valider_resultats($res, $ext === 'html');
-                               $err = ' (' . $err . '/' . count($files) .')';
+                               $mode = (($ext === 'html') AND substr_count($dir, '/') <= 1);
+                               list($err, $terr, $res) = valider_resultats($res, $mode);
+                               $err = '<br /><h2>' . $terr . " " . _T('erreur_texte') . " ($err/" . count($files) .')</h2>';
+                               $res = $err . $res;
                        } else {
                                $res = _T('texte_vide');
                                $err = '';
                        }
-                       $bandeau = $dir . '*' . $ext . $err;
+                       $bandeau = $dir . '*' . $ext ;
                } else {
                        if (preg_match('@^((?:[.]/)?[^?]*)[?]([0-9a-z_]+)=([^&]*)(.*)$@', $url, $r)) {
                          list(,$server, $dir, $script, $args) = $r;
@@ -80,8 +81,13 @@ function valider_xml_ok($url, $req_ext, $limit, $rec)
                        $transformer_xml = charger_fonction('valider', 'xml');
                        $onfocus = "this.value='" . addslashes($url) . "';";
                        if (preg_match(',^[a-z][0-9a-z_]*$,i', $url)) {
-                               $res = $transformer_xml(charger_fonction($url, $dir), $args);
-                               $url_aff = valider_pseudo_url($dir, $script);
+                               if (($dir=='exec') AND (tester_url_ecrire($url) == 'fond')) {
+                                       include_spip('exec/fond');
+                                       $args = array($url, array());
+                                       $url = 'fond_args';
+                               }
+                               $res = valider_script($transformer_xml, $script, $dir, $ext, $args);
+                               $url_aff = $res[3];
                        } else {
                                $res = $transformer_xml(recuperer_page($url));
                                $url_aff = entites_html($url);
@@ -90,7 +96,7 @@ function valider_xml_ok($url, $req_ext, $limit, $rec)
                                list($texte, $err) = emboite_texte($res);
                        }
                        else {
-                               $err = '<h3>' . _T('spip_conforme_dtd') . '</h3>';
+                               $err = '<h3>' . _T('spip_conforme_dtd') . '</h3>x';
                                list($texte, ) = emboite_texte($res);
                        }
 
@@ -100,7 +106,7 @@ function valider_xml_ok($url, $req_ext, $limit, $rec)
                        $bandeau = "<a href='$url_aff'>$url</a>";
                }
        }
-
+       $titre .= ' ' . $url_aff; 
        $commencer_page = charger_fonction('commencer_page', 'inc');
        $debut = $commencer_page($titre);
        $jq = http_script("", 'jquery.js');
@@ -109,7 +115,7 @@ function valider_xml_ok($url, $req_ext, $limit, $rec)
        $onfocus = '<input type="text" size="70" value="' .$url_aff .'" name="var_url" id="var_url" onfocus="'.$onfocus . '" />';
        $onfocus = generer_form_ecrire('valider_xml', $onfocus, " method='get'");
 
-       echo "<h1>", $titre, '<br>', $bandeau, '</h1>',
+       echo "<h1>", $titre, '<br />', $bandeau, '</h1>',
          "<div style='text-align: center'>", $onfocus, "</div>",
          $res,
          fin_page();
@@ -118,7 +124,7 @@ function valider_xml_ok($url, $req_ext, $limit, $rec)
 // http://doc.spip.org/@valider_resultats
 function valider_resultats($res, $mode)
 {
-       $i = $j = 0;
+       $i = $j = $k = 0;
        $table = '';
        rsort($res);
        foreach($res as $l) {
@@ -133,7 +139,7 @@ function valider_resultats($res, $mode)
                $err = (!intval($nb)) ? '' : 
                  ($erreurs[0][0] . ' ' . _T('ligne') . ' ' .
                   $erreurs[0][1] .($nb==1? '': '  ...'));
-               if ($err) $j++;
+               if ($err) {$j++; $k+= $nb;}
                $h = $mode
                ? ($appel . '&var_mode=debug&var_mode_affiche=validation')
                : generer_url_ecrire('valider_xml', "var_url=" . urlencode($appel));
@@ -143,10 +149,10 @@ function valider_resultats($res, $mode)
                . "<td style='text-align: right$color'>$texte</td>"
                . "<td style='text-align: right'>$temps</td>"
                . "<td style='text-align: left'>$err</td>"
-               . "<td>$script</td>"
-               . "<td><a href='$h'>$appel</a></td>";
+               . "<td><a href='$h' title='$appel'>$script</a></td>";
        }
-       return array($j, "<table class='spip'>"
+
+       return array($j, $k, "<table class='spip' width='95%'>"
          . "<tr><th>" 
          . _T('erreur_texte')
          . "</th><th>" 
@@ -154,48 +160,46 @@ function valider_resultats($res, $mode)
          . "</th><th>"
          . _T('zbug_profile', array('time' =>''))
          . "</th><th>"
-         . _T('message')
-         . "</th><th>Page</th><th>args"
+         . _T('public:message')
+         . "</th><th>"
+         . _T('ecrire:info_url')
          . "</th></tr>"
          . $table
-                    . "</table>");
+         . "</table>");
 }
 
 // http://doc.spip.org/@valider_script
-function valider_script($transformer_xml, $script, $dir, $ext)
+function valider_script($transformer_xml, $script, $dir, $ext, $args=true)
 {
        $script = basename($script, '.php');
        $dir = basename($dir);
        $f = charger_fonction($script, $dir, true);
 // ne pas se controler soi-meme ni l'index du repertoire ni un fichier annexe
+
        if ($script == _request('exec') OR $script=='index' OR !$f)
-               return array('/', 0, '', $script,''); 
+               return array(0, array(), $script,''); 
 
-       list($texte, $err) = $transformer_xml($f, true);
+       list($texte, $err) = $transformer_xml($f, $args);
        $appel = '';
        
        // s'il y a l'attribut minipres, le test est non significatif
-       // le script necessite peut-etre des arguments, on lui en donne,
-       // en appelant la fonction _args associee si elle existe
-       // Si ca ne marche toujours pas, les arguments n'Ă©taient pas bons
-       // ou c'est une authentification pour action d'administration;
-       // tant pis, on signale le cas par un resultat negatif
-
-       if (strpos($texte, "id='minipres'")) {
-               if (!$g = charger_fonction($script . '_args', $dir, true)) {
-                       $res = 0 - strlen($res);
-               } else {
-                       $args = array(1, 'id_article', 1);
-                       list($texte, $err) = $transformer_xml($g, $args);
-                       $appel = 'id_article=1&type=id_article&id=1';
-                       if (strpos($texte, "id='minipres'")) {
-                               $res = 0 - strlen($texte);
-                       } else $res = strlen($texte);
-               }
-       } else $res = strlen($texte);
+       // le script necessite peut-etre des arguments.
+       // On regarde alors s'il existe une fonction de meme nom
+       // mais avec "_args" au bout:
+       // elle est censee recevoir les valeurs de $_REQUEST  et ne pas faire
+       // les controles d'autorisation (fait par la fonction principale)
+       // Si ou on l'appelle avec des arguments arbitraires;
+       // si nouvel echec on abandonne:
+       // que faire contre l'absence de reflexivite et de typage de ce fichu PHP
 
+       if (strpos($texte, "id='minipres'")
+       AND ($g = charger_fonction($script . '_args', $dir, true))) {
+               $args = array(1, 'id_article', 1, 0);
+               list($texte, $err) = $transformer_xml($g, $args);
+               $appel = 'id_article=1&type=id_article&id=1';
+       }
        $appel = valider_pseudo_url($dir, $script, $appel);
-       return array(count($err), $res, $err, $script, $appel);
+       return array($texte, $err, $script, $appel);
 }
 
 // http://doc.spip.org/@valider_pseudo_url
@@ -213,9 +217,9 @@ function valider_skel($transformer_xml, $file, $dir, $ext)
 {
        if (!lire_fichier ($file, $text)) return array('/', '/', $file,''); 
        if (!strpos($text, 'DOCTYPE')) {
-               preg_match(",Content[-]Type: *\w+/(\S)+,", $text, $r);
+               preg_match(",Content[-]Type:\s*[^/]+/([^ ;]+),", $text, $r);
                if ($r[1] === 'css' OR $r[1] === 'plain')
-                       return array('/', 'DOCTYPE?', $file,'');
+                 return array(0, array(), $file,'');
        }
 
        if ($ext != 'html') {
@@ -225,21 +229,21 @@ function valider_skel($transformer_xml, $file, $dir, $ext)
                $script = $file;
        } else {
                $script = basename($file,'.html');
-               // pas de validation solitaire pour les squelettes internes, a revoir.
+               // les squelettes en sous-repertoire sont problematiques,
+               // traitons au moins le cas prive/exec
                if (substr_count($dir, '/') <= 1) {
                        $url = generer_url_public($script, $contexte);
-               } else  $url = '';
+               } else  $url = valider_pseudo_url(basename($dir), basename($file, '.html'), $contexte);
                $composer = charger_fonction('composer', 'public');
                list($skel_nom, $skel_code) = $composer($text, 'html', 'html', $file);
 
                spip_log("compilation de $file en " . strlen($skel_code) .  " octets de nom $skel_nom");
-               if (!$skel_nom) return array('/', '/', $file,''); 
+               if (!$skel_nom) return array('/', 0, $file,''); 
                $contexte = valider_contexte($skel_code, $file);
                $page = $skel_nom(array('cache'=>''), array($contexte));
        }
        list($texte, $err) = $transformer_xml($page['texte']);
-       $res = strlen($texte);
-       return array(count($err), $res, $err, $script, $url);
+       return array($texte, $err, $script, $url);
 }
 
 // Analyser le code pour construire un contexte plausible complet
@@ -290,11 +294,19 @@ function valider_dir($files, $ext, $dir)
        $res = array();
        $transformer_xml = charger_fonction('valider', 'xml');
        $valideur = $ext=='php' ? 'valider_script' : 'valider_skel' ;
+       include_spip('public/assembler');
        foreach($files as $f) {
                spip_timer($f);
                $val = $valideur($transformer_xml, $f, $dir, $ext);
+               // Ne pas saturer la memoire, donner juste la taille de la page
+               // avec un nombre negatif quand c'est un message d'erreur
+               if (is_string($val[0])) {
+                       $n = strlen($val[0]);
+                       $val[0] = strpos($val[0], "id='minipres'") ? (0-$n):$n;
+               }
                $n = spip_timer($f); 
                $val[]= $n;
+               array_unshift($val, count($val[1]));
                spip_log("validation de $f en $n secondes");
                $res[]= $val;
        }
index f29f40f..69d9d6a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index de83943..d47a9ea 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e0f6026..f8b4b9b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index dd0629e..53c0ca2 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 76548ad..8f0f9d7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a30a7c4..2aaa434 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 074a59b..72a303b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ae5d93a..ada4926 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 29fee84..9b13dc7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e668917..78082f9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -21,11 +21,12 @@ function generer_action_auteur($action, $arg, $redirect="", $mode=false, $att=''
 }
 
 // http://doc.spip.org/@redirige_action_auteur
-function redirige_action_auteur($action, $arg, $ret, $gra='', $mode=false, $atts='') {
+function redirige_action_auteur($action, $arg, $ret, $gra='', $mode=false, $atts='', $public=false) {
 
-       $r = _DIR_RESTREINT . generer_url_ecrire($ret, $gra, true, true);
+       $r = ($public ? _DIR_RESTREINT_ABS : _DIR_RESTREINT) .
+         generer_url_ecrire($ret, $gra, true, true);
 
-       return generer_action_auteur($action, $arg, $r, $mode, $atts);
+       return generer_action_auteur($action, $arg, $r, $mode, $atts, $public);
 }
 
 // http://doc.spip.org/@redirige_action_post
index e6b0384..2abc1b4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -172,7 +172,7 @@ function copy_request($script, $suite, $submit='')
         include_spip('inc/filtres');
        foreach($_POST as $n => $c) {
          if (($n != 'fichier') AND !is_array($c))
-               $suite .= "\n<input type='hidden' name='$n' value='" .
+               $suite .= "\n<input type='hidden' name='".htmlspecialchars($n)."' value='" .
                  entites_html($c) .
                  "'  />";
        }
index 74bdabb..0df109a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -16,7 +16,7 @@ $GLOBALS['my_sites']=array();
 
 // http://doc.spip.org/@icone_table
 function icone_table($type){
-       $derog = array('document'=> 'doc-24.gif', 'mot'=>'mot-cle-24.gif','syndic_article'=>'site-24.gif', 'message' => 'messagerie-24.gif', 'groupes_mot'=>'mot-cle-24.gif');
+  $derog = array('document'=> 'doc-24.gif', 'mot'=>'mot-cle-24.gif','syndic_article'=>'site-24.gif', 'message' => 'messagerie-24.gif', 'groupes_mot'=>'mot-cle-24.gif', 'signature' => 'suivi-petition-24.gif');
        if (isset($derog[$type]))
                return $derog[$type];
        return "$type-24.gif";
@@ -197,7 +197,7 @@ function inc_afficher_objets_dist($type, $titre,$requete,$formater='', $force=fa
 
        $presenter_liste = charger_fonction('presenter_liste', 'inc');
        $tmp_var = 't_' . substr(md5(join('', $requete)), 0, 4);
-       $styles = array(array('arial11', 7), array('arial11'), array('arial1'), array('arial1'), array('arial1 centered', 100), array('arial1', 38));
+       $styles = array(array('arial11', 7), array('arial11'), array('arial1'), array('arial1'), array('arial1 centered', 100), array('arial1', 42));
 
        $tableau = array(); // ne sert pas ici
        return $presenter_liste($requete, $skel, $tableau, $arg, $force, $styles, $tmp_var, $titre, icone_table($type));
index 6cf5d70..c686ad6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -23,6 +23,8 @@ include_spip('inc/texte'); // inclut inc_filtre
 /// ceux-ci apparaissent TOUJOURS dans cet ordre 
 
 define('DEFAUT_D_ECHELLE',120); # 1 pixel = 2 minutes
+define('DEFAUT_DECALE', 4); # marge gauche en EM
+define('DEFAUT_TAILLE_HEURE', 0.7); # marge gauche en EM
 
 define('DEFAUT_PARTIE_M', "matin");
 define('DEFAUT_PARTIE_S', "soir");
@@ -87,6 +89,16 @@ function calendrier_args_date($script, $annee, $mois, $jour, $type, $finurl) {
        return $script . $finurl;
 }
 
+function calendrier_args_time($time, $script, $type, $fin='')
+{
+       if (!is_numeric($time)) $time = strtotime($time);
+       $jour = date("d",$time);
+       $mois = date("m",$time);
+       $annee = date("Y",$time);
+
+       return calendrier_args_date($script, $annee, $mois, $jour, $type, $fin);
+}
+
 /// utilise la precedente pour produire une balise A avec tous les accessoires
 
 // http://doc.spip.org/@calendrier_href
@@ -101,12 +113,7 @@ function calendrier_href($script, $annee, $mois, $jour, $type, $fin, $ancre, $im
                : '';
        }
        $d = mktime (1,1,1, $mois, $jour, $annee);
-       $jour = date("d",$d);
-       $mois = date("m",$d);
-       $annee = date("Y",$d);
-
-       $h = calendrier_args_date($script, $annee, $mois, $jour, $type, $fin);
-       $url = $h . ($ancre ? "#$ancre" : '');
+       $url = calendrier_args_time($d, $script, $type, $fin) . ($ancre ? "#$ancre" : '');
        $c = ($class ? " class=\"$class\"" : '');
        
        if ($img) $clic =  http_img_pack($img, ($alt ? $alt : $titre), $c);
@@ -365,7 +372,8 @@ function http_calendrier_mois_sept($annee, $mois, $premier_jour, $dernier_jour,$
                    }
                }
                $fond .= $ligne ? "bordure_$spip_lang_right" :'bordure_double';
-               $ligne .= "\n<td class='$fond'>$res</td>";
+               $d = sprintf('D%4d-%02d-%02d', $annee_en_cours,$mois_en_cours,$jour);
+               $ligne .= "\n<td id='$d' class='$fond'>$res</td>";
        }
        return  $total . ($ligne ? "\n<tr>$ligne</tr>" : '');
 }
@@ -426,7 +434,7 @@ function http_calendrier_semaine($annee, $mois, $jour, $echelle, $partie_cal, $s
                              $evenements[$d] = !$evenements[$d] ? $r : array_merge($evenements[$d], $r);
                        $evt = http_calendrier_mois_sept($annee, $mois, $init, $init+ 6, $evenements, $script, $finurl, $ancre);
                }
-       } else $evt = "<tr><td>$evt</td></tr>";
+       } else $evt = "<tr><td >$evt</td></tr>";
 
        $id = ($ancre ? $ancre : 'agenda') . "-nav";
 
@@ -506,13 +514,14 @@ function http_calendrier_semaine_sept($annee, $mois, $jour, $echelle, $partie_ca
        $total = '';
 
        for ($j=$jour; $j<$jour+7;$j++){
-               $v = mktime(0,0,0,$mois, $j, $annee);
-               $v = http_calendrier_ics($annee, $mois, $j, $echelle, $partie_cal, $largeur, $evt, '', ( (date("w",$v)==0 && test_espace_prive()) ? 
+               $d = mktime(0,0,0,$mois, $j, $annee);
+               $v = http_calendrier_ics($annee, $mois, $j, $echelle, $partie_cal, $largeur, $evt, '', ( (date("w",$d)==0 && test_espace_prive()) ? 
                          " jour_dimanche" :
-                         ((date("Ymd", $v) == $today) ? 
+                         ((date("Ymd", $d) == $today) ? 
                           " jour_encours" :
                           " jour_gris") ) ) ;
-               $total .= "\n<td>$v</td>";
+               $d = sprintf('D%4d-%02d-%02d', $annee,$mois,$j);
+               $total .= "\n<td id='$d'>$v</td>";
        }
        return "\n<tr class='heure'>$total</tr>";
 }
@@ -589,10 +598,10 @@ function http_calendrier_jour_sept($annee, $mois, $jour, $echelle,  $partie_cal,
          $mil = http_calendrier_sept_un($annee, $mois, $jour, $evenements, $script, '', $ancre);
          $droite = (!test_espace_prive() ? "" :http_calendrier_sept_un($annee, $mois, $jour+1,$evenements, $script, '', $ancre));
        }
-
+       $d = sprintf('D%4d-%02d-%02d', $annee,$mois,$jour);
        if (!test_espace_prive())
-               return "<tr class='calendrier-3jours'><td colspan='5'>$mil</td></tr>";
-       $gauche = !$gauche ? "<td colspan='3'>" : "<td>$gauche</td><td></td><td>";
+               return "<tr class='calendrier-3jours'><td id='$d' colspan='5'>$mil</td></tr>";
+       $gauche = !$gauche ? "<td colspan='3' id='$d'>" : "<td>$gauche</td><td></td><td id='$d'>";
        return  "<tr class='calendrier-3jours'>$gauche$mil</td><td></td><td>$droite</td></tr>";
 }
 
@@ -607,20 +616,21 @@ function http_calendrier_jour_sept($annee, $mois, $jour, $echelle,  $partie_cal,
 function http_calendrier_ics($annee, $mois, $jour, $echelle, $partie_cal, $largeur, $evt, $style='', $class='') {
        global $spip_lang_left;
 
-       if (is_array($GLOBALS['calendrier_partie'][$partie_cal]))
-         list($debut, $fin) = $GLOBALS['calendrier_partie'][$partie_cal];
-       elseif (preg_match('/^(\d+)\D(\d+)$/', $partie_cal, $m))
-         list(,$debut, $fin)  = $m;
+       if (is_array($GLOBALS['calendrier_partie'][$partie_cal])) {
+               $debut = $GLOBALS['calendrier_partie'][$partie_cal]['debut'];
+               $fin = $GLOBALS['calendrier_partie'][$partie_cal]['fin'];
+       } elseif (preg_match('/^(\d+)\D(\d+)$/', $partie_cal, $m))
+               list(,$debut, $fin)  = $m;
        else {
                $debut = 7;
                $fin =21;
        }
-       
+
        if ($echelle==0) $echelle = DEFAUT_D_ECHELLE;
 
        list($dimheure, $dimjour, $fontsize, $padding) =
          calendrier_echelle($debut, $fin, $echelle);
-       $size = sprintf("%0.2f", 0.7+(10/$echelle));
+       $size = sprintf("%0.2f", DEFAUT_TAILLE_HEURE+(10/$echelle));
        $style .= "height:${dimjour}px;font-size:${size}em;";
        $date = date("Ymd", mktime(0,0,0,$mois, $jour, $annee));
 
@@ -699,7 +709,8 @@ function http_calendrier_ics_div($evts, $date, $debut, $fin, $dimheure, $dimjour
                $hauteur = calendrier_height ("$heure_debut:$minutes_debut", "$heure_fin:$minutes_fin", $debut, $fin, $dimheure, $dimjour);
 
                if ($bas_prec >= $haut) $decale += 1;
-               else $decale = ($echelle >= 120) ? 4 : 3;
+               else $decale = DEFAUT_DECALE -
+                      (($echelle >= DEFAUT_D_ECHELLE) ? 0 : 1);
                if ($bas > $bas_prec) $bas_prec = $bas;
                        
                $colors = $evenement['CATEGORIES'];
@@ -725,7 +736,7 @@ function http_calendrier_ics_div($evts, $date, $debut, $fin, $dimheure, $dimjour
                        $sum .= "\n<span class='calendrier-attendee $colors'>$perso</span>";
                $sum = pipeline('agenda_rendu_evenement',array('args'=>array('evenement'=>$evenement,'type'=>'ics'),'data'=>$sum));
 
-               $width = ($largeur - 2 * ($padding+1));
+               $width = $largeur - ($padding<<1) - DEFAUT_DECALE;
                $fontsize = sprintf("%0.2f", 1+(10/$echelle));
                $style = "z-index:${i};${spip_lang_left}:${decale}em;top:${haut}px;height:${hauteur}px;width:${width}px;font-size:${fontsize}em;padding:${padding}px;$bordure";
                $total .= "\n<div class='$colors calendrier-evt' style='$style'
@@ -894,17 +905,31 @@ function http_calendrier_avec_heure($evenement, $amj)
        return "\n<div class='calendrier-arial10 calendrier-evenement $opacity'>$sum\n</div>\n"; 
 }
 
-/// Gestion du sous-tableau ATTENDEE.
-/// dans les version anterieures, ce n'etait pas un tableau
+/// Gestion du champ ATTENDEE.
+/// On admet un ID ou un mail, ou un tableau de ces choses.
+/// Si c'est un ID, on va chercher le mail dans la table des auteurs, 
+/// a defaut le nom.
+/// Dans les deux cas, si on a bien un mail, on place le pseudo-protocole mailto
 
 function construire_personne_ics($personnes)
 {
-  $r = is_array($personnes) ? $personnes : array($personnes);
-  foreach ($r as $k => $p) {
-    if ($a = email_valide($p) AND preg_match('/^[^@]+/', $a, $m))
-      $r[$k] = "<a href='mailto:$a'>".preg_replace('/[.]/', ' ', $m[0]). "</a>";
-  }
-  return join(' ', $r);
+       $r = is_array($personnes) ? $personnes : array($personnes);
+       foreach ($r as $k => $p) {
+               if (!is_numeric($p)) {
+                       $mail = email_valide($p);
+                       if (preg_match('/^[^@]+/', $mail, $m))
+                               $r[$k] = preg_replace('/[.]/', ' ', $m[0]);
+               } else {
+                       $m = sql_fetsel("email, nom", 'spip_auteurs', "id_auteur=$p");
+                       if ($m) {
+                         $mail = $m['email'];
+                         $r[$k] = $m['nom'] ? $m['nom'] : ($mail ? $mail : $p);
+                       }
+               }
+               if ($mail)
+                       $r[$k] = "<a href='mailto:$mail'>" . $r[$k] . "</a>";
+       }
+       return join(' ', $r);
 }
 
 /// fabrique un agenda sur 3 mois. 
@@ -1506,7 +1531,7 @@ function quete_calendrier_interval_rv($avant, $apres) {
                      $cat = 'calendrier-couleur12';
                    else {
                      $cat = 'calendrier-couleur9';
-                     $auteurs = array_map('array_shift', sql_allfetsel("nom", "spip_auteurs AS A LEFT JOIN spip_auteurs_messages AS L ON L.id_auteur=A.id_auteur", "(L.id_message=$id_message AND (A.id_auteur!=$connect_id_auteur))"));
+                     $auteurs = array_map('array_shift', sql_allfetsel('id_auteur', 'spip_auteurs_messages', "id_message=$id_message AND id_auteur!=$connect_id_auteur"));
                    }
                  }
                }
index 413f91e..9fb211b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -66,21 +66,23 @@ function inc_aider_dist($aide='', $skel='', $env=array()) {
        return aider_icone(generer_url_ecrire("aide_index", $args));
 }
 
-function aider_icone($url)
+function aider_icone($url, $clic= '')
 {
        global $spip_lang, $spip_lang_rtl;
 
-       $t = _T('titre_image_aide');
-
+       if (!$clic) {
+               $t = _T('titre_image_aide');
+               $clic = http_img_pack("aide-12".aide_lang_dir($spip_lang,$spip_lang_rtl).".png",
+                       _T('info_image_aide'),
+                     " title=\"$t\" class='aide'");
+       }
        return "\n&nbsp;<a class='aide'\nhref='"
        .  $url
        . "'\nonclick=\"javascript:window.open(this.href,"
        . "'spip_aide', "
        . "'scrollbars=yes, resizable=yes, width=740, height=580'); "
        . "return false;\">"
-       . http_img_pack("aide-12".aide_lang_dir($spip_lang,$spip_lang_rtl).".png",
-                       _T('info_image_aide'),
-                       " title=\"$t\" class='aide'")
+       . $clic
        . "</a>";
 }
 
index 33902b0..49ec25b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -89,6 +89,7 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode,
 // Documents distants : pas trop de verifications bloquantes, mais un test
 // via une requete HEAD pour savoir si la ressource existe (non 404), si le
 // content-type est connu, et si possible recuperer la taille, voire plus.
+
        if ($mode == 'distant') {
                include_spip('inc/distant');
                if ($a = recuperer_infos_distantes($source)) {
@@ -117,21 +118,10 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode,
                // - interdit a l'upload ?
                // - quelle extension dans spip_types_documents ?
                // - est-ce "inclus" comme une image ?
+               list($nom_envoye, $ext, $titre, $inclus) = corriger_extension_et_nom($nom_envoye, $titrer);
 
-               preg_match(",^(.*)\.([^.]+)$,", $nom_envoye, $match);
-               @list(,$titre,$ext) = $match;
-               // securite : pas de . en dehors de celui separant l'extension
-               // sinon il est possible d'injecter du php dans un toto.php.txt
-               $nom_envoye = str_replace('.','-',$titre).'.'.$ext;
-               if ($titrer) {
-                       $titre = preg_replace(',[[:punct:][:space:]]+,u', ' ', $titre);
-               } else $titre = '';
-               $ext = corriger_extension(strtolower($ext));
-
-               $row = sql_fetsel("inclus", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'");
-
-               if ($row) {
-                       $type_inclus_image = ($row['inclus'] == 'image');
+               if ($inclus !== false) {
+                       $type_inclus_image = ($inclus == 'image');
                        $fichier = copier_document($ext, $nom_envoye, $source);
                } else {
 
@@ -297,6 +287,10 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode,
                        )
                );
 
+               if (strlen($a['fichier']) > 255) {
+                       spip_log("Upload avec nom > 255 : " . $a['fichier']);
+                       return;
+               }
                $id = sql_insertq("spip_documents", $a);
 
                pipeline('post_insertion',
@@ -441,6 +435,29 @@ function traite_svg($file)
        return array($width, $height);
 }
 
+// Regexp synthetisant un titre a partir d'un nom de fichier.
+// Exemple: squelette-de-Mozart-vers-5-ans.jpg => squelette de Mozart vers 5 ans
+define('_REGEXP_TITRER_DOCUMENT', ',[[:punct:][:space:]]+,u');
+
+function corriger_extension_et_nom($nom, $titrer=false)
+{
+       preg_match(",^(.*)\.([^.]+)$,", $nom, $match);
+       @list(,$titre,$ext) = $match;
+       // les navigateur devraient savoir que ceci est mime-type text
+       if (!$ext AND (strtolower($nom) === 'makefile'))
+               $ext = 'txt';
+       // securite : pas de . en dehors de celui separant l'extension
+       // sinon il est possible d'injecter du php dans un toto.php.txt
+       else $nom = str_replace('.','-',$titre).'.'.$ext;
+
+       if ($titrer) {
+         $titre = is_string($titre) ? $titre : preg_replace("%".$titre."%", ' ', $titre ? $titre : $nom);
+       } else $titre = '';
+       $ext = corriger_extension(strtolower($ext));
+       $row = sql_fetsel("inclus", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'");
+       return array($nom, $ext, $titre, $row ? $row['inclus'] : false);
+}
+
 //
 // Corrige l'extension du fichier dans quelques cas particuliers
 // (a passer dans ecrire/base/typedoc)
@@ -456,6 +473,8 @@ function corriger_extension($ext) {
                return 'jpg';
        case 'tiff':
                return 'tif';
+       case 'aif':
+               return 'aiff';
        case 'mpeg':
                return 'mpg';
        default:
@@ -470,18 +489,19 @@ function corriger_extension($ext) {
 function fixer_extension_document($doc) {
        $extension = '';
        $name = $doc['name'];
-       if (preg_match(',[.]([^.]+)$,', $name, $r)
+       if (preg_match(',\.([^.]+)$,', $name, $r)
        AND $t = sql_fetsel("extension", "spip_types_documents",
        "extension=" . sql_quote(corriger_extension($r[1])))) {
                $extension = $t['extension'];
-               $name = preg_replace(',[.][^.]*$,', '', $doc['name']).'.'.$extension;
-       }
-       else if ($t = sql_fetsel("extension", "spip_types_documents",
-       "mime_type=" . sql_quote($doc['type']))) {
-               $extension = $t['extension'];
-               $name = preg_replace(',[.][^.]*$,', '', $doc['name']).'.'.$extension;
+               $name = preg_replace(',\.[^.]*$,', '', $doc['name']).'.'.$extension;
+       } else {
+               // les navigateur devraient savoir que ceci est mime-type text
+               if (strtolower($name) === 'makefile') $doc['type'] = 'txt';
+               if ($t = sql_getfetsel("extension", "spip_types_documents",
+                                "mime_type=" . sql_quote($doc['type']))) {
+                 $name = preg_replace(',\.[^.]*$,', '', $doc['name']).'.'.$t;
+               }
        }
-
        return array($extension,$name);
 }
 
index 03808ca..0fdf235 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index fe4b98b..2f8ff47 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -59,7 +59,7 @@ function inc_auteur_infos_dist($auteur, $new, $echec, $edit, $id_article, $redir
        $contexte = array(
                'icone_retour'=>($retour)?icone_inline(_T('icone_retour'),$retour,"auteur-24.gif","rien.gif",$GLOBALS['spip_lang_left'],false,($editer&$redirect)?"":" onclick=\"jQuery('#auteur_infos_edit').hide();jQuery('#auteur-voir').show();return false;\""):"",
                'redirect'=>$redirect?rawurldecode($redirect):generer_url_ecrire('auteur_infos','id_auteur='.$id_auteur, '&',true),
-               'titre'=>($auteur['nom']?$auteur['nom']:_T('nouvel_auteur')),
+               'titre'=>($auteur['nom']?$auteur['nom']:_T('item_nouvel_auteur')),
                'new'=>$new == "oui"?$new:$id_auteur,
                'config_fonc'=>'auteurs_edit_config',
                'lier_id_article' => $id_article,
index 31cb420..bd6e762 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -48,14 +48,15 @@ function acces_statut($id_auteur, $statut, $bio)
 {
        if ($statut != 'nouveau') return $statut;
        include_spip('inc/filtres');
-       if (!($s = tester_config('', $bio))) return $statut;
+       include_spip('inc/autoriser');
+       if (!autoriser('inscrireauteur', $bio)) return $statut; //i.e. "nouveau"
        include_spip('action/editer_auteur');
-       instituer_auteur($id_auteur,array('statut'=> $s));
+       instituer_auteur($id_auteur,array('statut'=> $bio));
        include_spip('inc/modifier');
        revision_auteur($id_auteur, array('bio'=>''));
        include_spip('inc/session');
-       session_set('statut',$s);
-       return $s;
+       session_set('statut',$bio);
+       return $bio;
 }
 
 // Fonction d'authentification. Retourne:
@@ -220,6 +221,9 @@ function auth_init_droits($row)
        $connect_login = $row['login'];
        $connect_statut = acces_statut($connect_id_auteur, $row['statut'], $row['bio']);
 
+       // on force l'Ă©criture de cette info dans le fichier de session
+       // pour pouvoir rĂ©cupĂ©rer #SESSION{en_ligne} dans les squelettes
+       session_set('en_ligne', $row['en_ligne']);
 
        $GLOBALS['visiteur_session'] = array_merge((array)$GLOBALS['visiteur_session'], $row);
        $r = @unserialize($row['prefs']);
@@ -657,10 +661,11 @@ function lire_php_auth($login, $pw, $serveur=''){
  * @param <type> $re
  * @param <type> $lien
  */
-function ask_php_auth($pb, $raison, $retour, $url='', $re='', $lien='') {
+function ask_php_auth($pb, $raison, $retour='', $url='', $re='', $lien='') {
        @Header("WWW-Authenticate: Basic realm=\"espace prive\"");
        @Header("HTTP/1.0 401 Unauthorized");
        $ici = generer_url_ecrire();
+       $retour = $retour?$retour:_T('icone_retour');
        echo "<b>$pb</b><p>$raison</p>[<a href='$ici'>$retour</a>] ";
        if ($url) {
                echo "[<a href='", generer_url_action('cookie',"essai_auth_http=oui&$url"), "'>$re</a>]";
index 67629f7..da00aca 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -152,8 +152,34 @@ function autoriser_ecrire_dist($faire, $type, $id, $qui, $opt) {
 
 // http://doc.spip.org/@autoriser_previsualiser_dist
 function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt) {
-       return strpos($GLOBALS['meta']['preview'], ",". $qui['statut'] .",")
-               !==false;
+
+       // Le visiteur a-t-il un statut prevu par la config ?
+       if (strpos($GLOBALS['meta']['preview'], ",". $qui['statut'] .",")
+       !==false)
+               return true;
+
+       // Sinon, on regarde s'il a un jeton (var_token) et on lui pose
+       // le cas echeant une session contenant l'autorisation
+       // de l'utilisateur ayant produit le jeton
+       if ($token = _request('var_previewtoken')) {
+               include_spip('inc/session');
+               session_set('previewtoken', $token);
+       }
+
+       // A-t-on un token valable ?
+       if (is_array($GLOBALS['visiteur_session'])
+       AND $token = session_get('previewtoken')
+       AND preg_match('/^(\d+)\*(.*)$/', $token, $r)
+       AND $action = 'previsualiser'
+       AND (include_spip('inc/securiser_action'))
+       AND (
+               $r[2] == _action_auteur($action, $r[1], null, 'alea_ephemere')
+        OR $r[2] == _action_auteur($action, $r[1], null, 'alea_ephemere_ancien')
+       )) {
+               return true;
+       }
+
+       return false;
 }
 
 function autoriser_dater_dist($faire, $type, $id, $qui, $opt) {
@@ -356,6 +382,12 @@ function autoriser_groupemots_creer_dist($faire, $type, $id, $qui, $opt) {
                AND !$qui['restreint'];
 }
 
+function autoriser_auteur_creer_dist($faire, $type, $id, $qui, $opt) {
+       return
+               $qui['statut'] == '0minirezo'
+               AND !$qui['restreint'];
+}
+
 // Autoriser a modifier un groupe de mots $id
 // y compris en ajoutant/modifiant les mots lui appartenant
 // http://doc.spip.org/@autoriser_groupemots_modifier_dist
@@ -573,8 +605,8 @@ function autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt) {
        // ou si les webmestres sont fixes par constante (securite)
        elseif ($opt['webmestre'] AND (defined('_ID_WEBMESTRES') OR !autoriser('webmestre')))
                return false;
-       // et toucher au statut d'un webmestre si il ne l'est pas lui meme
-       elseif ($opt['statut'] AND autoriser('webmestre','',0,$id) AND !autoriser('webmestre'))
+       // et modifier un webmestre si il ne l'est pas lui meme
+       elseif (intval($id) AND autoriser('webmestre','',0,$id) AND !autoriser('webmestre'))
                return false;
        else
                return true;
@@ -679,17 +711,15 @@ function autoriser_modifierurl_dist($faire, $quoi, $id, $qui, $opt) {
 // http://doc.spip.org/@autoriser_rubrique_editermots_dist
 function autoriser_rubrique_editermots_dist($faire,$quoi,$id,$qui,$opts){
        // on recupere les champs du groupe s'ils ne sont pas passes en opt
-       $droit = substr($GLOBALS['visiteur_session']['statut'],1);
        if (!isset($opts['groupe_champs'])){
                if (!$id_groupe = $opts['id_groupe'])
                        return false;
                include_spip('base/abstract_sql');
                $opts['groupe_champs'] = sql_fetsel("*", "spip_groupes_mots", "id_groupe=".intval($id_groupe));
        }
-       $droit = $opts['groupe_champs'][$droit];
 
        return
-               ($droit == 'oui')
+               ($opts['groupe_champs'][substr($qui['statut'],1)] == 'oui')
                AND
                // on verifie que l'objet demande est bien dans les tables liees
                in_array(
@@ -742,6 +772,25 @@ function autoriser_iconifier_dist($faire,$quoi,$id,$qui,$opts){
        return $droit;
 }
 
+// Autorisation des inscriptions libres
+// a l'aide de la liste globale des statuts (tableau mode => nom du mode)
+
+// http://doc.spip.org/@tester_config
+function autoriser_inscrireauteur($faire, $quoi, $id, $qui, $opt){
+
+       switch (array_search($quoi, $GLOBALS['liste_des_statuts'])) {
+
+       case 'info_redacteurs' :
+         return ($GLOBALS['meta']['accepter_inscriptions'] == 'oui');
+
+       case 'info_visiteurs' :
+         return ($GLOBALS['meta']['accepter_visiteurs'] == 'oui' OR $GLOBALS['meta']['forums_publics'] == 'abo');
+
+       default:
+         return false;
+       }
+}
+
 // Deux fonctions sans surprise pour permettre les tests
 // Dire toujours OK
 // http://doc.spip.org/@autoriser_ok_dist
index b6c1828..84b244c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a673576..f81c554 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index fab167e..57d610c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -239,9 +239,11 @@ function chargeur_charger_zip($quoi = array())
        AND array_values($paths[$i]) == array($total))
                $i++;
 
-       $racine = $i
-               ? array_pop(array_keys($paths[$i-1])).'/'
-               : '';
+       $racine = '';
+       if ($i){
+               $racine = array_keys($paths[$i-1]);
+               $racine = array_pop($racine).'/';
+       }
 
        $quoi['remove'] = $racine;
 
index 18f4fba..5a39d03 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1be53e6..73b47fd 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3ac2357..d4beae7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -24,7 +24,8 @@ define('_SPIP_SELECT_RUBRIQUES', 20); /* mettre 100000 pour desactiver ajax */
 // $idem : en mode rubrique = la rubrique soi-meme
 // http://doc.spip.org/@inc_chercher_rubrique_dist
 function inc_chercher_rubrique_dist ($id_rubrique, $type, $restreint, $idem=0, $do='aff') {
-       if (sql_countsel('spip_rubriques')<1)
+       $n = sql_countsel('spip_rubriques');
+       if ($n < 1)
                return '';
 
        // Mode sans Ajax :
@@ -32,7 +33,7 @@ function inc_chercher_rubrique_dist ($id_rubrique, $type, $restreint, $idem=0, $
        // - soit parce qu'il y a peu de rubriques
        if (_SPIP_AJAX < 1
        OR $type == 'breve'
-       OR sql_countsel('spip_rubriques') < _SPIP_SELECT_RUBRIQUES)
+       OR $n < _SPIP_SELECT_RUBRIQUES)
                return selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem);
 
        else return selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem, $do);
@@ -44,7 +45,7 @@ $GLOBALS['selecteur_rubrique'] = 'inc_chercher_rubrique_dist';
 
 // http://doc.spip.org/@style_menu_rubriques
 function style_menu_rubriques($i) {
-       global $browser_name, $browser_version, $spip_lang_left;
+       global $browser_name, $spip_lang_left;
 
        $espace = '';
        if (preg_match(",mozilla,i", $browser_name)) {
@@ -126,7 +127,13 @@ function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem=0) {
        //
 
        include_spip('base/abstract_sql');
-       $q = sql_select("id_rubrique, id_parent, titre, statut, lang, langue_choisie", "spip_rubriques", ($type == 'breve' ?  ' id_parent=0 ' : ''), '', "0+titre,titre");
+       $where = array();
+       if ($type == 'breve')
+               $where[]= ' id_parent=0 ';
+       if (is_array($restreint) AND $restreint)
+               $where[]= sql_in('id_rubrique', $restreint);
+
+       $q = sql_select("id_rubrique, id_parent, titre, statut, lang, langue_choisie", "spip_rubriques", join(' AND ', $where), '', "0+titre,titre");
        while ($r = sql_fetch($q)) {
                if (autoriser('voir','rubrique',$r['id_rubrique'])){
                        // titre largeur maxi a 50
@@ -136,7 +143,6 @@ function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem=0) {
                                $titre .= ' ['.traduire_nom_langue($r['lang']).']';
                        $data[$r['id_rubrique']] = $titre;
                        $enfants[$r['id_parent']][] = $r['id_rubrique'];
-                       if ($id_rubrique == $r['id_rubrique']) $id_parent = $r['id_parent'];
                }
        }
 
@@ -159,8 +165,7 @@ function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem=0) {
 // http://doc.spip.org/@selecteur_rubrique_ajax
 function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0, $do) {
 
-       ## $restreint indique qu'il faut limiter les rubriques affichees
-       ## aux rubriques editables par l'admin restreint... or, ca ne marche pas.
+       ## $restreint, si c'est un tableau, limite les rubriques selectionnables
        ## Pour la version HTML c'est bon (cf. ci-dessus), mais pour l'ajax...
        ## je laisse ca aux specialistes de l'ajax & des admins restreints
        ## note : toutefois c'est juste un pb d'interface, car question securite
@@ -202,7 +207,7 @@ function construire_selecteur($url, $js, $idom, $name, $init='', $id=0)
        . $url
        . "', this.parentNode.nextSibling, this.nextSibling,'',event)\"><img src='"
        . chemin_image($icone)
-       . "'\nstyle='vertical-align: middle;' alt=' ' /></a><img src='"
+       . "'\nstyle='vertical-align: middle;' alt='"._T('titre_image_selecteur')."' /></a><img src='"
        . chemin_image('searching.gif') 
        . "' id='img_"
        .  $idom
index a0a01dc..eb44e51 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -18,7 +18,6 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 
 // http://doc.spip.org/@inc_commencer_page_dist
 function inc_commencer_page_dist($titre = "", $rubrique = "accueil", $sous_rubrique = "accueil", $id_rubrique = "",$menu=true,$minipres=false, $alertes = true) {
-       global $spip_ecran;
        global $connect_id_auteur;
 
        include_spip('inc/headers');
@@ -40,6 +39,10 @@ function init_entete($titre='', $id_rubrique=0, $minipres=false) {
        if (!$nom_site_spip = textebrut(typo($GLOBALS['meta']["nom_site"])))
                $nom_site_spip=  _T('info_mon_site_spip');
 
+       // Pour corriger la position des sous-menus principaux 
+       // (quand intitules sur 2 lignes)
+
+       $js = repercuter_gadgets($id_rubrique);
        $head = "<title>["
                . $nom_site_spip
                . "] " . textebrut(typo($titre)) . "</title>\n"
@@ -47,38 +50,7 @@ function init_entete($titre='', $id_rubrique=0, $minipres=false) {
                . (($c = $GLOBALS['meta']['charset']) ?
                        "; charset=$c" : '')
                . "' />\n"
-               . envoi_link($nom_site_spip,$minipres);
-
-       // anciennement verifForm
-       // et corriger position des sous-menus principaux (quand intitules sur 2 lignes)
-       $head .= '
-       <script type="text/javascript"><!--
-       function calculer_top_bandeau_sec() {
-               
-               var hauteur_max = 0;
-               var hauteur_bouton = 0;
-       
-               $(".boutons_admin a.boutons_admin .icon_texte").each(function(){
-                       hauteur_bouton = parseInt($(this).height());
-                       if (hauteur_bouton > hauteur_max) hauteur_max = hauteur_bouton;
-               });
-               $(".boutons_admin a.boutons_admin .icon_texte").height(hauteur_max);
-       }       
-
-       $(document).ready(function(){
-               verifForm();
-               calculer_top_bandeau_sec();
-               $("#page,#bandeau-principal")
-               .mouseover(function(){
-                       if (typeof(window["changestyle"])!=="undefined") window.changestyle("garder-recherche");
-               });
-       '
-       .
-       repercuter_gadgets($id_rubrique)
-       .'
-       });
-       // --></script>
-       ';
+               . envoi_link($nom_site_spip,$minipres, $js);
 
        return _DOCTYPE_ECRIRE
        . html_lang_attributes()
@@ -139,7 +111,7 @@ function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique='
 
                // couleurs
        $couleurs = charger_fonction('couleurs', 'inc');
-       $items .= "<div id='preferences_couleurs' title='" . attribut_html(_T('titre_changer_couleur_interface')) . "'>";
+       $items .= "<div id='preferences_couleurs'>";
        $items .= $couleurs() . "</div>";
 
        $items .= "</div></li>";
index 8afc223..3f4da79 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -83,7 +83,7 @@ function liste_metas()
                'activer_statistiques' => 'non',
                'activer_captures_referers' => 'non',
 
-               'documents_article' => 'non',
+               'documents_article' => 'oui',
                'documents_rubrique' => 'non',
                'documents_date' => 'non',
                'syndication_integrale' => 'oui',
index 5923bb8..20af0b6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index aa3778f..fe13876 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -102,14 +102,17 @@ onblur="changestyle(\'bandeauinterface\');"';
                        '<a href="'
                          . generer_action_auteur('preferer',"couleur:$key",$ret)
                                . '"'
-                       . ' rel="'.generer_url_public('style_prive','ltr='
+
+                         . ' title="'.generer_url_public('style_prive','ltr='
                                . $GLOBALS['spip_lang_left'] . '&'
                                . inc_couleurs_dist($key)).'"'
                          . $evt
                        .'>'
                        . http_img_pack("rien.gif",
-                                       _T('choix_couleur_interface') . $key,
-                                       "width='8' height='8' style='margin: 1px; background-color: "   . $val['couleur_claire'] . ";'")
+                                        $key,
+                                       "width='8' height='8' style='margin: 1px; background-color: "   . $val['couleur_claire'] . ";'",
+                                       _T('titre_changer_couleur_interface') . " $key"
+)
                        . "</a>";
                }
 
@@ -124,7 +127,7 @@ onblur="changestyle(\'bandeauinterface\');"';
                                $('head>link#cssprivee')
                                .clone()
                                .removeAttr('id')
-                               .attr('href', $(this).attr('rel'))
+                               .attr('href', $(this).attr('title'))
                                .appendTo($('head'));
 
                                $.get($(this).attr('href'));
index fc3d72b..371eba4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 79be679..8c3dd3a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b7c1abf..db35268 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a350e3e..23fa1de 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 24fb56f..852fc03 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -14,34 +14,46 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 
 if (!defined('_INC_DISTANT_VERSION_HTTP')) define('_INC_DISTANT_VERSION_HTTP', "HTTP/1.0");
 if (!defined('_INC_DISTANT_CONTENT_ENCODING')) define('_INC_DISTANT_CONTENT_ENCODING', "gzip");
-if (!defined('_INC_DISTANT_USER_AGENT')) define('_INC_DISTANT_USER_AGENT', 'SPIP-' .$GLOBALS['spip_version_affichee']. " (" .$GLOBALS['home_server']. ")");
+if (!defined('_INC_DISTANT_USER_AGENT')) define('_INC_DISTANT_USER_AGENT', 'SPIP-' . $GLOBALS['spip_version_affichee'] . " (" . $GLOBALS['home_server'] . ")");
 
-//@define('_COPIE_LOCALE_MAX_SIZE',2097152); // poids (inc/utils l'a fait)
-//
-// Cree au besoin la copie locale d'un fichier distant
-// mode = 'test' - ne faire que tester
-// mode = 'auto' - charger au besoin
-// mode = 'modif' - Si deja present, ne charger que si If-Modified-Since
-// mode = 'force' - charger toujours (mettre a jour)
-//
-// Prend en argument un chemin relatif au rep racine, ou une URL
-// Renvoie un chemin relatif au rep racine, ou false
-//
-// http://doc.spip.org/@copie_locale
-function copie_locale($source, $mode='auto') {
+define('_REGEXP_COPIE_LOCALE', ',' . 
+       preg_replace('@^https?:@', 'https?:', $GLOBALS['meta']['adresse_site'])
+       . "/?spip.php[?]action=acceder_document.*file=(.*)$,");
 
-       // si c'est la protection de soi-meme
-       $reg = ',' . $GLOBALS['meta']['adresse_site']
-         . "/?spip.php[?]action=acceder_document.*file=(.*)$,";
+//@define('_COPIE_LOCALE_MAX_SIZE',2097152); // poids (inc/utils l'a fait)
 
-       if (preg_match($reg, $source, $local)) return substr(_DIR_IMG,strlen(_DIR_RACINE)) . urldecode($local[1]);
+/**
+ * Cree au besoin la copie locale d'un fichier distant
+ *
+ *
+ * Prend en argument un chemin relatif au rep racine, ou une URL
+ * Renvoie un chemin relatif au rep racine, ou false
+ *
+ * http://doc.spip.org/@copie_locale
+ *
+ * @param $source
+ * @param string $mode
+ *   'test' - ne faire que tester
+ *   'auto' - charger au besoin
+ *   'modif' - Si deja present, ne charger que si If-Modified-Since
+ *   'force' - charger toujours (mettre a jour)
+ * @param string $local
+ *   permet de specifier le nom du fichier local (stockage d'un cache par exemple, et non document IMG)
+ * @return bool|string
+ */
+function copie_locale($source, $mode='auto') {
 
+       // si c'est la protection de soi-meme, retourner le path
+       if ($mode !== 'force' AND preg_match(_REGEXP_COPIE_LOCALE, $source, $local)) {
+               $source = substr(_DIR_IMG,strlen(_DIR_RACINE)) . urldecode($local[1]);
+               return @file_exists($source) ? $source : false;
+       }
        $local = fichier_copie_locale($source);
        $localrac = _DIR_RACINE.$local;
        $t = ($mode=='force') ? false  : @file_exists($localrac);
 
        // test d'existence du fichier
-       if ($mode == 'test') return $t ? $local : '';
+       if ($mode=='test') return $t ? $local : '';
 
        // si $local = '' c'est un fichier refuse par fichier_copie_locale(),
        // par exemple un fichier qui ne figure pas dans nos documents ;
@@ -49,25 +61,38 @@ function copie_locale($source, $mode='auto') {
        if (!$local) return false;
 
        // sinon voir si on doit/peut le telecharger
-       if ($local == $source OR !preg_match(',^\w+://,', $source)) 
+       if ($local==$source OR !preg_match(',^\w+://,', $source))
                return $local;
 
-       if ($mode=='modif' OR !$t) {
-               $res = recuperer_page($source, $localrac,false,_COPIE_LOCALE_MAX_SIZE, '','',false, $t ? filemtime($localrac) : '');
+       if ($mode=='modif' OR !$t){
+               // passer par un fichier temporaire unique pour gerer les echecs en cours de recuperation
+               // et des eventuelles recuperations concurantes
+               include_spip("inc/acces");
+               $localractmp = "$localrac.".creer_uniqid().".tmp";
+               $res = recuperer_page($source, $localractmp, false, _COPIE_LOCALE_MAX_SIZE, '', '', false, $t ? filemtime($localrac) : '');
+               if ($res) {
+                       // si OK on supprime l'ancien fichier et on renomme
+                       spip_log("copie_locale : recuperation $source sur $localractmp taille $res OK, renommage en $localrac");
+                       spip_unlink($localrac);
+                       @rename($localractmp, $localrac);
+               } else {
+                       // sinon on supprime le fichier temporaire qui a echoue et qui est sans doute corrompu...
+                       spip_log("copie_locale : Echec recuperation $source sur $localractmp, fichier supprime",_LOG_INFO_IMPORTANTE);
+                       spip_unlink($localractmp);
+               }
                if (!$res) return $t ? $local : false;
-#              spip_log ('ecrire copie locale '.$localrac." taille $res");
-                       
+
                // pour une eventuelle indexation
                pipeline('post_edition',
-                               array(
-                                       'args' => array(
-                                               'operation' => 'copie_locale',
-                                               'source' => $source,
-                                               'fichier' => $local
-                                       ),
-                                       'data' => null
-                               )
-                       );
+                       array(
+                               'args' => array(
+                                       'operation' => 'copie_locale',
+                                       'source' => $source,
+                                       'fichier' => $local
+                               ),
+                               'data' => null
+                       )
+               );
        }
 
        return $local;
@@ -86,34 +111,34 @@ function prepare_donnees_post($donnees, $boundary = '') {
                $donnees = str_replace("\r\n","\n",$donnees);
                $donnees = str_replace("\r","\n",$donnees);
                // un double retour a la ligne signifie la fin de l'entete et le debut des donnees
-               $p = strpos($donnees,"\n\n");
-       if ($p!==FALSE){
-               $entete = str_replace("\n","\r\n",substr($donnees,0,$p+1));
-               $donnees = substr($donnees,$p+2);
-       }
-               $chaine = str_replace("\n","\r\n",$donnees);
-  }
-  else {
-         /* boundary automatique */
-         // Si on a plus de 500 octects de donnees, on "boundarise"
-         if($boundary === '') {
-           $taille = 0;
-           foreach ($donnees as $cle => $valeur) {
-                       if (is_array($valeur)) {
-                               foreach ($valeur as $val2) {
-                 $taille += strlen($val2);
-               }
-             } else {
-               // faut-il utiliser spip_strlen() dans inc/charsets ?
-               $taille += strlen($valeur);
-             }
-           }
-           if($taille>500) {
-             $boundary = substr(md5(rand().'spip'), 0, 8);
-           }
-         }
-
-               if(is_string($boundary) and strlen($boundary)) {
+               $p = strpos($donnees, "\n\n");
+               if ($p!==FALSE){
+                       $entete = str_replace("\n", "\r\n", substr($donnees, 0, $p+1));
+                       $donnees = substr($donnees, $p+2);
+               }
+               $chaine = str_replace("\n", "\r\n", $donnees);
+       }
+       else {
+               /* boundary automatique */
+               // Si on a plus de 500 octects de donnees, on "boundarise"
+               if ($boundary===''){
+                       $taille = 0;
+                       foreach ($donnees as $cle => $valeur){
+                               if (is_array($valeur)){
+                                       foreach ($valeur as $val2){
+                                               $taille += strlen($val2);
+                                       }
+                               } else {
+                                       // faut-il utiliser spip_strlen() dans inc/charsets ?
+                                       $taille += strlen($valeur);
+                               }
+                       }
+                       if ($taille>500){
+                               $boundary = substr(md5(rand() . 'spip'), 0, 8);
+                       }
+               }
+
+               if (is_string($boundary) and strlen($boundary)){
                        // fabrique une chaine HTTP pour un POST avec boundary
                        $entete = "Content-Type: multipart/form-data; boundary=$boundary\r\n";
                        $chaine = '';
@@ -145,7 +170,7 @@ function prepare_donnees_post($donnees, $boundary = '') {
                                $chaine = $donnees;
                        }
                }
-  }
+       }
        return array($entete, $chaine);
 }
 
@@ -166,22 +191,22 @@ function prepare_donnees_post($donnees, $boundary = '') {
 //   dans lequel on ecrit directement la page
 // * si c'est true/null ca correspond a une demande d'encodage/charset
 // http://doc.spip.org/@recuperer_page
-function recuperer_page($url, $trans=false, $get_headers=false,
-       $taille_max = null, $datas='', $boundary='', $refuser_gz = false,
-       $date_verif = '', $uri_referer = '') {
+function recuperer_page($url, $trans = false, $get_headers = false,
+                        $taille_max = null, $datas = '', $boundary = '', $refuser_gz = false,
+                        $date_verif = '', $uri_referer = ''){
        $gz = false;
 
        // $copy = copier le fichier ?
-       $copy = (is_string($trans) AND strlen($trans) > 5); // eviter "false" :-)
+       $copy = (is_string($trans) AND strlen($trans)>5); // eviter "false" :-)
 
        if (is_null($taille_max))
                $taille_max = $copy ? _COPIE_LOCALE_MAX_SIZE : 1048576;
 
        // Accepter les URLs au format feed:// ou qui ont oublie le http://
        $url = preg_replace(',^feed://,i', 'http://', $url);
-       if (!preg_match(',^[a-z]+://,i', $url)) $url = 'http://'.$url;
+       if (!preg_match(',^[a-z]+://,i', $url)) $url = 'http://' . $url;
 
-       if ($taille_max == 0)
+       if ($taille_max==0)
                $get = 'HEAD';
        else
                $get = 'GET';
@@ -189,16 +214,16 @@ function recuperer_page($url, $trans=false, $get_headers=false,
        if (!empty($datas)) {
                $get = 'POST';
                list($type, $postdata) = prepare_donnees_post($datas, $boundary);
-               $datas = $type . 'Content-Length: '.strlen($postdata)."\r\n\r\n".$postdata;
+               $datas = $type . 'Content-Length: ' . strlen($postdata) . "\r\n\r\n" . $postdata;
        }
 
        // dix tentatives maximum en cas d'entetes 301...
-       for ($i=0;$i<10;$i++) {
+       for ($i = 0; $i<10; $i++){
                $url = recuperer_lapage($url, $trans, $get, $taille_max, $datas, $refuser_gz, $date_verif, $uri_referer);
                if (!$url) return false;
-               if (is_array($url)) {
+               if (is_array($url)){
                        list($headers, $result) = $url;
-                       return ($get_headers ? $headers."\n" : '').$result;
+                       return ($get_headers ? $headers . "\n" : '') . $result;
                } else spip_log("recuperer page recommence sur $url");
        }
 }
@@ -208,10 +233,9 @@ function recuperer_page($url, $trans=false, $get_headers=false,
 // si $trans est null -> on ne veut que les headers
 // si $trans est une chaine, c'est un nom de fichier pour ecrire directement dedans
 // http://doc.spip.org/@recuperer_lapage
-function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576, $datas='', $refuser_gz = false, $date_verif = '', $uri_referer = '')
-{
+function recuperer_lapage($url, $trans = false, $get = 'GET', $taille_max = 1048576, $datas = '', $refuser_gz = false, $date_verif = '', $uri_referer = ''){
        // $copy = copier le fichier ?
-       $copy = (is_string($trans) AND strlen($trans) > 5); // eviter "false" :-)
+       $copy = (is_string($trans) AND strlen($trans)>5); // eviter "false" :-)
 
        // si on ecrit directement dans un fichier, pour ne pas manipuler
        // en memoire refuser gz
@@ -220,7 +244,7 @@ function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576,
 
        // ouvrir la connexion et envoyer la requete et ses en-tetes
        list($f, $fopen) = init_http($get, $url, $refuser_gz, $uri_referer, $datas, _INC_DISTANT_VERSION_HTTP, $date_verif);
-       if (!$f) {
+       if (!$f){
                spip_log("ECHEC init_http $url");
                return false;
        }
@@ -231,18 +255,20 @@ function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576,
                $headers = '';
        else {
                $headers = recuperer_entetes($f, $date_verif);
-               if (is_numeric($headers)) {
+               if (is_numeric($headers)){
                        fclose($f);
                        // Chinoisierie inexplicable pour contrer 
                        // les actions liberticides de l'empire du milieu
-                       if ($headers) {
+                       if ($headers){
                                spip_log("HTTP status $headers pour $url");
                                return false;
-                       } elseif ($result = @file_get_contents($url))
-                           return array('', $result);
-                       else return false;
+                       }
+                       elseif ($result = @file_get_contents($url))
+                               return array('', $result);
+                       else
+                               return false;
                }
-               if (!is_array($headers)) { // cas Location
+               if (!is_array($headers)){ // cas Location
                        fclose($f);
                        include_spip('inc/filtres');
                        return suivre_lien($url, $headers);
@@ -250,48 +276,50 @@ function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576,
                $headers = join('', $headers);
        }
 
-       if ($trans === NULL) return array($headers, '');
+       if ($trans===NULL) return array($headers, '');
 
        // s'il faut deballer, le faire via un fichier temporaire
        // sinon la memoire explose pour les gros flux
 
        $gz = preg_match(",\bContent-Encoding: .*gzip,is", $headers) ?
-               (_DIR_TMP.md5(uniqid(mt_rand())).'.tmp.gz') : '';
-         
+               (_DIR_TMP . md5(uniqid(mt_rand())) . '.tmp.gz') : '';
+
 #      spip_log("entete ($trans $copy $gz)\n$headers"); 
        $result = recuperer_body($f, $taille_max, $gz ? $gz : ($copy ? $trans : ''));
        fclose($f);
-       if (!$result) return array($headers, $result);
+       if (!$result)
+               return array($headers, $result);
 
        // Decompresser au besoin
-       if ($gz) {
+       if ($gz){
                $result = join('', gzfile($gz));
                supprimer_fichier($gz);
        }
        // Faut-il l'importer dans notre charset local ?
-       if ($trans === true) {
+       if ($trans===true){
                include_spip('inc/charsets');
-               $result = transcoder_page ($result, $headers);
+               $result = transcoder_page($result, $headers);
        }
 
        return array($headers, $result);
 }
 
 // http://doc.spip.org/@recuperer_body
-function recuperer_body($f, $taille_max=1048576, $fichier='')
-{
+function recuperer_body($f, $taille_max = 1048576, $fichier = ''){
        $taille = 0;
        $result = '';
+       $fp = false;
        if ($fichier){
-               $fp = spip_fopen_lock($fichier, 'w',LOCK_EX);
-               if (!$fp) return false;
+               $fp = spip_fopen_lock($fichier, 'w', LOCK_EX);
+               if (!$fp)
+                       return false;
                $result = 0; // on renvoie la taille du fichier
        }
        while (!feof($f) AND $taille<$taille_max){
                $res = fread($f, 16384);
                $taille += strlen($res);
                if ($fp){
-                       fwrite($fp,$res);
+                       fwrite($fp, $res);
                        $result = $taille;
                }
                else
@@ -308,25 +336,24 @@ function recuperer_body($f, $taille_max=1048576, $fichier='')
 // le tableau des entetes dans tous les autres cas
 
 // http://doc.spip.org/@recuperer_entetes
-function recuperer_entetes($f, $date_verif='')
-{
+function recuperer_entetes($f, $date_verif = ''){
        $s = @trim(fgets($f, 16384));
 
-       if (!preg_match(',^HTTP/[0-9]+\.[0-9]+ ([0-9]+),', $s, $r)) {
+       if (!preg_match(',^HTTP/[0-9]+\.[0-9]+ ([0-9]+),', $s, $r)){
                return 0;
        }
        $status = intval($r[1]);
        $headers = array();
        $not_modif = $location = false;
-       while ($s = trim(fgets($f, 16384))) {
-               $headers[]= $s."\n";
+       while ($s = trim(fgets($f, 16384))){
+               $headers[] = $s . "\n";
                preg_match(',^([^:]*): *(.*)$,i', $s, $r);
-               list(,$d, $v) = $r;
-               if (strtolower(trim($d)) == 'location' AND $status >= 300 AND $status < 400) {
+               list(, $d, $v) = $r;
+               if (strtolower(trim($d))=='location' AND $status>=300 AND $status<400){
                        $location = $v;
                }
-               elseif ($date_verif AND ($d == 'Last-Modified')) {
-                       if ($date_verif>=strtotime($v)) {
+               elseif ($date_verif AND ($d=='Last-Modified')) {
+                       if ($date_verif>=strtotime($v)){
                                //Cas ou la page distante n'a pas bouge depuis
                                //la derniere visite
                                $not_modif = true;
@@ -334,8 +361,10 @@ function recuperer_entetes($f, $date_verif='')
                }
        }
 
-       if ($location) return $location;
-       if ($status != 200 or $not_modif) return $status;
+       if ($location)
+               return $location;
+       if ($status!=200 or $not_modif)
+               return $status;
        return $headers;
 }
 
@@ -344,47 +373,50 @@ function recuperer_entetes($f, $date_verif='')
 // mais la tout de suite je ne trouve pas l'idee, etant donne les limitations
 // des filesystems
 // http://doc.spip.org/@nom_fichier_copie_locale
-function nom_fichier_copie_locale($source, $extension) {
-
-       include_spip('inc/getdocument');
+function nom_fichier_copie_locale($source, $extension){
+       if (version_compare($spip_version_branche,"3.0.0") < 0)
+               include_spip('inc/getdocument');
+       else
+               include_spip('inc/documents');
        $d = creer_repertoire_documents('distant'); # IMG/distant/
        $d = sous_repertoire($d, $extension); # IMG/distant/pdf/
 
        // on se place tout le temps comme si on etait a la racine
        if (_DIR_RACINE)
-               $d = preg_replace(',^'.preg_quote(_DIR_RACINE).',', '', $d);
+               $d = preg_replace(',^' . preg_quote(_DIR_RACINE) . ',', '', $d);
 
        $m = md5($source);
 
        return $d
-       . substr(preg_replace(',[^\w-],', '', basename($source)).'-'.$m,0,12)
-       . substr($m,0,4)
-       . ".$extension";
+               . substr(preg_replace(',[^\w-],', '', basename($source)) . '-' . $m, 0, 12)
+               . substr($m, 0, 4)
+               . ".$extension";
 }
 
 //
 // Donne le nom de la copie locale de la source
 //
 // http://doc.spip.org/@fichier_copie_locale
-function fichier_copie_locale($source) {
+function fichier_copie_locale($source){
        // Si c'est deja local pas de souci
-       if (!preg_match(',^\w+://,', $source)) {
+       if (!preg_match(',^\w+://,', $source)){
                if (_DIR_RACINE)
-                       $source = preg_replace(',^'.preg_quote(_DIR_RACINE).',', '', $source);
+                       $source = preg_replace(',^' . preg_quote(_DIR_RACINE) . ',', '', $source);
                return $source;
        }
-       
+
        // optimisation : on regarde si on peut deviner l'extension dans l'url et si le fichier
        // a deja ete copie en local avec cette extension
        // dans ce cas elle est fiable, pas la peine de requeter en base
        $path_parts = pathinfo($source);
        $ext = $path_parts ? $path_parts['extension'] : '';
        if ($ext
-               AND preg_match(',^\w+$,',$ext) // pas de php?truc=1&...
-         AND $f=nom_fichier_copie_locale($source, $ext)
-         AND file_exists(_DIR_RACINE . $f))
-         return $f;
-       
+       AND preg_match(',^\w+$,', $ext) // pas de php?truc=1&...
+       AND $f = nom_fichier_copie_locale($source, $ext)
+       AND file_exists(_DIR_RACINE . $f)
+       )
+               return $f;
+
 
        // Si c'est deja dans la table des documents,
        // ramener le nom de sa copie potentielle
@@ -399,15 +431,25 @@ function fichier_copie_locale($source) {
 
        $ext = $path_parts ? $path_parts['extension'] : '';
 
-       if ($ext AND sql_getfetsel("extension", "spip_types_documents", "extension=".sql_quote($ext))) {
+       if ($ext AND sql_getfetsel("extension", "spip_types_documents", "extension=" . sql_quote($ext))){
                $f = nom_fichier_copie_locale($source, $ext);
-               if (file_exists(_DIR_RACINE  . $f))
-                 return $f;
+               if (file_exists(_DIR_RACINE . $f))
+                       return $f;
        }
+
        // Ping  pour voir si son extension est connue et autorisee
-       $path_parts = recuperer_infos_distantes($source,0,false) ;
+       // avec mise en cache du resultat du ping
+
+       $cache = sous_repertoire(_DIR_CACHE, 'rid') . md5($source);
+       if (!@file_exists($cache)
+               OR !$path_parts = @unserialize(spip_file_get_contents($cache))
+               OR _request('var_mode')=='recalcul'
+       ){
+               $path_parts = recuperer_infos_distantes($source, 0, false);
+               ecrire_fichier($cache, serialize($path_parts));
+       }
        $ext = $path_parts ? $path_parts['extension'] : '';
-       if ($ext AND sql_getfetsel("extension", "spip_types_documents", "extension=".sql_quote($ext))) {
+       if ($ext AND sql_getfetsel("extension", "spip_types_documents", "extension=" . sql_quote($ext))){
                return nom_fichier_copie_locale($source, $ext);
        }
        spip_log("pas de copie locale pour $source");
@@ -425,7 +467,7 @@ function fichier_copie_locale($source) {
 #$a['fichier'] = chaine
 
 // http://doc.spip.org/@recuperer_infos_distantes
-function recuperer_infos_distantes($source, $max=0, $charger_si_petite_image = true) {
+function recuperer_infos_distantes($source, $max = 0, $charger_si_petite_image = true){
 
        # charger les alias des types mime
        include_spip('base/typedoc');
@@ -436,7 +478,7 @@ function recuperer_infos_distantes($source, $max=0, $charger_si_petite_image = t
        // On va directement charger le debut des images et des fichiers html,
        // de maniere a attrapper le maximum d'infos (titre, taille, etc). Si
        // ca echoue l'utilisateur devra les entrer...
-       if ($headers = recuperer_page($source, false, true, $max, '', '', true)) {
+       if ($headers = recuperer_page($source, false, true, $max, '', '', true)){
                list($headers, $a['body']) = preg_split(',\n\n,', $headers, 2);
 
                if (preg_match(",\nContent-Type: *([^[:space:];]*),i", "\n$headers", $regs))
@@ -454,15 +496,17 @@ function recuperer_infos_distantes($source, $max=0, $charger_si_petite_image = t
                // ce qu'il sert ; on va tenter de detecter via l'extension de l'url
                // ou le Content-Disposition: attachment; filename=...
                $t = null;
-               if (in_array($mime_type,array('text/plain','','application/octet-stream'))){
+               if (in_array($mime_type, array('text/plain', '', 'application/octet-stream'))){
                        if (!$t
-                               AND preg_match(',\.([a-z0-9]+)(\?.*)?$,', $source, $rext)) {
-                               $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1]));
+                               AND preg_match(',\.([a-z0-9]+)(\?.*)?$,i', $source, $rext)
+                       ){
+                               $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1],'','text'));
                        }
                        if (!$t
-                                 AND preg_match(",^Content-Disposition:\s*attachment;\s*filename=(.*)$,Uims",$headers,$m)
-                                       AND preg_match(',\.([a-z0-9]+)(\?.*)?$,', $m[1], $rext)){
-                               $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1]));
+                               AND preg_match(",^Content-Disposition:\s*attachment;\s*filename=(.*)$,Uims", $headers, $m)
+                               AND preg_match(',\.([a-z0-9]+)(\?.*)?$,i', $m[1], $rext)
+                       ){
+                               $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1],'','text'));
                        }
                }
 
@@ -473,14 +517,15 @@ function recuperer_infos_distantes($source, $max=0, $charger_si_petite_image = t
                // Toujours rien ? (ex: audio/x-ogg au lieu de application/ogg)
                // On essaie de nouveau avec l'extension
                if (!$t
-               AND $mime_type != 'text/plain'
-               AND preg_match(',\.([a-z0-9]+)(\?.*)?$,', $source, $rext)) {
-                       $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1]));
+                       AND $mime_type!='text/plain'
+                       AND preg_match(',\.([a-z0-9]+)(\?.*)?$,i', $source, $rext)
+               ){
+                       $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1],'','text')); # eviter xxx.3 => 3gp (> SPIP 3)
                }
 
 
-               if ($t) {
-                       spip_log("mime-type $mime_type ok, extension ".$t['extension']);
+               if ($t){
+                       spip_log("mime-type $mime_type ok, extension " . $t['extension']);
                        $a['extension'] = $t['extension'];
                } else {
                        # par defaut on retombe sur '.bin' si c'est autorise
@@ -491,26 +536,30 @@ function recuperer_infos_distantes($source, $max=0, $charger_si_petite_image = t
                }
 
                if (preg_match(",\nContent-Length: *([^[:space:]]*),i",
-                       "\n$headers", $regs))
+                       "\n$headers", $regs)
+               )
                        $a['taille'] = intval($regs[1]);
        }
 
        // Echec avec HEAD, on tente avec GET
-       if (!$a AND !$max) {
+       if (!$a AND !$max){
                spip_log("tenter GET $source");
                $a = recuperer_infos_distantes($source, 1024*1024);
        }
 
        // S'il s'agit d'une image pas trop grosse ou d'un fichier html, on va aller
        // recharger le document en GET et recuperer des donnees supplementaires...
-       if (preg_match(',^image/(jpeg|gif|png|swf),', $mime_type)) {
-               if ($max == 0
-               AND $a['taille'] < 1024*1024
-               AND (strpos($GLOBALS['meta']['formats_graphiques'],$a['extension'])!==false)
-               AND $charger_si_petite_image) {
+       if (preg_match(',^image/(jpeg|gif|png|swf),', $mime_type)){
+               if ($max==0
+                       AND $a['taille']<1024*1024
+                               AND (strpos($GLOBALS['meta']['formats_graphiques'], $a['extension'])!==false)
+                                       AND $charger_si_petite_image
+               ){
                        $a = recuperer_infos_distantes($source, 1024*1024);
                }
-               else if ($a['body']) {
+               else if ($a['body']
+               AND $a['taille'] < 1024*1024
+               ) {
                        $a['fichier'] = _DIR_RACINE . nom_fichier_copie_locale($source, $a['extension']);
                        ecrire_fichier($a['fichier'], $a['body']);
                        $size_image = @getimagesize($a['fichier']);
@@ -522,36 +571,47 @@ function recuperer_infos_distantes($source, $max=0, $charger_si_petite_image = t
 
        // Fichier swf, si on n'a pas la taille, on va mettre 425x350 par defaut
        // ce sera mieux que 0x0
-       if ($a['extension'] == 'swf'
-       AND !$a['largeur']) {
+       if ($a AND $a['extension']=='swf'
+               AND !$a['largeur']
+       ){
                $a['largeur'] = 425;
                $a['hauteur'] = 350;
        }
 
-       if ($mime_type == 'text/html') {
+       if ($mime_type=='text/html'){
                include_spip('inc/filtres');
                $page = recuperer_page($source, true, false, 1024*1024);
-               if(preg_match(',<title>(.*?)</title>,ims', $page, $regs))
+               if (preg_match(',<title>(.*?)</title>,ims', $page, $regs))
                        $a['titre'] = corriger_caracteres(trim($regs[1]));
-                       if (!$a['taille']) $a['taille'] = strlen($page); # a peu pres
+               if (!$a['taille']) $a['taille'] = strlen($page); # a peu pres
        }
 
        return $a;
 }
 
 
-// http://doc.spip.org/@need_proxy
-function need_proxy($host)
-{
-       $http_proxy = @$GLOBALS['meta']["http_proxy"];
-       $http_noproxy = @$GLOBALS['meta']["http_noproxy"];
-
-       $domain = substr($host,strpos($host,'.'));
+/**
+ * Tester si un host peut etre recuperer directement ou doit passer par un proxy
+ * on peut passer en parametre le proxy et la liste des host exclus,
+ * pour les besoins des tests, lors de la configuration
+ *
+ * @param string $host
+ * @param string $http_proxy
+ * @param string $http_noproxy
+ * @return string
+ */
+function need_proxy($host, $http_proxy = null, $http_noproxy = null){
+       if (is_null($http_proxy))
+               $http_proxy = @$GLOBALS['meta']["http_proxy"];
+       if (is_null($http_noproxy))
+               $http_noproxy = @$GLOBALS['meta']["http_noproxy"];
+
+       $domain = substr($host, strpos($host, '.'));
 
        return ($http_proxy
-       AND (strpos(" $http_noproxy ", " $host ") === false
-            AND (strpos(" $http_noproxy ", " $domain ") === false)))
-       ? $http_proxy : '';
+               AND (strpos(" $http_noproxy ", " $host ")===false
+               AND (strpos(" $http_noproxy ", " $domain ")===false)))
+               ? $http_proxy : '';
 }
 
 //
@@ -559,58 +619,66 @@ function need_proxy($host)
 // retourne le descripteur sur lequel lire la reponse
 //
 // http://doc.spip.org/@init_http
-function init_http($method, $url, $refuse_gz=false, $referer = '', $datas="", $vers="HTTP/1.0", $date='') {
-       $user = $via_proxy = $proxy_user = ''; 
+function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = "", $vers = "HTTP/1.0", $date = ''){
+       $user = $via_proxy = $proxy_user = '';
        $fopen = false;
 
        $t = @parse_url($url);
        $host = $t['host'];
-       if ($t['scheme'] == 'http') {
-               $scheme = 'http'; $noproxy = '';
-       } elseif ($t['scheme'] == 'https') {
-               $scheme = 'ssl'; $noproxy = 'ssl://';
+       if ($t['scheme']=='http'){
+               $scheme = 'http';
+               $noproxy = '';
+       } elseif ($t['scheme']=='https') {
+               $scheme = 'ssl';
+               $noproxy = 'ssl://';
                if (!isset($t['port']) || !($port = $t['port'])) $t['port'] = 443;
        }
        else {
-               $scheme = $t['scheme']; $noproxy = $scheme.'://';
+               $scheme = $t['scheme'];
+               $noproxy = $scheme . '://';
        }
        if (isset($t['user']))
                $user = array($t['user'], $t['pass']);
 
        if (!isset($t['port']) || !($port = $t['port'])) $port = 80;
        if (!isset($t['path']) || !($path = $t['path'])) $path = "/";
-       if (@$t['query']) $path .= "?" .$t['query'];
+       if (@$t['query']) $path .= "?" . $t['query'];
 
        $f = lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz, $referer, $datas, $vers, $date);
-       if (!$f) {
-         // fallback : fopen
-               if (!_request('tester_proxy')) {
+       if (!$f){
+               // fallback : fopen
+               if (!_request('tester_proxy')){
                        $f = @fopen($url, "rb");
                        spip_log("connexion vers $url par simple fopen");
                        $fopen = true;
-               } else $f = false;// echec total
+               }
+               else
+                       $f = false;
+               // echec total
        }
 
        return array($f, $fopen);
 }
 
 // http://doc.spip.org/@lance_requete
-function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz=false, $referer = '', $datas="", $vers="HTTP/1.0", $date='') {
+function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz = false, $referer = '', $datas = "", $vers = "HTTP/1.0", $date = ''){
 
        $proxy_user = '';
        $http_proxy = need_proxy($host);
-       if ($user) $user = urlencode($user[0]).":".urlencode($user[1]);
+       if ($user) $user = urlencode($user[0]) . ":" . urlencode($user[1]);
 
-       if ($http_proxy) {
-               $path = "$scheme://"
+       if ($http_proxy){
+               $path = (($scheme=='ssl') ? 'https://' : "$scheme://")
                        . (!$user ? '' : "$user@")
-                       . "$host" . (($port != 80) ? ":$port" : "") . $path;
+                       . "$host" . (($port!=80) ? ":$port" : "") . $path;
                $t2 = @parse_url($http_proxy);
                $first_host = $t2['host'];
                if (!($port = $t2['port'])) $port = 80;
                if ($t2['user'])
                        $proxy_user = base64_encode($t2['user'] . ":" . $t2['pass']);
-       } else $first_host = $noproxy.$host;
+       }
+       else
+               $first_host = $noproxy . $host;
 
        $f = @fsockopen($first_host, $port);
        spip_log("Recuperer $path sur $first_host:$port par $f");
@@ -619,14 +687,14 @@ function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $
        $site = $GLOBALS['meta']["adresse_site"];
 
        $req = "$method $path $vers\r\n"
-       . "Host: $host\r\n"
-       . "User-Agent: " . _INC_DISTANT_USER_AGENT . "\r\n"
-       . ($refuse_gz ? '' : ("Accept-Encoding: " . _INC_DISTANT_CONTENT_ENCODING . "\r\n"))
-       . (!$site ? '' : "Referer: $site/$referer\r\n")
-       . (!$date ? '' : "If-Modified-Since: " . (gmdate("D, d M Y H:i:s", $date)  ." GMT\r\n"))
-       . (!$user ? '' : ("Authorization: Basic " . base64_encode($user) ."\r\n"))
-       . (!$proxy_user ? '' : "Proxy-Authorization: Basic $proxy_user\r\n")
-       . (!strpos($vers, '1.1') ? '' : "Keep-Alive: 300\r\nConnection: keep-alive\r\n");
+               . "Host: $host\r\n"
+               . "User-Agent: " . _INC_DISTANT_USER_AGENT . "\r\n"
+               . ($refuse_gz ? '' : ("Accept-Encoding: " . _INC_DISTANT_CONTENT_ENCODING . "\r\n"))
+               . (!$site ? '' : "Referer: $site/$referer\r\n")
+               . (!$date ? '' : "If-Modified-Since: " . (gmdate("D, d M Y H:i:s", $date) . " GMT\r\n"))
+               . (!$user ? '' : ("Authorization: Basic " . base64_encode($user) . "\r\n"))
+               . (!$proxy_user ? '' : "Proxy-Authorization: Basic $proxy_user\r\n")
+               . (!strpos($vers, '1.1') ? '' : "Keep-Alive: 300\r\nConnection: keep-alive\r\n");
 
 #      spip_log("Requete\n$req");
        fputs($f, $req);
index 4f1b0f9..baa42e8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f38b9d1..2369a03 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index daa3e2a..fa57330 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -101,15 +101,20 @@ function generer_url_document_dist($id_document, $args='', $ancre='') {
 
        if ($r AND $r !== 'htaccess') return get_spip_doc($f);
 
+       return generer_acceder_document($f, $id_document, $args, $ancre);
+}
+
+// cette action doit etre publique !
+function generer_acceder_document($file, $id_document, $args='', $ancre='')
+{
        include_spip('inc/securiser_action');
 
-       // cette action doit etre publique !
        return generer_url_action('acceder_document',
                $args . ($args ? "&" : '')
                        . 'arg='.$id_document
                        . ($ancre ? "&ancre=$ancre" : '')
-                       . '&cle=' . calculer_cle_action($id_document.','.$f)
-                       . '&file=' . rawurlencode($f)
+                       . '&cle=' . calculer_cle_action($id_document.','.$file)
+                       . '&file=' . rawurlencode($file)
                        ,false,true);
 }
 
@@ -442,7 +447,15 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals
                }
 
        }
-       $cadre = lignes_longues(typo($titre ? $titre : basename($fichier)), 20);
+       if ($titre)
+         $cadre = $titre;
+       elseif (!$distant)
+         $cadre = basename($fichier);
+       else {
+         preg_match('@^[^/]*/*([^/]*)@', $fichier, $cadre);
+         $cadre = $cadre[1];
+       }
+       $cadre = lignes_longues($cadre, 20);
        // encapsuler chaque document dans un container pour permettre son remplacement en ajax
        return  '<div>'
                . debut_cadre($style, $icone, '', $cadre, "document$id_document")
@@ -456,7 +469,7 @@ function afficher_case_document($id_document, $id, $script, $type, $deplier=fals
                       ( _T('info_document').' '.majuscules($extension)))
                    . "</div>"))
                . $apercu
-               . "\n<div style='padding:2px; ' class='arial1 spip_xx-small'>"
+               . "\n<div style='padding:2px;' class='arial1 spip_xx-small'>"
                . $raccourci
                . "</div>\n"
                . $legender($id_document, $document, $script, $type, $id, "document$id_document", $deplier)
index 9682f39..145497d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -69,7 +69,7 @@ function ecrire_tableau_edition($edition) {
 // http://doc.spip.org/@signale_edition
 function signale_edition ($id, $auteur, $type='article') {
        $edition = lire_tableau_edition();
-       if ($id_a = $auteur['id_auteur'])
+       if (isset($auteur['id_auteur']) and $id_a = $auteur['id_auteur'])
                $nom = $auteur['nom'];
        else
                $nom = $id_a = $GLOBALS['ip'];
index ecfc1dd..040a15d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index c6b214c..695cf65 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -32,7 +32,7 @@ function inc_editer_auteurs_dist($type, $id, $flag, $cherche_auteur, $ids, $titr
        $aff_les_auteurs = afficher_auteurs_objet($type, $id, $flag, '', $script_edit_objet, $arg_ajax);
        
        if ($flag) {
-               $futurs = ajouter_auteurs_objet($type, $id, '',$script_edit_objet, $arg_ajax);
+               $futurs = ajouter_auteurs_objet($type, $id, '',$script_edit_objet, $arg_ajax, $cherche_auteur);
        } else $futurs = '';
 
        $ldap = isset($GLOBALS['meta']['ldap_statut_import']) ?
@@ -227,7 +227,7 @@ function ajouter_auteur_un($row, $own) {
 }
 
 // http://doc.spip.org/@ajouter_auteurs_objet
-function ajouter_auteurs_objet($type, $id, $cond_les_auteurs,$script_edit, $arg_ajax)
+function ajouter_auteurs_objet($type, $id, $cond_les_auteurs,$script_edit, $arg_ajax, $valeur='')
 {
        if (!$determiner_non_auteurs = charger_fonction('determiner_non_auteurs_'.$type,'inc',true))
                $determiner_non_auteurs = 'determiner_non_auteurs';
@@ -248,7 +248,7 @@ function ajouter_auteurs_objet($type, $id, $cond_les_auteurs,$script_edit, $arg_
                $sel = "$text<select name='$new' id='$new' size='1' style='width:150px;' onchange=\"$js\">$all</select>";
                $clic = _T('bouton_ajouter');
        } else if  ((_SPIP_AJAX < 1) OR ($all >= _SPIP_SELECT_MAX_AUTEURS)) {
-                 $sel = "$text <input type='text' name='cherche_auteur' id='$new' onclick=\"$js\" value='' size='20' />";
+         $sel = "$text <input type='text' name='cherche_auteur' id='$new' onclick=\"$js\" value=\"" . entites_html($valeur) . "\" size='20' />";
                  $clic = _T('bouton_chercher');
        } else {
                $sel = selecteur_auteur_ajax($type, $id, $js, $text, $idom);
index 4b8ed87..b90b839 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -252,8 +252,11 @@ function formulaire_mots_cles($id_objet, $les_mots, $table, $table_id, $url_base
        if (count($les_mots)>= 3) {
                $ok = true;
                foreach ($id_groupes_vus as $id_groupe)
-                       $ok &= autoriser('editermots', $objet, $id_objet, null,
-                                       array('id_groupe'=>$id_groupe,'groupe_champs'=>$row));
+                       if (!autoriser('editermots', $objet, $id_objet, null,
+                                       array('id_groupe'=>$id_groupe))) {
+                               $ok = false;
+                               break;
+                       }
                if ($ok)
                        $res .= "<div style='text-align: right' class='arial1'>"
                                . ajax_action_auteur('editer_mots', "$id_objet,-1,$table,$table_id,$objet", $url_base, "$table_id=$id_objet", array(_T('info_retirer_mots'),''),"&id_objet=$id_objet&objet=$objet")
index d1d0988..6375254 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 25afae2..0637d86 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -15,118 +15,132 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 define('_EXPORT_TRANCHES_LIMITE', 200);
 define('_EXTENSION_PARTIES', '.gz');
 
-// http://doc.spip.org/@exec_export_all_args
 function inc_export_dist($meta)
 {
        if (!isset($GLOBALS['meta'][$meta])) {
                include_spip('inc/minipres');
                echo minipres();
+       } else {
+               while (true) {
+                       $val = unserialize($GLOBALS['meta'][$meta]);
+                       if ($dir = export_repertoire($meta, $val))
+                               export_trace($val, $dir, $meta);
+                       else break;
+               }
+               list($gz, $archive, $rub,,,,$serveur,$save) = $val;
+               // retour a exec_export_all qui renverra sur action_export_all
+               return "end,$gz,$archive,$rub,$serveur,$save";
        }
-       else {
-               $start = false;
-               list($gz, $archive, $rub, $tables_for_dump, $etape_actuelle, $sous_etape) = 
-                       unserialize($GLOBALS['meta'][$meta]);
-
-               // determine upload va aussi initialiser l'index "restreint"
-               $maindir = determine_upload();
-               if (!$GLOBALS['visiteur_session']['restreint'])
-                       $maindir = _DIR_DUMP;
-               $dir = sous_repertoire($maindir, $meta);
-               $file = $dir . $archive;
-               $metatable = $meta . '_tables';
+}
 
-               // Reperer une situation anormale (echec reprise sur interruption)
-               if (!$etape_actuelle AND !$sous_etape) {
-                       $l = preg_files($file .  ".part_[0-9]+_[0-9]+");
-                       if ($l) {
-                               spip_log("menage d'une sauvegarde inachevee: " . join(',', $l));
-                               foreach($l as $dummy) spip_unlink($dummy);
-                       }
-                       $start = true; //  utilise pour faire un premier hit moitie moins long
-                       $tables_sauvegardees = array();
-               } else  $tables_sauvegardees = isset($GLOBALS['meta'][$metatable])?unserialize($GLOBALS['meta'][$metatable]):array();
-
-               // concatenation des fichiers crees a l'appel precedent
-               ramasse_parties($dir, $archive);
-               $all = count($tables_for_dump);
-               if ($etape_actuelle > $all OR !$all){
-                       return "end,$gz,$archive,$rub"; // c'est fini !
-               }
+// calcule le repertoire de la sauvegarde
+// et le nettoie au premier appel.
+// Aux suivants, retourne le nom du repertoire ou rien si c'est fini.
 
-               include_spip('inc/minipres');
-               @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure
+function export_repertoire($meta, $val_meta)
+{
+       list(, $archive, , $tables, $etape, $sous_etape, , $save) = $val_meta;
+       if (!function_exists('inc_export_' . ($save ? $save : 'xml'))) {
+               spip_log("fonction inc_export_$save indisponible");
+               return false;
+       }
+       $dir = base_dump_dir($meta);
 
-               echo ( install_debut_html(_T('info_sauvegarde') . " ($all)"));
+       // Reperer une situation anormale (echec reprise sur interruption)
+       if (($etape == 1) AND !$sous_etape) {
+               $file = $dir . $archive;
+               $l = preg_files($file .  ".part_[0-9]+_[0-9]+");
+               if ($l) {
+                       spip_log("menage d'une sauvegarde inachevee: " . join(',', $l));
+                       foreach($l as $dummy) spip_unlink($dummy);
+               }
+       }
+       $all = count($tables);
+       return ($etape > $all OR !$all) ? false : $dir;
+}
+
+function export_trace($val_meta, $dir, $meta)
+{
+       list($gz, $archive, $rub, $tables_for_dump, $etape_actuelle, $sous_etape, $serveur, $save) = $val_meta;
+       include_spip('inc/minipres');
+       // pour permettre l'affichage au fur et a mesure
+       @ini_set("zlib.output_compression","0");
 
-               if (!($timeout = ini_get('max_execution_time')*1000));
-               $timeout = 30000; // parions sur une valeur tellement courante ...
+       if (!($timeout = ini_get('max_execution_time')*1000));
+       $timeout = 30000; // parions sur une valeur tellement courante ...
        // le premier hit est moitie moins long car seulement une phase d'ecriture de morceaux
        // sans ramassage
        // sinon grosse ecriture au 1er hit, puis gros rammassage au deuxieme avec petite ecriture,... ca oscille
-               if ($start) $timeout = round($timeout/2);
+       if (!$etape_actuelle AND !$sous_etape) {
+               $timeout = round($timeout/2);
+               $tables_sauvegardees = array();
+       } else {
+               $metatable = $meta . '_tables';
+               $tables_sauvegardees = isset($GLOBALS['meta'][$metatable])?unserialize($GLOBALS['meta'][$metatable]):array();
+       }
 
        // Les sauvegardes partielles prennent le temps d'indiquer les logos
        // Instancier une fois pour toutes, car on va boucler un max.
        // On complete jusqu'au secteur pour resituer dans l'arborescence)
-               if ($rub) {
-                       $GLOBALS['chercher_logo'] = charger_fonction('chercher_logo', 'inc',true);
-                       $les_rubriques = complete_fils(array($rub));
-                       $les_meres  = complete_secteurs(array($rub));
-               } else {
-                       $GLOBALS['chercher_logo'] = false;
-                       $les_rubriques = $les_meres = '';
-               }
+       if ($rub) {
+               $GLOBALS['chercher_logo'] = charger_fonction('chercher_logo', 'inc',true);
+               $les_rubriques = complete_fils(array($rub), $serveur);
+               $les_meres  = complete_secteurs(array($rub), $serveur);
+       } else {
+               $GLOBALS['chercher_logo'] = false;
+               $les_rubriques = $les_meres = '';
+       }
 
        // script de rechargement auto sur timeout
-               $redirect = generer_url_ecrire("export_all");
-               echo http_script("window.setTimeout('location.href=\"".$redirect."\";',$timeout)");
-
-               echo "<div style='text-align: left'>\n";
-               $etape = 1;
-               foreach($tables_for_dump as $table){
-                       if ($etape_actuelle > $etape) {
-                                // sauter les deja faits, mais rappeler qu'ils sont fait
-                               echo ( "\n<br /><strong>".$etape. '. '."</strong>". $tables_sauvegardees[$table]);
-                       }
+       $redirect = generer_url_ecrire("export_all");
+       $all = count($tables_for_dump);
+       echo ( install_debut_html(_T('info_sauvegarde') . " ($all)"));
+       echo http_script("window.setTimeout('location.href=\"".$redirect."\";',$timeout)");
+
+       echo "<div style='text-align: left'>\n";
+       $etape = 1;
+       foreach($tables_for_dump as $table){
+               if ($etape_actuelle > $etape) {
+                        // sauter les deja faits, mais rappeler qu'ils sont fait
+                       echo ( "\n<br /><strong>".$etape. '. '."</strong>". $tables_sauvegardees[$table]);
+               }
+               else {
+                       echo ( "\n<br /><strong>".$etape. '. '. $table."</strong> ");
+                       $r = sql_countsel($table, array(), array(), array(), $serveur);
+                       flush();
+                       if (!$r) $r = ( _T('texte_vide'));
                        else {
-                               echo ( "\n<br /><strong>".$etape. '. '. $table."</strong> ");
-                         $r = sql_countsel($table);
-                         flush();
-                         if (!$r) $r = ( _T('texte_vide'));
-                         else {
                            $f = $dir . $archive . '.part_' . sprintf('%03d',$etape);
                            $r = export_objets($table, $sous_etape, $r, $f, $les_rubriques, $les_meres, $meta);
                            $r += $sous_etape*_EXPORT_TRANCHES_LIMITE;
                            // info pas fiable si interruption+partiel
                            if ($rub AND $etape_actuelle > 1) $r = ">= $r";
-                         }
-                         echo " $r";
-                         flush();
-                         $sous_etape = 0;
-                         // on utilise l'index comme ca c'est pas grave si on ecrit plusieurs fois la meme
-                         $tables_sauvegardees[$table] = "$table ($r)";
-                         ecrire_meta($metatable, serialize($tables_sauvegardees),'non');
                        }
-                       $etape++;
-                       $v = serialize(array($gz, $archive, $rub, $tables_for_dump, $etape,$sous_etape));
-                       ecrire_meta($meta, $v,'non');
+                       echo " $r";
+                       flush();
+                       $sous_etape = 0;
+                       // on utilise l'index comme ca c'est pas grave si on ecrit plusieurs fois la meme
+                       $tables_sauvegardees[$table] = "$table ($r)";
+                       ecrire_meta($meta . '_tables', serialize($tables_sauvegardees),'non');
                }
-               echo ( "</div>\n");
-               // si Javascript est dispo, anticiper le Time-out
-               echo  ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"$redirect\";',0);</script>\n");
-               echo (install_fin_html());
-               flush();
+               $etape++;
+               $v = serialize(array($gz, $archive, $rub, $tables_for_dump, $etape,$sous_etape, $serveur, $save));
+               ecrire_meta($meta, $v,'non');
        }
+       echo ( "</div>\n");
+       // si Javascript est dispo, anticiper le Time-out
+       echo  ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"$redirect\";',0);</script>\n");
+       echo (install_fin_html());
+       flush();
 }
 
-
 // http://doc.spip.org/@complete_secteurs
-function complete_secteurs($les_rubriques)
+function complete_secteurs($les_rubriques, $serveur='')
 {
        $res = array();
        foreach($les_rubriques as $r) {
                do {
-                       $r = sql_getfetsel("id_parent", "spip_rubriques", "id_rubrique=$r");
+                       $r = sql_getfetsel("id_parent", "spip_rubriques", "id_rubrique=$r", array(), array(), '',  array(), $serveur);
                        if ($r) {
                                if ((isset($les_rubriques[$r])) OR isset($res[$r]))
                                        $r = false;
@@ -138,13 +152,13 @@ function complete_secteurs($les_rubriques)
 }
 
 // http://doc.spip.org/@complete_fils
-function complete_fils($rubriques)
+function complete_fils($rubriques, $serveur='')
 {
        $r = $rubriques;
        do {
-               $q = sql_select("id_rubrique", "spip_rubriques", "id_parent IN (".join(',',$r).")");
+               $q = sql_select("id_rubrique", "spip_rubriques", "id_parent IN (".join(',',$r).")", array(), array(), '', array(), $serveur);
                $r = array();
-               while ($row = sql_fetch($q)) {
+               while ($row = sql_fetch($q, $serveur)) {
                        $r[]= $rubriques[] = $row['id_rubrique'];
                }
        } while ($r);
@@ -153,31 +167,6 @@ function complete_fils($rubriques)
        return $rubriques;
 }
 
-// Concatenation des tranches
-// Il faudrait ouvrir une seule fois le fichier, et d'abord sous un autre nom
-// et sans detruire les tranches: au final renommage+destruction massive pour
-// prevenir autant que possible un Time-out.
-
-// http://doc.spip.org/@ramasse_parties
-function ramasse_parties($dir, $archive)
-{
-       $files = preg_files($dir . $archive . ".part_[0-9]+_[0-9]+[.gz]?");
-
-       $ok = true;
-       $files_o = array();
-       $but = $dir . $archive;
-       foreach($files as $f) {
-         $contenu = "";
-         if (lire_fichier ($f, $contenu)) {
-           if (!ecrire_fichier($but,$contenu,false,false))
-             { $ok = false; break;}
-         }
-         spip_unlink($f);
-         $files_o[]=$f;
-       }
-       return $ok ? $files_o : false;
-}
-
 //
 // Exportation de table SQL au format xml
 // La constante ci-dessus determine la taille des tranches,
@@ -203,33 +192,36 @@ function export_objets($table, $cpt, $total, $filetable, $les_rubriques, $les_me
        $debut = $cpt * _EXPORT_TRANCHES_LIMITE;
        $effectifs = 0;
 
+       $v = unserialize($GLOBALS['meta'][$meta]);
        while (1){ // on ne connait pas le nb de paquets d'avance
 
                $cpt++;
-               $tranche = build_while($debut, $table, $prim, $les_rubriques, $les_meres);
+               $tranche = build_while($debut, $table, $prim, $les_rubriques, $les_meres, $v[7], $v[6]);
                // attention: vide ne suffit pas a sortir
                // car les sauvegardes partielles peuvent parcourir
                // une table dont la portion qui les concerne sera vide..
                if ($tranche) { 
                // on ecrit dans un fichier generique
                // puis on le renomme pour avoir une operation atomique 
-                       ecrire_fichier ($temp, join('', $tranche));
-                       $f = $filetable . sprintf('_%04d',$cpt) . _EXTENSION_PARTIES;
-       // le fichier destination peut deja exister
-       // si on sort d'un timeout entre le rename et le ecrire_meta
-                       if (file_exists($f)) spip_unlink($f);
-                       rename($temp, $f);
-                       $effectifs += count($tranche);
+                       if (is_array($tranche)) {
+                               ecrire_fichier ($temp, join('', $tranche));
+                               $f = $filetable . sprintf('_%04d',$cpt) . _EXTENSION_PARTIES;
+                               // le fichier destination peut deja exister
+                               // si on sort d'un timeout entre le rename et le ecrire_meta
+                               if (file_exists($f)) spip_unlink($f);
+                               rename($temp, $f);
+                               $tranche = count($tranche);
+                       }
+                       $effectifs += $tranche;
                }
                // incrementer le numero de sous-etape 
                // au cas ou une interruption interviendrait
-               $v = unserialize($GLOBALS['meta'][$meta]);
                $v[5]++;
                ecrire_meta($meta, serialize($v));
                $debut +=  _EXPORT_TRANCHES_LIMITE;
                if ($debut >= $total) {break;}
                /* pour tester la robustesse de la reprise sur interruption
-                decommenter ce qui suit.
+                  decommenter ce qui suit.
                if ($cpt && 1) {
                  spip_log("force interrup $s");
                  include_spip('inc/headers');
@@ -238,50 +230,53 @@ function export_objets($table, $cpt, $total, $filetable, $les_rubriques, $les_me
                echo(". ");
                flush();
        }
-
        return $effectifs;
 }
 
-
-// Construit la version xml  des champs d'une table
-
+// sauvegarde d'une table par ordre croissant de la cle primaire simple
+// sinon les sequences PG seront pertubees a la restauration
+// (a ameliorer)
+// Retourne un tableau de chaines, d'autant d'element que de Row
+// ou leur nombre, selon la fonction utilisee
 // http://doc.spip.org/@build_while
-function build_while($debut, $table, $prim, $les_rubriques, $les_meres) {
-       global  $chercher_logo ;
+function build_while($debut, $table, $prim, $les_rubriques, $les_meres, $save='', $serveur='') {
 
-       // sauver par ordre croissant les tables avec cles primaires simples
-       // sinon les sequences PG seront pertubees a la restauration
-       // (a ameliorer)
-       $result = sql_select('*', $table, '', '', $prim, "$debut," . _EXPORT_TRANCHES_LIMITE);
+       $result = sql_select('*', $table, '', '', $prim, "$debut," . _EXPORT_TRANCHES_LIMITE, array(), $serveur);
 
+       $i = 0;
        $res = array();
-       while ($row = sql_fetch($result)) {
-               if (export_select($row, $les_rubriques, $les_meres)) {
-                       $attributs = "";
-                       if ($chercher_logo) {
-                               if ($logo = $chercher_logo($row[$prim], $prim, 'on'))
-                                       $attributs .= ' on="' . $logo[3] . '"';
-                               if ($logo = $chercher_logo($row[$prim], $prim, 'off'))
-                                       $attributs .= ' off="' . $logo[3] . '"';
-                       }
-
-                       $string = "<$table$attributs>\n";
-                       foreach ($row as $k => $v) {
-                               $string .= "<$k>" . text_to_xml($v) . "</$k>\n";
-                       }
-                       $string .= "</$table>\n\n";
-                       $res[]= $string;
+       $save = 'inc_export_' . ($save ? $save : 'xml');
+       while ($r = sql_fetch($result, $serveur)) {
+               if (export_select($r, $les_rubriques, $les_meres)) {
+                       if ($s = $save($r, $table, $prim, $serveur)) $res[]=$s; else $i++;
                }
        }
-       sql_free($result);
-       return $res;
+       sql_free($result, $serveur);
+       return $res ? $res : $i;
+}
+
+// Construit la version xml des champs d'une table
+function inc_export_xml($row, $table, $prim, $serveur) {
+       global  $chercher_logo ;
+       if ($chercher_logo) {
+               $on = $chercher_logo($row[$prim], $prim, 'on');
+               $off = $chercher_logo($row[$prim], $prim, 'off');
+       } else  $on = $off = "";
+       foreach ($row as $k => $v) {
+               $row[$k] = "<$k>" . text_to_xml($v) . "</$k>";
+       }
+       return "<$table"
+       . ($on ? " on='$on[3]'" : '')
+       . ($off ? " off='$off[3]'" : '')
+       . ">\n"
+       . join("\n", $row)
+       . "\n</$table>\n\n";
 }
 
 // dit si Row est exportable, 
 // en particulier quand on se restreint a certaines rubriques
-// Attention, la table articles doit etre au debut 
-// et la table document_articles avant la table documents
-// (faudrait blinder, c'est un bug potentiel)
+// La table des documents doit etre apres celle des liens de doc
+// elle-meme apres celle des objets auxquels elle lie ces documents.
 
 // http://doc.spip.org/@export_select
 function export_select($row, $les_rubriques, $les_meres) {
@@ -291,7 +286,7 @@ function export_select($row, $les_rubriques, $les_meres) {
        if (isset($row['impt']) AND $row['impt'] !='oui') return false;
        if (!$les_rubriques) return true;
 
-       // numero de rubrique non determinant pour les forums (0 ďż˝ 99%)
+       // numero de rubrique non determinant pour les forums (0 a 99%)
        if (isset($row['id_rubrique']) AND $row['id_rubrique']) {
                if (in_array($row['id_rubrique'], $les_rubriques)) {
                        if (isset($row['id_article']))
@@ -346,7 +341,9 @@ function export_select($row, $les_rubriques, $les_meres) {
 // Conversion texte -> xml (ajout d'entites)
 // http://doc.spip.org/@text_to_xml
 function text_to_xml($string) {
-       return str_replace(array('&','<','>'), array('&amp;','&lt;','&gt;'), $string);
+       static $old = array('&','<','>');
+       static $new = array('&amp;','&lt;','&gt;');
+       return str_replace($old, $new, $string);
 }
 
 ?>
index 0777c47..7ebc9be 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -541,6 +541,7 @@ function majuscules($texte) {
 // "127.4 ko" ou "3.1 Mo"
 // http://doc.spip.org/@taille_en_octets
 function taille_en_octets ($taille) {
+       if ($taille < 1) return '';
        if ($taille < 1024) {$taille = _T('taille_octets', array('taille' => $taille));}
        else if ($taille < 1024*1024) {
                $taille = _T('taille_ko', array('taille' => ((floor($taille / 102.4))/10)));
@@ -569,14 +570,9 @@ function attribut_html($texte,$textebrut = true) {
 function vider_url($url, $entites = true) {
        # un message pour abs_url
        $GLOBALS['mode_abs_url'] = 'url';
-
        $url = trim($url);
-       if (preg_match(",^(http:?/?/?|mailto:?)$,iS", $url))
-               return '';
-
-       if ($entites) $url = entites_html($url);
-
-       return $url;
+       $r = ",^(?:" . _PROTOCOLES_STD . '):?/?/?$,iS';
+       return preg_match($r, $url) ?'': ($entites ? entites_html($url) : $url);
 }
 
 // Extraire une date de n'importe quel champ (a completer...)
@@ -1520,35 +1516,17 @@ function vider_attribut ($balise, $attribut) {
        return inserer_attribut($balise, $attribut, '', false, true);
 }
 
-
-// Un filtre pour determiner le nom du mode des librement inscrits,
-// a l'aide de la liste globale des statuts (tableau mode => nom du mode)
-// Utile pour le formulaire d'inscription.
-// Si un mode est fourni, verifier que la configuration l'accepte.
-// Si mode inconnu laisser faire, c'est une extension non std
-// mais verifier que la syntaxe est compatible avec SQL
-
 // http://doc.spip.org/@tester_config
 function tester_config($id, $mode='') {
+       include_spip('inc/autoriser');
+       if ($mode)
+               return autoriser('inscrireauteur', $mode, $id) ? $mode : '';
+       elseif (
+            autoriser('inscrireauteur', $mode = "1comite", $id)
+         OR autoriser('inscrireauteur', $mode = "6forum", $id))
+               return $mode;
 
-       $s = array_search($mode, $GLOBALS['liste_des_statuts']);
-       switch ($s) {
-
-       case 'info_redacteurs' :
-         return (($GLOBALS['meta']['accepter_inscriptions'] == 'oui') ? $mode : '');
-
-       case 'info_visiteurs' :
-         return (($GLOBALS['meta']['accepter_visiteurs'] == 'oui' OR $GLOBALS['meta']['forums_publics'] == 'abo') ? $mode : '');
-
-       default:
-         if ($mode AND $mode == addslashes($mode))
-           return $mode;
-         if ($GLOBALS['meta']["accepter_inscriptions"] == "oui")
-           return $GLOBALS['liste_des_statuts']['info_redacteurs'];
-         if ($GLOBALS['meta']["accepter_visiteurs"] == "oui")
-           return $GLOBALS['liste_des_statuts']['info_visiteurs'];
-         return '';
-       }
+       return '';
 }
 
 //
@@ -1598,6 +1576,33 @@ function modulo($nb, $mod, $add=0) {
        return ($mod?$nb%$mod:0)+$add;
 }
 
+/**
+ * VĂ©rifie qu'un nom (d'auteur) ne comporte pas d'autres tags que <multi>
+ * et ceux volontairement spĂ©cifiĂ©s dans la constante
+ *
+ * @param string $nom
+ *      Nom (signature) proposĂ©
+ * @return bool
+ *      - false si pas conforme,
+ *      - true sinon
+**/
+function nom_acceptable($nom) {
+       if (!is_string($nom)) {
+               return false;
+       }
+       if (!defined('_TAGS_NOM_AUTEUR')) define('_TAGS_NOM_AUTEUR','');
+       $tags_acceptes = array_unique(explode(',', 'multi,' . _TAGS_NOM_AUTEUR));
+       foreach($tags_acceptes as $tag) {
+               if (strlen($tag)) {
+                       $remp1[] = '<'.trim($tag).'>';
+                       $remp1[] = '</'.trim($tag).'>';
+                       $remp2[] = '\x60'.trim($tag).'\x61';
+                       $remp2[] = '\x60/'.trim($tag).'\x61';
+               }
+       }       
+       $v_nom = str_replace($remp2, $remp1, supprimer_tags(str_replace($remp1, $remp2, $nom)));
+       return str_replace('&lt;', '<', $v_nom) == $nom;
+}
 
 // Verifier la conformite d'une ou plusieurs adresses email
 //  retourne false ou la  normalisation de la derniere adresse donnee
index b2e50dc..b8127c5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -104,6 +104,18 @@ function _image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cr
                $source = $img;
                $img = "<img src='$source' />";
        }
+       # gerer img src="data:....base64"
+       else if (preg_match('@^data:image/(jpe?g|png|gif);base64,(.*)$@isS', $source, $regs)) {
+               $local = sous_repertoire(_DIR_VAR,'image-data').md5($regs[2]).'.'.str_replace('jpeg', 'jpg', $regs[1]);
+               if (!file_exists($local)) {
+                       ecrire_fichier($local, base64_decode($regs[2]));
+               }
+               $source = $local;
+               $img = inserer_attribut($img, 'src', $source);
+               # eviter les mauvaises surprises lors de conversions de format
+               $img = inserer_attribut($img, 'width', '');
+               $img = inserer_attribut($img, 'height', '');
+       }
 
        // les protocoles web prennent au moins 3 lettres
        if (preg_match(';^(\w{3,7}://);', $source)){
@@ -135,7 +147,7 @@ function _image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cr
 
        if (@file_exists($f = $fichier)){
                list ($ret["hauteur"],$ret["largeur"]) = taille_image($img);
-               $date_src = @filemtime($f);
+               $date_src = filemtime($f);
        }
        elseif (@file_exists($f = "$fichier.src")
                AND lire_fichier($f,$valeurs)
@@ -310,7 +322,7 @@ function _image_gd_output($img,$valeurs, $qualite=_IMG_GD_QUALITE){
                if (@file_exists($valeurs['fichier_dest'])){
                        // dans tous les cas mettre a jour la taille de l'image finale
                        list ($valeurs["hauteur_dest"],$valeurs["largeur_dest"]) = taille_image($valeurs['fichier_dest']);
-                       $valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition
+                       $valeurs['date'] = filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition
                        ecrire_fichier($valeurs['fichier_dest'].'.src',serialize($valeurs),true);
                }
                
@@ -378,7 +390,9 @@ function image_graver($img){
 }
 
 // Transforme une image a palette indexee (256 couleurs max) en "vraies" couleurs RGB
+// Existe seulement pour compatibilite avec PHP < 5.5
 // http://doc.spip.org/@imagepalettetotruecolor
+if (!function_exists("imagepalettetotruecolor")) {
  function imagepalettetotruecolor(&$img) {
        if ($img AND !imageistruecolor($img) AND function_exists('imagecreatetruecolor')) {
                $w = imagesx($img);
@@ -397,6 +411,7 @@ function image_graver($img){
                $img = $img1;
        }
 }
+}
 
 // http://doc.spip.org/@image_tag_changer_taille
 function _image_tag_changer_taille($tag,$width,$height,$style=false){
@@ -659,7 +674,7 @@ function _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process='AUTO',
        
        $retour['fichier'] = $vignette;
        $retour['format'] = $format;
-       $retour['date'] = @filemtime($vignette);
+       $retour['date'] = (file_exists($vignette)) ? filemtime($vignette) : 0;
        
        // renvoyer l'image
        return $retour;
index fcf9543..4b9c22e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5ca260d..8144c10 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -25,7 +25,9 @@ function filtre_multipart_dist($t) {return '';}
 
 // http://doc.spip.org/@filtre_text_txt_dist
 function filtre_text_dist($t) {
-       return '<pre>' . echapper_tags($t) . '</pre>';
+       static $t1 = array('&', '<', '>');
+       static $t2 = array('&amp;', '&lt;', '&gt;');
+       return '<pre>' . str_replace($t1, $t2, $t) . '</pre>';
 }
 
 // http://doc.spip.org/@filtre_text_csv_dist
index 077b239..55e5dde 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -23,17 +23,15 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 // inspire (de loin) par PEAR:NetURL:resolvePath
 //
 // http://doc.spip.org/@resolve_path
-function resolve_path($url) {
-       list($url, $query) = explode('?', $url,2);
-       while (preg_match(',/\.?/,', $url, $regs)               # supprime // et /./
+function resolve_path($url_o) {
+       preg_match('@^([^?]*)(.*)$@', $url_o, $regs);
+       list(,$url, $query) = $regs;
+       while (preg_match(',/\.?/,', $url, $regs)       # supprime // et /./
        OR preg_match(',/[^/]*/\.\./,S', $url, $regs)   # supprime /toto/../
-       OR preg_match(',^/\.\./,S', $url, $regs))               # supprime les /../ du haut
+       OR preg_match(',^/\.\./,S', $url, $regs))       # supprime les /../ du haut
                $url = str_replace($regs[0], '/', $url);
 
-       if ($query)
-               $url .= '?'.$query;
-
-       return '/'.preg_replace(',^/,S', '', $url);
+       return '/'.preg_replace(',^/,S', '', $url . $query);
 }
 
 // 
index 9bdad6d..99e30b1 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -177,9 +177,13 @@ function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false, $trunca
                        spip_fclose_unlock($fp);
                }
 
-       // liberer le verrou et fermer le fichier
+               // liberer le verrou et fermer le fichier
                @chmod($fichier, _SPIP_CHMOD & 0666);
-               if ($ok) return $ok;
+               if ($ok) {
+                       if (!defined('_OPCACHE_BUG') AND function_exists('opcache_invalidate'))
+                               opcache_invalidate($fichier, true);
+                       return $ok;
+               }
        }
 
        include_spip('inc/autoriser');
index e492599..40e98cc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -46,33 +46,46 @@ function inc_formater_article_dist($row, $own='')
                if ($logo = $chercher_logo($id_article, 'id_article', 'on')) {
                        list($fid, $dir, $nom, $format) = $logo;
                        include_spip('inc/filtres_images_mini');
-                       $logo = image_reduire("<img src='$fid' alt='' />", 26, 20);
-               }
+                       $logo = "<span style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>" .
+                         image_reduire("<img src='$fid' alt='' />", 26, 20) .
+                         "</span>";
+               } else $logo = '';
        } else $logo ='';
 
-       $titre = sinon($row['titre'], _T('ecrire:info_sans_titre'));
+       $titre = supprime_img($row['titre'],'');
        $id_rubrique = $row['id_rubrique'];
        $date = $row['date'];
        $statut = $row['statut'];
        $descriptif = $row['descriptif'];
-       $lang_dir = lang_dir(($lang = $row['lang']) ? changer_typo($lang):'');
-
-       $lien  = "<div>"
+       $lang = $row['lang'];
+       $dir = "dir='" . lang_dir($lang ? changer_typo($lang) : '') . "'";
+       if ($lang AND $afficher_langue AND $lang != $GLOBALS['meta']['langue_site'])
+               $lang = " <span class='spip_xx-small' style='color: #666666' "
+                 . $dir
+                 . '>('
+                 . traduire_nom_langue($lang)
+                 . ')</span>';
+       else $lang = '';
+
+       $arg = "id_article=$id_article";
+       $url_a = generer_url_ecrire("articles", $arg);
+       if (!$row['petition'])
+               $petition = '';
+       else
+               $petition = " <a href='" . generer_url_ecrire('controle_petition', $arg) . "' class='spip_xx-small' style='color: red'>"._T('lien_petitions') . "</a>";
+
+       $lien = "<div>"
+       . $logo
+       . (acces_restreint_rubrique($id_rubrique) ? $img_admin : '')
        . "<a href='"
-       . generer_url_ecrire("articles","id_article=$id_article")
+       . $url_a
        . "'"
-       . (!$descriptif ? '' : 
-            (' title="'.attribut_html(typo($descriptif)).'"'))
-       . " dir='$lang_dir'>"
-       . (!$logo ? '' :
-          ("<span style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>" . $logo . "</span>"))
-       . (acces_restreint_rubrique($id_rubrique) ? $img_admin : '')
-         . typo(supprime_img($titre,''))
-       . (!($afficher_langue AND $lang != $GLOBALS['meta']['langue_site'] AND strlen($lang)) ? '' :
-          (" <span class='spip_xx-small' style='color: #666666' dir='$lang_dir'>(".traduire_nom_langue($lang).")</span>"))
-         . (!$row['petition'] ? '' :
-            ("</a> <a href='" . generer_url_ecrire('controle_petition', "id_article=$id_article") . "' class='spip_xx-small' style='color: red'>"._T('lien_petitions')))
+       . (!$descriptif ? '': (' title="'.attribut_html(typo($descriptif)).'"'))
+       . " $dir>"
+       . typo(strlen($titre) ? $titre : _T('ecrire:info_sans_titre'))
        . "</a>"
+       . $lang
+       . $petition
        . "</div>";
        
        if ($spip_display == 4) return array($lien);
index 289a30a..668a21a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7daccd6..a34dab5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9426ee8..3584186 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5dd512e..f11c136 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -13,7 +13,7 @@
 if (!defined('_ECRIRE_INC_VERSION')) return;
 include_spip('inc/forum');
 include_spip('inc/filtres');
-include_spip('inc/actions');
+include_spip('inc/auth'); // pour ask_php_auth
 
 // Ce fichier est inclus par dist/formulaires/forum.php
 
@@ -150,13 +150,11 @@ function forum_insert_base($c, $id_forum, $id_article, $id_breve, $id_syndic, $i
        if ($afficher_texte AND forum_insert_noprevisu()) {
                return false;
        }
-
        if (array_reduce($_POST, 'reduce_strlen', (20 * 1024)) < 0) {
                ask_php_auth(_T('forum_message_trop_long'),
                        _T('forum_cliquer_retour',
                                array('retour_forum' => $retour)));
        }
-
        // Entrer le message dans la base
        $id_message = sql_insertq('spip_forum', array(
                'date_heure'=> date('Y-m-d H:i:s'),
index 2b73e98..caef3f1 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -23,16 +23,30 @@ include_spip('inc/presentation');
 // 2. Au survol, sera execute un script en Ajax menu_{gadget}.php
 //
 
-
 // http://doc.spip.org/@bandeau_gadgets
 function bandeau_gadgets($largeur, $options, $id_rubrique) {
-  global $connect_id_auteur, $spip_lang_rtl, $spip_lang, $spip_lang_left, $spip_lang_right, $spip_ecran;
+       return "<div id='bandeau-gadgets'>" .
+         "\n<div style='width:{$largeur}px' class='centered'>" .
+         "\n<div style='position: relative; z-index: 1000; height:1%'>" .
+         bandeau_gadget_menu_rubriques() .
+         bandeau_gadget_navigation_rapide($id_rubrique) .
+         bandeau_gadget_recherche() .
+         (($GLOBALS['meta']['messagerie_agenda'] != 'non') 
+          ? bandeau_gadget_agenda_messagerie() : '') .
+         bandeau_gadget_suivi_activite () .
+         // -------- Affichage de droite ----------
+         bandeau_gadget_deconnection() .
+         bandeau_gadget_couleurs() .
+         "</div></div></div>\n";
+}
 
-       $bandeau = "<div id='bandeau-gadgets'>".
-       "\n<div style='width:{$largeur}px' class='centered'>\n<div style='position: relative; z-index: 1000; height:1%'>"
+function bandeau_gadget_menu_rubriques()
+{
+       global $spip_lang_left;
 
-       // GADGET Menu rubriques
-       "\n<div id='bandeautoutsite' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 0px;'>"
+       return
+       "\n<div id='bandeautoutsite' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 0px;'>"
        . "<a href='"
        . generer_url_ecrire("articles_tous")
        . "' class='lien_sous'" 
@@ -41,53 +55,65 @@ function bandeau_gadgets($largeur, $options, $id_rubrique) {
        . "</a>"
        . "\n<div id='gadget-rubriques'></div>"
        . "</div>";
-       // FIN GADGET Menu rubriques
+}      // FIN GADGET Menu rubriques
 
+function bandeau_gadget_navigation_rapide($id_rubrique)
+{
+       global $spip_lang_left;
 
-       // GADGET Navigation rapide
-       $bandeau .= "<div id='bandeaunavrapide' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 30px;'>"
-       . "<a href='" . generer_url_ecrire("brouteur", ($id_rubrique ? "id_rubrique=$id_rubrique" : '')) . "' class='lien_sous'>" . _T('icone_brouteur') . "</a>"
+        return
+       "<div id='bandeaunavrapide' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 30px;'>"
+       . "<a href='" . generer_url_ecrire("brouteur", ($id_rubrique ? "id_rubrique=$id_rubrique" : '')) . "' class='lien_sous'>"
+       . _T('icone_brouteur')
+       . "</a>"
        . "\n<div id='gadget-navigation'></div>\n"
        . "</div>\n";
-       // FIN GADGET Navigation rapide
+}      // FIN GADGET Navigation rapide
+
+function bandeau_gadget_recherche()
+{
+       global $spip_lang_left;
 
-       // GADGET Recherche
        $r =  _T('info_rechercher');
-       $bandeau .= "\n<div id='bandeaurecherche' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 60px;'>"
+
+       return "\n<div id='bandeaurecherche' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 60px;'>"
        . generer_form_ecrire('recherche', 
                ("<input type='text' size='10' value='$r' name='recherche' class='formo' accesskey='r' id='form_recherche' style='width: 140px;' />"),
                " method='get' style='margin: 0px; position: relative;'")
        . "</div>";
-       // FIN GADGET recherche
+}      // FIN GADGET recherche
+
 
-       // messagerie et agenda
-       if ($GLOBALS['meta']['messagerie_agenda'] != 'non') {
-               // GADGET Agenda
-               $bandeau .= "<div id='bandeauagenda' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 100px;'>"
+function bandeau_gadget_agenda_messagerie()
+{
+       global $spip_lang_left;
+
+       return "<div id='bandeauagenda' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 100px;'>"
                . "<a href='" . generer_url_ecrire("calendrier","type=semaine") . "' class='lien_sous'>"
                . _T('icone_agenda')
                . "</a>"
                
                . "\n<div id='gadget-agenda'></div>\n"
-               . "</div>\n";
+               . "</div>\n"
                // FIN GADGET Agenda
 
                // GADGET Messagerie
-               $gadget = '';
-               $gadget .= "<div id='bandeaumessagerie' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 130px;'>";
-               $gadget .= "<a href='" . generer_url_ecrire("messagerie") . "' class='lien_sous'>";
-               $gadget .= _T('icone_messagerie_personnelle');
-               $gadget .= "</a>";
-               $gadget .= "\n<div id='gadget-messagerie'></div>\n";
-               $gadget .= "</div>";
 
-               $bandeau .= $gadget;
+               . "<div id='bandeaumessagerie' class='bandeau bandeau_couleur_sous' style='text-align:$spip_lang_left;$spip_lang_left: 130px;'>"
+               . "<a href='" . generer_url_ecrire("messagerie") . "' class='lien_sous'>"
+               . _T('icone_messagerie_personnelle')
+               . "</a>"
+               . "\n<div id='gadget-messagerie'></div>\n"
+               . "</div>";
+
+}      // FIN GADGET Messagerie
 
-               // FIN GADGET Messagerie
-       }
+function bandeau_gadget_suivi_activite ()
+{
+       global $spip_lang_left;
 
-       // Suivi activite
-       $bandeau .= "<div id='bandeausynchro' class='bandeau bandeau_couleur_sous' style='$spip_lang_left: 160px;'>"
+       return
+       "<div id='bandeausynchro' class='bandeau bandeau_couleur_sous' style='$spip_lang_left: 160px;'>"
        . "<a href='" . generer_url_ecrire("synchro") . "' class='lien_sous'>"
        . _T('icone_suivi_activite')
        . "</a>"
@@ -104,19 +130,28 @@ function bandeau_gadgets($largeur, $options, $id_rubrique) {
        . "</a>"
        . "</div>";
 */
-               
-               //
-               // -------- Affichage de droite ----------
-       
-               // Deconnection
-       $bandeau .= "\n<div class='bandeau bandeau_couleur_sous' id='bandeaudeconnecter' style='$spip_lang_right: 0px;'>";
-       $bandeau .= "<a href='" . generer_url_action("logout","logout=prive") . "' class='lien_sous'>"._T('icone_deconnecter')."</a>".aide("deconnect");
-       $bandeau .= "</div>";
-       
+}
+
+function bandeau_gadget_deconnection()
+{
+       global $spip_lang_right;
+
+       return
+       "\n<div class='bandeau bandeau_couleur_sous' id='bandeaudeconnecter' style='$spip_lang_right: 0px;'>"
+       . "<a href='"
+       . generer_url_action("logout","logout=prive")
+       . "' class='lien_sous'>"._T('icone_deconnecter')."</a>"
+       . aide("deconnect")
+       . "</div>";
+}
+
+function bandeau_gadget_couleurs()
+{
+       global $spip_ecran, $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
        $decal = 0;
        $decal = $decal + 150;
 
-       $bandeau .= "\n<div id='bandeauinterface' class='bandeau bandeau_couleur_sous' style='$spip_lang_right: ".$decal."px; text-align: $spip_lang_right; white-space: nowrap;'>";
+       $bandeau = "\n<div id='bandeauinterface' class='bandeau bandeau_couleur_sous' style='$spip_lang_right: ".$decal."px; text-align: $spip_lang_right; white-space: nowrap;'>";
        
        // couleurs
 //     $couleurs = charger_fonction('couleurs', 'inc');
@@ -129,24 +164,18 @@ function bandeau_gadgets($largeur, $options, $id_rubrique) {
          . lien_change_var (generer_action_auteur('preferer',"display:1", $self),'','', '1,0,18,15', _T('lien_afficher_texte_seul'))
          . lien_change_var (generer_action_auteur('preferer',"display:2", $self),'','', '19,0,40,15', _T('lien_afficher_texte_icones'))
          . lien_change_var (generer_action_auteur('preferer',"display:3", $self),'','', '41,0,59,15', _T('lien_afficher_icones_seuls'))
-               . "\n</map></div>";
+         . "\n</map></div>";
+
        $bandeau .= "<div id='preferences_menu'>"
                . http_img_pack("choix-layout$spip_lang_rtl".($spip_lang=='he'?'_he':'').".gif", _T('choix_interface'), " style='vertical-align: middle' width='59' height='15' usemap='#map_layout'")
                . http_img_pack("rien.gif", "", "width='10' height='1'")
                . "</div>";
-       // ecran
+       // ecran 
        if ($spip_ecran == "large") 
                $bandeau .= "<div id='preferences_ecran'><a href='".generer_action_auteur('preferer',"spip_ecran:etroit", $self)."' class='lien_sous'>"._T('info_petit_ecran')."</a>/<b>"._T('info_grand_ecran')."</b></div>";
        else
                $bandeau .= "<div id='preferences_ecran'><b>"._T('info_petit_ecran')."</b>/<a href='".generer_action_auteur('preferer',"spip_ecran:large", $self)."' class='lien_sous'>"._T('info_grand_ecran')."</a></div>";
        $bandeau .= "</div>";
-
-
-       $bandeau .= "</div>";
-       $bandeau .= "</div>\n";
-
-
-       $bandeau .= '</div>';
        
        return $bandeau;
 }
@@ -208,16 +237,17 @@ function repercuter_gadgets($id_rubrique) {
 
        // comme on cache fortement ce menu,
        // son url change en fonction de sa date de modif
-       $toutsite = "./?exec=menu_rubriques\\x26date=" .  $GLOBALS['meta']['date_calcul_rubriques'];
-       $navrapide = "./?exec=menu_navigation\\x26id_rubrique=$id_rubrique";
-       $agenda = "./?exec=menu_agenda";
 
-       return
-       
-        "\ninit_gadgets('$toutsite','$navrapide','$agenda','"
-        .str_replace('</', '<\\/', addslashes(strtr(gadget_messagerie(),"\n\r","  ")))
-        ."');\n";
+       $d =  isset($GLOBALS['meta']['date_calcul_rubriques']) 
+         ? $GLOBALS['meta']['date_calcul_rubriques'] : 0;
+
+       $args = join("',\n'", array(
+                     "./?exec=menu_rubriques\\x26date=$d",
+                     "./?exec=menu_navigation\\x26id_rubrique=$id_rubrique",
+                     "./?exec=menu_agenda",
+                     str_replace('</', '<\\/', addslashes(strtr(gadget_messagerie(),"\n\r","  ")))));
 
+       return "\$(document).ready(function(){init_bandeau_gadgets('$args')});";
 }
 
 ?>
index b601cd4..444e639 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a4f8260..441eb45 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -54,7 +54,7 @@ function copier_document($ext, $orig, $source) {
 
        $orig = preg_replace(',\.\.+,', '.', $orig); // pas de .. dans le nom du doc
        $dir = creer_repertoire_documents($ext);
-       $dest = preg_replace("/[^._=-\w\d]+/", "_", 
+       $dest = preg_replace("/[^.=\w-]+/", "_",
                        translitteration(preg_replace("/\.([^.]+)$/", "", 
                                                      preg_replace("/<[^>]*>/", '', basename($orig)))));
 
index 7a69591..b04e57e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ca48461..c1a8fb7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index bab461c..802047c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6f3b8fd..f31b326 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -460,7 +460,7 @@ function import_affiche_javascript($taille)
 
 
 // http://doc.spip.org/@affiche_progression_javascript
-function affiche_progression_javascript($abs_pos,$size, $table="") {
+function affiche_progression_javascript($abs_pos,$size, $table="", $retour='') {
 
        include_spip('inc/charsets');
        echo "\n<script type='text/javascript'><!--\n";
@@ -472,8 +472,9 @@ function affiche_progression_javascript($abs_pos,$size, $table="") {
                        echo "document.progression.recharge.value='".str_replace("'", "\\'", unicode_to_javascript(html2unicode(_T('avis_erreur').": $x")))." ';\n";
                }
                else {
+                       if (!$retour) $retour = self();
                        echo "document.progression.recharge.value='".str_replace("'", "\\'", unicode_to_javascript(html2unicode(_T('info_fini'))))."';\n";
-                       echo "window.setTimeout('location.href=\"".self()."\";',0);";
+                       echo "window.setTimeout('location.href=\"$retour\";',0);";
                }
        }
        else {
index 805f33c..0179fe5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 53752ec..5b87030 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 66377a5..c7d4491 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cd43d15..e71b307 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 
 if (!defined('_ECRIRE_INC_VERSION')) return;
 
+
 // http://doc.spip.org/@insere_1_init
 function insere_1_init($request) {
 
 //  table des translations
 
-       $field = array(
-               "type"          => "VARCHAR(16) NOT NULL",
-               "ajout"         => "integer NOT NULL", // en fait booleen
-               "titre"         => "text NOT NULL",
-                "id_old"       => "bigint (21) DEFAULT '0' NOT NULL",
-                "id_new"       => "bigint (21) DEFAULT '0' NOT NULL");
-
-       $key = array(
-                "PRIMARY KEY"  => "id_old, id_new, type",
-                "KEY id_old"   => "id_old");
-
-       $v = sql_create('spip_translate',  $field, $key, true);
+       $res = insere_1bis_init($request);
+       $desc = $GLOBALS['tables_principales'][_SPIP_TRANSLATE];
+       $v = sql_create(_SPIP_TRANSLATE, $desc['field'], $desc['key'], true);
        if (!$v) {
                spip_log("echec de la creation de la table de fusion");
                return  false; 
        }
        // au cas ou la derniere fois ce serait terminee anormalement
-       sql_delete("spip_translate");
-       // pour PG
-       $GLOBALS['tables_principales']['spip_translate'] = 
-               array('field' => $field, 'key' => $key);
-       return insere_1bis_init($request);
+       $d = sql_delete(_SPIP_TRANSLATE);
+       spip_log("init " . _SPIP_TRANSLATE . " : $d");
+       return $res;
 }
 
 // http://doc.spip.org/@insere_1bis_init
-function insere_1bis_init($request) {
+function insere_1bis_init($request='') {
 
        // l'insertion porte sur les tables principales ...
        $t = array_keys($GLOBALS['tables_principales']);
@@ -54,6 +44,26 @@ function insere_1bis_init($request) {
        unset($t[array_search('spip_forum', $t)]);
        unset($t[array_search('spip_syndic', $t)]);
        unset($t[array_search('spip_signatures', $t)]);
+
+       $field = array(
+               "type"          => "VARCHAR(16) NOT NULL",
+               "ajout"         => "integer NOT NULL", // en fait booleen
+               "titre"         => "text NOT NULL",
+                "id_old"       => "bigint (21) DEFAULT '0' NOT NULL",
+                "id_new"       => "bigint (21) DEFAULT '0' NOT NULL");
+
+       $key = array(
+                "PRIMARY KEY"  => "id_old, id_new, type",
+                "KEY id_old"   => "id_old");
+
+       define('_SPIP_TRANSLATE',
+              'spip_translate_' . $GLOBALS['visiteur_session']['id_auteur']);
+
+       // Pour que trouver_base ne fasse pas des siennes
+       // mais evidemment elle n'est pas a transferer!
+       $GLOBALS['tables_principales'][_SPIP_TRANSLATE] = 
+               array('field' => $field, 'key' => $key);
+
        return $t;
 }
 
@@ -88,11 +98,14 @@ function translate_init($request) {
        include_spip('inc/chercher_logo'); // pour les noms des logos
        include_spip('inc/distant'); // pour recuperer les logos
 
-       $q = sql_select('*', "spip_translate");
+       $q = sql_select('*', _SPIP_TRANSLATE);
        $trans = array();
        while ($r = sql_fetch($q)) {
                $trans[$r['type']][$r['id_old']] = array($r['id_new'], $r['titre'], $r['ajout']);
        }
+       $r = '';
+       foreach ($trans as $k =>$v) $r .= " $k: " . count($v);
+       spip_log( count($trans) . " types d'objets a transferer: $r");
        return $trans;
 }
 
@@ -106,7 +119,7 @@ function import_insere($values, $table, $desc, $request, $atts) {
        // reserver une place dans les tables principales si nouveau
        $ajout = 0;
 
-       if ((!function_exists($f = 'import_identifie_' . $type_id))
+       if ((!($f = charger_fonction('identifie_' . $type_id, 'import', true)))
        OR (!($n = $f($values, $table, $desc, $request)))) {
           // pas d'importation de types_doc (a revoir)
                if ($table == 'spip_types_documents') return;
@@ -117,7 +130,7 @@ function import_insere($values, $table, $desc, $request, $atts) {
        if (is_array($n))
                list($id, $titre) = $n; 
        else {$id = $n; $titre = "";}
-       sql_insertq('spip_translate', array(
+       sql_insertq(_SPIP_TRANSLATE, array(
                   'id_old' => $values[$type_id],
                   'id_new' => $id,
                   'titre' => $titre,
@@ -134,8 +147,8 @@ function import_insere($values, $table, $desc, $request, $atts) {
 // http://doc.spip.org/@import_translate
 function import_translate($values, $table, $desc, $request, $atts) {
 
-       if (!function_exists($f = 'import_translate_' . $table))
-         $f = 'import_translate_std';
+       if (!($f = charger_fonction('translate_' . $table, 'import', true)))
+               $f = charger_fonction('translate_std', 'import');
        $f($values, $table, $desc, $request, $atts);
 }
 
@@ -175,39 +188,43 @@ function import_inserer_translate($values, $table, $desc, $request, $atts) {
 
 // Insertion avec renumerotation, y compris des raccourcis.
 // http://doc.spip.org/@import_translate_std
-function import_translate_std($values, $table, $desc, $request, $atts) {
+function import_translate_std_dist($values, $table, $desc, $request, $atts) {
 
        foreach ($values as $k => $v) {
-               if ($k=='id_parent' OR $k=='id_secteur')
-                               $type = 'id_rubrique';
-               else $type = $k;
-
-               $values[$k]= importe_raccourci(importe_translate_maj($type, $v));
+         switch($k) {
+         case 'id_secteur': $type = 'id_rubrique'; break;
+         case 'id_thread': $type = 'id_forum'; break;
+         case 'id_vignette': $type = 'id_document'; break;
+         case 'id_parent': $type =
+             isset($values['id_forum']) ? 'id_forum' : 'id_rubrique'; break;
+         default: $type = $k;
+         }
+         $values[$k]= importe_raccourci(importe_translate_maj($type, $v));
        }
        import_inserer_translate($values, $table, $desc, $request, $atts);
 }
 
 // http://doc.spip.org/@import_translate_spip_articles
-function import_translate_spip_articles($values, $table, $desc, $request, $atts) {
+function import_translate_spip_articles_dist($values, $table, $desc, $request, $atts) {
        $v = $values['chapo']; 
        if ($v[0]=='=' AND preg_match(_RACCOURCI_CHAPO, substr($v,1)))
                $values['chapo'] = '=[->' . substr($v,1) . ']';
        if ($request['statut'] == 'on' AND $values['statut'] == 'publie')
                $values['statut'] = 'prop';
-       import_translate_std($values, $table, $desc, $request, $atts);
+       import_translate_std_dist($values, $table, $desc, $request, $atts);
 }
 
 // http://doc.spip.org/@import_translate_spip_breves
-function import_translate_spip_breves($values, $table, $desc, $request, $atts) {
+function import_translate_spip_breves_dist($values, $table, $desc, $request, $atts) {
        if ($request['statut'] == 'on' AND $values['statut'] == 'publie')
                $values['statut'] = 'prop';
-       import_translate_std($values, $table, $desc, $request, $atts);
+       import_translate_std_dist($values, $table, $desc, $request, $atts);
 }
 
 // Les doc importes deviennent distants, a fortiori s'ils etaient deja
 // Gerer les vieilles sauvegardes oĂą le Path etait en dur
 // http://doc.spip.org/@import_translate_spip_documents
-function import_translate_spip_documents($values, $table, $desc, $request, $atts) {
+function import_translate_spip_documents_dist($values, $table, $desc, $request, $atts) {
 
        if ($values['distant'] === 'oui') {
                $url = '';
@@ -230,7 +247,7 @@ function import_translate_spip_documents($values, $table, $desc, $request, $atts
        import_inserer_translate($values, $table, $desc, $request, $atts);
 }
 
-function import_translate_spip_documents_liens($values, $table, $desc, $request, $atts) {
+function import_translate_spip_documents_liens_dist($values, $table, $desc, $request, $atts) {
 
        $values['id_document']= (importe_translate_maj('id_document', $values['id_document']));
        $values['id_objet']= (importe_translate_maj('id_' .$values['objet'], $values['id_objet']));
@@ -250,18 +267,21 @@ function import_translate_spip_documents_liens($values, $table, $desc, $request,
 function importe_translate_maj($k, $v)
 {
        global $trans;
+       static $err = array();
        if (!(isset($trans[$k]) AND isset($trans[$k][$v]))) return $v;
        list($g, $titre, $ajout) = $trans[$k][$v];
        if ($g <= 0) {
-               $f = 'import_identifie_parent_' . $k;
-               if (function_exists($f)) {
+         if (($f = charger_fonction('identifie_parent_' . $k, 'import', true))){
                        $g = $f($g, $titre, $v);
                        if ($g > 0)
                          // memoriser qu'on insere
                                $trans[$k][$v][2]=1;
                        else $g = (0-$g);
                        $trans[$k][$v][0] = $g;
-               } else spip_log("$f manquante");
+         } else {
+           if (!isset($err[$f])) spip_log("$f manquante");
+           $err[$f] = true;
+         }
        }
        return $g;
 }
@@ -304,7 +324,7 @@ function importe_raccourci($v)
 // s'ils ont meme taille et meme nom et que le present n'est pas detruit
 // Et ne pas importer les incoherences (docs sans extension)
 // http://doc.spip.org/@import_identifie_id_document
-function import_identifie_id_document($values, $table, $desc, $request) {
+function import_identifie_id_document_dist($values, $table, $desc, $request) {
        if (!$values['extension']) return false;
        $t = $values['taille'];
        $f = $values['fichier'];
@@ -321,7 +341,7 @@ function import_identifie_id_document($values, $table, $desc, $request) {
 // s'ils ont meme extension et meme titre
 // Sinon il ne sera PAS importe
 // http://doc.spip.org/@import_identifie_id_type
-function import_identifie_id_type($values, $table, $desc, $request) {
+function import_identifie_id_type_dist($values, $table, $desc, $request) {
        $e = $values['extension'];
        $t = $values['titre'];
        $r = sql_fetsel("id_type AS id, titre", "spip_types_documents", "extension=" . sql_quote($e) . " AND titre=" . sql_quote($t));
@@ -330,7 +350,7 @@ function import_identifie_id_type($values, $table, $desc, $request) {
 
 // deux groupes de mots ne peuvent avoir le meme titre ==> identification
 // http://doc.spip.org/@import_identifie_id_groupe
-function import_identifie_id_groupe($values, $table, $desc, $request)  {
+function import_identifie_id_groupe_dist($values, $table, $desc, $request)  {
        $r = sql_fetsel("id_groupe AS id, titre", "spip_groupes_mots", "titre=" . sql_quote($values['titre']));
        return $r ? array($r['id'], $r['titre']) : false;
 }
@@ -338,13 +358,13 @@ function import_identifie_id_groupe($values, $table, $desc, $request)  {
 // pour un mot le titre est insuffisant, il faut aussi l'identite du groupe.
 // Memoriser ces 2 infos et le signaler a import_translate grace a 1 negatif
 // http://doc.spip.org/@import_identifie_id_mot
-function import_identifie_id_mot($values, $table, $desc, $request) {
+function import_identifie_id_mot_dist($values, $table, $desc, $request) {
        return array((0 - $values['id_groupe']), $values['titre']);
 }
 
 // Passe 2: mot de meme titre et de meme groupe ==> identification
 // http://doc.spip.org/@import_identifie_parent_id_mot
-function import_identifie_parent_id_mot($id_groupe, $titre, $v)
+function import_identifie_parent_id_mot_dist($id_groupe, $titre, $v)
 {
        global $trans;
        $titre = sql_quote($titre);
@@ -356,26 +376,27 @@ function import_identifie_parent_id_mot($id_groupe, $titre, $v)
                if ($r) return  (0 - $r['id_mot']);
        }
        if ($r = sql_insertq('spip_mots'))
-               sql_replace('spip_translate', array(
+               sql_replace(_SPIP_TRANSLATE, array(
                                            'id_old' => $v,
                                            'id_new' => $r,
                                            'titre' => $titre,
                                            'type' => 'id_mot',
-                                           'ajout' => 1));
+                                           'ajout' => 1),
+                           $GLOBALS['tables_principales'][_SPIP_TRANSLATE]);
        else spip_log("Impossible d'inserer dans spip_mots");
        return $r;
 }
 
 // idem pour les articles
 // http://doc.spip.org/@import_identifie_id_article
-function import_identifie_id_article($values, $table, $desc, $request) {
+function import_identifie_id_article_dist($values, $table, $desc, $request) {
        return array((0 - $values['id_rubrique']), $values['titre']);
 }
 
 // Passe 2 des articles comme pour les mots
 
 // http://doc.spip.org/@import_identifie_parent_id_article
-function import_identifie_parent_id_article($id_parent, $titre, $v)
+function import_identifie_parent_id_article_dist($id_parent, $titre, $v)
 {
        $id_parent = importe_translate_maj('id_rubrique', (0 - $id_parent));
 
@@ -384,13 +405,13 @@ function import_identifie_parent_id_article($id_parent, $titre, $v)
        if ($r) return (0 - $r['id_article']);
 
        if ($r = sql_insertq('spip_articles'))
-               sql_replace('spip_translate', array(
+               sql_replace(_SPIP_TRANSLATE, array(
                                            'id_old' => $v,
                                            'id_new' => $r,
                                            'titre' => $titre,
                                            'type' => 'id_article',
                                            'ajout' => 1),
-                       $GLOBALS['tables_principales']['spip_translate']
+                       $GLOBALS['tables_principales'][_SPIP_TRANSLATE]
                    );
        else spip_log("Impossible d'inserer dans spip_articles");
        return $r;
@@ -398,14 +419,14 @@ function import_identifie_parent_id_article($id_parent, $titre, $v)
 
 // idem pour les breves
 // http://doc.spip.org/@import_identifie_id_breve
-function import_identifie_id_breve($values, $table, $desc, $request) {
+function import_identifie_id_breve_dist($values, $table, $desc, $request) {
        return array((0 - $values['id_rubrique']), $values['titre']);
 }
 
 // Passe 2 des breves comme pour les mots
 
 // http://doc.spip.org/@import_identifie_parent_id_breve
-function import_identifie_parent_id_breve($id_parent, $titre, $v)
+function import_identifie_parent_id_breve_dist($id_parent, $titre, $v)
 {
        $id_parent = importe_translate_maj('id_rubrique', (0 - $id_parent));
 
@@ -414,13 +435,13 @@ function import_identifie_parent_id_breve($id_parent, $titre, $v)
        if ($r) return (0 - $r['id_breve']);
 
        if ($r = sql_insertq('spip_breves'))
-               sql_replace('spip_translate', array(
+               sql_replace(_SPIP_TRANSLATE, array(
                                            'id_old' => $v,
                                            'id_new' => $r,
                                            'titre' => $titre,
                                            'type' => 'id_breve',
                                            'ajout' => 1),
-                       $GLOBALS['tables_principales']['spip_translate']
+                       $GLOBALS['tables_principales'][_SPIP_TRANSLATE]
                    );
        else spip_log("Impossible d'inserer dans spip_breves");
        return $r;
@@ -430,14 +451,14 @@ function import_identifie_parent_id_breve($id_parent, $titre, $v)
 // pour une rubrique le titre est insuffisant, il faut l'identite du parent
 // Memoriser ces 2 infos et le signaler a import_translate grace a 1 negatif
 // http://doc.spip.org/@import_identifie_id_rubrique
-function import_identifie_id_rubrique($values, $table, $desc, $request) {
+function import_identifie_id_rubrique_dist($values, $table, $desc, $request) {
        return array((0 - $values['id_parent']), $values['titre']);
 }
 
 // Passe 2 des rubriques, renumerotation en cascade. 
 // rubrique de meme titre et de meme parent ==> identification
 // http://doc.spip.org/@import_identifie_parent_id_rubrique
-function import_identifie_parent_id_rubrique($id_parent, $titre, $v)
+function import_identifie_parent_id_rubrique_dist($id_parent, $titre, $v)
 {
        global $trans;
        if (isset($trans['id_rubrique'])) {
@@ -450,7 +471,7 @@ function import_identifie_parent_id_rubrique($id_parent, $titre, $v)
                        else {
                          // premiere occurrence du parent
                                $pitre = $trans['id_rubrique'][$id_parent][1];
-                               $n = import_identifie_parent_id_rubrique($gparent, $pitre, $id_parent);
+                               $n = import_identifie_parent_id_rubrique_dist($gparent, $pitre, $id_parent);
                                $trans['id_rubrique'][$id_parent][0] = ($n>0) ? $n: (0-$n);
                                // parent tout neuf,
                                // pas la peine de chercher un titre homonyme
@@ -474,14 +495,14 @@ function import_identifie_parent_id_rubrique($id_parent, $titre, $v)
 
 // http://doc.spip.org/@import_alloue_id_rubrique
 function import_alloue_id_rubrique($id_parent, $titre, $v) {
-       if ($r = sql_insertq('spip_rubriques', array('titre' => $titre, id_parent => $id_parent)))
-               sql_replace('spip_translate', array(
+       if ($r = sql_insertq('spip_rubriques', array('titre' => $titre, 'id_parent' => $id_parent)))
+               sql_replace(_SPIP_TRANSLATE, array(
                    'id_old' => $v,
                    'id_new' => $r,
                    'titre' => $titre,
                    'type' => 'id_rubrique',
                    'ajout' => 1),
-         $GLOBALS['tables_principales']['spip_translate']);
+         $GLOBALS['tables_principales'][_SPIP_TRANSLATE]);
        else spip_log("Impossible d'inserer dans spip_rubriques");
        return $r;
 }
index 034b874..5f1d04d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 975d8f5..de2446f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f9cd364..3f4ac9c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -56,8 +56,10 @@ function analyse_fichier_connection($file)
                array_shift($regs);
                return $regs;
        } else {
-               $arg = '\s*\'([^\']*)\'\s*,';
-               if (preg_match("#spip_connect_db\($arg$arg$arg$arg\s*'([^']*)'\s*(?:,\s*'([^']*))?#", $s, $regs)) {
+               $ar = '\s*\'([^\']*)\'';
+               $r = '\s*,' . $ar;
+               $r = "#spip_connect_db[(]$ar$r$r$r$r(?:$r(?:$r(?:$r)?)?)?#";
+               if (preg_match($r, $s, $regs)) {
                        $regs[2] = $regs[1] . (!$regs[2] ? '' : ":$port_db;");
                        array_shift($regs);
                        array_shift($regs);
@@ -65,7 +67,7 @@ function analyse_fichier_connection($file)
                }
        }
        spip_log("$file n'est pas un fichier de connexion");
-       return '';
+       return array();
 }
 
 // http://doc.spip.org/@bases_referencees
index 20cb920..4e4289e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 88496d8..6e2fbe5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3c82770..c51cb2c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7dee092..03b58dd 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 19c7338..f369286 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8001297..b64692b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -143,7 +143,9 @@ function texte_upload_manuel($dir, $mode = 'document') {
 
        foreach ($fichiers as $f) {
                $f = preg_replace(",^$dir,",'',$f);
-               if (preg_match(",\.([^.]+)$,", $f, $match)) {
+               if (!preg_match(",\.([^.]+)$,", $f, $match))
+                 if (strtolower($f) === 'makefile') $match = array(0,'txt');
+               if ($match) {
                        $ext = strtolower($match[1]);
                        if (!isset($exts[$ext])) {
                                include_spip('inc/ajouter_documents');
index bf636dd..2c41c39 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 736b9d1..5f0efa7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -346,13 +346,16 @@ function init_langues() {
 }
 
 // http://doc.spip.org/@html_lang_attributes
-function html_lang_attributes()
+function html_lang_attributes($dir=true)
 {
+       if ($dir)
+               $dir = " dir='" . ($GLOBALS['spip_lang_rtl'] ? 'rtl' : 'ltr') . "'";
+
        return  "<html lang='"
        . $GLOBALS['spip_lang']
-       . "' dir='"
-       . ($GLOBALS['spip_lang_rtl'] ? 'rtl' : 'ltr')
-         . "'>\n" ;
+       . "'"
+       . $dir
+       . ">\n" ;
 }
 init_langues();
 utiliser_langue_site();
index 72679eb..9212269 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index db73d0d..28fd798 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e49ab34..d0d3263 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -73,8 +73,8 @@ function legender_entete($document)
 {
        $titre = $document['titre'];
        $entete = basename($document['fichier']);
-       if (($n=strlen($entete)) > 20)
-               $entete = substr($entete, 0, 7)."...".substr($entete, $n-7, $n);
+       if (strlen($entete) > 20)
+               $entete = substr($entete, 0, 20)."...";
        if (strlen($titre))
                $entete = "<strong>". lignes_longues(typo($titre),25) . "</strong>";
        return sinon($entete,_T('info_sans_titre'));
index 0c169f6..17943ff 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -54,7 +54,13 @@ function inc_lien_dist($lien, $texte='', $class='', $title='', $hlang='', $rel='
                $class = "spip_mail";
        elseif (preg_match('/^<html>/',$texte)) # cf traiter_lien_explicite
                $class = "spip_url spip_out";
-       elseif (!$class) $class = "spip_out"; # si pas spip_in|spip_glossaire
+       elseif (!$class) {
+               # spip_out sur les URLs externes
+               if (preg_match(',^\w+://,iS', $lien)
+               AND strncasecmp($lien, url_de_base(), strlen(url_de_base()))
+               )
+                $class = "spip_out"; # si pas spip_in|spip_glossaire
+        }
 
        // Si l'objet n'est pas de la langue courante, on ajoute hreflang
        if (!$hlang AND $lang!==$GLOBALS['spip_lang'])
@@ -62,7 +68,10 @@ function inc_lien_dist($lien, $texte='', $class='', $title='', $hlang='', $rel='
 
        $lang = ($hlang ? " hreflang='$hlang'" : '');
 
-       if ($title) $title = ' title="'.texte_backend($title).'"';
+       if ($title)
+               $title = ' title="'.texte_backend($title).'"';
+       else
+               $title = ''; // $title peut etre 'false'
 
        // rel=external pour les liens externes
        if (preg_match(',^https?://,S', $lien)
@@ -168,7 +177,7 @@ define('_RACCOURCI_ATTRIBUTS', '/^(.*?)([|]([^<>]*?))?([{]([a-z_]*)[}])?$/');
 // http://doc.spip.org/@traiter_raccourci_lien_atts
 function traiter_raccourci_lien_atts($texte) {
 
-       $bulle = $hlang = '';
+       $bulle = $hlang = false;
        // title et hreflang donnes par le raccourci ?
        if (preg_match(_RACCOURCI_ATTRIBUTS, $texte, $m)) {
 
@@ -287,7 +296,7 @@ function calculer_url ($ref, $texte='', $pour='url', $connect='') {
        return $r ? $r : traiter_lien_explicite($ref, $texte, $pour, $connect);
 }
 
-define('_EXTRAIRE_LIEN', ",^\s*(http:?/?/?|mailto:?)\s*$,iS");
+define('_EXTRAIRE_LIEN', ',^\s*(?:' . _PROTOCOLES_STD . '):?/?/?\s*$,iS');
 
 // http://doc.spip.org/@traiter_lien_explicite
 function traiter_lien_explicite ($ref, $texte='', $pour='url', $connect='')
@@ -350,9 +359,8 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='')
 
        // dans le cas d'un lien vers un doc, ajouter le type='mime/type'
        if ($type == 'document'
-       AND $mime = sql_getfetsel('mime_type', 'spip_types_documents',
-                       "extension IN (SELECT extension FROM spip_documents where id_document =".sql_quote($id).")",
-                       '','','','',$connect)
+         AND $extension = sql_getfetsel("extension","spip_documents", " id_document =".sql_quote($id), '', '', '', '', $connect)
+               AND $mime = sql_getfetsel('mime_type', 'spip_types_documents',"extension=".sql_quote($extension),'','','','',$connect)
        )
                $r['mime'] = $mime;
 
@@ -546,6 +554,7 @@ function traiter_raccourci_glossaire($texte)
                        $gloss = $m[1] ? ('#' . $m[1]) : '';
                        $t = $r[1] . $r[2] . $r[5];
                        list($t, $bulle, $hlang) = traiter_raccourci_lien_atts($t);
+                       if ($bulle===false) $bulle = $m[1];
                        $t = unicode2charset(charset2unicode($t), 'utf-8');
                        $ref = $lien("glose$_n$gloss", $t, 'spip_glossaire', $bulle, $hlang);
                        $texte = str_replace($regs[0], $ref, $texte);
index b15f1b7..4749cf7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -30,4 +30,4 @@ function inc_lien_court($url) {
        return $url;
 }
 
-?>
\ No newline at end of file
+?>
index 33ace37..9691015 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0edf5e5..fc81757 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index dc33c3f..45a1c32 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e3ddc9f..08fc4a9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1f7033d..3973953 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2df57e7..3c12b16 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6c15ba2..3765b3f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 09f3ad4..f860b72 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e1571b0..eaf82c4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 74cc3e2..77036e9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 38de46b..acbb93e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 687a467..380921f 100644 (file)
@@ -22,7 +22,7 @@
 //   The use of this software is at the risk of the user.
 //
 // --------------------------------------------------------------------------------
-// $Id: pclzip.php 14957 2010-01-22 17:10:56Z esj@rezo.net $
+// $Id: pclzip.php 20057 2012-12-18 12:35:40Z gilles.vincent@gmail.com $
 // --------------------------------------------------------------------------------
 
   // ----- Constants
index 3386f03..4ca3283 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7426228..229b68c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1faa441..dc82440 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ea9d5c7..b9c53b6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 320062d..c1a11c7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index eb3a579..f53d6f3 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -76,22 +76,13 @@ function afficher_onglets_pages($ordre,$onglets){
 
 // http://doc.spip.org/@debut_cadre
 function debut_cadre($style, $icone = "", $fonction = "", $titre = "", $id="", $class="", $padding=true) {
-       global $spip_display, $spip_lang_left;
+       global $spip_display;
        static $accesskey = 97; // a
 
        //zoom:1 fixes all expanding blocks in IE, see authors block in articles.php
        //being not standard, next step can be putting this kind of hacks in a different stylesheet
        //visible to IE only using conditional comments.
 
-       $style_cadre = " style='";
-       if ($spip_display != 1 AND $spip_display != 4 AND strlen($icone) > 1) {
-               $style_gauche = "padding-$spip_lang_left: 38px;";
-               $style_cadre .= "'";
-       } else {
-               $style_cadre .= "'";
-               $style_gauche = '';
-       }
-
        // accesskey pour accessibilite espace prive
        if ($accesskey <= 122) // z
        {
@@ -103,7 +94,7 @@ function debut_cadre($style, $icone = "", $fonction = "", $titre = "", $id="", $
        . ($id?"id='$id' ":"")
        ."class='cadre cadre-$style"
        . ($class?" $class":"")
-       ."'$style_cadre>";
+       ."'>";
 
        if ($spip_display != 1 AND $spip_display != 4 AND strlen($icone) > 1) {
                if ($fonction) {
@@ -438,14 +429,14 @@ function parametres_css_prive(){
 
 
 // http://doc.spip.org/@envoi_link
-function envoi_link($nom_site_spip, $minipres=false) {
+function envoi_link($nom_site_spip, $minipres=false, $js='') {
        global $spip_display, $spip_lang;
 
        $paramcss = parametres_css_prive();
 
        // CSS de secours en cas de non fonct de la suivante
        $res = '<link rel="stylesheet" type="text/css" href="'
-         . url_absolue(find_in_path('style_prive_defaut.css'))
+         . url_absolue(find_in_path('prive/style_prive_defaut.css'))
        . '" id="cssprivee" />'  . "\n"
 
        // CSS calendrier
@@ -454,20 +445,20 @@ function envoi_link($nom_site_spip, $minipres=false) {
                . url_absolue(find_in_path('agenda.css')) .'" />' . "\n"
                : '')
 
-       // CSS imprimante (masque des trucs, a completer)
+       // CSS des raccourcis
        . '<link rel="stylesheet" type="text/css" href="'
-         . url_absolue(find_in_path('spip_style.css'))
+         . url_absolue(find_in_path('prive/spip_style.css'))
        . '" media="all" />' . "\n"
 
        // CSS imprimante (masque des trucs, a completer)
        . '<link rel="stylesheet" type="text/css" href="'
-         . url_absolue(find_in_path('spip_style_print.css'))
+         . url_absolue(find_in_path('prive/spip_style_print.css'))
        . '" media="print" />' . "\n"
 
        // CSS "visible au chargement" differente selon js actif ou non
 
        . '<link rel="stylesheet" type="text/css" href="'
-         . url_absolue(find_in_path('spip_style_'
+         . url_absolue(find_in_path('prive/spip_style_'
                                     . (_SPIP_AJAX ? 'invisible' : 'visible')
                                     . '.css'))
        .'" />' . "\n"
@@ -482,7 +473,7 @@ function envoi_link($nom_site_spip, $minipres=false) {
 
        // CSS optionelle minipres
        . ($minipres?'<link rel="stylesheet" type="text/css" href="'
-          . url_absolue(find_in_path('minipres.css')).'" />' . "\n":"");
+          . url_absolue(find_in_path('prive/minipres.css')).'" />' . "\n":"");
 
        $favicon = find_in_path('spip.ico');
 
@@ -491,7 +482,7 @@ function envoi_link($nom_site_spip, $minipres=false) {
        . url_absolue($favicon)
        . "\" type='image/x-icon' />\n";
        
-       $js = debut_javascript();
+       $js = debut_javascript($js);
 
        if ($spip_display == 4) return $res . $js;
 
@@ -513,7 +504,7 @@ function envoi_link($nom_site_spip, $minipres=false) {
 }
 
 // http://doc.spip.org/@debut_javascript
-function debut_javascript()
+function debut_javascript($fin='')
 {
        global $spip_lang_left, $browser_name, $browser_version;
        include_spip('inc/charsets');
@@ -536,11 +527,8 @@ function debut_javascript()
 
        if (!defined('_LARGEUR_ICONES_BANDEAU'))
                include_spip('inc/bandeau');
-       return
-       // envoi le fichier JS de config si browser ok.
-               $GLOBALS['browser_layer'] .
-               http_script(
-                       ((isset($_COOKIE['spip_accepte_ajax']) && $_COOKIE['spip_accepte_ajax'] >= 1)
+
+       $inline =  ((isset($_COOKIE['spip_accepte_ajax']) && $_COOKIE['spip_accepte_ajax'] >= 1)
                        ? ''
                        : "jQuery.ajax({'url':'$testeur'});") .
                        (_OUTILS_DEVELOPPEURS ?"var _OUTILS_DEVELOPPEURS=true;":"") .
@@ -555,11 +543,15 @@ function debut_javascript()
                           ($browser_version >= 6))) ? 1 : 0) .
                        "\nvar confirm_changer_statut = '" .
                        unicode_to_javascript(addslashes(html2unicode(_T("confirm_changer_statut")))) .
-                       "';\n") .
-               //plugin needed to fix the select showing through the submenus o IE6
-    (($browser_name == "MSIE" && $browser_version <= 6) ? http_script('', 'bgiframe.js'):'' ) .
-    http_script('', 'presentation.js') . 
-    http_script('', 'gadgets.js');
+                       "';\n";
+       return
+         // envoi le fichier JS de config si browser ok.
+         $GLOBALS['browser_layer'] .
+         //plugin needed to fix the select showing through the submenus o IE6
+         (($browser_name == "MSIE" && $browser_version <= 6) ? http_script('', 'bgiframe.js'):'' ) .
+         http_script('', 'presentation.js') . 
+         http_script('', 'gadgets.js') .
+         http_script($inline . $fin);
 }
 
 // Fonctions onglets
@@ -1159,11 +1151,11 @@ function voir_en_ligne ($type, $id, $statut=false, $image='racine-24.gif', $af =
 }
 
 // http://doc.spip.org/@bouton_spip_rss
-function bouton_spip_rss($op, $args=array(), $lang='') {
+function bouton_spip_rss($op, $args=array(), $lang='', $title='RSS') {
 
        global $spip_lang_right;
        include_spip('inc/acces');
-       $clic = http_img_pack('feed.png', 'RSS', '', 'RSS');
+       $clic = http_img_pack('feed.png', 'RSS', '', $title);
        $args = param_low_sec($op, $args, $lang, 'rss');
        $url = generer_url_public('rss', $args);
        return "<a style='float: $spip_lang_right;' href='$url'>$clic</a>";
index 9836a15..d782b87 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ce0b83c..6a7e78f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9bcb280..4d74c5a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -26,6 +26,10 @@ function puce_statut_document_dist($id, $statut, $id_rubrique, $type, $ajax='')
        return "<img src='" . chemin_image("attachment.gif") . "' alt=''  />";
 }
 
+function puce_statut_signature_dist($id, $statut, $id_rubrique, $type, $ajax='') {
+       return "<img src='" . chemin_image("visit-12.gif") . "' alt=''  />";
+}
+
 // http://doc.spip.org/@puce_statut_auteur_dist
 // Hack de compatibilite: les appels directs ont un  $type != 'auteur'
 // si l'auteur ne peut pas se connecter
@@ -233,6 +237,7 @@ function puce_statut_breve_dist($id, $statut, $id_rubrique, $type, $ajax='') {
 
 // http://doc.spip.org/@puce_statut_site_dist
 function puce_statut_site_dist($id, $statut, $id_rubrique, $type, $ajax=''){
+  global $lang_objet;
        static $coord = array('publie' => 1,
                              'prop' => 0,
                              'refuse' => 2,
index c6b7685..e54d6a7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f5cc911..5c45b30 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6fe360e..bfee020 100644 (file)
@@ -147,8 +147,8 @@ function stats_show_keywords($kw_referer, $kw_referer_host) {
                $path  = $url['path'];
        } else $query = $host = $path ='';
 
-       // Cette fonction affecte directement les variables selon la query-string !
-       parse_str($query);
+       // construire un array des variables directement depuis la query-string
+       parse_str($query, $Tquery);
 
        $keywords = '';
        $found = false;
@@ -171,9 +171,9 @@ function stats_show_keywords($kw_referer, $kw_referer_host) {
                        
                        if (strpos($arr_engines[$cnt][1],'=')!==false) {
                        
-                               // Fonctionnement simple: la variable existe
+                               // Fonctionnement simple: la variable existe dans l'array
                                $v = str_replace('=', '', $arr_engines[$cnt][1]);
-                               $keywords = isset($$v)?$$v:"";
+                               $keywords = isset($Tquery[$v]) ? $Tquery[$v]: "";
                                
                                // Si on a defini le nom de la variable en expression reguliere, chercher la bonne variable
                                if (! strlen($keywords) > 0) {
index 59d30c5..bac9793 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -43,7 +43,6 @@ function inc_regler_moderation_dist($id_article, $script, $args) {
                $opt .= " value='$val'>"._T($desc)."</option>";
        }
 
-
        $nb_forums = sql_countsel("spip_forum", "id_article=$id_article AND statut IN ('publie', 'off', 'prop', 'spam')");
 
        if ($nb_forums) {
@@ -55,8 +54,8 @@ function inc_regler_moderation_dist($id_article, $script, $args) {
                        "",
                        false
                );
-       } else
-               $res = '';
+       } elseif ($statut_forum != 'non')
+               $res = bouton_spip_rss('forums_public', array("id_article" => $id_article));
 
        $res .= "\n\t<label for='change_accepter_forum'>"
        . _T('info_fonctionnement_forum') ."</label>"
index fe40464..c3806dc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7bbd27d..6ef820f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -265,6 +265,15 @@ function propager_les_secteurs()
        while ($row = sql_fetch($r))
                sql_update("spip_syndic", array("id_secteur" => $row['secteur']), "id_syndic=".$row['id']);
 
+       // reparer les mots
+       $r = sql_select('id_rubrique', 'spip_mots_rubriques','', 'id_rubrique');
+       while ($row = sql_fetch($r)) {
+               $w = "id_rubrique=" .  $row['id_rubrique'];
+               if (!sql_fetsel(1, 'spip_rubriques', $w)) {
+                       $n = sql_delete('spip_mots_rubriques', $w);
+                       spip_log("nettoyage $w $n");
+               }
+       }
        // avertir les plugins qui peuvent faire leur mises a jour egalement
        pipeline('trig_propager_les_secteurs','');
 }
index b5f946c..b4cfb71 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f5a728c..1c3885a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 319b3c5..60ebc27 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 568cce9..03c29cb 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -103,6 +103,10 @@ function ajouter_session($auteur) {
                        time() + $duree
                        );
                spip_log("ajoute session $fichier_session cookie $duree");
+
+               // purger au passage les vieux fichiers de session
+               supprimer_sessions(-1);
+
                return $_COOKIE['spip_session'];
        }
 }
@@ -120,7 +124,7 @@ function session_set($nom, $val=null) {
 // Lire une valeur dans la session SPIP
 // http://doc.spip.org/@session_get
 function session_get($nom) {
-       return $GLOBALS['visiteur_session'][$nom];
+       return isset($GLOBALS['visiteur_session'][$nom]) ? $GLOBALS['visiteur_session'][$nom] : null;
 }
 
 // Quand on modifie une fiche auteur on appelle cette fonction qui va
@@ -147,7 +151,7 @@ function actualiser_sessions($auteur) {
        $GLOBALS['visiteur_session'] = $sauve;
 
        // si c'est le meme, rafraichir les valeurs
-       if ($auteur['id_auteur'] == $sauve['id_auteur'])
+       if (isset($sauve['id_auteur']) and $auteur['id_auteur'] == $sauve['id_auteur'])
                verifier_session();
 }
 
@@ -196,8 +200,8 @@ function supprimer_sessions($id_auteur) {
                if (!preg_match(",^\D*(\d+)_\w{32}\.php[3]?$,", $e, $r))
                        continue;
                $f = _DIR_SESSIONS . $e;
-               if (($id_auteur AND ($r[1] == $id_auteur))
-               OR ($t > filemtime($f))) {
+               if (file_exists($f) AND (($id_auteur AND ($r[1] == $id_auteur))
+               OR ($t > filemtime($f)))) {
                        spip_unlink($f);
                        $i++;
                }
@@ -207,7 +211,7 @@ function supprimer_sessions($id_auteur) {
                verifier_session();
                spip_unlink(fichier_session('alea_ephemere', true));
        }
-       spip_log("destruction des $i fichiers de session de $id_auteur et 0");
+       if ($i) spip_log("destruction des $i fichiers de session de $id_auteur et 0");
        // forcer le recalcul de la session courante
        spip_session(true);
 }
index f4fcfae..89cbb4e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -99,15 +99,8 @@ function signatures_edit($script, $id, $arg, $row) {
                if (!$nom_site) $nom_site = _T('info_site');
                $res .= "<div class='site'><span class='spip_x-small'>"._T('info_site_web')."</span> <a href='$url_site'>$nom_site</a></div>\n";
                }
-       if ($ad_email) {
-               $res .= "<div class='ad_email'><span class='spip_x-small'>"
-                       ._T('info_adresse_email')
-                       ."</span> "
-                       . (!email_valide($ad_email)
-                          ? $ad_email :
-                          ("<a href='mailto:" . attribut_html($ad_email) . "'>$ad_email</a>"))
-                       . "</div>\n";
-       }
+
+       if ($ad_email) $res .= signatures_edit_mail($id_article, $ad_email, $row);
 
        $res .= "<div class='texte'>" . message_de_signature($row) . "</div>";
                
@@ -122,7 +115,7 @@ function signatures_edit($script, $id, $arg, $row) {
                          . $h2
                          . "'>"
                          . typo($titre_a)
-                         . "</a><a class='reponse_a' style='float: $spip_lang_right; padding-$spip_lang_left: 4px;' href='$href' title='$id_rubrique'>"
+                         . "</a><a class='reponse_a' style='float: $spip_lang_right; padding-$spip_lang_left: 4px;' href='$href' title='$id_rubrique'>"
                        . typo($titre_r)
                        . " </a></div>";
                }
@@ -144,4 +137,31 @@ function signatures_edit($script, $id, $arg, $row) {
 
        return $res;
 }
+
+function signatures_edit_mail($id_article, $ad_email, $row) {
+
+       $email = attribut_html($ad_email);
+       if (email_valide($ad_email)) {
+               if ($row['statut'] != 'publie'
+               AND autoriser('modererpetition', 'article', $id_article)) {
+                       include_spip('formulaires/signature');
+                       $url = generer_url_entite_absolue($id_article, 'article','','',true);
+                       list($titre, $url) = signature_langue($id_article, $url);
+
+                       list($sujet, $corps) = signature_demande_confirmation($id_article, $url, $row['nom_email'], $row['nom_site'], $row['url_site'], $row['message'], $titre, $row['statut']);
+
+                       include_spip('inc/filtres');
+                       $sujet = rawurlencode(filtrer_entites($sujet));
+                       $corps = rawurlencode(filtrer_entites($corps));
+                       $corps = "?subject=$sujet&amp;body=$corps";
+               } else $corps = '';
+               $email = "<a href=\"mailto:$ad_email$corps\">$email</a>";
+       }
+       return "<div class='ad_email'><span class='spip_x-small'>"
+                       ._T('info_adresse_email')
+                       ."</span> "
+                       . $email
+                       . "</div>\n";
+
+}
 ?>
index 24ef8d3..c2bc234 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 26e1494..e83e702 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -584,27 +584,26 @@ function statistiques_moyenne($tab)
 // http://doc.spip.org/@statistiques_signatures_dist
 function statistiques_signatures_dist($duree, $interval, $type, $id_article, $serveur)
 {
-       $where = "id_article=$id_article";
+       $where = "id_article=$id_article AND statut='publie'";
        $total = sql_countsel("spip_signatures", $where);
        if (!$total) return '';
 
        $order = 'date_time';
        if ($duree)
-               $where .= " AND $order > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).",INTERVAL $duree $type)";
+               $where2 = "$where AND $order > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).",INTERVAL $duree $type)";
 
-       $log = statistiques_collecte_date('COUNT(*)', "(FLOOR(UNIX_TIMESTAMP($order) / $interval) *  $interval)", 'spip_signatures', $where, $serveur);
+       $log = statistiques_collecte_date('COUNT(*)', "(FLOOR(UNIX_TIMESTAMP($order) / $interval) *  $interval)", 'spip_signatures', $where2, $serveur);
 
        $script = generer_url_ecrire('controle_petition', "id_article=$id_article");
        if (count($log) > 1) {
-               $res = statistiques_tous($log, $id_article, "spip_signatures", "id_article=$id_article", "date_time", $serveur, $duree, $interval, $total, 0, '', array(), $script);
+               $res = statistiques_tous($log, $id_article, "spip_signatures", $where, "date_time", $serveur, $duree, $interval, $total, 0, '', array(), $script);
                $res = gros_titre(_T('titre_page_statistiques_signatures_jour'),'', false) . cadre_stat($res, 'spip_signatures', $id_article);
        } else $res = '';
 
        $mois = statistiques_collecte_date( "COUNT(*)",
                "DATE_FORMAT(date_time,'%Y%m')",
                "spip_signatures",
-               "date_time > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).",INTERVAL 2700 DAY)"
-               . (" AND id_article=$id_article"),
+               "$where AND date_time > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).",INTERVAL 2700 DAY)",
                $serveur);
 
        return "<br />"
index b4b0e6c..f595fc9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2a38981..bb34407 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -48,6 +48,7 @@ function surligner_mots($page) {
       include_spip('inc/charsets');
       if(!is_utf8($surcharge_surligne)) $surcharge_surligne = utf8_encode($surcharge_surligne);
     }  
+    $surcharge_surligne = preg_replace(',\*$,', '', trim($surcharge_surligne)); # supprimer un * final
   }
   foreach($surlignejs_engines as $engine) 
     if($surcharge_surligne || (preg_match($engine[0],$ref) && preg_match($engine[1],$ref))) { 
index 107a7ae..af6a707 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -148,7 +148,8 @@ function analyser_backend($rss, $url_syndic='') {
                // (note: ca pourrait etre defini site par site, mais ca risque d'etre
                // plus lourd que vraiment utile)
                if ($GLOBALS['controler_dates_rss']) {
-                       if ($la_date > time() + 48 * 3600)
+                       if (!$la_date
+                               OR $la_date > time() + 48 * 3600)
                                $la_date = time();
                }
 
index 148c572..3b071cb 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -258,7 +258,7 @@ function echappe_retour($letexte, $source='', $filtre = "") {
        if (strpos($letexte,"base64$source")) {
                # spip_log(htmlspecialchars($letexte));  ## pour les curieux
                if (strpos($letexte,"<")!==false AND
-                 preg_match_all(',<(span|div) class=[\'"]base64'.$source.'[\'"]\s(.*)>\s*</\1>,UmsS',
+                 preg_match_all(',<(span|div)\sclass=[\'"]base64'.$source.'[\'"]\s(.*)>\s*</\1>,UmsS',
                $letexte, $regs, PREG_SET_ORDER)) {
                        foreach ($regs as $reg) {
                                $rempl = base64_decode(extraire_attribut($reg[0], 'title'));
@@ -306,7 +306,7 @@ function couper($texte, $taille=50, $suite = '&nbsp;(...)') {
        if (    $offset<$length
                        && ($p_tag_ouvrant = strpos($texte,'<',$offset))!==NULL){
                $p_tag_fermant = strpos($texte,'>',$offset);
-               if ($p_tag_fermant<$p_tag_ouvrant)
+               if ($p_tag_fermant && ($p_tag_fermant<$p_tag_ouvrant))
                        $offset = $p_tag_fermant+1; // prolonger la coupe jusqu'au tag fermant suivant eventuel
        }
        $texte = substr($texte, 0, $offset); /* eviter de travailler sur 10ko pour extraire 150 caracteres */
@@ -576,7 +576,9 @@ function corriger_typo($letexte, $lang='') {
 // Tableaux
 //
 
+define('_RACCOURCI_CAPTION', ',^\|\|([^|]*)(\|(.*))?$,sS');
 define('_RACCOURCI_TH_SPAN', '\s*(?:{{[^{}]+}}\s*)?|<');
+define('_RACCOURCI_THEAD', true);
 
 // http://doc.spip.org/@traiter_tableau
 function traiter_tableau($bloc) {
@@ -591,31 +593,31 @@ function traiter_tableau($bloc) {
        // Traiter chaque ligne
        $reg_line1 = ',^(\|(' . _RACCOURCI_TH_SPAN . '))+$,sS';
        $reg_line_all = ',^'  . _RACCOURCI_TH_SPAN . '$,sS';
+       $num_cols = 0;
        foreach ($regs[1] as $ligne) {
                $l ++;
 
                // Gestion de la premiere ligne :
-               if ($l == 1) {
+               if (($l == 1) AND preg_match(_RACCOURCI_CAPTION, rtrim($ligne,'|'), $cap)) {
                // - <caption> et summary dans la premiere ligne :
                //   || caption | summary || (|summary est optionnel)
-                       if (preg_match(',^\|\|([^|]*)(\|(.*))?$,sS', rtrim($ligne,'|'), $cap)) {
-                               $l = 0;
-                               if ($caption = trim($cap[1]))
-                                       $debut_table .= "<caption>".$caption."</caption>\n";
+                       $l = 0;
+                       if ($caption = trim($cap[1]))
+                               $debut_table .= "<caption>".$caption."</caption>\n";
                                $summary = ' summary="'.entites_html(trim($cap[3])).'"';
-                       }
-               // - <thead> sous la forme |{{titre}}|{{titre}}|
-               //   Attention thead oblige a avoir tbody
-                       else if (preg_match($reg_line1, $ligne)) {
-                               preg_match_all('/\|([^|]*)/S', $ligne, $cols);
+               } else {
+               // - <th> sous la forme |{{titre}}|{{titre}}|
+                       if (preg_match($reg_line1, $ligne)) {
+                               preg_match_all('/\|([^|]*)/S', $ligne, $cols);
                                $ligne='';$cols= $cols[1];
                                $colspan=1;
-                               for($c=count($cols)-1; $c>=0; $c--) {
+                               $num_cols = count($cols);
+                               for($c=$num_cols-1; $c>=0; $c--) {
                                        $attr='';
                                        if($cols[$c]=='<') {
                                          $colspan++;
                                        } else {
-                                         if($colspan>1) {
+                                         if ($colspan>1) {
                                                $attr= " colspan='$colspan'";
                                                $colspan=1;
                                          }
@@ -624,15 +626,9 @@ function traiter_tableau($bloc) {
                                          $ligne= "<th scope='col'$attr>$cols[$c]</th>$ligne";
                                        }
                                }
-
-                               $debut_table .= "<thead><tr class='row_first'>".
-                                       $ligne."</tr></thead>\n";
-                               $l = 0;
-                       }
-               }
-
-               // Sinon ligne normale
-               if ($l) {
+                               $lignes[] = $ligne;
+                 } else {
+                       // Sinon ligne normale
                        // Gerer les listes a puce dans les cellules
                        if (strpos($ligne,"\n-*")!==false OR strpos($ligne,"\n-#")!==false)
                                $ligne = traiter_listes($ligne);
@@ -643,6 +639,7 @@ function traiter_tableau($bloc) {
                        // tout mettre dans un tableau 2d
                        preg_match_all('/\|([^|]*)/S', $ligne, $cols);
                        $lignes[]= $cols[1];
+                       }
                }
        }
 
@@ -651,7 +648,7 @@ function traiter_tableau($bloc) {
        // du nombre de colonnes dans la premiere ligne.
        // Reperer egalement les colonnes numeriques pour les cadrer a droite
        $rowspans = $numeric = array();
-       $n = count($lignes[0]);
+       $n = $num_cols ? $num_cols : count($lignes[0]);
        $k = count($lignes);
        // distinguer les colonnes numeriques a point ou a virgule,
        // pour les alignements eventuels sur "," ou "."
@@ -660,9 +657,10 @@ function traiter_tableau($bloc) {
          $align = true;
          for ($j=0;$j<$k;$j++) $rowspans[$j][$i] = 1;
          for ($j=0;$j<$k;$j++) {
+           if (!is_array($lignes[$j])) continue; // cas du th
            $cell = trim($lignes[$j][$i]);
            if (preg_match($reg_line_all, $cell)) {
-               if (!preg_match('/^\d+([.,]?)\d*$/', $cell, $r))
+               if (!preg_match('/^[+-]?(?:\s|\d)*([.,]?)\d*$/', $cell, $r))
                  { $align = ''; break;}
                else if ($r[1]) $align = $r[1];
              }
@@ -676,10 +674,14 @@ function traiter_tableau($bloc) {
 
        for($l=count($lignes)-1; $l>=0; $l--) {
                $cols= $lignes[$l];
-               $colspan=1;
-               $ligne='';
-
-               for($c=count($cols)-1; $c>=0; $c--) {
+               if (!is_array($cols)) {
+                 $class = 'first';
+                 $ligne = $cols;
+               } else {
+                 $ligne='';
+                 $colspan=1;
+                 $class = alterner($l+1, 'even', 'odd');
+                 for($c=count($cols)-1; $c>=0; $c--) {
                        $attr= $numeric[$c];
                        $cell = trim($cols[$c]);
                        if($cell=='<') {
@@ -698,17 +700,17 @@ function traiter_tableau($bloc) {
                          }
                          $ligne= "\n<td".$attr.'>'.$cols[$c].'</td>'.$ligne;
                        }
+                 }
                }
-
-               // ligne complete
-               $class = alterner($l+1, 'even', 'odd');
                $html = "<tr class='row_$class'>$ligne</tr>\n$html";
        }
+       if (_RACCOURCI_THEAD
+       AND preg_match("@^(<tr class='row_first'.*?</tr>)(.*)$@s", $html, $m))
+               $html = "<thead>$m[1]</thead>\n<tbody>$m[2]</tbody>\n";
+
        return "\n\n<table".$GLOBALS['class_spip_plus'].$summary.">\n"
                . $debut_table
-               . "<tbody>\n"
                . $html
-               . "</tbody>\n"
                . "</table>\n\n";
 }
 
index 1616109..ade163a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 14ab6ce..a493bdb 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8e67c8e..8221786 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1a277f5..97f063f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -462,7 +462,7 @@ function spip_timer($t='rien', $raw = false) {
 function spip_touch($fichier, $duree=0, $touch=true) {
        if ($duree) {
                clearstatcache();
-               if ((@$f=filemtime($fichier)) AND ($f >= time() - $duree))
+               if (file_exists($fichier) AND ($f=filemtime($fichier)) AND ($f >= time() - $duree))
                        return false;
        }
        if ($touch!==false) {
@@ -1057,7 +1057,8 @@ function generer_url_prive($script, $args="", $no_entities=false) {
 function generer_form_ecrire($script, $corps, $atts='', $submit='') {
        global $spip_lang_right;
 
-       $script1 = array_shift(explode('&', $script));
+       $script1 = explode('&', $script);
+       $script1 = array_shift($script1);
 
        return "<form action='"
        . ($script ? generer_url_ecrire($script) : '')
@@ -1067,7 +1068,7 @@ function generer_form_ecrire($script, $corps, $atts='', $submit='') {
        . "<input type='hidden' name='exec' value='$script1' />"
        . $corps
        . (!$submit ? '' :
-            ("<div style='text-align: $spip_lang_right'><input type='submit' value=\"".entites_html($submit)."\" /></div>"))
+            ("<div style='text-align: $spip_lang_right'><input type='submit' value=\"".attribut_html($submit)."\" /></div>"))
        . "</div></form>\n";
 }
 
@@ -1364,50 +1365,50 @@ function spip_initialisation_suite() {
        if ($too_late++) return;
 
        // taille mini des login
-       define('_LOGIN_TROP_COURT', 4);
+       if (!defined('_LOGIN_TROP_COURT')) define('_LOGIN_TROP_COURT', 4);
 
        // la taille maxi des logos (0 : pas de limite)
-       define('_LOGO_MAX_SIZE', 0); # poids en ko
-       define('_LOGO_MAX_WIDTH', 0); # largeur en pixels
-       define('_LOGO_MAX_HEIGHT', 0); # hauteur en pixels
+       if (!defined('_LOGO_MAX_SIZE')) define('_LOGO_MAX_SIZE', 0); # poids en ko
+       if (!defined('_LOGO_MAX_WIDTH')) define('_LOGO_MAX_WIDTH', 0); # largeur en pixels
+       if (!defined('_LOGO_MAX_HEIGHT')) define('_LOGO_MAX_HEIGHT', 0); # hauteur en pixels
 
-       define('_DOC_MAX_SIZE', 0); # poids en ko
+       if (!defined('_DOC_MAX_SIZE')) define('_DOC_MAX_SIZE', 0); # poids en ko
 
-       define('_IMG_MAX_SIZE', 0); # poids en ko
-       define('_IMG_MAX_WIDTH', 0); # largeur en pixels
-       define('_IMG_MAX_HEIGHT', 0); # hauteur en pixels
+       if (!defined('_IMG_MAX_SIZE')) define('_IMG_MAX_SIZE', 0); # poids en ko
+       if (!defined('_IMG_MAX_WIDTH')) define('_IMG_MAX_WIDTH', 0); # largeur en pixels
+       if (!defined('_IMG_MAX_HEIGHT')) define('_IMG_MAX_HEIGHT', 0); # hauteur en pixels
 
-       define('_COPIE_LOCALE_MAX_SIZE',16777216); // poids en octet
+       if (!defined('_COPIE_LOCALE_MAX_SIZE')) define('_COPIE_LOCALE_MAX_SIZE',16777216); // poids en octet
 
        // qq chaines standard
-       define('_ACCESS_FILE_NAME', '.htaccess');
-       define('_AUTH_USER_FILE', '.htpasswd');
-       define('_SPIP_DUMP', 'dump@nom_site@@stamp@.xml');
-       define('_CACHE_RUBRIQUES', _DIR_TMP.'menu-rubriques-cache.txt');
-       define('_CACHE_RUBRIQUES_MAX', 500);
+       if (!defined('_ACCESS_FILE_NAME')) define('_ACCESS_FILE_NAME', '.htaccess');
+       if (!defined('_AUTH_USER_FILE')) define('_AUTH_USER_FILE', '.htpasswd');
+       if (!defined('_SPIP_DUMP')) define('_SPIP_DUMP', 'dump@nom_site@@stamp@.xml');
+       if (!defined('_CACHE_RUBRIQUES')) define('_CACHE_RUBRIQUES', _DIR_TMP.'menu-rubriques-cache.txt');
+       if (!defined('_CACHE_RUBRIQUES_MAX')) define('_CACHE_RUBRIQUES_MAX', 500);
 
-       define('_EXTENSION_SQUELETTES', 'html');
+       if (!defined('_EXTENSION_SQUELETTES')) define('_EXTENSION_SQUELETTES', 'html');
 
-       define('_DOCTYPE_ECRIRE',
+       if (!defined('_DOCTYPE_ECRIRE')) define('_DOCTYPE_ECRIRE',
                // "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n");
                //"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>\n");
                "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>\n");
               // "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1 //EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>\n");
-       define('_DOCTYPE_AIDE',
+       if (!defined('_DOCTYPE_AIDE')) define('_DOCTYPE_AIDE',
               "<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Frameset//EN' 'http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd'>");
 
        // L'adresse de base du site ; on peut mettre '' si la racine est geree par
        // le script de l'espace public, alias  index.php
-       define('_SPIP_SCRIPT', 'spip.php');
+       if (!defined('_SPIP_SCRIPT')) define('_SPIP_SCRIPT', 'spip.php');
        // argument page, personalisable en cas de conflit avec un autre script
-       define('_SPIP_PAGE', 'page');
+       if (!defined('_SPIP_PAGE')) define('_SPIP_PAGE', 'page');
 
        // le script de l'espace prive
        // Mettre a "index.php" si DirectoryIndex ne le fait pas ou pb connexes:
        // les anciens IIS n'acceptent pas les POST sur ecrire/ (#419)
        // meme pb sur thttpd cf. http://forum.spip.org/fr_184153.html
 
-       define('_SPIP_ECRIRE_SCRIPT', // true ? #decommenter ici et commenter la
+       if (!defined('_SPIP_ECRIRE_SCRIPT')) define('_SPIP_ECRIRE_SCRIPT', // true ? #decommenter ici et commenter la
               preg_match(',IIS|thttpd,',$_SERVER['SERVER_SOFTWARE']) ?
               'index.php' : '');
 
@@ -1441,8 +1442,8 @@ function spip_initialisation_suite() {
        # nombre de pixels maxi pour calcul de la vignette avec gd
        # au dela de 5500000 on considere que php n'est pas limite en memoire pour cette operation
        # les configurations limitees en memoire ont un seuil plutot vers 1MPixel
-       define('_IMG_GD_MAX_PIXELS', (isset($GLOBALS['meta']['max_taille_vignettes'])&&$GLOBALS['meta']['max_taille_vignettes']<5500000)?$GLOBALS['meta']['max_taille_vignettes']:0);
-       define('_IMG_GD_QUALITE', 85);
+       if (!defined('_IMG_GD_MAX_PIXELS')) define('_IMG_GD_MAX_PIXELS', (isset($GLOBALS['meta']['max_taille_vignettes'])&&$GLOBALS['meta']['max_taille_vignettes']<5500000)?$GLOBALS['meta']['max_taille_vignettes']:0);
+       if (!defined('_IMG_GD_QUALITE')) define('_IMG_GD_QUALITE', 85);
 
        if (!defined('_MEMORY_LIMIT_MIN')) define('_MEMORY_LIMIT_MIN', 16);
        // si on est dans l'espace prive et si le besoin est superieur a 8Mo (qui est vraiment le standard)
@@ -1467,6 +1468,9 @@ function spip_initialisation_suite() {
                else
                        define('_INTERDIRE_COMPACTE_HEAD_ECRIRE',true); // evite une page blanche car on ne saura pas calculer la css dans ce hit
        }
+       // Protocoles a normaliser dans les chaines de langues
+       if (!defined('_PROTOCOLES_STD'))
+               define('_PROTOCOLES_STD', 'http|https|ftp|mailto|webcal');
 
        init_var_mode();
 }
@@ -1778,9 +1782,12 @@ function recuperer_fond($fond, $contexte=array(), $options = array(), $connect='
                if ($page === '') {
                        $c = isset($options['compil']) ? $options['compil'] :'';
                        $a = array('fichier'=>$fond.'.'._EXTENSION_SQUELETTES);
-                       erreur_squelette(_T('info_erreur_squelette2', $a), $c);
+                       $erreur = _T('info_erreur_squelette2', $a); // squelette introuvable
+                       erreur_squelette($erreur, $c);
+                       // eviter des erreurs strictes ensuite sur $page['cle'] en PHP >= 5.4
+                       $page = array('texte' => '', 'erreur' => $erreur);
                }
-                                        
+
                if (isset($options['ajax'])AND $options['ajax']){
                        include_spip('inc/filtres');
                        $page['texte'] = encoder_contexte_ajax(array_merge($contexte,array('fond'=>$f)),'',$page['texte']);
index 975feda..6a81b2e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index bd18960..ef9d9de 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5292c46..933badd 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 975f960..2f6a3c7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index bf9ce92..6faa98b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -68,18 +68,6 @@ define('_NOM_PERMANENTS_INACCESSIBLES', "config/");
 # le nom du repertoire des fichiers Permanents Accessibles par http://
 define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");
 
-/*
- * detecteur de robot d'indexation
- * utilise en divers endroits, centralise ici
- */
-if (!defined('_IS_BOT'))
-       define('_IS_BOT',
-               isset($_SERVER['HTTP_USER_AGENT'])
-               AND preg_match(',bot|slurp|crawler|spider|webvac|yandex,i',
-                       $_SERVER['HTTP_USER_AGENT'])
-       );
-
-
 // Le nom du fichier de personnalisation
 define('_NOM_CONFIG', 'mes_options');
 
@@ -105,6 +93,18 @@ AND @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_secu
        include $f;
 
 
+/*
+ * detecteur de robot d'indexation
+ * utilise en divers endroits, centralise ici
+ */
+if (!defined('_IS_BOT'))
+       define('_IS_BOT',
+               isset($_SERVER['HTTP_USER_AGENT'])
+               AND preg_match(',bot|slurp|crawler|spider|webvac|yandex,i',
+                       $_SERVER['HTTP_USER_AGENT'])
+       );
+
+
 //
 // *** Parametrage par defaut de SPIP ***
 //
@@ -214,14 +214,12 @@ $xml_indent = false;
 
 // Vignettes de previsulation des referers
 // dans les statistiques
-// 3 de trouves, possibilite de switcher
-// - Thumbshots.org: le moins instrusif, quand il n'a pas, il renvoit un pixel vide
-// - Girafa semble le plus complet, bicoz renvoit toujours la page d'accueil; mais avertissement si pas de preview
+// 2 de trouves, possibilite de switcher
 // - Alexa, equivalent Thumbshots, avec vignettes beaucoup plus grandes mais avertissement si pas de preview
 //   Pour Alexa, penser a indiquer l'url du site dans l'id.
 //   Dans Alexa, si on supprimer size=small, alors vignettes tres grandes
-$source_vignettes = "http://open.thumbshots.org/image.pxf?url=http://";
-// $source_vignettes = "http://msnsearch.srv.girafa.com/srv/i?s=MSNSEARCH&r=http://";
+// - apercite.fr : on conserve exactement la mĂŞme expression pour insĂ©rer l'url du site
+$source_vignettes = "http://www.apercite.fr/api/apercite/120x90/oui/oui/http://";
 // $source_vignettes = "http://pthumbnails.alexa.com/image_server.cgi?id=www.monsite.net&size=small&url=http://";
 
 $formats_logos =  array ('gif', 'jpg', 'png');
@@ -410,12 +408,12 @@ $liste_des_authentifications = array(
 // 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
-$spip_version_branche = "2.1.12";
+$spip_version_branche = "2.1.25";
 // 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 = 15375;
 // version de la base SQL (= numero SVN de sa derniere modif, a verifier dans le fichier ecrire/maj/sv10000.php)
-$spip_version_base = 15828;
+$spip_version_base = 15830;
 
 // version de l'interface a la base
 $spip_sql_version = 1;
index e5bc01d..785b5f9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8837be9..0769885 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 15eb9a2..52aa927 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e1ed0b1..1d2398e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 453beac..7ab6697 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0b5682c..8ebae35 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index d1e8eb6..789a734 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6d7112a..36f4b10 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 33dc1d8..fc7cdcc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 37385a3..4acbac5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -39,7 +39,7 @@ function install_etape_ldap1_dist()
                ? _INSTALL_PASS_LDAP
                : '';
 
-       echo install_debut_html();
+       echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
 
        echo info_etape(_T('titre_connexion_ldap'),info_progression_etape(1,'etape_ldap','install/'), _T('entree_informations_connexion_ldap'));
 
index 7d84402..ebe5d3f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index bfffb48..7ef71bc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -25,7 +25,7 @@ function install_etape_ldap3_dist()
                ? _INSTALL_BASE_LDAP
                : "ou=users, dc=mon-domaine, dc=com";
 
-       echo install_debut_html();
+       echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
 
        echo info_etape(_T('info_chemin_acces_1'),info_progression_etape(3,'etape_ldap','install/')),_T('info_chemin_acces_2');
 
index 835412d..cb70249 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -25,7 +25,7 @@ function install_etape_ldap4_dist()
        $base_ldap_text = _request('base_ldap_text');
        if (!$base_ldap) $base_ldap = $base_ldap_text;
 
-       echo install_debut_html();
+       echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
 
        $ldap_link = ldap_connect($adresse_ldap, $port_ldap);
        @ldap_bind($ldap_link, $login_ldap, $pass_ldap);
index d4e044c..9a3bd0b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3bd8b78..f0d7ceb 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e5f6b25..e3cf4d6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5dbf3f5..e82997a 100644 (file)
@@ -559,12 +559,12 @@ fai falta tener accesu per FTP al sirvidor del sitiu Web.</p>', # MODIF
 'info_question_inscription_nouveaux_redacteurs' => '&iquest;Aceutes les inscripciones de nuevos redactores dende\'l
   sitiu p&uacute;blicu? Si aceutes, los visitantes podr&aacute;n inscribise
   dende un formulariu automatiz&aacute;u y tendr&aacute;n accesu a l\'espaciu priv&aacute;u pa
-  proponer art&iacute;culos propios. <blockquote><i>Tres de la fase d\'inscripci&oacute;n,
+  proponer art&iacute;culos propios. <blockquote><div><i>Tres de la fase d\'inscripci&oacute;n,
   los usuarios reciben un corr&eacute;u electr&oacute;nicu autom&aacute;ticu
   que-yos da los c&oacute;digos d\'accesu al sitiu priv&aacute;u. Dellos
   agospiadores desactiven l\'unv&iacute;u d\'e-mails dende los sos
   sirvidores: nesti casu, la inscripci&oacute;n autom&aacute;tica ye
-  imposible.</i></blockquote>',
+  imposible.</i></div></blockquote>',
 'info_question_mots_cles' => '&iquest;Quies utilizar les pallabres-clave nesti sitiu?',
 'info_question_proposer_site' => '&iquest;Qui&eacute;n pue proponer sitios referenciaos?',
 'info_question_utilisation_moteur_recherche' => '&iquest;Quies utilizar el motor de restolar integr&aacute;u con SPIP?
@@ -1129,9 +1129,9 @@ vienes de facer camb&eacute;os importantes nel grafismu o na estructura del siti
 'texte_sur_titre' => 'Antet&iacute;tulu',
 'texte_syndication' => 'Ye posible recuperar automaticamente, cuando un sitiu web lo permite,
   la llista de les noved&aacute;es. Para esto, hai que activar la sindicaci&oacute;n.
-  <blockquote><i>Dellos agospiadores web desactiven esta funci&oacute;n;
+  <blockquote><div><i>Dellos agospiadores web desactiven esta funci&oacute;n;
   si ye\'l casu, nun vas poder usar la sindicaci&oacute;n de conten&iacute;os
-  dende\'l to sitiu web.</i></blockquote>',
+  dende\'l to sitiu web.</i></div></blockquote>',
 'texte_table_ok' => ': esta tabla ta bi&eacute;n.',
 'texte_tables_indexation_vides' => 'Les tables d\'indexaci&oacute;n del motor tan vac&iacute;es.',
 'texte_tentative_recuperation' => 'Intentu d\'igua',
index 38f33c2..00119a6 100644 (file)
@@ -558,12 +558,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_inscription_nouveaux_redacteurs' => '&#1055;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1074;&#1072;&#1090;&#1077; &#1083;&#1080; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;&#1090;&#1072; &#1085;&#1072; &#1085;&#1086;&#1074;&#1080; &#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1086;&#1088;&#1080; &#1086;&#1090;
   &#1087;&#1091;&#1073;&#1083;&#1080;&#1082;&#1091;&#1074;&#1072;&#1085;&#1080;&#1103; &#1089;&#1072;&#1081;&#1090;. &#1040;&#1082;&#1086; &#1089;&#1090;&#1077; &#1089;&#1098;&#1075;&#1083;&#1072;&#1089;&#1085;&#1080;, &#1087;&#1086;&#1089;&#1077;&#1090;&#1080;&#1090;&#1077;&#1083;&#1080;&#1090;&#1077; &#1090;&#1088;&#1103;&#1073;&#1074;&#1072; &#1076;&#1072; &#1089;&#1077;
   &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1072;&#1090; &#1087;&#1088;&#1077;&#1079; &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1080;&#1095;&#1085;&#1072;&#1090;&#1072; &#1092;&#1086;&#1088;&#1084;&#1072;, &#1079;&#1072; &#1076;&#1072; &#1080;&#1084;&#1072;&#1090; &#1076;&#1086;&#1089;&#1090;&#1098;&#1087; &#1076;&#1086; &#1083;&#1080;&#1095;&#1085;&#1072;&#1090;&#1072; &#1079;&#1086;&#1085;&#1072; &#1080;
-  &#1076;&#1072; &#1087;&#1088;&#1077;&#1076;&#1083;&#1086;&#1078;&#1072;&#1090; &#1089;&#1074;&#1086;&#1080; &#1089;&#1086;&#1073;&#1089;&#1090;&#1074;&#1077;&#1085;&#1080; &#1089;&#1090;&#1072;&#1090;&#1080;&#1080;. <blockquote><i>&#1055;&#1086; &#1074;&#1088;&#1077;&#1084;&#1077; &#1085;&#1072; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;&#1090;&#1072;
+  &#1076;&#1072; &#1087;&#1088;&#1077;&#1076;&#1083;&#1086;&#1078;&#1072;&#1090; &#1089;&#1074;&#1086;&#1080; &#1089;&#1086;&#1073;&#1089;&#1090;&#1074;&#1077;&#1085;&#1080; &#1089;&#1090;&#1072;&#1090;&#1080;&#1080;. <blockquote><div><i>&#1055;&#1086; &#1074;&#1088;&#1077;&#1084;&#1077; &#1085;&#1072; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;&#1090;&#1072;
   &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1080;&#1090;&#1077; &#1087;&#1086;&#1083;&#1091;&#1095;&#1072;&#1074;&#1072;&#1090; &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1080;&#1095;&#1085;&#1086;
   &#1089;&#1098;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1077; &#1089; &#1082;&#1086;&#1076; &#1079;&#1072; &#1076;&#1086;&#1089;&#1090;&#1098;&#1087; &#1076;&#1086; &#1083;&#1080;&#1095;&#1085;&#1072;&#1090;&#1072; &#1079;&#1086;&#1085;&#1072;. &#1053;&#1103;&#1082;&#1086;&#1080;
   &#1076;&#1086;&#1089;&#1090;&#1072;&#1074;&#1095;&#1080;&#1094;&#1080; &#1089;&#1087;&#1080;&#1088;&#1072;&#1090; &#1089;&#1098;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1103;, &#1080;&#1079;&#1087;&#1088;&#1072;&#1090;&#1077;&#1085;&#1080;
   &#1076;&#1086; &#1090;&#1077;&#1093;&#1085;&#1080; &#1089;&#1098;&#1088;&#1074;&#1098;&#1088;&#1080;: &#1074; &#1090;&#1086;&#1079;&#1080; &#1089;&#1083;&#1091;&#1095;&#1072;&#1081; &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1080;&#1095;&#1085;&#1072;&#1090;&#1072; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;
-  &#1085;&#1077; &#1073;&#1080; &#1084;&#1086;&#1075;&#1083;&#1072; &#1076;&#1072; &#1089;&#1077; &#1086;&#1089;&#1098;&#1097;&#1077;&#1089;&#1090;&#1074;&#1080;.', # MODIF
+  &#1085;&#1077; &#1073;&#1080; &#1084;&#1086;&#1075;&#1083;&#1072; &#1076;&#1072; &#1089;&#1077; &#1086;&#1089;&#1098;&#1097;&#1077;&#1089;&#1090;&#1074;&#1080;.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => '&#1046;&#1077;&#1083;&#1072;&#1077;&#1090;&#1077; &#1083;&#1080; &#1076;&#1072; &#1080;&#1079;&#1087;&#1086;&#1083;&#1079;&#1074;&#1072;&#1090;&#1077; &#1082;&#1083;&#1102;&#1095;&#1086;&#1074;&#1080; &#1076;&#1091;&#1084;&#1080; &#1074; &#1089;&#1072;&#1081;&#1090;&#1072;?',
 'info_question_proposer_site' => '&#1050;&#1086;&#1081; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1087;&#1088;&#1077;&#1076;&#1083;&#1086;&#1078;&#1080; &#1089;&#1074;&#1098;&#1088;&#1079;&#1072;&#1085;&#1080; &#1089;&#1072;&#1081;&#1090;&#1086;&#1074;&#1077;?',
 'info_question_utilisation_moteur_recherche' => '&#1046;&#1077;&#1083;&#1072;&#1077;&#1090;&#1077; &#1083;&#1080; &#1076;&#1072; &#1080;&#1079;&#1087;&#1086;&#1083;&#1079;&#1074;&#1072;&#1090;&#1077; &#1090;&#1098;&#1088;&#1089;&#1077;&#1097;&#1072;&#1090;&#1072; &#1084;&#1072;&#1096;&#1080;&#1085;&#1072; &#1087;&#1086;&#1076; &#1057;&#1055;&#1048;&#1055;?
@@ -1135,9 +1135,9 @@ demande plus de puissance au serveur.', # NEW
 'texte_sur_titre' => '&#1063;&#1077;&#1083;&#1085;&#1086; &#1079;&#1072;&#1075;&#1083;&#1072;&#1074;&#1080;&#1077;',
 'texte_syndication' => '&#1040;&#1082;&#1086; &#1089;&#1072;&#1081;&#1090;&#1098;&#1090; &#1075;&#1086; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1074;&#1072;, &#1074;&#1098;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1077; &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1080;&#1095;&#1085;&#1086; &#1076;&#1072; &#1074;&#1098;&#1079;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1103;&#1074;&#1072;
   &#1089;&#1087;&#1080;&#1089;&#1098;&#1082;&#1072; &#1089; &#1085;&#1072;&#1081;-&#1085;&#1086;&#1074;&#1080;&#1103; &#1084;&#1072;&#1090;&#1077;&#1088;&#1080;&#1072;&#1083;. &#1047;&#1072; &#1076;&#1072; &#1087;&#1086;&#1089;&#1090;&#1080;&#1075;&#1085;&#1077;&#1090;&#1077; &#1090;&#1086;&#1074;&#1072;, &#1085;&#1091;&#1078;&#1085;&#1086; &#1077; &#1076;&#1072; &#1072;&#1082;&#1090;&#1080;&#1074;&#1080;&#1088;&#1072;&#1090;&#1077; &#1086;&#1073;&#1077;&#1076;&#1080;&#1085;&#1103;&#1074;&#1072;&#1085;&#1077;. 
-  <blockquote><i>&#1053;&#1103;&#1082;&#1086;&#1080; &#1076;&#1086;&#1089;&#1090;&#1072;&#1074;&#1095;&#1080;&#1094;&#1080; &#1076;&#1077;&#1072;&#1082;&#1090;&#1080;&#1074;&#1080;&#1088;&#1072;&#1090; &#1090;&#1072;&#1079;&#1080; &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1103;; 
+  <blockquote><div><i>&#1053;&#1103;&#1082;&#1086;&#1080; &#1076;&#1086;&#1089;&#1090;&#1072;&#1074;&#1095;&#1080;&#1094;&#1080; &#1076;&#1077;&#1072;&#1082;&#1090;&#1080;&#1074;&#1080;&#1088;&#1072;&#1090; &#1090;&#1072;&#1079;&#1080; &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1103;; 
   &#1072;&#1082;&#1086; &#1089;&#1083;&#1091;&#1095;&#1072;&#1103;&#1090; &#1077; &#1090;&#1086;&#1079;&#1080;, &#1085;&#1103;&#1084;&#1072; &#1076;&#1072; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1076;&#1072; &#1080;&#1079;&#1087;&#1086;&#1083;&#1079;&#1074;&#1072;&#1090;&#1077; &#1086;&#1073;&#1077;&#1076;&#1080;&#1085;&#1103;&#1074;&#1072;&#1085;&#1077;&#1090;&#1086; &#1085;&#1072; &#1089;&#1098;&#1076;&#1098;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077;
-  &#1086;&#1090; &#1042;&#1072;&#1096;&#1080;&#1103; &#1089;&#1072;&#1081;&#1090;.</i></blockquote>', # MODIF
+  &#1086;&#1090; &#1042;&#1072;&#1096;&#1080;&#1103; &#1089;&#1072;&#1081;&#1090;.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ' : &#1090;&#1072;&#1079;&#1080; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072; &#1077; &#1076;&#1086;&#1073;&#1088;&#1072;.',
 'texte_tables_indexation_vides' => '&#1058;&#1072;&#1073;&#1083;&#1080;&#1094;&#1080;&#1090;&#1077; &#1089; &#1080;&#1085;&#1076;&#1077;&#1082;&#1089;&#1080; &#1085;&#1072; &#1090;&#1098;&#1088;&#1089;&#1072;&#1095;&#1082;&#1072;&#1090;&#1072; &#1089;&#1072; &#1087;&#1088;&#1072;&#1079;&#1085;&#1080;.',
 'texte_tentative_recuperation' => '&#1054;&#1087;&#1080;&#1090; &#1079;&#1072; &#1087;&#1086;&#1087;&#1088;&#1072;&#1074;&#1082;&#1072;',
index b980349..00dc722 100644 (file)
@@ -534,10 +534,10 @@ Risklo&ugrave; zo e vefe distrujet ho tiaz titouro&ugrave; pe ne\'z afe ket en-d
 'info_question_inscription_nouveaux_redacteurs' => 'Hag aotren a rit e c\'hellfe skridaozerien nevez en em enrolla&ntilde; adalek al lec\'hienn foran&nbsp;?
   Ma asantit e c\'hello ar weladennerien en em enskriva&ntilde; adalek ur furmskrid emgefreek, 
   ha gouest e vint neuze da dizhout al lodenn brevez evit kinnig o fennado&ugrave; dezho o-unan.
-  <blockquote><i>Da vare an enrolla&ntilde; e vez kaset ur postel emgefreek d\'ar skridaozerien
+  <blockquote><div><i>Da vare an enrolla&ntilde; e vez kaset ur postel emgefreek d\'ar skridaozerien
   enna&ntilde; ar c\'hodo&ugrave; da c\'hallout dont tre el lec\'hienn.
   Gant herberc\'herien zo e vez difennet kas postelio&ugrave; adalek o servijerio&ugrave;,
-  en degouezh-se ne vo ket posupl en em enrolla&ntilde; ent emgefre.</i></blockquote>',
+  en degouezh-se ne vo ket posupl en em enrolla&ntilde; ent emgefre.</i></div></blockquote>',
 'info_question_mots_cles' => 'Ha c\'hoant hoc\'h eus ober gant ar gerio&ugrave;-stur war ho lec\'hienn&nbsp;?',
 'info_question_proposer_site' => 'Piv a c\'hall kinnig lec\'hienno&ugrave; menegeret&nbsp;?',
 'info_question_utilisation_moteur_recherche' => 'Ha c\'hoant hoc\'h eus da ober gant lusker enklask diabarzh SPIP&nbsp;?
@@ -1065,8 +1065,8 @@ Gallout a ra restro&ugrave;-se beza&ntilde; menegeret er pennad, pe diskwelet a-
 'texte_sur_titre' => 'Ustitl',
 'texte_syndication' => 'Pa vez aotreet gant ul lec\'hienn Web eo posupl adtapout en un doare emgefre roll an nevezinti.
   Evit se eo dav gweredekaat ar sindikadur.
-  <blockquote><i>Herberc\'hierien a ziweredeka an arc\'hwel-se&nbsp;; 
-  neuze n\'hallit ket implijout ar sindikadur adalek ho lec\'hienn.</i></blockquote>',
+  <blockquote><div><i>Herberc\'hierien a ziweredeka an arc\'hwel-se&nbsp;; 
+  neuze n\'hallit ket implijout ar sindikadur adalek ho lec\'hienn.</i></div></blockquote>',
 'texte_table_ok' => ': kudenn ebet gant an daolenn-ma&ntilde;.',
 'texte_tables_indexation_vides' => 'Goullo eo taolenno&ugrave; menegeri&ntilde; al lusker.',
 'texte_tentative_recuperation' => 'Taol-esa evit ratrea&ntilde;',
index a45319c..ff81d80 100644 (file)
@@ -510,7 +510,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_activer_compactage_js' => 'Souhaitez-vous activer le compactage des scripts (javascript) ?', # NEW
 'info_question_activer_compresseur' => 'Voulez-vous activer la compression du flux HTTP ?', # NEW
 'info_question_gerer_statistiques' => 'Treba li vasa stranica uredjivati statistike posjeta?',
-'info_question_inscription_nouveaux_redacteurs' => 'Da li prihvatate upisivanje novih urednika u javnom prostoru  stranice? Ako prihvatate, posjetioci ce se moci registrovati putem automatskog formulara, a zatim ce moci pristupiti privatnom prostoru i predlagati svoje clanke. <blockquote><i>Tokom faze upisivanja, korisnici ce primiti  automatski e-mail sa kodom za pristup u privatnu stranicu. Neki kompjuteri sprecavaju slanje mailova putem njihovih servera: u tom slucaju ce automatsko upisivanje biti nemoguce.', # MODIF
+'info_question_inscription_nouveaux_redacteurs' => 'Da li prihvatate upisivanje novih urednika u javnom prostoru  stranice? Ako prihvatate, posjetioci ce se moci registrovati putem automatskog formulara, a zatim ce moci pristupiti privatnom prostoru i predlagati svoje clanke. <blockquote><div><i>Tokom faze upisivanja, korisnici ce primiti  automatski e-mail sa kodom za pristup u privatnu stranicu. Neki kompjuteri sprecavaju slanje mailova putem njihovih servera: u tom slucaju ce automatsko upisivanje biti nemoguce.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Zelite li koristiti kljucne rijeci na vasoj stranici?',
 'info_question_proposer_site' => 'Ko moze predloziti preporucene stranice?',
 'info_question_utilisation_moteur_recherche' => 'Zelite li koristiti motor pretrage koji je integrisan u SPIP? (dezaktiviranje ove opcije ubrzava funkcionisanje sistema.)',
@@ -1006,7 +1006,7 @@ demande plus de puissance au serveur.', # NEW
 'texte_statut_refuses' => 'odbijeni',
 'texte_suppression_fichiers' => 'Koristite se ovom komandom da biste sve prisutne dokumente u SPIP kes. To omogucuje npr. izazivanje preracunavanja svih strana, u slucaju da ste izveli vazne izmjene grafizma ili strukture stranice.',
 'texte_sur_titre' => 'Nadnaslov',
-'texte_syndication' => 'Moguce je automatsko otkrivanje spiska novosti, ako web stranica to dozvoljava. Zato trebate aktivirati sindikaciju\\tab <blockquote><i>Odredjeni hosting servisi dezaktiviraju tu funkciju; u tom slucaju ne mozete koristiti sindikaciju sadrzaja na vasoj stranici.</i></blockquote>', # MODIF
+'texte_syndication' => 'Moguce je automatsko otkrivanje spiska novosti, ako web stranica to dozvoljava. Zato trebate aktivirati sindikaciju\\tab <blockquote><div><i>Odredjeni hosting servisi dezaktiviraju tu funkciju; u tom slucaju ne mozete koristiti sindikaciju sadrzaja na vasoj stranici.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ':ova tabela je OK.',
 'texte_tables_indexation_vides' => 'Tabele indeksacije motora su prazne.',
 'texte_tentative_recuperation' => 'Pokusaj popravke',
index 3689ab3..de00e38 100644 (file)
@@ -531,8 +531,8 @@ desactivada per raons de seguretat (cosa normal en molts prove&iuml;dors d\'host
 'info_question_activer_compresseur' => 'Voleu activar la compressi&oacute; del flux HTTP?',
 'info_question_gerer_statistiques' => 'El vostre lloc ha de gestionar les estad&iacute;stiques de les visites?',
 'info_question_inscription_nouveaux_redacteurs' => 'Accepteu les inscripcions de nous redactors a partir del lloc p&uacute;blic? Si ho accepteu, els visitants es podran inscriure
- mitjan&ccedil;ant un formulari  automatitzat i llavors accediran a l\'espai privat per proposar els seus propis articles.<blockquote><i>Durant el proc&eacute;s d\'inscripci&oacute;, els usuaris reben un correu electr&ograve;nic autom&agrave;tic en el que se\'ls d&oacute;na els seus codis d\'acc&eacute;s al lloc privat. Alguns prove&iuml;dors d\'hostatge desactiven l\'enviament de correus electr&ograve;nics des dels seus servidors: en aquest
- cas, la inscripci&oacute; autom&agrave;tica &eacute;s impossible.</i></blockquote>',
+ mitjan&ccedil;ant un formulari  automatitzat i llavors accediran a l\'espai privat per proposar els seus propis articles.<blockquote><div><i>Durant el proc&eacute;s d\'inscripci&oacute;, els usuaris reben un correu electr&ograve;nic autom&agrave;tic en el que se\'ls d&oacute;na els seus codis d\'acc&eacute;s al lloc privat. Alguns prove&iuml;dors d\'hostatge desactiven l\'enviament de correus electr&ograve;nics des dels seus servidors: en aquest
+ cas, la inscripci&oacute; autom&agrave;tica &eacute;s impossible.</i></div></blockquote>',
 'info_question_mots_cles' => 'Voleu utilitzar les paraules clau en la vostra web&nbsp;?',
 'info_question_proposer_site' => 'Qui pot proposar llocs referenciats?',
 'info_question_utilisation_moteur_recherche' => 'Voleu fer servir el motor de cerca integrat a l\'SPIP?
@@ -1056,7 +1056,7 @@ a la cach&eacute; d\'SPIP. Aix&ograve; permet per exemple for&ccedil;ar un rec&a
 fet modificacions importants gr&agrave;ficament o estructurals del lloc web.',
 'texte_sur_titre' => 'Sobret&iacute;tol',
 'texte_syndication' => '&Eacute;s possible recuperar autom&agrave;ticament, quan el lloc Web ho permet, la llista de novetats. Per aix&ograve;, heu d\'activar la sindicaci&oacute;.
-<blockquote><i>Alguns prove&iuml;dors d\'hostatge desactiven aquesta funcionalitat; en aquest cas, no podreu utilitzar la sindicaci&oacute; de contingut des del vostre lloc.</i></blockquote>',
+<blockquote><div><i>Alguns prove&iuml;dors d\'hostatge desactiven aquesta funcionalitat; en aquest cas, no podreu utilitzar la sindicaci&oacute; de contingut des del vostre lloc.</i></div></blockquote>',
 'texte_table_ok' => ': aquesta taula est&agrave; OK.',
 'texte_tables_indexation_vides' => 'Les taules d\'indexaci&oacute; del motor estan buides.',
 'texte_tentative_recuperation' => 'Intent de reparaci&oacute;',
index 3f8c786..ee48751 100644 (file)
@@ -574,8 +574,8 @@ versyon SPIP.',
 'info_question_inscription_nouveaux_redacteurs' => 'Indik si ou laks&egrave;p linskrisyon bann nouvo lot&egrave;r dopwi lo sit piblik&nbsp;? Si
  ou v&eacute;, bann lot&egrave;r i poura inskri azot &egrave;k lo formul&egrave;r otomatik. Zot i poura akost&eacute;
 sir figirw&egrave;b priv&eacute; &eacute; propoz zot prop zartik minm.
-<blockquote><i>Dan moman linskrisyon, bann zitilizat&egrave;r i giny inn lim&egrave;l otomatikman. Lim&egrave;l-la i donn azot bann kod lakostaz sir figirw&egrave;b priv&eacute;. Nana d&eacute;sertin z&eacute;berz&egrave;r
-sak i d&eacute;gr&egrave;n lanvwa bann lim&egrave;l sir zot bann serv&egrave;r&nbsp;: dann kala, linskrisyon otomatik li l&eacute; pa posib', # MODIF
+<blockquote><div><i>Dan moman linskrisyon, bann zitilizat&egrave;r i giny inn lim&egrave;l otomatikman. Lim&egrave;l-la i donn azot bann kod lakostaz sir figirw&egrave;b priv&eacute;. Nana d&eacute;sertin z&eacute;berz&egrave;r
+sak i d&eacute;gr&egrave;n lanvwa bann lim&egrave;l sir zot bann serv&egrave;r&nbsp;: dann kala, linskrisyon otomatik li l&eacute; pa posib</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Anserv bann molakl&eacute; sir out sitw&egrave;b&nbsp;?',
 'info_question_proposer_site' => 'Kisa i p&eacute; propoz bann sit r&eacute;f&eacute;rans&eacute;&nbsp;?',
 'info_question_utilisation_moteur_recherche' => 'Indik si ou v&eacute; ans&egrave;rv lo rod&egrave;r-dodan SPIP
@@ -1108,9 +1108,9 @@ Inn ti p&eacute;d pr&eacute;kosyon l&eacute; n&eacute;s&eacute;s&egrave;r &egrav
 'texte_suppression_fichiers' => 'Anserv lakomand-la pou d&eacute;gr&egrave;n tout bann fisy&eacute; sir lo kas SPIP. Sa l&eacute; itil, pa &eacute;gsanp, pou fors larkalkil do tout bann pazw&egrave;b si lo sit, kank ou la f&eacute; bann sanzman inportan dann grafism ou dann lastriktir lo sit.',
 'texte_sur_titre' => 'Sirtitr',
 'texte_syndication' => 'L&eacute; posib r&eacute;kup&egrave;r la list bann nouvelt&eacute; otomatikman, sir d&eacute;sertin sit : ifo pou sa-la f&eacute; zw&eacute; lasindikasyon 
-<blockquote><i>N&eacute;na d&eacute;sertin z&eacute;berz&egrave;r sak i d&eacute;gr&egrave;n lafonksyon-la&nbsp;; 
+<blockquote><div><i>N&eacute;na d&eacute;sertin z&eacute;berz&egrave;r sak i d&eacute;gr&egrave;n lafonksyon-la&nbsp;; 
 dann ka-la ou sra pa pou itiliz lasindikasyon d-kontnu
-dopwi out pro sit sa-minm.</i></blockquote>', # MODIF
+dopwi out pro sit sa-minm.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': tab-la l&eacute; OK.',
 'texte_tables_indexation_vides' => 'Bann tab l&eacute; vid (pou lind&egrave;ksasyon lo rod&egrave;r).',
 'texte_tentative_recuperation' => 'Es&egrave;y inn aranzman',
index 4c82c9d..66cdb93 100644 (file)
@@ -555,12 +555,12 @@ ak yon lim&egrave;l. W vle itilize opsyon nan&nbsp;?', # MODIF
 'info_question_inscription_nouveaux_redacteurs' => 'Aksepte ounon pa aksepte w tout enskripsyon nouvo redakt&egrave; sou lespas piblik sit-la&nbsp;?
 Si wi ka aksepte, vizit&eacute; yo ke enskri azot depi
    yon f&ograve;mil&egrave;,  pou zot ke sere laks&eacute; nan espas priv&eacute; pou zot kapab pwopoze
-  zot pwop atik yo a y m&egrave;m. <blockquote><i>Kann moun-la zot ap enskri azot,
+  zot pwop atik yo a y m&egrave;m. <blockquote><div><i>Kann moun-la zot ap enskri azot,
  y reswa yon lim&egrave;l otomatik
   ki bay azottout kod laks&eacute; sou sit priv&eacute;. K&egrave;k
   l&eacute;b&egrave;j&egrave; ka enpeche lanvwa tout lim&egrave;l  depi zot s&egrave;v&egrave;&nbsp;:
   al&ograve;, lenskrisyon otomatik ke
-  inposib.', # MODIF
+  inposib.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Eske w vle itilize mokle yo nan sitw&egrave;b w&nbsp;?',
 'info_question_proposer_site' => 'Kimoun kapab pwopoze k&egrave;k sit referans&eacute;&nbsp;?',
 'info_question_utilisation_moteur_recherche' => 'Eske w vle itilize mot&egrave; pou ch&egrave;che de SPIP&nbsp;?
@@ -1121,9 +1121,9 @@ Bagay-la p&eacute;m&egrave;, pa egsanp, f&ograve;se rekalkil tout paj sa-yo, apr
 'texte_sur_titre' => 'Sir-tit',
 'texte_syndication' => 'Kank sitweb-la li p&egrave;m&egrave; bagay-sa-a, se posib pran otomatikman lis tout nouv&egrave;lt&eacute; ali. 
 F&ograve;k w aktive sendikasyon an. 
-  <blockquote><i>Tansyon k&egrave;k z&eacute;b&egrave;rj&egrave;, zot ka d&eacute;zaktiv fonksyonalit&eacute;-a&nbsp;; 
+  <blockquote><div><i>Tansyon k&egrave;k z&eacute;b&egrave;rj&egrave;, zot ka d&eacute;zaktiv fonksyonalit&eacute;-a&nbsp;; 
   akoz bagay-la, inposib pran sendikasyon-an depi sit aou
-.</i></blockquote>', # MODIF
+.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': tab-la se bon.',
 'texte_tables_indexation_vides' => 'Tab pou indeksayon mot&egrave; se vid.',
 'texte_tentative_recuperation' => 'Esey aranj&eacute;',
index 1681423..8ecf56c 100644 (file)
@@ -556,12 +556,12 @@ pro technickou &uacute;dr&#382;bu. N&#283;kter&eacute; z nich spou&#353;t&iacute
 'info_question_inscription_nouveaux_redacteurs' => 'Mohou se nov&iacute; redakto&#345;i p&#345;ihla&#353;ovat z ve&#345;ejn&eacute; &#269;&aacute;sti webu?
   Pokud ano, n&aacute;v&#353;t&#283;vn&iacute;ci se mohou p&#345;ihla&#353;ovat pomoc&iacute; automatick&eacute;ho formul&aacute;&#345;e
   a z&iacute;skaj&iacute; p&#345;&iacute;stup do priv&aacute;tn&iacute; &#269;&aacute;sti. Budou tak moci navrhovat sv&eacute; vlastn&iacute;
-  &#269;l&aacute;nky. <blockquote><i>P&#345;i p&#345;ihl&aacute;&#353;en&iacute;
+  &#269;l&aacute;nky. <blockquote><div><i>P&#345;i p&#345;ihl&aacute;&#353;en&iacute;
   obdr&#382;&iacute; u&#382;ivatel&eacute; automatick&yacute; email
   s uveden&iacute;m p&#345;&iacute;stupov&yacute;ch &uacute;daj&#367; k priv&aacute;tn&iacute; &#269;&aacute;sti.
   N&#283;kte&#345;&iacute; poskytovatel&eacute; prostoru pro web odes&iacute;l&aacute;n&iacute; email&#367; ze sv&yacute;ch server&#367;
   vyp&iacute;naj&iacute;. Automatick&eacute; p&#345;ihl&aacute;&#353;en&iacute; je v takov&eacute;m p&#345;&iacute;pad&#283;
-  nemo&#382;n&eacute;.', # MODIF
+  nemo&#382;n&eacute;.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Chcete na va&#353;em webu pou&#382;&iacute;vat kl&iacute;&#269;ov&aacute; slova?',
 'info_question_proposer_site' => 'Kdo m&#367;&#382;e navrhovat odkazy na weby?',
 'info_question_utilisation_moteur_recherche' => 'Chcete pou&#382;&iacute;vat vyhled&aacute;va&#269;, kter&yacute; je sou&#269;&aacute;st&iacute; syst&eacute;mu SPIP?
@@ -1114,8 +1114,8 @@ zm&#283;ny grafick&eacute;ho uspo&#345;&aacute;d&aacute;n&iacute; nebo struktury
 'texte_sur_titre' => 'Podtitul',
 'texte_syndication' => 'Pokud to web umo&#382;&#328;uje, m&#367;&#382;ete automaticky z&iacute;skat seznam na n&#283;m zve&#345;ejn&#283;n&yacute;ch
   novinek. K tomu je nutno zapnout syndikaci.
-  <blockquote><i>N&#283;kte&#345;&iacute; poskytovatel&eacute; webov&eacute;ho prostoru tuto funkcni vyp&iacute;naj&iacute;.
-  V takov&eacute;m p&#345;&iacute;pad&#283; nem&#367;&#382;ete syndikaci ze sv&eacute;ho webu pou&#382;&iacute;t.</i></blockquote>', # MODIF
+  <blockquote><div><i>N&#283;kte&#345;&iacute; poskytovatel&eacute; webov&eacute;ho prostoru tuto funkcni vyp&iacute;naj&iacute;.
+  V takov&eacute;m p&#345;&iacute;pad&#283; nem&#367;&#382;ete syndikaci ze sv&eacute;ho webu pou&#382;&iacute;t.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': tato tabulka je v po&#345;&aacute;dku.',
 'texte_tables_indexation_vides' => 'Tabulky index&#367; vyhled&aacute;va&#269;e jsou pr&aacute;zdn&eacute;.',
 'texte_tentative_recuperation' => 'Pokus o opravu',
index a1f7fd5..49d6977 100644 (file)
@@ -533,9 +533,9 @@ De vil v&aelig;re lukkede i forhold til afsnit, meddelelser osv..',
 'info_question_inscription_nouveaux_redacteurs' => 'Vil du tillade, at nye redakt&oslash;rer tilmelder sig
                p&aring; det offentligt tilg&aelig;ngelige websted? Ja betyder, at bes&oslash;gende kan tilmelde sig p&aring; en automatisk dannet formular,
                og derefter f&aring; adgang til det private omr&aring;de, hvor de kan vedligeholde deres egne artikler.
-               <blockquote><i>Under tilmeldingen modtager brugerne en automatisk dannet e-mail med deres adgangskode til det
+               <blockquote><div><i>Under tilmeldingen modtager brugerne en automatisk dannet e-mail med deres adgangskode til det
                private websted. Nogle webhoteller tillader ikke at der sendes e-mails fra deres servere. I s&aring; fald kan automatisk
-               tilmelding ikke finde sted.', # MODIF
+               tilmelding ikke finde sted.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => '&Oslash;nsker du at bruge n&oslash;gleord p&aring; webstedet?',
 'info_question_proposer_site' => 'Hvem kan foresl&aring; henvisninger til websteder?',
 'info_question_utilisation_moteur_recherche' => '&Oslash;nsker du at anvende den s&oslash;gefunktion, der findes i SPIP?
@@ -1084,8 +1084,8 @@ demande plus de puissance au serveur.', # NEW
 'texte_sur_titre' => 'Hovedoverskrift',
 'texte_syndication' => 'Hvis webstedet tillader det, er det muligt automatisk at hente en oversigt over det
                seneste materiale. For at g&oslash;re dette, skal du igangs&aelig;tte syndikering.
-               <blockquote><i>Nogle webhoteller tillader ikke denne funktion.
-               I s&aring; fald kan du ikke foretage indholdssyndikering fra dit websted.</i></blockquote>', # MODIF
+               <blockquote><div><i>Nogle webhoteller tillader ikke denne funktion.
+               I s&aring; fald kan du ikke foretage indholdssyndikering fra dit websted.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': denne tabel er OK.',
 'texte_tables_indexation_vides' => 'S&oslash;gefunktionens indekstabeller er tomme.',
 'texte_tentative_recuperation' => 'Reparationsfors&oslash;g',
index 2a07d2b..a57ef8c 100644 (file)
@@ -515,10 +515,10 @@ Ihr Status wird durch die Farbe ihres Symbols angezeigt (Redakteur = gelb; Admin
 'info_question_inscription_nouveaux_redacteurs' => 'M&ouml;chten Sie, dass sich neue Redakteure vom &ouml;ffentlichen Bereich
  aus anmelden k&ouml;nnen?&nbsp; Wenn Sie es wollen, k&ouml;nnen sich Besucher &uuml;ber ein automatisch
  erstelltes Formular anmelden und Artikel vorschlagen.
- <blockquote><i>Nach der Anmeldung erhalten die neuen Redakteure automatisch
+ <blockquote><div><i>Nach der Anmeldung erhalten die neuen Redakteure automatisch
  eine E-Mail mit ihren Zugangsdaten. Manche Webhoster unterbinden den Mailversand
  von ihren Webservern aus.
- In diesem Fall funktioniert die automatische Anmeldung nicht.',
+ In diesem Fall funktioniert die automatische Anmeldung nicht.</i></div></blockquote>',
 'info_question_mots_cles' => 'M&ouml;chten Sie Schlagworte f&uuml;r Ihre Website verwenden?',
 'info_question_proposer_site' => 'Wer darf Websites zur Verlinkung vorschlagen?',
 'info_question_utilisation_moteur_recherche' => 'Wollen Sie die integrierte Suchfunktion von SPIP verwenden? (ohne Suchfunktion wird Ihr System schneller.)',
@@ -1025,7 +1025,7 @@ Wenn das Problem weiter besteht, nehmen Sie bitte Kontakt mit Ihrem Provider auf
 'texte_suppression_fichiers' => 'Benutzen Sie diesen Befehl, um alle Dateien aus dem Zwischenspeicher von SPIP zu l&ouml;schen. Damit k&ouml;nnen Sie eine erneute Berechnung aller Seiten erzwingen, wenn Sie z.B. wesentliche &Auml;nderungen am Inhalt und Layout Ihrer Site gemacht haben. ',
 'texte_sur_titre' => 'Einleitender Titel',
 'texte_syndication' => 'Manche Websites erm&ouml;glichen den automatischen Abruf einer Liste von neuen Artikeln. Um diese Daten nutzen zu k&ouml;nnen, m&uuml;ssen Sie die Syndikation aktivieren.
-                <blockquote><i>Manche Provider unterbinden die Nutzung dieser Funktion. Dann k&ouml;nnen Sie keine syndizierten Inhalte nutzen.</i></blockquote>',
+                <blockquote><div><i>Manche Provider unterbinden die Nutzung dieser Funktion. Dann k&ouml;nnen Sie keine syndizierten Inhalte nutzen.</i></div></blockquote>',
 'texte_table_ok' => ': Tabelle OK.',
 'texte_tables_indexation_vides' => 'Indextabellen der Suchmaschine sind leer.',
 'texte_tentative_recuperation' => 'Reparaturversuch',
index 943e8be..be3da8d 100644 (file)
@@ -554,12 +554,12 @@ through an FTP access to the Web site.</p>',
 'info_question_inscription_nouveaux_redacteurs' => 'Do you wish to allow the new editors to register
  from the public site? If you agree to this, visitors will be able to  register
   using an automatic form, and then access the private area to
-  tender their own articles. <blockquote><i>During the registration process,
+  tender their own articles. <blockquote><div><i>During the registration process,
   users receive an automatic email
   giving them their access code to the private area. Some
   service providers disallow the sending of email from their
   servers: in that case, automated registration cannot be
-  implemented.</i></blockquote>',
+  implemented.</i></div></blockquote>',
 'info_question_mots_cles' => 'Do you wish to use keywords in your site?',
 'info_question_proposer_site' => 'Who can propose referenced sites?',
 'info_question_utilisation_moteur_recherche' => 'Do you wish to use the search engine integrated to SPIP?
@@ -1122,9 +1122,9 @@ entered important modifications on the graphics or the structure of the site.',
 'texte_sur_titre' => 'Top title',
 'texte_syndication' => 'If a site allows it, it is possible to retrieve automatically
   the list of its latest material. To achieve this, you must activate the syndication. 
-  <blockquote><i>Some hosts disable this function; 
+  <blockquote><div><i>Some hosts disable this function; 
   in this case, you cannot use the content syndication
-  from your site.</i></blockquote>',
+  from your site.</i></div></blockquote>',
 'texte_table_ok' => ': this table is OK.',
 'texte_tables_indexation_vides' => 'Indexing tables of the engine are empty.',
 'texte_tentative_recuperation' => 'Repairing attempt',
index a0d8c04..0b4c2e7 100644 (file)
@@ -539,11 +539,11 @@ postulas disponi je FTP-alirrajto al la retejo.</p>', # MODIF
 'info_question_inscription_nouveaux_redacteurs' => '&#264;u vi akceptas la registri&#285;adon de novaj redaktantoj ekde
   la publika spaco&nbsp;? Se vi akceptas tion, la vizitantoj povos registri&#285;i
   per a&#365;tomata ali&#285;ilo kaj tiam aliros al la privata spaco por
-  proponi siajn proprajn artikolojn. <blockquote><i>Dum la ali&#285;o,
+  proponi siajn proprajn artikolojn. <blockquote><div><i>Dum la ali&#285;o,
   la uzantoj ricevos a&#365;tomate senditan retmesa&#285;on kun siaj
   alir-kodoj al la privata spaco. Iuj
   retejgastigantoj malaktivigas la sendadon de retleteroj el siaj
-  serviloj&nbsp;: tiukaze la a&#365;tomata ali&#285;o ne eblos.', # MODIF
+  serviloj&nbsp;: tiukaze la a&#365;tomata ali&#285;o ne eblos.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => '&#264;u vi deziras uzi &#349;losilvortojn &#265;e via retejo&nbsp;?',
 'info_question_proposer_site' => 'Kiu povas proponi referencigitajn retejojn&nbsp;?',
 'info_question_utilisation_moteur_recherche' => '&#264;u vi deziras uzi la SPIP-internan ser&#265;ilon&nbsp;?
@@ -1109,9 +1109,9 @@ faris gravajn &#349;an&#285;ojn en la grafiko a&#365; strukturo de la retejo.',
 'texte_sur_titre' => 'Surtitolo',
 'texte_syndication' => 'Eblas elpreni a&#365;tomate la liston de nova&#309;oj de iu retejo,
   se tiu retejo tion permesas. Por tio, vi devas aktivigi la abonrilaton.
-  <blockquote><i>Iuj retgastigantoj malaktivigas tiun funkcion&nbsp;;
+  <blockquote><div><i>Iuj retgastigantoj malaktivigas tiun funkcion&nbsp;;
   tiukaze vi ne povas abonligi la enhavon
-  ekde via retejo.</i></blockquote>', # MODIF
+  ekde via retejo.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': tiu tabelo estas en ordo.',
 'texte_tables_indexation_vides' => 'La indeksaj tabeloj de la ser&#265;ilo estas malplenaj.',
 'texte_tentative_recuperation' => 'Ripar-provo',
index 9dc5518..eb014f8 100644 (file)
@@ -520,7 +520,7 @@ Los idiomas que ya se utilizan en el sitio (al principio de la lista) no pueden
 'info_question_activer_compactage_js' => '&iquest;Desea activar la compresi&oacute;n de los scripts (javascript) ?',
 'info_question_activer_compresseur' => '&iquest;Desea activar la compresi&oacute;n del flujo HTTP ?',
 'info_question_gerer_statistiques' => '&iquest;Deseas que tu sitio gestione las estad&iacute;sticas de las visitas?',
-'info_question_inscription_nouveaux_redacteurs' => '&iquest;Se aceptan inscripciones de nuevas redactoras y redactores a partir del sitio p&uacute;blico? Si se acepta, las personas que visitan el sitio podr&aacute;n inscribirse desde un formulario automatizado y acceder&aacute;n entonces al espacio privado para proponer sus propios art&iacute;culos. <blockquote><i>Durante la fase de inscripci&oacute;n, reciben un correo electr&oacute;nico autom&aacute;tico que les indica sus c&oacute;digos de acceso al sitio privado. Ciertos proveedores de hospedaje desactivan el env&iacute;o de correos electr&oacute;nicos desde sus servidores: en tal caso, se hace imposible la inscripci&oacute;n autom&aacute;tica. ',
+'info_question_inscription_nouveaux_redacteurs' => '&iquest;Se aceptan inscripciones de nuevas redactoras y redactores a partir del sitio p&uacute;blico? Si se acepta, las personas que visitan el sitio podr&aacute;n inscribirse desde un formulario automatizado y acceder&aacute;n entonces al espacio privado para proponer sus propios art&iacute;culos. <blockquote><div><i>Durante la fase de inscripci&oacute;n, reciben un correo electr&oacute;nico autom&aacute;tico que les indica sus c&oacute;digos de acceso al sitio privado. Ciertos proveedores de hospedaje desactivan el env&iacute;o de correos electr&oacute;nicos desde sus servidores: en tal caso, se hace imposible la inscripci&oacute;n autom&aacute;tica.</i></div></blockquote>',
 'info_question_mots_cles' => '&iquest;Deseas utilizar las palabras clave en tu sitio?',
 'info_question_proposer_site' => '&iquest;Qui&eacute;n puede proponer los sitios referenciados?',
 'info_question_utilisation_moteur_recherche' => '&iquest;Deseas utilizar el motor de b&uacute;squeda integrado de SPIP? (desactivarlo agiliza el sitio)',
@@ -1036,8 +1036,8 @@ Prudencia con esta funcionalidad: <b>las modificaciones o p&eacute;rdidas eventu
 'texte_sur_titre' => 'Antet&iacute;tulo',
 'texte_syndication' => 'Es posible recuperar autom&aacute;ticamente, cuando un sitio Web lo permite,
  la lista de novedades. Para ello, debes activar la sindicaci&oacute;n.
-<blockquote><i>Algunos proveedores de hospedaje desactivan esta funcionalidad&nbsp;;
- en ese caso, no podr&aacute;s utilizar la sindicaci&oacute;n de contenido desde tu sitio.</i></blockquote>',
+<blockquote><div><i>Algunos proveedores de hospedaje desactivan esta funcionalidad&nbsp;;
+ en ese caso, no podr&aacute;s utilizar la sindicaci&oacute;n de contenido desde tu sitio.</i></div></blockquote>',
 'texte_table_ok' => ': esta tabla est&aacute; bien.',
 'texte_tables_indexation_vides' => 'Las tablas del motor de indexaci&oacute;n est&aacute;n vac&iacute;as.',
 'texte_tentative_recuperation' => 'Tentativa de reparaci&oacute;n.',
index 07bfd2e..770eb61 100644 (file)
@@ -513,7 +513,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_activer_compactage_js' => 'Souhaitez-vous activer le compactage des scripts (javascript) ?', # NEW
 'info_question_activer_compresseur' => 'Voulez-vous activer la compression du flux HTTP ?', # NEW
 'info_question_gerer_statistiques' => '&#1570;&#1610;&#1575; &#1605;&#1610;&#1582;&#1608;&#1575;&#1607;&#1610;&#1583; &#1587;&#1575;&#1610;&#1578;&#1578;&#1575;&#1606; &#1570;&#1605;&#1575;&#1585; &#1576;&#1610;&#1606;&#1606;&#1583; &#1711;&#1575;&#1606; &#1585;&#1575; &#1575;&#1583;&#1575;&#1585;&#1607; &#1603;&#1606;&#1583;&#1567;',
-'info_question_inscription_nouveaux_redacteurs' => '<MODIF>&#1570;&#1610;&#1575; &#1579;&#1576;&#1578; &#1606;&#1575;&#1605; &#1606;&#1608;&#1610;&#1587;&#1606;&#1583; &#1711;&#1575;&#1606; &#1580;&#1583;&#1610;&#1583; &#1585;&#1575; &#1575;&#1586; &#1587;&#1575;&#1610;&#1578; &#1607;&#1605;&#1711;&#1575;&#1606;&#1609; &#1602;&#1576;&#1608;&#1604; &#1605;&#1610;&#1603;&#1606;&#1610;&#1583;&#1567; &#1575;&#1711;&#1585; &#1605;&#1610;&#1603;&#1606;&#1610;&#1583;&#1548; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1606;&#1583; &#1576;&#1575; &#1662;&#1585; &#1603;&#1585;&#1583;&#1606; &#1610;&#1603; &#1662;&#1585;&#1587;&#1588;&#1606;&#1575;&#1605;&#1607; &#1579;&#1576;&#1578; &#1606;&#1575;&#1605; &#1603;&#1606;&#1606;&#1583; &#1608; &#1576;&#1607; &#1605;&#1581;&#1608;&#1591;&#1607; &#1582;&#1589;&#1608;&#1589;&#1609; &#1585;&#1575;&#1607; &#1610;&#1575;&#1576;&#1606;&#1583;. &#1570;&#1606;&#1607;&#1575; &#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1606;&#1583; &#1605;&#1602;&#1575;&#1604;&#1575;&#1578;&#1588;&#1575;&#1606; &#1585;&#1575; &#1605;&#1591;&#1585;&#1581; &#1603;&#1606;&#1606;&#1583; <blockquote><i>&#1583;&#1585; &#1607;&#1606;&#1711;&#1575;&#1605; &#1579;&#1576;&#1578; &#1606;&#1575;&#1605; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1610;&#1603; &#1575;&#1610;&#1605;&#1610;&#1604; &#1583;&#1585;&#1610;&#1575;&#1601;&#1578; &#1582;&#1608;&#1575;&#1607;&#1606;&#1583; &#1603;&#1585;&#1583; &#1603;&#1607; &#1588;&#1575;&#1605;&#1604; &#1603;&#1583; &#1608;&#1585;&#1608;&#1583;&#1610; &#1588;&#1575;&#1606; &#1576;&#1607; &#1587;&#1575;&#1610;&#1578; &#1582;&#1589;&#1608;&#1589;&#1609; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;. &#1578;&#1593;&#1583;&#1575;&#1583;&#1609; &#1575;&#1586; &#1605;&#1610;&#1586;&#1576;&#1575;&#1606;&#1575;&#1606;&#1548; &#1575;&#1585;&#1587;&#1575;&#1604; &#1575;&#1610;&#1605;&#1610;&#1604; &#1585;&#1575; &#1575;&#1586; &#1587;&#1585;&#1608;&#1585;&#1607;&#1575; &#1594;&#1610;&#1585; &#1601;&#1593;&#1575;&#1604; &#1603;&#1585;&#1583;&#1607; &#1575;&#1606;&#1583;: &#1583;&#1585;&#1575;&#1610;&#1606;&#1589;&#1608;&#1585;&#1578; &#1579;&#1576;&#1578; &#1606;&#1575;&#1605; &#1582;&#1608;&#1583;&#1603;&#1575;&#1585; &#1594;&#1610;&#1585; &#1605;&#1605;&#1603;&#1606; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;..</i></blockquote>',
+'info_question_inscription_nouveaux_redacteurs' => '<MODIF>&#1570;&#1610;&#1575; &#1579;&#1576;&#1578; &#1606;&#1575;&#1605; &#1606;&#1608;&#1610;&#1587;&#1606;&#1583; &#1711;&#1575;&#1606; &#1580;&#1583;&#1610;&#1583; &#1585;&#1575; &#1575;&#1586; &#1587;&#1575;&#1610;&#1578; &#1607;&#1605;&#1711;&#1575;&#1606;&#1609; &#1602;&#1576;&#1608;&#1604; &#1605;&#1610;&#1603;&#1606;&#1610;&#1583;&#1567; &#1575;&#1711;&#1585; &#1605;&#1610;&#1603;&#1606;&#1610;&#1583;&#1548; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1606;&#1583; &#1576;&#1575; &#1662;&#1585; &#1603;&#1585;&#1583;&#1606; &#1610;&#1603; &#1662;&#1585;&#1587;&#1588;&#1606;&#1575;&#1605;&#1607; &#1579;&#1576;&#1578; &#1606;&#1575;&#1605; &#1603;&#1606;&#1606;&#1583; &#1608; &#1576;&#1607; &#1605;&#1581;&#1608;&#1591;&#1607; &#1582;&#1589;&#1608;&#1589;&#1609; &#1585;&#1575;&#1607; &#1610;&#1575;&#1576;&#1606;&#1583;. &#1570;&#1606;&#1607;&#1575; &#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1606;&#1583; &#1605;&#1602;&#1575;&#1604;&#1575;&#1578;&#1588;&#1575;&#1606; &#1585;&#1575; &#1605;&#1591;&#1585;&#1581; &#1603;&#1606;&#1606;&#1583; <blockquote><div><i>&#1583;&#1585; &#1607;&#1606;&#1711;&#1575;&#1605; &#1579;&#1576;&#1578; &#1606;&#1575;&#1605; &#1603;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606; &#1610;&#1603; &#1575;&#1610;&#1605;&#1610;&#1604; &#1583;&#1585;&#1610;&#1575;&#1601;&#1578; &#1582;&#1608;&#1575;&#1607;&#1606;&#1583; &#1603;&#1585;&#1583; &#1603;&#1607; &#1588;&#1575;&#1605;&#1604; &#1603;&#1583; &#1608;&#1585;&#1608;&#1583;&#1610; &#1588;&#1575;&#1606; &#1576;&#1607; &#1587;&#1575;&#1610;&#1578; &#1582;&#1589;&#1608;&#1589;&#1609; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;. &#1578;&#1593;&#1583;&#1575;&#1583;&#1609; &#1575;&#1586; &#1605;&#1610;&#1586;&#1576;&#1575;&#1606;&#1575;&#1606;&#1548; &#1575;&#1585;&#1587;&#1575;&#1604; &#1575;&#1610;&#1605;&#1610;&#1604; &#1585;&#1575; &#1575;&#1586; &#1587;&#1585;&#1608;&#1585;&#1607;&#1575; &#1594;&#1610;&#1585; &#1601;&#1593;&#1575;&#1604; &#1603;&#1585;&#1583;&#1607; &#1575;&#1606;&#1583;: &#1583;&#1585;&#1575;&#1610;&#1606;&#1589;&#1608;&#1585;&#1578; &#1579;&#1576;&#1578; &#1606;&#1575;&#1605; &#1582;&#1608;&#1583;&#1603;&#1575;&#1585; &#1594;&#1610;&#1585; &#1605;&#1605;&#1603;&#1606; &#1582;&#1608;&#1575;&#1607;&#1583; &#1576;&#1608;&#1583;..</i></div></blockquote>',
 'info_question_mots_cles' => '&#1570;&#1610;&#1575; &#1605;&#1610;&#1582;&#1608;&#1575;&#1607;&#1610;&#1583; &#1575;&#1586; &#1608;&#1575;&#1688;&#1607;-&#1603;&#1604;&#1610;&#1583;&#1607;&#1575; &#1583;&#1585; &#1587;&#1575;&#1610;&#1578;&#1578;&#1575;&#1606; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583; &#1603;&#1606;&#1610;&#1583;&nbsp;&#1567;',
 'info_question_proposer_site' => '&#1603;&#1609; &#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1583; &#1587;&#1575;&#1610;&#1578;&#1607;&#1575;&#1609; &#1605;&#1585;&#1580;&#1593; &#1585;&#1575; &#1662;&#1610;&#1588;&#1606;&#1607;&#1575;&#1583; &#1603;&#1606;&#1583;&nbsp;&#1567;',
 'info_question_utilisation_moteur_recherche' => '&#1570;&#1610;&#1575; &#1605;&#1575;&#1610;&#1604; &#1607;&#1587;&#1578;&#1610;&#1583; &#1603;&#1607; &#1575;&#1586; &#1605;&#1608;&#1578;&#1608;&#1585; &#1580;&#1587;&#1578;&#1580;&#1608;&#1609; &#1575;&#1587;&#1662;&#1610;&#1662; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;&nbsp;&#1567;
@@ -1015,7 +1015,7 @@ demande plus de puissance au serveur.', # NEW
 'texte_suppression_fichiers' => '&#1575;&#1586; &#1575;&#1610;&#1606; &#1601;&#1585;&#1605;&#1575;&#1606; &#1576;&#1585;&#1575;&#1609; &#1581;&#1584;&#1601; &#1578;&#1605;&#1575;&#1605; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575; &#1605;&#1608;&#1580;&#1608;&#1583; &#1583;&#1585; &#1601;&#1575;&#1610;&#1604;&#1607;&#1575;&#1609; &#1605;&#1608;&#1602;&#1578; &#1575;&#1587;&#1662;&#1610;&#1662; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1603;&#1606;&#1610;&#1583;.
 &#1575;&#1610;&#1606; &#1576;&#1588;&#1605;&#1575; &#1575;&#1605;&#1603;&#1575;&#1606; &#1606;&#1608; &#1603;&#1585;&#1583;&#1606; &#1578;&#1605;&#1575;&#1605; &#1589;&#1601;&#1581;&#1575;&#1578; &#1585;&#1575; &#1605;&#1610;&#1583;&#1607;&#1583; &#1576;&#1608;&#1610;&#1688;&#1607; &#1575;&#1711;&#1585; &#1588;&#1605;&#1575; &#1578;&#1594;&#1610;&#1610;&#1585;&#1575;&#1578; &#1605;&#1607;&#1605;&#1609; &#1583;&#1585; &#1606;&#1605;&#1575; &#1610;&#1575; &#1583;&#1585; &#1587;&#1575;&#1582;&#1578;&#1575;&#1585; &#1587;&#1575;&#1610;&#1578; &#1583;&#1575;&#1583;&#1607; &#1576;&#1575;&#1588;&#1610;&#1583;.',
 'texte_sur_titre' => '&#1587;&#1585; &#1593;&#1606;&#1608;&#1575;&#1606;',
-'texte_syndication' => '&#1588;&#1605;&#1575; &#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1576;&#1591;&#1608;&#1585; &#1582;&#1608;&#1583;&#1603;&#1575;&#1585;&#1548; &#1607;&#1606;&#1711;&#1575;&#1605;&#1610;&#1603;&#1607; &#1587;&#1575;&#1610;&#1578; &#1575;&#1580;&#1575;&#1586;&#1607; &#1583;&#1607;&#1583;&#1548; &#1601;&#1607;&#1585;&#1587;&#1578; &#1578;&#1575;&#1586;&#1607; &#1607;&#1575; &#1585;&#1575; &#1576;&#1711;&#1610;&#1585;&#1610;&#1583;. &#1576;&#1585;&#1575;&#1609; &#1575;&#1610;&#1606; &#1605;&#1606;&#1592;&#1608;&#1585;&#1548; &#1588;&#1605;&#1575; &#1576;&#1575;&#1610;&#1583; &#1711;&#1586;&#1610;&#1606;&#1588; &#1662;&#1610;&#1608;&#1606;&#1583; &#1587;&#1575;&#1610;&#1578;&#1609; &#1585;&#1575; &#1601;&#1593;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;.<blockquote><i>&#1578;&#1593;&#1583;&#1575;&#1583;&#1609; &#1575;&#1586; &#1605;&#1610;&#1586;&#1576;&#1575;&#1606;&#1575;&#1606; &#1575;&#1610;&#1606; &#1593;&#1605;&#1604; &#1585;&#1575; &#1594;&#1610;&#1585;&#1601;&#1593;&#1575;&#1604; &#1603;&#1585;&#1583;&#1607; &#1575;&#1606;&#1583;&#1548; &#1583;&#1585;&#1575;&#1610;&#1606;&#1589;&#1608;&#1585;&#1578; &#1588;&#1605;&#1575; &#1606;&#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1575;&#1586; &#1570;&#1606; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1576;&#1603;&#1606;&#1610;&#1583;.</i></blockquote>', # MODIF
+'texte_syndication' => '&#1588;&#1605;&#1575; &#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1576;&#1591;&#1608;&#1585; &#1582;&#1608;&#1583;&#1603;&#1575;&#1585;&#1548; &#1607;&#1606;&#1711;&#1575;&#1605;&#1610;&#1603;&#1607; &#1587;&#1575;&#1610;&#1578; &#1575;&#1580;&#1575;&#1586;&#1607; &#1583;&#1607;&#1583;&#1548; &#1601;&#1607;&#1585;&#1587;&#1578; &#1578;&#1575;&#1586;&#1607; &#1607;&#1575; &#1585;&#1575; &#1576;&#1711;&#1610;&#1585;&#1610;&#1583;. &#1576;&#1585;&#1575;&#1609; &#1575;&#1610;&#1606; &#1605;&#1606;&#1592;&#1608;&#1585;&#1548; &#1588;&#1605;&#1575; &#1576;&#1575;&#1610;&#1583; &#1711;&#1586;&#1610;&#1606;&#1588; &#1662;&#1610;&#1608;&#1606;&#1583; &#1587;&#1575;&#1610;&#1578;&#1609; &#1585;&#1575; &#1601;&#1593;&#1575;&#1604; &#1603;&#1606;&#1610;&#1583;.<blockquote><div><i>&#1578;&#1593;&#1583;&#1575;&#1583;&#1609; &#1575;&#1586; &#1605;&#1610;&#1586;&#1576;&#1575;&#1606;&#1575;&#1606; &#1575;&#1610;&#1606; &#1593;&#1605;&#1604; &#1585;&#1575; &#1594;&#1610;&#1585;&#1601;&#1593;&#1575;&#1604; &#1603;&#1585;&#1583;&#1607; &#1575;&#1606;&#1583;&#1548; &#1583;&#1585;&#1575;&#1610;&#1606;&#1589;&#1608;&#1585;&#1578; &#1588;&#1605;&#1575; &#1606;&#1605;&#1610;&#1578;&#1608;&#1575;&#1606;&#1610;&#1583; &#1575;&#1586; &#1570;&#1606; &#1575;&#1587;&#1578;&#1601;&#1575;&#1583;&#1607; &#1576;&#1603;&#1606;&#1610;&#1583;.</i></div></blockquote>', # MODIF
 'texte_table_ok' => '&#1575;&#1610;&#1606; &#1580;&#1583;&#1608;&#1604; &#1583;&#1585;&#1587;&#1578; &#1575;&#1587;&#1578; :',
 'texte_tables_indexation_vides' => '&#1580;&#1583;&#1575;&#1608;&#1604; &#1601;&#1607;&#1585;&#1587;&#1578; &#1711;&#1584;&#1575;&#1609; &#1605;&#1608;&#1578;&#1608;&#1585; &#1580;&#1587;&#1578;&#1580;&#1608; &#1582;&#1575;&#1604;&#1609; &#1605;&#1610;&#1576;&#1575;&#1588;&#1606;&#1583;',
 'texte_tentative_recuperation' => '&#1603;&#1608;&#1588;&#1588; &#1576;&#1585;&#1575;&#1609; &#1578;&#1593;&#1605;&#1610;&#1585;',
index 9ada192..0c9cfca 100644 (file)
@@ -489,8 +489,10 @@ exige d\'avoir un acc&egrave;s FTP au site Web.</p>',
 'info_multi_secteurs' => '... seulement pour les rubriques situ&eacute;es &agrave; la racine&nbsp;?',
 'info_nom' => 'Nom',
 'info_nom_destinataire' => 'Nom du destinataire',
+'info_nom_pas_conforme' => 'les tags html ne sont pas autoris&eacute;s',
 'info_nom_site' => 'Nom de votre site',
 'info_nom_site_2' => '<b>Nom du site</b> [Obligatoire]',
+'info_url_site_pas_conforme' => 'l\'URL du site n\'est pas valide.',
 'info_nombre_articles' => '@nb_articles@ articles,',
 'info_nombre_breves' => '@nb_breves@ br&egrave;ves,',
 'info_nombre_partcipants' => 'PARTICIPANTS A LA DISCUSSION :',
@@ -557,12 +559,12 @@ exige d\'avoir un acc&egrave;s FTP au site Web.</p>',
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptez-vous les inscriptions de nouveaux r&eacute;dacteurs &agrave;
   partir du site public&nbsp;? Si vous acceptez, les visiteurs pourront s\'inscrire
   depuis un formulaire automatis&eacute; et acc&eacute;deront alors &agrave; l\'espace priv&eacute; pour
-  proposer leurs propres articles. <blockquote><i>Lors de la phase d\'inscription,
+  proposer leurs propres articles. <blockquote><div><i>Lors de la phase d\'inscription,
   les utilisateurs re&ccedil;oivent un courrier &eacute;lectronique automatique
   leur fournissant leurs codes d\'acc&egrave;s au site priv&eacute;. Certains
   h&eacute;bergeurs d&eacute;sactivent l\'envoi de mails depuis leurs
   serveurs&nbsp;: dans ce cas, l\'inscription automatique est
-  impossible.</i></blockquote>',
+  impossible.</i></div></blockquote>',
 'info_question_mots_cles' => 'Souhaitez-vous utiliser les mots-cl&eacute;s sur votre site&nbsp;?',
 'info_question_proposer_site' => 'Qui peut proposer des sites r&eacute;f&eacute;renc&eacute;s&nbsp;?',
 'info_question_utilisation_moteur_recherche' => 'Souhaitez-vous utiliser le moteur de recherche int&eacute;gr&eacute; &agrave; SPIP&nbsp;?
@@ -1010,7 +1012,7 @@ demande plus de puissance au serveur.',
 'texte_documents_joints' => 'Vous pouvez autoriser l\'ajout de documents (fichiers bureautiques, images,
  multim&eacute;dia, etc.) aux articles et/ou aux rubriques. Ces fichiers
  peuvent ensuite &ecirc;tre r&eacute;f&eacute;renc&eacute;s dans
- l\'article, ou affich&eacute;s s&eacute;par&eacute;ment.</p>',
+ l\'article, ou affich&eacute;s s&eacute;par&eacute;ment.',
 'texte_documents_joints_2' => 'Ce r&eacute;glage n\'emp&ecirc;che pas l\'insertion d\'images directement dans les articles.',
 'texte_effacer_base' => 'Effacer la base de donn&eacute;es SPIP',
 'texte_effacer_donnees_indexation' => 'Effacer les donn&eacute;es d\'indexation',
@@ -1127,9 +1129,9 @@ avez fait des modifications importantes de graphisme ou de structure du site.',
 'texte_sur_titre' => 'Sur-titre',
 'texte_syndication' => 'Il est possible de r&eacute;cup&eacute;rer automatiquement, lorsqu\'un site Web le permet,
                la liste de ses nouveaut&eacute;s. Pour cela, vous devez activer la syndication.
-               <blockquote><i>Certains h&eacute;bergeurs d&eacute;sactivent cette fonctionnalit&eacute;&nbsp;;
+               <blockquote><div><i>Certains h&eacute;bergeurs d&eacute;sactivent cette fonctionnalit&eacute;&nbsp;;
                dans ce cas, vous ne pourrez pas utiliser la syndication de contenu
-               depuis votre site.</i></blockquote>',
+               depuis votre site.</i></div></blockquote>',
 'texte_table_ok' => ': cette table est OK.',
 'texte_tables_indexation_vides' => 'Les tables d\'indexation du moteur sont vides.',
 'texte_tentative_recuperation' => 'Tentative de r&eacute;paration',
index 6d2c215..0148a38 100644 (file)
@@ -556,7 +556,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
   os usuarios recibir&aacute;n un correo electr&oacute;nico autom&aacute;tico
   cos seus c&oacute;digos de acceso ao web privado. Alg&uacute;ns
   provedores desactivan o env&iacute;o autom&aacute;tico desde os seus servidores:
-  nese caso, a inscrici&oacute;n autom&aacute;tica &eacute; imposible.</i></blockquote>',
+  nese caso, a inscrici&oacute;n autom&aacute;tica &eacute; imposible.</i></div></blockquote>',
 'info_question_mots_cles' => 'Quere empregar as palabras chave neste seu web?',
 'info_question_proposer_site' => 'Quen pode propor os webs referidos?',
 'info_question_utilisation_moteur_recherche' => 'Quere empregar o motor de procura integrado en SPIP?
@@ -1118,9 +1118,9 @@ e ser&aacute; visible para todo o equipo de redacci&oacute;n. Use os anuncios s&
 'texte_sur_titre' => 'Sobret&iacute;tulo',
 'texte_syndication' => 'P&oacute;dese recuperar automaticamente, e sempre que o sitio web o permita, 
   a s&uacute;a lista de novidades. Para isto, ten que activar a afiliaci&oacute;n.
-  <blockquote><i>Alg&uacute;ns aloxadores desactivan esta funcionalidade;
+  <blockquote><div><i>Alg&uacute;ns aloxadores desactivan esta funcionalidade;
   nese caso, non poder&aacute; empregar a afiliaci&oacute;n de contido
-  dende o seu web.</i></blockquote>',
+  dende o seu web.</i></div></blockquote>',
 'texte_table_ok' => ': esta t&aacute;boa est&aacute; ben.',
 'texte_tables_indexation_vides' => 'As t&aacute;boas de indexaci&oacute;n do motor est&aacute;n baleiras.',
 'texte_tentative_recuperation' => 'Tentativa de reparaci&oacute;n',
index d2f2434..169034f 100644 (file)
@@ -536,10 +536,10 @@ a t&ouml;r&ouml;lt szerz&#337;k pedig kuk&aacute;val vannak jel&ouml;lve.',
 'info_question_activer_compresseur' => 'Voulez-vous activer la compression du flux HTTP ?', # NEW
 'info_question_gerer_statistiques' => 'A honlap kezeljen-e st&aacute;tisztik&aacute;kat a l&aacute;t&oacute;gat&aacute;sokr&oacute;l&nbsp;?',
 'info_question_inscription_nouveaux_redacteurs' => 'Elfogadja-e az &uacute;j szerz&#337;k be&iacute;ratkoz&aacute;s&aacute;t a nyilvanos honlapr&oacute;l&nbsp;? Amennyiben elfogadja, akkor a l&aacute;togat&oacute;k be&iacute;ratkozhatnak
-  egy automatiz&aacute;lt &#369;rlapon &eacute;s majd hozz&aacute;f&eacute;rnek a priv&aacute;t r&eacute;szre, saj&aacute;t cikkei javaslatt&eacute;tel&eacute;re. <blockquote><i>A be&iacute;ratkoz&aacute;si f&aacute;zis sor&aacute;n,
+  egy automatiz&aacute;lt &#369;rlapon &eacute;s majd hozz&aacute;f&eacute;rnek a priv&aacute;t r&eacute;szre, saj&aacute;t cikkei javaslatt&eacute;tel&eacute;re. <blockquote><div><i>A be&iacute;ratkoz&aacute;si f&aacute;zis sor&aacute;n,
 a felhaszn&aacute;l&oacute;k automatikus emailt kapnak,
   mely a priv&aacute;t reszhez sz&uuml;ks&eacute;ges hozz&aacute;f&eacute;r&eacute;si k&oacute;dokat tartalmazza.
- Bizonyos szolg&aacute;ltat&oacute;k inaktiv&aacute;lj&aacute;k az emailk&uuml;ld&eacute;st a szerver&uuml;kr&#337;l&nbsp;: ilyen esetben lehetetlen az automatikus be&iacute;ratkoz&aacute;s.', # MODIF
+ Bizonyos szolg&aacute;ltat&oacute;k inaktiv&aacute;lj&aacute;k az emailk&uuml;ld&eacute;st a szerver&uuml;kr&#337;l&nbsp;: ilyen esetben lehetetlen az automatikus be&iacute;ratkoz&aacute;s.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Kiv&aacute;nja-e haszn&aacute;lni a kulcsszavakat a honlapj&aacute;n&nbsp;?',
 'info_question_proposer_site' => 'Ki aj&aacute;nlhat fel felvetend&#337; honlapokat&nbsp;?',
 'info_question_utilisation_moteur_recherche' => 'Kiv&aacute;nja-e haszn&aacute;lni az SPIP integr&aacute;lt keres&#337; motorj&aacute;t&nbsp;?
@@ -1080,9 +1080,9 @@ dans le cache SPIP. Ez p&eacute;ld&aacute;ul er&ouml;ltethet az &ouml;sszes olda
 'texte_sur_titre' => 'Fels&#337; c&iacute;m',
 'texte_syndication' => 'Ha a honlap megengedi,akkor automatikusan lehet szerezni &uacute;jdons&aacute;gait list&aacute;j&aacute;t.
   Ez&eacute;rt kell aktiv&aacute;lni a szindik&aacute;l&aacute;st.
-  <blockquote><i>Egyes szolg&aacute;ltat&oacute;k kikapcsolj&aacute;k ezt a lehet&#337;s&eacute;get&nbsp;; 
+  <blockquote><div><i>Egyes szolg&aacute;ltat&oacute;k kikapcsolj&aacute;k ezt a lehet&#337;s&eacute;get&nbsp;; 
   ilyen esetben, nem haszn&aacute;lhatja a tartalomszindik&aacute;l&aacute;st
-  az &Ouml;n honlapj&aacute;r&oacute;l.</i></blockquote>', # MODIF
+  az &Ouml;n honlapj&aacute;r&oacute;l.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': ez a t&aacute;bla rendben van.',
 'texte_tables_indexation_vides' => 'A motor index&aacute;l&aacute;si t&aacute;blai &uuml;resek.',
 'texte_tentative_recuperation' => 'Jav&iacute;t&aacute;si kis&eacute;rlet',
index 32312da..ab7d35f 100644 (file)
@@ -552,12 +552,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_inscription_nouveaux_redacteurs' => 'Apakah anda mengizinkan registrasi editor baru dari
   situs yang dipublikasi? Jika anda setuju, pengunjung dapat mendaftar
   melalui formulir terotomasi, dan akan mengakses area pribadi untuk
-  melihat artikel-artikel mereka. <blockquote><i>Selama proses registrasi,
+  melihat artikel-artikel mereka. <blockquote><div><i>Selama proses registrasi,
   pengguna menerima sebuah e-mail terotomasi
   yang memberikan kode akses ke situs pribadi. Sejumlah
   hosting menonaktifkan pengiriman e-mail di server mereka:
   dalam hal ini ini registrasi terotomasi tidak dapat
-  diimplementasikan.', # MODIF
+  diimplementasikan.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Apakah anda ingin menggunakan kata-kata kunci di situs anda?',
 'info_question_proposer_site' => 'Siapa yang dapat menyarankan situs-situs referensi?',
 'info_question_utilisation_moteur_recherche' => 'Apakah anda ingin mengunakan mesin pencari yang terintegrasi dengan SPIP?
@@ -1125,9 +1125,9 @@ anda memasukkan modifikasi yang penting di grafik atau struktur situs.',
 'texte_sur_titre' => 'Judul atas',
 'texte_syndication' => 'Jika sebuah situs mengizinkannya, daftar isi terbaru dari situs tersebut
   dapat diambil secara otomatis. Untuk melakukannya, anda harus mengaktifkan sindikasi.
-  <blockquote><i>Sejumlah hosting menonaktifkan fungsi ini; 
+  <blockquote><div><i>Sejumlah hosting menonaktifkan fungsi ini; 
   dalam hal ini, anda tidak dapat menggunakan sindikasi isi
-  dari situs anda.</i></blockquote>', # MODIF
+  dari situs anda.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': tabel ini OK.',
 'texte_tables_indexation_vides' => 'Tabel terindeksasi mesin kosong.',
 'texte_tentative_recuperation' => 'Usaha perbaikan',
index 80055a1..e471a53 100644 (file)
@@ -553,11 +553,11 @@ il database alla nuova versione di SPIP.',
 'info_question_inscription_nouveaux_redacteurs' => 'Accettate le iscrizioni di nuovi redattori
 direttamente  dal sito pubblico? In caso affermativo, i visitatori potranno iscriversi
 grazie ad un modulo automatizzato e accedere all\'area riservata per proporre
-i propri articoli. <blockquote><i>Durante la fase d\'iscrizione,
+i propri articoli. <blockquote><div><i>Durante la fase d\'iscrizione,
 gli utenti ricevono automaticamente un email
 che fornisce loro i codici d\'accesso al sito privato. Alcuni
 servizi di hostiong disattivano l\'invio di email dai propri server: in questo caso l\'iscrizione automatica &egrave;
-impossibile.</i></blockquote>',
+impossibile.</i></div></blockquote>',
 'info_question_mots_cles' => 'Vuoi utilizzare le parole chiave nel sito?',
 'info_question_proposer_site' => 'Chi pu&ograve; proporre i siti da citare?',
 'info_question_utilisation_moteur_recherche' => 'Desideri utilizzare il motore di ricerca integrato di SPIP?
@@ -1106,9 +1106,9 @@ cache di SPIP. Ci&ograve; permette ad esempio di forzare la rigenerazione di tut
 'texte_syndication' => 'Quando un sito Web lo permette, &egrave; possibile recuperarne automaticamente
 la lista delle novit&agrave;. A tal fine &egrave; necessario attivare la syndication.
 
-<blockquote><i>Alcuni provider disattivano questa funzionalit&agrave;; 
+<blockquote><div><i>Alcuni provider disattivano questa funzionalit&agrave;; 
 in questo caso, non potrai utilizzare la syndication del contenuto
-a partire dal tuo sito.</i></blockquote>',
+a partire dal tuo sito.</i></div></blockquote>',
 'texte_table_ok' => ': questa tabella &egrave; OK.',
 'texte_tables_indexation_vides' => 'Le tabelle d\'indicizzazione del motore sono vuote.',
 'texte_tentative_recuperation' => 'Tentativo di ripristino',
index 71eec60..59039a7 100644 (file)
@@ -552,11 +552,11 @@ il database alla nuova versione di SPIP.',
 'info_question_inscription_nouveaux_redacteurs' => 'Accettate le iscrizioni di nuove redattrici
 direttamente  dal sito pubblico? In questo caso, chi visita il sito potr&agrave; iscriversi
 grazie ad un modulo automatizzato e accedere all\'area riservata per proporre
-i propri articoli. <blockquote><i>Durante la fase d\'iscrizione,
+i propri articoli. <blockquote><div><i>Durante la fase d\'iscrizione,
 le utenti ricevono automaticamente un email
 che fornisce loro i codici d\'accesso al sito privato. Alcuni
 hoster disattivano l\'invio di email dai propri server: in questo caso, l\'iscrizione automatica &egrave;
-impossibile.', # MODIF
+impossibile.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Vuoi utilizzare le parole chiave nel sito?',
 'info_question_proposer_site' => 'Chi pu&ograve; proporre i siti da citare?',
 'info_question_utilisation_moteur_recherche' => 'Desideri utilizzare il motore di ricerca integrato di SPIP?
@@ -1105,9 +1105,9 @@ cache di SPIP. Ci&ograve; permette ad esempio di forzare la rigenerazione di tut
 'texte_syndication' => 'Quando un sito Web lo permette, &egrave; possibile recuperarne automaticamente
 la lista delle novit&agrave;. A tal fine &egrave; necessario attivare la syndication.
 
-<blockquote><i>Alcuni provider disattivano questa funzionalit&agrave;; 
+<blockquote><div><i>Alcuni provider disattivano questa funzionalit&agrave;; 
 in questo caso, non potrai utilizzare la syndication del contenuto
-a partire dal tuo sito.</i></blockquote>',
+a partire dal tuo sito.</i></div></blockquote>',
 'texte_table_ok' => ': questa tabella &egrave; OK.',
 'texte_tables_indexation_vides' => 'Le tabelle d\'indicizzazione del motore sono vuote.',
 'texte_tentative_recuperation' => 'Tentativo di ripristino',
index 5eabd25..6dc0662 100644 (file)
@@ -534,7 +534,7 @@ SPIP&#12489;&#12461;&#12517;&#12513;&#12531;&#12488;</a>&#12434;&#12372;&#35239;
 'info_question_activer_compactage_js' => 'Souhaitez-vous activer le compactage des scripts (javascript) ?', # NEW
 'info_question_activer_compresseur' => 'Voulez-vous activer la compression du flux HTTP ?', # NEW
 'info_question_gerer_statistiques' => '&#12354;&#12394;&#12383;&#12398;&#12469;&#12452;&#12488;&#12398;&#35370;&#21839;&#32773;&#12398;&#32113;&#35336;&#12434;&#31649;&#29702;&#12377;&#12409;&#12365;&#12391;&#12377;&#12363;&#65311;',
-'info_question_inscription_nouveaux_redacteurs' => '&#20844;&#38283;&#12373;&#12428;&#12390;&#12356;&#12427;&#12469;&#12452;&#12488;&#12391;&#26032;&#12375;&#12356;&#12456;&#12487;&#12451;&#12479;&#12540;&#12398;&#30331;&#37682;&#12434;&#21215;&#12426;&#12414;&#12377;&#12363;&#65311;&#12288;&#35377;&#21487;&#12375;&#12383;&#22580;&#21512;&#12289;&#35370;&#21839;&#32773;&#12383;&#12385;&#12399;&#12501;&#12457;&#12540;&#12512;&#12363;&#12425;&#33258;&#21205;&#12391;&#30331;&#37682;&#12391;&#12365;&#12289;&#12503;&#12521;&#12452;&#12505;&#12540;&#12488;&#12456;&#12522;&#12450;&#12395;&#12450;&#12463;&#12475;&#12473;&#12375;&#33258;&#20998;&#12398;&#35352;&#20107;&#12434;&#25552;&#20986;&#12391;&#12365;&#12414;&#12377;&#12290; <blockquote><i>&#30331;&#37682;&#20316;&#26989;&#20013;&#12395;&#12289;&#12518;&#12540;&#12470;&#12540;&#12399;&#33258;&#21205;&#30340;&#12395;&#36865;&#20449;&#12373;&#12428;&#12427;&#12503;&#12521;&#12452;&#12505;&#12540;&#12488;&#12456;&#12522;&#12450;&#12408;&#12398;ID&#12392;&#12497;&#12473;&#12527;&#12540;&#12489;&#12434;&#35352;&#12375;&#12383;e-mail&#12434;&#21463;&#12369;&#21462;&#12426;&#12414;&#12377;&#12290;&#33509;&#24178;&#12398;&#12507;&#12473;&#12488;&#12391;&#12399;&#12289;&#12381;&#12428;&#12425;&#12469;&#12540;&#12496;&#12540;&#19978;&#12363;&#12425;&#12513;&#12540;&#12523;&#12364;&#36865;&#12428;&#12394;&#12356;&#22580;&#21512;&#12364;&#12354;&#12426;&#12414;&#12377;&#65306;&#12381;&#12358;&#12356;&#12358;&#22580;&#21512;&#12289;&#33258;&#21205;&#30331;&#37682;&#12434;&#23455;&#26045;&#12391;&#12365;&#12414;&#12379;&#12435;&#12290;', # MODIF
+'info_question_inscription_nouveaux_redacteurs' => '&#20844;&#38283;&#12373;&#12428;&#12390;&#12356;&#12427;&#12469;&#12452;&#12488;&#12391;&#26032;&#12375;&#12356;&#12456;&#12487;&#12451;&#12479;&#12540;&#12398;&#30331;&#37682;&#12434;&#21215;&#12426;&#12414;&#12377;&#12363;&#65311;&#12288;&#35377;&#21487;&#12375;&#12383;&#22580;&#21512;&#12289;&#35370;&#21839;&#32773;&#12383;&#12385;&#12399;&#12501;&#12457;&#12540;&#12512;&#12363;&#12425;&#33258;&#21205;&#12391;&#30331;&#37682;&#12391;&#12365;&#12289;&#12503;&#12521;&#12452;&#12505;&#12540;&#12488;&#12456;&#12522;&#12450;&#12395;&#12450;&#12463;&#12475;&#12473;&#12375;&#33258;&#20998;&#12398;&#35352;&#20107;&#12434;&#25552;&#20986;&#12391;&#12365;&#12414;&#12377;&#12290; <blockquote><div><i>&#30331;&#37682;&#20316;&#26989;&#20013;&#12395;&#12289;&#12518;&#12540;&#12470;&#12540;&#12399;&#33258;&#21205;&#30340;&#12395;&#36865;&#20449;&#12373;&#12428;&#12427;&#12503;&#12521;&#12452;&#12505;&#12540;&#12488;&#12456;&#12522;&#12450;&#12408;&#12398;ID&#12392;&#12497;&#12473;&#12527;&#12540;&#12489;&#12434;&#35352;&#12375;&#12383;e-mail&#12434;&#21463;&#12369;&#21462;&#12426;&#12414;&#12377;&#12290;&#33509;&#24178;&#12398;&#12507;&#12473;&#12488;&#12391;&#12399;&#12289;&#12381;&#12428;&#12425;&#12469;&#12540;&#12496;&#12540;&#19978;&#12363;&#12425;&#12513;&#12540;&#12523;&#12364;&#36865;&#12428;&#12394;&#12356;&#22580;&#21512;&#12364;&#12354;&#12426;&#12414;&#12377;&#65306;&#12381;&#12358;&#12356;&#12358;&#22580;&#21512;&#12289;&#33258;&#21205;&#30331;&#37682;&#12434;&#23455;&#26045;&#12391;&#12365;&#12414;&#12379;&#12435;&#12290;</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => '&#12354;&#12394;&#12383;&#12398;&#12469;&#12452;&#12488;&#12391;&#12461;&#12540;&#12527;&#12540;&#12489;&#12434;&#20351;&#12356;&#12383;&#12356;&#12391;&#12377;&#12363;&#65311;',
 'info_question_proposer_site' => '&#35504;&#12364;&#21442;&#29031;&#12469;&#12452;&#12488;&#12434;&#25552;&#26696;&#12391;&#12365;&#12414;&#12377;&#12363;&#65311;',
 'info_question_utilisation_moteur_recherche' => 'SPIP&#12395;&#32080;&#21512;&#12373;&#12428;&#12383;&#26908;&#32034;&#12456;&#12531;&#12472;&#12531;&#12434;&#20351;&#12356;&#12383;&#12356;&#12391;&#12377;&#12363;?
@@ -1040,7 +1040,7 @@ demande plus de puissance au serveur.', # NEW
 'texte_suppression_fichiers' => '&#12371;&#12428;&#12434;&#20351;&#12358;&#12392;SPIP&#12398;&#12377;&#12409;&#12390;&#12398;&#12461;&#12515;&#12483;&#12471;&#12517;&#12501;&#12449;&#12452;&#12523;&#12364;&#21066;&#38500;&#12373;&#12428;&#12414;&#12377;&#12290;&#12371;&#12428;&#12434;&#35377;&#21487;&#12377;&#12427;&#12392;&#12289;&#29305;&#12395;&#12469;&#12452;&#12488;&#12398;&#27083;&#36896;&#12420;&#30011;&#20687;&#12398;&#37325;&#35201;&#12394;&#22793;&#26356;&#12434;&#20837;&#21147;&#12375;&#12390;&#12356;&#12427;&#22580;&#21512;&#12395;&#20633;&#12360;&#12390;&#12289;&#12377;&#12409;&#12390;&#12398;&#12506;&#12540;&#12472;&#12398;&#12522;&#12501;&#12524;&#12483;&#12471;&#12517;&#12434;&#24375;&#21046;&#12375;&#12414;&#12377;&#12290;',
 'texte_sur_titre' => '&#12488;&#12483;&#12503;&#12479;&#12452;&#12488;&#12523;',
 'texte_syndication' => '&#12371;&#12428;&#12434;&#35377;&#21487;&#12377;&#12427;&#12392;&#12289;&#26368;&#26032;&#12398;&#36039;&#26009;&#12398;&#12522;&#12473;&#12488;&#12434;&#33258;&#21205;&#30340;&#12395;&#26908;&#32034;&#12377;&#12427;&#12371;&#12392;&#12364;&#21487;&#33021;&#12395;&#12394;&#12426;&#12414;&#12377;&#12290;&#12371;&#12428;&#12434;&#12377;&#12427;&#12395;&#12399;&#20379;&#32102;&#65288;&#12471;&#12531;&#12472;&#12465;&#12540;&#12488;&#65289;&#12434;&#20316;&#21205;&#12373;&#12379;&#12394;&#12369;&#12428;&#12400;&#12394;&#12426;&#12414;&#12379;&#12435;&#12290;
-  <blockquote><i>&#33509;&#24178;&#12398;&#12507;&#12473;&#12488;&#12391;&#12399;&#12371;&#12398;&#27231;&#33021;&#12399;&#28961;&#21177;&#12391;&#12377;&#12290;&#12381;&#12358;&#12356;&#12358;&#22580;&#21512;&#12289;&#12354;&#12394;&#12383;&#12399;&#12354;&#12394;&#12383;&#12398;&#12469;&#12452;&#12488;&#12363;&#12425;&#20869;&#23481;&#12434;&#20379;&#32102;&#65288;&#12471;&#12531;&#12472;&#12465;&#12540;&#12488;&#65289;&#12377;&#12427;&#12371;&#12392;&#12399;&#20986;&#26469;&#12394;&#12356;&#12391;&#12375;&#12423;&#12358;&#12290;</i></blockquote>', # MODIF
+  <blockquote><div><i>&#33509;&#24178;&#12398;&#12507;&#12473;&#12488;&#12391;&#12399;&#12371;&#12398;&#27231;&#33021;&#12399;&#28961;&#21177;&#12391;&#12377;&#12290;&#12381;&#12358;&#12356;&#12358;&#22580;&#21512;&#12289;&#12354;&#12394;&#12383;&#12399;&#12354;&#12394;&#12383;&#12398;&#12469;&#12452;&#12488;&#12363;&#12425;&#20869;&#23481;&#12434;&#20379;&#32102;&#65288;&#12471;&#12531;&#12472;&#12465;&#12540;&#12488;&#65289;&#12377;&#12427;&#12371;&#12392;&#12399;&#20986;&#26469;&#12394;&#12356;&#12391;&#12375;&#12423;&#12358;&#12290;</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': &#12371;&#12398;&#12486;&#12540;&#12502;&#12523;&#12399;OK&#12290;',
 'texte_tables_indexation_vides' => '&#31354;&#12398;&#12456;&#12531;&#12472;&#12531;&#12398;&#12486;&#12540;&#12502;&#12523;&#12434;&#12452;&#12531;&#12487;&#12483;&#12463;&#12473;',
 'texte_tentative_recuperation' => '&#24489;&#20803;&#12434;&#35430;&#12415;&#12427;',
index 795f0ed..f874a06 100644 (file)
@@ -520,7 +520,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_activer_compactage_js' => 'Souhaitez-vous activer le compactage des scripts (javascript) ?', # NEW
 'info_question_activer_compresseur' => '&#6050;&#6098;&#6035;&#6016;&#6021;&#6020;&#6091;&#6034;&#6098;&#6044;&#6078;&#6050;&#6084;&#6041;&#6047;&#6016;&#6040;&#6098;&#6040; &#6016;&#6070;&#6042;&#6036;&#6020;&#6098;&#6048;&#6070;&#6036;&#6091; &#6047;&#6086;&#6042;&#6070;&#6036;&#6091;&#6033;&#6071;&#6035;&#6098;&#6035;&#6035;&#6096;&#6041; HTTP?',
 'info_question_gerer_statistiques' => '&#6047;&#6083;&#6032;&#6093; &#6042;&#6036;&#6047;&#6091;&#6050;&#6098;&#6035;&#6016; &#6031;&#6098;&#6042;&#6076;&#6044;&#6031;&#6082;&#6018;&#6098;&#6042;&#6036;&#6091;&#6018;&#6098;&#6042;&#6020; &#6047;&#6098;&#6032;&#6071;&#6031;&#6071; &#6038;&#6077;&#6016;&#6033;&#6047;&#6098;&#6047;&#6035;&#6070;&#6016;&#6042;&nbsp; ?',
-'info_question_inscription_nouveaux_redacteurs' => '&#6031;&#6078;&#8203;&#6043;&#6084;&#6016;&#8203;&#6050;&#6098;&#6035;&#6016;&#8203;&#6031;&#6098;&#6042;&#6076;&#6044;&#6016;&#6070;&#6042;&#8203;&#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031;&#8203;&#6065;&#6098;&#6041;&#8203;&#6050;&#6098;&#6035;&#6016;&#8203;&#6047;&#6042;&#6047;&#6081;&#6042;&#8203;&#6050;&#6031;&#6098;&#6032;&#6036;&#6033;&#8203;&#6032;&#6098;&#6040;&#6072;&#8203;&#6021;&#6075;&#6087;&#8203;&#6024;&#6098;&#6040;&#6084;&#6087;&#8203;&#6038;&#6072;&#8203;&#6044;&#6089;&#6071;&#8203;&#6036;&#8203;&#6047;&#6070;&#6041;&#8203;&#6047;&#6070;&#6034;&#6070;&#6042;&#6030;&#6088;&#8203;&#6026;&#6082;&#6043;&#8203;&#6060;&#6033;&#6081;&#8203;? &#6036;&#6098;&#6042;&#6047;&#6071;&#6035;&#6036;&#6078;&#8203;&#6043;&#6084;&#6016;&#8203;&#6050;&#6098;&#6035;&#6016;&#8203;&#6041;&#6043;&#6091;&#6038;&#6098;&#6042;&#6040; &#6050;&#6098;&#6035;&#6016;&#8203;&#6033;&#6047;&#6098;&#6047;&#6035;&#6070;&#8203;&#6035;&#6073;&#6020;&#8203;&#6050;&#6070;&#6021;&#8203;&#6021;&#6075;&#6087;&#8203;&#6024;&#6098;&#6040;&#6084;&#6087;&#8203;&#6026;&#6084;&#6041;&#8203;&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091;&#8203;&#6033;&#6040;&#6098;&#6042;&#6020;&#6091;&#8203;&#6047;&#6098;&#6044;&#6096;&#6041;&#6036;&#6098;&#6042;&#6044;&#6031;&#6098;&#6026;&#6071;&#8203;&#6040;&#6077;&#6041; &#6048;&#6078;&#6041;&#8203;&#6036;&#6035;&#6098;&#6033;&#6070;&#6036;&#6091;&#8203;&#6040;&#6016;&#8203;&#6021;&#6076;&#6043;&#8203;&#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6037;&#6098;&#6035;&#6082;&#6016;&#8203;&#6063;&#6016;&#6023;&#6035;&#8203;&#6026;&#6078;&#6040;&#6098;&#6036;&#6072;&#8203;&#6036;&#6025;&#6098;&#6021;&#6076;&#6043;&#8203;&#6050;&#6031;&#6098;&#6032;&#6036;&#6033;&#8203;&#6037;&#6098;&#6033;&#6070;&#6091;&#6043;&#6091;&#8203;&#6042;&#6036;&#6047;&#6091;&#8203;&#6038;&#6077;&#6016;&#8203;&#6018;&#6081;&#8203;&#6100; <blockquote> &#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6038;&#6081;&#6043;&#8203;&#6026;&#6086;&#6030;&#6078;&#6042;&#6016;&#6070;&#6042;&#8203;&#6021;&#6075;&#6087;&#8203;&#6024;&#6098;&#6040;&#6084;&#6087; &#6050;&#6098;&#6035;&#6016;&#8203;&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091;&#8203;&#6033;&#6033;&#6077;&#6043;&#8203;&#6036;&#6070;&#6035;&#8203;&#6050;&#6090;&#6072;&#8203;&#6040;&#6089;&#6082;&#8203;&#6043;&#8203;&#6047;&#6098;&#6044;&#6096;&#6041;&#6036;&#6098;&#6042;&#6044;&#6031;&#6098;&#6026;&#6071;&#8203;&#6026;&#6082;&#6043;&#8203;&#6037;&#6098;&#6026;&#6043;&#6091;&#8203;&#6023;&#6076;&#6035;&#8203;&#6038;&#6077;&#6016;&#8203;&#6018;&#6081;&#8203;&#6035;&#6076;&#6044;&#8203;&#6043;&#6081;&#6017;&#8203;&#6016;&#6076;&#6026;&#8203;&#6021;&#6076;&#6043;&#8203;&#6033;&#6085;&#8203;&#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6037;&#6098;&#6035;&#6082;&#6016;&#8203;&#6063;&#6016;&#6023;&#6035;&#8203;&#6100; &#6016;&#6098;&#6042;&#6075;&#6040;&#6048;&#6090;&#6075;&#6035;&#8203;&#6037;&#6098;&#6026;&#6043;&#6091;&#8203;&#6047;&#6081;&#6044;&#6070;&#8203;&#6040;&#6077;&#6041;&#8203;&#6021;&#6086;&#6035;&#6077;&#6035;&#8203;&#6040;&#6071;&#6035;&#8203;&#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031;&#8203;&#6021;&#6086;&#6038;&#6084;&#6087;&#8203;&#6016;&#6070;&#6042;&#8203;&#6037;&#6098;&#6025;&#6078;&#8203;&#6050;&#6090;&#6072;&#8203;&#6040;&#6089;&#6082;&#8203;&#6043;&#8203;&#6040;&#6089;&#6070;&#6047;&#6090;&#6072;&#6035;&#8203;&#6040;&#6081; (servers)&#8203;&#6042;&#6036;&#6047;&#6091;&#8203;&#6038;&#6077;&#6016;&#8203;&#6018;&#6081;&#8203;&#6033;&#6081; &#6102; &#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6016;&#6042;&#6030;&#6072;&#8203;&#6035;&#6084;&#6087; &#6016;&#6070;&#6042;&#8203;&#6021;&#6075;&#6087;&#8203;&#6024;&#6098;&#6040;&#6084;&#6087;&#8203;&#6026;&#6084;&#6041;&#8203;&#6047;&#6098;&#6044;&#6096;&#6041;&#6036;&#6098;&#6042;&#6044;&#6031;&#6098;&#6026;&#6071;&#8203;&#6018;&#6074;&#8203;&#6040;&#6071;&#6035;&#8203;&#6050;&#6070;&#6021;&#8203;&#6050;&#6035;&#6075;&#6044;&#6031;&#6098;&#6026;&#8203;&#6036;&#6070;&#6035;&#8203;&#6033;&#6081;&#8203;&#6100;', # MODIF
+'info_question_inscription_nouveaux_redacteurs' => '&#6031;&#6078;&#8203;&#6043;&#6084;&#6016;&#8203;&#6050;&#6098;&#6035;&#6016;&#8203;&#6031;&#6098;&#6042;&#6076;&#6044;&#6016;&#6070;&#6042;&#8203;&#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031;&#8203;&#6065;&#6098;&#6041;&#8203;&#6050;&#6098;&#6035;&#6016;&#8203;&#6047;&#6042;&#6047;&#6081;&#6042;&#8203;&#6050;&#6031;&#6098;&#6032;&#6036;&#6033;&#8203;&#6032;&#6098;&#6040;&#6072;&#8203;&#6021;&#6075;&#6087;&#8203;&#6024;&#6098;&#6040;&#6084;&#6087;&#8203;&#6038;&#6072;&#8203;&#6044;&#6089;&#6071;&#8203;&#6036;&#8203;&#6047;&#6070;&#6041;&#8203;&#6047;&#6070;&#6034;&#6070;&#6042;&#6030;&#6088;&#8203;&#6026;&#6082;&#6043;&#8203;&#6060;&#6033;&#6081;&#8203;? &#6036;&#6098;&#6042;&#6047;&#6071;&#6035;&#6036;&#6078;&#8203;&#6043;&#6084;&#6016;&#8203;&#6050;&#6098;&#6035;&#6016;&#8203;&#6041;&#6043;&#6091;&#6038;&#6098;&#6042;&#6040; &#6050;&#6098;&#6035;&#6016;&#8203;&#6033;&#6047;&#6098;&#6047;&#6035;&#6070;&#8203;&#6035;&#6073;&#6020;&#8203;&#6050;&#6070;&#6021;&#8203;&#6021;&#6075;&#6087;&#8203;&#6024;&#6098;&#6040;&#6084;&#6087;&#8203;&#6026;&#6084;&#6041;&#8203;&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091;&#8203;&#6033;&#6040;&#6098;&#6042;&#6020;&#6091;&#8203;&#6047;&#6098;&#6044;&#6096;&#6041;&#6036;&#6098;&#6042;&#6044;&#6031;&#6098;&#6026;&#6071;&#8203;&#6040;&#6077;&#6041; &#6048;&#6078;&#6041;&#8203;&#6036;&#6035;&#6098;&#6033;&#6070;&#6036;&#6091;&#8203;&#6040;&#6016;&#8203;&#6021;&#6076;&#6043;&#8203;&#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6037;&#6098;&#6035;&#6082;&#6016;&#8203;&#6063;&#6016;&#6023;&#6035;&#8203;&#6026;&#6078;&#6040;&#6098;&#6036;&#6072;&#8203;&#6036;&#6025;&#6098;&#6021;&#6076;&#6043;&#8203;&#6050;&#6031;&#6098;&#6032;&#6036;&#6033;&#8203;&#6037;&#6098;&#6033;&#6070;&#6091;&#6043;&#6091;&#8203;&#6042;&#6036;&#6047;&#6091;&#8203;&#6038;&#6077;&#6016;&#8203;&#6018;&#6081;&#8203;&#6100; <blockquote> &#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6038;&#6081;&#6043;&#8203;&#6026;&#6086;&#6030;&#6078;&#6042;&#6016;&#6070;&#6042;&#8203;&#6021;&#6075;&#6087;&#8203;&#6024;&#6098;&#6040;&#6084;&#6087; &#6050;&#6098;&#6035;&#6016;&#8203;&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091;&#8203;&#6033;&#6033;&#6077;&#6043;&#8203;&#6036;&#6070;&#6035;&#8203;&#6050;&#6090;&#6072;&#8203;&#6040;&#6089;&#6082;&#8203;&#6043;&#8203;&#6047;&#6098;&#6044;&#6096;&#6041;&#6036;&#6098;&#6042;&#6044;&#6031;&#6098;&#6026;&#6071;&#8203;&#6026;&#6082;&#6043;&#8203;&#6037;&#6098;&#6026;&#6043;&#6091;&#8203;&#6023;&#6076;&#6035;&#8203;&#6038;&#6077;&#6016;&#8203;&#6018;&#6081;&#8203;&#6035;&#6076;&#6044;&#8203;&#6043;&#6081;&#6017;&#8203;&#6016;&#6076;&#6026;&#8203;&#6021;&#6076;&#6043;&#8203;&#6033;&#6085;&#8203;&#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6037;&#6098;&#6035;&#6082;&#6016;&#8203;&#6063;&#6016;&#6023;&#6035;&#8203;&#6100; &#6016;&#6098;&#6042;&#6075;&#6040;&#6048;&#6090;&#6075;&#6035;&#8203;&#6037;&#6098;&#6026;&#6043;&#6091;&#8203;&#6047;&#6081;&#6044;&#6070;&#8203;&#6040;&#6077;&#6041;&#8203;&#6021;&#6086;&#6035;&#6077;&#6035;&#8203;&#6040;&#6071;&#6035;&#8203;&#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031;&#8203;&#6021;&#6086;&#6038;&#6084;&#6087;&#8203;&#6016;&#6070;&#6042;&#8203;&#6037;&#6098;&#6025;&#6078;&#8203;&#6050;&#6090;&#6072;&#8203;&#6040;&#6089;&#6082;&#8203;&#6043;&#8203;&#6040;&#6089;&#6070;&#6047;&#6090;&#6072;&#6035;&#8203;&#6040;&#6081; (servers)&#8203;&#6042;&#6036;&#6047;&#6091;&#8203;&#6038;&#6077;&#6016;&#8203;&#6018;&#6081;&#8203;&#6033;&#6081; &#6102; &#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6016;&#6042;&#6030;&#6072;&#8203;&#6035;&#6084;&#6087; &#6016;&#6070;&#6042;&#8203;&#6021;&#6075;&#6087;&#8203;&#6024;&#6098;&#6040;&#6084;&#6087;&#8203;&#6026;&#6084;&#6041;&#8203;&#6047;&#6098;&#6044;&#6096;&#6041;&#6036;&#6098;&#6042;&#6044;&#6031;&#6098;&#6026;&#6071;&#8203;&#6018;&#6074;&#8203;&#6040;&#6071;&#6035;&#8203;&#6050;&#6070;&#6021;&#8203;&#6050;&#6035;&#6075;&#6044;&#6031;&#6098;&#6026;&#8203;&#6036;&#6070;&#6035;&#8203;&#6033;&#6081;&#8203;&#6100;</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => '&#6050;&#6098;&#6035;&#6016; &#6021;&#6020;&#6091;&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091; &#6038;&#6070;&#6016;&#6098;&#6041;&#6018;&#6035;&#6098;&#6043;&#6073;&#6087;&#6035;&#6070;&#6035;&#6070; &#6043;&#6078;&#6047;&#6083;&#6032;&#6093; &#6042;&#6036;&#6047;&#6091;&#6050;&#6098;&#6035;&#6016;?',
 'info_question_proposer_site' => '&#6050;&#6098;&#6035;&#6016;&#6030;&#6070; &#6050;&#6070;&#6021;&#6047;&#6098;&#6035;&#6078; &#6047;&#6083;&#6032;&#6093;&#6041;&#6084;&#6020;?',
 'info_question_utilisation_moteur_recherche' => '&#6050;&#6098;&#6035;&#6016;&#6021;&#6020;&#6091;&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091; &#6055;&#6036;&#6016;&#6042;&#6047;&#6098;&#6044;&#6082;&#6020;&#6042;&#6016; &#6031;&#6098;&#6042;&#6076;&#6044;&#6036;&#6070;&#6035;&#6036;&#6025;&#6098;&#6021;&#6076;&#6043;&#6033;&#6085; SPIP &#6060;? (&#6016;&#6070;&#6042;&#6040;&#6071;&#6035;&#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031;&#6044;&#6070; &#6036;&#6020;&#6098;&#6016;&#6078;&#6035;&#6043;&#6098;&#6036;&#6079;&#6035; &#6039;&#6070;&#6038;&#6036;&#6098;&#6042;&#6038;&#6083; &#6035;&#6083;&#6036;&#6098;&#6042;&#6038;&#6096;&#6035;&#6098;&#6034;&#6100;)',
@@ -1018,8 +1018,8 @@ demande plus de puissance au serveur.', # NEW
 'texte_statut_refuses' => '&#6031;&#6098;&#6042;&#6076;&#6044;&#8203;&#6036;&#6070;&#6035;&#8203;&#6036;&#6026;&#6071;&#6047;&#6081;&#6034;',
 'texte_suppression_fichiers' => '&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091;&#8203;&#6036;&#6025;&#6098;&#6023;&#6070;&#8203;&#6035;&#6081;&#6087;&#8203;&#6026;&#6078;&#6040;&#6098;&#6036;&#6072;&#8203;&#6043;&#6075;&#6036;&#8203;&#6048;&#6098;&#6044;&#6070;&#8203;&#6043;&#8203;&#6033;&#6070;&#6086;&#6020;&#6050;&#6047;&#6091;&#8203;&#6035;&#6085;&#8203;&#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6047;&#6086;&#6030;&#6075;&#6086;&#8203;&#6048;&#6098;&#6044;&#6070;&#8203;&#6043;&#8203;&#6043;&#6070;&#6016;&#6091;&#6017;&#6098;&#6043;&#6077;&#6035;&#8203;&#6042;&#6036;&#6047;&#6091; SPIP&#6100; &#6044;&#6070;&#8203;&#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031;&#8203;&#6065;&#6098;&#6041;&#8203;&#6043;&#6084;&#6016;&#8203;&#6050;&#6098;&#6035;&#6016; &#6036;&#6020;&#6098;&#6017;&#6086;&#8203;&#6016;&#6070;&#6042;&#8203;&#6047;&#6040;&#6098;&#6042;&#6077;&#6043;&#8203;&#6026;&#6086;&#6030;&#6078;&#6042;&#6016;&#6070;&#6042;&#8203;&#6049;&#6078;&#6020;&#8203;&#6044;&#6071;&#6025;&#8203;&#6035;&#6076;&#6044;&#8203;&#6033;&#6086;&#6038;&#6096;&#6042;&#8203;&#6033;&#6070;&#6086;&#6020;&#6050;&#6047;&#6091; &#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6021;&#6086;&#8203;&#6030;&#6084;&#6086;&#8203;&#6050;&#6098;&#6044;&#6072;&#8203;&#6037;&#6098;&#6047;&#6081;&#6020;&#6103;&#8203;&#6033;&#6080;&#6031; &#6035;&#6085;&#8203;&#6016;&#6098;&#6035;&#6075;&#6020;&#8203;&#6016;&#6042;&#6030;&#6072;&#8203;&#6043;&#6084;&#6016;&#8203;&#6050;&#6098;&#6035;&#6016;&#8203;&#6036;&#6070;&#6035;&#8203;&#6034;&#6078;&#8203;&#6016;&#6070;&#6042;&#8203;&#6016;&#6082;&#6036;&#6098;&#6042;&#6082;&#8203;&#6047;&#6086;&#6017;&#6070;&#6035;&#6091;&#6103;&#8203;&#6033;&#6085;&#8203;&#6043;&#6078;&#8203;&#6016;&#6098;&#6042;&#6070;&#6048;&#6098;&#6044;&#6071;&#6016; &#6060;&#8203;&#6042;&#6021;&#6035;&#6070;&#6047;&#6040;&#6098;&#6038;&#6096;&#6035;&#6098;&#6034;&#8203;&#6042;&#6036;&#6047;&#6091;&#8203;&#6044;&#6089;&#6071;&#8203;&#6036;&#8203;&#6047;&#6070;&#6041;&#8203;&#6100;',
 'texte_sur_titre' => '&#6021;&#6086;&#6030;&#6020;&#6023;&#6078;&#6020;&#6016;&#6086;&#6038;&#6076;&#6043;',
-'texte_syndication' => '&#6036;&#6078;&#6040;&#6077;&#6041;&#6047;&#6083;&#6032;&#6093; &#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031;, &#6044;&#6070;&#6050;&#6070;&#6021;&#6036;&#6098;&#6042;&#6040;&#6076;&#6043;&#6040;&#6016;&#6044;&#6071;&#6025; &#6047;&#6098;&#6044;&#6096;&#6041;&#6036;&#6098;&#6042;&#6044;&#6031;&#6098;&#6031;&#6071; &#6036;&#6025;&#6098;&#6023;&#6072;&#6035;&#6083;&#6047;&#6086;&#6039;&#6070;&#6042;&#6088;&#6021;&#6075;&#6020;&#6016;&#6098;&#6042;&#6084;&#6041;&#6036;&#6086;&#6037;&#6075;&#6031; &#6042;&#6036;&#6047;&#6091;&#6044;&#6070;&#6100; &#6026;&#6078;&#6040;&#6098;&#6036;&#6072;&#6047;&#6086;&#6042;&#6081;&#6021;&#6036;&#6070;&#6035;&#6021;&#6073;&#6020;, &#6050;&#6098;&#6035;&#6016;&#6031;&#6098;&#6042;&#6076;&#6044;&#6031;&#6082;&#6034;&#6098;&#6044;&#6078;&#6050;&#6084;&#6041;&#6047;&#6016;&#6040;&#6098;&#6040; &#6016;&#6070;&#6042;&#6039;&#6098;&#6023;&#6070;&#6036;&#6091;&#6100;  <blockquote><i>&#6017;&#6086;&#6038;&#6098;&#6041;&#6076;&#6042;&#6078;&#6017;&#6098;&#6043;&#6087; &#6018;&#6098;&#6040;&#6070;&#6035;&#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031; &#6040;&#6075;&#6017;&#6020;&#6070;&#6042;&#6035;&#6081;&#6087;; 
-  &#6016;&#6098;&#6035;&#6075;&#6020;&#6016;&#6042;&#6030;&#6072;&#6035;&#6081;&#6087;, &#6050;&#6098;&#6035;&#6016;&#6018;&#6098;&#6040;&#6070;&#6035;&#6050;&#6070;&#6021;&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091; &#6016;&#6070;&#6042;&#6039;&#6098;&#6023;&#6070;&#6036;&#6091;&#6017;&#6098;&#6043;&#6073;&#6040;&#6047;&#6070;&#6042; &#6038;&#6072;&#6044;&#6089;&#6082;&#6036;&#6047;&#6083;&#6032;&#6093; &#6042;&#6036;&#6047;&#6091;&#6050;&#6098;&#6035;&#6016;&#6100;</i></blockquote>',
+'texte_syndication' => '&#6036;&#6078;&#6040;&#6077;&#6041;&#6047;&#6083;&#6032;&#6093; &#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031;, &#6044;&#6070;&#6050;&#6070;&#6021;&#6036;&#6098;&#6042;&#6040;&#6076;&#6043;&#6040;&#6016;&#6044;&#6071;&#6025; &#6047;&#6098;&#6044;&#6096;&#6041;&#6036;&#6098;&#6042;&#6044;&#6031;&#6098;&#6031;&#6071; &#6036;&#6025;&#6098;&#6023;&#6072;&#6035;&#6083;&#6047;&#6086;&#6039;&#6070;&#6042;&#6088;&#6021;&#6075;&#6020;&#6016;&#6098;&#6042;&#6084;&#6041;&#6036;&#6086;&#6037;&#6075;&#6031; &#6042;&#6036;&#6047;&#6091;&#6044;&#6070;&#6100; &#6026;&#6078;&#6040;&#6098;&#6036;&#6072;&#6047;&#6086;&#6042;&#6081;&#6021;&#6036;&#6070;&#6035;&#6021;&#6073;&#6020;, &#6050;&#6098;&#6035;&#6016;&#6031;&#6098;&#6042;&#6076;&#6044;&#6031;&#6082;&#6034;&#6098;&#6044;&#6078;&#6050;&#6084;&#6041;&#6047;&#6016;&#6040;&#6098;&#6040; &#6016;&#6070;&#6042;&#6039;&#6098;&#6023;&#6070;&#6036;&#6091;&#6100;  <blockquote><div><i>&#6017;&#6086;&#6038;&#6098;&#6041;&#6076;&#6042;&#6078;&#6017;&#6098;&#6043;&#6087; &#6018;&#6098;&#6040;&#6070;&#6035;&#6050;&#6035;&#6075;&#6025;&#6098;&#6025;&#6070;&#6031; &#6040;&#6075;&#6017;&#6020;&#6070;&#6042;&#6035;&#6081;&#6087;; 
+  &#6016;&#6098;&#6035;&#6075;&#6020;&#6016;&#6042;&#6030;&#6072;&#6035;&#6081;&#6087;, &#6050;&#6098;&#6035;&#6016;&#6018;&#6098;&#6040;&#6070;&#6035;&#6050;&#6070;&#6021;&#6036;&#6098;&#6042;&#6078;&#6036;&#6098;&#6042;&#6070;&#6047;&#6091; &#6016;&#6070;&#6042;&#6039;&#6098;&#6023;&#6070;&#6036;&#6091;&#6017;&#6098;&#6043;&#6073;&#6040;&#6047;&#6070;&#6042; &#6038;&#6072;&#6044;&#6089;&#6082;&#6036;&#6047;&#6083;&#6032;&#6093; &#6042;&#6036;&#6047;&#6091;&#6050;&#6098;&#6035;&#6016;&#6100;</i></div></blockquote>',
 'texte_table_ok' => '&#6102; &#6031;&#6070;&#6042;&#6070;&#6020;&#8203;&#6035;&#6081;&#6087;&#8203;&#6018;&#6074;&#8203;&#6031;&#6098;&#6042;&#6073;&#6040;&#6031;&#6098;&#6042;&#6076;&#6044;',
 'texte_tables_indexation_vides' => '&#6031;&#6070;&#6042;&#6070;&#6020;&#8203;&#6043;&#6071;&#6036;&#6071;&#6016;&#6098;&#6042;&#6040;&#8203;&#6035;&#6083;&#8203;&#6040;&#6089;&#6070;&#6047;&#6090;&#6072;&#6035;&#8203;&#6018;&#6074;&#8203;&#6033;&#6033;&#6081;',
 'texte_tentative_recuperation' => '&#6016;&#6070;&#6042;&#8203;&#6036;&#6089;&#6075;&#6035;&#6036;&#6089;&#6020;&#8203;&#6023;&#6077;&#6047;&#6023;&#6075;&#6043;',
index 57b347a..f190b5f 100644 (file)
@@ -517,7 +517,7 @@ D&eacute;i schons gebrauchten Sproochen (als &eacute;ischt ugewisen) k&euml;nnen
 'info_question_activer_compactage_js' => 'W&euml;llt dir d\'Kompressioun vun de Skripter (Javascript) aschalten?',
 'info_question_activer_compresseur' => 'W&euml;llt dir d\'Kompressioun vum HTTP-Flow aschalten?',
 'info_question_gerer_statistiques' => 'Soll &auml;re Site d\'Statistik vun de Visiten g&eacute;r&eacute;ieren?',
-'info_question_inscription_nouveaux_redacteurs' => 'Accept&eacute;iert dier d\'Aschreiwe vu neie Redakteren direkt vum &ouml;ffentl&euml;che Site? Wa jo, da k&euml;nnen d\'Visiteuren s&euml;ch iwert een automat&euml;sche Formulaire aschreiwen an esou Zougang op de privaten Deel kr&eacute;ien fir hir Artikelen ze propos&eacute;ieren. <blockquote><i>W&auml;hrend der Aschreiwungs-Phase kr&eacute;ien d\'Benotzer automat&euml;sch en Email mat hieren Zougangsinformatiounen. Verschidde Provideren verbidden d\'Sch&eacute;cken vun Email vun hieren Serveren aus: an deem Fall ass d\'automat&euml;scht Aschreiwen onm&eacute;iglech.', # MODIF
+'info_question_inscription_nouveaux_redacteurs' => 'Accept&eacute;iert dier d\'Aschreiwe vu neie Redakteren direkt vum &ouml;ffentl&euml;che Site? Wa jo, da k&euml;nnen d\'Visiteuren s&euml;ch iwert een automat&euml;sche Formulaire aschreiwen an esou Zougang op de privaten Deel kr&eacute;ien fir hir Artikelen ze propos&eacute;ieren. <blockquote><div><i>W&auml;hrend der Aschreiwungs-Phase kr&eacute;ien d\'Benotzer automat&euml;sch en Email mat hieren Zougangsinformatiounen. Verschidde Provideren verbidden d\'Sch&eacute;cken vun Email vun hieren Serveren aus: an deem Fall ass d\'automat&euml;scht Aschreiwen onm&eacute;iglech.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'W&euml;llt dir Schl&euml;sselwierder op &auml;rem Site benotzen?',
 'info_question_proposer_site' => 'Wie kann e Site propos&eacute;ieren?',
 'info_question_utilisation_moteur_recherche' => 'W&euml;llt dir de Sich-Motor vu SPIP benotzen?
@@ -1017,7 +1017,7 @@ Passt op mat d&euml;ser Prozedur: <b>d\'&Auml;nnerungen k&euml;nnen n&euml;t r&e
 'texte_suppression_fichiers' => 'Benotzt d&euml;s Prozedur fir all d\'Fichier\'en aus dem Cache ze l&auml;schen. Sou k&euml;nnt dir z.B. all d\'S&auml;iten nei berechnen, wann dir  grouss &Auml;nnerungen um Layout oder der Struktur vum Site gemaach hutt.',
 'texte_sur_titre' => 'Iwwertitel',
 'texte_syndication' => 'Et ass m&eacute;iglech, wann de Site &euml;t erlaabt, automatesch d\'L&euml;scht vun senge Neiegkeeten ze kr&eacute;ien. Schalt duerfir d\'Syndicatioun an.
-<blockquote><i>Verschidde Provideren verh&euml;nneren d&euml;s Prozedur; an deem Fall k&euml;nnt dir d\'Syndicatioun n&euml;t op &auml;rem Site benotzen.</i></blockquote>',
+<blockquote><div><i>Verschidde Provideren verh&euml;nneren d&euml;s Prozedur; an deem Fall k&euml;nnt dir d\'Syndicatioun n&euml;t op &auml;rem Site benotzen.</i></div></blockquote>',
 'texte_table_ok' => ': des Tafel ass OK.',
 'texte_tables_indexation_vides' => 'Den Index vum Sich-Motor ass eidel.',
 'texte_tentative_recuperation' => 'Reparatur-Versuch',
index 6b66369..7e0a6a7 100644 (file)
@@ -512,7 +512,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_activer_compactage_js' => 'Souhaitez-vous activer le compactage des scripts (javascript) ?', # NEW
 'info_question_activer_compresseur' => 'Voulez-vous activer la compression du flux HTTP ?', # NEW
 'info_question_gerer_statistiques' => '&#4126;&#4100;&#4154;&#4151;&#4125;&#4096;&#4154;&#4120;&#4154;&#4102;&#4141;&#4143;&#4096;&#4154;&#4112;&#4157;&#4100;&#4154; &#4125;&#4100;&#4154;&#4123;&#4145;&#4140;&#4096;&#4154;&#4124;&#4106;&#4154;&#4117;&#4112;&#4154;&#4126;&#4144;&#4121;&#4155;&#4140;&#4152;&#4101;&#4140;&#4123;&#4100;&#4154;&#4152;&#4096;&#4141;&#4143; &#4101;&#4142;&#4121;&#4150;&#4124;&#4141;&#4143;&#4117;&#4139;&#4126;&#4124;&#4140;&#4152;',
-'info_question_inscription_nouveaux_redacteurs' => '&#4101;&#4140;&#4112;&#4106;&#4154;&#4152;&#4129;&#4126;&#4101;&#4154;&#4121;&#4155;&#4140;&#4152; &#4121;&#4158;&#4112;&#4154;&#4117;&#4143;&#4150;&#4112;&#4100;&#4154;&#4097;&#4157;&#4100;&#4154;&#4151;&#4096;&#4141;&#4143; &#4129;&#4121;&#4155;&#4140;&#4152;&#4102;&#4141;&#4143;&#4100;&#4154;&#4116;&#4145;&#4123;&#4140;&#4121;&#4158; &#4124;&#4143;&#4117;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4097;&#4157;&#4100;&#4154;&#4151; &#4117;&#4145;&#4152;&#4124;&#4141;&#4143;&#4117;&#4139;&#4126;&#4124;&#4140;&#4152;? &#4126;&#4100;&#4154;&#4097;&#4157;&#4100;&#4154;&#4151;&#4117;&#4156;&#4143;&#4121;&#4106;&#4154;&#4102;&#4141;&#4143;&#4124;&#4155;&#4158;&#4100;&#4154; &#4124;&#4140;&#4124;&#4106;&#4154;&#4126;&#4144;&#4121;&#4155;&#4140;&#4152;&#4126;&#4106;&#4154;&#4124;&#4106;&#4154;&#4152; &#4129;&#4124;&#4141;&#4143;&#4129;&#4124;&#4155;&#4158;&#4145;&#4140;&#4096;&#4154; &#4118;&#4145;&#4140;&#4100;&#4154;&#4096;&#4141;&#4143;&#4129;&#4126;&#4143;&#4150;&#4152;&#4117;&#4156;&#4143;&#4173; &#4121;&#4158;&#4112;&#4154;&#4117;&#4143;&#4150;&#4112;&#4100;&#4154;&#4116;&#4141;&#4143;&#4100;&#4154;&#4121;&#4106;&#4154;&#4118;&#4156;&#4101;&#4154;&#4126;&#4106;&#4154;&#4171; &#4126;&#4144;&#4112;&#4141;&#4143;&#4151;&#4118;&#4116;&#4154;&#4112;&#4142;&#4152;&#4113;&#4140;&#4152;&#4126;&#4145;&#4140; &#4102;&#4145;&#4140;&#4100;&#4154;&#4152;&#4117;&#4139;&#4152;&#4121;&#4155;&#4140;&#4152;&#4096;&#4141;&#4143; &#4112;&#4141;&#4143;&#4096;&#4154;&#4123;&#4141;&#4143;&#4096;&#4154;&#4121;&#4157;&#4121;&#4154;&#4152;&#4121;&#4150; &#4116;&#4141;&#4143;&#4100;&#4154;&#4121;&#4106;&#4154;&#4118;&#4156;&#4101;&#4154;&#4126;&#4118;&#4156;&#4100;&#4154;&#4151; &#4116;&#4158;&#4101;&#4154;&#4126;&#4096;&#4154;&#4117;&#4139;&#4124;&#4141;&#4121;&#4154;&#4151;&#4121;&#4106;&#4154;&#4171;<blockquote><i> &#4121;&#4158;&#4112;&#4154;&#4117;&#4143;&#4150;&#4112;&#4100;&#4154;&#4097;&#4156;&#4100;&#4154;&#4152;&#4124;&#4143;&#4117;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4116;&#4145;&#4101;&#4105;&#4154; &#4096;&#4141;&#4143;&#4122;&#4154;&#4117;&#4141;&#4143;&#4100;&#4154;&#4096;&#4116;&#4154;&#4151;&#4126;&#4112;&#4154;&#4116;&#4145;&#4123;&#4140;&#4126;&#4141;&#4143;&#4151; &#4125;&#4100;&#4154;&#4123;&#4145;&#4140;&#4096;&#4154;&#4116;&#4141;&#4143;&#4100;&#4154;&#4123;&#4116;&#4154; &#4124;&#4141;&#4143;&#4129;&#4117;&#4154;&#4126;&#4145;&#4140; &#4129;&#4097;&#4155;&#4096;&#4154;&#4129;&#4124;&#4096;&#4154;&#4121;&#4155;&#4140;&#4152;&#4096;&#4141;&#4143; &#4129;&#4124;&#4141;&#4143;&#4129;&#4124;&#4155;&#4158;&#4145;&#4140;&#4096;&#4154;&#4129;&#4142;&#4152;&#4121;&#4145;&#4152;&#4124;&#4154;&#4121;&#4158; &#4123;&#4145;&#4140;&#4096;&#4154;&#4124;&#4140;&#4117;&#4139;&#4124;&#4141;&#4121;&#4154;&#4151;&#4121;&#4106;&#4154;&#4171; &#4112;&#4097;&#4155;&#4141;&#4143;&#4151;&#4126;&#4145;&#4140; &#4125;&#4096;&#4154;&#4120;&#4154;&#4125;&#4116;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4121;&#4158;&#4143;&#4124;&#4143;&#4117;&#4154;&#4100;&#4116;&#4154;&#4152;&#4121;&#4155;&#4140;&#4152;&#4126;&#4106;&#4154; &#4132;&#4129;&#4124;&#4141;&#4143;&#4129;&#4124;&#4155;&#4158;&#4145;&#4140;&#4096;&#4154; &#4101;&#4140;&#4117;&#4141;&#4143;&#4151;&#4097;&#4156;&#4100;&#4154;&#4152;&#4096;&#4141;&#4143; &#4124;&#4096;&#4154;&#4121;&#4097;&#4150;&#4096;&#4156;&#4117;&#4145;&#4170; &#4132;&#4126;&#4141;&#4143;&#4151;&#4118;&#4156;&#4101;&#4154;&#4116;&#4145;&#4124;&#4155;&#4158;&#4100;&#4154; &#4132;&#4101;&#4140;&#4117;&#4141;&#4143;&#4151;&#4097;&#4156;&#4100;&#4154;&#4152;&#4126;&#4106;&#4154; &#4129;&#8203;&#4102;&#4100;&#4154;&#4117;&#4156;&#4145;&#4121;&#4106;&#4154;&#4121;&#4127;&#4143;&#4112;&#4154;&#4117;&#4139;&#4171;', # MODIF
+'info_question_inscription_nouveaux_redacteurs' => '&#4101;&#4140;&#4112;&#4106;&#4154;&#4152;&#4129;&#4126;&#4101;&#4154;&#4121;&#4155;&#4140;&#4152; &#4121;&#4158;&#4112;&#4154;&#4117;&#4143;&#4150;&#4112;&#4100;&#4154;&#4097;&#4157;&#4100;&#4154;&#4151;&#4096;&#4141;&#4143; &#4129;&#4121;&#4155;&#4140;&#4152;&#4102;&#4141;&#4143;&#4100;&#4154;&#4116;&#4145;&#4123;&#4140;&#4121;&#4158; &#4124;&#4143;&#4117;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4097;&#4157;&#4100;&#4154;&#4151; &#4117;&#4145;&#4152;&#4124;&#4141;&#4143;&#4117;&#4139;&#4126;&#4124;&#4140;&#4152;? &#4126;&#4100;&#4154;&#4097;&#4157;&#4100;&#4154;&#4151;&#4117;&#4156;&#4143;&#4121;&#4106;&#4154;&#4102;&#4141;&#4143;&#4124;&#4155;&#4158;&#4100;&#4154; &#4124;&#4140;&#4124;&#4106;&#4154;&#4126;&#4144;&#4121;&#4155;&#4140;&#4152;&#4126;&#4106;&#4154;&#4124;&#4106;&#4154;&#4152; &#4129;&#4124;&#4141;&#4143;&#4129;&#4124;&#4155;&#4158;&#4145;&#4140;&#4096;&#4154; &#4118;&#4145;&#4140;&#4100;&#4154;&#4096;&#4141;&#4143;&#4129;&#4126;&#4143;&#4150;&#4152;&#4117;&#4156;&#4143;&#4173; &#4121;&#4158;&#4112;&#4154;&#4117;&#4143;&#4150;&#4112;&#4100;&#4154;&#4116;&#4141;&#4143;&#4100;&#4154;&#4121;&#4106;&#4154;&#4118;&#4156;&#4101;&#4154;&#4126;&#4106;&#4154;&#4171; &#4126;&#4144;&#4112;&#4141;&#4143;&#4151;&#4118;&#4116;&#4154;&#4112;&#4142;&#4152;&#4113;&#4140;&#4152;&#4126;&#4145;&#4140; &#4102;&#4145;&#4140;&#4100;&#4154;&#4152;&#4117;&#4139;&#4152;&#4121;&#4155;&#4140;&#4152;&#4096;&#4141;&#4143; &#4112;&#4141;&#4143;&#4096;&#4154;&#4123;&#4141;&#4143;&#4096;&#4154;&#4121;&#4157;&#4121;&#4154;&#4152;&#4121;&#4150; &#4116;&#4141;&#4143;&#4100;&#4154;&#4121;&#4106;&#4154;&#4118;&#4156;&#4101;&#4154;&#4126;&#4118;&#4156;&#4100;&#4154;&#4151; &#4116;&#4158;&#4101;&#4154;&#4126;&#4096;&#4154;&#4117;&#4139;&#4124;&#4141;&#4121;&#4154;&#4151;&#4121;&#4106;&#4154;&#4171;<blockquote><div><i> &#4121;&#4158;&#4112;&#4154;&#4117;&#4143;&#4150;&#4112;&#4100;&#4154;&#4097;&#4156;&#4100;&#4154;&#4152;&#4124;&#4143;&#4117;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4116;&#4145;&#4101;&#4105;&#4154; &#4096;&#4141;&#4143;&#4122;&#4154;&#4117;&#4141;&#4143;&#4100;&#4154;&#4096;&#4116;&#4154;&#4151;&#4126;&#4112;&#4154;&#4116;&#4145;&#4123;&#4140;&#4126;&#4141;&#4143;&#4151; &#4125;&#4100;&#4154;&#4123;&#4145;&#4140;&#4096;&#4154;&#4116;&#4141;&#4143;&#4100;&#4154;&#4123;&#4116;&#4154; &#4124;&#4141;&#4143;&#4129;&#4117;&#4154;&#4126;&#4145;&#4140; &#4129;&#4097;&#4155;&#4096;&#4154;&#4129;&#4124;&#4096;&#4154;&#4121;&#4155;&#4140;&#4152;&#4096;&#4141;&#4143; &#4129;&#4124;&#4141;&#4143;&#4129;&#4124;&#4155;&#4158;&#4145;&#4140;&#4096;&#4154;&#4129;&#4142;&#4152;&#4121;&#4145;&#4152;&#4124;&#4154;&#4121;&#4158; &#4123;&#4145;&#4140;&#4096;&#4154;&#4124;&#4140;&#4117;&#4139;&#4124;&#4141;&#4121;&#4154;&#4151;&#4121;&#4106;&#4154;&#4171; &#4112;&#4097;&#4155;&#4141;&#4143;&#4151;&#4126;&#4145;&#4140; &#4125;&#4096;&#4154;&#4120;&#4154;&#4125;&#4116;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4121;&#4158;&#4143;&#4124;&#4143;&#4117;&#4154;&#4100;&#4116;&#4154;&#4152;&#4121;&#4155;&#4140;&#4152;&#4126;&#4106;&#4154; &#4132;&#4129;&#4124;&#4141;&#4143;&#4129;&#4124;&#4155;&#4158;&#4145;&#4140;&#4096;&#4154; &#4101;&#4140;&#4117;&#4141;&#4143;&#4151;&#4097;&#4156;&#4100;&#4154;&#4152;&#4096;&#4141;&#4143; &#4124;&#4096;&#4154;&#4121;&#4097;&#4150;&#4096;&#4156;&#4117;&#4145;&#4170; &#4132;&#4126;&#4141;&#4143;&#4151;&#4118;&#4156;&#4101;&#4154;&#4116;&#4145;&#4124;&#4155;&#4158;&#4100;&#4154; &#4132;&#4101;&#4140;&#4117;&#4141;&#4143;&#4151;&#4097;&#4156;&#4100;&#4154;&#4152;&#4126;&#4106;&#4154; &#4129;&#8203;&#4102;&#4100;&#4154;&#4117;&#4156;&#4145;&#4121;&#4106;&#4154;&#4121;&#4127;&#4143;&#4112;&#4154;&#4117;&#4139;&#4171;</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => '&#4126;&#4100;&#4154;&#4151;&#4125;&#4096;&#4154;&#4120;&#4154;&#4102;&#4141;&#4143;&#4096;&#4154;&#4112;&#4157;&#4100;&#4154; &#4126;&#4145;&#4140;&#4151;&#4097;&#4155;&#4096;&#4154;&#4101;&#4096;&#4140;&#4152;&#4124;&#4143;&#4150;&#4152;&#4121;&#4155;&#4140;&#4152;&#4096;&#4141;&#4143; &#4129;&#4126;&#4143;&#4150;&#4152;&#4117;&#4156;&#4143;&#4097;&#4155;&#4100;&#4154;&#4117;&#4139;&#4126;&#4124;&#4140;&#4152;',
 'info_question_proposer_site' => '&#4121;&#4106;&#4154;&#4126;&#4144;&#4096; &#4096;&#4141;&#4143;&#4152;&#4096;&#4140;&#4152;&#4125;&#4096;&#4154;&#4120;&#4154;&#4102;&#4141;&#4143;&#4096;&#4154;&#4121;&#4155;&#4140;&#4152;&#4096;&#4141;&#4143; &#4113;&#4100;&#4154;&#4121;&#4156;&#4100;&#4154;&#4097;&#4155;&#4096;&#4154;&#4117;&#4145;&#4152;&#4116;&#4141;&#4143;&#4100;&#4154;&#4126;&#4116;&#4106;&#4154;&#4152;',
 'info_question_utilisation_moteur_recherche' => 'SPIP &#4126;&#4141;&#4143;&#4151; &#4123;&#4158;&#4140;&#4118;&#4157;&#4145;&#4121;&#4158;&#4143;&#4129;&#4100;&#4154;&#4098;&#4155;&#4100;&#4154;&#4096;&#4141;&#4143; &#4129;&#4126;&#4143;&#4150;&#4152;&#4117;&#4156;&#4143;&#4097;&#4155;&#4100;&#4154;&#4117;&#4139;&#4126;&#4124;&#4140;&#4152;&#4171; (&#4101;&#4101;&#4154;&#4101;&#4112;&#4121;&#4154; &#4129;&#4123;&#4158;&#4141;&#4116;&#4154;&#4096;&#4141;&#4143; &#4121;&#4156;&#4158;&#4100;&#4154;&#4151;&#4112;&#4100;&#4154;&#4173;&#4121;&#4123;&#4116;&#4141;&#4143;&#4100;&#4154;&#4117;&#4139;)',
@@ -1008,7 +1008,7 @@ proxy &#4124;&#4141;&#4117;&#4154;&#4101;&#4140;&#4096;&#4141;&#4143; &#4129;&#4
 'texte_statut_refuses' => '&#4100;&#4156;&#4100;&#4154;&#4152;&#4117;&#4122;&#4154;&#4126;&#4106;&#4154;',
 'texte_suppression_fichiers' => 'SPIP &#4121;&#4158;&#4112;&#4154;&#4105;&#4140;&#4111;&#4154;&#4113;&#4146;&#4123;&#4158;&#4141; &#4118;&#4141;&#4143;&#4100;&#4154;&#4121;&#4155;&#4140;&#4152;&#4129;&#4140;&#4152;&#4124;&#4143;&#4150;&#4152;&#4096;&#4141;&#4143; &#4132;&#4097;&#4141;&#4143;&#4100;&#4154;&#4152;&#4101;&#4145;&#4121;&#4158;&#4143; &#4124;&#4143;&#4117;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4097;&#4155;&#4096;&#4154;&#4121;&#4158; &#4129;&#4096;&#4143;&#4116;&#4154;&#4124;&#4143;&#4150;&#4152;&#4117;&#4155;&#4122;&#4154;&#4118;&#4155;&#4096;&#4154;&#4121;&#4106;&#4154;&#4171;',
 'texte_sur_titre' => '&#4113;&#4141;&#4117;&#4154;&#4101;&#4106;&#4154;&#4152;&#4097;&#4145;&#4139;&#4100;&#4154;&#4152;&#4101;&#4105;&#4154;',
-'texte_syndication' => '&#4102;&#4141;&#4143;&#4096;&#4154;&#4121;&#4158;&#4097;&#4157;&#4100;&#4154;&#4151;&#4117;&#4156;&#4143;&#4113;&#4140;&#4152;&#4124;&#4155;&#4158;&#4100;&#4154; &#4116;&#4145;&#4140;&#4096;&#4154;&#4102;&#4143;&#4150;&#4152;&#4123; &#4129;&#4097;&#4155;&#4096;&#4154;&#4129;&#4124;&#4096;&#4154;&#4121;&#4155;&#4140;&#4152; &#4101;&#4140;&#4123;&#4100;&#4154;&#4152;&#4096;&#4141;&#4143; &#8203;&#4129;&#4124;&#4141;&#4143;&#4129;&#4124;&#4155;&#4158;&#4140;&#4096;&#4154; &#4113;&#4143;&#4112;&#4154;&#4117;&#4145;&#4152;&#4116;&#4141;&#4143;&#4100;&#4154;&#4126;&#4106;&#4154;&#4171; &#4132;&#4124;&#4143;&#4117;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4121;&#4158;&#4143;&#4096;&#4141;&#4143; &#4123;&#4122;&#4144;&#4123;&#4116;&#4154; &#4117;&#4144;&#4152;&#4112;&#4157;&#4146;&#4097;&#4155;&#4141;&#4112;&#4154;&#4102;&#4096;&#4154;&#4097;&#4156;&#4100;&#4154;&#4152;&#4096;&#4141;&#4143; &#4097;&#4157;&#4100;&#4154;&#4151;&#4117;&#4156;&#4143;&#4113;&#4140;&#4152;&#4123;&#4116;&#4154;&#4124;&#4141;&#4143;&#4126;&#4106;&#4154;&#4171; <blockquote><i>&#4112;&#4097;&#4155;&#4141;&#4143;&#4151;&#4102;&#4141;&#4143;&#4096;&#4154;&#4121;&#4155;&#4140;&#4152;&#4112;&#4157;&#4100;&#4154; &#4117;&#4141;&#4112;&#4154;&#4113;&#4140;&#4152;&#4116;&#4145;&#4126;&#4112;&#4154;&#4126;&#4106;&#4154;</i></blockquote>', # MODIF
+'texte_syndication' => '&#4102;&#4141;&#4143;&#4096;&#4154;&#4121;&#4158;&#4097;&#4157;&#4100;&#4154;&#4151;&#4117;&#4156;&#4143;&#4113;&#4140;&#4152;&#4124;&#4155;&#4158;&#4100;&#4154; &#4116;&#4145;&#4140;&#4096;&#4154;&#4102;&#4143;&#4150;&#4152;&#4123; &#4129;&#4097;&#4155;&#4096;&#4154;&#4129;&#4124;&#4096;&#4154;&#4121;&#4155;&#4140;&#4152; &#4101;&#4140;&#4123;&#4100;&#4154;&#4152;&#4096;&#4141;&#4143; &#8203;&#4129;&#4124;&#4141;&#4143;&#4129;&#4124;&#4155;&#4158;&#4140;&#4096;&#4154; &#4113;&#4143;&#4112;&#4154;&#4117;&#4145;&#4152;&#4116;&#4141;&#4143;&#4100;&#4154;&#4126;&#4106;&#4154;&#4171; &#4132;&#4124;&#4143;&#4117;&#4154;&#4102;&#4145;&#4140;&#4100;&#4154;&#4121;&#4158;&#4143;&#4096;&#4141;&#4143; &#4123;&#4122;&#4144;&#4123;&#4116;&#4154; &#4117;&#4144;&#4152;&#4112;&#4157;&#4146;&#4097;&#4155;&#4141;&#4112;&#4154;&#4102;&#4096;&#4154;&#4097;&#4156;&#4100;&#4154;&#4152;&#4096;&#4141;&#4143; &#4097;&#4157;&#4100;&#4154;&#4151;&#4117;&#4156;&#4143;&#4113;&#4140;&#4152;&#4123;&#4116;&#4154;&#4124;&#4141;&#4143;&#4126;&#4106;&#4154;&#4171; <blockquote><div><i>&#4112;&#4097;&#4155;&#4141;&#4143;&#4151;&#4102;&#4141;&#4143;&#4096;&#4154;&#4121;&#4155;&#4140;&#4152;&#4112;&#4157;&#4100;&#4154; &#4117;&#4141;&#4112;&#4154;&#4113;&#4140;&#4152;&#4116;&#4145;&#4126;&#4112;&#4154;&#4126;&#4106;&#4154;</i></div></blockquote>', # MODIF
 'texte_table_ok' => '&#4132;&#4103;&#4122;&#4140;&#4152;&#4129;&#4102;&#4100;&#4154;&#4117;&#4156;&#4145;&#4126;&#4106;&#4154;',
 'texte_tables_indexation_vides' => '&#4101;&#4140;&#4106;&#4157;&#4158;&#4116;&#4154;&#4152; &#4113;&#4141;&#4116;&#4154;&#4152;&#4126;&#4141;&#4121;&#4154;&#4152;&#4113;&#4140;&#4152;&#4121;&#4158;&#4143;&#4121;&#4123;&#4158;&#4141;&#4117;&#4139;',
 'texte_tentative_recuperation' => '&#4117;&#4156;&#4143;&#4117;&#4156;&#4100;&#4154;&#4123;&#4116;&#4154;&#4096;&#4156;&#4141;&#4143;&#4152;&#4101;&#4140;&#4152;&#4126;&#4106;&#4154;',
index 218859b..92fdbdc 100644 (file)
@@ -552,12 +552,12 @@ De publieke forums kunnen per artikel toegestaan worden
  de publieke site? Indien wel, dan kunnen bezoekers
  zich via een geautomatiseerd formulier inschrijven en
  toegang krijgen tot de priv&eacute;-ruimte om zelf artikels
- voor te stellen.<blockquote><i>Bij inschrijving zal een
+ voor te stellen.<blockquote><div><i>Bij inschrijving zal een
  gebruiker een automatische e-mail ontvangen met daarin
  de toeganscode voor de site. Sommige hostingproviders
  blokkeren echter het versturen van e-mail vanaf hun
  servers : in dat geval is een automatische inschrijving
- niet mogelijk.</i></blockquote>',
+ niet mogelijk.</i></div></blockquote>',
 'info_question_mots_cles' => 'Wil je gebruik maken van trefwoorden op je site?',
 'info_question_proposer_site' => 'Wie kan referentiesites voorstellen?',
 'info_question_utilisation_moteur_recherche' => 'Wil je gebruik maken van de geintegreerde zoekmachine van SPIP ?
@@ -1114,9 +1114,9 @@ Dit kan handig zijn als je veel pagina\'s hebt gewijzigd, de layout of de struct
 'texte_syndication' => 'Het is mogelijk om van een site automatisch een lijst met
  nieuws, als de website het toelaat, binnen te halen.
  Hiervoor dien je de syndicatie (nieuwsovername) te
- activeren. <blockquote><i>Sommige hostingproviders laten
+ activeren. <blockquote><div><i>Sommige hostingproviders laten
  dit niet toe; in dat geval kan je geen nieuwsovername
- vanaf je site laten gebeuren.</i></blockquote>',
+ vanaf je site laten gebeuren.</i></div></blockquote>',
 'texte_table_ok' => ': deze tabel is OK.',
 'texte_tables_indexation_vides' => 'De indices van de zoekmachine zijn leeggemaakt.',
 'texte_tentative_recuperation' => 'Poging tot herstel.',
index a157fb1..ad0efde 100644 (file)
@@ -537,10 +537,10 @@ L\'administrator dau sist&egrave;ma o de la ret vos deu poder fornir
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que de redactors nov&egrave;ls s\'inscrivan
  a partir dau sit public? Se o acceptatz, los vesitaires se poir&aacute;n inscriure
  gr&agrave;cias a un formulari automatizat e doncas accedir&aacute;n v&egrave;rs l\'espaci privat per
- prepausar d\'articles.<blockquote><i> Durant la fasa d\'inscripcion, los utilizaires recebon un e-mail automatic
+ prepausar d\'articles.<blockquote><div><i> Durant la fasa d\'inscripcion, los utilizaires recebon un e-mail automatic
  que lor baila un c&ograve;de d\'acc&egrave;s v&egrave;rs lo sit privat.
 Quauques auberjadors autorizan pas l\'enviament d\'e-mails dempu&egrave;i lors servidors: en aquel cas, l\'inscripcion automatica z-es
- impossibla.', # MODIF
+ impossibla.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Desiratz d\'utilizar los mots clau sobre v&ograve;stre sit?',
 'info_question_proposer_site' => 'Quau p&ograve;t prepausar de sits referenciats?',
 'info_question_utilisation_moteur_recherche' => 'Desiratz d\'utilizar lo cerchador integrat a SPIP? (lo desactivar abriva lo foncionament dau sist&egrave;ma.)',
@@ -1110,9 +1110,9 @@ s\'av&egrave;tz bravament modificat lo grafisme o l\'estructura dau sit.',
 'texte_sur_titre' => 'Sobret&iacute;tol',
 'texte_syndication' => 'Se p&ograve;t recuperar automaticament, quand un sit web o permet, 
   la t&egrave;ira de sas novetats. Per aqu&ograve; far, vos chau activar la sindicacion. 
-  <blockquote><i>Quauques auberjadors activan pas aquela foncionalitat; 
+  <blockquote><div><i>Quauques auberjadors activan pas aquela foncionalitat; 
   en aquel cas, poiretz pas utilizar la sindicacion de contengut
-  dempu&egrave;i v&ograve;stre sit.</i></blockquote>', # MODIF
+  dempu&egrave;i v&ograve;stre sit.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': aquesta taula z-es condreita.',
 'texte_tables_indexation_vides' => 'Las taulas d\'indexacion dau motor son voidas.',
 'texte_tentative_recuperation' => 'Assai de reparacion',
index 757382c..5db3cdb 100644 (file)
@@ -537,10 +537,10 @@ L\'administrator deu sist&egrave;ma o de l\'arret que\'vs deu poder hornir
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que redactors nav&egrave;ths e s\'inscr&iacute;vian
  a partir deu sit public? S\'ac acceptatz, los vesitaires que\'s poir&agrave;n inscr&iacute;ver
  merc&eacute;s a un formulari automatizat e alavetz qu\'accedir&agrave;n a l\'espaci privat ent&agrave;
- perpausar articles.<blockquote><i> Durant la fasa d\'inscripcion, los utilizaires que receben un e-mail automatic
+ perpausar articles.<blockquote><div><i> Durant la fasa d\'inscripcion, los utilizaires que receben un e-mail automatic
  qui\'us balha un c&ograve;de d\'acc&egrave;s au sit privat.
 Daubuns aubergaders n\'autorizan pas lo mandad&iacute;s d\'e-mails dempuish los lors serviders: en aqueth cas, l\'inscripcion automatica qu\'ei
- impossibla.', # MODIF
+ impossibla.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'E desiratz d\'utilizar los mots clau suu v&ograve;ste sit?',
 'info_question_proposer_site' => 'Qui p&ograve;t perpausar sits referenciats?',
 'info_question_utilisation_moteur_recherche' => 'E desiratz d\'utilizar lo cercader integrat a SPIP? (lo desactivar qu\'accel&egrave;ra lo foncionament deu sist&egrave;ma.)',
@@ -1109,9 +1109,9 @@ s\'avetz modificat de b&egrave;th pro lo grafisme o l\'estructura deu sit.',
 'texte_sur_titre' => 'Subert&iacute;tol',
 'texte_syndication' => 'Que\'s p&ograve;t recuperar automaticament, quora un sit web o permet, 
   la t&egrave;ra de las soas nautats. T&agrave; har aqu&ograve;, que\'vs cau activar la sindicacion. 
-  <blockquote><i>Daubuns aubergaders n\'activan pas aquera foncionalitat; 
+  <blockquote><div><i>Daubuns aubergaders n\'activan pas aquera foncionalitat; 
   en aqueth cas, non poiratz pas utilizar la sindicacion de contengut
-  dempuish lo v&ograve;ste sit.</i></blockquote>', # MODIF
+  dempuish lo v&ograve;ste sit.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': aquesta taula qu\'ei condreta.',
 'texte_tables_indexation_vides' => 'Las taulas d\'indexacion deu motor que son vueidas.',
 'texte_tentative_recuperation' => 'Ensai de reparacion',
index 10bc06d..b99fefc 100644 (file)
@@ -537,10 +537,10 @@ L\'administrator dau sistema o de la ret vos deu poder fornir
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que daus redactors noveus s\'inscrivan
  a partir dau sit public? Se o acceptatz, los vesitaires se poir&aacute;n inscriure
  gr&agrave;cias a un formulari automatizat e donc accedir&aacute;n a l\'espaci privat per
- prepausar daus articles.<blockquote><i> Durant la fasa d\'inscripcion, los utilizaires receben un e-mail automatic
+ prepausar daus articles.<blockquote><div><i> Durant la fasa d\'inscripcion, los utilizaires receben un e-mail automatic
  que lor baila un c&ograve;de d\'acc&egrave;s au sit privat.
 Quauques auberjadors autorizan pas l\'enviament d\'e-mails dempuei lors servidors: en queu cas, l\'inscripcion automatica es
- impossibla.', # MODIF
+ impossibla.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Desiratz d\'utilizar los mots clau subre v&ograve;stre sit?',
 'info_question_proposer_site' => 'Quau p&ograve;t prepausar daus sits referenciats?',
 'info_question_utilisation_moteur_recherche' => 'Desiratz d\'utilizar lo cerchador integrat a SPIP? (lo desactivar abriva lo foncionament dau sistema.)',
@@ -1110,9 +1110,9 @@ s\'avetz bravament modificat lo grafisme o l\'estructura dau sit.',
 'texte_sur_titre' => 'Subret&iacute;tol',
 'texte_syndication' => 'Se p&ograve;t recuperar automaticament, quand un sit web o permet, 
   la tiera de sas novetats. Per qu&ograve; far, vos chau activar la sindicacion. 
-  <blockquote><i>Quauques auberjadors activan pas quela foncionalitat; 
+  <blockquote><div><i>Quauques auberjadors activan pas quela foncionalitat; 
   en queu cas, poiretz pas utilizar la sindicacion de contengut
-  dempuei v&ograve;stre sit.</i></blockquote>', # MODIF
+  dempuei v&ograve;stre sit.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': questa taula es condrecha.',
 'texte_tables_indexation_vides' => 'Las taulas d\'indexacion dau motor son voidas.',
 'texte_tentative_recuperation' => 'Assai de reparacion',
index 483395e..a6e7d08 100644 (file)
@@ -537,10 +537,10 @@ L\'administrator del sist&egrave;ma o de la ret vos deu poder fornir
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que de redactors nov&egrave;ls s\'inscrigan
  a partir del sit public? Se o acceptatz, los vesitaires se poir&agrave;n inscriure
  merc&eacute;s a un formulari automatizat e alara accedir&agrave;n a l\'espaci privat per
- prepausar d\'articles.<blockquote><i> Durant la fasa d\'inscripcion, los utilizaires recebon un e-mail automatic
+ prepausar d\'articles.<blockquote><div><i> Durant la fasa d\'inscripcion, los utilizaires recebon un e-mail automatic
  que lor baila un c&ograve;de d\'acc&egrave;s al sit privat.
 D\'unes albergadors autorizan pas lo mandad&iacute;s d\'e-mails dempu&egrave;i lors servidors: en aquel cas, l\'inscripcion automatica es
- impossibla.', # MODIF
+ impossibla.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Desiratz d\'utilizar los mots clau sul v&ograve;stre sit?',
 'info_question_proposer_site' => 'Qual p&ograve;t prepausar de sits referenciats?',
 'info_question_utilisation_moteur_recherche' => 'Desiratz d\'utilizar lo cercador integrat a SPIP? (lo desactivar abriva lo foncionament del sist&egrave;ma.)',
@@ -1099,9 +1099,9 @@ s\'av&egrave;tz bravament modificat lo grafisme o l\'estructura del sit.',
 'texte_sur_titre' => 'Subret&iacute;tol',
 'texte_syndication' => 'Se p&ograve;t recuperar automaticament, quora un sit web o permet, 
   la ti&egrave;ra de sas novetats. Per aqu&ograve; far, vos cal activar la sindicacion. 
-  <blockquote><i>D\'unes albergadors activan pas aquela foncionalitat; 
+  <blockquote><div><i>D\'unes albergadors activan pas aquela foncionalitat; 
   en aquel cas, poiretz pas utilizar la sindicacion de contengut
-  dempu&egrave;i v&ograve;stre sit.</i></blockquote>', # MODIF
+  dempu&egrave;i v&ograve;stre sit.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': aquesta taula es condrecha.',
 'texte_tables_indexation_vides' => 'Las taulas d\'indexacion del motor son vu&egrave;jas.',
 'texte_tentative_recuperation' => 'Ensag de reparacion',
index 95dd3ef..cc941fc 100644 (file)
@@ -525,12 +525,12 @@ Aqueli informacions vos devon poder &egrave;stre provesidi per l\'administrator
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz li inscripcions de nov&egrave;us redactors &agrave;
  partir dau sit public&nbsp;? Se l\'acceptatz, lu visitaires si podr&agrave;n inscriure
  desp&iacute; un formulari automatisat e accedir&agrave;n alora &agrave; l\'espaci privat per
- prepauar lu sieus articles pr&ograve;pis.<blockquote><i>Durant la fasa d\'inscripcion,
+ prepauar lu sieus articles pr&ograve;pis.<blockquote><div><i>Durant la fasa d\'inscripcion,
  lu utilisaires recebon un corrier electronic automatic
  que li fornisse lu sieus c&ograve;des d\'acc&egrave;s au sit privat. D\'unu
  aubergadors desactivon lo mandad&iacute;s d\'e-mails desp&iacute; lu sieus
  servidors: en aqueu cas, l\'inscripcion automatica es
- impossibla.', # MODIF
+ impossibla.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Desiratz d\'utilisar lu m&ograve;ts claus sus lo voastre sit?',
 'info_question_proposer_site' => 'Cu p&ograve;u prepauar de sits referen&ccedil;ats?',
 'info_question_utilisation_moteur_recherche' => 'Desiratz d\'utilisar lo motor de recerca integrat &agrave; SPIP? (s\'es desactivat, accel&egrave;ra lo foncionament dau sistema.)',
@@ -1089,9 +1089,9 @@ s\'av&egrave;tz bravament modificat lo grafisme &ograve; l\'estructura dau sit.'
 'texte_sur_titre' => 'Sobretitre',
 'texte_syndication' => 'Si p&ograve;u recuperar automaticament, quora un sit web lo permet, 
   la ti&egrave;ra dei sieus noveutats. Per far aqu&ograve;, vos cau activar la sindicacion. 
-  <blockquote><i>D\'unu aubergadors activon pas aquela foncionalitat; 
+  <blockquote><div><i>D\'unu aubergadors activon pas aquela foncionalitat; 
   dins aqueu cas, podretz pas utilisar la sindicacion de contengut
-  desp&iacute; lo voastre sit.</i></blockquote>', # MODIF
+  desp&iacute; lo voastre sit.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': aquesta taula es condrecha.',
 'texte_tables_indexation_vides' => 'Li taulas d\'indexacion dau motor son vu&egrave;ii.',
 'texte_tentative_recuperation' => 'Temptativa de reparacion',
index 687d8a3..0cc8c1c 100644 (file)
@@ -537,10 +537,10 @@ L\'administrator dau sist&egrave;ma &ograve; de la ret vos deu poder fornir
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que de redactors nov&egrave;us s\'inscrigan
  a partir dau sit public? S\'o acceptatz, lu vesitaires si porr&agrave;n inscriure
  gaug a un formulari automatizat e alora accedir&agrave;n a l\'espaci privat per
- prepauar d\'articles.<blockquote><i> Durant la fasa d\'inscripcion, lu utilizaires recebon un e-mail automatic
+ prepauar d\'articles.<blockquote><div><i> Durant la fasa d\'inscripcion, lu utilizaires recebon un e-mail automatic
  que li dona un c&ograve;de d\'acc&egrave;s au sit privat.
 D\'unu aubergadors non autorizan lo mandad&iacute;s d\'e-mails desp&iacute; lu sieus servidors: en aqueu cas, l\'inscripcion automatica es
- impossibla.', # MODIF
+ impossibla.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Desiratz d\'utilizar lu mots clau sus lo v&ograve;stre sit?',
 'info_question_proposer_site' => 'Cu p&ograve;u prepausar de sits referenciats?',
 'info_question_utilisation_moteur_recherche' => 'Desiratz d\'utilizar lo cercador integrat a SPIP? (lo desactivar abriva lo foncionament dau sist&egrave;ma.)',
@@ -1109,9 +1109,9 @@ s\'av&egrave;tz bravament modificat lo grafisme &ograve; l\'estructura dau sit.'
 'texte_sur_titre' => 'Sobret&iacute;tol',
 'texte_syndication' => 'Si p&ograve;u recuperar automaticament, quora un sit web o permete, 
   la tiera dei novetats. Per aqu&ograve; far, vos cau activar la sindicacion. 
-  <blockquote><i>D\'unu aubergadors non activan aquela foncionalitat; 
+  <blockquote><div><i>D\'unu aubergadors non activan aquela foncionalitat; 
   en aqueu cas, non porretz utilizar la sindicacion de contengut
-  desp&iacute; lo v&ograve;stre sit.</i></blockquote>', # MODIF
+  desp&iacute; lo v&ograve;stre sit.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': aquesta taula es condrecha.',
 'texte_tables_indexation_vides' => 'Li taulas d\'indexacion dau motor son vueii.',
 'texte_tentative_recuperation' => 'Assai de reparacion',
index b528af0..30cb985 100644 (file)
@@ -537,10 +537,10 @@ L\'administrator dau sist&egrave;ma o de la ret vos deu poder fornir
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que de redactors nov&egrave;us s\'inscrigan
  a partir dau sit public? S\'o acceptatz, lei vesitaires se poir&agrave;n inscriure
  dieumerc&eacute; un formulari automatizat e alora accedir&agrave;n a l\'espaci privat per
- prepausar d\'articles.<blockquote><i> Durant la fasa d\'inscripcion, leis utilizaires recebon un e-mail automatic
+ prepausar d\'articles.<blockquote><div><i> Durant la fasa d\'inscripcion, leis utilizaires recebon un e-mail automatic
  que li baila un c&ograve;de d\'acc&egrave;s au sit privat.
 D\'uneis aubergadors autorizan pas lo mandad&iacute;s d\'e-mails dempuei sei servidors: en aqueu cas, l\'inscripcion automatica es
- impossibla.', # MODIF
+ impossibla.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Desiratz d\'utilizar lei mots clau sus v&ograve;stre sit?',
 'info_question_proposer_site' => 'Quau p&ograve;t prepausar de sits referenciats?',
 'info_question_utilisation_moteur_recherche' => 'Desiratz d\'utilizar lo cercador integrat a SPIP? (lo desactivar abriva lo foncionament dau sist&egrave;ma.)',
@@ -1109,9 +1109,9 @@ s\'av&egrave;tz bravament modificat lo grafisme o l\'estructura dau sit.',
 'texte_sur_titre' => 'Subret&iacute;tol',
 'texte_syndication' => 'Se p&ograve;t recuperar automaticament, quora un sit web o permet, 
   la tiera de sei novetats. Per aqu&ograve; far, vos cau activar la sindicacion. 
-  <blockquote><i>D\'uneis aubergadors activan pas aquela foncionalitat; 
+  <blockquote><div><i>D\'uneis aubergadors activan pas aquela foncionalitat; 
   en aqueu cas, poiretz pas utilizar la sindicacion de contengut
-  dempuei v&ograve;stre sit.</i></blockquote>', # MODIF
+  dempuei v&ograve;stre sit.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': aquesta taula es condrecha.',
 'texte_tables_indexation_vides' => 'Lei taulas d\'indexacion dau motor son vuejas.',
 'texte_tentative_recuperation' => 'Assai de reparacion',
index 68abb71..9496ee4 100644 (file)
@@ -537,10 +537,10 @@ L\'administrator dau sist&egrave;ma o de la ret vos deu poer fornir
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptatz que de redactors nov&egrave;ls s\'inscrivan
  a partir dau sit public? Se o acceptatz, los vesitaires se poir&agrave;n inscriure
  gr&agrave;cias a un formulari automatizat e doncas accedir&agrave;n a l\'espaci privat per
- prepausar d\'articles.<blockquote><i> Durant la fasa d\'inscripcion, los utilizaires recebon un e-mail automatic
+ prepausar d\'articles.<blockquote><div><i> Durant la fasa d\'inscripcion, los utilizaires recebon un e-mail automatic
  que lor baila un c&ograve;de d\'acc&egrave;s v&egrave;rs lo sit privat.
 Quauques auberjaors autorizan pas l\'enviament d\'e-mails dempuei lors serviors: en aqueu cas, l\'inscripcion automatica es
- impossibla.', # MODIF
+ impossibla.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Desiratz d\'utilizar los mots clau sobre v&ograve;stre sit?',
 'info_question_proposer_site' => 'Cu p&ograve;t prepausar de sits referenciats?',
 'info_question_utilisation_moteur_recherche' => 'Desiratz d\'utilizar lo cerchaor integrat a SPIP? (lo desactivar abriva lo foncionament dau sist&egrave;ma.)',
@@ -1110,9 +1110,9 @@ s\'av&egrave;tz bravament modificat lo grafisme o l\'estructura dau sit.',
 'texte_sur_titre' => 'Sobret&iacute;tol',
 'texte_syndication' => 'Se p&ograve;t recuperar automaticament, quand un sit web o permet, 
   la tiera de sas novetats. Per aqu&ograve; far, vos chau activar la sindicacion. 
-  <blockquote><i>Quauques auberjaors activan pas aquela foncionalitat; 
+  <blockquote><div><i>Quauques auberjaors activan pas aquela foncionalitat; 
   en aqueu cas, poiretz pas utilizar la sindicacion de contengut
-  dempuei v&ograve;stre sit.</i></blockquote>', # MODIF
+  dempuei v&ograve;stre sit.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': aquesta taula es condrecha.',
 'texte_tables_indexation_vides' => 'Las taulas d\'indexacion dau motor son voidas.',
 'texte_tentative_recuperation' => 'Assai de reparacion',
index 8517ead..73a48c5 100644 (file)
@@ -556,12 +556,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_inscription_nouveaux_redacteurs' => 'Czy akceptujesz mo&#380;liwo&#347;&#263; dodawania nowych redaktor&oacute;w
   za po&#347;rednictwem stron publicznych&nbsp;? Je&#347;li tak, odwiedz&#261;cy b&#281;d&#281; mogli si&#281; zapisa&#263;
   za pomoc&#261; zautomatyzowanego formularza i b&#281;d&#261; mieli dost&#281;p do strefy prywatnej, gdzie
-  b&#281;d&#261; proponowa&#263; w&#322;asne artyku&#322;y. <blockquote><i>W trakcie procesu zapisywania,
+  b&#281;d&#261; proponowa&#263; w&#322;asne artyku&#322;y. <blockquote><div><i>W trakcie procesu zapisywania,
   u&#380;ytkownik otrzyma automatycznie mailem
   has&#322;a dost&#281;pu do strefy prywatnej. Niekt&oacute;re serwisy hostingowe
   wy&#322;&#261;czaj&#261; mo&#380;liwo&#347;&#263; wysy&#322;ania maili z ich
   serwer&oacute;w&nbsp;: w tym przypadku automatyczne zapisanie si&#281; jest
-  niemo&#380;liwe.', # MODIF
+  niemo&#380;liwe.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Czy na Twojej stronie maj&#261; by&#263; stosowane s&#322;owa kluczowe?',
 'info_question_proposer_site' => 'Kto mo&#380;e proponowa&#263; zlinkowane strony&nbsp;?',
 'info_question_utilisation_moteur_recherche' => 'Czy &#380;yczysz sobie skorzysta&#263; z wyszukiwarki wewn&#281;trznej SPIP&nbsp;?
@@ -1119,8 +1119,8 @@ od&#347;wie&#380;y&#263; tylko jedn&#261; stron&#281;, zr&oacute;b to z obszaru
 'texte_sur_titre' => 'Nadtytu&#322;',
 'texte_syndication' => 'Je&#347;li dany serwis na to pozwala, jest mo&#380;liwo&#347;&#263; wyci&#261;gni&#281;cia z niego 
   listy news&oacute;w. Aby skorzysta&#263; z tej funkcji musisz w&#322;&#261;czy&#263; <i>syndykacj&#281; ?</i>. 
-  <blockquote><i>Niekt&oacute;re serwery maj&#261; tak&#261; mo&#380;liwo&#347;&#263; wy&#322;&#261;czon&#261;&nbsp;; 
-  w&oacute;wczas nie mo&#380;esz u&#380;ywa&#263; syndykacji przy u&#380;yciu swojej strony.</i></blockquote>', # MODIF
+  <blockquote><div><i>Niekt&oacute;re serwery maj&#261; tak&#261; mo&#380;liwo&#347;&#263; wy&#322;&#261;czon&#261;&nbsp;; 
+  w&oacute;wczas nie mo&#380;esz u&#380;ywa&#263; syndykacji przy u&#380;yciu swojej strony.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': ta tabela dzia&#322;a poprawnie.',
 'texte_tables_indexation_vides' => 'Tabele indeksowania wyszukiwarki s&#261; puste.',
 'texte_tentative_recuperation' => 'Pr&oacute;ba naprawy',
index 8700fc6..da87cb5 100644 (file)
@@ -557,12 +557,12 @@ a base de dados &agrave; nova vers&atilde;o de SPIP.',
 'info_question_inscription_nouveaux_redacteurs' => 'Aceita as inscri&ccedil;&otilde;es de novos redactores a
  partir do s&iacute;tio p&uacute;blico&nbsp;? Se aceitar, os visitantes poder&atilde;o inscrever-se
  a partir de um formul&aacute;rio automatizado e aceder&atilde;o ent&atilde;o ao espa&ccedil;o privado para
-propor os seus pr&oacute;prios artigos. <blockquote><i>Durante a fase de inscri&ccedil;&atilde;o,
+propor os seus pr&oacute;prios artigos. <blockquote><div><i>Durante a fase de inscri&ccedil;&atilde;o,
  os utilizadores recebem um correio electr&oacute;nico autom&aacute;tico
 fornecendo-lhes os seus c&oacute;digos de acesso ao s&iacute;tio privado.Alguns
 servi&ccedil;os de hospedagem desactivam o envio de mails a partir dos seus
  servidores&nbsp;: nesse caso, a inscri&ccedil;&atilde;o autom&aacute;tica &eacute;
- imposs&iacute;vel.', # MODIF
+ imposs&iacute;vel.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Deseja utilizar as palavras-chave no seu s&iacute;tio&nbsp;?',
 'info_question_proposer_site' => 'Quem pode propor s&iacute;tios referenciados&nbsp;?',
 'info_question_utilisation_moteur_recherche' => 'Deseja utilizar o motor integrado de pesquisa a SPIP&nbsp;?
@@ -1127,9 +1127,9 @@ na cache SPIP. Isso permite, por exemplo, obrigar uma recomposi&ccedil;&atilde;o
 'texte_sur_titre' => 'Supra-t&iacute;tulo',
 'texte_syndication' => '&Eacute; poss&iacute;vel recuperar automaticamente, quando um s&iacute;tio Web o permitir, 
  a lista das suas novidades. Para tal, deve activar a vincula&ccedil;&atilde;o. 
-  <blockquote><i>Alguns servi&ccedil;os de hospedagem desactivam esta funcionalidade&nbsp;; 
+  <blockquote><div><i>Alguns servi&ccedil;os de hospedagem desactivam esta funcionalidade&nbsp;; 
  neste caso, n&atilde;o poder&aacute; utilizar a vincula&ccedil;&atilde;o de conte&uacute;do
-a partir do seu s&iacute;tio.</i></blockquote>', # MODIF
+a partir do seu s&iacute;tio.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': esta tabela est&aacute; OK.',
 'texte_tables_indexation_vides' => 'As tabelas de indexa&ccedil;&atilde;o do motor est&atilde;o vazias.',
 'texte_tentative_recuperation' => 'Tentativa de repara&ccedil;&atilde;o',
index 44006d1..9967386 100644 (file)
@@ -518,7 +518,7 @@ Os idiomas j&aacute; utilizados no site (no topo da lista) n&atilde;o podem ser
 'info_question_activer_compactage_js' => 'Voc&ecirc; deseja ativar a compacta&ccedil;&atilde;o dos scripts (javascript)?',
 'info_question_activer_compresseur' => 'Voc&ecirc; deseja ativar a compress&atilde;o do fluxo HTTP?',
 'info_question_gerer_statistiques' => 'O seu site deve gerenciar as estat&iacute;sticas de visitas?',
-'info_question_inscription_nouveaux_redacteurs' => 'Voc&ecirc; quer aceitar inscri&ccedil;&otilde;es de novos redatores a partir do site p&uacute;blico? Se voc&ecirc; aceitar, os visitantes poder&atilde;o se cadastrar atrav&eacute;s de um formul&aacute;rio automatizado, tendo acesso &agrave; &aacute;rea privada para prop&ocirc;r as suas pr&oacute;prias mat&eacute;rias.<blockquote><i>Durante a fase de inscri&ccedil;&atilde;o, os usu&aacute;rios recebem um e-mail autom&aacute;tico. fornecendo-lhes os seus c&oacute;digos de acesso &agrave; &aacute;rea privada. Alguns servi&ccedil;os de hospedagem desativam o envio de e-mails a partir dos seus servidores: nesse caso, a inscri&ccedil;&atilde;o autom&aacute;tica &eacute; imposs&iacute;vel.</i></blockquote>',
+'info_question_inscription_nouveaux_redacteurs' => 'Voc&ecirc; quer aceitar inscri&ccedil;&otilde;es de novos redatores a partir do site p&uacute;blico? Se voc&ecirc; aceitar, os visitantes poder&atilde;o se cadastrar atrav&eacute;s de um formul&aacute;rio automatizado, tendo acesso &agrave; &aacute;rea privada para prop&ocirc;r as suas pr&oacute;prias mat&eacute;rias.<blockquote><div><i>Durante a fase de inscri&ccedil;&atilde;o, os usu&aacute;rios recebem um e-mail autom&aacute;tico. fornecendo-lhes os seus c&oacute;digos de acesso &agrave; &aacute;rea privada. Alguns servi&ccedil;os de hospedagem desativam o envio de e-mails a partir dos seus servidores: nesse caso, a inscri&ccedil;&atilde;o autom&aacute;tica &eacute; imposs&iacute;vel.</i></div></blockquote>',
 'info_question_mots_cles' => 'Deseja utilizar palavras-chave no seu site?',
 'info_question_proposer_site' => 'Quem pode prop&ocirc;r os sites referenciados?',
 'info_question_utilisation_moteur_recherche' => 'Voc&ecirc; deseja usar o motor de busca integrado ao SPIP? (desativ&aacute;-lo acelera o funcionamento do sistema.)',
@@ -1018,8 +1018,8 @@ Seja cuidadoso com esta funcionalidade: <b>as perdas eventuais causadas pela mod
 'texte_suppression_fichiers' => 'Use este comando para excluir todos os arquivos que constam do cache do SPIP. Isto permite, por exemplo, for&ccedil;ar a reconstru&ccedil;&atilde;o de todas as p&aacute;ginas, caso voc&ecirc; tenha feito altera&ccedil;&otilde;es importantes no layout ou na estrutura do site.',
 'texte_sur_titre' => 'Sobret&iacute;tulo',
 'texte_syndication' => '&Eacute; poss&iacute;vel recuperar automaticamente, desde que o site o permita, a lista das suas novidades. Para isso, voc&ecirc; dever&aacute; ativar a sindica&ccedil;&atilde;o.
-  <blockquote><i>Alguns servi&ccedil;os de hospedagem desativam esta funcionalidade;
-neste caso, voc&ecirc; n&atilde;o poder&aacute; usar a sindica&ccedil;&atilde;o de conte&uacute;do no seu site.</i></blockquote>',
+  <blockquote><div><i>Alguns servi&ccedil;os de hospedagem desativam esta funcionalidade;
+neste caso, voc&ecirc; n&atilde;o poder&aacute; usar a sindica&ccedil;&atilde;o de conte&uacute;do no seu site.</i></div></blockquote>',
 'texte_table_ok' => ': esta tabela est&aacute; OK.',
 'texte_tables_indexation_vides' => 'As tabelas de indexa&ccedil;&atilde;o do motor de busca est&atilde;o vazias.',
 'texte_tentative_recuperation' => 'Tentativa de repara&ccedil;&atilde;o',
index 8370e75..0fcf7d7 100644 (file)
@@ -534,12 +534,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_inscription_nouveaux_redacteurs' => 'Accepta&#355;i &icirc;nscrierea de noi redactori
   &icirc;n partea public&#259; a site-ului&nbsp;? Dac&#259; accepta&#355;i, vizitatorii vor putea s&#259; se &icirc;nscrie
   cu ajutorul unui formular automatizat &#351;i vor putea avea acces la spa&#355;iul privat pentru a propune
-  propriile lor articole. <blockquote><i>Ca urmare a procesului de &icirc;nscriere,
+  propriile lor articole. <blockquote><div><i>Ca urmare a procesului de &icirc;nscriere,
   utilizatorii vor primi un email automatic
   care le va furniza codurile de acces la site-ul privat. Anumi&#355;i
   furnizori de hosting dezactiveaz&#259; trimiterea de email-uri de pe
   server-ele lor&nbsp;: &icirc;n acest caz &icirc;nscrierea automatic&#259; este
-  imposibil&#259;.', # MODIF
+  imposibil&#259;.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Dori&#355;i s&#259; utiliza&#355;i cuvintele-cheie pe site-ul dumneavoastr&#259;&nbsp;?',
 'info_question_proposer_site' => 'Cine poate propune site-uri referen&#355;iate&nbsp;?',
 'info_question_utilisation_moteur_recherche' => 'Dori&#355;i s&#259; utiliza&#355;i motorul de c&#259;utare integrat &icirc;n SPIP&nbsp;?
@@ -1079,8 +1079,8 @@ avez fait des modifications importantes de graphisme ou de structure du site.',
 'texte_sur_titre' => 'Supra-titlu',
 'texte_syndication' => 'Este posibil&#259; recuperarea &icirc;m mod automat, pentru site-urile de Web care o permit, 
   a listei nout&#259;&#355;ilor lor. Pentru aceasta trebuie s&#259; activa&#355;i sindicalizarea. 
-  <blockquote><i>Anumi&#355;i furnizori dezactiveaz&#259; aceast&#259; func&#355;ionalitate&nbsp;;
-  &icirc;n acest caz, nu ve&#355;i putea folosi sindicalizarea con&#355;inutului &icirc;n site-ul dumneavoastr&#259;.</i></blockquote>',
+  <blockquote><div><i>Anumi&#355;i furnizori dezactiveaz&#259; aceast&#259; func&#355;ionalitate&nbsp;;
+  &icirc;n acest caz, nu ve&#355;i putea folosi sindicalizarea con&#355;inutului &icirc;n site-ul dumneavoastr&#259;.</i></div></blockquote>',
 'texte_table_ok' => ': aceast&#259; tabel&#259; este OK.',
 'texte_tables_indexation_vides' => 'Tabelele de indexare ale motorului sunt goale.',
 'texte_tentative_recuperation' => 'Tentativ&#259; de recuperare',
index b615f2f..18bec25 100644 (file)
@@ -558,7 +558,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
   &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1077; &#1076;&#1072;&#1077;&#1090; &#1080;&#1084; &#1082;&#1086;&#1076; &#1076;&#1086;&#1089;&#1090;&#1091;&#1087;&#1072; &#1082; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1080;&#1074;&#1085;&#1086;&#1081; &#1095;&#1072;&#1089;&#1090;&#1080;. &#1053;&#1077;&#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; 
 &#1087;&#1086;&#1089;&#1090;&#1072;&#1074;&#1097;&#1080;&#1082;&#1080; &#1091;&#1089;&#1083;&#1091;&#1075; &#1086;&#1090;&#1082;&#1083;&#1102;&#1095;&#1072;&#1102;&#1090; &#1086;&#1090;&#1087;&#1088;&#1072;&#1074;&#1082;&#1091; &#1087;&#1086;&#1095;&#1090;&#1099; &#1089;&#1086; &#1089;&#1074;&#1086;&#1080;&#1093; 
   &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1086;&#1074;: &#1074; &#1101;&#1090;&#1086;&#1084; &#1089;&#1083;&#1091;&#1095;&#1072;&#1077;, &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1072;&#1103; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077;&#1090; &#1073;&#1099;&#1090;&#1100; 
-  &#1074;&#1099;&#1087;&#1086;&#1083;&#1085;&#1077;&#1085;&#1072;.', # MODIF
+  &#1074;&#1099;&#1087;&#1086;&#1083;&#1085;&#1077;&#1085;&#1072;.</i></blockquote>', # MODIF
 'info_question_mots_cles' => '&#1061;&#1086;&#1090;&#1080;&#1090;&#1077; &#1083;&#1080; &#1042;&#1099; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1085;&#1072; &#1042;&#1072;&#1096;&#1077;&#1084; &#1089;&#1072;&#1081;&#1090;&#1077; &#1082;&#1083;&#1102;&#1095;&#1077;&#1074;&#1099;&#1077; &#1089;&#1083;&#1086;&#1074;&#1072;?',
 'info_question_proposer_site' => '&#1050;&#1090;&#1086; &#1084;&#1086;&#1078;&#1077;&#1090; &#1087;&#1088;&#1077;&#1076;&#1083;&#1086;&#1078;&#1080;&#1090;&#1100; &#1089;&#1089;&#1099;&#1083;&#1086;&#1095;&#1085;&#1099;&#1077; &#1089;&#1072;&#1081;&#1090;&#1099;?',
 'info_question_utilisation_moteur_recherche' => '&#1061;&#1086;&#1090;&#1080;&#1090;&#1077; &#1083;&#1080; &#1042;&#1099; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1087;&#1086;&#1080;&#1089;&#1082;&#1086;&#1074;&#1091;&#1102; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1091;, &#1080;&#1085;&#1090;&#1077;&#1075;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1085;&#1091;&#1102; &#1074; SPIP?
index def8f73..881b829 100644 (file)
@@ -548,12 +548,12 @@ funktioner hos SPIP inte anv&auml;ndas.',
 'info_question_inscription_nouveaux_redacteurs' => 'Acceptez-vous les inscriptions de nouveaux r&eacute;dacteurs &agrave;
   partir du site public&nbsp;? Si vous acceptez, les visiteurs pourront s\'inscrire
   depuis un formulaire automatis&eacute; et acc&eacute;deront alors &agrave; l\'espace priv&eacute; pour
-  proposer leurs propres articles. <blockquote><i>Lors de la phase d\'inscription,
+  proposer leurs propres articles. <blockquote><div><i>Lors de la phase d\'inscription,
   les utilisateurs re&ccedil;oivent un courrier &eacute;lectronique automatique
   leur fournissant leurs codes d\'acc&egrave;s au site priv&eacute;. Certains
   h&eacute;bergeurs d&eacute;sactivent l\'envoi de mails depuis leurs
   serveurs&nbsp;: dans ce cas, l\'inscription automatique est
-  impossible.', # MODIF
+  impossible.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Vill du anv&auml;nsda nyckelord i din sajt?',
 'info_question_proposer_site' => 'Vem kan f&ouml;resl&aring; l&auml;nkar till sajter?',
 'info_question_utilisation_moteur_recherche' => 'Vill du anv&auml;nda SPIP&#381;s integrerade s&ouml;kfunktion?
@@ -1117,9 +1117,9 @@ gjort viktiga f&ouml;r&auml;ndringar i sajtens utseende eller struktur.',
 'texte_sur_titre' => '&Ouml;vertitel',
 'texte_syndication' => 'If a site allows it, it is possible to retrieve automatically
                the list of its latest material. To achieve this, you must activate the syndication. 
-               <blockquote><i>Some hosts disable this function; 
+               <blockquote><div><i>Some hosts disable this function; 
                in this case, you cannot use the content syndication
-               from your site.</i></blockquote>', # MODIF
+               from your site.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': den h&auml;r tabellen &auml;r OK.',
 'texte_tables_indexation_vides' => 'Indextabellerna &auml;r tomma.',
 'texte_tentative_recuperation' => 'Reparationsf&ouml;rs&ouml;k',
index 42f734a..1471fe9 100644 (file)
@@ -544,9 +544,9 @@ yaratabilir. Bu da otomatik olarak bir galeri
     E&#287;er kabul ediyorsan&#305;z, ziyaret&ccedil;iler otomatik
     bir form ile kaydolabilecek ve kendi makalelerini
     &ouml;nermek &uuml;zere &ouml;zel alana eri&#351;eceklerdir. 
-<blockquote><i>Kay&#305;t a&#351;amas&#305;nda,    kullan&#305;c&#305;lara,  &ouml;zel siteye eri&#351;im &#351;ifresi veren bir otomatik
+<blockquote><div><i>Kay&#305;t a&#351;amas&#305;nda,    kullan&#305;c&#305;lara,  &ouml;zel siteye eri&#351;im &#351;ifresi veren bir otomatik
     e-posta g&ouml;nderilir. Baz&#305; Hizmet bilgisayarlar&#305; kendi sunucular&#305;ndan
-    e-posta yollanmas&#305;n&#305; durduruyorlar&nbsp;: bu durumda otomatik kay&#305;t olanaks&#305;zd&#305;r.', # MODIF
+    e-posta yollanmas&#305;n&#305; durduruyorlar&nbsp;: bu durumda otomatik kay&#305;t olanaks&#305;zd&#305;r.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'Sitenizde anahtar s&ouml;zc&uuml;k kullanmak istiyor musunuz ?',
 'info_question_proposer_site' => 'Kim at&#305;fta bulunulan siteler &ouml;nerebilir ?',
 'info_question_utilisation_moteur_recherche' => 'SPIP\'in entegre arama motorunu kullanmak istiyor musunuz ?
index 9c0fe90..5cbba55 100644 (file)
@@ -518,7 +518,7 @@ H&#7891; s&#417; SPIP</a>.', # MODIF
 'info_question_activer_compactage_js' => 'Souhaitez-vous activer le compactage des scripts (javascript) ?', # NEW
 'info_question_activer_compresseur' => 'Voulez-vous activer la compression du flux HTTP ?', # NEW
 'info_question_gerer_statistiques' => 'C&oacute; mu&#7889;n qu&#7843;n tr&#7883; c&aacute;c con s&#7889; th&#7889;ng k&ecirc;?',
-'info_question_inscription_nouveaux_redacteurs' => 'B&#7841;n c&oacute; cho ph&eacute;p ghi danh c&aacute;c ch&#7911; b&uacute;t m&#7899;i t&#7915; website c&ocirc;ng c&#7897;ng kh&ocirc;ng? N&#7871;u &#273;&#7891;ng &yacute;, kh&aacute;ch c&oacute; th&#7875; ghi danh qua m&#7897;t m&#7851;u t&#7921; &#273;&#7897;ng, v&agrave; s&#7869; &#273;&#432;&#7907;c ph&eacute;p v&agrave;o v&ugrave;ng ri&ecirc;ng c&#7911;a h&#7885; &#273;&#7875; so&#7841;n b&agrave;i. <blockquote><i>Trong qu&aacute; tr&igrave;nh ghi danh, ng&#432;&#7901;i d&ugrave;ng s&#7869; nh&#7853;n &#273;&#432;&#7907;c email cho bi&#7871;t login/m&#7853;t m&atilde; v&agrave;o ch&#7895; ri&ecirc;ng c&#7911;a h&#7885;. M&#7897;t s&#7889; m&aacute;y ch&#7911; t&#7855;t &#273;&#7863;c &#273;i&#7875;m n&agrave;y: trong tr&#432;&#7901;ng h&#7907;p &#273;&oacute;, ghi danh t&#7921; &#273;&#7897;ng kh&ocirc;ng d&ugrave;ng &#273;&#432;&#7907;c.</i>', # MODIF
+'info_question_inscription_nouveaux_redacteurs' => 'B&#7841;n c&oacute; cho ph&eacute;p ghi danh c&aacute;c ch&#7911; b&uacute;t m&#7899;i t&#7915; website c&ocirc;ng c&#7897;ng kh&ocirc;ng? N&#7871;u &#273;&#7891;ng &yacute;, kh&aacute;ch c&oacute; th&#7875; ghi danh qua m&#7897;t m&#7851;u t&#7921; &#273;&#7897;ng, v&agrave; s&#7869; &#273;&#432;&#7907;c ph&eacute;p v&agrave;o v&ugrave;ng ri&ecirc;ng c&#7911;a h&#7885; &#273;&#7875; so&#7841;n b&agrave;i. <blockquote><div><i>Trong qu&aacute; tr&igrave;nh ghi danh, ng&#432;&#7901;i d&ugrave;ng s&#7869; nh&#7853;n &#273;&#432;&#7907;c email cho bi&#7871;t login/m&#7853;t m&atilde; v&agrave;o ch&#7895; ri&ecirc;ng c&#7911;a h&#7885;. M&#7897;t s&#7889; m&aacute;y ch&#7911; t&#7855;t &#273;&#7863;c &#273;i&#7875;m n&agrave;y: trong tr&#432;&#7901;ng h&#7907;p &#273;&oacute;, ghi danh t&#7921; &#273;&#7897;ng kh&ocirc;ng d&ugrave;ng &#273;&#432;&#7907;c.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => 'B&#7841;n c&#243; mu&#7889;n d&#249;ng t&#7915; then ch&#7889;t trong website? ',
 'info_question_proposer_site' => 'Ai c&oacute; quy&#7873;n &#273;&#7873; ngh&#7883; c&aacute;c website n&#7889;i k&#7871;t?',
 'info_question_utilisation_moteur_recherche' => 'B&#7841;n c&oacute; mu&#7889;n d&ugrave;ng c&#417; ph&#7853;n t&igrave;m ki&#7871;m c&oacute; s&#7861;n c&#7911;a SPIP? (<i>N&#7871;u t&#7855;t n&oacute; &#273;i s&#7869; l&agrave;m h&#7879; th&#7889;ng ch&#7841;y l&#7865; h&#417;n</i>) ',
@@ -1029,7 +1029,7 @@ demande plus de puissance au serveur.', # NEW
 'texte_statut_refuses' => 'b&#7883; t&#7915; ch&#7889;i',
 'texte_suppression_fichiers' => 'D&ugrave;ng m&#7879;nh l&#7879;nh n&agrave;y &#273;&#7875; x&oacute;a t&#7845;t c&#7843; h&#7891; s&#417; trong SPIP cache. L&agrave;m v&#7853;y &#273;&#7875; bu&#7897;c l&agrave;m m&#7899;i l&#7841;i m&#7885;i trang web, trong tr&#432;&#7901;ng h&#7907;p b&#7841;n v&#7915;a c&oacute; m&#7897;t s&#7889; thay &#273;&#7893;i v&#7873; &#273;&#7891; h&#7885;a hay c&#7845;u tr&uacute;c c&#7911;a website.',
 'texte_sur_titre' => '&#272;&#7847;u &#273;&#7873;',
-'texte_syndication' => 'N&#7871;u website cho ph&#233;p, b&#7841;n c&#243; th&#7875; truy t&#236;m t&#7921; &#273;&#7897;ng danh s&#225;ch c&#225;c d&#7919; li&#7879;u m&#7899;i nh&#7845;t. &#272;&#7875; l&#224;m chuy&#7879;n n&#224;y, b&#7841;n ph&#7843;i m&#7903; &#273;&#7863;c &#273;i&#7875;m syndication l&#234;n. <blockquote><i>M&#7897;t s&#7889; m&#225;y kh&#244;ng cho ph&#233;p d&#249;ng ch&#7913;c n&#259;ng n&#224;y, trong tr&#432;&#7901;ng h&#7907;p &#273;&#243;, b&#7841;n kh&#244;ng d&#249;ng &#273;&#7863;c &#273;i&#7875;m syndication t&#7915; website c&#7911;a b&#7841;n &#273;&#432;&#7907;c.</i></blockquote>', # MODIF
+'texte_syndication' => 'N&#7871;u website cho ph&#233;p, b&#7841;n c&#243; th&#7875; truy t&#236;m t&#7921; &#273;&#7897;ng danh s&#225;ch c&#225;c d&#7919; li&#7879;u m&#7899;i nh&#7845;t. &#272;&#7875; l&#224;m chuy&#7879;n n&#224;y, b&#7841;n ph&#7843;i m&#7903; &#273;&#7863;c &#273;i&#7875;m syndication l&#234;n. <blockquote><div><i>M&#7897;t s&#7889; m&#225;y kh&#244;ng cho ph&#233;p d&#249;ng ch&#7913;c n&#259;ng n&#224;y, trong tr&#432;&#7901;ng h&#7907;p &#273;&#243;, b&#7841;n kh&#244;ng d&#249;ng &#273;&#7863;c &#273;i&#7875;m syndication t&#7915; website c&#7911;a b&#7841;n &#273;&#432;&#7907;c.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': b&#7843;n n&#224;y OK.',
 'texte_tables_indexation_vides' => 'B&#7843;n indexing c&#7911;a m&#225;y tr&#7889;ng r&#7895;ng. ',
 'texte_tentative_recuperation' => 'T&#236;m c&#225;ch s&#7917;a ch&#7919;a',
index 0b53a09..b1d0302 100644 (file)
@@ -553,12 +553,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'info_question_inscription_nouveaux_redacteurs' => '&#20320;&#20801;&#35768;&#26032;&#32534;&#36753;&#20174;&#20844;&#20849;&#31449;&#28857;&#27880;&#20876;&#21527;?
   &#22914;&#26524;&#20320;&#24895;&#24847;, &#35775;&#38382;&#23558;&#36890;&#36807;&#33258;&#21160;&#34920;&#21333;&#27880;&#20876;
   , &#23558;&#33021;&#35775;&#38382;&#31169;&#26377;&#21306;&#32500;&#25252;&#25991;&#31456;
-  . <blockquote><i>&#20809;&#27880;&#20876;&#36807;&#31243;&#20013;,
+  . <blockquote><div><i>&#20809;&#27880;&#20876;&#36807;&#31243;&#20013;,
   &#29992;&#25143;&#20351;&#29992;&#33258;&#21160;&#30005;&#23376;&#37038;&#20214;&#25552;&#20379;&#30340;&#35775;&#38382;&#30721;&#35775;&#38382;&#31169;&#26377;&#31449;&#28857;.
   . &#19968;&#20123;&#20027;&#26426;&#20351;&#33258;&#21160;&#21457;&#36865;&#19981;&#21487;&#29992;,
   &#36825;&#26679;,
   &#33258;&#21160;&#27880;&#20876;&#23558;
-  &#19981;&#29983;&#25928;.', # MODIF
+  &#19981;&#29983;&#25928;.</i></div></blockquote>', # MODIF
 'info_question_mots_cles' => '&#20320;&#24076;&#26395;&#31449;&#28857;&#20351;&#29992;&#20851;&#38190;&#35789;&#21527;?',
 'info_question_proposer_site' => '&#35841;&#33021;&#25552;&#20986;&#24341;&#29992;&#31449;&#28857;?',
 'info_question_utilisation_moteur_recherche' => '&#20320;&#24076;&#26395;SPIP&#38598;&#25104;&#25628;&#32034;&#24341;&#25806;&#21527;?
@@ -1138,9 +1138,9 @@ demande plus de puissance au serveur.', # NEW
 'texte_sur_titre' => '&#39030;&#26631;&#39064;',
 'texte_syndication' => '&#22914;&#26524;&#31449;&#28857;&#20801;&#35768;, &#21487;&#20197;&#33258;&#21160;&#24471;&#21040;&#26368;&#26032;&#30340;&#32032;&#26448;
   . &#35201;&#36825;&#26679;&#30340;&#35805;, &#20320;&#24517;&#39035;&#28608;&#27963;&#32852;&#21512;. 
-  <blockquote><i>&#19968;&#20123;&#20027;&#26426;&#31105;&#29992;&#36825;&#20010;&#21151;&#33021;; 
+  <blockquote><div><i>&#19968;&#20123;&#20027;&#26426;&#31105;&#29992;&#36825;&#20010;&#21151;&#33021;; 
   &#36825;&#31181;&#24773;&#20917;&#19979;, &#20320;&#19981;&#33021;&#20351;&#29992;
-  &#20320;&#31449;&#28857;&#30340;&#20869;&#23481;&#32852;&#21512;.</i></blockquote>', # MODIF
+  &#20320;&#31449;&#28857;&#30340;&#20869;&#23481;&#32852;&#21512;.</i></div></blockquote>', # MODIF
 'texte_table_ok' => ': &#34920;&#22909;&#20102;.',
 'texte_tables_indexation_vides' => '&#24341;&#25806;&#30340;&#32034;&#24341;&#34920;&#20026;&#31354;.',
 'texte_tentative_recuperation' => '&#35797;&#22270;&#20462;&#22797;',
old mode 100644 (file)
new mode 100755 (executable)
index 640e7e8..c7445bc 100644 (file)
@@ -759,6 +759,7 @@ et vous reconnecter au site.
 'titre_image_auteur_supprime' => 'Auteur supprim&eacute;',
 'titre_image_redacteur' => 'R&eacute;dacteur sans acc&egrave;s',
 'titre_image_redacteur_02' => 'R&eacute;dacteur',
+'titre_image_selecteur' => 'Afficher la liste',
 'titre_image_visiteur' => 'Visiteur',
 'titre_joindre_document' => 'JOINDRE UN DOCUMENT',
 'titre_liens_entrants' => 'Liens entrants',
index 023bfb7..4acedb8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -245,4 +245,10 @@ $GLOBALS['maj'][15827] = array(array('upgrade_types_documents'));
 // IP en 40 caracteres pour IP v6
 $GLOBALS['maj'][15828] = array(array('sql_alter',"TABLE spip_forum CHANGE `ip` `ip` VARCHAR(40) DEFAULT '' NOT NULL"));
 
+// Type de fichiers : epub r18946 renumerote
+$GLOBALS['maj'][15829] = array(array('upgrade_types_documents'));
+
+// Type de fichiers : voir r19856 (version hors tronc: numerotation derogatoire)
+$GLOBALS['maj'][15830] = array(array('upgrade_types_documents'));
+
 ?>
index 820b864..6da03a4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 1a6ae09..d6e78cd 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9fa3147..a732516 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 78dfbc3..863eebf 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 06a7409..822f27f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 764d0b4..6ad8b98 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8e3dd4d..c141afa 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 07b2ec3..7cd11c0 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cc36575..c447266 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0bb252f..baf99d5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 479cc94..ad59906 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index caee032..bad0d5f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 34cd810..4d850ad 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2dff60a..e04cd1d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3b4a48f..601fae4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index dcbd35a..8284775 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8882c27..e1c8667 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 53779f2..61aa3f4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 8ad9f40..3769abb 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b50dd43..da1a8b9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index d5e89b1..da083b4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 762a797..b4482f8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 511350c..c19f163 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f73f0e8..88b5bd0 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 506ad53..f24db1b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 895ad80..12877ea 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index d5f1757..e6c6390 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9da5bfa..326c33d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6832080..de95aec 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2a35d89..bddde45 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a99b69b..ce059e5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 857ed59..0809f61 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7119a6c..3e24762 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e226363..471405d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b0c1873..633f4ad 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 857ed59..0809f61 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 26b0e17..4850e60 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4bc89dc..4f25876 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 12484ea..ab872a5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 68c1ac0..1ad362b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 66aa3a4..65e6ded 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index af93c72..2ae396d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6865659..7474318 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 280e882..4af22d6 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index e12d3a3..b3af6d0 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0f14a84..2f2df2e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3623ed0..d3bdef7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -70,7 +70,7 @@ function plugins_afficher_repertoires_dist($url_page, $liste_plugins, $liste_plu
 // une fonction pour aider...
 // http://doc.spip.org/@chemin_plug
 function chemin_plug($racine, $plug) {
-       return preg_replace(',[^/]+/[.][.]/,', '', "$racine/$plug");
+       return preg_replace(',[^/]+/\.\./,', '', "$racine/$plug");
 }
 
 // http://doc.spip.org/@tree_open_close_dir
index 016dfe4..709efa7 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4747526..aef46b1 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 90df70a..9a62c8d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -41,7 +41,7 @@ function plugins_get_infos_dist($plug, $force_reload=false, $dir_plugins = _DIR_
        $desc = "$dir_plugins$plug/$filename";
        if (!file_exists($desc))
                return false;
-       $time = intval(@filemtime($desc));
+       $time = intval(filemtime($desc));
 
        if (!$force_reload
        AND ($time > 0)
index 15e66c4..428aa39 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 07bdf9f..168ec25 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5deb451..0653d16 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -122,7 +122,7 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
        $debug = ((_request('var_mode') == 'debug') OR $tableau_des_temps) ? array(1) : array();
 
        // Mettre le Content-Type Html si manquant 
-       // Idem si debug, avec retrait du Content-Diposition pour voir le voir
+       // Idem si debug, avec retrait du Content-Disposition pour voir le voir
 
        if ($debug OR !isset($page['entetes']['Content-Type'])) {
                $page['entetes']['Content-Type'] = 
@@ -133,26 +133,14 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
                $html = preg_match(',^\s*text/html,',$page['entetes']['Content-Type']);
        }
 
-       if ($var_preview AND $html) {
-               include_spip('inc/filtres'); // pour http_img_pack
-               $x = _T('previsualisation');
-               $x = http_img_pack('naviguer-site.png', $x) . '&nbsp;' . majuscules($x); 
-               $x = "<div class='spip-previsu'>$x</div>";
-               if (!$pos = strpos($page['texte'], '</body>'))
-                       $pos = strlen($page['texte']);
-               $page['texte'] = substr_replace($page['texte'], $x, $pos, 0);
-       }
-
-       $affiche_boutons_admin = ($html AND ((
-               isset($_COOKIE['spip_admin'])
-               AND !$flag_preserver
-                                  ) OR $debug));
+       $affiche_boutons_admin = ((!!$debug)
+               OR ($html AND isset($_COOKIE['spip_admin']) AND !$flag_preserver)
+               OR ($html AND ($_GET['var_mode']=='preview') AND !$flag_preserver)
+               );
 
        if ($affiche_boutons_admin)
                include_spip('balise/formulaire_admin');
 
-
-
        // decompte des visites, on peut forcer a oui ou non avec le header X-Spip-Visites
        // par defaut on ne compte que les pages en html (ce qui exclue les js,css et flux rss)
        $spip_compter_visites = $html?'oui':'non';
@@ -163,24 +151,17 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
 
        // Execution de la page calculee
 
-
        // traitements sur les entetes avant envoi
        // peut servir pour le plugin de stats
        $page['entetes'] = pipeline('affichage_entetes_final', $page['entetes']);
 
-
-       // 1. Cas d'une page contenant uniquement du HTML :
-       if ($page['process_ins'] == 'html') {
-               envoyer_entetes($page['entetes']);
-       }
-
-       // 2. Cas d'une page contenant du PHP :
+       if ($page['process_ins'] != 'html') {
+       // Cas d'une page contenant du PHP :
        // Attention cette partie eval() doit imperativement
        // etre declenchee dans l'espace des globales (donc pas
        // dans une fonction).
-       else {
-               // sinon, inclure_balise_dynamique nous enverra peut-etre
-               // quelques en-tetes de plus (voire qq envoyes directement)
+       // inclure_balise_dynamique nous enverra peut-etre
+       // quelques en-tetes de plus (voire qq envoyes directement)
 
                // restaurer l'etat des notes
                if (isset($page['notes']) AND $page['notes']){
@@ -189,21 +170,28 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
                }
                ob_start(); 
                xml_hack($page, true);
-               $res = eval('?' . '>' . $page['texte']);
+               $page['process_ins'] = eval('?' . '>' . $page['texte']);
                $page['texte'] = ob_get_contents(); 
                xml_hack($page);
                ob_end_clean();
+       }
 
-               envoyer_entetes($page['entetes']);
-               // en cas d'erreur lors du eval,
-               // la memoriser dans le tableau des erreurs
+       if ($var_preview
+       AND $var_preview = charger_fonction('previsualisation', 'public', true)) {
+               $page = $var_preview($page);
+               // Cette variable a ete calculee trop tot
+               // on laisse son calcul ci-dessus pour compatibilite
+               // bien que l'enlever a l'air sans incidence
+               $html = preg_match(',^\s*text/html,',$page['entetes']['Content-Type']);
+       }
+       envoyer_entetes($page['entetes']);
 
-               if ($res === false) {
+       // en cas d'erreur lors du eval,
+       // la memoriser dans le tableau des erreurs
+       if ($page['process_ins'] === false) {
                        $msg = array('zbug_erreur_execution_page');
                        erreur_squelette($msg);
-               }
        }
-
        //
        // Post-traitements
        //
index 8f215b5..a17ee28 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 873b790..3494274 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -112,6 +112,8 @@ function traiter_appels_inclusions_ajax(){
                        $page = recuperer_fond($fond,$contexte,array('trim'=>false));
                        $texte = $page;
                        if ($ancre = _request('var_ajax_ancre')){
+                               // pas n'importe quoi quand meme dans la variable !
+                               $ancre = str_replace(array('<','"',"'"),array('&lt;','&quot;',''),$ancre);
                                $texte = "<a href='#$ancre' name='ajax_ancre' style='display:none;'>anchor</a>".$texte;
                        }
                }
index c0c4fc4..5761a3d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -127,9 +127,13 @@ function assembler($fond, $connect='') {
                        // produire la page : peut mettre a jour $lastmodified
                        $produire_page = charger_fonction('produire_page','public');
                        $page = $produire_page($fond, $GLOBALS['contexte'], $use_cache, $chemin_cache, NULL, $page, $lastmodified, $connect);
-                       if ($page === '')
-                               erreur_squelette(_T('info_erreur_squelette2',
-                                       array('fichier'=>htmlspecialchars($fond).'.'._EXTENSION_SQUELETTES)));
+                       if ($page === '') {
+                               $erreur = _T('info_erreur_squelette2',
+                                       array('fichier'=>htmlspecialchars($fond).'.'._EXTENSION_SQUELETTES));
+                               erreur_squelette($erreur);
+                               // eviter des erreurs strictes ensuite sur $page['cle'] en PHP >= 5.4
+                               $page = array('texte' => '', 'erreur' => $erreur);
+                       }
                }
 
                if ($page AND $chemin_cache) $page['cache'] = $chemin_cache;
@@ -431,6 +435,7 @@ function f_insert_head($texte) {
 // Inserer au besoin les boutons admins
 // http://doc.spip.org/@f_admin
 function f_admin ($texte) {
+       if (!$GLOBALS['html']) return $texte;
        if ($GLOBALS['affiche_boutons_admin']) {
                include_spip('public/admin');
                $texte = affiche_boutons_admin($texte);
@@ -682,6 +687,19 @@ function page_base_href(&$texte){
        }
 }
 
+function public_previsualisation_dist($page)
+{
+       if (preg_match(',^\s*text/html,',$page['entetes']['Content-Type'])) {
+               include_spip('inc/filtres'); // pour http_img_pack
+               $x = _T('previsualisation');
+               $x = http_img_pack('naviguer-site.png', $x) . '&nbsp;' . majuscules($x); 
+               $x = "<div class='spip-previsu'>$x</div>";
+               if (!$pos = strpos($page['texte'], '</body>'))
+                       $pos = strlen($page['texte']);
+               $page['texte'] = substr_replace($page['texte'], $x, $pos, 0);
+       }
+       return $page;
+}
 
 // Envoyer les entetes, en retenant ceux qui sont a usage interne
 // et demarrent par X-Spip-...
@@ -689,7 +707,7 @@ function page_base_href(&$texte){
 function envoyer_entetes($entetes) {
        foreach ($entetes as $k => $v)
        #       if (strncmp($k, 'X-Spip-', 7))
-                       @header("$k: $v");
+                       @header(strlen($v)?"$k: $v":$k);
 }
 
 ?>
index 0d641d6..b7bee3d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -589,8 +589,8 @@ function balise_PARAMETRES_FORUM_dist($p) {
                ';
        // pas de calculs superflus si le site est monolingue
        $lang = strpos($GLOBALS['meta']['langues_utilisees'], ',');
-
-       switch ($p->type_requete) {
+       $idb = $p->id_boucle;
+       switch (!isset($p->boucles[$idb])? '' : $p->boucles[$idb]->type_requete) {
                case 'articles':
                        $c = '"id_article=".' . champ_sql('id_article', $p);
                        if ($lang) $lang = champ_sql('lang', $p);
index d3373c2..385dfb1 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -71,9 +71,12 @@ function boucle_AUTEURS_dist($id_boucle, &$boucles) {
                // uniquement les auteurs d'un article publie
                if (!$GLOBALS['var_preview'])
                if (!isset($boucle->modificateur['lien']) AND !isset($boucle->modificateur['tout'])) {
-                       fabrique_jointures($boucle, array(
-                               array($id_table, array('spip_auteurs_articles'), 'id_auteur'),
-                                                         array('', array('spip_articles'), 'id_article')), true, $boucle->show, $id_table);
+                       $trouver_table = charger_fonction('trouver_table', 'base');
+                       $def = $trouver_table('spip_auteurs_articles');
+                       $def = array('spip_auteurs_articles', $def);
+                       $def = array($id_table, $def, 'id_auteur');
+                       $def2 = array('', array('spip_articles'), 'id_article');
+                       fabrique_jointures($boucle, array($def, $def2), true, $boucle->show, $id_table);
                        $t = array_search('spip_articles', $boucle->from);
                        array_unshift($boucle->where,
                                array("'='", "'$t.statut'", "'\\'publie\\''"));
@@ -301,7 +304,11 @@ function boucle_SYNDIC_ARTICLES_dist($id_boucle, &$boucles) {
        else {
                $jointure = array_search("spip_syndic", $boucle->from);
                if (!$jointure) {
-                       fabrique_jointures($boucle, array(array($id_table, array('spip_syndic'), 'id_syndic')), true, $boucle->show, $id_table);
+                       $trouver_table = charger_fonction('trouver_table', 'base');
+                       $def = $trouver_table('spip_syndic');
+                       $def = array('spip_syndic', $def);
+                       $def = array($id_table, $def, 'id_syndic');
+                       fabrique_jointures($boucle, array($def), true, $boucle->show, $id_table);
                        $jointure = array_search('spip_syndic', $boucle->from);
                }
                array_unshift($boucle->where,array("'='", "'$mstatut'", "'\\'publie\\''"));
index 20a4b92..df3b57a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index da13d9f..a576c1a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -51,49 +51,50 @@ include_spip('public/jointures');
 
 
 // http://doc.spip.org/@argumenter_inclure
-function argumenter_inclure($params, $rejet_filtres, $p, &$boucles, $id_boucle, $echap=true, $lang = '', $fond1=false){
+function argumenter_inclure($params, $rejet_filtres, $p, &$boucles, $id_boucle, $echap = true, $lang = '', $fond1 = false){
        $l = array();
        $erreur_p_i_i = '';
        if (!is_array($params)) return $l;
-       foreach($params as $k => $couple) {
-       // la liste d'arguments d'inclusion peut se terminer par un filtre
+       foreach ($params as $k => $couple){
+               // la liste d'arguments d'inclusion peut se terminer par un filtre
                $filtre = array_shift($couple);
                if ($filtre) break;
-               foreach($couple as $n => $val) {
+               foreach ($couple as $n => $val){
                        $var = $val[0];
-                       if ($var->type != 'texte') {
-                         if ($n OR $k OR $fond1) {
-                               $erreur_p_i_i = array('zbug_parametres_inclus_incorrects',
-                                        array('param' => $var->nom_champ));
-                               erreur_squelette($erreur_p_i_i, $p);
-                         } else $l[1] = calculer_liste($val, $p->descr, $boucles, $id_boucle);
-                         break;
+                       if ($var->type!='texte'){
+                               if ($n OR $k OR $fond1){
+                                       $erreur_p_i_i = array('zbug_parametres_inclus_incorrects',
+                                               array('param' => $var->nom_champ));
+                                       erreur_squelette($erreur_p_i_i, $p);
+                               } else $l[1] = calculer_liste($val, $p->descr, $boucles, $id_boucle);
+                               break;
                        } else {
-                               preg_match(",^([^=]*)(=?)(.*)$,", $var->texte,$m);
+                               preg_match(",^([^=]*)(=?)(.*)$,", $var->texte, $m);
                                $var = $m[1];
-                               $auto = false;;
-                               if ($m[2]) {
-                                 $v = $m[3];
-                                 if (preg_match(',^[\'"](.*)[\'"]$,', $v, $m)) $v = $m[1];
-                                 $val[0] = new Texte;
-                                 $val[0]->texte = $v;
+                               $auto = false;
+                               ;
+                               if ($m[2]){
+                                       $v = $m[3];
+                                       if (preg_match(',^[\'"](.*)[\'"]$,', $v, $m)) $v = $m[1];
+                                       $val[0] = new Texte;
+                                       $val[0]->texte = $v;
                                } elseif ($k OR $n OR $fond1) {
-                                 $auto = true;
+                                       $auto = true;
                                } else $var = 1;
 
-                               if ($var == 'lang') {
-                                 $lang = !$auto 
-                                   ? calculer_liste($val, $p->descr, $boucles, $id_boucle)
-                                   : '$GLOBALS["spip_lang"]';
+                               if ($var=='lang'){
+                                       $lang = !$auto
+                                               ? calculer_liste($val, $p->descr, $boucles, $id_boucle)
+                                               : '$GLOBALS["spip_lang"]';
                                } else {
-                                 $val = $auto
-                                   ? index_pile($id_boucle, $var, $boucles)
-                                   : calculer_liste($val, $p->descr, $boucles, $id_boucle);
-                                 if ($var !== 1)
-                                   $val = ($echap?"\'$var\' => ' . argumenter_squelette(":"'$var' => ")
-                                   . $val . ($echap? ") . '":" ");
-                                 else $val = $echap ? "'.$val.'" : $val;
-                                 $l[$var] = $val;
+                                       $val = $auto
+                                               ? index_pile($id_boucle, $var, $boucles)
+                                               : calculer_liste($val, $p->descr, $boucles, $id_boucle);
+                                       if ($var!==1)
+                                               $val = ($echap ? "\'$var\' => ' . argumenter_squelette(" : "'$var' => ")
+                                                       . $val . ($echap ? ") . '" : " ");
+                                       else $val = $echap ? "'.$val.'" : $val;
+                                       $l[$var] = $val;
                                }
                        }
                }
@@ -102,9 +103,9 @@ function argumenter_inclure($params, $rejet_filtres, $p, &$boucles, $id_boucle,
        // Cas particulier de la langue : si {lang=xx} est definie, on
        // la passe, sinon on passe la langue courante au moment du calcul
        // sauf si on n'en veut pas 
-       if ($lang === false) return $l;
+       if ($lang===false) return $l;
        if (!$lang) $lang = '$GLOBALS["spip_lang"]';
-       $l['lang'] = ($echap?"\'lang\' => ' . argumenter_squelette(":"'lang' => ")  . $lang . ($echap?") . '":" ");
+       $l['lang'] = ($echap ? "\'lang\' => ' . argumenter_squelette(" : "'lang' => ") . $lang . ($echap ? ") . '" : " ");
 
        return $l;
 }
@@ -123,10 +124,10 @@ else erreur_squelette(array("fichier_introuvable", array("fichier" => "%s")), ar
 define('CODE_RECUPERER_FOND', 'recuperer_fond(%s, %s, array(%s), %s)');
 
 // http://doc.spip.org/@calculer_inclure
-function calculer_inclure($p, &$boucles, $id_boucle) {
+function calculer_inclure($p, &$boucles, $id_boucle){
 
        $_contexte = argumenter_inclure($p->param, false, $p, $boucles, $id_boucle, true, '', true);
-       if (is_string($p->texte)) {
+       if (is_string($p->texte)){
                $fichier = $p->texte;
                $code = "\"$fichier\"";
 
@@ -136,22 +137,22 @@ function calculer_inclure($p, &$boucles, $id_boucle) {
                        $fichier = $r[1];
                else $fichier = '';
        }
-       if (!$code OR $code === '""') {
+       if (!$code OR $code==='""'){
                $erreur_p_i_i = array('zbug_parametres_inclus_incorrects',
-                                        array('param' => $code));
+                       array('param' => $code));
                erreur_squelette($erreur_p_i_i, $p);
                return false;
        }
        $compil = texte_script(memoriser_contexte_compil($p));
 
-       if (is_array($_contexte)) {
+       if (is_array($_contexte)){
                // Critere d'inclusion {env} (et {self} pour compatibilite ascendante)
-               if ($env = (isset($_contexte['env'])|| isset($_contexte['self']))) {
+               if ($env = (isset($_contexte['env']) || isset($_contexte['self']))){
                        unset($_contexte['env']);
                }
 
                // noter les doublons dans l'appel a public.php
-               if (isset($_contexte['doublons'])) {
+               if (isset($_contexte['doublons'])){
                        $_contexte['doublons'] = "\\'doublons\\' => '.var_export(\$doublons,true).'";
                }
 
@@ -162,30 +163,30 @@ function calculer_inclure($p, &$boucles, $id_boucle) {
        }
        else
                return false; // j'aurais voulu toucher le fond ...
-               
-       $contexte = 'array(' . $_contexte  .')';
 
-       if ($env) {
+       $contexte = 'array(' . $_contexte . ')';
+
+       if ($env){
                $contexte = "array_merge('.var_export(\$Pile[0],1).',$contexte)";
        }
 
        // s'il y a une extension .php, ce n'est pas un squelette
-       if (preg_match('/^.+[.]php$/s', $fichier)) {
+       if (preg_match('/^.+[.]php$/s', $fichier)){
                // si inexistant, on essaiera a l'execution
                if ($path = find_in_path($fichier))
                        $path = "\"$path\"";
                else $path = "find_in_path(\"$fichier\")";
 
                $code = sprintf(CODE_INCLURE_SCRIPT, $path, $fichier, $compil);
-       } else  {
+       } else {
                $_options[] = "\"compil\"=>array($compil)";
                if ($ajax)
                        $_options[] = "\"ajax\"=>true";
-               $code = " ' . argumenter_squelette($code) . '"; 
-               $code = "echo " . sprintf(CODE_RECUPERER_FOND, $code, $contexte, implode(',',$_options), "_request(\"connect\")") . ';';
+               $code = " ' . argumenter_squelette($code) . '";
+               $code = "echo " . sprintf(CODE_RECUPERER_FOND, $code, $contexte, implode(',', $_options), "_request(\"connect\")") . ';';
        }
 
-       return  "\n'<'.'".      "?php ". $code . "\n?'." . "'>'";
+       return "\n'<'.'" . "?php " . $code . "\n?'." . "'>'";
 }
 
 //
@@ -195,22 +196,22 @@ function calculer_inclure($p, &$boucles, $id_boucle) {
 // et on insere le code d'envoi au debusqueur du resultat de la fonction.
 
 // http://doc.spip.org/@calculer_boucle
-function calculer_boucle($id_boucle, &$boucles) {
+function calculer_boucle($id_boucle, &$boucles){
 
        $boucles[$id_boucle] = pipeline('post_boucle', $boucles[$id_boucle]);
 
        // en mode debug memoriser les premiers passages dans la boucle,
        // mais pas tous, sinon ca pete.
-       if  (_request('var_mode_affiche') != 'resultat') 
+       if (_request('var_mode_affiche')!='resultat')
                $trace = '';
        else {
                $trace = $boucles[$id_boucle]->descr['nom'] . $id_boucle;
                $trace = "if (count(@\$GLOBALS['debug_objets']['resultat']['$trace'])<3)
            \$GLOBALS['debug_objets']['resultat']['$trace'][] = \$t0;";
        }
-       return ($boucles[$id_boucle]->type_requete == 'boucle')
-       ? calculer_boucle_rec($id_boucle, $boucles, $trace) 
-       : calculer_boucle_nonrec($id_boucle, $boucles, $trace);
+       return ($boucles[$id_boucle]->type_requete=='boucle')
+               ? calculer_boucle_rec($id_boucle, $boucles, $trace)
+               : calculer_boucle_nonrec($id_boucle, $boucles, $trace);
 }
 
 // compil d'une boucle recursive. 
@@ -218,13 +219,13 @@ function calculer_boucle($id_boucle, &$boucles) {
 // reference, car par definition un tel passage ne les sauvegarde pas
 
 // http://doc.spip.org/@calculer_boucle_rec
-function calculer_boucle_rec($id_boucle, &$boucles, $trace) {
+function calculer_boucle_rec($id_boucle, &$boucles, $trace){
        $nom = $boucles[$id_boucle]->param[0];
        return "\n\t\$save_numrows = (\$Numrows['$nom']);"
-       . "\n\t\$t0 = " . $boucles[$id_boucle]->return . ";"
-       . "\n\t\$Numrows['$nom'] = (\$save_numrows);"
-       . $trace
-       . "\n\treturn \$t0;";
+               . "\n\t\$t0 = " . $boucles[$id_boucle]->return . ";"
+               . "\n\t\$Numrows['$nom'] = (\$save_numrows);"
+               . $trace
+               . "\n\treturn \$t0;";
 }
 
 // Compilation d'une boucle non recursive. 
@@ -253,55 +254,56 @@ define('CODE_CORPS_BOUCLE', '%s
 );
 
 // http://doc.spip.org/@calculer_boucle_nonrec
-function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) {
+function calculer_boucle_nonrec($id_boucle, &$boucles, $trace){
 
        $boucle = &$boucles[$id_boucle];
        $return = $boucle->return;
        $type_boucle = $boucle->type_requete;
        $primary = $boucle->primary;
-       $constant = preg_match(CODE_MONOTONE, str_replace("\\'",'', $return));
-       $flag_cpt = $boucle->mode_partie ||$boucle->cptrows;
+       $constant = preg_match(CODE_MONOTONE, str_replace("\\'", '', $return));
+       $flag_cpt = $boucle->mode_partie || $boucle->cptrows;
        $corps = '';
 
        // faudrait expanser le foreach a la compil, car y en a souvent qu'un 
        // et puis faire un [] plutot qu'un "','."
        if ($boucle->doublons)
                $corps .= "\n\t\t\tforeach(" . $boucle->doublons . ' as $k) $doublons[$k] .= "," . ' .
-               index_pile($id_boucle, $primary, $boucles)
-               . "; // doublons\n";
+                       index_pile($id_boucle, $primary, $boucles)
+                       . "; // doublons\n";
 
        // La boucle doit-elle selectionner la langue ?
        // -. par defaut, les boucles suivantes le font
        //    (sauf si forcer_lang==true ou si le titre contient <multi>).
        // - . a moins d'une demande explicite via {!lang_select}
-       if (!$constant && $boucle->lang_select != 'non' &&
-           (($boucle->lang_select == 'oui')  ||
-                   in_array($type_boucle, array(
-                       'articles', 'rubriques', 'hierarchie', 'breves'
+       if (!$constant && $boucle->lang_select!='non' &&
+               (($boucle->lang_select=='oui') ||
+                       in_array($type_boucle, array(
+                               'articles', 'rubriques', 'hierarchie', 'breves'
                        )))
-       ) {
+       ){
                // Memoriser la langue avant la boucle et la restituer apres
                // afin que le corps de boucle affecte la globale directement
                $init_lang = "lang_select(\$GLOBALS['spip_lang']);\n\t";
                $fin_lang = "lang_select();\n\t";
 
-               $corps .= 
+               $corps .=
                        "\n\t\tlang_select_public("
-                       . index_pile($id_boucle, 'lang', $boucles)
-                       . ", '".$boucle->lang_select."'"
-                       . (in_array($type_boucle, array(
+                               . index_pile($id_boucle, 'lang', $boucles)
+                               . ", '" . $boucle->lang_select . "'"
+                               . (in_array($type_boucle, array(
                                'articles', 'rubriques', 'hierarchie', 'breves'
-                               )) ? ', '.index_pile($id_boucle, 'titre', $boucles) : '')
-                       . ');';
+                       )) ? ', ' . index_pile($id_boucle, 'titre', $boucles) : '')
+                               . ');';
        }
        else {
                $init_lang = '';
                $fin_lang = '';
                // sortir les appels au traducteur (invariants de boucle)
-               if (strpos($return, '?php') === false
-               AND preg_match_all("/\W(_T[(]'[^']*'[)])/", $return, $r)) {
+               if (strpos($return, '?php')===false
+                       AND preg_match_all("/\W(_T[(]'[^']*'[)])/", $return, $r)
+               ){
                        $i = 1;
-                       foreach($r[1] as $t) {
+                       foreach ($r[1] as $t){
                                $init_lang .= "\n\t\$l$i = $t;";
                                $return = str_replace($t, "\$l$i", $return);
                                $i++;
@@ -311,23 +313,23 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) {
 
        // gestion optimale des separateurs et des boucles constantes
        if (count($boucle->separateur))
-         $code_sep = ("'" . str_replace("'","\'",join('',$boucle->separateur)) . "'");
+               $code_sep = ("'" . str_replace("'", "\'", join('', $boucle->separateur)) . "'");
 
-       $corps .= 
-               ((!$boucle->separateur) ? 
+       $corps .=
+               ((!$boucle->separateur) ?
                        (($constant && !$corps && !$flag_cpt) ? $return :
-                        (($return==="''") ? '' :
-                         ("\n\t\t" . '$t0 .= ' . $return . ";"))) :
-                ("\n\t\t\$t1 " .
-                       ((strpos($return, '$t1.') === 0) ? 
-                        (".=" . substr($return,4)) :
-                        ('= ' . $return)) .
-                 ";\n\t\t" .
-                 '$t0 .= (($t1 && $t0) ? ' . $code_sep . " : '') . \$t1;"));
-     
+                               (($return==="''") ? '' :
+                                       ("\n\t\t" . '$t0 .= ' . $return . ";"))) :
+                       ("\n\t\t\$t1 " .
+                               ((strpos($return, '$t1.')===0) ?
+                                       (".=" . substr($return, 4)) :
+                                       ('= ' . $return)) .
+                               ";\n\t\t" .
+                               '$t0 .= (($t1 && $t0) ? ' . $code_sep . " : '') . \$t1;"));
+
        // Calculer les invalideurs si c'est une boucle non constante et si on
        // souhaite invalider ces elements
-       if (!$constant AND $primary) {
+       if (!$constant AND $primary){
                include_spip('inc/invalideur');
                if (function_exists($i = 'calcul_invalideurs'))
                        $corps = $i($corps, $primary, $boucles, $id_boucle);
@@ -338,16 +340,16 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) {
 
        if ($boucle->partie OR $boucle->cptrows)
                $corps = "\n\t\t\$Numrows['$id_boucle']['compteur_boucle']++;"
-               . $boucle->partie 
-               . $corps;
+                       . $boucle->partie
+                       . $corps;
 
        $serveur = !$boucle->sql_serveur ? ''
                : (', ' . _q($boucle->sql_serveur));
 
        // si le corps est une constante, ne pas appeler le serveur N fois!
 
-       if (preg_match(CODE_MONOTONE,str_replace("\\'",'',$corps), $r)) {
-               if (!isset($r[2]) OR (!$r[2])) {
+       if (preg_match(CODE_MONOTONE, str_replace("\\'", '', $corps), $r)){
+               if (!isset($r[2]) OR (!$r[2])){
                        if (!$boucle->numrows)
                                return "\n\t\$t0 = '';";
                        else
@@ -356,36 +358,37 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) {
                        $boucle->numrows = true;
                        $corps = "\n\t\$t0 = str_repeat($corps, \$Numrows['$id_boucle']['total']);";
                }
-       } else $corps = "while (\$Pile[\$SP] = @sql_fetch(\$result$serveur)) {\n$corps\n        }"; 
+       } else $corps = "while (\$Pile[\$SP] = @sql_fetch(\$result$serveur)) {\n$corps\n        }";
 
        $count = '';
-       if (!$boucle->select) {
+       if (!$boucle->select){
                if (!$boucle->numrows OR $boucle->limit OR $boucle_mode_partie OR $boucle->group)
                        $count = '1';
                else $count = 'count(*)';
-               $boucles[$id_boucle]->select[]= $count; 
+               $boucles[$id_boucle]->select[] = $count;
        }
 
        if ($flag_cpt)
                $nums = "\n\t// COMPTEUR\n\t"
-               . "\$Numrows['$id_boucle']['compteur_boucle'] = 0;\n\t";
+                       . "\$Numrows['$id_boucle']['compteur_boucle'] = 0;\n\t";
        else $nums = '';
 
-       if ($boucle->numrows OR $boucle->mode_partie) {
-               if ($count == 'count(*)')
-                       $count = "array_shift(sql_fetch(\$result$serveur))";
-               else $count = "sql_count(\$result$serveur)";
+       if ($boucle->numrows OR $boucle->mode_partie){
+               if ($count=='count(*)')
+                       $count = "(\$cc=sql_fetch(\$result$serveur))?array_shift(\$cc):0";
+               else
+                       $count = "sql_count(\$result$serveur)";
                $nums .= "\$Numrows['$id_boucle']['total'] = @intval($count);"
-               . $boucle->mode_partie
-               . "\n\t";
+                       . $boucle->mode_partie
+                       . "\n\t";
        }
 
        // Ne calculer la requete que maintenant
        // car ce qui precede appelle index_pile qui influe dessus
 
        $init = (($init = $boucles[$id_boucle]->doublons)
-                        ? ("\n\t$init = array();") : '')
-       . calculer_requete_sql($boucles[$id_boucle]);
+               ? ("\n\t$init = array();") : '')
+               . calculer_requete_sql($boucles[$id_boucle]);
 
        $contexte = memoriser_contexte_compil($boucle);
 
@@ -394,28 +397,27 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) {
 
 
 // http://doc.spip.org/@calculer_requete_sql
-function calculer_requete_sql($boucle)
-{
+function calculer_requete_sql($boucle){
        return ($boucle->hierarchie ? "\n\t$boucle->hierarchie" : '')
-         . $boucle->in 
-         . $boucle->hash 
-         . calculer_dec('$table',  "'" . $boucle->id_table ."'")
-         . calculer_dec('$id', "'" . $boucle->id_boucle ."'")
+               . $boucle->in
+               . $boucle->hash
+               . calculer_dec('$table', "'" . $boucle->id_table . "'")
+               . calculer_dec('$id', "'" . $boucle->id_boucle . "'")
                # En absence de champ c'est un decompte : 
-         . calculer_dec('$from',  calculer_from($boucle))
-         . calculer_dec('$type', calculer_from_type($boucle))
-         . calculer_dec('$groupby', 'array(' . (($g=join("\",\n\t\t\"",$boucle->group))?'"'.$g.'"':'') . ")")
-         . calculer_dec('$select', 'array("' . join("\",\n\t\t\"", $boucle->select).  "\")")
-         . calculer_dec('$orderby', 'array(' . calculer_order($boucle) .       ")")
-         . calculer_dec('$where', calculer_dump_array($boucle->where))
-         . calculer_dec('$join', calculer_dump_join($boucle->join))
-         . calculer_dec('$limit', (strpos($boucle->limit, 'intval') === false ?
-                                   "'".$boucle->limit."'" :
-                                   $boucle->limit))
-         . calculer_dec('$having', calculer_dump_array($boucle->having));
+               . calculer_dec('$from', calculer_from($boucle))
+               . calculer_dec('$type', calculer_from_type($boucle))
+               . calculer_dec('$groupby', 'array(' . (($g = join("\",\n\t\t\"", $boucle->group)) ? '"' . $g . '"' : '') . ")")
+               . calculer_dec('$select', 'array("' . join("\",\n\t\t\"", $boucle->select) . "\")")
+               . calculer_dec('$orderby', 'array(' . calculer_order($boucle) . ")")
+               . calculer_dec('$where', calculer_dump_array($boucle->where))
+               . calculer_dec('$join', calculer_dump_join($boucle->join))
+               . calculer_dec('$limit', (strpos($boucle->limit, 'intval')===false ?
+                       "'" . $boucle->limit . "'" :
+                       $boucle->limit))
+               . calculer_dec('$having', calculer_dump_array($boucle->having));
 }
 
-function memoriser_contexte_compil($p) {
+function memoriser_contexte_compil($p){
        return join(',', array(
                _q($p->descr['sourcefile']),
                _q($p->descr['nom']),
@@ -424,13 +426,12 @@ function memoriser_contexte_compil($p) {
                '$GLOBALS[\'spip_lang\']'));
 }
 
-function reconstruire_contexte_compil($context_compil)
-{
+function reconstruire_contexte_compil($context_compil){
        if (!is_array($context_compil)) return $context_compil;
        include_spip('public/interfaces');
        $p = new Contexte;
        $p->descr = array('sourcefile' => $context_compil[0],
-                                 'nom' => $context_compil[1]);
+               'nom' => $context_compil[1]);
        $p->id_boucle = $context_compil[2];
        $p->ligne = $context_compil[3];
        $p->lang = $context_compil[4];
@@ -438,70 +439,65 @@ function reconstruire_contexte_compil($context_compil)
 }
 
 // http://doc.spip.org/@calculer_dec
-function calculer_dec($nom, $val)
-{
+function calculer_dec($nom, $val){
        $static = "static ";
-  if (
-    strpos($val, '$') !== false 
-    OR strpos($val, 'sql_') !== false
-    OR (
-       $test = str_replace(array("array(",'\"',"\'"),array("","",""),$val) // supprimer les array( et les echappements de guillemets
-       AND strpos($test,"(")!==FALSE // si pas de parenthese ouvrante, pas de fonction, on peut sortir
-       AND $test = preg_replace(",'[^']*',UimsS","",$test) // supprimer les chaines qui peuvent contenir des fonctions SQL qui ne genent pas
-       AND preg_match(",\w+\s*\(,UimsS",$test,$regs) // tester la presence de fonctions restantes
-    )
-    ){
-    $static = "";
-  }
-  return "\n\t" . $static . $nom . ' = ' . $val . ';';
+       if (
+               strpos($val, '$')!==false
+               OR strpos($val, 'sql_')!==false
+               OR (
+                       $test = str_replace(array("array(", '\"', "\'"), array("", "", ""), $val) // supprimer les array( et les echappements de guillemets
+                       AND strpos($test, "(")!==FALSE // si pas de parenthese ouvrante, pas de fonction, on peut sortir
+                       AND $test = preg_replace(",'[^']*',UimsS", "", $test) // supprimer les chaines qui peuvent contenir des fonctions SQL qui ne genent pas
+                       AND preg_match(",\w+\s*\(,UimsS", $test, $regs) // tester la presence de fonctions restantes
+               )
+       ){
+               $static = "";
+       }
+       return "\n\t" . $static . $nom . ' = ' . $val . ';';
 }
 
 // http://doc.spip.org/@calculer_dump_array
-function calculer_dump_array($a)
-{
-  if (!is_array($a)) return $a ;
-  $res = "";
-  if ($a AND $a[0] == "'?'") 
-    return ("(" . calculer_dump_array($a[1]) .
-           " ? " . calculer_dump_array($a[2]) .
-           " : " . calculer_dump_array($a[3]) .
-           ")");
-  else {
-    foreach($a as $v) $res .= ", " . calculer_dump_array($v);
-    return "\n\t\t\tarray(" . substr($res,2) . ')';
-  }
+function calculer_dump_array($a){
+       if (!is_array($a)) return $a;
+       $res = "";
+       if ($a AND $a[0]=="'?'")
+               return ("(" . calculer_dump_array($a[1]) .
+                       " ? " . calculer_dump_array($a[2]) .
+                       " : " . calculer_dump_array($a[3]) .
+                       ")");
+       else {
+               foreach ($a as $v) $res .= ", " . calculer_dump_array($v);
+               return "\n\t\t\tarray(" . substr($res, 2) . ')';
+       }
 }
 
 // http://doc.spip.org/@calculer_dump_join
-function calculer_dump_join($a)
-{
-  $res = "";
-  foreach($a as $k => $v) 
-               $res .= ", '$k' => array(".implode(',',$v).")";
-  return 'array(' . substr($res,2) . ')';
+function calculer_dump_join($a){
+       $res = "";
+       foreach ($a as $k => $v)
+               $res .= ", '$k' => array(" . implode(',', $v) . ")";
+       return 'array(' . substr($res, 2) . ')';
 }
 
 // http://doc.spip.org/@calculer_from
-function calculer_from(&$boucle)
-{
-  $res = "";
-  foreach($boucle->from as $k => $v) $res .= ",'$k' => '$v'";
-  return 'array(' . substr($res,1) . ')';
+function calculer_from(&$boucle){
+       $res = "";
+       foreach ($boucle->from as $k => $v) $res .= ",'$k' => '$v'";
+       return 'array(' . substr($res, 1) . ')';
 }
 
 // http://doc.spip.org/@calculer_from_type
-function calculer_from_type(&$boucle)
-{
-  $res = "";
-  foreach($boucle->from_type as $k => $v) $res .= ",'$k' => '$v'";
-  return 'array(' . substr($res,1) . ')';
+function calculer_from_type(&$boucle){
+       $res = "";
+       foreach ($boucle->from_type as $k => $v) $res .= ",'$k' => '$v'";
+       return 'array(' . substr($res, 1) . ')';
 }
 
 // http://doc.spip.org/@calculer_order
-function calculer_order(&$boucle)
-{
+function calculer_order(&$boucle){
        if (!$order = $boucle->order
-       AND !$order = $boucle->default_order)
+               AND !$order = $boucle->default_order
+       )
                $order = array();
 
        /*if (isset($boucle->modificateur['collate'])){
@@ -519,190 +515,208 @@ function calculer_order(&$boucle)
 // (qui sera argument d'un Return ou la partie droite d'une affectation).
 
 // http://doc.spip.org/@calculer_liste
-function calculer_liste($tableau, $descr, &$boucles, $id_boucle='') {
+function calculer_liste($tableau, $descr, &$boucles, $id_boucle = ''){
        if (!$tableau) return "''";
        if (!isset($descr['niv'])) $descr['niv'] = 0;
        $codes = compile_cas($tableau, $descr, $boucles, $id_boucle);
-       if ($codes === false) return false;
+       if ($codes===false) return false;
        $n = count($codes);
        if (!$n) return "''";
        $tab = str_repeat("\t", $descr['niv']);
-       if (_request('var_mode_affiche') != 'validation') {
-               if ($n==1) 
+       if (_request('var_mode_affiche')!='validation'){
+               if ($n==1)
                        return $codes[0];
                else {
                        $res = '';
-                       foreach($codes as $code) {
+                       foreach ($codes as $code){
                                if (!preg_match("/^'[^']*'$/", $code)
-                               OR substr($res,-1,1)!=="'")
-                                 $res .=  " .\n$tab$code";
+                                       OR substr($res, -1, 1)!=="'"
+                               )
+                                       $res .= " .\n$tab$code";
                                else {
-                                 $res = substr($res,0,-1) . substr($code,1);
+                                       $res = substr($res, 0, -1) . substr($code, 1);
                                }
                        }
-                       return '(' . substr($res,2+$descr['niv']) . ')';
+                       return '(' . substr($res, 2+$descr['niv']) . ')';
                }
        } else {
-         $nom = $descr['nom'] . $id_boucle .  ($descr['niv']?$descr['niv']:'');
-         return "join('', array_map('array_shift', \$GLOBALS['debug_objets']['sequence']['$nom'] = array(" .  join(" ,\n$tab", $codes) . ")))";
+               $nom = $descr['nom'] . $id_boucle . ($descr['niv'] ? $descr['niv'] : '');
+               return "join('', array_map('array_shift', \$GLOBALS['debug_objets']['sequence']['$nom'] = array(" . join(" ,\n$tab", $codes) . ")))";
        }
 }
 
-define('_REGEXP_COND_VIDE_NONVIDE',"/^[(](.*)[?]\s*''\s*:\s*('[^']+')\s*[)]$/");
-define('_REGEXP_COND_NONVIDE_VIDE',"/^[(](.*)[?]\s*('[^']+')\s*:\s*''\s*[)]$/");
+define('_REGEXP_COND_VIDE_NONVIDE', "/^[(](.*)[?]\s*''\s*:\s*('[^']+')\s*[)]$/");
+define('_REGEXP_COND_NONVIDE_VIDE', "/^[(](.*)[?]\s*('[^']+')\s*:\s*''\s*[)]$/");
 define('_REGEXP_CONCAT_NON_VIDE', "/^(.*)[.]\s*'[^']+'\s*$/");
 
 // http://doc.spip.org/@compile_cas
-function compile_cas($tableau, $descr, &$boucles, $id_boucle) {
+function compile_cas($tableau, $descr, &$boucles, $id_boucle){
 
-        $codes = array();
+       $codes = array();
        // cas de la boucle recursive
-       if (is_array($id_boucle)) 
-         $id_boucle = $id_boucle[0];
+       if (is_array($id_boucle))
+               $id_boucle = $id_boucle[0];
        $type = !$id_boucle ? '' : $boucles[$id_boucle]->type_requete;
        $tab = str_repeat("\t", ++$descr['niv']);
        $mode = _request('var_mode_affiche');
        $err_e_c = '';
        // chaque commentaire introduit dans le code doit commencer
        // par un caractere distinguant le cas, pour exploitation par debug.
-       foreach ($tableau as $p) {
-
-               switch($p->type) {
-               // texte seul
-               case 'texte':
-                       $code = "'".str_replace(array("\\","'"),array("\\\\","\\'"), $p->texte)."'";
-
-                       $commentaire= strlen($p->texte) . " signes";
-                       $avant='';
-                       $apres='';
-                       $altern = "''";
-                       break;
-
-               case 'polyglotte':
-                       $code = "";
-                       foreach($p->traductions as $k => $v) {
-                         $code .= ",'" .
-                           str_replace(array("\\","'"),array("\\\\","\\'"), $k) .
-                           "' => '" .
-                           str_replace(array("\\","'"),array("\\\\","\\'"), $v) .
-                           "'";
-                       }
-                       $code = "choisir_traduction(array(" .
-                         substr($code,1) .
-                         "))";
-                       $commentaire= '&';
-                       $avant='';
-                       $apres='';
-                       $altern = "''";
-                       break;
-
-               // inclure
-               case 'include':
-                       $p->descr = $descr;
-                       $code = calculer_inclure($p, $boucles, $id_boucle);
-                       if ($code === false) {
-                               $err_e_c = true;
-                               $code = "''";
-                       } else {
-                               $commentaire = '<INCLURE ' . addslashes(str_replace("\n", ' ', $code)) . '>';
-                               $avant='';
-                               $apres='';
+       foreach ($tableau as $p){
+
+               switch ($p->type) {
+                       // texte seul
+                       case 'texte':
+                               $code = "'" . str_replace(array("\\", "'"), array("\\\\", "\\'"), $p->texte) . "'";
+
+                               $commentaire = strlen($p->texte) . " signes";
+                               $avant = '';
+                               $apres = '';
                                $altern = "''";
-                       }
-                       break;
-
-               // boucle
-               case 'boucle':
-                       $nom = $p->id_boucle;
-                       $newdescr = $descr;
-                       $newdescr['id_mere'] = $nom;
-                       $newdescr['niv']++;
-                       $avant = calculer_liste($p->avant,
-                               $newdescr, $boucles, $id_boucle);
-                       $apres = calculer_liste($p->apres,
-                               $newdescr, $boucles, $id_boucle);
-                       $newdescr['niv']--;
-                       $altern = calculer_liste($p->altern,
-                               $newdescr, $boucles, $id_boucle);
-                       if (($avant === false) OR ($apres === false) OR ($altern === false)) {
-                               $err_e_c = true;
-                               $code = "''";
-                       } else {
-                               $code = 'BOUCLE' .
-                                 str_replace("-","_", $nom) . $descr['nom'] .
-                                 '($Cache, $Pile, $doublons, $Numrows, $SP)';
-                               $commentaire= "?$nom";
-                               if (!$boucles[$nom]->milieu
-                               AND $boucles[$nom]->type_requete <> 'boucle') {
-                                       if ($altern != "''") $code .= "\n. $altern";
-                                       if ($avant<>"''" OR $apres<>"''")
-                                         spip_log("boucle $nom toujours vide, code superflu dans $id");
-                                       $avant = $apres = $altern = "''";
-                               } else if ($altern != "''") $altern = "($altern)";
-                       }
-                       break;
+                               break;
+
+                       case 'polyglotte':
+                               $code = "";
+                               foreach ($p->traductions as $k => $v){
+                                       $code .= ",'" .
+                                               str_replace(array("\\", "'"), array("\\\\", "\\'"), $k) .
+                                               "' => '" .
+                                               str_replace(array("\\", "'"), array("\\\\", "\\'"), $v) .
+                                               "'";
+                               }
+                               $code = "choisir_traduction(array(" .
+                                       substr($code, 1) .
+                                       "))";
+                               $commentaire = '&';
+                               $avant = '';
+                               $apres = '';
+                               $altern = "''";
+                               break;
+
+                       // inclure
+                       case 'include':
+                               $p->descr = $descr;
+                               $code = calculer_inclure($p, $boucles, $id_boucle);
+                               if ($code===false){
+                                       $err_e_c = true;
+                                       $code = "''";
+                               } else {
+                                       $commentaire = '<INCLURE ' . addslashes(str_replace("\n", ' ', $code)) . '>';
+                                       $avant = '';
+                                       $apres = '';
+                                       $altern = "''";
+                               }
+                               break;
+
+                       // boucle
+                       case 'boucle':
+                               $nom = $p->id_boucle;
+                               $newdescr = $descr;
+                               $newdescr['id_mere'] = $nom;
+                               $newdescr['niv']++;
+                               $avant = calculer_liste($p->avant,
+                                       $newdescr, $boucles, $id_boucle);
+                               $apres = calculer_liste($p->apres,
+                                       $newdescr, $boucles, $id_boucle);
+                               $newdescr['niv']--;
+                               $altern = calculer_liste($p->altern,
+                                       $newdescr, $boucles, $id_boucle);
+                               if (($avant===false) OR ($apres===false) OR ($altern===false)){
+                                       $err_e_c = true;
+                                       $code = "''";
+                               } else {
+                                       $code = 'BOUCLE' .
+                                               str_replace("-", "_", $nom) . $descr['nom'] .
+                                               '($Cache, $Pile, $doublons, $Numrows, $SP)';
+                                       $commentaire = "?$nom";
+                                       if (!$boucles[$nom]->milieu
+                                               AND $boucles[$nom]->type_requete<>'boucle'
+                                       ){
+                                               if ($altern!="''") $code .= "\n. $altern";
+                                               if ($avant<>"''" OR $apres<>"''")
+                                                       spip_log("boucle $nom toujours vide, code superflu dans $id");
+                                               $avant = $apres = $altern = "''";
+                                       } else if ($altern!="''") $altern = "($altern)";
+                               }
+                               break;
+
+                       case 'idiome':
+                               $l = array();
+                               $code = '';
+                               foreach ($p->arg as $k => $v){
+                                       $_v = calculer_liste($v, $descr, $boucles, $id_boucle);
+                                       if ($k) 
+                                         $l[] = _q($k) . ' => ' . $_v;
+                                       else $code = $_v;
+                               }
+                               /// Si le module n'est pas fourni,
+                               /// l'expliciter sauf si calcule
+                               if ($p->module) {
+                                       $m = $p->module .':'.$p->nom_champ;
+                               } elseif ($p->nom_champ) {
+                                       $m = MODULES_IDIOMES .':'.$p->nom_champ;
+                               } else  $m = '';
+
+                               $code = (!$code ? "'$m'" :
+                                               ($m ? "'$m' . $code" : 
+                                                       ("(strpos(\$x=$code, ':') ? \$x : ('" . MODULES_IDIOMES . ":' . \$x))")))
+                               . (!$l ? '' : (", array(" . implode(",\n", $l) . ")"));
+                               $code = "_T($code)";
+                               if ($p->param){
+                                       $p->id_boucle = $id_boucle;
+                                       $p->boucles = &$boucles;
+                                       $code = compose_filtres($p, $code);
+                               }
+                               $commentaire = ":";
+                               $avant = '';
+                               $apres = '';
+                               $altern = "''";
+                               break;
 
-               case 'idiome':
-                       $l = array();
-                       foreach ($p->arg as $k => $v) {
-                         if ($k) $l[]= _q($k).' => '.calculer_liste($v,$descr,$boucles,$id_boucle);
-                       }
-                       $l = !$l ? '' : (", array(".implode(",\n",$l).")");
-                       $code = "_T('" . $p->module . ":" .$p->nom_champ . "'$l)";
-                       if ($p->param) {
+                       case 'champ':
+
+                               // cette structure pourrait etre completee des le phrase' (a faire)
                                $p->id_boucle = $id_boucle;
                                $p->boucles = &$boucles;
-                               $code = compose_filtres($p, $code);
-                       }
-                       $commentaire = ":";
-                       $avant='';
-                       $apres='';
-                       $altern = "''";
-                       break;
-
-               case 'champ':
-
-                       // cette structure pourrait etre completee des le phrase' (a faire)
-                       $p->id_boucle = $id_boucle;
-                       $p->boucles = &$boucles;
-                       $p->descr = $descr;
-                       #$p->interdire_scripts = true;
-                       $p->type_requete = $type;
-
-                       $code = calculer_champ($p);
-                       $commentaire = '#' . $p->nom_champ . $p->etoile;
-                       $avant = calculer_liste($p->avant,
-                               $descr, $boucles, $id_boucle);
-                       $apres = calculer_liste($p->apres,
-                               $descr, $boucles, $id_boucle);
-                       $altern = "''";
-                       // Si la valeur est destinee a une comparaison a ''
-                       // forcer la conversion en une chaine par strval
-                       // si ca peut etre autre chose qu'une chaine
-                       if (($avant != "''" OR $apres != "''")
-                       AND $code[0]!= "'"
+                               $p->descr = $descr;
+                               #$p->interdire_scripts = true;
+                               $p->type_requete = $type;
+
+                               $code = calculer_champ($p);
+                               $commentaire = '#' . $p->nom_champ . $p->etoile;
+                               $avant = calculer_liste($p->avant,
+                                       $descr, $boucles, $id_boucle);
+                               $apres = calculer_liste($p->apres,
+                                       $descr, $boucles, $id_boucle);
+                               $altern = "''";
+                               // Si la valeur est destinee a une comparaison a ''
+                               // forcer la conversion en une chaine par strval
+                               // si ca peut etre autre chose qu'une chaine
+                               if (($avant!="''" OR $apres!="''")
+                                       AND $code[0]!="'"
 #                      AND (strpos($code,'interdire_scripts') !== 0)
-                       AND !preg_match(_REGEXP_COND_VIDE_NONVIDE, $code)
-                       AND !preg_match(_REGEXP_COND_NONVIDE_VIDE, $code)
-                       AND !preg_match(_REGEXP_CONCAT_NON_VIDE, $code)) 
-                               $code = "strval($code)";
-                       break;
-
-               default: 
-                 // Erreur de construction de l'arbre de syntaxe abstraite
-                       $code = "''";
-                       $p->descr = $descr;
-                       $err_e_c = array('zbug_erreur_compilation');
-                       erreur_squelette($err_e_c, $p);
+                                               AND !preg_match(_REGEXP_COND_VIDE_NONVIDE, $code)
+                                                       AND !preg_match(_REGEXP_COND_NONVIDE_VIDE, $code)
+                                                               AND !preg_match(_REGEXP_CONCAT_NON_VIDE, $code)
+                               )
+                                       $code = "strval($code)";
+                               break;
+
+                       default:
+                               // Erreur de construction de l'arbre de syntaxe abstraite
+                               $code = "''";
+                               $p->descr = $descr;
+                               $err_e_c = array('zbug_erreur_compilation');
+                               erreur_squelette($err_e_c, $p);
                } // switch
 
-               if ($code != "''") {
+               if ($code!="''"){
                        $code = compile_retour($code, $avant, $apres, $altern, $tab, $descr['niv']);
-                       $codes[]= (($mode == 'validation') ?
+                       $codes[] = (($mode=='validation') ?
                                "array($code, '$commentaire', " . $p->ligne . ")"
-                               : (($mode == 'code') ?
-                               "\n// $commentaire\n$code" :
-                               $code));
+                               : (($mode=='code') ?
+                                       "\n// $commentaire\n$code" :
+                                       $code));
                }
        } // foreach
 
@@ -714,19 +728,18 @@ function compile_cas($tableau, $descr, &$boucles, $id_boucle) {
 // de meme si EXP est de la forme (t ? '' : 'C')
 
 // http://doc.spip.org/@compile_retour
-function compile_retour($code, $avant, $apres, $altern, $tab, $n)
-{
-       if ($avant == "''") $avant = '';
-       if ($apres == "''") $apres = '';
+function compile_retour($code, $avant, $apres, $altern, $tab, $n){
+       if ($avant=="''") $avant = '';
+       if ($apres=="''") $apres = '';
        if (!$avant AND !$apres AND ($altern==="''")) return $code;
 
-       if (preg_match(_REGEXP_CONCAT_NON_VIDE, $code)) {
+       if (preg_match(_REGEXP_CONCAT_NON_VIDE, $code)){
                $t = $code;
                $cond = '';
-       } elseif (preg_match(_REGEXP_COND_VIDE_NONVIDE,$code, $r)) {
+       } elseif (preg_match(_REGEXP_COND_VIDE_NONVIDE, $code, $r)) {
                $t = $r[2];
-               $cond =  '!' . $r[1];
-       } else if  (preg_match(_REGEXP_COND_NONVIDE_VIDE,$code, $r)) {
+               $cond = '!' . $r[1];
+       } else if (preg_match(_REGEXP_COND_NONVIDE_VIDE, $code, $r)){
                $t = $r[2];
                $cond = $r[1];
        } else {
@@ -734,22 +747,21 @@ function compile_retour($code, $avant, $apres, $altern, $tab, $n)
                $cond = "($t = $code)!==''";
        }
 
-       $res = (!$avant ? "" : "$avant . ") . 
+       $res = (!$avant ? "" : "$avant . ") .
                $t .
                (!$apres ? "" : " . $apres");
 
-       if ($res !== $t) $res = "($res)";
+       if ($res!==$t) $res = "($res)";
        return !$cond ? $res : "($cond ?\n\t$tab$res :\n\t$tab$altern)";
 }
 
 
-function compile_inclure_doublons($lexemes)
-{
-       foreach($lexemes as $v)
-         if($v->type === 'include' AND $v->param) 
-           foreach($v->param as $r) 
-             if (trim($r[0]) === 'doublons') 
-               return true;
+function compile_inclure_doublons($lexemes){
+       foreach ($lexemes as $v)
+               if ($v->type==='include' AND $v->param)
+                       foreach ($v->param as $r)
+                               if (trim($r[0])==='doublons')
+                                       return true;
        return false;
 }
 
@@ -769,16 +781,16 @@ function compile_inclure_doublons($lexemes)
 // En cas d'erreur, elle retournera un tableau des 2 premiers elements seulement
 
 // http://doc.spip.org/@public_compiler_dist
-function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect=''){
+function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect = ''){
        // Pre-traitement : reperer le charset du squelette, et le convertir
        // Bonus : supprime le BOM
        include_spip('inc/charsets');
        $squelette = transcoder_page($squelette);
 
        $descr = array('nom' => $nom,
-                       'gram' => $gram,
-                       'sourcefile' => $sourcefile,
-                       'squelette' => $squelette);
+               'gram' => $gram,
+               'sourcefile' => $sourcefile,
+               'squelette' => $squelette);
 
        // Phraser le squelette, selon sa grammaire
 
@@ -793,20 +805,20 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect='')
 // Point d'entree pour arbre de syntaxe abstraite fourni en premier argument
 // Autres specifications comme ci-dessus
 
-function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $connect=''){
+function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $connect = ''){
        global $tables_jointures;
        static $trouver_table;
        spip_timer('calcul_skel');
 
-       if (isset($GLOBALS['var_mode']) AND $GLOBALS['var_mode'] == 'debug') {
+       if (isset($GLOBALS['var_mode']) AND $GLOBALS['var_mode']=='debug'){
                $GLOBALS['debug_objets']['squelette'][$nom] = $descr['squelette'];
                $GLOBALS['debug_objets']['sourcefile'][$nom] = $sourcefile;
 
                if (!isset($GLOBALS['debug_objets']['principal']))
                        $GLOBALS['debug_objets']['principal'] = $nom;
        }
-       foreach ($boucles as $id => $boucle) {
-               $GLOBALS['debug_objets']['boucle'][$nom.$id] = $boucle;
+       foreach ($boucles as $id => $boucle){
+               $GLOBALS['debug_objets']['boucle'][$nom . $id] = $boucle;
        }
        $descr['documents'] = compile_inclure_doublons($squelette);
 
@@ -817,25 +829,26 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
        if (!$trouver_table)
                $trouver_table = charger_fonction('trouver_table', 'base');
 
-       foreach($boucles as $id => $boucle) {
+       foreach ($boucles as $id => $boucle){
                if (!($type = $boucle->type_requete)) continue;
                if (!$descr['documents'] AND (
-                       (($type == 'documents') AND $boucle->doublons) OR
+                       (($type=='documents') AND $boucle->doublons) OR
                                compile_inclure_doublons($boucle->avant) OR
                                compile_inclure_doublons($boucle->apres) OR
                                compile_inclure_doublons($boucle->milieu) OR
-                               compile_inclure_doublons($boucle->altern)))
-                       $descr['documents'] = true;  
-               if ($type != 'boucle') {
+                               compile_inclure_doublons($boucle->altern))
+               )
+                       $descr['documents'] = true;
+               if ($type!='boucle'){
                        if (!$boucles[$id]->sql_serveur AND $connect)
                                $boucles[$id]->sql_serveur = $connect;
                        $show = $trouver_table($type, $boucles[$id]->sql_serveur);
                        // si la table n'existe pas avec le connecteur par defaut, 
                        // c'est peut etre une table qui necessite son connecteur dedie fourni
                        // permet une ecriture allegee (GEO) -> (geo:GEO)
-                       if (!$show AND $show=$trouver_table($type, strtolower($type)))
+                       if (!$show AND $show = $trouver_table($type, strtolower($type)))
                                $boucles[$id]->sql_serveur = strtolower($type);
-                       if ($show) {
+                       if ($show){
                                $boucles[$id]->show = $show;
                                // recopie les infos les plus importantes
                                $boucles[$id]->primary = $show['key']["PRIMARY KEY"];
@@ -844,26 +857,27 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
 
                                $boucles[$id]->descr = &$descr;
                                if ((!$boucles[$id]->jointures)
-                               AND (isset($tables_jointures[$nom_table])) 
-                               AND is_array($x = $tables_jointures[$nom_table]))
+                                       AND (isset($tables_jointures[$nom_table]))
+                                               AND is_array($x = $tables_jointures[$nom_table])
+                               )
                                        $boucles[$id]->jointures = $x;
                                if ($boucles[$id]->jointures_explicites){
-                                       $jointures = preg_split("/\s+/",$boucles[$id]->jointures_explicites);
-                                       while ($j=array_pop($jointures))
-                                               array_unshift($boucles[$id]->jointures,$j);
+                                       $jointures = preg_split("/\s+/", $boucles[$id]->jointures_explicites);
+                                       while ($j = array_pop($jointures))
+                                               array_unshift($boucles[$id]->jointures, $j);
                                }
                        } else {
                                // Pas une erreur si la table est optionnelle
                                if ($boucles[$id]->table_optionnelle)
                                        $boucles[$id]->type_requete = '';
-                               else  {
+                               else {
                                        $boucles[$id]->type_requete = false;
                                        $boucle = $boucles[$id];
                                        $x = (!$boucle->sql_serveur ? '' :
-                                             ($boucle->sql_serveur . ":")) .
-                                         $type;
+                                               ($boucle->sql_serveur . ":")) .
+                                               $type;
                                        $msg = array('zbug_table_inconnue',
-                                                       array('table' => $x));
+                                               array('table' => $x));
                                        erreur_squelette($msg, $boucle);
                                }
                        }
@@ -872,11 +886,11 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
 
        // Commencer par reperer les boucles appelees explicitement 
        // car elles indexent les arguments de maniere derogatoire
-       foreach($boucles as $id => $boucle) { 
-               if ($boucle->type_requete == 'boucle' AND $boucle->param) {
+       foreach ($boucles as $id => $boucle){
+               if ($boucle->type_requete=='boucle' AND $boucle->param){
                        $boucles[$id]->descr = &$descr;
                        $rec = &$boucles[$boucle->param[0]];
-                       if (!$rec) {
+                       if (!$rec){
                                $msg = array('zbug_boucle_recursive_undef',
                                        array('nom' => $boucle->param[0]));
                                erreur_squelette($msg, $boucle);
@@ -885,24 +899,24 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
                                $rec->externe = $id;
                                $descr['id_mere'] = $id;
                                $boucles[$id]->return =
-                                               calculer_liste(array($rec),
-                                                        $descr,
-                                                        $boucles,
-                                                        $boucle->param);
+                                       calculer_liste(array($rec),
+                                               $descr,
+                                               $boucles,
+                                               $boucle->param);
                        }
                }
        }
-       foreach($boucles as $id => $boucle) { 
+       foreach ($boucles as $id => $boucle){
                $id = strval($id); // attention au type dans index_pile
                $type = $boucle->type_requete;
-               if ($type AND $type != 'boucle') {
+               if ($type AND $type!='boucle'){
                        $crit = !$boucle->param ? true : calculer_criteres($id, $boucles);
                        $descr['id_mere'] = $id;
                        $boucles[$id]->return =
-                         calculer_liste($boucle->milieu,
-                                        $descr,
-                                        $boucles,
-                                        $id);
+                               calculer_liste($boucle->milieu,
+                                       $descr,
+                                       $boucles,
+                                       $id);
                        // Si les criteres se sont mal compiles
                        // ne pas tenter d'assembler le code final
                        // (mais compiler le corps pour detection d'erreurs)
@@ -916,7 +930,7 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
        $corps = calculer_liste($squelette, $descr, $boucles);
        $debug = (isset($GLOBALS['var_mode']) AND $GLOBALS['var_mode']=='debug');
 
-       if ($debug) {
+       if ($debug){
                include_spip('public/decompiler');
                include_spip('public/format_' . _EXTENSION_SQUELETTES);
        }
@@ -924,15 +938,15 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
        // en particulier les requetes SQL et TOTAL_BOUCLE
        // de'terminables seulement maintenant
 
-       foreach($boucles as $id => $boucle) {
+       foreach ($boucles as $id => $boucle){
                $boucle = $boucles[$id] = pipeline('pre_boucle', $boucle);
-               if ($boucle->return === false) continue;
+               if ($boucle->return===false) continue;
                // appeler la fonction de definition de la boucle
 
-               if ($req = $boucle->type_requete) {
-                       $f = 'boucle_'.strtoupper($req);
-               // si pas de definition perso, definition spip
-                       if (!function_exists($f)) $f = $f.'_dist';
+               if ($req = $boucle->type_requete){
+                       $f = 'boucle_' . strtoupper($req);
+                       // si pas de definition perso, definition spip
+                       if (!function_exists($f)) $f = $f . '_dist';
                        // laquelle a une definition par defaut
                        if (!function_exists($f)) $f = 'boucle_DEFAUT';
                        if (!function_exists($f)) $f = 'boucle_DEFAUT_dist';
@@ -942,27 +956,27 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
                                $f($id, $boucles);
                } else $req = ("\n\treturn '';");
 
-               $boucles[$id]->return = 
-                       "function BOUCLE" . strtr($id,"-","_") . $nom .
-                       '(&$Cache, &$Pile, &$doublons, &$Numrows, $SP) {' .
-                       $req .
-                       "\n}\n\n";
+               $boucles[$id]->return =
+                       "function BOUCLE" . strtr($id, "-", "_") . $nom .
+                               '(&$Cache, &$Pile, &$doublons, &$Numrows, $SP) {' .
+                               $req .
+                               "\n}\n\n";
 
                if ($debug)
-                       $GLOBALS['debug_objets']['code'][$nom.$id] = $boucles[$id]->return;
+                       $GLOBALS['debug_objets']['code'][$nom . $id] = $boucles[$id]->return;
        }
 
        // Au final, si le corps ou un critere au moins s'est mal compile
        // retourner False, sinon inserer leur decompilation
        if (is_bool($corps)) return false;
-       foreach($boucles as $id => $boucle) {
-               if ($boucle->return === false) return false;
+       foreach ($boucles as $id => $boucle){
+               if ($boucle->return===false) return false;
                $boucle->return = "\n\n/* BOUCLE " .
                        $boucle->type_requete .
                        " " .
-                       (!$debug ? '' : 
-                       str_replace('*/', '* /', 
-                               decompiler_criteres($boucle->param, 
+                       (!$debug ? '' :
+                               str_replace('*/', '* /',
+                                       decompiler_criteres($boucle->param,
                                                $boucle->criteres))) .
                        " */\n\n " .
                        $boucle->return;
@@ -970,39 +984,41 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
 
        $secondes = spip_timer('calcul_skel');
        spip_log("COMPIL ($secondes) [$sourcefile] $nom.php");
+       // $connect n'est pas sĂ»r : on nettoie
+       $connect = preg_replace(',[^\w],', '', $connect);
 
        // Assimiler la fct principale a une boucle anonyme, c'est plus simple
        $code = new Boucle;
        $code->descr = $descr;
        $code->return = '
 //
-// Fonction principale du squelette ' . 
-       $sourcefile . 
-       ($connect ? " pour $connect" : '') . 
-       (!CODE_COMMENTE ? '' : "\n// Temps de compilation total: $secondes") .
-       "\n//" .
-       (!$debug ? '' : ("\n/*\n" . 
-                       str_replace('*/', '* /', public_decompiler($squelette)) 
-                                     . "\n*/")) . "
+// Fonction principale du squelette ' .
+               $sourcefile .
+               ($connect ? " pour $connect" : '') .
+               (!CODE_COMMENTE ? '' : "\n// Temps de compilation total: $secondes") .
+               "\n//" .
+               (!$debug ? '' : ("\n/*\n" .
+                       str_replace('*/', '* /', public_decompiler($squelette))
+                       . "\n*/")) . "
 
 function " . $nom . '($Cache, $Pile, $doublons=array(), $Numrows=array(), $SP=0) {
 
 '
-       // reporter de maniere securisee les doublons inclus
-.'
+               // reporter de maniere securisee les doublons inclus
+               . '
        if (isset($Pile[0]["doublons"]) AND is_array($Pile[0]["doublons"]))
                $doublons = nettoyer_env_doublons($Pile[0]["doublons"]);
 
        $connect = ' .
-       _q($connect) . ';
+               _q($connect) . ';
        $page = ' .
-       // ATTENTION, le calcul de l'expression $corps affectera $Cache
-       // c'est pourquoi on l'affecte a la variable auxiliaire $page. 
-       // avant de referencer $Cache
-       $corps . ";
+               // ATTENTION, le calcul de l'expression $corps affectera $Cache
+               // c'est pourquoi on l'affecte a la variable auxiliaire $page.
+               // avant de referencer $Cache
+               $corps . ";
 
-       return analyse_resultat_skel(".var_export($nom,true)
-               .", \$Cache, \$page, ".var_export($sourcefile,true).");
+       return analyse_resultat_skel(" . var_export($nom, true)
+               . ", \$Cache, \$page, " . var_export($sourcefile, true) . ");
 }";
 
        $boucles[''] = $code;
index c2690eb..663f4fd 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -190,7 +190,7 @@ function analyse_resultat_skel($nom, $cache, $corps, $source='') {
        // note: on essaie d'attrapper aussi certains de ces entetes codes
        // "a la main" dans les squelettes, mais evidemment sans exhaustivite
        if (preg_match_all(
-       '/(<[?]php\s+)@?header\s*\(\s*.([^:\']*):?\s*([^)]*)[^)]\s*\)\s*[;]?\s*[?]>/ims',
+       '/(<[?]php\s+)@?header\s*\(\s*.([^:\'"]*):?\s*([^)]*)[^)]\s*\)\s*[;]?\s*[?]>/ims',
        $corps, $regs, PREG_SET_ORDER)){
                foreach ($regs as $r) {
                        $corps = str_replace($r[0], '', $corps);
index fd7dcf9..6ed1857 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -60,20 +60,29 @@ function critere_exclus_dist($idb, &$boucles, $crit) {
 function critere_doublons_dist($idb, &$boucles, $crit) {
        $boucle = &$boucles[$idb];
        $primary = $boucle->primary;
+       $type = $boucle->type_requete;
+       // Dans le cas NOT, la table du doublon peut etre indiquee
+       // si la table courante a un champ homonyme de sa cle primaire.
+       // Tres utile pour la table des forums.
+       if (isset($crit->param[1])) {
+         $primary = '';
+         $x = !$crit->not ? '' : calculer_liste($crit->param[1], array(), $boucles, $boucle->id_parent);
+         # attention au commentaire "// x signes" qui precede
+         if (preg_match(",^(?:\s*//[^\n]*\n)?'([^']+)'*$,ms", $x, $m))  {
+           $x = id_table_objet($type = $m[1]);
+           if (isset($boucle->show['field'][$x]))
+             $primary = $x; // sinon erreur declenchee ci-dessous
+         }
+       }
 
        if (!$primary OR strpos($primary,',')) {
                return (array('zbug_doublon_sur_table_sans_cle_primaire'));
        }
-
        $not = ($crit->not ? '' : 'NOT');
-
        $nom = !isset($crit->param[0]) ? "''" : calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
        // mettre un tableau pour que ce ne soit pas vu comme une constante
 
-       $nom = "'" .
-         $boucle->type_requete . 
-         "'" .
-         ($nom == "''" ? '' : " . $nom");
+       $nom = "'" . $type .  "'" .  ($nom == "''" ? '' : " . $nom");
 
        $debutdoub = '$doublons['
        .  (!$not ? '' : ($boucle->doublons . "[]= "));
@@ -93,9 +102,6 @@ function critere_doublons_dist($idb, &$boucles, $crit) {
        }
        $boucle->where[]= array($suitin . $findoub . ", '" . $not . "')");
 
-
-
-
 # la ligne suivante avait l'intention d'eviter une collecte deja faite
 # mais elle fait planter une boucle a 2 critere doublons:
 # {!doublons A}{doublons B}
@@ -530,19 +536,38 @@ function critere_agenda_dist($idb, &$boucles, $crit)
        $params = $crit->param;
 
        if (count($params) < 1)
-               return (array('zbug_critere_inconnu', array('critere' => $crit->op . " ?")));
-
-       $parent = $boucles[$idb]->id_parent;
+               return array('zbug_critere_inconnu', array('critere' => $crit->op . " ?"));
 
-       // les valeurs $date et $type doivent etre connus a la compilation
-       // autrement dit ne pas etre des champs
+       $boucle = &$boucles[$idb];
+       $parent = $boucle->id_parent;
+       $fields = $boucle->show['field'];
 
        $date = array_shift($params);
-       $date = $date[0]->texte;
-
        $type = array_shift($params);
+
+       // la valeur $type doit etre connue a la compilation
+       // donc etre forcement reduite a un litteral unique dans le source
+
        $type = $type[0]->texte;
 
+       // La valeur date doit designer un champ de la table SQL.
+       // Si c'est un litteral unique dans le source, verifier a la compil,
+       // sinon synthetiser le test de verif pour execution ulterieure
+       // On prendra arbitrairement le premier champ si test negatif.
+
+       if ((count($date) == 1)  AND ($date[0]->type == 'texte')) {
+               $date = $date[0]->texte;
+               if (!isset($fields[$date]))
+                 return array('zbug_critere_inconnu', array('critere' => $crit->op . " " . $date));
+       } else  {
+               $a = calculer_liste($date, array(), $boucles, $parent);
+               $noms = array_keys($fields);
+               $defaut = $noms[0];
+               $noms = join(" ", $noms);
+               # bien laisser 2 espaces avant $nom pour que strpos<>0
+               $cond = "(\$a=strval($a))AND\nstrpos(\"  $noms \",\" \$a \")";
+               $date = "'.(($cond)\n?\$a:\"$defaut\").'";
+       }
        $annee = $params ? array_shift($params) : "";
        $annee = "\n" . 'sprintf("%04d", ($x = ' .
                calculer_liste($annee, array(), $boucles, $parent) .
@@ -573,7 +598,6 @@ function critere_agenda_dist($idb, &$boucles, $crit)
                calculer_liste($jour2, array(), $boucles, $parent) .
                ') ? $x : date("d"))';
 
-       $boucle = &$boucles[$idb];
        $date = $boucle->id_table . ".$date";
 
        if ($type == 'jour')
index 7fa10dc..04ff45b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b7b5482..8daa1ed 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -71,18 +71,15 @@ function decompiler_polyglotte($struct, $fmt='', $prof=0)
 
 function decompiler_idiome($struct, $fmt='', $prof=0)
 {
-       $module = ($struct->module == MODULES_IDIOMES)? ''
-         : $struct->module;
-
        $args = array();
        foreach ($struct->arg as $k => $v) {
-               if ($k) $args[$k]= public_decompiler($v, $fmt, $prof);
+               $args[$k]= public_decompiler($v, $fmt, $prof);
        }
 
        $filtres =  decompiler_liste($struct->param, $fmt, $prof);
 
        $f = 'format_idiome_' . ($fmt ? $fmt : _EXTENSION_SQUELETTES);
-       return $f($struct->nom_champ, $module, $args, $filtres, $prof);
+       return $f($struct->nom_champ, $struct->module, $args, $filtres, $prof);
 }
 
 function decompiler_champ($struct, $fmt='', $prof=0)
index 9d19c16..fcfbfb3 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f046a5e..d7d5491 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 294b6af..09cd89c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 090c159..f596a0e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0c10ba2..6cf8470 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 80b1c2e..dd57e2c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -32,7 +32,8 @@ define('CHAMP_ETENDU', '/\[([^]\[]*)\(' . NOM_DE_CHAMP . '([^[)]*\)[^]\[]*)\]/S'
 
 define('BALISE_INCLURE','/<INCLU[DR]E[[:space:]]*(\(([^)]*)\))?/S');
 define('BALISE_POLYGLOTTE',',<multi>(.*)</multi>,Uims');
-define('BALISE_IDIOMES',',<:(([a-z0-9_]+):)?([a-z0-9_]+)({([^\|=>]*=[^\|>]*)})?((\|[^>]*)?:>),iS');
+define('BALISE_IDIOMES',',<:(([a-z0-9_]+):)?([a-z0-9_]*)({([^\|=>]*=[^>]*)})?((\|[^>]*)?:>),iS');
+define('BALISE_IDIOMES_ARGS', '@^\s*([^= ]*)\s*=\s*((' . NOM_DE_CHAMP . '[{][^}]*})?[^,]*)\s*,?\s*@s');
 
 define('SQL_ARGS', '(\([^)]*\))');
 define('CHAMP_SQL_PLUS_FONC', '`?([A-Z_][A-Z_0-9.]*)' . SQL_ARGS . '?`?');
@@ -111,30 +112,33 @@ function phraser_polyglotte($texte,$ligne, $result) {
 }
 
 
-// http://doc.spip.org/@phraser_idiomes
-function phraser_idiomes($texte,$ligne,$result) {
 
-       // Reperer les balises de traduction <:module:chaine{argument1=texte,argument2=#BALISE}|filtre1{texte,#BALISE}|filtre2:>
+/// Reperer les balises de traduction
+/// <:module:chaine{arg1=texte1,arg2=#BALISE}|filtre1{texte2,#BALISE}|filtre2:>
+/// chaine peut etre vide si =texte1 est present et arg1 est vide
+/// sinon ce n'est pas un idiome
+function phraser_idiomes($texte,$ligne,$result) {
        while (preg_match(BALISE_IDIOMES, $texte, $match)) {
                $p = strpos($texte, $match[0]);
-               $debut = substr($texte, 0, $p);
-               if ($p) $result = phraser_champs($debut, $ligne, $result);
-               $champ = new Idiome;
+               $ko = (!$match[3] && ($match[5][0]!=='='));
+               $debut = substr($texte, 0, $p + ($ko ? strlen($match[0]) : 0));
+               if ($debut) $result = phraser_champs($debut, $ligne, $result);
+               $texte = substr($texte,$p+strlen($match[0]));
                $ligne += substr_count($debut, "\n");   
+               if ($ko) continue; // faux idiome
+               $champ = new Idiome;
                $champ->ligne = $ligne;
                $ligne += substr_count($match[0], "\n");
-               $texte = substr($texte,$p+strlen($match[0]));
                // Stocker les arguments de la balise de traduction
-               $args=array();
-               $vals=preg_split('/,\s*/',$match[5]);
-               foreach ($vals as $val) {
-                       $arg=preg_split('/\s*=/',$val);
-                       if ($arg[0])
-                         $args[$arg[0]]=phraser_champs($arg[1], 0, array());   
+               $args = array();
+               $largs = $match[5];
+               while (preg_match(BALISE_IDIOMES_ARGS, $largs, $r)) {
+                       $args[$r[1]] = phraser_champs($r[2], 0, array(), true);
+                       $largs = substr($largs, strlen($r[0]));
                }
-               $champ->arg=$args;
+               $champ->arg = $args;
                $champ->nom_champ = strtolower($match[3]);
-               $champ->module = $match[2] ? $match[2] : MODULES_IDIOMES;
+               $champ->module = $match[2];
                // pas d'imbrication pour les filtres sur langue
                phraser_args(@$match[7], ":", '', array(), $champ);
                $result[] = $champ;
@@ -144,7 +148,7 @@ function phraser_idiomes($texte,$ligne,$result) {
 }
 
 // http://doc.spip.org/@phraser_champs
-function phraser_champs($texte,$ligne,$result) {
+function phraser_champs($texte,$ligne,$result, $filtre=false) {
        while (preg_match("/".NOM_DE_CHAMP."/S", $texte, $match)) {
          $p = strpos($texte, $match[0]);
          $suite = substr($texte,$p+strlen($match[0]));
@@ -173,6 +177,12 @@ function phraser_champs($texte,$ligne,$result) {
                        }
                */
                } else $texte = $suite;
+               if ($filtre) while ($texte[0]=='|') {
+                       $result = phraser_args($texte, '', '', $result, $champ);
+                       $args = $champ->apres ;
+                       $champ->apres = '';
+                       $texte = $args[0];
+                 }
                phraser_vieux($champ);
                $result[] = $champ;
          } else {
index 97d9c17..f418d44 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 9cf87c5..bb3af94 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index d0f0652..47574b8 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -18,8 +18,8 @@ function public_stats_dist() {
        if (isset($_SERVER['HTTP_REFERER'])) $referer = $_SERVER['HTTP_REFERER'];
        else if (isset($GLOBALS["HTTP_SERVER_VARS"]["HTTP_REFERER"])) $referer = $GLOBALS["HTTP_SERVER_VARS"]["HTTP_REFERER"];
        
-       // Rejet des robots (qui sont pourtant des humains comme les autres)
-       if (_IS_BOT) return;
+       // Rejeter pirates et robots (qui sont pourtant des humains comme les autres)
+       if (_IS_BOT OR strlen($referer)!=strcspn($referer,'<>"\'')) return;
 
        // Ne pas tenir compte des tentatives de spam des forums
        if ($_SERVER['REQUEST_METHOD'] !== 'GET'
index 1d11898..7074006 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5201d64..987493f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
old mode 100644 (file)
new mode 100755 (executable)
index 33473cd..e9b092c
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 191ba96..18a27ca 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -139,7 +139,17 @@ function spip_mysql_query($query, $serveur='',$requeter=true) {
        } else $t = 0 ;
  
        $connexion['last'] = $query;
-       $r = $link ? mysql_query($query, $link) : mysql_query($query);
+
+       // ajouter un debug utile dans log/mysql-slow.log ?
+       $debug = (!defined('_DEBUG_SLOW_QUERIES') || !_DEBUG_SLOW_QUERIES)
+               ? ''
+               :       ' /* '
+                       .str_replace('*/','@/',
+                               $_SERVER['REQUEST_URI'].' + '.$GLOBALS['ip']
+                       )
+                       .' */';
+
+       $r = $link ? mysql_query($query.$debug, $link) : mysql_query($query.$debug);
 
        if ($e = spip_mysql_errno($serveur))    // Log de l'erreur eventuelle
                $e .= spip_mysql_error($query, $serveur); // et du fautif
@@ -291,8 +301,14 @@ function traite_query($query, $db='', $prefixe='') {
        } else {
                $suite = strstr($query, $regs[0]);
                $query = substr($query, 0, -strlen($suite));
-               if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
-                 $suite = $r[1] . traite_query($r[2], $db, $prefixe);
+               // propager le prefixe en cas de requete imbriquee
+               // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
+               // modifier une requete qui est en fait juste du texte dans un champ
+               if (strpos(strtoupper($suite),"SELECT")!==false) {
+                       list($suite,$textes) = query_echappe_textes($suite);
+                       if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r))
+                   $suite = $r[1] . traite_query($r[2], $db, $prefixe);
+                       $suite = query_reinjecte_textes($suite, $textes);
                }
        }
        $r = preg_replace(_SQL_PREFIXE_TABLE, '\1'.$pref, $query) . $suite;
@@ -314,7 +330,8 @@ function spip_mysql_selectdb($db) {
 
 // http://doc.spip.org/@spip_mysql_listdbs
 function spip_mysql_listdbs($serveur='',$requeter=true) {
-       return @mysql_list_dbs();
+       $res = spip_mysql_query("SHOW DATABASES");
+       return $res;
 }
 
 // Fonction de creation d'une table SQL nommee $nom
@@ -397,7 +414,8 @@ function spip_mysql_create_view($nom, $query_select, $serveur='',$requeter=true)
 function spip_mysql_drop_table($table, $exist='', $serveur='',$requeter=true)
 {
        if ($exist) $exist =" IF EXISTS";
-       return spip_mysql_query("DROP TABLE$exist `$table`", $serveur, $requeter);
+       if (!preg_match('@^\w+$@', $table)) $table = "`$table`";
+       return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
 }
 
 // supprime une vue 
@@ -416,7 +434,8 @@ function spip_mysql_showbase($match, $serveur='',$requeter=true)
 // http://doc.spip.org/@spip_mysql_repair
 function spip_mysql_repair($table, $serveur='',$requeter=true)
 {
-       return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
+       if (!preg_match('@^\w+$@', $table)) $table = "`$table`";
+       return spip_mysql_query("REPAIR TABLE $table", $serveur, $requeter);
 }
 
 // Recupere la definition d'une table ou d'une vue MySQL
index 459ba90..2efe534 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -525,6 +525,10 @@ function spip_pg_groupby($groupby, $from, $select)
        if (!$groupby) return '';
 
        $groupby = spip_pg_frommysql($groupby);
+       // Ne pas mettre dans le Group-By des valeurs numeriques
+       // issue de prepare_recherche
+       $groupby = preg_replace('/^\s*\d+\s+AS\s+\w+\s*,?\s*/i','', $groupby);
+       $groupby = preg_replace('/,\s*\d+\s+AS\s+\w+\s*/i','', $groupby);
        $groupby = preg_replace('/\s+AS\s+\w+\s*/i','', $groupby);
 
        return "\nGROUP BY $groupby"; 
@@ -813,7 +817,9 @@ function spip_pg_insertq_multi($table, $tab_couples=array(), $desc=array(), $ser
        
        // recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
        // une premiere fois pour ajouter maj dans les cles
-       $les_cles = spip_pg_ajouter_champs_timestamp($table, $tab_couples[0], $desc, $serveur);
+       
+       $c = isset($tab_couples[0]) ? $tab_couples[0] : array();
+       $les_cles = spip_pg_ajouter_champs_timestamp($table, $c, $desc, $serveur);
        
        $cles = "(" . join(',',array_keys($les_cles)). ')';
        $valeurs = array();
@@ -976,7 +982,7 @@ function spip_pg_sequence($table)
 function spip_pg_cite($v, $t)
 {
        if (sql_test_date($t)) {
-               if (strpos("0123456789", $v[0]) === false)
+               if ($v AND (strpos("0123456789", $v[0]) === false))
                        return spip_pg_frommysql($v);
                else {
                        if (strpos($v, "-00-00") <= 4) {
@@ -1007,7 +1013,10 @@ function spip_pg_hex($v)
 
 function spip_pg_quote($v, $type='')
 {
-       return ($type === 'int' AND !$v) ? '0' :  _q($v);
+       return ($type === 'int' AND !$v) ? '0' :
+               (is_numeric($v) ? strval($v) :
+                       (!is_array($v) ? ("'" . pg_escape_string($v) . "'")
+                        : join(",", array_map('_q', $v))));
 }
 
 function spip_pg_date_proche($champ, $interval, $unite)
@@ -1030,6 +1039,8 @@ function spip_pg_in($val, $valeurs, $not='', $serveur) {
 //
 // IN (...) souvent limite a 255  elements, d'ou cette fonction assistante
 //
+       // s'il n'y a pas de valeur, eviter de produire un IN vide: PG rale.
+       if (!$valeurs) return $not ? '0=0' : '0=1';
        if (strpos($valeurs, "CAST(x'") !== false)
                return "($val=" . join("OR $val=", explode(',',$valeurs)).')';
        $n = $i = 0;
index 2584b18..476f50a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 356d837..7f9d75e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 29d79d5..a86d010 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -167,12 +167,8 @@ function _sqlite_func_instr ($s, $search) {
 
 // http://doc.spip.org/@_sqlite_func_least
 function _sqlite_func_least () {
-       $numargs = func_num_args();
        $arg_list = func_get_args();
-       $least=$arg_list[0];
-       for ($i = 0; $i < $numargs; $i++) {
-               if ($arg_list[$i] < $least) $least=$arg_list[$i];
-       }
+    $least = min($arg_list);
        #spip_log("Passage avec LEAST : $least",'debug');
        return $least;
 }
@@ -234,9 +230,16 @@ function _sqlite_func_strftime($date, $conv){
        return strftime($conv, $date);  
 }
 
-// http://doc.spip.org/@_sqlite_func_to_days
+/**
+ * Nombre de jour entre 0000-00-00 et $d
+ * http://doc.spip.org/@_sqlite_func_to_days
+ * cf http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_to-days
+ * @param string $d
+ * @return int
+ */
 function _sqlite_func_to_days ($d) {
-       $result = date("z", _sqlite_func_unix_timestamp($d));
+    $offset = 719528; // nb de jour entre 0000-00-00 et timestamp 0=1970-01-01
+       $result = $offset+(int)ceil(_sqlite_func_unix_timestamp($d)/(24*3600));
        #spip_log("Passage avec TO_DAYS : $d, $result",'debug');
        return $result;
 }
index 96116f9..ea8a9f5 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -1309,16 +1309,16 @@ function _sqlite_charger_version($version=''){
 function _sqlite_modifier_table($table, $colonne, $opt=array(), $serveur=''){
 
        if (is_array($table)) {
-               $table_origine = array_shift(array_keys($table));
-               $table_destination = array_shift($table);
+               reset($table);
+               list($table_origine,$table_destination) = each($table);
        } else {
                $table_origine = $table_destination = $table;
        }
        // ne prend actuellement qu'un changement
        // mais pourra etre adapte pour changer plus qu'une colonne a la fois
        if (is_array($colonne)) {
-               $colonne_origine = array_shift(array_keys($colonne));
-               $colonne_destination = array_shift($colonne);
+               reset($colonne);
+               list($colonne_origine,$colonne_destination) = each($colonne);
        } else {
                $colonne_origine = $colonne_destination = $colonne;
        }       
@@ -1666,7 +1666,6 @@ class sqlite_traiter_requete{
        
        // Pour les corrections a effectuer sur les requetes :
        var $textes = array();  // array(code=>'texte') trouvĂ©
-       var $codeEchappements = "%@##@%";
        
        
        // constructeur
@@ -1749,16 +1748,13 @@ class sqlite_traiter_requete{
        // enleve les textes, transforme la requete pour quelle soit
        // bien interpretee par sqlite, puis remet les textes
        // la fonction affecte $this->query
-// http://doc.spip.org/@traduire_requete
+       // http://doc.spip.org/@traduire_requete
        function traduire_requete(){
                //
                // 1) Protection des textes en les remplacant par des codes
                //
-               // enlever les echappements ''
-               $this->query = str_replace("''", $this->codeEchappements, $this->query);
-               // enlever les 'textes'
-               $this->textes = array(); // vider 
-               $this->query = preg_replace_callback("/('[^']*')/", array(&$this, '_remplacerTexteParCode'), $this->query);
+               // enlever les 'textes' et initialiser avec
+               list($this->query, $textes) = query_echappe_textes($this->query);
                
                //
                // 2) Corrections de la requete
@@ -1859,12 +1855,12 @@ class sqlite_traiter_requete{
                //
                // 3) Remise en place des textes d'origine
                //
-               // remettre les 'textes'
-               foreach ($this->textes as $cle=>$val){
-                       $this->query = str_replace($cle, $val, $this->query);
-               }
-               // remettre les echappements ''
-               $this->query = str_replace($this->codeEchappements,"''",$this->query);
+               // Correction Antiquotes et echappements
+               // ` => rien
+               if (strpos($this->query,'`')!==false)
+                       $this->query = str_replace('`','', $this->query);
+
+               $this->query = query_reinjecte_textes($this->query, $textes);
        }
        
 
index 2c66dba..6e99a2d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 7101c2d..3e05e19 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -16,11 +16,10 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 
 function typographie_fr_dist($letexte) {
 
-       static $trans;
-
+       static $trans, $cherche1, $remplace1, $cherche2, $remplace2;
        // Nettoyer 160 = nbsp ; 187 = raquo ; 171 = laquo ; 176 = deg ;
        // 147 = ldquo; 148 = rdquo; ' = zouli apostrophe
-       if (!$trans) {
+       if (!isset($trans)) {
                $trans = array(
                        "'" => "&#8217;",
                        "&nbsp;" => "~",
@@ -38,36 +37,34 @@ function typographie_fr_dist($letexte) {
                $chars_trans = explode(" ",$chars_trans);
                foreach($chars as $k=>$r)
                        $trans[$chars_trans[$k]] = $r;
-       }
 
-       $letexte = strtr($letexte, $trans);
 
-       $cherche1 = array(
+               $cherche1 = array(
                /* 1 */         '/((?:^|[^\#0-9a-zA-Z\&])[\#0-9a-zA-Z]*)\;/S',
                /* 2 */         '/&#187;| --?,|(?::| %)(?:\W|$)/S',
-               /* 3 */         '/([^[<(])([!?][!?\.]*)/iS',
+               /* 3 */         '/([^[<(!?.])([!?][!?\.]*)/iS',
                /* 4 */         '/&#171;|(?:M(?:M?\.|mes?|r\.?)|[MnN]&#176;) /S'
-       );
-       $remplace1 = array(
+                                 );
+               $remplace1 = array(
                /* 1 */         '\1~;',
                /* 2 */         '~\0',
                /* 3 */         '\1~\2',
                /* 4 */         '\0~'
-       );
-       $letexte = preg_replace($cherche1, $remplace1, $letexte);
-       $letexte = preg_replace("/ *~+ */S", "~", $letexte);
-
-       $cherche2 = array(
+                                  );
+               $cherche2 = array(
                '/([^-\n]|^)--([^-]|$)/S',
-               ',(http|https|ftp|mailto)~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S',
+               ',(' ._PROTOCOLES_STD . ')~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S',
                '/~/'
-       );
-       $remplace2 = array(
+                                 );
+               $remplace2 = array(
                '\1&mdash;\2',
                '\1\3\4',
                '&nbsp;'
-       );
+                                  );
+       }
+       $letexte = strtr($letexte, $trans);
+       $letexte = preg_replace($cherche1, $remplace1, $letexte);
+       $letexte = preg_replace("/ *~+ */S", "~", $letexte);
        $letexte = preg_replace($cherche2, $remplace2, $letexte);
-
        return $letexte;
 }
index 96c4236..16b6261 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 2039933..63aa958 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0901d21..8b6cc36 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0888670..40847a4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3cadac0..14a2a36 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cd9ebb7..cd8493e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 3cd14b3..941e821 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index b69e800..54241ea 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 453d084..40bf43d 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 25c691c..ebd69ed 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -22,12 +22,14 @@ function charger_dtd($grammaire, $avail, $rotlvl)
        if (isset($dtd[$grammaire]))
                return $dtd[$grammaire];
 
-       if ($avail == 'SYSTEM') $grammaire = find_in_path($grammaire);
+       if ($avail == 'SYSTEM') {
+               $grammaire = find_in_path($grammaire);
+       }
+       if (!$grammaire) return $dtd[''] = array();
 
        $file = _DIR_CACHE_XML . preg_replace('/[^\w.]/','_', $rotlvl) . '.gz';
 
        if (lire_fichier($file, $r)) {
-               if (!$grammaire) return array();
                if (($avail == 'SYSTEM') AND filemtime($file) < filemtime($grammaire))
                                $r = false;
        }
index b3a5ce7..7b9b0b9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5389f2c..be65f87 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a7cb70d..7186f34 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 80deb70..9a2cb5a 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 72ffe22..8c53895 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 585230d..79920a6 100644 (file)
@@ -134,7 +134,7 @@ class JavaScriptPacker {
                $parser->add('/\'[^\'\\n\\r]*\'/',$this->IGNORE);
                $parser->add('/"[^"\\n\\r]*"/', $this->IGNORE);
                // remove comments
-               $parser->add('/\\/\\/[^\\n\\r]*[\\n\\r]/', ' ');
+               $parser->add('/\\/\\/[^\\n\\r]*[\\n\\r]/', "\n");
                $parser->add('/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\//', ' ');
                // protect regular expressions
                $parser->add('/\\s+(\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?)/', '$2'); // IGNORE
index 00c3dd5..450a45c 100644 (file)
@@ -4,7 +4,7 @@
        <auteur>Collectif SPIP 2009</auteur>\r
        <icon>images/compresseur-32.png</icon>\r
        <licence>GPL</licence>\r
-       <version>1.0.1</version>\r
+       <version>1.0.2</version>\r
        <etat>stable</etat>\r
        <description>\r
                Compression des css et javascript dans l'ent&#234;te des pages html de <code>ecrire/</code> et/ou du site public\r
index f98e553..ee409b0 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 0bf4e64..4a5fb5c 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a028408..1c28f76 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5b8164f..8819094 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f76b05c..0c376e4 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 5b3a214..7b9301f 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a3e9a34..80109f5 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 082783d..09da22d 100644 (file)
@@ -1,12 +1,12 @@
 <plugin>\r
        <nom>Filtres Images et Couleurs</nom>\r
-       <slogan>Filtres de transformation d'image et de couleurs</slogan>\r
+       <slogan>Filtres de transformation d'images et de couleurs</slogan>\r
        <auteur>Collectif SPIP</auteur>\r
        <icon>images/image_filtre-32.png</icon>\r
        <licence>GPL</licence>\r
        <version>1.0.1</version>\r
        <etat>stable</etat>\r
-       <description>Filtres de transformation d'image et de couleurs</description>\r
+       <description>Filtres de transformation d'images et de couleurs</description>\r
        <prefix>images</prefix>\r
        <fonctions>images_fonctions.php</fonctions>\r
        <categorie>multimedia</categorie>\r
index 1c768c9..9cfbf10 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index bb6c566..b203c05 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f35b33b..2a61764 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2010                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index f9f7bf6..e71f24c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 80464a7..9996482 100644 (file)
                                if (options.nameSpace) {
                                        nameSpace = 'class="'+options.nameSpace+'"';
                                }
+                               currentScrollPosition = $$.scrollTop();
                                $$.wrap('<div '+nameSpace+'></div>');
                                $$.wrap('<div '+id+' class="markItUp"></div>');
                                $$.wrap('<div class="markItUpContainer"></div>');
                                $$.addClass("markItUpEditor");
+                               $$.scrollTop(currentScrollPosition);
 
                                // add the header before the textarea
                                header = $('<div class="markItUpHeader"></div>').insertBefore($$);
index 88d4fe7..ee7dfc0 100644 (file)
                                                        objet[1])\r
                                                )\r
                                                .removeClass('ajaxLoad');\r
+                                       \r
+                                       //ouvre un nouvel onglet lorsqu'on clique sur un lien dans la prĂ©visualisation\r
+                                       $(".markItUpPreview a").attr("target","blank");\r
+\r
                                        return false;\r
                                });\r
                                $('.previsuEditer').click(function(){\r
index 62a3787..f6c1613 100644 (file)
@@ -10,7 +10,7 @@
        </slogan>\r
        <auteur>Matthieu Marcillaud</auteur>\r
        <licence>GNU/GPL</licence>\r
-       <version>1.7.8</version>\r
+       <version>1.7.9</version>\r
        <description>\r
        <multi>\r
        [fr]Porte plume est une barre d'outil extensible pour SPIP qui\r
index 72053b3..fc8b727 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -34,6 +34,19 @@ function inc_safehtml_dist($t) {
        }
 
        if ($test > 0) {
+               # autoriser des trucs
+               # ex: l'embed de youtube
+               if (
+               false !== strpos($t, 'iframe')) {
+                       foreach (extraire_balises($t, 'iframe') as $iframe) {
+                               if (preg_match(',^http://(www\.)?(youtube\.com|(player\.)?vimeo\.com)/.*,', extraire_attribut($iframe, 'src'))) {
+                                       $re = '___IFRAME___'.md5($iframe);
+                                       $ok[$re] = $iframe;
+                                       $t = str_replace($iframe, $re, $t);
+                               }
+                       }
+               }
+
                # reset ($process->clear() ne vide que _xhtml...),
                # on doit pouvoir programmer ca plus propremement
                $process->_counter = array();
@@ -45,6 +58,11 @@ function inc_safehtml_dist($t) {
 #              $process->parse(''); # cas particulier ?
                $process->clear();
                $t = $process->parse($t);
+
+               # reinserer les trucs autorises
+               if ($ok)
+               foreach ($ok as $re => $v)
+                       $t = str_replace($re, $v, $t);
        }
        else
                $t = entites_html($t); // tres laid, en cas d'erreur
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index c1d8ee0..286b507
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2009                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
diff --git a/www/favicon.ico b/www/favicon.ico
deleted file mode 100644 (file)
index 8ab9464..0000000
Binary files a/www/favicon.ico and /dev/null differ
index 73c20ed..2225983 100644 (file)
@@ -1,7 +1,7 @@
 /**************************************************************************/
 /*  SPIP, Systeme de publication pour l'internet                          */
 /*                                                                        */
-/*  Copyright (c) 2001-2010                                               */
+/*  Copyright (c) 2001-2014                                               */
 /*  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James */
 /*                                                                        */
 /*  Ce programme est un logiciel libre distribue sous licence GNU/GPL.    */
index 5cae5cb..7df7d66 100644 (file)
@@ -5,7 +5,7 @@
 /**************************************************************************/
 /*  SPIP, Systeme de publication pour l'internet                          */
 /*                                                                        */
-/*  Copyright (c) 2001-2010                                               */
+/*  Copyright (c) 2001-2014                                               */
 /*  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James */
 /*                                                                        */
 /*  Ce programme est un logiciel libre distribue sous licence GNU/GPL.    */
index 499b99e..bd8507b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ef64c4a..dab702e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -75,9 +75,12 @@ function formulaires_editer_auteur_verifier_dist($id_auteur='new', $retour='', $
        $auth_methode = ($auth_methode ? $auth_methode : 'spip');
        include_spip('inc/auth');
        include_spip('inc/autoriser');
+       include_spip('inc/filtres');
 
+       if (!nom_acceptable(_request('nom'))) {
+               $erreurs['nom'] = _T("info_nom_pas_conforme");
+       }
        if ($email = _request('email')){
-               include_spip('inc/filtres');
                // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
                if (!autoriser('modifier','auteur',$id_auteur,null,array('email'=>'?'))
                        AND $GLOBALS['visiteur_session']['id_auteur']==$id_auteur
@@ -91,6 +94,10 @@ function formulaires_editer_auteur_verifier_dist($id_auteur='new', $retour='', $
                }
        }
 
+       if (preg_match(",^\s*javascript,i", _request('url_site'))) {
+               $erreurs['url_site'] = _T('info_url_site_pas_conforme');
+       }
+
        if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)){
                $erreurs['new_login'] = $err;
                $erreurs['message_erreur'] .= $err;
index 6d05072..6383158 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index db1d5c7..57161de 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ba20a0b..4309d21 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -59,12 +59,17 @@ function formulaires_editer_mot_verifier_dist($id_mot='new', $id_groupe=0, $reto
        // la comparaison accepte un numero absent ou different
        // sinon avertir
        if (!count($erreurs) AND !_request('confirm_titre_mot')){
-               if (sql_countsel("spip_mots", 
+               if ($l = sql_allfetsel('id_mot', "spip_mots", 
                                                "titre REGEXP ".sql_quote("^([0-9]+[.] )?".preg_quote(supprimer_numero(_request('titre')))."$")
-                                               ." AND id_mot<>".intval($id_mot)))
-                       $erreurs['titre'] =
-                                               _T('avis_doublon_mot_cle')
-                                               ." <input type='hidden' name='confirm_titre_mot' value='1' />";
+                                      ." AND id_mot<>".intval($id_mot))) {
+                       $a = 'id_mot='.$l[0]['id_mot'];
+                       $h = generer_url_ecrire('mots_edit', $a);
+                       $l = join(' ', array_map('array_shift', $l));
+                       $t = _T('avis_doublon_mot_cle');
+                       $erreurs['titre'] = "$t <a href='$h' title='$l'>?</a>"
+                               ." <input type='hidden' name='confirm_titre_mot' value='1' />";
+                       set_request('edit','oui');
+               }
        }
        return $erreurs;
 }
index 9271455..fd8b91f 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4a1ae01..dc0e297 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a796df2..fce3588 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 278f62e..9d4d2b5 100644 (file)
@@ -29,7 +29,7 @@
                                <label for="password"><:login_pass2:></label>[
                                <span class="erreur_message">(#ENV**{erreurs}|table_valeur{password})</span>
                                ]<input type='password' class='password' name='password' id='password' value="" size='40' />
-                               <span class='details'>&#91;<a href="#URL_PAGE{spip_pass}" id='spip_pass'><:login_motpasseoublie:></a>&#93;</span>
+                               <span class='details'>&#91;<a href="[(#URL_PAGE{spip_pass}|parametre_url{lang,#LANG})]" id='spip_pass'><:login_motpasseoublie:></a>&#93;</span>
                        </li>
                        [(#ENV{rester_connecte})
                        <li class="editer_session"><div class='choix'>
index 89ccd48..79bbf00 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -56,7 +56,7 @@ function formulaires_login_charger_dist($cible="",$login="",$prive=null)
                '_pipeline' => 'affiche_formulaire_login', // faire passer le formulaire dans un pipe dedie pour les methodes auth
                );
 
-       if ($erreur OR !$GLOBALS['visiteur_session']['id_auteur'])
+       if ($erreur OR !isset($GLOBALS['visiteur_session']['id_auteur']) OR !$GLOBALS['visiteur_session']['id_auteur'])
                $valeurs['editable'] = true;
 
        if (is_null($prive) ? is_url_prive($cible) : $prive) {
@@ -64,7 +64,7 @@ function formulaires_login_charger_dist($cible="",$login="",$prive=null)
                $loge = autoriser('ecrire');
        } 
        else
-               $loge = ($GLOBALS['visiteur_session']['auth'] != '');
+               $loge = (isset($GLOBALS['visiteur_session']['auth']) AND $GLOBALS['visiteur_session']['auth'] != '');
 
        // Si on est connecte, appeler traiter()
        // et lancer la redirection si besoin
index 5136305..dba3333 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index fcbb5f4..decbbb1 100644 (file)
@@ -10,12 +10,12 @@ VERSION:2.0
 X-WR-CALNAME;VALUE=TEXT:[(#NOM_SITE_SPIP|filtrer_ical)]
 X-WR-RELCALID:[(#URL_SITE_SPIP|filtrer_ical)]_prive<BOUCLE_article(ARTICLES){lang_select=non}{par date}{inverse}{statut="prop"}>
 BEGIN:VEVENT
-SUMMARY:[(#TITRE|filtrer_ical)] [[(#NOM_SITE_SPIP|filtrer_ical)]] <:info_a_valider:>
+SUMMARY:[(#TITRE|filtrer_ical)] [[(#NOM_SITE_SPIP|filtrer_ical)]] <:info_a_valider|filtrer_ical:>
 UID:article#ID_ARTICLE @ [(#URL_SITE_SPIP|filtrer_ical)]
 DTSTAMP:[(#DATE|date_ical)]
 DTSTART;VALUE=DATE:[(#DATE|affdate{"Ymd"})]
-CATEGORIES:<:info_a_valider:>
-URL:[(#URL_ECRIRE{articles, id_article=#ID_ARTICLE})]
+CATEGORIES:<:info_a_valider|filtrer_ical:>
+URL:[(#URL_ECRIRE*{articles, id_article=#ID_ARTICLE})]
 END:VEVENT</BOUCLE_article>
 BEGIN:VTODO
 SUMMARY:<:info_articles_a_valider|filtrer_ical:>: #TOTAL_BOUCLE [[(#NOM_SITE_SPIP|filtrer_ical)]]
@@ -24,15 +24,15 @@ DESCRIPTION:<BOUCLE_article2(ARTICLES){lang_select=non}{par date}{inverse}{statu
 DTSTAMP:[(#DATE|date_ical)]
 DTSTART:[(#DATE|date_ical)]
 CATEGORIES:<:icone_a_suivre|filtrer_ical:>
-URL:[(#URL_ECRIRE{accueil})]
+URL:[(#URL_ECRIRE*{accueil})]
 END:VTODO</B_article><BOUCLE_breve(BREVES){lang_select=non}{par date}{inverse}{statut="prop"}>
 BEGIN:VEVENT
-SUMMARY:[(#TITRE|filtrer_ical)] [[(#NOM_SITE_SPIP|filtrer_ical)]] <:item_breve_proposee:>
+SUMMARY:[(#TITRE|filtrer_ical)] [[(#NOM_SITE_SPIP|filtrer_ical)]] <:item_breve_proposee|filtrer_ical:>
 UID:breve#ID_BREVE @ [(#URL_SITE_SPIP|filtrer_ical)]
 DTSTAMP:[(#DATE|date_ical)]
 DTSTART:[(#DATE|date_ical)]
-CATEGORIES:<:item_breve_proposee:>
-URL:URL_ECRIRE{breves_voir, id_breve=#ID_BREVE}
+CATEGORIES:<:item_breve_proposee|filtrer_ical:>
+URL:URL_ECRIRE*{breves_voir, id_breve=#ID_BREVE}
 END:VEVENT</BOUCLE_breve>
 BEGIN:VTODO
 SUMMARY:<:info_breves_valider|filtrer_ical:>: #TOTAL_BOUCLE [[(#NOM_SITE_SPIP|filtrer_ical)]]
@@ -41,7 +41,7 @@ DESCRIPTION:<BOUCLE_breve2(BREVES){lang_select=non}{par date}{inverse}{statut="p
 DTSTAMP:[(#DATE|date_ical)]
 DTSTART:[(#DATE|date_ical)]
 CATEGORIES:<:icone_a_suivre|filtrer_ical:>
-URL:[(#URL_ECRIRE{accueil})]
+URL:[(#URL_ECRIRE*{accueil})]
 END:VTODO</B_breve>
 <BOUCLE_message_rv(messages auteurs_messages){lang_select=non}{par date_heure}{inverse}{statut="publie"}{rv=oui}{auteurs_messages.id_auteur=#ID_AUTEUR}>
 BEGIN:VEVENT
@@ -52,7 +52,7 @@ DTSTAMP:[(#DATE_HEURE|date_ical)]
 DTSTART:[(#DATE_HEURE|date_ical)]
 DTEND:[(#DATE_FIN|date_ical)]
 CATEGORIES:<:info_pense_bete|filtrer_ical:>
-URL:[(#URL_ECRIRE{message, id_message=#ID_MESSAGE})]
+URL:[(#URL_ECRIRE*{message, id_message=#ID_MESSAGE})]
 END:VEVENT</BOUCLE_message_rv>
 <BOUCLE_message_rv_tous(messages auteurs_messages){lang_select=non}{par date_heure}{inverse}{statut="publie"}{rv=oui}{type=affich}>
 BEGIN:VEVENT
@@ -63,7 +63,7 @@ DTSTAMP:[(#DATE_HEURE|date_ical)]
 DTSTART:[(#DATE_HEURE|date_ical)]
 DTEND:[(#DATE_FIN|date_ical)]
 CATEGORIES:<:info_annonce|filtrer_ical:>
-URL:[(#URL_ECRIRE{message, id_message=#ID_MESSAGE})]
+URL:[(#URL_ECRIRE*{message, id_message=#ID_MESSAGE})]
 END:VEVENT</BOUCLE_message_rv_tous>
 <BOUCLE_message_pb(messages auteurs_messages){lang_select=non}{par date_heure}{inverse}{statut="publie"}{rv!=oui}{type=pb}{id_auteur=#ID_AUTEUR}>
 BEGIN:VTODO
@@ -73,7 +73,7 @@ UID:message#ID_MESSAGE @ [(#URL_SITE_SPIP|filtrer_ical)]
 DTSTAMP:[(#DATE_HEURE|date_ical)]
 DTSTART:[(#DATE_HEURE|date_ical)]
 CATEGORIES:<:info_pense_bete|filtrer_ical:>
-URL:[(#URL_ECRIRE{message, id_message=#ID_MESSAGE})]
+URL:[(#URL_ECRIRE*{message, id_message=#ID_MESSAGE})]
 END:VTODO</BOUCLE_message_pb>
 <BOUCLE_message_n(messages auteurs_messages){lang_select=non}{par date_heure}{inverse}{statut="publie"}{rv!=oui}{vu=non}{type=normal}{auteurs_messages.id_auteur=#ID_AUTEUR}>
 BEGIN:VTODO
@@ -88,7 +88,7 @@ UID:message#ID_MESSAGE @ [(#URL_SITE_SPIP|filtrer_ical)]
 DTSTAMP:[(#DATE_HEURE|date_ical)]
 DTSTART:[(#DATE_HEURE|date_ical)]
 CATEGORIES:<:info_message_2|filtrer_ical:>
-URL:[(#URL_ECRIRE{message, id_message=#ID_MESSAGE})]
+URL:[(#URL_ECRIRE*{message, id_message=#ID_MESSAGE})]
 <BOUCLE_message_n_a(AUTEURS auteurs_messages){lang_select=non}{id_message}>[(#ID_AUTEUR
 |=={#ENV{id_auteur}}|?{ORGANIZER,ATTENDEE})]:[(#NOM|filtrer_ical)][ <(#EMAIL|filtrer_ical)>]
 </BOUCLE_message_n_a>END:VTODO</BOUCLE_message_n>
@@ -103,7 +103,7 @@ DTSTAMP:[(#DATE|date_ical)]
 DTSTART:[(#DATE|date_ical)]
 DTEND:[(#DATE|date_ical{60})]
 CATEGORIES:<:icone_forum_suivi|filtrer_ical:>
-URL:[(#URL_ECRIRE{controle_forum, debut_id_forum=#ID_FORUM})]
+URL:[(#URL_ECRIRE*{controle_forum, debut_id_forum=#ID_FORUM})]
 END:VEVENT</BOUCLE_forum>
 BEGIN:TODO
 SUMMARY:[(#NOM_SITE_SPIP|filtrer_ical)]] <:icone_forum_suivi|filtrer_ical:>
@@ -111,11 +111,11 @@ UID:forum#ID_FORUM @ [(#URL_SITE_SPIP|filtrer_ical)]
 DTSTAMP:[(#DATE|date_ical)]
 DTSTART:[(#DATE|date_ical)]
 CATEGORIES:<:icone_forum_suivi|filtrer_ical:>
-URL:[(#URL_ECRIRE{controle_forum})]
+URL:[(#URL_ECRIRE*{controle_forum})]
 END:TODO
 </B_forum><?php } ?>
 END:VCALENDAR
 <?php } else {
 include_spip('inc/minipres'); 
 echo minipres();
-}?></BOUCLE0>
\ No newline at end of file
+}?></BOUCLE0>
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 5e9a0a7..7b4b014 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -25,16 +25,19 @@ function informer_auteur($bof)
        if ($row AND is_array($row))
                unset($row['id_auteur']);
        else {
-               // piocher les infos sur un autre login
-               if ($n = sql_countsel('spip_auteurs',"login<>''")){
-                       $n = (abs(crc32($login))%$n);
-                       $row = auth_informer_login(sql_getfetsel('login','spip_auteurs',"login<>''",'','',"$n,1"));
-                       if ($row AND is_array($row)){
-                               unset($row['id_auteur']);
-                               $row['login'] = $login;
-                       }
-               }
-               else $row = array();
+               // generer de fausses infos, mais credibles, pour eviter une attaque
+               // http://core.spip.org/issues/1758
+
+               include_spip('inc/securiser_action');
+               $fauxalea1 = md5('fauxalea'.secret_du_site().$login.floor(date('U')/86400));
+               $fauxalea2 = md5('fauxalea'.secret_du_site().$login.ceil(date('U')/86400));
+
+               $row = array('login' => $login,
+                'cnx' => 0,
+                'logo' => "",
+                'alea_actuel' => substr_replace($fauxalea1,'.',24,0),
+                'alea_futur' => substr_replace($fauxalea2,'.',24,0)
+               );
        }
 
        return json_export($row);
index c5eef88..54de5fc 100644 (file)
@@ -33,7 +33,7 @@ var iframeHandler = function(data,jForm,success) {
           zip_form
           .find("form")
             .async_upload(function(res,s){
-              success(res,s,jForm);
+              success(res,s,'',jForm);
             });
           jForm.after(zip_form[0]);
           return false;  
@@ -52,7 +52,7 @@ function async_upload_before_submit(data,form) {
    .val("");
 };
 
-function async_upload_article_edit(res,s,jForm){
+function async_upload_article_edit(res,s,xhr,jForm){
       res = iframeHandler(res,jForm,async_upload_article_edit);
       if(!res) return true;
       var cont;
@@ -95,7 +95,7 @@ function async_upload_article_edit(res,s,jForm){
       return true;
 }
 
-function async_upload_icon(res,s,jForm) {
+function async_upload_icon(res,s,xhr,jForm) {
   res = iframeHandler(res,jForm);
   if(!res) return true;
   res.find(">div").each(function(){
@@ -107,7 +107,7 @@ function async_upload_icon(res,s,jForm) {
   return true;                     
 }
 
-function async_upload_portfolio_documents(res,s,jForm){
+function async_upload_portfolio_documents(res,s,xhr,jForm){
   res = iframeHandler(res,jForm,async_upload_portfolio_documents);
 
   if(!res) return true;
index c006bb1..ea4b8f3 100644 (file)
@@ -1,3 +1,24 @@
+function init_bandeau_gadgets(url_toutsite,url_navrapide,url_agenda,html_messagerie){
+       verifForm();
+       calculer_top_bandeau_sec();
+       $("#page,#bandeau-principal")
+       .mouseover(function(){
+               if (typeof(window["changestyle"])!=="undefined") window.changestyle("garder-recherche");
+               });
+       init_gadgets(url_toutsite,url_navrapide,url_agenda,html_messagerie);
+}
+
+function calculer_top_bandeau_sec() {
+       var hauteur_max = 0;
+       var hauteur_bouton = 0;
+       
+       $(".boutons_admin a.boutons_admin .icon_texte").each(function(){
+               hauteur_bouton = parseInt($(this).height());
+               if (hauteur_bouton > hauteur_max) hauteur_max = hauteur_bouton;
+       });
+       $(".boutons_admin a.boutons_admin .icon_texte").height(hauteur_max);
+}      
+
 function init_gadgets(url_toutsite,url_navrapide,url_agenda,html_messagerie){
        jQuery('#boutonbandeautoutsite')
        .one('mouseover',function(event){
@@ -35,4 +56,4 @@ function init_gadgets(url_toutsite,url_navrapide,url_agenda,html_messagerie){
        // la case de recherche s'efface la premiere fois qu'on la clique
        jQuery('#form_recherche')
        .one('click',function(){this.value='';});
-}
\ No newline at end of file
+}
index 933b636..3bc8bc1 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * autosave plugin
  *
- * Copyright (c) 2009 Fil (fil@rezo.net)
+ * Copyright (c) 2009-2014 Fil (fil@rezo.net)
  * Dual licensed under the MIT and GPL licenses:
  * http://www.opensource.org/licenses/mit-license.php
  * http://www.gnu.org/licenses/gpl.html
index dff1c6d..b499d4d 100644 (file)
-/*\r
- * jQuery Form Plugin\r
- * version: 2.36 (07-NOV-2009)\r
- * @requires jQuery v1.2.6 or later\r
- *\r
- * Examples and documentation at: http://malsup.com/jquery/form/\r
- * Dual licensed under the MIT and GPL licenses:\r
- *   http://www.opensource.org/licenses/mit-license.php\r
- *   http://www.gnu.org/licenses/gpl.html\r
- */\r
-;(function($) {\r
-\r
-/*\r
-       Usage Note:\r
-       -----------\r
-       Do not use both ajaxSubmit and ajaxForm on the same form.  These\r
-       functions are intended to be exclusive.  Use ajaxSubmit if you want\r
-       to bind your own submit handler to the form.  For example,\r
-\r
-       $(document).ready(function() {\r
-               $('#myForm').bind('submit', function() {\r
-                       $(this).ajaxSubmit({\r
-                               target: '#output'\r
-                       });\r
-                       return false; // <-- important!\r
-               });\r
-       });\r
-\r
-       Use ajaxForm when you want the plugin to manage all the event binding\r
-       for you.  For example,\r
-\r
-       $(document).ready(function() {\r
-               $('#myForm').ajaxForm({\r
-                       target: '#output'\r
-               });\r
-       });\r
-\r
-       When using ajaxForm, the ajaxSubmit function will be invoked for you\r
-       at the appropriate time.\r
-*/\r
-\r
-/**\r
- * ajaxSubmit() provides a mechanism for immediately submitting\r
- * an HTML form using AJAX.\r
- */\r
-$.fn.ajaxSubmit = function(options) {\r
-       // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\r
-       if (!this.length) {\r
-               log('ajaxSubmit: skipping submit process - no element selected');\r
-               return this;\r
-       }\r
-\r
-       if (typeof options == 'function')\r
-               options = { success: options };\r
-\r
-       var url = $.trim(this.attr('action'));\r
-       if (url) {\r
-               // clean url (don't include hash vaue)\r
-               url = (url.match(/^([^#]+)/)||[])[1];\r
-       }\r
-       url = url || window.location.href || '';\r
-\r
-       options = $.extend({\r
-               url:  url,\r
-               type: this.attr('method') || 'GET',\r
-               iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\r
-       }, options || {});\r
-\r
-       // hook for manipulating the form data before it is extracted;\r
-       // convenient for use with rich editors like tinyMCE or FCKEditor\r
-       var veto = {};\r
-       this.trigger('form-pre-serialize', [this, options, veto]);\r
-       if (veto.veto) {\r
-               log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\r
-               return this;\r
-       }\r
-\r
-       // provide opportunity to alter form data before it is serialized\r
-       if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\r
-               log('ajaxSubmit: submit aborted via beforeSerialize callback');\r
-               return this;\r
-       }\r
-\r
-       var a = this.formToArray(options.semantic);\r
-       if (options.data) {\r
-               options.extraData = options.data;\r
-               for (var n in options.data) {\r
-                 if(options.data[n] instanceof Array) {\r
-                       for (var k in options.data[n])\r
-                         a.push( { name: n, value: options.data[n][k] } );\r
-                 }\r
-                 else\r
-                        a.push( { name: n, value: options.data[n] } );\r
-               }\r
-       }\r
-\r
-       // give pre-submit callback an opportunity to abort the submit\r
-       if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\r
-               log('ajaxSubmit: submit aborted via beforeSubmit callback');\r
-               return this;\r
-       }\r
-\r
-       // fire vetoable 'validate' event\r
-       this.trigger('form-submit-validate', [a, this, options, veto]);\r
-       if (veto.veto) {\r
-               log('ajaxSubmit: submit vetoed via form-submit-validate trigger');\r
-               return this;\r
-       }\r
-\r
-       var q = $.param(a);\r
-\r
-       if (options.type.toUpperCase() == 'GET') {\r
-               options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\r
-               options.data = null;  // data is null for 'get'\r
-       }\r
-       else\r
-               options.data = q; // data is the query string for 'post'\r
-\r
-       var $form = this, callbacks = [];\r
-       if (options.resetForm) callbacks.push(function() { $form.resetForm(); });\r
-       if (options.clearForm) callbacks.push(function() { $form.clearForm(); });\r
-\r
-       // perform a load on the target only if dataType is not provided\r
-       if (!options.dataType && options.target) {\r
-               var oldSuccess = options.success || function(){};\r
-               callbacks.push(function(data) {\r
-                       $(options.target).html(data).each(oldSuccess, arguments);\r
-               });\r
-       }\r
-       else if (options.success)\r
-               callbacks.push(options.success);\r
-\r
-       options.success = function(data, status) {\r
-               for (var i=0, max=callbacks.length; i < max; i++)\r
-                       callbacks[i].apply(options, [data, status, $form]);\r
-       };\r
-\r
-       // are there files to upload?\r
-       var files = $('input:file', this).fieldValue();\r
-       var found = false;\r
-       for (var j=0; j < files.length; j++)\r
-               if (files[j])\r
-                       found = true;\r
-\r
-       var multipart = false;\r
-//     var mp = 'multipart/form-data';\r
-//     multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\r
-\r
-       // options.iframe allows user to force iframe mode\r
-       // 06-NOV-09: now defaulting to iframe mode if file input is detected\r
-   if ((files.length && options.iframe !== false) || options.iframe || found || multipart) {\r
-          // hack to fix Safari hang (thanks to Tim Molendijk for this)\r
-          // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\r
-          if (options.closeKeepAlive)\r
-                  $.get(options.closeKeepAlive, fileUpload);\r
-          else\r
-                  fileUpload();\r
-          }\r
-   else\r
-          $.ajax(options);\r
-\r
-       // fire 'notify' event\r
-       this.trigger('form-submit-notify', [this, options]);\r
-       return this;\r
-\r
-\r
-       // private function for handling file uploads (hat tip to YAHOO!)\r
-       function fileUpload() {\r
-               var form = $form[0];\r
-\r
-               if ($(':input[name=submit]', form).length) {\r
-                       alert('Error: Form elements must not be named "submit".');\r
-                       return;\r
-               }\r
-\r
-               var opts = $.extend({}, $.ajaxSettings, options);\r
-               var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);\r
-\r
-               var id = 'jqFormIO' + (new Date().getTime());\r
-               var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" />');\r
-               var io = $io[0];\r
-\r
-               $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });\r
-\r
-               var xhr = { // mock object\r
-                       aborted: 0,\r
-                       responseText: null,\r
-                       responseXML: null,\r
-                       status: 0,\r
-                       statusText: 'n/a',\r
-                       getAllResponseHeaders: function() {},\r
-                       getResponseHeader: function() {},\r
-                       setRequestHeader: function() {},\r
-                       abort: function() {\r
-                               this.aborted = 1;\r
-                               $io.attr('src', opts.iframeSrc); // abort op in progress\r
-                       }\r
-               };\r
-\r
-               var g = opts.global;\r
-               // trigger ajax global events so that activity/block indicators work like normal\r
-               if (g && ! $.active++) $.event.trigger("ajaxStart");\r
-               if (g) $.event.trigger("ajaxSend", [xhr, opts]);\r
-\r
-               if (s.beforeSend && s.beforeSend(xhr, s) === false) {\r
-                       s.global && $.active--;\r
-                       return;\r
-               }\r
-               if (xhr.aborted)\r
-                       return;\r
-\r
-               var cbInvoked = 0;\r
-               var timedOut = 0;\r
-\r
-               // add submitting element to data if we know it\r
-               var sub = form.clk;\r
-               if (sub) {\r
-                       var n = sub.name;\r
-                       if (n && !sub.disabled) {\r
-                               options.extraData = options.extraData || {};\r
-                               options.extraData[n] = sub.value;\r
-                               if (sub.type == "image") {\r
-                                       options.extraData[name+'.x'] = form.clk_x;\r
-                                       options.extraData[name+'.y'] = form.clk_y;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               // take a breath so that pending repaints get some cpu time before the upload starts\r
-               setTimeout(function() {\r
-                       // make sure form attrs are set\r
-                       var t = $form.attr('target'), a = $form.attr('action');\r
-\r
-                       // update form attrs in IE friendly way\r
-                       form.setAttribute('target',id);\r
-                       if (form.getAttribute('method') != 'POST')\r
-                               form.setAttribute('method', 'POST');\r
-                       if (form.getAttribute('action') != opts.url)\r
-                               form.setAttribute('action', opts.url);\r
-\r
-                       // ie borks in some cases when setting encoding\r
-                       if (! options.skipEncodingOverride) {\r
-                               $form.attr({\r
-                                       encoding: 'multipart/form-data',\r
-                                       enctype:  'multipart/form-data'\r
-                               });\r
-                       }\r
-\r
-                       // support timout\r
-                       if (opts.timeout)\r
-                               setTimeout(function() { timedOut = true; cb(); }, opts.timeout);\r
-\r
-                       // add "extra" data to form if provided in options\r
-                       var extraInputs = [];\r
-                       try {\r
-                               if (options.extraData)\r
-                                       for (var n in options.extraData)\r
-                                               extraInputs.push(\r
-                                                       $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')\r
-                                                               .appendTo(form)[0]);\r
-\r
-                               // add iframe to doc and submit the form\r
-                               $io.appendTo('body');\r
-                               io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);\r
-                               form.submit();\r
-                       }\r
-                       finally {\r
-                               // reset attrs and remove "extra" input elements\r
-                               form.setAttribute('action',a);\r
-                               t ? form.setAttribute('target', t) : $form.removeAttr('target');\r
-                               $(extraInputs).remove();\r
-                       }\r
-               }, 10);\r
-\r
-               var domCheckCount = 50;\r
-\r
-               function cb() {\r
-                       if (cbInvoked++) return;\r
-\r
-                       io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);\r
-\r
-                       var ok = true;\r
-                       try {\r
-                               if (timedOut) throw 'timeout';\r
-                               // extract the server response from the iframe\r
-                               var data, doc;\r
-\r
-                               doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;\r
-\r
-                               var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);\r
-                               log('isXml='+isXml);\r
-                               if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {\r
-                                       if (--domCheckCount) {\r
-                                               // in some browsers (Opera) the iframe DOM is not always traversable when\r
-                                               // the onload callback fires, so we loop a bit to accommodate\r
-                                               cbInvoked = 0;\r
-                                               setTimeout(cb, 100);\r
-                                               return;\r
-                                       }\r
-                                       log('Could not access iframe DOM after 50 tries.');\r
-                                       return;\r
-                               }\r
-\r
-                               xhr.responseText = doc.body ? doc.body.innerHTML : null;\r
-                               xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;\r
-                               xhr.getResponseHeader = function(header){\r
-                                       var headers = {'content-type': opts.dataType};\r
-                                       return headers[header];\r
-                               };\r
-\r
-                               if (opts.dataType == 'json' || opts.dataType == 'script') {\r
-                                       // see if user embedded response in textarea\r
-                                       var ta = doc.getElementsByTagName('textarea')[0];\r
-                                       if (ta)\r
-                                               xhr.responseText = ta.value;\r
-                                       else {\r
-                                               // account for browsers injecting pre around json response\r
-                                               var pre = doc.getElementsByTagName('pre')[0];\r
-                                               if (pre)\r
-                                                       xhr.responseText = pre.innerHTML;\r
-                                       }\r
-                               }\r
-                               else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {\r
-                                       xhr.responseXML = toXml(xhr.responseText);\r
-                               }\r
-                               data = $.httpData(xhr, opts.dataType);\r
-                       }\r
-                       catch(e){\r
-                               ok = false;\r
-                               $.handleError(opts, xhr, 'error', e);\r
-                       }\r
-\r
-                       // ordering of these callbacks/triggers is odd, but that's how $.ajax does it\r
-                       if (ok) {\r
-                               opts.success(data, 'success');\r
-                               if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);\r
-                       }\r
-                       if (g) $.event.trigger("ajaxComplete", [xhr, opts]);\r
-                       if (g && ! --$.active) $.event.trigger("ajaxStop");\r
-                       if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');\r
-\r
-                       // clean up\r
-                       setTimeout(function() {\r
-                               $io.remove();\r
-                               xhr.responseXML = null;\r
-                       }, 100);\r
-               };\r
-\r
-               function toXml(s, doc) {\r
-                       if (window.ActiveXObject) {\r
-                               doc = new ActiveXObject('Microsoft.XMLDOM');\r
-                               doc.async = 'false';\r
-                               doc.loadXML(s);\r
-                       }\r
-                       else\r
-                               doc = (new DOMParser()).parseFromString(s, 'text/xml');\r
-                       return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;\r
-               };\r
-       };\r
-};\r
-\r
-/**\r
- * ajaxForm() provides a mechanism for fully automating form submission.\r
- *\r
- * The advantages of using this method instead of ajaxSubmit() are:\r
- *\r
- * 1: This method will include coordinates for <input type="image" /> elements (if the element\r
- *     is used to submit the form).\r
- * 2. This method will include the submit element's name/value data (for the element that was\r
- *     used to submit the form).\r
- * 3. This method binds the submit() method to the form for you.\r
- *\r
- * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely\r
- * passes the options argument along after properly binding events for submit elements and\r
- * the form itself.\r
- */\r
-$.fn.ajaxForm = function(options) {\r
-       return this.ajaxFormUnbind().bind('submit.form-plugin', function() {\r
-               $(this).ajaxSubmit(options);\r
-               return false;\r
-       }).bind('click.form-plugin', function(e) {\r
-               var target = e.target;\r
-               var $el = $(target);\r
-               if (!($el.is(":submit,input:image"))) {\r
-                       // is this a child element of the submit el?  (ex: a span within a button)\r
-                       var t = $el.closest(':submit');\r
-                       if (t.length == 0)\r
-                               return;\r
-                       target = t[0];\r
-               }\r
-               var form = this;\r
-               form.clk = target;\r
-               if (target.type == 'image') {\r
-                       if (e.offsetX != undefined) {\r
-                               form.clk_x = e.offsetX;\r
-                               form.clk_y = e.offsetY;\r
-                       } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin\r
-                               var offset = $el.offset();\r
-                               form.clk_x = e.pageX - offset.left;\r
-                               form.clk_y = e.pageY - offset.top;\r
-                       } else {\r
-                               form.clk_x = e.pageX - target.offsetLeft;\r
-                               form.clk_y = e.pageY - target.offsetTop;\r
-                       }\r
-               }\r
-               // clear form vars\r
-               setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);\r
-       });\r
-};\r
-\r
-// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm\r
-$.fn.ajaxFormUnbind = function() {\r
-       return this.unbind('submit.form-plugin click.form-plugin');\r
-};\r
-\r
-/**\r
- * formToArray() gathers form element data into an array of objects that can\r
- * be passed to any of the following ajax functions: $.get, $.post, or load.\r
- * Each object in the array has both a 'name' and 'value' property.  An example of\r
- * an array for a simple login form might be:\r
- *\r
- * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]\r
- *\r
- * It is this array that is passed to pre-submit callback functions provided to the\r
- * ajaxSubmit() and ajaxForm() methods.\r
- */\r
-$.fn.formToArray = function(semantic) {\r
-       var a = [];\r
-       if (this.length == 0) return a;\r
-\r
-       var form = this[0];\r
-       var els = semantic ? form.getElementsByTagName('*') : form.elements;\r
-       if (!els) return a;\r
-       for(var i=0, max=els.length; i < max; i++) {\r
-               var el = els[i];\r
-               var n = el.name;\r
-               if (!n) continue;\r
-\r
-               if (semantic && form.clk && el.type == "image") {\r
-                       // handle image inputs on the fly when semantic == true\r
-                       if(!el.disabled && form.clk == el) {\r
-                               a.push({name: n, value: $(el).val()});\r
-                               a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\r
-                       }\r
-                       continue;\r
-               }\r
-\r
-               var v = $.fieldValue(el, true);\r
-               if (v && v.constructor == Array) {\r
-                       for(var j=0, jmax=v.length; j < jmax; j++)\r
-                               a.push({name: n, value: v[j]});\r
-               }\r
-               else if (v !== null && typeof v != 'undefined')\r
-                       a.push({name: n, value: v});\r
-       }\r
-\r
-       if (!semantic && form.clk) {\r
-               // input type=='image' are not found in elements array! handle it here\r
-               var $input = $(form.clk), input = $input[0], n = input.name;\r
-               if (n && !input.disabled && input.type == 'image') {\r
-                       a.push({name: n, value: $input.val()});\r
-                       a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\r
-               }\r
-       }\r
-       return a;\r
-};\r
-\r
-/**\r
- * Serializes form data into a 'submittable' string. This method will return a string\r
- * in the format: name1=value1&amp;name2=value2\r
- */\r
-$.fn.formSerialize = function(semantic) {\r
-       //hand off to jQuery.param for proper encoding\r
-       return $.param(this.formToArray(semantic));\r
-};\r
-\r
-/**\r
- * Serializes all field elements in the jQuery object into a query string.\r
- * This method will return a string in the format: name1=value1&amp;name2=value2\r
- */\r
-$.fn.fieldSerialize = function(successful) {\r
-       var a = [];\r
-       this.each(function() {\r
-               var n = this.name;\r
-               if (!n) return;\r
-               var v = $.fieldValue(this, successful);\r
-               if (v && v.constructor == Array) {\r
-                       for (var i=0,max=v.length; i < max; i++)\r
-                               a.push({name: n, value: v[i]});\r
-               }\r
-               else if (v !== null && typeof v != 'undefined')\r
-                       a.push({name: this.name, value: v});\r
-       });\r
-       //hand off to jQuery.param for proper encoding\r
-       return $.param(a);\r
-};\r
-\r
-/**\r
- * Returns the value(s) of the element in the matched set.  For example, consider the following form:\r
- *\r
- *  <form><fieldset>\r
- *       <input name="A" type="text" />\r
- *       <input name="A" type="text" />\r
- *       <input name="B" type="checkbox" value="B1" />\r
- *       <input name="B" type="checkbox" value="B2"/>\r
- *       <input name="C" type="radio" value="C1" />\r
- *       <input name="C" type="radio" value="C2" />\r
- *  </fieldset></form>\r
- *\r
- *  var v = $(':text').fieldValue();\r
- *  // if no values are entered into the text inputs\r
- *  v == ['','']\r
- *  // if values entered into the text inputs are 'foo' and 'bar'\r
- *  v == ['foo','bar']\r
- *\r
- *  var v = $(':checkbox').fieldValue();\r
- *  // if neither checkbox is checked\r
- *  v === undefined\r
- *  // if both checkboxes are checked\r
- *  v == ['B1', 'B2']\r
- *\r
- *  var v = $(':radio').fieldValue();\r
- *  // if neither radio is checked\r
- *  v === undefined\r
- *  // if first radio is checked\r
- *  v == ['C1']\r
- *\r
- * The successful argument controls whether or not the field element must be 'successful'\r
- * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).\r
- * The default value of the successful argument is true.  If this value is false the value(s)\r
- * for each element is returned.\r
- *\r
- * Note: This method *always* returns an array.  If no valid value can be determined the\r
- *        array will be empty, otherwise it will contain one or more values.\r
- */\r
-$.fn.fieldValue = function(successful) {\r
-       for (var val=[], i=0, max=this.length; i < max; i++) {\r
-               var el = this[i];\r
-               var v = $.fieldValue(el, successful);\r
-               if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))\r
-                       continue;\r
-               v.constructor == Array ? $.merge(val, v) : val.push(v);\r
-       }\r
-       return val;\r
-};\r
-\r
-/**\r
- * Returns the value of the field element.\r
- */\r
-$.fieldValue = function(el, successful) {\r
-       var n = el.name, t = el.type, tag = el.tagName.toLowerCase();\r
-       if (typeof successful == 'undefined') successful = true;\r
-\r
-       if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||\r
-               (t == 'checkbox' || t == 'radio') && !el.checked ||\r
-               (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||\r
-               tag == 'select' && el.selectedIndex == -1))\r
-                       return null;\r
-\r
-       if (tag == 'select') {\r
-               var index = el.selectedIndex;\r
-               if (index < 0) return null;\r
-               var a = [], ops = el.options;\r
-               var one = (t == 'select-one');\r
-               var max = (one ? index+1 : ops.length);\r
-               for(var i=(one ? index : 0); i < max; i++) {\r
-                       var op = ops[i];\r
-                       if (op.selected) {\r
-                               var v = op.value;\r
-                               if (!v) // extra pain for IE...\r
-                                       v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;\r
-                               if (one) return v;\r
-                               a.push(v);\r
-                       }\r
-               }\r
-               return a;\r
-       }\r
-       return el.value;\r
-};\r
-\r
-/**\r
- * Clears the form data.  Takes the following actions on the form's input fields:\r
- *  - input text fields will have their 'value' property set to the empty string\r
- *  - select elements will have their 'selectedIndex' property set to -1\r
- *  - checkbox and radio inputs will have their 'checked' property set to false\r
- *  - inputs of type submit, button, reset, and hidden will *not* be effected\r
- *  - button elements will *not* be effected\r
- */\r
-$.fn.clearForm = function() {\r
-       return this.each(function() {\r
-               $('input,select,textarea', this).clearFields();\r
-       });\r
-};\r
-\r
-/**\r
- * Clears the selected form elements.\r
- */\r
-$.fn.clearFields = $.fn.clearInputs = function() {\r
-       return this.each(function() {\r
-               var t = this.type, tag = this.tagName.toLowerCase();\r
-               if (t == 'text' || t == 'password' || tag == 'textarea')\r
-                       this.value = '';\r
-               else if (t == 'checkbox' || t == 'radio')\r
-                       this.checked = false;\r
-               else if (tag == 'select')\r
-                       this.selectedIndex = -1;\r
-       });\r
-};\r
-\r
-/**\r
- * Resets the form data.  Causes all form elements to be reset to their original value.\r
- */\r
-$.fn.resetForm = function() {\r
-       return this.each(function() {\r
-               // guard against an input with the name of 'reset'\r
-               // note that IE reports the reset function as an 'object'\r
-               if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))\r
-                       this.reset();\r
-       });\r
-};\r
-\r
-/**\r
- * Enables or disables any matching elements.\r
- */\r
-$.fn.enable = function(b) {\r
-       if (b == undefined) b = true;\r
-       return this.each(function() {\r
-               this.disabled = !b;\r
-       });\r
-};\r
-\r
-/**\r
- * Checks/unchecks any matching checkboxes or radio buttons and\r
- * selects/deselects and matching option elements.\r
- */\r
-$.fn.selected = function(select) {\r
-       if (select == undefined) select = true;\r
-       return this.each(function() {\r
-               var t = this.type;\r
-               if (t == 'checkbox' || t == 'radio')\r
-                       this.checked = select;\r
-               else if (this.tagName.toLowerCase() == 'option') {\r
-                       var $sel = $(this).parent('select');\r
-                       if (select && $sel[0] && $sel[0].type == 'select-one') {\r
-                               // deselect all other options\r
-                               $sel.find('option').selected(false);\r
-                       }\r
-                       this.selected = select;\r
-               }\r
-       });\r
-};\r
-\r
-// helper fn for console logging\r
-// set $.fn.ajaxSubmit.debug to true to enable debug logging\r
-function log() {\r
-       if ($.fn.ajaxSubmit.debug && window.console && window.console.log)\r
-               window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));\r
-};\r
-\r
-})(jQuery);\r
+/*!
+ * jQuery Form Plugin
+ * version: 2.94 (13-DEC-2011)
+ * @requires jQuery v1.3.2 or later
+ *
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Dual licensed under the MIT and GPL licenses:
+ *     http://www.opensource.org/licenses/mit-license.php
+ *     http://www.gnu.org/licenses/gpl.html
+ */
+;(function($) {
+
+/*
+       Usage Note:
+       -----------
+       Do not use both ajaxSubmit and ajaxForm on the same form.  These
+       functions are intended to be exclusive.  Use ajaxSubmit if you want
+       to bind your own submit handler to the form.  For example,
+
+       $(document).ready(function() {
+               $('#myForm').bind('submit', function(e) {
+                       e.preventDefault(); // <-- important
+                       $(this).ajaxSubmit({
+                               target: '#output'
+                       });
+               });
+       });
+
+       Use ajaxForm when you want the plugin to manage all the event binding
+       for you.  For example,
+
+       $(document).ready(function() {
+               $('#myForm').ajaxForm({
+                       target: '#output'
+               });
+       });
+
+       When using ajaxForm, the ajaxSubmit function will be invoked for you
+       at the appropriate time.
+*/
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+       // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+       if (!this.length) {
+               log('ajaxSubmit: skipping submit process - no element selected');
+               return this;
+       }
+       
+       var method, action, url, $form = this;
+
+       if (typeof options == 'function') {
+               options = { success: options };
+       }
+
+       method = this.attr('method');
+       action = this.attr('action');
+       url = (typeof action === 'string') ? $.trim(action) : '';
+       url = url || window.location.href || '';
+       if (url) {
+               // clean url (don't include hash vaue)
+               url = (url.match(/^([^#]+)/)||[])[1];
+       }
+
+       options = $.extend(true, {
+               url:  url,
+               success: $.ajaxSettings.success,
+               type: method || 'GET',
+               iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+       }, options);
+
+       // hook for manipulating the form data before it is extracted;
+       // convenient for use with rich editors like tinyMCE or FCKEditor
+       var veto = {};
+       this.trigger('form-pre-serialize', [this, options, veto]);
+       if (veto.veto) {
+               log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+               return this;
+       }
+
+       // provide opportunity to alter form data before it is serialized
+       if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+               log('ajaxSubmit: submit aborted via beforeSerialize callback');
+               return this;
+       }
+
+       var traditional = options.traditional;
+       if ( traditional === undefined ) {
+               traditional = $.ajaxSettings.traditional;
+       }
+       
+       var qx,n,v,a = this.formToArray(options.semantic);
+       if (options.data) {
+               options.extraData = options.data;
+               qx = $.param(options.data, traditional);
+       }
+
+       // give pre-submit callback an opportunity to abort the submit
+       if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+               log('ajaxSubmit: submit aborted via beforeSubmit callback');
+               return this;
+       }
+
+       // fire vetoable 'validate' event
+       this.trigger('form-submit-validate', [a, this, options, veto]);
+       if (veto.veto) {
+               log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+               return this;
+       }
+
+       var q = $.param(a, traditional);
+       if (qx) {
+               q = ( q ? (q + '&' + qx) : qx );
+       }       
+       if (options.type.toUpperCase() == 'GET') {
+               options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+               options.data = null;  // data is null for 'get'
+       }
+       else {
+               options.data = q; // data is the query string for 'post'
+       }
+
+       var callbacks = [];
+       if (options.resetForm) {
+               callbacks.push(function() { $form.resetForm(); });
+       }
+       if (options.clearForm) {
+               callbacks.push(function() { $form.clearForm(options.includeHidden); });
+       }
+
+       // perform a load on the target only if dataType is not provided
+       if (!options.dataType && options.target) {
+               var oldSuccess = options.success || function(){};
+               callbacks.push(function(data) {
+                       var fn = options.replaceTarget ? 'replaceWith' : 'html';
+                       $(options.target)[fn](data).each(oldSuccess, arguments);
+               });
+       }
+       else if (options.success) {
+               callbacks.push(options.success);
+       }
+
+       options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
+               var context = options.context || options;       // jQuery 1.4+ supports scope context 
+               for (var i=0, max=callbacks.length; i < max; i++) {
+                       callbacks[i].apply(context, [data, status, xhr || $form, $form]);
+               }
+       };
+
+       // are there files to upload?
+       var fileInputs = $('input:file:enabled[value]', this); // [value] (issue #113)
+       var hasFileInputs = fileInputs.length > 0;
+       var mp = 'multipart/form-data';
+       var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+       var fileAPI = !!(hasFileInputs && fileInputs.get(0).files && window.FormData);
+       log("fileAPI :" + fileAPI);
+       var shouldUseFrame = (hasFileInputs || multipart) /*&& !fileAPI*/; /* fileAPI bug sous tous les navs dans cette version */
+
+       // options.iframe allows user to force iframe mode
+       // 06-NOV-09: now defaulting to iframe mode if file input is detected
+       if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
+               // hack to fix Safari hang (thanks to Tim Molendijk for this)
+               // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+               if (options.closeKeepAlive) {
+                       $.get(options.closeKeepAlive, function() {
+                               fileUploadIframe(a);
+                       });
+               }
+               else {
+                       fileUploadIframe(a);
+               }
+       }
+       else if ((hasFileInputs || multipart) && fileAPI) {
+               options.progress = options.progress || $.noop;
+               fileUploadXhr(a);
+       }
+       else {
+               $.ajax(options);
+       }
+
+        // fire 'notify' event
+        this.trigger('form-submit-notify', [this, options]);
+        return this;
+
+        // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)
+       function fileUploadXhr(a) {
+               var formdata = new FormData();
+
+               for (var i=0; i < a.length; i++) {
+                       if (a[i].type == 'file')
+                               continue;
+                       formdata.append(a[i].name, a[i].value);
+               }
+
+               $form.find('input:file:enabled').each(function(){
+                       var name = $(this).attr('name'), files = this.files;
+                       if (name) {
+                               for (var i=0; i < files.length; i++)
+                                       formdata.append(name, files[i]);
+                       }
+               });
+
+               if (options.extraData) {
+                       for (var k in options.extraData)
+                               formdata.append(k, options.extraData[k])
+               }
+
+               options.data = null;
+
+               var s = $.extend(true, {}, $.ajaxSettings, options, {
+                       contentType: false,
+                       processData: false,
+                       cache: false,
+                       type: 'POST'
+               });
+
+      s.context = s.context || s;
+
+      s.data = null;
+      var beforeSend = s.beforeSend;
+      s.beforeSend = function(xhr, o) {
+          o.data = formdata;
+          if(xhr.upload) { // unfortunately, jQuery doesn't expose this prop (http://bugs.jquery.com/ticket/10190)
+              xhr.upload.onprogress = function(event) {
+                  o.progress(event.position, event.total);
+              };
+          }
+          if(beforeSend)
+              beforeSend.call(o, xhr, options);
+      };
+      $.ajax(s);
+   }
+
+       // private function for handling file uploads (hat tip to YAHOO!)
+       function fileUploadIframe(a) {
+               var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
+               var useProp = !!$.fn.prop;
+
+               if (a) {
+                       if ( useProp ) {
+                               // ensure that every serialized input is still enabled
+                               for (i=0; i < a.length; i++) {
+                                       el = $(form[a[i].name]);
+                                       el.prop('disabled', false);
+                               }
+                       } else {
+                               for (i=0; i < a.length; i++) {
+                                       el = $(form[a[i].name]);
+                                       el.removeAttr('disabled');
+                               }
+                       };
+               }
+
+               if ($(':input[name=submit],:input[id=submit]', form).length) {
+                       // if there is an input with a name or id of 'submit' then we won't be
+                       // able to invoke the submit fn on the form (at least not x-browser)
+                       alert('Error: Form elements must not have name or id of "submit".');
+                       return;
+               }
+               
+               s = $.extend(true, {}, $.ajaxSettings, options);
+               s.context = s.context || s;
+               id = 'jqFormIO' + (new Date().getTime());
+               if (s.iframeTarget) {
+                       $io = $(s.iframeTarget);
+                       n = $io.attr('name');
+                       if (n == null)
+                               $io.attr('name', id);
+                       else
+                               id = n;
+               }
+               else {
+                       $io = $('<iframe name="' + id + '" src="'+ s.iframeSrc +'" />');
+                       $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+               }
+               io = $io[0];
+
+
+               xhr = { // mock object
+                       aborted: 0,
+                       responseText: null,
+                       responseXML: null,
+                       status: 0,
+                       statusText: 'n/a',
+                       getAllResponseHeaders: function() {},
+                       getResponseHeader: function() {},
+                       setRequestHeader: function() {},
+                       abort: function(status) {
+                               var e = (status === 'timeout' ? 'timeout' : 'aborted');
+                               log('aborting upload... ' + e);
+                               this.aborted = 1;
+                               $io.attr('src', s.iframeSrc); // abort op in progress
+                               xhr.error = e;
+                               s.error && s.error.call(s.context, xhr, e, status);
+                               g && $.event.trigger("ajaxError", [xhr, s, e]);
+                               s.complete && s.complete.call(s.context, xhr, e);
+                       }
+               };
+
+               g = s.global;
+               // trigger ajax global events so that activity/block indicators work like normal
+               if (g && ! $.active++) {
+                       $.event.trigger("ajaxStart");
+               }
+               if (g) {
+                       $.event.trigger("ajaxSend", [xhr, s]);
+               }
+
+               if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
+                       if (s.global) {
+                               $.active--;
+                       }
+                       return;
+               }
+               if (xhr.aborted) {
+                       return;
+               }
+
+               // add submitting element to data if we know it
+               sub = form.clk;
+               if (sub) {
+                       n = sub.name;
+                       if (n && !sub.disabled) {
+                               s.extraData = s.extraData || {};
+                               s.extraData[n] = sub.value;
+                               if (sub.type == "image") {
+                                       s.extraData[n+'.x'] = form.clk_x;
+                                       s.extraData[n+'.y'] = form.clk_y;
+                               }
+                       }
+               }
+               
+               var CLIENT_TIMEOUT_ABORT = 1;
+               var SERVER_ABORT = 2;
+
+               function getDoc(frame) {
+                       var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
+                       return doc;
+               }
+               
+               // Rails CSRF hack (thanks to Yvan Barthelemy)
+               var csrf_token = $('meta[name=csrf-token]').attr('content');
+               var csrf_param = $('meta[name=csrf-param]').attr('content');
+               if (csrf_param && csrf_token) {
+                       s.extraData = s.extraData || {};
+                       s.extraData[csrf_param] = csrf_token;
+               }
+
+               // take a breath so that pending repaints get some cpu time before the upload starts
+               function doSubmit() {
+                       // make sure form attrs are set
+                       var t = $form.attr('target'), a = $form.attr('action');
+
+                       // update form attrs in IE friendly way
+                       form.setAttribute('target',id);
+                       if (!method) {
+                               form.setAttribute('method', 'POST');
+                       }
+                       if (a != s.url) {
+                               form.setAttribute('action', s.url);
+                       }
+
+                       // ie borks in some cases when setting encoding
+                       if (! s.skipEncodingOverride && (!method || /post/i.test(method))) {
+                               $form.attr({
+                                       encoding: 'multipart/form-data',
+                                       enctype:  'multipart/form-data'
+                               });
+                       }
+
+                       // support timout
+                       if (s.timeout) {
+                               timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
+                       }
+                       
+                       // look for server aborts
+                       function checkState() {
+                               try {
+                                       var state = getDoc(io).readyState;
+                                       log('state = ' + state);
+                                       if (state.toLowerCase() == 'uninitialized')
+                                               setTimeout(checkState,50);
+                               }
+                               catch(e) {
+                                       log('Server abort: ' , e, ' (', e.name, ')');
+                                       cb(SERVER_ABORT);
+                                       timeoutHandle && clearTimeout(timeoutHandle);
+                                       timeoutHandle = undefined;
+                               }
+                       }
+
+                       // add "extra" data to form if provided in options
+                       var extraInputs = [];
+                       try {
+                               if (s.extraData) {
+                                       for (var n in s.extraData) {
+                                               extraInputs.push(
+                                                       $('<input type="hidden" name="'+n+'">').attr('value',s.extraData[n])
+                                                               .appendTo(form)[0]);
+                                       }
+                               }
+
+                               if (!s.iframeTarget) {
+                                       // add iframe to doc and submit the form
+                                       $io.appendTo('body');
+                                       io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
+                               }
+                               setTimeout(checkState,15);
+                               form.submit();
+                       }
+                       finally {
+                               // reset attrs and remove "extra" input elements
+                               form.setAttribute('action',a);
+                               if(t) {
+                                       form.setAttribute('target', t);
+                               } else {
+                                       $form.removeAttr('target');
+                               }
+                               $(extraInputs).remove();
+                       }
+               }
+
+               if (s.forceSync) {
+                       doSubmit();
+               }
+               else {
+                       setTimeout(doSubmit, 10); // this lets dom updates render
+               }
+
+               var data, doc, domCheckCount = 50, callbackProcessed;
+
+               function cb(e) {
+                       if (xhr.aborted || callbackProcessed) {
+                               return;
+                       }
+                       try {
+                               doc = getDoc(io);
+                       }
+                       catch(ex) {
+                               log('cannot access response document: ', ex);
+                               e = SERVER_ABORT;
+                       }
+                       if (e === CLIENT_TIMEOUT_ABORT && xhr) {
+                               xhr.abort('timeout');
+                               return;
+                       }
+                       else if (e == SERVER_ABORT && xhr) {
+                               xhr.abort('server abort');
+                               return;
+                       }
+
+                       if (!doc || doc.location.href == s.iframeSrc) {
+                               // response not received yet
+                               if (!timedOut)
+                                       return;
+                       }
+                       io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
+
+                       var status = 'success', errMsg;
+                       try {
+                               if (timedOut) {
+                                       throw 'timeout';
+                               }
+
+                               var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+                               log('isXml='+isXml);
+                               if (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {
+                                       if (--domCheckCount) {
+                                               // in some browsers (Opera) the iframe DOM is not always traversable when
+                                               // the onload callback fires, so we loop a bit to accommodate
+                                               log('requeing onLoad callback, DOM not available');
+                                               setTimeout(cb, 250);
+                                               return;
+                                       }
+                                       // let this fall through because server response could be an empty document
+                                       //log('Could not access iframe DOM after mutiple tries.');
+                                       //throw 'DOMException: not available';
+                               }
+
+                               //log('response detected');
+                               var docRoot = doc.body ? doc.body : doc.documentElement;
+                               xhr.responseText = docRoot ? docRoot.innerHTML : null;
+                               xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+                               if (isXml)
+                                       s.dataType = 'xml';
+                               xhr.getResponseHeader = function(header){
+                                       var headers = {'content-type': s.dataType};
+                                       return headers[header];
+                               };
+                               // support for XHR 'status' & 'statusText' emulation :
+                               if (docRoot) {
+                                       xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
+                                       xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
+                               }
+
+                               var dt = (s.dataType || '').toLowerCase();
+                               var scr = /(json|script|text)/.test(dt);
+                               if (scr || s.textarea) {
+                                       // see if user embedded response in textarea
+                                       var ta = doc.getElementsByTagName('textarea')[0];
+                                       if (ta) {
+                                               xhr.responseText = ta.value;
+                                               // support for XHR 'status' & 'statusText' emulation :
+                                               xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
+                                               xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
+                                       }
+                                       else if (scr) {
+                                               // account for browsers injecting pre around json response
+                                               var pre = doc.getElementsByTagName('pre')[0];
+                                               var b = doc.getElementsByTagName('body')[0];
+                                               if (pre) {
+                                                       xhr.responseText = pre.textContent ? pre.textContent : pre.innerText;
+                                               }
+                                               else if (b) {
+                                                       xhr.responseText = b.textContent ? b.textContent : b.innerText;
+                                               }
+                                       }
+                               }
+                               else if (dt == 'xml' && !xhr.responseXML && xhr.responseText != null) {
+                                       xhr.responseXML = toXml(xhr.responseText);
+                               }
+
+                               try {
+                                       data = httpData(xhr, dt, s);
+                               }
+                               catch (e) {
+                                       status = 'parsererror';
+                                       xhr.error = errMsg = (e || status);
+                               }
+                       }
+                       catch (e) {
+                               log('error caught: ',e);
+                               status = 'error';
+                               xhr.error = errMsg = (e || status);
+                       }
+
+                       if (xhr.aborted) {
+                               log('upload aborted');
+                               status = null;
+                       }
+
+                       if (xhr.status) { // we've set xhr.status
+                               status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
+                       }
+
+                       // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+                       if (status === 'success') {
+                               s.success && s.success.call(s.context, data, 'success', xhr);
+                               g && $.event.trigger("ajaxSuccess", [xhr, s]);
+                       }
+                       else if (status) {
+                               if (errMsg == undefined)
+                                       errMsg = xhr.statusText;
+                               s.error && s.error.call(s.context, xhr, status, errMsg);
+                               g && $.event.trigger("ajaxError", [xhr, s, errMsg]);
+                       }
+
+                       g && $.event.trigger("ajaxComplete", [xhr, s]);
+
+                       if (g && ! --$.active) {
+                               $.event.trigger("ajaxStop");
+                       }
+
+                       s.complete && s.complete.call(s.context, xhr, status);
+
+                       callbackProcessed = true;
+                       if (s.timeout)
+                               clearTimeout(timeoutHandle);
+
+                       // clean up
+                       setTimeout(function() {
+                               if (!s.iframeTarget)
+                                       $io.remove();
+                               xhr.responseXML = null;
+                       }, 100);
+               }
+
+               var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
+                       if (window.ActiveXObject) {
+                               doc = new ActiveXObject('Microsoft.XMLDOM');
+                               doc.async = 'false';
+                               doc.loadXML(s);
+                       }
+                       else {
+                               doc = (new DOMParser()).parseFromString(s, 'text/xml');
+                       }
+                       return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
+               };
+               var parseJSON = $.parseJSON || function(s) {
+                       return window['eval']('(' + s + ')');
+               };
+
+               var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
+
+                       var ct = xhr.getResponseHeader('content-type') || '',
+                               xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
+                               data = xml ? xhr.responseXML : xhr.responseText;
+
+                       if (xml && data.documentElement.nodeName === 'parsererror') {
+                               $.error && $.error('parsererror');
+                       }
+                       if (s && s.dataFilter) {
+                               data = s.dataFilter(data, type);
+                       }
+                       if (typeof data === 'string') {
+                               if (type === 'json' || !type && ct.indexOf('json') >= 0) {
+                                       data = parseJSON(data);
+                               } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
+                                       $.globalEval(data);
+                               }
+                       }
+                       return data;
+               };
+       }
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ *     is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ *     used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+       // in jQuery 1.3+ we can fix mistakes with the ready state
+       if (this.length === 0) {
+               var o = { s: this.selector, c: this.context };
+               if (!$.isReady && o.s) {
+                       log('DOM not ready, queuing ajaxForm');
+                       $(function() {
+                               $(o.s,o.c).ajaxForm(options);
+                       });
+                       return this;
+               }
+               // is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
+               log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
+               return this;
+       }
+
+       return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
+               if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
+                       e.preventDefault();
+                       $(this).ajaxSubmit(options);
+               }
+       }).bind('click.form-plugin', function(e) {
+               var target = e.target;
+               var $el = $(target);
+               if (!($el.is(":submit,input:image"))) {
+                       // is this a child element of the submit el?  (ex: a span within a button)
+                       var t = $el.closest(':submit');
+                       if (t.length == 0) {
+                               return;
+                       }
+                       target = t[0];
+               }
+               var form = this;
+               form.clk = target;
+               if (target.type == 'image') {
+                       if (e.offsetX != undefined) {
+                               form.clk_x = e.offsetX;
+                               form.clk_y = e.offsetY;
+                       } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
+                               var offset = $el.offset();
+                               form.clk_x = e.pageX - offset.left;
+                               form.clk_y = e.pageY - offset.top;
+                       } else {
+                               form.clk_x = e.pageX - target.offsetLeft;
+                               form.clk_y = e.pageY - target.offsetTop;
+                       }
+               }
+               // clear form vars
+               setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+       });
+};
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+       return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property.  An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic) {
+       var a = [];
+       if (this.length === 0) {
+               return a;
+       }
+
+       var form = this[0];
+       var els = semantic ? form.getElementsByTagName('*') : form.elements;
+       if (!els) {
+               return a;
+       }
+
+       var i,j,n,v,el,max,jmax;
+       for(i=0, max=els.length; i < max; i++) {
+               el = els[i];
+               n = el.name;
+               if (!n) {
+                       continue;
+               }
+
+               if (semantic && form.clk && el.type == "image") {
+                       // handle image inputs on the fly when semantic == true
+                       if(!el.disabled && form.clk == el) {
+                               a.push({name: n, value: $(el).val(), type: el.type });
+                               a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+                       }
+                       continue;
+               }
+
+               v = $.fieldValue(el, true);
+               if (v && v.constructor == Array) {
+                       for(j=0, jmax=v.length; j < jmax; j++) {
+                               a.push({name: n, value: v[j]});
+                       }
+               }
+               else if (v !== null && typeof v != 'undefined') {
+                       a.push({name: n, value: v, type: el.type});
+               }
+       }
+
+       if (!semantic && form.clk) {
+               // input type=='image' are not found in elements array! handle it here
+               var $input = $(form.clk), input = $input[0];
+               n = input.name;
+               if (n && !input.disabled && input.type == 'image') {
+                       a.push({name: n, value: $input.val()});
+                       a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+               }
+       }
+       return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+       //hand off to jQuery.param for proper encoding
+       return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+       var a = [];
+       this.each(function() {
+               var n = this.name;
+               if (!n) {
+                       return;
+               }
+               var v = $.fieldValue(this, successful);
+               if (v && v.constructor == Array) {
+                       for (var i=0,max=v.length; i < max; i++) {
+                               a.push({name: n, value: v[i]});
+                       }
+               }
+               else if (v !== null && typeof v != 'undefined') {
+                       a.push({name: this.name, value: v});
+               }
+       });
+       //hand off to jQuery.param for proper encoding
+       return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set.  For example, consider the following form:
+ *
+ *  <form><fieldset>
+ *       <input name="A" type="text" />
+ *       <input name="A" type="text" />
+ *       <input name="B" type="checkbox" value="B1" />
+ *       <input name="B" type="checkbox" value="B2"/>
+ *       <input name="C" type="radio" value="C1" />
+ *       <input name="C" type="radio" value="C2" />
+ *  </fieldset></form>
+ *
+ *  var v = $(':text').fieldValue();
+ *  // if no values are entered into the text inputs
+ *  v == ['','']
+ *  // if values entered into the text inputs are 'foo' and 'bar'
+ *  v == ['foo','bar']
+ *
+ *  var v = $(':checkbox').fieldValue();
+ *  // if neither checkbox is checked
+ *  v === undefined
+ *  // if both checkboxes are checked
+ *  v == ['B1', 'B2']
+ *
+ *  var v = $(':radio').fieldValue();
+ *  // if neither radio is checked
+ *  v === undefined
+ *  // if first radio is checked
+ *  v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true.  If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array.  If no valid value can be determined the
+ *     array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+       for (var val=[], i=0, max=this.length; i < max; i++) {
+               var el = this[i];
+               var v = $.fieldValue(el, successful);
+               if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
+                       continue;
+               }
+               v.constructor == Array ? $.merge(val, v) : val.push(v);
+       }
+       return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+       var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+       if (successful === undefined) {
+               successful = true;
+       }
+
+       if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+               (t == 'checkbox' || t == 'radio') && !el.checked ||
+               (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+               tag == 'select' && el.selectedIndex == -1)) {
+                       return null;
+       }
+
+       if (tag == 'select') {
+               var index = el.selectedIndex;
+               if (index < 0) {
+                       return null;
+               }
+               var a = [], ops = el.options;
+               var one = (t == 'select-one');
+               var max = (one ? index+1 : ops.length);
+               for(var i=(one ? index : 0); i < max; i++) {
+                       var op = ops[i];
+                       if (op.selected) {
+                               var v = op.value;
+                               if (!v) { // extra pain for IE...
+                                       v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+                               }
+                               if (one) {
+                                       return v;
+                               }
+                               a.push(v);
+                       }
+               }
+               return a;
+       }
+       return $(el).val();
+};
+
+/**
+ * Clears the form data.  Takes the following actions on the form's input fields:
+ *  - input text fields will have their 'value' property set to the empty string
+ *  - select elements will have their 'selectedIndex' property set to -1
+ *  - checkbox and radio inputs will have their 'checked' property set to false
+ *  - inputs of type submit, button, reset, and hidden will *not* be effected
+ *  - button elements will *not* be effected
+ */
+$.fn.clearForm = function(includeHidden) {
+       return this.each(function() {
+               $('input,select,textarea', this).clearFields(includeHidden);
+       });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function(includeHidden) {
+       var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list
+       return this.each(function() {
+               var t = this.type, tag = this.tagName.toLowerCase();
+               if (re.test(t) || tag == 'textarea' || (includeHidden && /hidden/.test(t)) ) {
+                       this.value = '';
+               }
+               else if (t == 'checkbox' || t == 'radio') {
+                       this.checked = false;
+               }
+               else if (tag == 'select') {
+                       this.selectedIndex = -1;
+               }
+       });
+};
+
+/**
+ * Resets the form data.  Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+       return this.each(function() {
+               // guard against an input with the name of 'reset'
+               // note that IE reports the reset function as an 'object'
+               if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
+                       this.reset();
+               }
+       });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+       if (b === undefined) {
+               b = true;
+       }
+       return this.each(function() {
+               this.disabled = !b;
+       });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+       if (select === undefined) {
+               select = true;
+       }
+       return this.each(function() {
+               var t = this.type;
+               if (t == 'checkbox' || t == 'radio') {
+                       this.checked = select;
+               }
+               else if (this.tagName.toLowerCase() == 'option') {
+                       var $sel = $(this).parent('select');
+                       if (select && $sel[0] && $sel[0].type == 'select-one') {
+                               // deselect all other options
+                               $sel.find('option').selected(false);
+                       }
+                       this.selected = select;
+               }
+       });
+};
+
+// expose debug var
+$.fn.ajaxSubmit.debug = false;
+
+// helper fn for console logging
+function log() {
+       if (!$.fn.ajaxSubmit.debug) 
+               return;
+       var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
+       if (window.console && window.console.log) {
+               window.console.log(msg);
+       }
+       else if (window.opera && window.opera.postError) {
+               window.opera.postError(msg);
+       }
+};
+
+})(jQuery);
index 874e60e..ef65fcd 100644 (file)
@@ -77,7 +77,7 @@ function login_submit(){
                        // - certains navigateurs memorisent le hash au lieu du pass ...
                        // on cree un input hidden a cote, on lui met le name="password"
                        // et on vide le champ visible
-                       inputpass.after('<input name="password" type="hidden" value="'+pass+'" />');
+                       inputpass.after('<input name="password" type="hidden" value="" />').attr('value',pass);
                        inputpass.attr('name','nothing').attr('value','');
                        calcule_hash_pass(pass);
                }
index c0b5e17..f07aeb6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * multilang
  *
- * Copyright (c) 2006-2010 Renato Formato (rformato@gmail.com)
+ * Copyright (c) 2006-2014 Renato Formato (rformato@gmail.com)
  * Licensed under the GPL License:
  *   http://www.gnu.org/licenses/gpl.html
  *
index c30fe23..e9854c0 100644 (file)
@@ -3,8 +3,8 @@
        style='[(#ENV{align}|match{^(left|right)$}|?{' '})float:#ENV{align};] (#ENV{align,center}|=={center}|?{'',' '})[width:(#ENV{largeur}|max{120})px]']>
 <object        data='#URL_DOCUMENT' 
        type='#MIME_TYPE'
-       width='#ENV{largeur, #LARGEUR}'
-       height='#ENV{hauteur, #HAUTEUR}' >
+       width='#ENV{largeur, 150}'
+       height='#ENV{hauteur, 20}' >
        <param name='src' value='#URL_DOCUMENT' />
        [(#ID_DOCUMENT|appliquer_filtre{#MIME_TYPE})]
        [(#ENV*|env_to_params)]
index 4dde472..bbe8a28 100644 (file)
@@ -63,7 +63,7 @@
 ]
 
 #SET{i,#ENV{page_courante}|plus{1}}
-[(#GET{i}|<{#ENV{nombre_pages}}|?{' ',''})[
+[(#GET{i}|<={#ENV{nombre_pages}}|?{' ',''})[
        (#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} })
        ][#GET*{separateur} (#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte='&gt;'}{separateur=''}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
index 940e5fe..35571ba 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 60a25e9..117b832 100644 (file)
@@ -1,6 +1,6 @@
 /* Les boutons d'admin survolent la page (sauf # FORMULAIRE_ADMIN) */
 .spip-admin-bloc,
-.spip-admin-float { z-index: 100; position: fixed; right: 1%; top: 0; white-space: nowrap; }
+.spip-admin-float { z-index: 100; position: fixed; right: 20%; top: 0; white-space: nowrap; }
 
 /* Couleurs et design des boutons d'admin */
 .spip-admin-boutons { margin: 0; padding: .4em 1em; background: #666; border: 0; font-weight: bold;
index bf3f510..a4ec2a8 100644 (file)
@@ -624,7 +624,7 @@ div.message, a.message { background: url(#GET{chemin_img_pack}m_envoi[(#GET{rtl}
 .liste-plugins .liste-items .item .icon {position:absolute;top:3px;#GET{left}:34px;width:32px;height:32px;overflow:hidden;}
 .liste-plugins .liste-items .item .actions {float:#GET{right};visibility:hidden;}
 .liste-plugins .liste-items .item:hover .actions {visibility:visible;}
-.liste-plugins .liste-items .item .cfg_link { position:absolute; right:4px; top:4px; }
+.liste-plugins .liste-items .item .cfg_link { position:absolute; #GET{right}:4px; top:4px; }
 
 .liste-plugins .liste-items .item .details .desc {padding:5px 0 2px;}
 .liste-plugins .liste-items .item .details .auteurs {font-style:italic;padding-bottom:5px;display:inline;}
index 3fd2ecd..4a44cf4 100644 (file)
@@ -2,7 +2,11 @@
 if ([(#ID_AUTEUR|securiser_acces{#ENV{cle},transmettre,#ENV{op}, #ENV{args}}|?{1,0})]) {
 ?><BOUCLE2(ARTICLES){id_article}><B1>#TOTAL_BOUCLE <:info_signatures:> <:info_pour:>  #TITRE;
 <:nom:>;<:email:>
-<BOUCLE1(SIGNATURES){id_article}{par nom_email}>#NOM_EMAIL;#AD_EMAIL
+<BOUCLE1(SIGNATURES){id_article}{par nom_email}>[(#NOM_EMAIL
+|filtrer_entites|replace{';',','})];[(#AD_EMAIL
+|filtrer_entites|replace{';',','})];[(#NOM_SITE
+|filtrer_entites|replace{';',','})];[(#URL_SITE
+|filtrer_entites|replace{';',','})];
 </BOUCLE1></BOUCLE2>
 <?php
 } else {
diff --git a/www/prive/vignettes/epub.png b/www/prive/vignettes/epub.png
new file mode 100644 (file)
index 0000000..ee20b36
Binary files /dev/null and b/www/prive/vignettes/epub.png differ
diff --git a/www/prive/vignettes/ogv.png b/www/prive/vignettes/ogv.png
new file mode 100644 (file)
index 0000000..c4d738b
Binary files /dev/null and b/www/prive/vignettes/ogv.png differ
diff --git a/www/prive/vignettes/webm.png b/www/prive/vignettes/webm.png
new file mode 100644 (file)
index 0000000..f044c98
Binary files /dev/null and b/www/prive/vignettes/webm.png differ
index a7bc578..20c2d5b 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index ebf7bb7..356344e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index a2d7151..c8078cc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 4414b5e..4344fb9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -19,7 +19,8 @@ function formulaires_inscription_charger_dist($mode, $focus, $id=0) {
        else 
                $valeurs['_commentaire'] = _T('pass_forum_bla');
 
-       if (!tester_config($id, $mode))
+       include_spip('inc/autoriser');
+       if (!autoriser('inscrireauteur', $mode, $id))
                $valeurs['editable'] = false;
 
        return $valeurs;
@@ -29,12 +30,15 @@ function formulaires_inscription_charger_dist($mode, $focus, $id=0) {
 function formulaires_inscription_verifier_dist($mode, $focus, $id=0) {
 
        $erreurs = array();
-       include_spip('inc/filtres');    
-       if (!tester_config($id, $mode) OR (strlen(_request('nobot'))>0))
+       include_spip('inc/filtres');
+       include_spip('inc/autoriser');
+       if (!autoriser('inscrireauteur', $mode, $id) OR (strlen(_request('nobot'))>0))
                $erreurs['message_erreur'] = _T('rien_a_faire_ici');
 
        if (!$nom = _request('nom_inscription'))
                $erreurs['nom_inscription'] = _T("info_obligatoire");
+       elseif (!nom_acceptable(_request('nom_inscription')))
+               $erreurs['nom_inscription'] = _T("ecrire:info_nom_pas_conforme");
        if (!$mail = _request('mail_inscription'))
                $erreurs['mail_inscription'] = _T("info_obligatoire");
        
@@ -103,7 +107,7 @@ function formulaires_inscription_traiter_dist($mode, $focus, $id=0) {
                if (!$envoyer_mail($mail_complet, $sujet, $msg, $from, $head))
                        $desc = _T('form_forum_probleme_mail');
                // Notifications
-               if ($notifications = charger_fonction('notifications', 'inc')) {
+               if (is_array($desc) and $notifications = charger_fonction('notifications', 'inc')) {
                        $notifications('inscription', $desc['id_auteur'],
                                array('nom' => $desc['nom'], 'email' => $desc['email'])
                        );
index c543136..318d2cc 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -87,7 +87,7 @@ function formulaires_mot_de_passe_traiter_dist($id_auteur=null){
 
                $login = $row['login'];
                $message = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
-               "<p>" . _T('pass_rappel_login', array('login' => $login));
+               "<br />" . _T('pass_rappel_login', array('login' => $login));
        }
        return array('message_ok'=>$message);
 }
index c93a95e..d867ca2 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index 6258594..248c2b9 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
index cb9bb5e..2b3807e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -113,7 +113,7 @@ function formulaires_signature_verifier_dist($id_article, $petition, $texte, $si
 }
 
 function formulaires_signature_traiter_dist($id_article, $petition, $texte, $site_obli, $message) {
-       $reponse = _T('form_pet_probleme_technique');
+
        include_spip('base/abstract_sql');
        if (spip_connect()) {
                $controler_signature = charger_fonction('controler_signature', 'inc');
@@ -121,7 +121,7 @@ function formulaires_signature_traiter_dist($id_article, $petition, $texte, $sit
                _request('session_nom'), _request('session_email'),
                _request('message'), _request('signature_nom_site'),
                _request('signature_url_site'), _request('url_page'));
-       }
+       } else  $reponse = _T('form_pet_probleme_technique');
 
        return array('message_ok'=>$reponse);
 }
@@ -307,38 +307,49 @@ function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url,
                        _T('form_pet_signature_validee');
        }
 
-
        //
        // Cas normal : envoi d'une demande de confirmation
        //
-       $row = sql_fetsel('titre,lang', 'spip_articles', "id_article=$id_article");
-       $lang = lang_select($row['lang']);
-       $titre = textebrut(typo($row['titre']));
-       if ($lang) lang_select();
+
+       list($titre, $url_page) = signature_langue($id_article, $url_page);
 
        if (!strlen($statut))
                $statut = signature_test_pass();
 
+       list($sujet, $corps) =  signature_demande_confirmation($id_article, $url_page, $nom, $site, $url, $msg, $titre, $statut);
+
+       $envoyer_mail = charger_fonction('envoyer_mail','inc');
+       if ($envoyer_mail($mail, $sujet, $corps))
+               return _T('form_pet_envoi_mail_confirmation',array('email'=>$mail));
+       return false; # erreur d'envoi de l'email
+}
+
+function signature_langue($id_article, $url_page)
+{
+       $row = sql_fetsel('titre,lang', 'spip_articles', "id_article=$id_article");
+       $lang = lang_select($row['lang']);
+       $titre = textebrut(typo($row['titre']));
+
+       if ($lang) lang_select();
        if ($lang != $GLOBALS['meta']['langue_site'])
                  $url_page = parametre_url($url_page, "lang", $lang,'&');
 
+       return array($titre, $url_page);
+}
+
+function signature_demande_confirmation($id_article, $url_page, $nom, $site, $url, $msg, $titre, $statut)
+{
        $url_page = parametre_url($url_page, 'var_confirm', $statut, '&')
        . "#sp$id_article";
 
-       $r = _T('form_pet_mail_confirmation',
-                array('titre' => $titre,
-                      'nom_email' => $nom,
-                      'nom_site' => $site,
-                      'url_site' => $url, 
-                      'url' => $url_page,
-                      'message' => $msg));
-
-       $titre = _T('form_pet_confirmation')." ". $titre;
-       $envoyer_mail = charger_fonction('envoyer_mail','inc');
-       if ($envoyer_mail($mail,$titre, $r))
-               return _T('form_pet_envoi_mail_confirmation',array('email'=>$mail));
-
-       return false; # erreur d'envoi de l'email
+       return array(_T('form_pet_confirmation')." ". $titre, 
+                    _T('form_pet_mail_confirmation',
+                        array('titre' => $titre,
+                              'nom_email' => $nom,
+                              'nom_site' => $site,
+                              'url_site' => $url, 
+                              'url' => $url_page,
+                              'message' => $msg)));
 }
 
 // Pour eviter le recours a un verrou (qui bloque l'acces a la base),
@@ -347,26 +358,27 @@ function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url,
 // (mail ou site). S'il y en a plus qu'une on les retire sauf la premiere
 // En cas d'acces concurrents il y aura des requetes de retraits d'elements
 // deja detruits. Bizarre ?  C'est mieux que de bloquer!
+// De plus, ca supprime les doublons "en attente de validation".
 
 // http://doc.spip.org/@signature_entrop
 function signature_entrop($where)
 {
-       $where .= " AND statut='publie'";
-       $query = sql_select('id_signature', 'spip_signatures', $where,'',"date_time desc");
-       $n = sql_count($query);
-       if ($n>1) {
-               $entrop = array();
-               for ($i=$n-1;$i;$i--) {
-                       $r = sql_fetch($query);
-                       $entrop[]=$r['id_signature'];
-               }
-               sql_free($query);
-               $where .= " OR " . sql_in('id_signature', $entrop);
-       
-               sql_delete('spip_signatures', $where);
+       $query = sql_select('id_signature, statut', 'spip_signatures', $where,'',"date_time desc");
+       $entrop = array();
+       $id_ok = 0;
+       $double = false;
+       while($r = sql_fetch($query)) {
+         if (!$id_ok AND $r['statut'] == 'publie')
+           $id_ok = $r['id_signature'];
+         else {
+           $double |= ($r['statut'] == 'publie');
+           $entrop[]= $r['id_signature'];
+         }
        }
-
-       return $entrop;
+       if (!$entrop) return false;
+       spip_log("signature $id_ok confirmee, suppression des doublons " . join(' ', $entrop));
+       sql_delete('spip_signatures', sql_in('id_signature', $entrop));
+       return $double;
 }
 
 // Creer un mot de passe aleatoire et verifier qu'il est unique
index d792eea..19f0574 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 64755dd..99529d4 100644 (file)
@@ -33,7 +33,7 @@
        ce qui permet une syndication plus riche (mais plus "lourde").
        Fonction desactivable depuis les reglages du site.
 ][
-(#CONFIG{syndication_integrale}|=={oui}|?{' ',''})<content:encoded>[(#LOGO_ARTICLE|right||image_reduire{150,150}|texte_backend)
+(#CONFIG{syndication_integrale}|=={oui}|?{' ',''})<content:encoded>[(#LOGO_ARTICLE{right}|image_reduire{150,150}|texte_backend)
                ][&lt;div class='rss_chapo'&gt;(#CHAPO|texte_backend)&lt;/div&gt;
                ][&lt;div class='rss_texte'&gt;(#TEXTE|
                        image_reduire{500,0}|texte_backend)&lt;/div&gt;
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 83bc637..c005a6c 100644 (file)
Binary files a/www/squelettes-dist/puce.gif and b/www/squelettes-dist/puce.gif differ
old mode 100644 (file)
new mode 100755 (executable)
index 6b423f8..1dd8962 100644 (file)
@@ -1,10 +1,10 @@
 <svn_revision>
 <text_version>
-Origine: svn://trac.rezo.net/spip/tags/spip-2.1.12
-Revision: 18732
-Dernier commit: 2011-11-16 18:00:51 +0100 
+Origine: svn://trac.rezo.net/spip/tags/spip-2.1.25
+Revision: 21141
+Dernier commit: 2014-01-19 17:54:19 +0100 
 </text_version>
-<origine>svn://trac.rezo.net/spip/tags/spip-2.1.12</origine>
-<revision>18732</revision>
-<commit>2011-11-16 18:00:51 +0100 </commit>
+<origine>svn://trac.rezo.net/spip/tags/spip-2.1.25</origine>
+<revision>21141</revision>
+<commit>2014-01-19 17:54:19 +0100 </commit>
 </svn_revision>
\ No newline at end of file