add http as a required extension
[Pman.Core] / Config.php
1 <?php
2
3 // default framework settings for release
4
5 class Pman_Core_Config {
6     
7     
8     var $memory_limit = 0;
9     
10     var $defaults = array(  ); // override... 
11     
12     
13     // note if other extended 'config's require more, then you porbably need to include these first.
14     var $required_extensions = array(
15         'json',        
16         'curl',
17         'gd',
18         'mbstring',
19         'http'
20     );
21     
22     function init($ff, $cfg)
23     {
24       
25         $cfg = $this->overlayDefaults($cfg);
26         
27         if (!empty($this->memory_limit)) {
28             $mem = ini_get('memory_limit');
29             if (php_sapi_name() != 'cli' && $this->to_bytes($mem) < $this->to_bytes($this->memory_limit)) {
30                 die("increase the memory limit settings to 2048M or more");
31             }
32         
33         }
34         $this->verifyExtensions();
35         
36         return $cfg;
37     }
38     
39     function to_bytes($val) {
40         $val = trim($val);
41         $last = strtolower($val[strlen($val)-1]);
42         switch($last) {
43             // The 'G' modifier is available since PHP 5.1.0
44             case 'g':
45                 $val = substr($val, 0, -1);
46                 $val *= 1024;
47             case 'm':
48                 $val = substr($val, 0, -1);
49                 $val *= 1024;
50                 $val = substr($val, 0, -1);
51             case 'k':
52                 $val *= 1024;
53         }
54     
55         return $val;
56     }
57     function overlayDefaults($cfg)
58     {
59         if (isset($this->defaults['disable']) && is_array($this->defaults['disable']) ) {
60             $this->defaults['disable'] = implode(',', $this->defaults['disable']);
61         }
62         foreach($this->defaults as $k=>$v) {
63             if (is_array($v)) {
64                 
65                 if (!isset($cfg[$k])) {
66                     $cfg[$k] = $v;
67                     continue;
68                 }
69                 
70                 foreach($v as $kk=>$vv) {
71                     if (isset($cfg[$k][$kk])) {
72                         continue;
73                     }
74                     
75                     $cfg[$k][$kk] = $vv;
76                 }
77             }
78             
79             if (!isset($cfg[$k])) {
80                 $cfg[$k] = $v;
81             }
82         }
83         
84         return $cfg;
85     }
86     function verifyExtensions()
87     {
88         $error = array();
89         
90         foreach ($this->required_extensions as $e){
91             
92             if(empty($e) || extension_loaded($e)) {
93                 continue;
94             }
95             
96             $error[] = "Error: Please install php extension: {$e}";
97         }
98         
99         if(empty($error)){
100            return true; 
101         }
102         die(implode('\n', $error));
103     }
104
105 }