* text=auto !eol
/INSTALL.txt -text
config/ecran_securite.php -text
config/remove.txt -text
ecrire/action/activer_plugins.php -text
ecrire/action/ajouter_lien.php -text
Intégration d'une gestion de files de taches (initialement le plugin job_queue) en remplacement du système de cron periodique
La declaration de taches periodiques reste identique a auparavant (pipeline taches_generales_cron)
La balise #SPIP_CRON disparait, remplacee par un declenchement en fin de hit uniquement quand une tache
est en attente. Pour le declenchement, on utilise preferentiellement un socket, et a defaut une image background comme avant.
Lors d'un appel, le sequenceur execute autant de taches en attente que possible, dans la limite d'un temps donné. Des appels concurents peuvent se jouer, mais chaque tache est executee une unique fois par une seule instance. L'unicité de l'execution est garantie par un sql_delete.
SI jamais le nombre de taches en attente depasse un seuil (10000 par defaut) la file est purgee par un appel en fin de hit, synchrone.
Une page d'aministration est accesible aux administrateurs depuis le menu maintenance.
L'API est
/**
* Ajout d'une tache dans la file d'attente
*
* @param $function
* The function name to call.
* @param $description
* A human-readable description of the queued job.
* @param $arguments
* Optional array of arguments to pass to the function.
* @param $file
* Optional file path which needs to be included for $fucntion.
* @param $no_duplicate
* If TRUE, do not add the job to the queue if one with the same function and
* arguments already exists.
* @param $time
* time for starting the job. If 0, job will start as soon as possible
* @param $priority
* -10 (low priority) to +10 (high priority), 0 is the default
* @return int
* id of job
*/
function job_queue_add($function, $description, $arguments = array(), $file = '', $no_duplicate = FALSE, $time=0, $priority=0)
/**
* Supprimer une tache de la file d'attente
* @param int $id_job
* id of jonb to delete
* @return bool
*/
function job_queue_remove($id_job)
/**
* Associer une tache a un/des objets de SPIP
* @param int $id_job
* id of job to link
* @param array $objets
* can be a simple array('objet'=>'article','id_objet'=>23)
* or an array of simple array to link multiples objet in one time
*/
function job_queue_link($id_job,$objets)
12 years ago
ecrire/action/annuler_job.php -text
ecrire/action/auth.php -text
ecrire/action/calculer_taille_cache.php -text
ecrire/action/confirmer_email.php -text
ecrire/action/confirmer_inscription.php -text
ecrire/action/converser.php -text
ecrire/action/debloquer_edition.php -text
ecrire/action/desinstaller_plugin.php -text
ecrire/action/editer_article.php -text
ecrire/action/editer_auteur.php -text
ecrire/action/editer_liens.php -text
ecrire/action/editer_logo.php -text
ecrire/action/editer_objet.php -text
ecrire/action/editer_rubrique.php -text
ecrire/action/etre_webmestre.php -text
Intégration d'une gestion de files de taches (initialement le plugin job_queue) en remplacement du système de cron periodique
La declaration de taches periodiques reste identique a auparavant (pipeline taches_generales_cron)
La balise #SPIP_CRON disparait, remplacee par un declenchement en fin de hit uniquement quand une tache
est en attente. Pour le declenchement, on utilise preferentiellement un socket, et a defaut une image background comme avant.
Lors d'un appel, le sequenceur execute autant de taches en attente que possible, dans la limite d'un temps donné. Des appels concurents peuvent se jouer, mais chaque tache est executee une unique fois par une seule instance. L'unicité de l'execution est garantie par un sql_delete.
SI jamais le nombre de taches en attente depasse un seuil (10000 par defaut) la file est purgee par un appel en fin de hit, synchrone.
Une page d'aministration est accesible aux administrateurs depuis le menu maintenance.
L'API est
/**
* Ajout d'une tache dans la file d'attente
*
* @param $function
* The function name to call.
* @param $description
* A human-readable description of the queued job.
* @param $arguments
* Optional array of arguments to pass to the function.
* @param $file
* Optional file path which needs to be included for $fucntion.
* @param $no_duplicate
* If TRUE, do not add the job to the queue if one with the same function and
* arguments already exists.
* @param $time
* time for starting the job. If 0, job will start as soon as possible
* @param $priority
* -10 (low priority) to +10 (high priority), 0 is the default
* @return int
* id of job
*/
function job_queue_add($function, $description, $arguments = array(), $file = '', $no_duplicate = FALSE, $time=0, $priority=0)
/**
* Supprimer une tache de la file d'attente
* @param int $id_job
* id of jonb to delete
* @return bool
*/
function job_queue_remove($id_job)
/**
* Associer une tache a un/des objets de SPIP
* @param int $id_job
* id of job to link
* @param array $objets
* can be a simple array('objet'=>'article','id_objet'=>23)
* or an array of simple array to link multiples objet in one time
*/
function job_queue_link($id_job,$objets)
12 years ago
ecrire/action/forcer_job.php -text
ecrire/action/index.php -text
ecrire/action/inscrire_auteur.php -text
ecrire/action/instituer_langue_objet.php -text
ecrire/action/instituer_langue_rubrique.php -text
ecrire/action/instituer_objet.php -text
ecrire/action/logout.php -text
ecrire/action/menu_rubriques.php -text
ecrire/action/purger.php -text
Intégration d'une gestion de files de taches (initialement le plugin job_queue) en remplacement du système de cron periodique
La declaration de taches periodiques reste identique a auparavant (pipeline taches_generales_cron)
La balise #SPIP_CRON disparait, remplacee par un declenchement en fin de hit uniquement quand une tache
est en attente. Pour le declenchement, on utilise preferentiellement un socket, et a defaut une image background comme avant.
Lors d'un appel, le sequenceur execute autant de taches en attente que possible, dans la limite d'un temps donné. Des appels concurents peuvent se jouer, mais chaque tache est executee une unique fois par une seule instance. L'unicité de l'execution est garantie par un sql_delete.
SI jamais le nombre de taches en attente depasse un seuil (10000 par defaut) la file est purgee par un appel en fin de hit, synchrone.
Une page d'aministration est accesible aux administrateurs depuis le menu maintenance.
L'API est
/**
* Ajout d'une tache dans la file d'attente
*
* @param $function
* The function name to call.
* @param $description
* A human-readable description of the queued job.
* @param $arguments
* Optional array of arguments to pass to the function.
* @param $file
* Optional file path which needs to be included for $fucntion.
* @param $no_duplicate
* If TRUE, do not add the job to the queue if one with the same function and
* arguments already exists.
* @param $time
* time for starting the job. If 0, job will start as soon as possible
* @param $priority
* -10 (low priority) to +10 (high priority), 0 is the default
* @return int
* id of job
*/
function job_queue_add($function, $description, $arguments = array(), $file = '', $no_duplicate = FALSE, $time=0, $priority=0)
/**
* Supprimer une tache de la file d'attente
* @param int $id_job
* id of jonb to delete
* @return bool
*/
function job_queue_remove($id_job)
/**
* Associer une tache a un/des objets de SPIP
* @param int $id_job
* id of job to link
* @param array $objets
* can be a simple array('objet'=>'article','id_objet'=>23)
* or an array of simple array to link multiples objet in one time
*/
function job_queue_link($id_job,$objets)
12 years ago
ecrire/action/purger_queue.php -text
ecrire/action/redirect.php -text
ecrire/action/referencer_traduction.php -text
ecrire/action/session.php -text
Intégration d'une gestion de files de taches (initialement le plugin job_queue) en remplacement du système de cron periodique
La declaration de taches periodiques reste identique a auparavant (pipeline taches_generales_cron)
La balise #SPIP_CRON disparait, remplacee par un declenchement en fin de hit uniquement quand une tache
est en attente. Pour le declenchement, on utilise preferentiellement un socket, et a defaut une image background comme avant.
Lors d'un appel, le sequenceur execute autant de taches en attente que possible, dans la limite d'un temps donné. Des appels concurents peuvent se jouer, mais chaque tache est executee une unique fois par une seule instance. L'unicité de l'execution est garantie par un sql_delete.
SI jamais le nombre de taches en attente depasse un seuil (10000 par defaut) la file est purgee par un appel en fin de hit, synchrone.
Une page d'aministration est accesible aux administrateurs depuis le menu maintenance.
L'API est
/**
* Ajout d'une tache dans la file d'attente
*
* @param $function
* The function name to call.
* @param $description
* A human-readable description of the queued job.
* @param $arguments
* Optional array of arguments to pass to the function.
* @param $file
* Optional file path which needs to be included for $fucntion.
* @param $no_duplicate
* If TRUE, do not add the job to the queue if one with the same function and
* arguments already exists.
* @param $time
* time for starting the job. If 0, job will start as soon as possible
* @param $priority
* -10 (low priority) to +10 (high priority), 0 is the default
* @return int
* id of job
*/
function job_queue_add($function, $description, $arguments = array(), $file = '', $no_duplicate = FALSE, $time=0, $priority=0)
/**
* Supprimer une tache de la file d'attente
* @param int $id_job
* id of jonb to delete
* @return bool
*/
function job_queue_remove($id_job)
/**
* Associer une tache a un/des objets de SPIP
* @param int $id_job
* id of job to link
* @param array $objets
* can be a simple array('objet'=>'article','id_objet'=>23)
* or an array of simple array to link multiples objet in one time
*/
function job_queue_link($id_job,$objets)
12 years ago
ecrire/action/super_cron.php -text
ecrire/action/supprimer_lien.php -text
ecrire/action/supprimer_rubrique.php -text
ecrire/action/tester.php -text
ecrire/action/tester_taille.php -text
ecrire/auth/sha256.inc.php -text
ecrire/balise/configurer_metas.php -text
ecrire/balise/formulaire_.php -text
ecrire/balise/index.php -text
Balise #INFO_xxx{objet,id_objet} pour recuperer hors boucle un champ xxx sur l'objet concerne.
Permet par exemple de recuperer dans le plugin forum le titre et l'url de l'objet sur lequel porte le forum, quel qu'il soit (ce que ne permet pas une boucle dont la table doit etre connue a la compilation), avec #INFO_URL{#OBJET,#ID_OBJET} et #INFO_TITRE{#OBJET,#ID_OBJET}
Utilise le filtre generer_info_entite($id_objet,$ojet,$info). Attention, l'ordre des arguments de ce filtre est inverse, par coherence avec la fonction existante generer_url_entite.
Il peut de ce fait aussi etre utilise plus simplement comme filtre : [(#ID_ARTICLE|generer_info_entite{'article','titre'})]
/**
* Donner n'importe quelle information sur un objet de maniere generique.
*
* La fonction va gerer en interne deux cas particuliers les plus utilises :
* l'URL et le titre (qui n'est pas forcemment le champ SQL "titre").
*
* On peut ensuite personnaliser les autres infos en creant une fonction
* generer_<nom_info>_entite($id_objet, $type_objet, $ligne).
* $ligne correspond a la ligne SQL de tous les champs de l'objet, les fonctions
* de personnalisation n'ont donc pas a refaire de requete.
*
* @param int $id_objet
* @param string $type_objet
* @param string $info
* @return string
*/
function generer_info_entite($id_objet,$ojet,$info)
12 years ago
ecrire/balise/info_.php -text
ecrire/balise/logo_.php -text
ecrire/balise/url_.php -text
ecrire/base/connect_sql.php -text
Rendre surchargeable la fonction d'authentification hors HTTP inc_admin.
Interface: cette fonction reçoit comme premier argument un nom et demande la création d'un répertoire déduit de ce nom et de l'heure, et relance le script. Si le répertoire existe déjà (au 2e appel normalement) elle mémorise dans la table spip_meta le $REQUEST ayant provoqué l'appel, cette méta étant nommée également par le premier argument. Elle effectue ensuite un charger_fonction sur ce nom et le répertoire {{{base}}} (car ces actions concernent toujours la base de donnnées: upgrade, delete_all, convert_utf8, admin_repair). En cas d'interruption du script, tester la présence de telles variables au niveau de ecrire/index.php permet de s'apercevoir de l'interruption, et de reprendre le travail avec les valeurs transmises dans $_REQUEST lors du premier appel (n'est utilisé actuellement que pour import_all). Lorsque la fonction chargée a fini le travail, la meta et le repertoire sont supprimés.
La fonction inc_admin admet 3 arguments supplémentaires optionnels: le titre de la page, un texte preliminaire expliquant l'action entreprise après création du répertoire, et une URL de retour.
Au passage, ajout de la destruction du cache du menu des rubriques dans l'action de purge des caches, sinon on croit que l'action convert_utf8 n'a pas marché.
La rationnalisation des noms induit donc que la meta "debut_restauration" se nomme à présent "import_all", et "conversion_charset" se nomme "convert_utf8; cet arbitraire ne devrait avoir aucune conséquence.
Il reste un cas d'appel de debut_admin en dehors de ce schéma, lié au passage inachevé en plugin de la gestion du vieux htpassword.
16 years ago
ecrire/base/delete_all.php -text
ecrire/base/dump.php -text
ecrire/base/index.php -text
introduction d'une fonction
lister_table_objets_sql pour lister les informations relatives a une table sql et a l'objet editorial qu'elle implemente.
La fonction est alimentee par le pipeline declarer_table_objets_sql qui permet de declarer les infos d'une table d'un objet.
Ce pipeline remplace et unifie les pipelines declarer_tables_objets_surnoms, declarer_type_surnoms, ainsi que les globales table_titre et table_date
La fonction est appelee par base/trouver_table pour completer la description SQL d'une table, ce qui permet d'eliminer la rentrance par objet_type.
La fonction devient centrale et alimente les fonctions objet_type, table_objet, table_objet_sql, via trouver_table pour certaines.
La fonction renvoi les infos d'une table si elle est passee en argument, ou les infos de toutes les tables.
Dans ce cas, chaque entree du tableau est le nom complet de la table (ie spip_articles)
Pour chacune, les infos fournies sont les suivantes :
* table_objet
* table_objet_surnoms
* type
* type_surnoms
* url_voir
* url_edit
* icone_objet
*
* texte_retour
* texte_modifier
*
* info_aucun_objet
* info_1_objet
* info_nb_objets
*
* titre
* date
* champs_versionnes
La fonction renseigner_table_objet_sql complete chaque info manquante dans le pipeline, a partir des infos fournies et des usages conventionnels (spip_articles => type=article, table_objet=articles, icone_objet=article ....).
On objet qui respecte toutes les conventions de nommage peut donc etre renseigne automatiquement.
Ces fonctions de manipulations d'objet sont regroupees dans base/objets, qui est inclus par base/connect_sql par soucis de compatibilite
12 years ago
ecrire/base/objets.php -text
ecrire/base/repair.php -text
ecrire/base/trouver_table.php -text
ecrire/charsets/cp1250.php -text
ecrire/charsets/cp1251.php -text
ecrire/charsets/cp1256.php -text
ecrire/charsets/html.php -text
ecrire/charsets/index.php -text
ecrire/charsets/iso-8859-1.php -text
ecrire/charsets/iso-8859-15.php -text
ecrire/charsets/iso-8859-6.php -text
ecrire/charsets/iso-8859-9.php -text
ecrire/charsets/mathml.php -text
ecrire/charsets/translit.php -text
ecrire/charsets/translitcomplexe.php -text
ecrire/exec/403.php -text
ecrire/exec/404.php -text
ecrire/exec/admin_plugin.php -text
ecrire/exec/base_delete_all.php -text
ecrire/exec/base_repair.php -text
ecrire/exec/demande_mise_a_jour.php -text
ecrire/exec/fond.php -text
Introduction d'un dossier prive/squelettes/ qui contient les squelettes de l'espace prive.
Introduction de styliser_par_z_dist surchargable, qui inclus les mecanismes de ZPIP, actifs pour l'espace prive, activable pour l'espace public par un define('_ZPIP');
la fonction echaffaudable est egalement integree, mais pas la fonction d'echaffaudage. Aucun echaffaudage n'est pour l'instant integre dans l'espace prive
La structure des blocs pour l'espace prive est :
head, barre-nav, hierarchie, navigation, extra, contenu et pied
Structure minimaliste des squelettes, avec une implementation par defaut de chaque bloc. Pour le moment, les squelettes head, barre-nav et pied font appel aux fonctions php pour generer le html comme sur les autres pages, mais il va sans dire qu'a terme on inversera le schema (quelques fonctions sont crees pour atteindre le bon morceau de html, et quelques appels sont rationalises en faisant disparaitre les vieux arguments plus utilises)
La squelettes de l'espace prive sont detectes par la fonction tester_url_ecrire qui aiguille sur exec=fond pour les squelettes Z et exec=fond_monobloc pour les anciens squelettes temporaires mono-fichier balises par des commentaires.
En l'etat, il est possible de creer une page de l'espace prive par un simple squelette contenu/page-xx ou contenu/yyy pour un objet de SPIP (on maintient le distingo entre les deux types de page).
Les plugins pourront le faire de meme, a condition de bien mettre dans un sous dossier prive/squelettes/ du plugin
On integre le modele typo de petronille (merci tetue) et une page-typo pour commencer
12 years ago
ecrire/exec/fond_monobloc.php -text
ecrire/exec/index.php -text
ecrire/exec/info_plugin.php -text
ecrire/exec/informer.php -text
ecrire/exec/install.php -text
ecrire/exec/plonger.php -text
ecrire/exec/puce_statut.php -text
ecrire/exec/rechercher.php -text
ecrire/exec/selectionner.php -text
ecrire/exec/upgrade.php -text
ecrire/genie/maintenance.php -text
ecrire/genie/mise_a_jour.php -text
ecrire/inc/actions.php -text
ecrire/inc/autoriser.php -text
ecrire/inc/bandeau.php -text
ecrire/inc/boutons.php -text
ecrire/inc/charger_php_extension.php -text
ecrire/inc/chercher_logo.php -text
ecrire/inc/chercher_rubrique.php -text
ecrire/inc/commencer_page.php -text
ecrire/inc/completer_traduction.php -text
ecrire/inc/cookie.php -text
ecrire/inc/couleurs.php -text
ecrire/inc/csv.php -text
ecrire/inc/cvt_autosave.php -text
ecrire/inc/cvt_configurer.php -text
ecrire/inc/cvt_multietapes.php -text
ecrire/inc/definir_menus_favoris.php -text
ecrire/inc/distant.php -text
ecrire/inc/drapeau_edition.php -text
gestion d'un controle md5() des champs modifies via l'espace prive sur les articles, rubriques, breves, mots-cles, auteurs et sites.
Le scenario est le suivant : supposons que Alice et Bob ouvrent en meme temps le meme article en edition ; ensuite chacun renvoie ses modifs. Les situations sont diverses :
- Alice a modifie le titre, Bob le texte : on accepte les deux modifs, le titre de Bob (inchange) n'ecrase pas le titre d'Alice
- Alice modifie le titre, Bob aussi :
-- ils ont mis le meme titre => pas de probleme
-- le titre differe => on previent Bob, on lui montre son titre, celui qui est stocke' dans la base, la difference entre les deux, et un formulaire pour copier/coller ses modifs
Ces choses sont traitees champ par champ independamment : ainsi s'il y a conflit sur le titre mais pas sur le chapo, le chapo est enregistre, et le message d'erreur ne porte que sur le titre
C'est, evidemment, compatible avec les crayons
15 years ago
ecrire/inc/editer.php -text
ecrire/inc/envoyer_mail.php -text
ecrire/inc/exporter_csv.php -text
ecrire/inc/filtres_boites.php -text
ecrire/inc/filtres_dates.php -text
ecrire/inc/filtres_ecrire.php -text
ecrire/inc/filtres_images_lib_mini.php -text
ecrire/inc/filtres_images_mini.php -text
ecrire/inc/filtres_mime.php -text
ecrire/inc/filtres_mini.php -text
ecrire/inc/filtres_selecteur_generique.php -text
ecrire/inc/headers.php -text
ecrire/inc/icone_renommer.php -text
ecrire/inc/iconifier.php -text
ecrire/inc/idna_convert.class.php -text
ecrire/inc/importer_csv.php -text
ecrire/inc/index.php -text
ecrire/inc/informer.php -text
ecrire/inc/install.php -text
ecrire/inc/journal.php -text
ecrire/inc/json.php -text
ecrire/inc/lang_liste.php -text
ecrire/inc/lien.php -text
ecrire/inc/lien_court.php -text
ecrire/inc/lister_objets.php -text
ecrire/inc/log.php -text
ecrire/inc/minipres.php -text
ecrire/inc/modifier.php -text
ecrire/inc/nfslock.php -text
ecrire/inc/notifications.php -text
ecrire/inc/pipelines.php -text
ecrire/inc/pipelines_ecrire.php -text
ecrire/inc/plonger.php -text
ecrire/inc/plugin.php -text
ecrire/inc/precharger_article.php -text
ecrire/inc/precharger_objet.php -text
ecrire/inc/prepare_recherche.php -text
ecrire/inc/preselectionner_parent_nouvel_objet.php -text
ecrire/inc/presentation_mini.php -text
ecrire/inc/presenter_enfants.php -text
ecrire/inc/puce_statut.php -text
Intégration d'une gestion de files de taches (initialement le plugin job_queue) en remplacement du système de cron periodique
La declaration de taches periodiques reste identique a auparavant (pipeline taches_generales_cron)
La balise #SPIP_CRON disparait, remplacee par un declenchement en fin de hit uniquement quand une tache
est en attente. Pour le declenchement, on utilise preferentiellement un socket, et a defaut une image background comme avant.
Lors d'un appel, le sequenceur execute autant de taches en attente que possible, dans la limite d'un temps donné. Des appels concurents peuvent se jouer, mais chaque tache est executee une unique fois par une seule instance. L'unicité de l'execution est garantie par un sql_delete.
SI jamais le nombre de taches en attente depasse un seuil (10000 par defaut) la file est purgee par un appel en fin de hit, synchrone.
Une page d'aministration est accesible aux administrateurs depuis le menu maintenance.
L'API est
/**
* Ajout d'une tache dans la file d'attente
*
* @param $function
* The function name to call.
* @param $description
* A human-readable description of the queued job.
* @param $arguments
* Optional array of arguments to pass to the function.
* @param $file
* Optional file path which needs to be included for $fucntion.
* @param $no_duplicate
* If TRUE, do not add the job to the queue if one with the same function and
* arguments already exists.
* @param $time
* time for starting the job. If 0, job will start as soon as possible
* @param $priority
* -10 (low priority) to +10 (high priority), 0 is the default
* @return int
* id of job
*/
function job_queue_add($function, $description, $arguments = array(), $file = '', $no_duplicate = FALSE, $time=0, $priority=0)
/**
* Supprimer une tache de la file d'attente
* @param int $id_job
* id of jonb to delete
* @return bool
*/
function job_queue_remove($id_job)
/**
* Associer une tache a un/des objets de SPIP
* @param int $id_job
* id of job to link
* @param array $objets
* can be a simple array('objet'=>'article','id_objet'=>23)
* or an array of simple array to link multiples objet in one time
*/
function job_queue_link($id_job,$objets)
12 years ago
ecrire/inc/queue.php -text
ecrire/inc/recherche_to_array.php -text
ecrire/inc/rechercher.php -text
Intégration dans SPIP de la possibilité de gérer des liens entre objets
avec des rôles.
On intègre l'API présente actuellement dans le plugin Rôles, en modifiant
un peu les fonctions d'édition de liens.
Celles-ci permettent maintenant d'éditer des liens ayant donc des rôles.
Ces différents rôles et le nom de la colonne SQL qui les reçoit,
s'ils sont utilisés, doivent être déclarés avec la déclaration
de l'objet éditorial correspondant.
Un exemple est donné avec le plugin «Roles auteurs» qui définit
quelques rôles. Les champs décrivant les rôles : `roles_colonne`, `roles_titres` et `roles_objets`
doivent être déclarés (via le pipeline declarer_tables_objets_sql).
```
"roles_colonne" => "role",
"roles_titres" => array(
'redacteur' => 'info_statut_redacteur',
'traducteur' => 'roles_auteurs:traducteur',
'correcteur' => 'roles_auteurs:correcteur',
'relecteur' => 'roles_auteurs:relecteur',
),
"roles_objets" => array(
'articles' => array(
'choix' => array('redacteur', 'traducteur', 'correcteur', 'relecteur'),
'defaut' => 'redacteur'
)
#'*' => array()
)
```
Une fois déclaré, on peut appeler les fonctions d'édition de lien
en transmettant des valeurs de rôles, tel que :
```
objet_associer(
array('auteur' => 3),
array('article' => 11),
array('role' => 'correcteur')
);
// utilisera le rôle par défaut
objet_associer(
array('auteur' => 3),
array('article' => 11)
);
```
Si aucun rôle n'est indiqué, le rôle par défaut est appliqué.
Dans le cas d'une dissociation également, si aucun rôle n'est indiqué,
seuls les liaisons avec le rôle par défaut seront supprimés ; pour
supprimer tous les rôles, il faut à ce moment là indiquer '*' :
```
objet_dissocier(
array('auteur' => 3),
array('article' => 11),
array('role' => 'correcteur')
);
// utilisera le rôle par défaut
objet_dissocier(
array('auteur' => 3),
array('article' => 11)
);
// enlèvera tous les rôles
objet_dissocier(
array('auteur' => 3),
array('article' => 11),
array('role' => '*')
);
```
Le formulaire d'édition de liens n'utilisera pas les mêmes squelettes
de liaison lorsqu'une colonne de rôle est déclarée.
Ainsi dans cet exemple, au lieu de `prive/objets/liste/auteurs_lies.html`
et `auteurs_associer.html`, cela utiliserait `prive/objets/liste/auteurs_roles_lies.html`
et `auteurs_roles_associer.html`. Il faut donc créer ces squelettes.
Ces squelettes peuvent poster les valeurs au formulaire pour insérer
de nouveaux liens, de la forme `qualifier_lien[auteur-3-article-11][role]`
en postant `redacteur` par exemple.
Il est possible au passage de poster en plus d'autres valeurs, qui seront
intégrées dans l'enregistrement du lien.
Ainsi, poster en même temps `qualifier_lien[auteur-3-article-11][valeur]` = `50`
enregistrera la valeur 50 dans la colonne `valeur` de la table de lien (qui doit
exister !).
D'autres informations sont présentes dans http://contrib.spip.net/Des-roles-sur-des-liens,
http://zone.spip.org/trac/spip-zone/browser/_plugins_/roles_auteurs ou encore
http://zone.spip.org/trac/spip-zone/browser/_plugins_/roles
7 years ago
ecrire/inc/roles.php -text
ecrire/inc/securiser_action.php -text
ecrire/inc/selectionner.php -text
ecrire/inc/texte_mini.php -text
ecrire/inc/traduire.php -text
ecrire/inc/utils.php -text
ecrire/inc/xml.php -text
ecrire/install/etape_.php -text
ecrire/install/etape_1.php -text
ecrire/install/etape_2.php -text
ecrire/install/etape_3.php -text
ecrire/install/etape_3b.php -text
ecrire/install/etape_4.php -text
ecrire/install/etape_chmod.php -text
ecrire/install/etape_fin.php -text
ecrire/install/etape_ldap1.php -text
ecrire/install/etape_ldap2.php -text
ecrire/install/etape_ldap3.php -text
ecrire/install/etape_ldap4.php -text
ecrire/install/etape_ldap5.php -text
ecrire/install/index.php -text
ecrire/iterateur/condition.php -text
ecrire/iterateur/data.php -text
ecrire/iterateur/php.php -text
ecrire/iterateur/pour.php -text
ecrire/iterateur/sql.php -text
ecrire/lang/ecrire.xml -text
ecrire/lang/ecrire_ast.php -text
ecrire/lang/ecrire_ay.php -text
ecrire/lang/ecrire_br.php -text
ecrire/lang/ecrire_bs.php -text
ecrire/lang/ecrire_co.php -text
ecrire/lang/ecrire_cs.php -text
ecrire/lang/ecrire_fr_fem.php -text
ecrire/lang/ecrire_fr_tu.php -text
ecrire/lang/ecrire_he.php -text
ecrire/lang/ecrire_id.php -text
ecrire/lang/ecrire_it_fem.php -text
ecrire/lang/ecrire_km.php -text
ecrire/lang/ecrire_my.php -text
ecrire/lang/ecrire_oc_ni_mis.php -text
ecrire/lang/ecrire_ru.php -text
ecrire/lang/ecrire_sk.php -text
ecrire/lang/ecrire_sv.php -text
ecrire/lang/ecrire_uk.php -text
ecrire/lang/index.php -text
ecrire/lang/public.xml -text
ecrire/lang/public_ast.php -text
ecrire/lang/public_ay.php -text
ecrire/lang/public_br.php -text
ecrire/lang/public_bs.php -text
ecrire/lang/public_co.php -text
ecrire/lang/public_cs.php -text
ecrire/lang/public_fr_fem.php -text
ecrire/lang/public_fr_tu.php -text
ecrire/lang/public_he.php -text
ecrire/lang/public_hr.php -text
ecrire/lang/public_id.php -text
ecrire/lang/public_it_fem.php -text
ecrire/lang/public_km.php -text
ecrire/lang/public_my.php -text
ecrire/lang/public_oc_ni_mis.php -text
ecrire/lang/public_ru.php -text
ecrire/lang/public_sk.php -text
ecrire/lang/public_sv.php -text
ecrire/lang/public_uk.php -text
ecrire/lang/spip.xml -text
ecrire/lang/spip_ast.php -text
ecrire/lang/spip_ay.php -text
ecrire/lang/spip_br.php -text
ecrire/lang/spip_bs.php -text
ecrire/lang/spip_co.php -text
ecrire/lang/spip_cs.php -text
ecrire/lang/spip_fr_fem.php -text
ecrire/lang/spip_fr_tu.php -text
ecrire/lang/spip_he.php -text
ecrire/lang/spip_hr.php -text
ecrire/lang/spip_id.php -text
ecrire/lang/spip_it_fem.php -text
ecrire/lang/spip_km.php -text
ecrire/lang/spip_my.php -text
ecrire/lang/spip_oc_ni_mis.php -text
ecrire/lang/spip_ru.php -text
ecrire/lang/spip_sk.php -text
ecrire/lang/spip_sv.php -text
ecrire/lang/spip_uk.php -text
ecrire/maj/svn10000.php -text
ecrire/maj/v009.php -text
ecrire/maj/v010.php -text
ecrire/maj/v011.php -text
ecrire/maj/v012.php -text
ecrire/maj/v013.php -text
ecrire/maj/v014.php -text
ecrire/maj/v015.php -text
ecrire/maj/v016.php -text
ecrire/maj/v017.php -text
ecrire/maj/v018.php -text
ecrire/maj/v019.php -text
ecrire/maj/v019_pre193.php -text
ecrire/notifications/article_propose.html -text
ecrire/notifications/article_publie.html -text
ecrire/notifications/article_valide.html -text
ecrire/notifications/instituerarticle.php -text
ecrire/plugins/afficher_liste.php -text
ecrire/plugins/afficher_nom_plugin.php -text
ecrire/plugins/afficher_plugin.php -text
ecrire/plugins/afficher_repertoires.php -text
ecrire/plugins/extraire_boutons.php -text
ecrire/plugins/extraire_pipelines.php -text
ecrire/plugins/get_infos.php -text
ecrire/plugins/infos_paquet.php -text
ecrire/plugins/infos_plugin.php -text
ecrire/plugins/installer.php -text
ecrire/plugins/verifie_conformite.php -text
ecrire/prive.php -text
ecrire/public/aiguiller.php -text
ecrire/public/decompiler.php -text
ecrire/public/evaluer_page.php -text
Décompilation paramétrable des squelettes.
Le petit décompilateur accompagnant le débusqueur à ses débuts avait été neutralisé, faute d'avoir suivi les évolutions syntaxiques de SPIP. En voici un tout neuf et complet, qui a de plus la vertu d'être paramétrable: il parcourt l'arbre de syntaxe abstraite mais ne produit rien lui-même, car il délégue la production du format de sortie à un jeu de 7 fonctions dont les noms commencent respectivement par {{{format_boucle_ format_include_ format_polyglotte_ format_idiome_ format_champ_ format_liste_ format_critere_}}} et se terminent par le nom de la syntaxe de sortie désirée. Par défaut, ce nom est celui indiqué par la constante {{{_EXTENSION_SQUELETTES}}}, savoir {{{html}}} traditionnellement, et le fichier {{{public/format_}}}{format}{{{.php}}} est automatiquement chargé pour fournir la syntaxe en sortie.
Outre le rétablissement d'une fonctionnalité perdue dans le débusqueur, l'intérêt de ce décompilateur est de pouvoir expérimenter des nouvelles syntaxes. Pour les absents à [http://videos.spip.org/spip.php?article113 la session de Juin 2009 de SPIP-Party] (et pour les autres aussi), devoir de vacances: écrire les 7 fonctions produisant la syntaxe proposée à la session de Juin. Attention, il y a des pièges qui rendent certaines parties difficiles, preuve que cette syntaxe n'est pas encore aboutie.
13 years ago
ecrire/public/format_html.php -text
ecrire/public/index.php -text
ecrire/public/iterateur.php -text
ecrire/public/jointures.php -text
ecrire/public/normaliser.php -text
ecrire/public/quete.php -text
ecrire/public/sandbox.php -text
ecrire/public/styliser_par_z.php -text
ecrire/public/tracer.php -text
ecrire/req/pg.exp.php -text
ecrire/req/sqlite3.php -text
ecrire/req/sqlite_fonctions.php -text
ecrire/req/sqlite_generique.php -text
ecrire/rien.gif -text
ecrire/typographie/en.php -text
ecrire/typographie/fr.php -text
ecrire/typographie/index.php -text
ecrire/urls/index.php -text
ecrire/urls/page.php -text
ecrire/xml/analyser_dtd.php -text
ecrire/xml/indenter.php -text
ecrire/xml/index.php -text
ecrire/xml/interfaces.php -text
ecrire/xml/valider.php -text
/index.php -text
local/CACHEDIR.TAG -text
local/remove.txt -text
prive/aide_body.css -text
prive/aide_menu.html -text
prive/ajax_item_pick.html -text
prive/ajax_item_pick_fonctions.php -text
prive/ajax_selecteur.html -text
prive/ajax_selecteur_fonctions.php -text
prive/echafaudage/contenu/objet.html -text
prive/echafaudage/contenu/objet_edit.html -text
prive/echafaudage/contenu/objet_edit.sans_rubrique.html -text
prive/echafaudage/contenu/objets.html -text
prive/echafaudage/extra/objet.html -text
prive/echafaudage/hierarchie/objet.html -text
prive/echafaudage/hierarchie/objet.sans_rubrique.html -text
prive/echafaudage/hierarchie/objet_fonctions.php -text
prive/echafaudage/navigation/objet.html -text
prive/echafaudage/navigation/objet_edit.html -text
prive/formulaires/configurer_annonces.html -text
prive/formulaires/configurer_annonces.php -text
prive/formulaires/configurer_articles.html -text
prive/formulaires/configurer_articles.php -text
prive/formulaires/configurer_avertisseur.html -text
prive/formulaires/configurer_avertisseur.php -text
prive/formulaires/configurer_flux.html -text
prive/formulaires/configurer_flux.php -text
prive/formulaires/configurer_identite.html -text
prive/formulaires/configurer_identite.php -text
prive/formulaires/configurer_langage.html -text
prive/formulaires/configurer_langage.php -text
prive/formulaires/configurer_langue.html -text
prive/formulaires/configurer_langue.php -text
prive/formulaires/configurer_logos.html -text
prive/formulaires/configurer_logos.php -text
prive/formulaires/configurer_metas.php -text
prive/formulaires/configurer_moderniseur.html -text
prive/formulaires/configurer_moderniseur.php -text
prive/formulaires/configurer_multilinguisme.html -text
prive/formulaires/configurer_multilinguisme.php -text
prive/formulaires/configurer_preferences.html -text
prive/formulaires/configurer_preferences.php -text
prive/formulaires/configurer_preferences_menus.html -text
prive/formulaires/configurer_preferences_menus.php -text
prive/formulaires/configurer_previsualiseur.html -text
prive/formulaires/configurer_previsualiseur.php -text
prive/formulaires/configurer_redacteurs.html -text
prive/formulaires/configurer_redacteurs.php -text
prive/formulaires/configurer_reducteur.html -text
prive/formulaires/configurer_reducteur.php -text
prive/formulaires/configurer_relayeur.html -text
prive/formulaires/configurer_relayeur.php -text
prive/formulaires/configurer_rubriques.html -text
prive/formulaires/configurer_rubriques.php -text
prive/formulaires/configurer_transcodeur.html -text
prive/formulaires/configurer_transcodeur.php -text
prive/formulaires/configurer_visiteurs.html -text
prive/formulaires/configurer_visiteurs.php -text
prive/formulaires/dater.html -text
prive/formulaires/dater.php -text
prive/formulaires/dateur/inc-dateur.html -text
prive/formulaires/dateur/jquery.dateur.js.html -text
prive/formulaires/dateur/jquery.time_picker.js -text
prive/formulaires/dateur/time_picker.css -text
prive/formulaires/declarer_bases.html -text
prive/formulaires/declarer_bases.php -text
prive/formulaires/declarer_bases_2.html -text
prive/formulaires/declarer_bases_3.html -text
prive/formulaires/editer_article.html -text
prive/formulaires/editer_article.php -text
prive/formulaires/editer_auteur.html -text
prive/formulaires/editer_auteur.php -text
prive/formulaires/editer_liens.html -text
prive/formulaires/editer_liens.php -text
prive/formulaires/editer_logo.html -text
prive/formulaires/editer_logo.php -text
prive/formulaires/editer_rubrique.html -text
prive/formulaires/editer_rubrique.php -text
prive/formulaires/inc-apercu-logo.html -text
prive/formulaires/inc-choisir-objets.html -text
prive/formulaires/inc-instituer_auteur.html -text
prive/formulaires/inc-instituer_auteur_fonctions.php -text
prive/formulaires/inc-logo_auteur.html -text
prive/formulaires/inc-options-langues.html -text
prive/formulaires/instituer_objet.html -text
prive/formulaires/instituer_objet.php -text
prive/formulaires/login.php -text
prive/formulaires/recherche_ecrire.html -text
prive/formulaires/recherche_ecrire.php -text
prive/formulaires/rediriger_article.html -text
prive/formulaires/rediriger_article.php -text
prive/formulaires/selecteur/ajax.html -text
prive/formulaires/selecteur/articles.html -text
prive/formulaires/selecteur/generique.html -text
prive/formulaires/selecteur/generique_fonctions.php -text
prive/formulaires/selecteur/hierarchie-articles.html -text
prive/formulaires/selecteur/hierarchie-racine.html -text
prive/formulaires/selecteur/hierarchie-rubriques.html -text
prive/formulaires/selecteur/inc-nav-articles.html -text
prive/formulaires/selecteur/inc-nav-rubriques.html -text
prive/formulaires/selecteur/inc-sel-articles.html -text
prive/formulaires/selecteur/inc-sel-rubriques.html -text
prive/formulaires/selecteur/jquery.picker.js -text
prive/formulaires/selecteur/jquery.selecteur.js.html -text
prive/formulaires/selecteur/lister-racine-articles.html -text
prive/formulaires/selecteur/lister-racine-rubriques.html -text
prive/formulaires/selecteur/lister-rubriques-articles.html -text
prive/formulaires/selecteur/lister-rubriques-rubriques.html -text
prive/formulaires/selecteur/lister.html -text
prive/formulaires/selecteur/navigateur.html -text
prive/formulaires/selecteur/picker-ajax.html -text
prive/formulaires/selecteur/picker.css -text
prive/formulaires/selecteur/rubriques.html -text
prive/formulaires/traduire.html -text
prive/formulaires/traduire.php -text
prive/ical_prive.html -text
prive/images/aide.gif -text
prive/images/aide_rtl.gif -text
prive/images/arrow_left.gif -text
prive/images/arrow_right.gif -text
prive/images/deplierbas.gif -text
prive/images/deplierhaut.gif -text
prive/images/deplierhaut_rtl.gif -text
prive/images/favicon-spip.png -text
prive/images/feed.png -text
prive/images/fleche-left.png -text
prive/images/fleche-right.png -text
prive/images/fond-grille.gif -text
prive/images/fond-inclure.png -text
prive/images/langues-12.gif -text
prive/images/langues-24.gif -text
prive/images/langues-modif-12.gif -text
prive/images/langues-off-12.gif -text
prive/images/loader.gif -text
prive/images/logo-spip.gif -text
prive/images/logo-spip.png -text
prive/images/logo-spip2.gif -text
prive/images/logo_spip.jpg -text
prive/images/m_envoi.gif -text
prive/images/m_envoi_bleu.gif -text
prive/images/m_envoi_bleu_rtl.gif -text
prive/images/m_envoi_jaune.gif -text
prive/images/m_envoi_jaune_rtl.gif -text
prive/images/m_envoi_rtl.gif -text
prive/images/noeud_moins.gif -text
prive/images/noeud_plus.gif -text
prive/images/pale.gif -text
prive/images/plus.gif -text
prive/images/puce-blanche-anim.gif -text
prive/images/puce-blanche-breve.gif -text
prive/images/puce-blanche.gif -text
prive/images/puce-orange-anim.gif -text
prive/images/puce-orange-breve.gif -text
prive/images/puce-orange.gif -text
prive/images/puce-poubelle-anim.gif -text
prive/images/puce-poubelle-breve.gif -text
prive/images/puce-poubelle.gif -text
prive/images/puce-rouge-anim.gif -text
prive/images/puce-rouge-breve.gif -text
prive/images/puce-rouge.gif -text
prive/images/puce-verte-anim.gif -text
prive/images/puce-verte-breve.gif -text
prive/images/puce-verte.gif -text
prive/images/rayures-danger.gif -text
prive/images/rayures-danger.png -text
prive/images/rayures-gris.gif -text
prive/images/rayures-sup.gif -text
prive/images/rien.gif -text
prive/images/searching.gif -text
prive/images/securise.gif -text
prive/images/spip-pack-24.png -text
prive/images/spip_out.gif -text
prive/images/telecharger.gif -text
prive/images/test.gif -text
prive/images/test.jpg -text
prive/images/test.png -text
prive/images/test_image.jpg -text
prive/images/triangle-bas.gif -text
prive/images/triangle-bleu-bas.gif -text
prive/images/triangle-bleu.gif -text
prive/images/triangle-droite.gif -text
prive/images/triangle-droite_rtl.gif -text
prive/images/triangle.gif -text
prive/images/triangle_rtl.gif -text
prive/informer_auteur.html -text
prive/informer_auteur_fonctions.php -text
prive/javascript/SearchHighlight.js -text
prive/javascript/ajaxCallback.js -text
prive/javascript/gadgets.js -text
prive/javascript/jquery.autosave.js -text
prive/javascript/jquery.cookie.js -text
prive/javascript/jquery.form.js -text
prive/javascript/jquery.js -text
prive/javascript/jquery.placeholder-label.js -text
prive/javascript/js.cookie.js -text
prive/javascript/login-sha-min.js -text
prive/javascript/login.js -text
prive/javascript/sha256.js -text
prive/modeles/formulaire.html -text
prive/modeles/mail_inscription.html -text
prive/modeles/mail_nouveaux_identifiants.html -text
prive/modeles/mail_oubli.html -text
Intégration d'une gestion de files de taches (initialement le plugin job_queue) en remplacement du système de cron periodique
La declaration de taches periodiques reste identique a auparavant (pipeline taches_generales_cron)
La balise #SPIP_CRON disparait, remplacee par un declenchement en fin de hit uniquement quand une tache
est en attente. Pour le declenchement, on utilise preferentiellement un socket, et a defaut une image background comme avant.
Lors d'un appel, le sequenceur execute autant de taches en attente que possible, dans la limite d'un temps donné. Des appels concurents peuvent se jouer, mais chaque tache est executee une unique fois par une seule instance. L'unicité de l'execution est garantie par un sql_delete.
SI jamais le nombre de taches en attente depasse un seuil (10000 par defaut) la file est purgee par un appel en fin de hit, synchrone.
Une page d'aministration est accesible aux administrateurs depuis le menu maintenance.
L'API est
/**
* Ajout d'une tache dans la file d'attente
*
* @param $function
* The function name to call.
* @param $description
* A human-readable description of the queued job.
* @param $arguments
* Optional array of arguments to pass to the function.
* @param $file
* Optional file path which needs to be included for $fucntion.
* @param $no_duplicate
* If TRUE, do not add the job to the queue if one with the same function and
* arguments already exists.
* @param $time
* time for starting the job. If 0, job will start as soon as possible
* @param $priority
* -10 (low priority) to +10 (high priority), 0 is the default
* @return int
* id of job
*/
function job_queue_add($function, $description, $arguments = array(), $file = '', $no_duplicate = FALSE, $time=0, $priority=0)
/**
* Supprimer une tache de la file d'attente
* @param int $id_job
* id of jonb to delete
* @return bool
*/
function job_queue_remove($id_job)
/**
* Associer une tache a un/des objets de SPIP
* @param int $id_job
* id of job to link
* @param array $objets
* can be a simple array('objet'=>'article','id_objet'=>23)
* or an array of simple array to link multiples objet in one time
*/
function job_queue_link($id_job,$objets)
12 years ago
prive/modeles/object_jobs_list.html -text
prive/modeles/pagination.html -text
prive/modeles/pagination_page.html -text
prive/modeles/pagination_page_precedent_suivant.html -text
prive/modeles/pagination_precedent_suivant.html -text
prive/modeles/pagination_prive.html -text
prive/modeles/paginationitem.html -text
prive/objets/contenu/article.html -text
prive/objets/contenu/auteur.html -text
prive/objets/contenu/objet.html -text
prive/objets/contenu/plugin_item_rss.html -text
prive/objets/contenu/rubrique-enfants.html -text