Changeset 7874 in spip-zone


Ignore:
Timestamp:
Dec 11, 2006, 3:10:57 PM (14 years ago)
Author:
bertrand@…
Message:

Configuration par formulaires variables tirés des fonds

Location:
_plugins_/_dev_/sms
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_dev_/sms/exec/config_sms.php

    r7851 r7874  
    1010function exec_config_sms_dist()
    1111{
     12        $modifier = $enregistrer = $supprimer = false;
     13        $config = meta_config_sms();
    1214        $contexte = array('base_url' => generer_url_ecrire('config_sms', ''));
    1315        if (($addDriver = _request('adddriver'))) {
    1416                $contexte['driver'] = $addDriver;
    15         } else  {
    16                 $contexte['driver'] = _request('driver');
    17                 $contexte['compte'] = _request('compte');
    18                 $contexte['was_compte'] = _request('was_compte');
    19         }
    20 
    21         $result = null;
    22         $message = champs($contexte);
    23 /*      if (_request('envoi')) {
     17        } else {
     18                if (($modifier = _request('modifier'))) {
     19                        $contexte['driver'] = $config[$modifier]['driver'];
     20                } else {
     21                        $contexte['driver'] = _request('driver');
     22                        $contexte['compte'] = _request('compte');
     23                        $contexte['was_compte'] = _request('was_compte');
     24                }
     25        }
     26
     27        $champs = array('compte' => array('inp' => 'text', 'typ' => 'id'));
     28        ($message = empty($contexte['driver']) ? _L('creer_un_compte') : '') ||
     29        ($message = champs('cfg_' . $contexte['driver'], $champs));
     30
     31        if ($modifier) {
     32                $contexte['compte'] = $modifier;
     33                foreach ($champs as $name => $def) {
     34                        if (isset($config[$modifier][$name])) {
     35                                $contexte[$name] = $config[$modifier][$name];
     36                        }
     37                }
     38        } elseif (!$message && (($enregistrer = _request('ok')) ||
     39                                                ($supprimer = _request('delete')))) {
    2440                $securiser_action = charger_fonction('securiser_action', 'inc');
    2541                $securiser_action();
    26                 $resultat = transmet_prestataire($contexte);
    27                 $message = $resultat ? _L('erreur') . ':<br />'. $resultat
    28                                                         : _L('envoi_correct_pour') . ' ' . $contexte['to'];
    29         }
    30         $message = print_r(cherche_prestataires(), true);
    31 */
    32         config_sms_debut_page($message);
     42                if ($supprimer || $contexte['compte'] != $contexte['was_compte']) {
     43                        $config = meta_config_sms($contexte['was_compte']);
     44                }
     45                if ($supprimer) {
     46                        unset($contexte['compte']);
     47                        $message = _L('compte_supprime') . ' ' . $contexte['was_compte'];
     48                } elseif (!is_string($message = controle($champs, $contexte))) {
     49                        unset($message['compte']);
     50                        $message['driver'] = $contexte['driver'];
     51                        $config = meta_config_sms($contexte['compte'], $message);
     52                        $message = _L('compte_enregistre') . ' <b>' . $contexte['compte'] . '</b>';
     53                }
     54        }
     55//      $message .= print_r($champs, true);
     56//      $message .= print_r($contexte, true);
     57
     58        config_sms_debut_page($message, $config);
    3359
    3460        echo config_sms_fond($contexte);
     
    6692}
    6793
    68 function lire_config_sms()
    69 {
     94// sans parametre: lecture seule, sans data = suppression sinon update/delete
     95function meta_config_sms($compte = '', $data = array())
     96{
     97        // recuperer le tableau de config dans meta , pas tres securit tout ça ...
     98        lire_metas();
    7099    global $meta;
    71     if (!($meta['config_sms'])) {
    72         return array();
    73     }
    74     return unserialize($meta['config_sms']);
    75 }
    76 
    77 function ecrire_config_sms($compte = '', $data = array())
    78 {
    79     $cfg = lire_config_sms();
     100    if (empty($meta['config_sms'])) {
     101        $cfg = array();
     102    } else {
     103        $cfg = unserialize($meta['config_sms']);
     104    }
     105        // pas de compte , c'est juste pour lire
     106    if (!$compte) {
     107            return $cfg;
     108    }
     109    // donnees => actualise ou cree , detruit sinon
    80110    if ($data) {
    81111        $cfg[$compte] = $data;
     
    88118            effacer_meta('config_sms');
    89119    }
    90 }
    91 
    92 function champs(&$contexte)
    93 {
    94         if (empty($contexte['driver'])) {
    95                 return _L('creer_un_compte');
    96         }
    97         $fichier = find_in_path($nom = 'fonds/cfg_' . $contexte['driver'] .'.html');
     120    return $cfg;
     121}
     122
     123function champs($form, &$champs)
     124{
     125        $fichier = find_in_path($nom = 'fonds/' . $form .'.html');
    98126        if (!lire_fichier($fichier, $controldata)) {
    99127                return _L('erreur_lecture_') . $nom;
    100128        }
    101         if (!preg_match_all('/<input type="(?:text|password)" name="(\w+)" .+>/',
    102                                         $controldata, $matches, PREG_PATTERN_ORDER)) {
     129        if (!preg_match_all(
     130          '#<(?:(select)|input type="(text|password)") name="(\w+)"(?: class="type_(\w+).*")?.+>#',
     131                                        $controldata, $matches, PREG_SET_ORDER)) {
    103132                return _L('pas_de_champs_dans_') . $nom;
    104133        }
    105         foreach ($matches[1] as $champ) {
    106             $contexte[$champ] = _request($champ);
     134        foreach ($matches as $regs) {
     135            if (!empty($regs[1])) {
     136                $regs[2] = 'select';
     137            }
     138            $champs[$regs[3]] = array('inp' => $regs[2], 'typ' => '');
     139            if (!empty($regs[4])) {
     140                $champs[$regs[3]]['typ'] = $regs[4];
     141            }
    107142    }
    108143    return '';
    109144}
    110145
    111 function boite_liste($titre = "", $elements = array())
     146function controle($champs, &$contexte)
     147{
     148        $chk = array(
     149          'id' => array('#^[a-z_]\w*$#i', _L('lettre ou &#095; suivie de lettres, chiffres ou &#095;')),
     150          'idnum' => array('#^\d+$#', _L('chiffres')),
     151          'pwd' => array('#^\w+$#',  _L('lettres, &#095; ou chiffres')));
     152    $return = '';
     153    $valeurs = array();
     154        foreach ($champs as $name => $def) {
     155            $contexte[$name] = _request($name);
     156            if (!empty($def['typ']) && isset($chk[$def['typ']])) {
     157                if (!preg_match($chk[$def['typ']][0], $contexte[$name])) {
     158                        $return .= _L($name) . '&nbsp;:<br />' .
     159                          $chk[$def['typ']][1] . '<br />';
     160                }
     161            }
     162            $valeurs[$name] = _request($name);
     163    }
     164    return $return ? $return : $valeurs;
     165}
     166
     167function boite_liens($titre = "", $elements = array())
    112168{
    113169        if (!$elements) {
     
    123179        $dedans .= '<ul>';
    124180        foreach ($elements as $elt) {
    125                 $dedans .= '<li>' . $elt . '</li>';
     181                $dedans .= '<li>';
     182                if (!empty($elt['get'])) {
     183                        $dedans .= '<a href="' .
     184                          generer_url_ecrire('config_sms', $elt['get'] ) . '">' .
     185                          (empty($elt['name']) ? $elt['get'] : $elt['name']) . '</a>';
     186                }
     187                $dedans .=  (empty($elt['desc']) ? '' : '<br />' . $elt['desc']) . '</li>';
    126188        }
    127189        $dedans .= '</ul>' . fin_boite_info(true);
     
    129191}
    130192
    131 function liste_existants()
    132 {
    133 }
    134 
    135 function creer_nouveau()
     193function liens_existants($config)
     194{
     195        $liste = array();
     196        foreach ($config as $compte => $info) {
     197                $liste[] = array('get' => 'modifier=' . $compte, 'name' => $compte,
     198                                                'desc' => '(' . $info['driver'] . ')');
     199        }
     200        return boite_liens(_L('modifier_un_compte'), $liste);
     201}
     202
     203function liens_nouveaux()
    136204{
    137205        $liste = array();
    138206        foreach (cherche_prestataires() as $driver => $info) {
    139                 $liste[] = '<a href="' .
    140                         generer_url_ecrire('config_sms', 'adddriver=' . $driver ) . '">' .
    141                         $info['name'] . '</a><br />' . $info['desc'];
    142         }
    143         return boite_liste(_L('creer_un_nouveau_compte'), $liste);
     207                $info['get'] = 'adddriver=' . $driver;
     208                $liste[] = $info;
     209        }
     210        return boite_liens(_L('creer_un_nouveau_compte'), $liste);
    144211}
    145212
     
    161228}
    162229
    163 function config_sms_debut_page($message = '')
     230function config_sms_debut_page($message = '', $config = array())
    164231{
    165232        include_spip('inc/presentation');
     
    180247        }
    181248       
    182         echo creer_nouveau();
     249        echo liens_existants($config);
     250        echo liens_nouveaux();
    183251       
    184252        debut_droite();
     
    186254        gros_titre(_L("Configuration SMS"));
    187255       
    188        
    189256        debut_cadre_trait_couleur('','','',_L("Parametres comptes SMS"));
    190 
    191257}
    192258
  • _plugins_/_dev_/sms/fonds/cfg_clickatell_http.html

    r7845 r7874  
    1010<input name="driver" type="hidden" value="clickatell_http" />
    1111<label>*<:SMS:login:></label>
    12 <input type="text" name="user" value="#ENV{user}" size="10" />
     12<input type="text" name="user" class="type_id" value="#ENV{user}" size="10" />
    1313<label>*<:SMS:mot_de_passe:></label>
    14 <input type="password" name="password" value="#ENV{password}" size="10" />
     14<input type="password" name="password" class="type_pwd" value="#ENV{password}" size="10" />
    1515<label>*<:SMS:api_id:></label>
    16 <input type="text" name="api_id" value="#ENV{api_id}" size="8" />
     16<input type="text" name="api_id" class="type_idnum" value="#ENV{api_id}" size="8" />
    1717</fieldset>
    1818
  • _plugins_/_dev_/sms/fonds/cfg_sms2email_http.html

    r7846 r7874  
    1010<input name="driver" type="hidden" value="sms2email_http" />
    1111<label>*<:SMS:login:></label>
    12 <input type="text" name="user" value="#ENV{user}" size="10" />
     12<input type="text" name="user" class="type_id" value="#ENV{user}" size="10" />
    1313<label>*<:SMS:mot_de_passe:></label>
    14 <input type="password" name="password" value="#ENV{password}" size="10" />
     14<input type="password" name="password" class="type_pwd" value="#ENV{password}" size="10" />
    1515</fieldset>
    1616
Note: See TracChangeset for help on using the changeset viewer.