Changeset 99134 in spip-zone


Ignore:
Timestamp:
Aug 9, 2016, 6:22:37 PM (4 years ago)
Author:
marcimat@…
Message:

Complément sur r99133 : je m'étais entourloupé avec l'option 'id_auteur' qui n'a pas à exister.
On ajoute plutôt un paramètre $id_objet, puisque c'est en fait ça que l'on attend peut être
pour tester les autorisations (et pas un identifiant d'auteur, je m'étais trompé car j'ai
repris un code que j'utilisais sur un formulaire de profil sur l'objet auteur).

Et sinon un moyen (pas spécialement chouette) d'avoir le comportement souhaité pour le formulaire
d'inscription de newsletter peut être d'appeler aussi le pipeline pre_insertion dessus, tel que :

`
function demo_formulaire_charger($flux) {

if ($fluxargs?form? == 'newsletter_subscribe') {

include_spip('inc/cextras');
if ($saisies = cextras_obtenir_saisies_champs_extras('mailsubscribers')) {

$flux_champs_extras_saisies? = $saisies;

}

}
return $flux;

}

function demo_pre_insertion($flux) {

if ($fluxargs?table? == 'spip_mailsubscribers') {

include_spip('cextras_pipelines');
$_flux = $flux;
$_fluxargs?id_objet? = null;
$_flux = cextras_pre_edition($_flux);
$fluxdata? = $_fluxdata?;

}
return $flux;

}
`

On exécute juste le pipeline de champs extra (mais il attend 'id_objet' en plus)

Voilà… SAD quand tu nous tiens.

Location:
_plugins_/champs_extras_core/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/champs_extras_core/trunk/cextras_pipelines.php

    r99133 r99134  
    159159        $table = $flux['args']['table'];
    160160        if ($saisies = champs_extras_objet( $table )) {
    161 
    162161                // Restreindre les champs postés en fonction des autorisations de les modifier
    163162                // au cas où un malin voudrait en envoyer plus que le formulaire ne demande
    164163                $saisies = champs_extras_autorisation('modifier', objet_type($table), $saisies, $flux['args']);
    165 
    166164                $saisies = champs_extras_saisies_lister_avec_sql($saisies);
    167165                foreach ($saisies as $saisie) {
  • _plugins_/champs_extras_core/trunk/inc/cextras.php

    r99133 r99134  
    426426 * @param string $objet
    427427 *     Type de l'objet éditorial
     428 * @param int|null $id_objet
     429 *     Identifiant de l'objet (si connu) peut servir aux autorisations.
    428430 * @param array $options {
    429  *     @var int|null $id_auteur
    430  *         L'auteur testé pour les autorisations : null (par défaut) utilise l'auteur courant en session
    431431 *     @var string $autoriser
    432432 *         'voir' ou 'modifier' (par défaut) : type d'autorisation testé, appellera voirextra ou modifierextra…
     
    439439 *     Liste de saisies, les champs extras sur l'objet indiqué
    440440**/
    441 function cextras_obtenir_saisies_champs_extras($objet, $options = array()) {
     441function cextras_obtenir_saisies_champs_extras($objet, $id_objet = null, $options = array()) {
    442442
    443443        $options += array(
    444                 'id_auteur' => null,
    445444                'autoriser' => 'modifier',
    446445                'whitelist' => array(),
     
    450449        include_spip('cextras_pipelines');
    451450        if ($saisies = champs_extras_objet( table_objet_sql($objet) )) {
    452 
    453                 // l'auteur pour l'autorisation
    454                 $id_auteur = is_null($options['id_auteur']) ? session_get('id_auteur') : $options['id_auteur'];
    455451
    456452                // type d'autorisation
     
    482478
    483479                // filtrer simplement les saisies que la personne en cours peut voir
    484                 $saisies = champs_extras_autorisation($options['autoriser'], $objet, $saisies, array('id_objet' => $id_auteur));
     480                $saisies = champs_extras_autorisation($options['autoriser'], $objet, $saisies, array('id_objet' => $id_objet));
    485481
    486482                if ($saisies) {
Note: See TracChangeset for help on using the changeset viewer.