source: spip-zone/_plugins_/pgn4spip/branches/pgn4spip_conf.php @ 90061

Last change on this file since 90061 was 90061, checked in by jack@…, 6 years ago

Avant de tout casser on passe le trunk dans "branches"

File size: 6.3 KB
Line 
1<?php
2/**********************************************************************************
3 * @Subject Read conf. Init default values. Check new value of an option.
4 * @package pgn4spip plugin to embed pgn4web Chessboard in a SPIP 2.x or 3.x article
5 * @version 2.61.0
6 * @copyright copyright (c) 2012 Matt Chesstale
7 * @license GNU General Public License version 3
8 * @language PHP
9 *
10 * @history: Shared module
11 * SPIP 3: pgn4spip_fonctions.php, plugins\pgn4spip\formulaires\configurer_pgn4spip.php
12 * SPIP 2: pgn4spip_options.php
13 *
14 * @Design
15 * SPIP 3:
16 * plugins\pgn4spip\formulaires\configurer_pgn4spip.html Design of the form in SPIP and HTML
17 * plugins\pgn4spip\formulaires\configurer_pgn4spip.php Implement "Reinit" and "Save" buttons
18 * plugins\pgn4spip\prive\squelettes\contenu\configurer_pgn4spip.html cfg-16.png icon in "Manage plugins"
19 * http://www.spip.net/fr_article5414.html
20 * http://contrib.spip.net/CFG-comment-s-en-passer
21 * Does not need the CFG 3 plugin for SPIP 3. Does not use pgn4spip_options.php
22 *
23 * SPIP 2:
24 * plugins\pgn4spip\fonds\cfg_pgn4spip.html Design of the form in SPIP and HTML for CFG plugin
25 * pgn4spip_options.php calls ReadCurrentConfiguration()
26 * Need CFG plugin 1.15 or more for SPIP 2
27 **********************************************************************************/
28if (!defined("_ECRIRE_INC_VERSION")) return; // No direct access allowed to this file
29
30define('DEFAULT_Val', "d"); // (d)efault value
31define('TRANSPARENT', 't'); // (t)ransparent color
32define('DEFAULT_ss', '26'); // Square Size by default: [26] was 28
33
34// Read the current configuration of the parameters of the plugin
35// @out:        $optValue: default values of options overriden with the current configuration
36function ReadCurrentConfiguration(&$optValue)
37{
38        InitOptionValueByDefault($optValue); // Defined in PATH_check
39
40        $cs = "";                               // containerStyle
41        $extOpt = "";                   // extendedOptions
42
43        if (function_exists('lire_config')) // Read values of plugin parameters in the CFG configuration
44        {
45                foreach ($optValue as $optShort => $valueByDefault)
46                {
47                        $valueFromConf = lire_config(PLUGIN_Name . '/cfg_' . $optShort, $valueByDefault);
48                        if (IsOptionValueOk($optShort, $valueFromConf, $valueByDefault))
49                        {
50                                $optValue[$optShort] = $valueFromConf;
51                        }
52                }                       
53                $isManual = lire_config(PLUGIN_Name . '/cfg_isManual');
54                if ($isManual != '')
55                {
56                        $optValue['fh'] = lire_config(PLUGIN_Name . '/cfg_height_site', ""); // height of the module
57                }
58        }
59}
60
61// @out:        $optValue: default values of options
62// @return      nothing
63function InitOptionValueByDefault(&$optValue)
64{
65$optValue = array(              // Initial value of each option
66'am'    => 'n',                 // 'autoplayMode',              // [n]one |(g)ame | (l)oop
67'bbch'  => 'E0E0E0',    // 'boardBorderColor',  // [E0E0E0] was 000000
68'bch'   => 'F6F6F6',    // 'backgroundColorHex',// [F6F6F6] was FFFFFF, (t)ransparent to use the parent's background color
69'bd'    => 'c',                 // 'buttonsDisplay',    // [c]ustom, (h)idden, (s)tandard
70'bsch'  => TRANSPARENT, // 'boardShadowColor',  // [t]ransparent no shadow | (b)order | nbr
71'cbch'  => 'F0F0F0',    // 'controlBackgroundColor', // [F0F0F0] was standard buttons
72'cd'    => 'n',                 // 'commentsDisplay',   // [n]ewline, (i)nline,(h)idden
73'ctch'  => '696969',    // 'controlTextColor',  // [696969] was 000000
74'd'             => '3000',              // 'delay',                             // [3000] was 1000 in ms
75'dch'   => 'E0E0E0',    // 'darkColor',                 // [E0E0E0] was C6CEC3
76'fcch'  => '000080',    // 'fontCommentsColor', // [000080]
77'fcs'   => 'm',                 // 'fontCommentsSize',  // [m]oves <- fontMovesSize
78'fh'    => '',                  // 'frameHeight',               // [""], (p)age, (b)oard, nbr, overriding textHeight. See FrameHeightEval()
79'fhch'  => '000000',    // 'fontHeaderColor',   // [000000]
80'fhs'   => '14',                // 'fontHeaderSize',    // [14] was 16
81'fmch'  => '000000',    // 'fontMovesColor',    // [000000]
82'fms'   => '14',                // 'fontMovesSize',     // [14] was 16
83'fp'    => '13',                // 'framePadding',      // [13] was 0
84'fw'    => 'p',                 // 'frameWidth',                // [p]age, (b)oard, nbr, overriding textHeight
85'hch'   => 'ABABAB',    // 'highlightColor',    // [ABABAB] was DAF4D7
86'hd'    => 'j',                 // 'headerDisplay',             // [j]ustified | (h)idden | (c)entered | (l)ive | (v)ariations
87'hl'    => 't',                 // 'horizontalLayout',  // [t]rue layout=[h]orizontal, (f)alse layout=(v)ertical
88'hm'    => 'b',                 // 'highlightMode',             // [b]order, (s)quare, (n)one
89'hmch'  => 'E0E0E0',    // 'highlightMovesColor', // [E0E0E0] was DAF4D7 | (b)ackground for no highligh
90'ig'    => 'f',                 // 'initialGame',               // [f]irst | (l)ast | (r)andom
91'ih'    => 's',                 // 'initialHalfmove',   // [s]tart | (e)nd | (r)andom | (c)omment | (v)ariation | nbr
92'iv'    => '0',                 // 'initialVariation',  // [0]
93'l'             => 'h',                 // 'layout',                    // [h]orizontal, (v)ertical. See OptionParser()
94'lch'   => 'F6F6F6',    // 'lightColor',                // [F6F6F6] was EFF4EC. suffix 'h' stands for hex
95'md'    => 'f',                 // 'movesDisplay',              // [f]igurine | (t)ext | (p)uzzle | (h)idden
96'pf'    => DEFAULT_Val, // 'pieceFont',                 // [d]efault <- pieceSize | (a)lpha | (m)erida | (u)scf | (s)vgchess
97'ps'    => DEFAULT_Val, // 'pieceSize',                 // [d]efault <- squareSize
98'rd'    => 'f',                 // 'refreshDemo',               // [f]alse | (t)rue
99'rm'    => '1',                 // 'refreshMinutes',    // [1] minute
100'ss'    => DEFAULT_ss,  // 'squareSize',                // [26] was 28
101                                                // textHeight: nbr, optional if frameHeight
102'tm'    => '13',                // 'textMargin'                 // [13] was 0. Set left/right margin width of the  textual section, header and/or moves text
103                                                // textWidth: nbr, optional if frameWidth
104                                 );
105}
106
107// @return      True if the new value of the option is correct and different of its previous value
108// @in:         $optShort: short name of the option (suffix "ch" for color hex)
109//                      $valueNew: new value to be checked
110//                      $valuePrevious: according to the type of the previous value
111function IsOptionValueOk($optShort, $valueNew, $valuePrevious)
112{
113        $isNumeric = is_numeric($valuePrevious) || ($valuePrevious == DEFAULT_Val);
114        $lenOpt = strlen($optShort);
115        if ($lenOpt > 2)
116                $isHexColor = (substr($optShort, $lenOpt - 2) == 'ch'); // (c)olor (h)ex
117        else
118                $isHexColor = false;
119       
120        if ($valueNew != $valuePrevious)
121        {
122                if ($isHexColor)
123                {
124                        if (preg_match('/^[a-f0-9]{6}$/i', $valueNew) || ($valueNew == TRANSPARENT))
125                                return true;
126                }
127                elseif ($isNumeric)
128                {
129                        if (is_numeric($valueNew) || ($valueNew == DEFAULT_Val))
130                                return true;
131                }
132                else
133                        return true;
134        }
135        return false;
136}
137?>
Note: See TracBrowser for help on using the repository browser.