refactor: generer du code plus proche des PSR SPIP 4

pull/29/head
Cerdic 3 months ago
parent 00388ca1a6
commit 9c2110df57

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Utilisation de l'action supprimer pour l'objet #ENV{type},
package=Action})]
@ -41,16 +42,16 @@
* Identifiant à supprimer.
* En absence de id utilise l'argument de l'action sécurisée.
**/
function action_supprimer_#ENV{type}_dist($arg=null) {
function action_supprimer_#ENV{type}_dist($arg = null) {
$need_confirm = false;
if (is_null($arg)){
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
$need_confirm = true;
}
$arg = intval($arg);
if ($need_confirm){
if ($need_confirm) {
$ok = confirmer_supprimer_#ENV{type}_avant_action(_T('#ENV{type}:confirmer_supprimer_#ENV{type}'), _T('item_oui') . '! ' . _T('#ENV{type}:supprimer_#ENV{type}'));
}
@ -59,7 +60,7 @@ function action_supprimer_#ENV{type}_dist($arg=null) {
if ($arg) {
$objet = sql_fetsel('*', '#TABLE', '#ID_OBJET=' . sql_quote($arg));
$qui = (!empty($GLOBALS['visiteur_session']['id_auteur']) ? 'auteur #' . $GLOBALS['visiteur_session']['id_auteur'] : 'IP ' . $GLOBALS['ip']);
spip_log("SUPPRESSION #ENV{type} #$arg par $qui : " . json_encode($objet), "suppressions" . _LOG_INFO_IMPORTANTE);
spip_log("SUPPRESSION #ENV{type} #$arg par $qui : " . json_encode($objet), 'suppressions' . _LOG_INFO_IMPORTANTE);
sql_delete('#TABLE', '#ID_OBJET=' . sql_quote($arg));
include_spip('action/editer_logo');
@ -69,7 +70,6 @@ function action_supprimer_#ENV{type}_dist($arg=null) {
// invalider le cache
include_spip('inc/invalideur');
suivre_invalideur("id='#ENV{type}/$arg'");
}
else {
spip_log("action_supprimer_#ENV{type}_dist $arg pas compris");
@ -84,7 +84,7 @@ function action_supprimer_#ENV{type}_dist($arg=null) {
* @param string|null $url_action
* @return bool
*/
function confirmer_supprimer_#ENV{type}_avant_action($titre, $titre_bouton, $url_action=null) {
function confirmer_supprimer_#ENV{type}_avant_action($titre, $titre_bouton, $url_action = null) {
if (!$url_action) {
$url_action = self();
@ -95,17 +95,17 @@ function confirmer_supprimer_#ENV{type}_avant_action($titre, $titre_bouton, $url
$action = parametre_url($url_action, 'action');
}
$arg = parametre_url($url_action, 'arg');
$confirm = md5("$action:$arg:".realpath(__FILE__));
$confirm = md5("$action:$arg:" . realpath(__FILE__));
if (_request('confirm_action') === $confirm) {
return true;
}
$url_confirm = parametre_url($url_action, "confirm_action", $confirm, '&');
include_spip("inc/filtres");
$url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&');
include_spip('inc/filtres');
$bouton_action = bouton_action($titre_bouton, $url_confirm);
$corps = "<div style='text-align:center;'>$bouton_action</div>";
include_spip("inc/minipres");
echo minipres($titre,$corps);
include_spip('inc/minipres');
echo minipres($titre, $corps);
exit;
}

@ -12,7 +12,7 @@
*
* ```
* include_spip('base/importer_#TABLE_DESTINATION');
* $maj['create'][] = array('importer_#TABLE_DESTINATION');
* $maj['create'][] = ['importer_#TABLE_DESTINATION'];
* ```
*
**/
@ -22,18 +22,18 @@ function importer_#TABLE_DESTINATION() {
// nom_du_champ_source => nom_du_champ_destination
// mettre vide la destination ou supprimer la ligne permet de ne pas importer la colonne.
$correspondances = array(<BOUCLE_champs(DATA){source tableau,(#TABLE|sql_showtable{0,#CONNECTEUR}|table_valeur{field})}>
$correspondances = \[<BOUCLE_champs(DATA){source tableau,(#TABLE|sql_showtable{0,#CONNECTEUR}|table_valeur{field})}>
'#CLE' => '#CLE',</BOUCLE_champs>
);
\];
// transposer les donnees dans la nouvelle structure
$inserts = array();
$inserts = \[\];
list($cles, $valeurs) = donnees_#TABLE_DESTINATION();
// on remet les noms des cles dans le tableau de valeur
// en s'assurant de leur correspondance au passage
if (is_array($valeurs)) {
foreach ($valeurs as $v) {
$i = array();
$i = [];
foreach ($v as $k => $valeur) {
$cle = $cles[$k];
if (isset($correspondances[$cle]) and $correspondances[$cle]) {
@ -77,14 +77,14 @@ function donnees_#TABLE_DESTINATION() {
[(#SET{data,[(#TABLE|fabrique_extraire_les_donnees_table{#CONNECTEUR})]})]
$cles = [(#GET{data/cles}|ecrire_tableau)];
<B_tous>
$valeurs = array(<BOUCLE_tous(DATA){source tableau,#GET{data/valeurs}}{si (#COMPRESSION|non)}>
$valeurs = \[<BOUCLE_tous(DATA){source tableau,#GET{data/valeurs}}{si (#COMPRESSION|non)}>
[(#VALEUR**|ecrire_tableau)],</BOUCLE_tous>
);
\];
</B_tous>[
(#REM) ecrire_fichier compresse automatiquement les .gz
][(#CHEMIN_COMPRESSION|ecrire_fichier{[(#GET{data/valeurs}|serialize)]}|non)]
lire_fichier(find_in_path('base/[(#DONNEES_COMPRESSEES)]'), $valeurs);
$valeurs = unserialize($valeurs);
<//B_tous>
return array($cles, $valeurs);
return [$cles, $valeurs];
}

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Déclarations relatives à la base de données,
package=Pipelines})]
@ -33,11 +34,11 @@ function [(#PREFIXE)]_declarer_tables_interfaces($interfaces) {
function [(#PREFIXE)]_declarer_tables_objets_sql($tables) {
<BOUCLE_objets_editoriaux(DATA) {source tableau, #OBJETS}>
[(#SET{_id_parent,#VALEUR{parent/id_objet}})
] $tables['#TABLE'] = array(
] $tables['#TABLE'] = \[
'type' => '#TYPE',
'principale' => 'oui',[(#OBJETS_SURNOMS|oui)
'table_objet_surnoms' => [(#OBJETS_SURNOMS|ecrire_tableau)], // table_objet('#TYPE') => '#LOBJET' ]
'field'=> array(
'field' => \[
[(#VAL{['(#ID_OBJET)']} |espacer)] => '#CLE_PRIMAIRE_SQL',[
[(#GET{_id_parent}|_q |espacer)] => 'bigint(21) NOT NULL DEFAULT 0',(#GET{_id_parent}|oui)][
[(#VAL{"'id_secteur'"} |espacer)] => 'bigint(21) NOT NULL DEFAULT 0',(#VALEUR|champ_present{id_secteur})]<BOUCLE_def_champs(DATA) {source tableau,#CHAMPS}>
@ -48,50 +49,50 @@ function [(#PREFIXE)]_declarer_tables_objets_sql($tables) {
[(#VAL{"'langue_choisie'"}|espacer)] => 'varchar(3) DEFAULT "non"',(#VALEUR|champ_present{lang})][
[(#VAL{"'id_trad'"} |espacer)] => 'bigint(21) NOT NULL DEFAULT 0',(#VALEUR|champ_present{id_trad})]
[(#VAL{"'maj'"} |espacer)] => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'
),
'key' => array(
\],
'key' => \[
[(#VAL{"'PRIMARY KEY'"} |espacer)] => '#ID_OBJET',[
[(#VAL{"'KEY "}|concat{#GET{_id_parent}}|concat{"'"} |espacer)] => '(#GET{_id_parent})',][
[(#VAL{"'KEY id_secteur'"} |espacer)] => 'id_secteur',(#VALEUR|champ_present{id_secteur})][
[(#VAL{"'KEY lang'"} |espacer)] => 'lang',(#VALEUR|champ_present{lang})][
[(#VAL{"'KEY id_trad'"} |espacer)] => 'id_trad',(#VALEUR|champ_present{id_trad})][
[(#VAL{"'KEY statut'"} |espacer)] => 'statut',(#VALEUR|champ_present{statut})]
),
\],
'titre' => '[(#CHAMP_TITRE|sinon{'""'})] AS titre, [(#VALEUR|champ_present{lang}|?{lang,'""'})] AS lang',
[(#CHAMP_DATE|non)#]'date' => '[(#CHAMP_DATE)]',
'champs_editables' => [(#VALEUR|fabrique_lister_objet_champs{editable}|ecrire_tableau)],
'champs_versionnes' => [(#VALEUR|fabrique_lister_objet_champs{versionne}|ecrire_tableau)],
'rechercher_champs' => array(<BOUCLE_recherches(DATA){source tableau,#CHAMPS}{recherche >=1 }{", "}>["(#VALEUR{champ})"] => #VALEUR{recherche}</BOUCLE_recherches>),
'tables_jointures' => array(['(#NOM_TABLE_LIENS)']),[
'statut_textes_instituer' => array(
'rechercher_champs' => \[<BOUCLE_recherches(DATA){source tableau,#CHAMPS}{recherche >=1 }{", "}>["(#VALEUR{champ})"] => #VALEUR{recherche}</BOUCLE_recherches>\],
'tables_jointures' => \[['(#NOM_TABLE_LIENS)']\],[
'statut_textes_instituer' => \[
'prepa' => 'texte_statut_en_cours_redaction',
'prop' => 'texte_statut_propose_evaluation',
'publie' => 'texte_statut_publie',
'refuse' => 'texte_statut_refuse',
'poubelle' => 'texte_statut_poubelle',
),
'statut'=> array(
array(
\],
'statut' => \[
\[
'champ' => 'statut',
'publie' => 'publie',
'previsu' => 'publie,prop,prepa',
'post_date' => 'date',
'exception' => array('statut','tout')
)
),
'post_date' => 'date',
'exception' => \['statut','tout'\]
\]
\],
'texte_changer_statut' => '#TYPE:texte_changer_statut_#TYPE',(#STATUT|oui)]
#SET{roles,#VALEUR|fabrique_description_roles}<BOUCLE_roles(CONDITION){si #GET{roles}}>
'roles_colonne' => '#GET{roles/roles_colonne}',
'roles_titres' => array(<BOUCLE_rtitres(DATA){source table,#GET{roles/roles_titres}}>
'roles_titres' => \[<BOUCLE_rtitres(DATA){source table,#GET{roles/roles_titres}}>
'#CLE'=>'#VALEUR',</BOUCLE_rtitres>
),
'roles_objets' => array(<BOUCLE_robjets(DATA){source table,#GET{roles/roles_objets}}>
'#CLE' => array(
\],
'roles_objets' => \[<BOUCLE_robjets(DATA){source table,#GET{roles/roles_objets}}>
'#CLE' => \[
'choix' => [(#VALEUR|ecrire_tableau)],
'defaut' => '#GET{roles/roles_defaut}'),</BOUCLE_robjets>
),</BOUCLE_roles>
'defaut' => '#GET{roles/roles_defaut}'\],</BOUCLE_robjets>
\],</BOUCLE_roles>
);
\];
</BOUCLE_objets_editoriaux>
return $tables;
}
@ -108,19 +109,19 @@ function [(#PREFIXE)]_declarer_tables_objets_sql($tables) {
*/
function [(#PREFIXE)]_declarer_tables_auxiliaires($tables) {
<BOUCLE_objets_liens(DATA) {source tableau, #OBJETS}{table_liens != ''}>
$tables['#NOM_TABLE_LIENS'] = array(
'field' => array(
$tables['#NOM_TABLE_LIENS'] = \[
'field' => \[
[(#VAL{['(#ID_OBJET)']} |espacer)] => 'bigint(21) DEFAULT "0" NOT NULL',
[(#VAL{"'id_objet'"} |espacer)] => 'bigint(21) DEFAULT "0" NOT NULL',
[(#VAL{"'objet'"} |espacer)] => 'varchar(25) DEFAULT "" NOT NULL',[
[(#VAL{"'role'"} |espacer)] => 'varchar(25) DEFAULT ""',(#VALEUR|options_presentes{#LISTE{table_liens,roles}})]
[(#VAL{"'vu'"} |espacer)] => 'varchar(6) DEFAULT "non" NOT NULL',
),
'key' => array(
\],
'key' => \[
[(#VAL{"'PRIMARY KEY'"} |espacer)] => '#ID_OBJET,id_objet,objet[(#VALEUR|options_presentes{#LISTE{table_liens,roles}}|?{",role"})]',
[(#VAL{['KEY (#ID_OBJET)']} |espacer)] => '#ID_OBJET',
)
);</BOUCLE_objets_liens>
\]
\];</BOUCLE_objets_liens>
return $tables;
}

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Gestion du formulaire de d'édition de #TYPE,
package=Formulaires})]
@ -65,13 +66,13 @@ Fonctions de chargement de l'objet
* @return array[]
* Saisies du formulaire
*/
function formulaires_editer_[(#TYPE)]_saisies_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
$saisies = array([(#REM)
function formulaires_editer_[(#TYPE)]_saisies_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = \[\], $hidden = '') {
$saisies = \[[(#REM)
]<BOUCLE_saisies(DATA) {source tableau,#ENV{objet/champs}} {saisie != ''}>[(#REM)
]<BOUCLE_si_editable(CONDITION) {si #VALEUR|champ_option_presente{editable}|oui}>
array(
\[
'saisie' => '[(#VALEUR{saisie})]',
'options' => array(
'options' => \[
'nom' => '[(#CHAMP)]',
[(#VALEUR|champ_option_presente{obligatoire}|oui)'obligatoire' => 'oui',]
'label' => _T\('[(#TYPE)]:champ_[(#CHAMP)]_label'\),
@ -80,46 +81,46 @@ function formulaires_editer_[(#TYPE)]_saisies_dist($#ID_OBJET = 'new',[ (#GET{id
][(#SET{option,#VALEUR|trim|explode{=}})][(#REM)
]'[(#GET{option/0})]' => '[(#GET{option/1})]',
</BOUCLE_options>
),[
\],[
(#REM) Une date à normaliser ?
][(#CHAMP|in_any{#GET{champs_date}}|oui)
'verifier' => array(
'verifier' => \[
'type' => 'date',
'options' => array(
'options' => \[
'normaliser' => 'datetime',
),
),]
),[
\],
\],]
\],[
(#REM) On teste donc s'il faut placer le formulaire de parentée ici
]<BOUCLE_si_parent(CONDITION) {si #GET{parent}} {si (#GET{titre}|et{#ENV{objet/champ_titre}|=={#CHAMP}}|ou{#GET{titre}|non|et{#_saisies:COMPTEUR_BOUCLE|=={1}}})}>[(#REM)
]<BOUCLE_si_rubrique(CONDITION) {si #OBJET|champ_present{id_rubrique}}>
array(
\[
'saisie' => 'selecteur_rubrique',
'options' => array(
'options' => \[
'nom' => 'id_parent',
'label' => _T('entree_interieur_rubrique'),
'conteneur_class' => 'editer_parent',
),
),
\],
\],
</BOUCLE_si_rubrique>[(#REM)
]<BOUCLE_si_liaison_directe(CONDITION) {si #OBJET|option_presente{liaison_directe}}>
array(
\[
'saisie' => '[(#ENV{parent/objet})]',
'options' => array(
'options' => \[
'nom' => '[(#ENV{parent/id_objet})]',
'obligatoire' => 'oui',
'label' => _T\('[(#ENV{parent/type})]:titre_[(#ENV{parent/type})]'\),
),
),
\],
\],
</BOUCLE_si_liaison_directe>[(#REM)
]</BOUCLE_si_parent>[(#REM)
]</BOUCLE_si_editable>
</BOUCLE_saisies>
);
\];
return $saisies;
}</BOUCLE_si_saisies_php>
@ -146,8 +147,8 @@ function formulaires_editer_[(#TYPE)]_saisies_dist($#ID_OBJET = 'new',[ (#GET{id
* @return string
* Hash du formulaire
*/
function formulaires_editer_[(#TYPE)]_identifier_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
return serialize(array(intval($#ID_OBJET)[, (#GET{associer_val})]));
function formulaires_editer_[(#TYPE)]_identifier_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = \[\], $hidden = '') {
return json_encode(\[intval($#ID_OBJET)[, (#GET{associer_val})]\]);
}
/**
@ -177,13 +178,14 @@ function formulaires_editer_[(#TYPE)]_identifier_dist($#ID_OBJET = 'new',[ (#GET
* @return array
* Environnement du formulaire
*/
function formulaires_editer_[(#TYPE)]_charger_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
function formulaires_editer_[(#TYPE)]_charger_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = \[\], $hidden = '') {
$valeurs = formulaires_editer_objet_charger('#TYPE', $#ID_OBJET, #GET{id_parent_val}, $lier_trad, $retour, $config_fonc, $row, $hidden);[(#OBJET|option_presente{liaison_directe}|oui)
if (![(#VAL{"$valeurs\['"}|concat{#GET{id_parent}}|concat{"'\]"})]) {
[(#VAL{"$valeurs\['"}|concat{#GET{id_parent}}|concat{"'\] = "}|concat{#GET{id_parent_val};})]
}]
<BOUCLE_si_saisies_php_charger(CONDITION) {si #ENV{paquet/saisies_mode,html}|=={php}}>
$valeurs['saisies'] = call_user_func_array('formulaires_editer_[(#TYPE)]_saisies_dist', func_get_args());[(#REM)
$args = func_get_args();
$valeurs['saisies'] = formulaires_editer_[(#TYPE)]_saisies_dist(...$args);[(#REM)
]</BOUCLE_si_saisies_php_charger>
return $valeurs;
}
@ -215,16 +217,16 @@ function formulaires_editer_[(#TYPE)]_charger_dist($#ID_OBJET = 'new',[ (#GET{id
* @return array
* Tableau des erreurs
*/
function formulaires_editer_[(#TYPE)]_verifier_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
function formulaires_editer_[(#TYPE)]_verifier_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = \[\], $hidden = '') {
<BOUCLE_si_saisie_date_html(CONDITION){si #ENV{objet/champs}|champs_saisie_presente{date}|et{#ENV{paquet/saisies_mode,html}|=={html}}}>
$erreurs = array();
$erreurs = \[\];
// Normaliser les dates
$verifier = charger_fonction('verifier', 'inc');
foreach ([(#ENV{objet/champs}|champs_saisie_presente{date, champ}|ecrire_tableau)] AS $champ) {
$normaliser = null;
if ($erreur = $verifier(_request($champ), 'date', array('normaliser'=>'datetime'), $normaliser)) {
if ($erreur = $verifier(_request($champ), 'date', ['normaliser'=>'datetime'], $normaliser)) {
$erreurs[$champ] = $erreur;
// si une valeur de normalisation a ete transmis, la prendre.
} elseif (!is_null($normaliser)) {
@ -241,7 +243,7 @@ function formulaires_editer_[(#TYPE)]_verifier_dist($#ID_OBJET = 'new',[ (#GET{i
<//B_si_saisie_date_html>
<BOUCLE_si_saisie_rubrique_php(CONDITION) {si #OBJET|champ_present{id_rubrique}|et{#ENV{paquet/saisies_mode,html}|=={php}}}>
// Normaliser la rubrique si le champ n'est pas en erreur :
// le picker ajax du sélecteur générique retourne un tableau de la forme array('rubrique|1')
// le picker ajax du sélecteur générique retourne un tableau de la forme \['rubrique|1'\]
if (
empty($erreurs['id_parent'])
and $picker_id_parent = _request('id_parent')
@ -280,7 +282,7 @@ function formulaires_editer_[(#TYPE)]_verifier_dist($#ID_OBJET = 'new',[ (#GET{i
* @return array
* Retours des traitements
*/
function formulaires_editer_[(#TYPE)]_traiter_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
function formulaires_editer_[(#TYPE)]_traiter_dist($#ID_OBJET = 'new',[ (#GET{id_parent_param})] $retour = '',[ (#GET{associer_param})] $lier_trad = 0, $config_fonc = '', $row = \[\], $hidden = '') {
$retours = formulaires_editer_objet_traiter('#TYPE', $#ID_OBJET, #GET{id_parent_val}, $lier_trad, $retour, $config_fonc, $row, $hidden);[
(#GET{associer}|oui)
// Un lien a prendre en compte ?
@ -290,7 +292,7 @@ function formulaires_editer_[(#TYPE)]_traiter_dist($#ID_OBJET = 'new',[ (#GET{id
if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
include_spip('action/editer_liens');
objet_associer(array('#TYPE' => $#ID_OBJET), array($objet => $id_objet));
objet_associer(\['#TYPE' => $#ID_OBJET\], \[$objet => $id_objet\]);
if (isset($retours\['redirect'\])) {
$retours\['redirect'\] = parametre_url($retours\['redirect'\], 'id_lien_ajoute', $#ID_OBJET, '&');
@ -299,7 +301,4 @@ function formulaires_editer_[(#TYPE)]_traiter_dist($#ID_OBJET = 'new',[ (#GET{id
}
]
return $retours;
}
}

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Préchargement des formulaires d'édition de #TYPE,
package=Formulaires})]
@ -14,7 +15,7 @@ include_spip('inc/precharger_objet');
* Retourne les valeurs à charger pour un formulaire d'édition d'un #TYPE
*
* Lors d'une création, certains champs peuvent être préremplis
* (c'est le cas des traductions)
* (c'est le cas des traductions)
*
* @param string|int $#ID_OBJET
* Identifiant de #TYPE, ou "new" pour une création
@ -25,17 +26,17 @@ include_spip('inc/precharger_objet');
* @return array
* Couples clés / valeurs des champs du formulaire à charger.
**/
function inc_precharger_[(#TYPE)]_dist($#ID_OBJET, $id_rubrique=0, $lier_trad=0) {
function inc_precharger_[(#TYPE)]_dist($#ID_OBJET, $id_rubrique = 0, $lier_trad = 0) {
return precharger_objet('#TYPE', $#ID_OBJET, $id_rubrique, $lier_trad, '#ENV{objet/champ_titre}');
}
/**
* Récupère les valeurs d'une traduction de référence pour la création
* d'un #TYPE (préremplissage du formulaire).
* d'un #TYPE (préremplissage du formulaire).
*
* @note
* Fonction facultative si pas de changement dans les traitements
*
*
* @param string|int $#ID_OBJET
* Identifiant de #TYPE, ou "new" pour une création
* @param int $id_rubrique
@ -45,7 +46,6 @@ function inc_precharger_[(#TYPE)]_dist($#ID_OBJET, $id_rubrique=0, $lier_trad=0)
* @return array
* Couples clés / valeurs des champs du formulaire à charger
**/
function inc_precharger_traduction_[(#TYPE)]_dist($#ID_OBJET, $id_rubrique=0, $lier_trad=0) {
function inc_precharger_traduction_[(#TYPE)]_dist($#ID_OBJET, $id_rubrique = 0, $lier_trad = 0) {
return precharger_traduction_objet('#TYPE', $#ID_OBJET, $id_rubrique, $lier_trad, '#ENV{objet/champ_titre}');
}

@ -1,4 +1,5 @@
#PHP
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
@ -6,9 +7,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
}
[(#SET{chaines,#OBJET|fabriquer_tableau_chaines})]
$GLOBALS[$GLOBALS['idx_lang']] = array(<BOUCLE_chaines(DATA){source tableau,#GET{chaines}}>[
$GLOBALS[$GLOBALS['idx_lang']] = \[<BOUCLE_chaines(DATA){source tableau,#GET{chaines}}>[
// (#CLE|substr{0,1}|unique{#TABLE}|strtoupper)][
'(#CLE)' => '[(#VALEUR|chaine_de_langue)]',]</BOUCLE_chaines>
);
\];

@ -1,15 +1,15 @@
#PHP
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
$GLOBALS[$GLOBALS['idx_lang']] = \[
// [(#PREFIXE|substr{0,1}|strtoupper)]
'#ENV{prefixe}_description' => '[(#ENV{paquet/description}|chaine_de_langue)]',
'#ENV{prefixe}_nom' => '[(#ENV{paquet/nom}|chaine_de_langue)]',
'#ENV{prefixe}_slogan' => '[(#ENV{paquet/slogan}|chaine_de_langue)]',
);
\];

@ -1,4 +1,5 @@
#PHP
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
@ -28,9 +29,8 @@ Chaines en plus si configuration
Construction du tableau de langue
]
$GLOBALS[$GLOBALS['idx_lang']] = array(<BOUCLE_chaines(DATA){source tableau,#GET{chaines}}>[
$GLOBALS[$GLOBALS['idx_lang']] = \[<BOUCLE_chaines(DATA){source tableau,#GET{chaines}}>[
// (#CLE|substr{0,1}|unique{#TABLE}|strtoupper)][
'(#CLE)' => '[(#VALEUR|chaine_de_langue)]',]</BOUCLE_chaines>
);
\];

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Fichier gérant l'installation et désinstallation du plugin #ENV{paquet/nom},
package=Installation})]
@ -21,27 +22,27 @@
* @return void
**/
function #ENV{prefixe}_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();<BOUCLE_si_exemples(CONDITION){si #EXEMPLES}>
$maj = [];<BOUCLE_si_exemples(CONDITION){si #EXEMPLES}>
# quelques exemples
# (que vous pouvez supprimer !)
#
# $maj['create'] = array(array('creer_base'));
#
# $maj['create'] = [['creer_base']];
#
# include_spip('inc/config')
# $maj['create'] = array(
# array('maj_tables', array('spip_xx', 'spip_xx_liens')),
# array('ecrire_config', '#ENV{prefixe}', array('exemple' => "Texte de l'exemple"))
#);
# $maj['create'] = [
# ['maj_tables', ['spip_xx', 'spip_xx_liens']],
# ['ecrire_config', '#ENV{prefixe}', ['exemple' => "Texte de l'exemple"]],
#];
#
# $maj['1.1.0'] = array(array('sql_alter','TABLE spip_xx RENAME TO spip_yy'));
# $maj['1.2.0'] = array(array('sql_alter','TABLE spip_xx DROP COLUMN id_auteur'));
# $maj['1.3.0'] = array(
# array('sql_alter','TABLE spip_xx CHANGE numero numero int(11) default 0 NOT NULL'),
# array('sql_alter','TABLE spip_xx CHANGE texte petit_texte mediumtext NOT NULL default \'\''),
# );
# $maj['1.1.0'] = [['sql_alter','TABLE spip_xx RENAME TO spip_yy']];
# $maj['1.2.0'] = [['sql_alter','TABLE spip_xx DROP COLUMN id_auteur']];
# $maj['1.3.0'] = [
# ['sql_alter','TABLE spip_xx CHANGE numero numero int(11) default 0 NOT NULL'],
# ['sql_alter','TABLE spip_xx CHANGE texte petit_texte mediumtext NOT NULL default \'\''],
# ];
# ...</BOUCLE_si_exemples>
<BOUCLE_si_objets(CONDITION){si #OBJETS}>
$maj['create'] = array(array('maj_tables', [(#LES_TABLES|ecrire_tableau)]));[
$maj['create'] = [['maj_tables', [(#LES_TABLES|ecrire_tableau)]]];[
(#ENV*{paquet/inserer/administrations/maj}|fabrique_tabulations{1})]
</BOUCLE_si_objets>
include_spip('base/upgrade');
@ -51,7 +52,7 @@ function #ENV{prefixe}_upgrade($nom_meta_base_version, $version_cible) {
/**
* Fonction de désinstallation du plugin #ENV{paquet/nom}.[
*
*
* Vous devez :
*
* - nettoyer toutes les données ajoutées par le plugin et son utilisation

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Définit les autorisations du plugin #ENV{paquet/nom},
package=Autorisations})]
@ -103,7 +104,7 @@ function autoriser_#GET{type}_voir_dist($faire, $type, $id, $qui, $opt) {
* @return bool true s'il a le droit, false sinon
**/
function autoriser_#GET{type}_creer_dist($faire, $type, $id, $qui, $opt) {[
return \([(#GET{creer})] and sql_countsel('spip_rubriques')>0\);(#VALEUR|champ_present{id_rubrique}|oui)][
return \([(#GET{creer})] and sql_countsel('spip_rubriques') > 0\);(#VALEUR|champ_present{id_rubrique}|oui)][
return #GET{creer};(#VALEUR|champ_present{id_rubrique}|non)]
}
@ -186,11 +187,11 @@ function autoriser_associer#GET{objet}_dist($faire, $type, $id, $qui, $opt) {
* @return array Liste des id_auteur trouvés
*/
function [(#PREFIXE)]_auteurs_objet($objet, $id_objet) {
$auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', array('objet = ' . sql_quote($objet), 'id_objet = ' . intval($id_objet)));
$auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', \['objet = ' . sql_quote($objet), 'id_objet = ' . intval($id_objet)\]);
if (is_array($auteurs)) {
return array_column($auteurs, 'id_auteur');
}
return array();
return \[\];
}
</BOUCLE_aide_auteur>[(#REM)
]<BOUCLE_aide_auteur_rubrique(CONDITION)
@ -213,7 +214,7 @@ function [(#PREFIXE)]_autoriser_admins($objet, $id_objet, $qui) {
{si #OBJETS|objets_autorisation_presente{auteur_objet_statut}}
{si #OBJETS|objets_champ_present{statut}}>
/**
* Tester si le statut de l'objet autorise des changements, en fonction du statut de l'auteur.
* Tester si le statut de l'objet autorise des changements, en fonction du statut de l'auteur.
*
* @param string $objet Type d'objet
* @param int $id_objet Identifiant de l'objet
@ -224,8 +225,8 @@ function [(#PREFIXE)]_autoriser_admins($objet, $id_objet, $qui) {
function [(#PREFIXE)]_autoriser_statuts($objet, $id_objet, $qui, $opt) {
$statut = sql_getfetsel('statut', table_objet_sql($objet), id_table_objet($objet) . ' = ' . intval($id_objet));
return (!isset($opt['statut']) or $opt['statut'] !== 'publie')
and in_array($qui['statut'], array('0minirezo', '1comite'))
and in_array($statut, array('prop', 'prepa', 'poubelle'));
and in_array($qui['statut'], ['0minirezo', '1comite'])
and in_array($statut, ['prop', 'prepa', 'poubelle']);
}
</BOUCLE_aide_objet_statut>[(#REM)
]

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Fonctions utiles au plugin #ENV{paquet/nom},
package=Fonctions})]
@ -9,6 +10,6 @@
* systématiquement chargés lors du calcul des squelettes.
*
* Il peut par exemple définir des filtres, critères, balises, …
*
*
*/
</BOUCLE_si_exemples>

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Options au chargement du plugin #ENV{paquet/nom},
package=Options})]
@ -10,6 +11,6 @@
*
* Il vaut donc mieux limiter au maximum son usage
* tout comme son volume !
*
*
*/
</BOUCLE_si_exemples>

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Utilisations de pipelines par #ENV{paquet/nom},
package=Pipelines})]
@ -34,14 +35,13 @@ function [(#PREFIXE)]_affiche_enfants($flux) {
) {
$id_objet = $flux['args']['id_objet'];
<B_objets_affiche_enfants_rubrique>
if ($e['type'] === 'rubrique') {
<BOUCLE_objets_affiche_enfants_rubrique(DATA){source tableau,(#OBJETS|objets_option_presente{vue_rubrique})}>
if ($e['type'] === 'rubrique') {<BOUCLE_objets_affiche_enfants_rubrique(DATA){source tableau,(#OBJETS|objets_option_presente{vue_rubrique})}>
$flux['data'] .= recuperer_fond(
'prive/objets/liste/#OBJET',
array(
[
'titre' => _T('#TYPE:titre_[(#OBJET)]_rubrique'),
'id_rubrique' => $id_objet
)
]
);
if (autoriser('creer[(#TYPE|fabrique_type_autorisation)]dans', 'rubrique', $id_objet)) {
@ -53,18 +53,17 @@ function [(#PREFIXE)]_affiche_enfants($flux) {
'new',
'right'
) . "<br class='nettoyeur' />";
}
</BOUCLE_objets_affiche_enfants_rubrique>
}</BOUCLE_objets_affiche_enfants_rubrique>
}
</B_objets_affiche_enfants_rubrique>[(#REM)
]<BOUCLE_objets_affiche_enfants_directs(DATA){source tableau,(#OBJETS|objets_option_presente{liaison_directe})}>
if ($e['type'] === '[(#VALEUR{parent/type})]') {
$flux['data'] .= recuperer_fond(
'prive/objets/liste/#OBJET',
array(
[
'titre' => _T('#TYPE:titre_[(#OBJET)]'),
'[(#VALEUR{parent/id_objet})]' => $id_objet
)
]
);
if (autoriser('creer[(#TYPE|fabrique_type_autorisation)]dans', '[(#VALEUR{parent/objet})]', $id_objet)) {
@ -109,13 +108,13 @@ function [(#PREFIXE)]_affiche_milieu($flux) {
if (
$e
and !$e['edition']
and in_array($e['type'], array('[(#OBJETS|objets_option_presente{auteurs_liens, type}|implode{"', '"})]'))
and in_array($e['type'], ['[(#OBJETS|objets_option_presente{auteurs_liens, type}|implode{"', '"})]'])
) {
$texte .= recuperer_fond('prive/objets/editer/liens', array(
$texte .= recuperer_fond('prive/objets/editer/liens', [
'table_source' => 'auteurs',
'objet' => $e['type'],
'id_objet' => $flux['args'][$e['id_table_objet']]
));
]);
}</BOUCLE_si_affiche_milieu_auteurs>
<BOUCLE_objet_liens_sur_objet(DATA){source tableau,(#OBJETS|objets_options_presentes{#LISTE{table_liens,vue_liens}})}>
@ -123,13 +122,13 @@ function [(#PREFIXE)]_affiche_milieu($flux) {
if (
$e
and !$e['edition']
and in_array($e['type'], array('[(#VUE_LIENS|fabrique_array_map{objet_type, #OBJETS}|implode{"', '"})]'))
and in_array($e['type'], ['[(#VUE_LIENS|fabrique_array_map{objet_type, #OBJETS}|implode{"', '"})]'])
) {
$texte .= recuperer_fond('prive/objets/editer/liens', array(
$texte .= recuperer_fond('prive/objets/editer/liens', [
'table_source' => '#LOBJET',
'objet' => $e['type'],
'id_objet' => $flux['args'][$e['id_table_objet']]
));
]);
}</BOUCLE_objet_liens_sur_objet>
if ($texte) {
@ -162,10 +161,10 @@ function [(#PREFIXE)]_affiche_milieu($flux) {
*/
function [(#PREFIXE)]_affiche_auteurs_interventions($flux) {
if ($id_auteur = intval($flux['args']['id_auteur'])) {<BOUCLE_affiche_auteurs_interventions(DATA){source tableau,(#OBJETS|objets_option_presente{vue_auteurs_liens})}>
$flux['data'] .= recuperer_fond('prive/objets/liste/#OBJET', array(
$flux['data'] .= recuperer_fond('prive/objets/liste/#OBJET', \[
'id_auteur' => $id_auteur,
'titre' => _T('#TYPE:info_[(#OBJET)]_auteur')
), array('ajax' => true));
\], ['ajax' => true]);
</BOUCLE_affiche_auteurs_interventions>}
return $flux;
}
@ -217,7 +216,7 @@ function [(#PREFIXE)]_boite_infos($flux) {[(#REM)
if (isset($flux['args']['type']) and isset($flux['args']['id']) and $id = intval($flux['args']['id'])) {
$texte = '';
<BOUCLE_boite_infos(DATA){source tableau,(#OBJETS|objets_options_presentes{parent})}>[(#REM)
] if ($flux['args']['type'] == '#VALEUR{parent/type}' and $nb = sql_countsel('#VALEUR{table}', array(["(#STATUT|?{statut='publie'})", ]'#VALEUR{parent/id_objet}=' . $id))) {
] if ($flux['args']['type'] == '#VALEUR{parent/type}' and $nb = sql_countsel('#VALEUR{table}', \[["(#STATUT|?{statut='publie'})", ]'#VALEUR{parent/id_objet}=' . $id\])) {
$texte .= '<div>' . singulier_ou_pluriel($nb, '#TYPE:info_1_#TYPE', '#TYPE:info_nb_#LOBJET') . "</div>\n";
}
</BOUCLE_boite_infos>[(#REM)
@ -289,7 +288,7 @@ function [(#PREFIXE)]_objet_compte_enfants($flux) {
function [(#PREFIXE)]_optimiser_base_disparus($flux) {
<B_objets_optimiser_liens>
include_spip('action/editer_liens');
$flux['data'] += objet_optimiser_liens(array(<BOUCLE_objets_optimiser_liens(DATA){source tableau,(#OBJETS|objets_options_presentes{table_liens})}{', '}>'#TYPE'=>'*'</BOUCLE_objets_optimiser_liens>), '*');
$flux['data'] += objet_optimiser_liens(\[<BOUCLE_objets_optimiser_liens(DATA){source tableau,(#OBJETS|objets_options_presentes{table_liens})}{', '}>'#TYPE' => '*'</BOUCLE_objets_optimiser_liens>\], '*');
</B_objets_optimiser_liens>[(#REM)
]<B_objets_optimiser_poubelle>[(#REM)
]<BOUCLE_objets_optimiser_poubelle(DATA){source tableau,(#OBJETS|objets_champ_present{statut})}>
@ -318,15 +317,14 @@ function [(#PREFIXE)]_trig_propager_les_secteurs($flux) {
<BOUCLE_trig_propager_les_secteurs(DATA){source tableau,(#OBJETS|objets_options_presentes{#LISTE{id_rubrique,id_secteur}})}>
// synchroniser #TABLE
$r = sql_select(
'A.#ID_OBJET AS id, R.id_secteur AS secteur',
'A.#ID_OBJET AS id, R.id_secteur AS secteur',
'#TABLE AS A, spip_rubriques AS R',
'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur'
);
while ($row = sql_fetch($r)) {
sql_update('#TABLE', array('id_secteur' => $row['secteur']), '#ID_OBJET=' . $row['id']);
sql_update('#TABLE', \['id_secteur' => $row['secteur']\], '#ID_OBJET=' . $row['id']);
}
</BOUCLE_trig_propager_les_secteurs>
return $flux;
}
</B_trig_propager_les_secteurs>

@ -1,4 +1,5 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Fonctions du squelette associé,
package=Fonctions})]
@ -6,4 +7,3 @@
// pour initiale et afficher_initiale
include_spip('prive/objets/liste/auteurs_fonctions');

@ -1,8 +1,8 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Fonctions du squelette associé,
package=Fonctions})]
// pour initiale et afficher_initiale
include_spip('prive/objets/liste/auteurs_fonctions');

@ -1,8 +1,8 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Fonctions du squelette associé,
package=Fonctions})]
// pour initiale et afficher_initiale
include_spip('prive/objets/liste/auteurs_fonctions');

@ -1,8 +1,8 @@
#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Fonctions du squelette associé,
package=Fonctions})]
// pour initiale et afficher_initiale
include_spip('prive/objets/liste/auteurs_fonctions');

@ -1082,7 +1082,7 @@ function ecrire_tableau($tableau, $quote = false, $defaut = 'array()') {
return $defaut;
}
$res = "array('" . implode("', '", array_map('addslashes', $tableau)) . "')";
$res = "['" . implode("', '", array_map('addslashes', $tableau)) . "']";
if ($quote) {
$res = "array_map('sql_quote', $res)";
@ -1497,7 +1497,7 @@ function fabrique_code_autorisation($type, $prefixe, $objet) {
break;
case 'redacteur':
return "in_array(\$qui['statut'], array('0minirezo', '1comite'))";
return "in_array(\$qui['statut'], ['0minirezo', '1comite'])";
break;
// Au moins administrateur complet ou restreint sur la rubrique sur l'objet

Loading…
Cancel
Save