{site}.inc.php is the base for all jobs.
[platal.git] / include / globals.inc.php.in
index 4fc17fa..23b6374 100644 (file)
@@ -19,7 +19,7 @@
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-class PlatalGlobals
+class PlatalGlobals extends PlGlobals
 {
     public $session;
 
@@ -41,158 +41,11 @@ class PlatalGlobals
     public $skin;
     public $register_skin;
 
-    /** paths */
-    public $baseurl;
-    public $spoolroot;
-
-    public $locale;
-    public $timezone;
-
     public function __construct($sess)
     {
-        $this->session   = $sess;
-        $this->spoolroot = dirname(dirname(__FILE__));
-
-        $this->read_config();
-        if (isset($_SERVER) && isset($_SERVER['SERVER_NAME'])) {
-            $base = empty($_SERVER['HTTPS']) ? 'http://' : 'https://';
-            $this->baseurl   = @trim($base.$_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF']), '/');
-        }
-
-        $this->setlocale();
-    }
-
-    private function read_ini_file($filename)
-    {
-        $array = parse_ini_file($filename, true);
-        if (!is_array($array)) {
-            return;
-        }
-        foreach ($array as $cat => $conf) {
-            $c = strtolower($cat);
-            foreach ($conf as $k => $v) {
-                if ($c == 'core' && property_exists($this, $k)) {
-                    $this->$k=$v;
-                } else {
-                    if (!isset($this->$c)) {
-                        $this->$c = new stdClass;
-                    }
-                    $this->$c->$k = $v;
-                }
-            }
-        }
-    }
-
-    private function read_config()
-    {
-        $this->read_ini_file($this->spoolroot.'/configs/platal.ini');
-        $this->read_ini_file($this->spoolroot.'/configs/platal.conf');
-        if (file_exists($this->spoolroot.'/spool/conf/platal.dynamic.conf')) {
-            $this->read_ini_file($this->spoolroot.'/spool/conf/platal.dynamic.conf');
-        }
-    }
-
-    /** Writes an ini file separated in categories
-     * @param filename the name of the file to write (overwrite existing)
-     * @param categories an array of categories (array of keys and values)
-     */              
-    private static function write_ini_file($filename, &$categories)
-    {
-        // [category]
-        // key = value
-        $f = fopen($filename, 'w');
-        foreach ($categories as $cat => $conf) {
-            fwrite($f, '; {{{ '.$cat."\n\n");
-            fwrite($f, '['.$cat.']'."\n\n");
-            foreach ($conf as $k => $v) {
-                fwrite($f, $k.' = "'.str_replace('"','\\"',$v).'"'."\n");
-            }
-            fwrite($f, "\n".'; }}}'."\n");
-        }
-        fwrite($f, '; vim:set syntax=dosini foldmethod=marker:'."\n");
-        fclose($f);
-    }
-
-    /** Change dynamic config file
-     * @param conf array of keys and values to add or replace
-     * @param category name of category to change
-     * 
-     * Opens the dynamic conf file and set values from conf in specified
-     * category. Updates config vars too.
-     */ 
-    public function change_dynamic_config($conf, $category = 'Core')
-    {
-        $dynamicfile = $this->spoolroot.'/spool/conf/platal.dynamic.conf';
-        if (file_exists($dynamicfile)) {
-            $array = parse_ini_file($dynamicfile, true);
-        } else {
-            $array = null;
-        }
-        if (!is_array($array)) {
-            // dynamic conf is empty
-            $array = array($category => $conf);
-        } else {
-            // looks for a category that looks the same (case insensitive)
-            $same = false;
-            foreach ($array as $m => &$c) {
-                if (strtolower($m) == strtolower($category)) {
-                    $same = $m;
-                    break;
-                }
-            }
-            if (!$same) {
-                // this category doesn't exist yet
-                $array[$category] = $conf;
-            } else {
-                // this category already exists
-                $conflower = array();
-                foreach ($conf as $k => $v) {
-                    $conflower[strtolower($k)] = $v;
-                }
-                // $conflower is now same as $conf but with lower case keys
-                // replaces values of keys that already exists
-                foreach ($array[$same] as $k => $v) {
-                    if (isset($conflower[strtolower($k)])) {
-                        $array[$same][$k] = $conflower[strtolower($k)];
-                        unset($conflower[strtolower($k)]);
-                    }
-                }
-                // add new keys
-                foreach ($conf as $k => $v) {
-                    if (isset($conflower[strtolower($k)])) {
-                        $array[$same][$k] = $v;
-                    }
-                } 
-            }
-        }
-        // writes the file over
-        PlatalGlobals::write_ini_file($dynamicfile, $array);
-        // rereads the new config to correctly set vars
-        $this->read_ini_file($dynamicfile);
-    }
-
-    public function bootstrap($conf, $callback, $category = 'Core')
-    {
-        $bootstrap = false;
-        $category = strtolower($category);
-        foreach ($conf as $key) {
-            if (!isset($this->$category->$key)) {
-                $bootstrap = true;
-                break;
-            }
-        }
-        if ($bootstrap) {
-            call_user_func($callback);
-        }
-    }
-
-    private function setlocale()
-    {
-        setlocale(LC_MESSAGES, $this->locale);
-        setlocale(LC_TIME,     $this->locale);
-        setlocale(LC_CTYPE,    $this->locale);
-        date_default_timezone_set($this->timezone);
-        mb_internal_encoding("UTF-8");
+        parent::__construct(array('platal.ini', 'platal.conf'));
+        $globals->bootstrap(array('NbIns'), 'update_NbIns');i
+        $globals->bootstrap(array('NbValid'), 'update_NbValid');
     }
 
     public function asso($key=null)
@@ -206,7 +59,9 @@ class PlatalGlobals
             }
 
             if ($gp) {
-                $res = XDB::query('SELECT  a.*, d.nom AS domnom, FIND_IN_SET(\'wiki_desc\', a.flags) AS wiki_desc
+                $res = XDB::query('SELECT  a.*, d.nom AS domnom,
+                                           FIND_IN_SET(\'wiki_desc\', a.flags) AS wiki_desc,
+                                           FIND_IN_SET(\'notif_unsub\', a.flags) AS notif_unsub
                                      FROM  groupex.asso AS a
                                 LEFT JOIN  groupex.dom  AS d ON d.id = a.dom
                                     WHERE  diminutif = {?}', $gp);