Changeset 7067


Ignore:
Timestamp:
Oct 1, 2010, 10:47:38 PM (14 years ago)
Author:
LucMorizur
Message:

Implement simple mode in ec_conf.inc.php

Location:
extensions/event_cats
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • extensions/event_cats/admin/config.inc.php

    r6270 r7067  
    4040if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
    4141
    42 global $ec_conf_default, $ec_conf;
     42global $ec_conf_possible_values, $ec_conf;
    4343
    4444// +-----------------------------------------------------------------------+
     
    7979// Sends configuration values to the template, described per key
    8080$ec_conf2 = array(); $i = 0;
    81 foreach ($ec_conf_default as $k => $v) { $ec_conf2[$k] = $ec_conf[$i]; $i++; }
     81foreach ($ec_conf_possible_values as $k => $v) { $ec_conf2[$k] = $ec_conf[$i]; $i++; }
    8282$template->assign('ec_conf', $ec_conf2);
    8383$template->assign('ec_help_banner1', l10n('ec_help_banner1_config'));
  • extensions/event_cats/include/ec_conf.inc.php

    r7066 r7067  
    2727if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
    2828
    29 global $ec_conf, $page, $ec_conf_index, $ec_conf_default,
    30        $ec_conf_possible_values;
    31 
    32 // $ec_conf initalization
     29global $ec_conf, $page, $ec_conf_index, $ec_conf_possible_values, $ec_debug;
     30
     31// ---------------------------------------------------------------------------
     32//                            $ec_conf initalization
     33// ---------------------------------------------------------------------------
    3334
    3435// $ec_conf has numeric indexes (instead of string keys like 'activated',
    3536// 'howto'...) because of its first reading, done with the "explode" function.
    36 // It would be  very easy to build a string keys indexed array, thanks to
     37// It would be very easy to build a string keys indexed array, thanks to
    3738// following instructions :
    3839/*
     
    5556// quickly.
    5657
    57 // Gives configuration items names and default values. Only strings.
    58 $ec_conf_default = array( // PLUGIN CONFIGURATION ($ec_conf) :
    59                           // ---------------------------------
    60   'activated'             // plugin activated, 0 or 1
    61     => '0',               //
    62                           //
    63   'howto'                 // whether the small aknowledgement message has
    64     => '0',               // already been displayed, 0 or 1
    65                           //
    66   'dup_allow'             // duplication allowance :
    67     => '2',               //   0 : no account ;
    68                           //   1 : all accounts ;
    69                           //   2 : specified by group and user ids ;
    70                           //
    71   'duplic_display'        // duplication link display in the menubar :
    72     => '2',               //   0 : "Register" for everybody ;
    73                           //   1 : "Duplicate" for everybody ;
    74                           //   2 : "Register" only for generic accounts,
    75                           //       "Duplicate" for all other accounts ;
    76                           //
    77   'auto_code_dg_nb'       // number of digits when creating a new code
    78     => '10',              // automatically, several values
    79                           //
    80   'unknown_code'          // what to do in case an unknown code is used with
    81     => '1',               // "autolog" parameter :
    82                           //   0 : nothing (display home page, index.php (not
    83                           //       logged in of course)) ;
    84                           //   1 : display "access denied" page ;
    85                           //   2 : display an Additional Page precised below.
    86                           //
    87   'unknown_code_ap_id'    // the id of the Additional Page which must be used
    88     => '0',               // in case of usage of an unknow code, several vals.
    89                           //
    90   'comment_display'       // the way the comment is displayed in "entries"
    91     => '1',               // tab : 0, as tooltip ; 1, on a line under code
    92                           //
    93   'in_help_display'       // whether the help banner is displayed.
    94     => '1',               // 0: not displayed ; 1 : displayed (surprising !)
    95                           //
    96   'display_connection'    // whether the "Connection" link must be displayed
    97     => '0',               // for generic users, 0 or 1.
     58// Give possible $ec_conf values. In case values cannot be predicted, just
     59// provide an empty array : array() .
     60$ec_conf_possible_values = array(
     61  'activated'           => array('0', '1'),                           //  0
     62  'howto'               => array('0', '1'),                           //  1
     63  'dup_allow'           => array('0', '1', '2'),                      //  2
     64  'duplic_display'      => array('0', '1', '2'),                      //  3
     65  'auto_code_dg_nb'     => array( '4',  '5',  '8', '10', '12', '15',
     66                                 '16', '20', '24', '25', '30', '32'), //  4
     67  'unknown_code'        => array('0', '1', '2'),                      //  5
     68  'unknown_code_ap_id'  => array(),                                   //  6
     69  'comment_display'     => array('0', '1'),                           //  7
     70  'in_help_display'     => array('0', '1'),                           //  8
     71  'display_connection'  => array('0', '1'),                           //  9
     72  'simple_mode_on'      => array('0', '1'),                           // 10
     73  'display_full_button' => array('0', '1'),                           // 11
    9874);
    9975
    100 // Gives possible values. In case values cannot be predicted, just provide an
    101 // empty array : array() .
    102 $ec_conf_possible_values = array(
    103   'activated'          => array('0', '1'),
    104   'howto'              => array('0', '1'),
    105   'dup_allow'          => array('0', '1', '2'),
    106   'duplic_display'     => array('0', '1', '2'),
    107   'auto_code_dg_nb'    => array( '4',  '5',  '8', '10', '12', '15',
    108                                 '16', '20', '24', '25', '30', '32'),
    109   'unknown_code'       => array('0', '1', '2'),
    110   'unknown_code_ap_id' => array(),
    111   'comment_display'    => array('0', '1'),
    112   'in_help_display'    => array('0', '1'),
    113   'display_connection' => array('0', '1'),
    114 );
    115 
    116 // Once these lines have been updated, you don't need to change anything
    117 // else. Everything is managed by the code ; the only effect being that
    118 // existing configuration values in the DB are reset to their default
    119 // values -- normally not a harmful effect.
    120 //----------------------------------------------------------------------------
    121 
    122 $ec_conf_index = array_flip(array_keys($ec_conf_default));
    123 
    124 $t = array(); $u = '0'; $v = false;
    125 if ($v = (
     76// $ec_conf_index is an array of the indexes of $ec_conf. Thus does it allow
     77// to check if X exists when asking for $ec_conf[X].
     78$ec_conf_index = array_flip(array_keys($ec_conf_possible_values));
     79
     80// Get current value of $ec_conf, if the entry in the DB exists.
     81$t = array(); $u = '0'; $v = false; $w = false; $ec_conf = array(); $s = '0';
     82if ($w = ( // $w becomes true if the query succeeds <=> if EC was already in
     83  // $t gets event_cats config value, as an array with one unique entry
    12684  ($t = pwg_db_fetch_row(pwg_query("
    12785    SELECT `value`
     
    13290  $v = (count($ec_conf = explode(',', $t[0])) == count($ec_conf_index));
    13391  $u = $ec_conf[0];
     92  $s = ($v) ? $ec_conf[1] : '0'; // the aknowledgement message is displayed
     93  // again if the configuration changes
    13494}
    135 // $v is false
    136 //   _ if the entry in the table doesn't exist ;
    137 //   _ if the entry in the table exists, but its number of parameters is
    138 //     different than the number of default parameters.
     95if ($v and !$w) die('$v true with $w false in ec_conf.inc.php');
     96// $w is false if the entry in the table doesn't exist;
     97// $v is false if the entry in the table doesn't exist; or exists, but its
     98// number of parameters is different than the number of default parameters.
    13999// $u is '0' if the plugin has not yet been activated, '1' if it has been.
     100// $s allows to display the aknowledgement message when config changes.
     101// If $v or $w are false, all $ec_conf values are set to default values. But
     102// default values must first take values specified in $conf, if they are set.
     103
     104// Determine whether simple mode is ON or OFF
     105$simple_mode_on = (
     106  (!$v and !$w) or (
     107    // $ec_conf[10] <=> read_ec_conf('simple_mode_on')
     108    isset($ec_conf[10]) and $ec_conf[10] == '1'
     109  ) or (
     110    isset($conf['ec_display_full_button']) and
     111    $conf['ec_display_full_button'] == false
     112  )
     113);
     114
    140115if (!$v) {
     116  // Give configuration items names and default values. Only strings.
     117  $ec_conf_default = array( // PLUGIN CONFIGURATION ($ec_conf) :
     118                            // ---------------------------------
     119    'activated'       //  0 // plugin activated, 0 or 1
     120      => $u,                //
     121                            //
     122    'howto'           //  1 // whether the small aknowledgement message has
     123      => $s,                // already been displayed, 0 or 1
     124                            //
     125    'dup_allow' => ($simple_mode_on and isset($conf['ec_dup_allow']) and
     126                    in_array($conf['ec_dup_allow'],
     127                    $ec_conf_possible_values['ec_dup_allow'])) ?
     128      $conf['ec_dup_allow'] : (isset($ec_conf[2]) and in_array($ec_conf[2],
     129      $ec_conf_possible_values['dup_allow'])) ? $ec_conf[2] : '2',
     130                      //  2 // duplication allowance :
     131                            //   0 : no account;
     132                            //   1 : all accounts;
     133                            //   2 : specified by group, type, and user ids.
     134                            // If Event Cats is in "simple mode", takes the
     135                            // value of $conf['ec_dup_allow'] if it is set;
     136                            // and an allowance to duplicate only generic
     137                            // accounts will be defined.
     138                            //
     139    'duplic_display' => ($simple_mode_on and isset($conf['ec_duplic_display'])
     140                    and in_array($conf['ec_duplic_display'],
     141                    $ec_conf_possible_values['ec_duplic_display'])) ?
     142      $conf['ec_duplic_display'] : (isset($ec_conf[3]) and
     143      in_array($ec_conf[3], $ec_conf_possible_values['duplic_display'])) ?
     144      $ec_conf[3] : '2',
     145                      //  3 // duplication link display in the menubar :
     146                            //   0 : "Register" for everybody;
     147                            //   1 : "Duplicate" for everybody;
     148                            //   2 : "Register" only for generic accounts,
     149                            //       "Duplicate" for all other accounts;
     150                            // If Event Cats is in "simple mode", takes the
     151                            // value of $conf['ec_duplic_display'] if it's set.
     152                            //
     153  'auto_code_dg_nb' => ($simple_mode_on and isset($conf['ec_auto_code_dg_nb'])
     154                    and in_array($conf['ec_auto_code_dg_nb'],
     155                    $ec_conf_possible_values['ec_auto_code_dg_nb'])) ?
     156      $conf['ec_auto_code_dg_nb'] : (isset($ec_conf[4]) and
     157      in_array($ec_conf[4], $ec_conf_possible_values['auto_code_dg_nb'])) ?
     158      $ec_conf[4] : '10',
     159                      //  4 // number of digits when creating a new code
     160                            // automatically, several values
     161                            // If Event Cats is in "simple mode", takes the
     162                            // value of $conf['ec_auto_code_dg_nb'] if set.
     163                            //
     164    'unknown_code'    //  5 // what to do in case an unknown code is used with
     165      => (isset($ec_conf[5]) and in_array($ec_conf[5],
     166      $ec_conf_possible_values['unknown_code'])) ? $ec_conf[5] : '1',
     167                            // "autolog" parameter :
     168                            //   0 : nothing (display home page, index.php
     169                            //       (not logged in of course));
     170                            //   1 : display "access denied" page;
     171                            //   2 : display an A. P. precised below.
     172                            //
     173    'unknown_code_ap_id' // 6| the id of the Additional Page which must be
     174      => (isset($ec_conf[6])) ? $ec_conf[6] : '0',
     175                            // used in case of usage of an unknow code;
     176                            // several vals.
     177                            //
     178    'comment_display' => ($simple_mode_on and isset($conf['ec_comment_display'])
     179                    and in_array($conf['ec_comment_display'],
     180                    $ec_conf_possible_values['ec_comment_display'])) ?
     181      $conf['ec_comment_display'] : (isset($ec_conf[7]) and
     182      in_array($ec_conf[7], $ec_conf_possible_values['comment_display'])) ?
     183      $ec_conf[7] : '1',
     184                      //  7 // the way the comment is displayed in "entries"
     185                            // tab : 0, as tooltip; 1, on a line under code
     186                            // If Event Cats is in "simple mode", takes the
     187                            // value of $conf['ec_comment_display'] if set.
     188                            //
     189    'in_help_display' //  8 // whether the help banner is displayed.
     190      => (isset($ec_conf[8]) and in_array($ec_conf[8],
     191      $ec_conf_possible_values['in_help_display'])) ? $ec_conf[8] : '1',
     192                            // 0: not displayed; 1 : displayed (surprising !)
     193                            //
     194    'display_connection' => ($simple_mode_on and
     195                    isset($conf['ec_display_connection']) and
     196                    in_array($conf['ec_display_connection'],
     197                    $ec_conf_possible_values['ec_display_connection'])) ?
     198      $conf['ec_display_connection'] : (isset($ec_conf[9]) and
     199      in_array($ec_conf[9], $ec_conf_possible_values['display_connection'])) ?
     200      $ec_conf[9] : '1',
     201                      //  9 // whether the "Connection" link must be displayed
     202                            // for generic users, 0 or 1.
     203                            // If Event Cats is in "simple mode", takes the
     204                            // value of $conf['ec_display_connection'] if set.
     205                            //
     206    'simple_mode_on' => ($simple_mode_on) ?
     207      '1' : '0',      // 10 // whether the presentation of the plugin is in
     208                            // "simple mode" or not.
     209                            // 0: normal view; 1 : simple view.
     210                            // The default value can be modified to 0 (normal
     211                            // view) if Event Cats was already installed
     212                            // previously.
     213                            //
     214    'display_full_button' => ($simple_mode_on and
     215                    isset($conf['ec_display_full_button']) and
     216                    in_array($conf['ec_display_full_button'],
     217                    $ec_conf_possible_values['ec_display_full_button'])) ?
     218      $conf['ec_display_full_button'] : (isset($ec_conf[11]) and
     219    in_array($ec_conf[11], $ec_conf_possible_values['display_full_button'])) ?
     220       $ec_conf[11] : '1',
     221                      // 11 // whether the "Show full features" button must be
     222                            // displayed, 0 or 1. The default value can be
     223                            // modified to 0 (don't display) if
     224                            // $conf['ec_display_full_button'] has val. false.
     225  );
     226 
     227// Once these lines have been updated, you don't need to change anything
     228// else. Everything is managed by the code.
     229//----------------------------------------------------------------------------
     230
     231  // Set $ec_conf to proper default values if needed, and writes its values
     232  // in the DB
    141233  $ec_conf = array_values($ec_conf_default);
     234
    142235  change_ec_conf('activated', $u); // writes in the DB
    143236}
    144237// now :
    145238//   _ the number of parameters is the same in the DB as the number of
    146 //     default parameters ;
    147 //   _ the parameters have the default values if needed ;
    148 //   _ the plugin shows it is active if it is the case.
    149 unset($t, $u, $v);
     239//     default parameters;
     240//   _ the parameters have the default values if needed;
     241//   _ the plugin shows it is active if it is the case;
     242//   _ correct values will be returned when using procedure read_ec_conf($c).
     243
     244unset($t, $u, $v, $w, $simple_mode_on);
     245// And NOW can change_ec_conf and read_ec_conf be used properly...
     246
     247// ---------------------------------------------------------------------------
     248//                  End of $ec_conf initalization
     249// ---------------------------------------------------------------------------
    150250
    151251/*
     
    155255 *
    156256 * @param
    157  *   $c : conf value to update ;
     257 *   $c : conf value to update;
    158258 *   $v : value to give to $ec_conf[$c].
    159259 * @return
     
    162262function change_ec_conf($c, $v) {
    163263  global $ec_conf, $page, $ec_conf_index, $ec_conf_possible_values;
     264
    164265  if (array_key_exists($c, $ec_conf_index)) {
    165266    if (
     
    168269    ) {
    169270      $ec_conf[$ec_conf_index[$c]] = $v;
    170       return (pwg_query("
     271      return ($a=(pwg_query("
    171272        UPDATE `".CONFIG_TABLE."`
    172273        SET `value` = \"".implode(',', $ec_conf)."\"
    173274        WHERE `param` = 'event_cats';
    174       ") !== false);
     275      ") !== false));
    175276    }
    176277    else {
     
    190291 *
    191292 * @param
    192  *   $c : conf value to update ;
     293 *   $c : conf value to update;
    193294 * @return
    194295 *   $ec_conf value
Note: See TracChangeset for help on using the changeset viewer.