Completed
Push — master ( 1be9a7...77accb )
by Eric
05:23
created

src/Bootstrap.php (1 issue)

Labels
Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Jaeger
4
 *
5
 * @author		Eric Lamb <[email protected]>
6
 * @copyright	Copyright (c) 2015-2016, mithra62, Eric Lamb
7
 * @link		http://jaeger-app.com
8
 * @version		1.0
9
 * @filesource 	./Bootstrap.php
10
 */
11
namespace JaegerApp;
12
13
use JaegerApp\Di;
14
use JaegerApp\Encrypt;
15
use JaegerApp\Db;
16
use JaegerApp\Language;
17
use JaegerApp\Validate;
18
use JaegerApp\Files;
19
use JaegerApp\Errors;
20
use JaegerApp\License;
21
use JaegerApp\Email;
22
use JaegerApp\View;
23
use JaegerApp\Regex;
24
use JaegerApp\Shell;
25
use JaegerApp\Console;
26
27
/**
28
 * Jaeger - Bootstrap Object
29
 *
30
 * Sets up the environment and needed objects
31
 *
32
 * @package Bootstrap
33
 */
34
class Bootstrap extends Di
35
{
36
    /**
37
     * The language file to load
38
     * 
39
     * @var array
40
     */
41
    protected $lang_file = null;
42
43
    /**
44
     * The paths to look for language files at
45
     * 
46
     * @var array
47
     */
48
    protected $lang_paths = array();
49
50
    /**
51
     * The environment config details
52
     * 
53
     * @var array
54
     */
55
    protected $config = array(
56
        'db' => array()
57
    );
58
59
    /**
60
     *
61
     * @ignore
62
     *
63
     */
64
    public function __construct()
65
    {
66
        parent::__construct();
67
        $this->setLangPath(realpath(dirname(__FILE__) . '/language'));
68
    }
69
70
    /**
71
     * Sets a language paths to use
72
     * 
73
     * @param string $path            
74
     */
75
    public function setLangPath($path)
76
    {
77
        $this->lang_paths[base64_encode($path)] = $path;
78
        return $this;
79
    }
80
81
    /**
82
     * Returns the set language paths
83
     * 
84
     * @return \mithra62\array
85
     */
86
    public function getLangPath()
87
    {
88
        return $this->lang_paths;
89
    }
90
91
    /**
92
     * Sets the database connection details
93
     * 
94
     * @param array $config            
95
     */
96
    public function setDbConfig(array $config)
97
    {
98
        $this->config['db'] = $config;
99
        return $this;
100
    }
101
102
    /**
103
     * Returns the database configuration details
104
     * 
105
     * @return array
106
     */
107
    public function getDbConfig()
108
    {
109
        return $this->config['db'];
110
    }
111
112
    /**
113
     * Sets up and returns all the objects we'll use
114
     * 
115
     * @return \Pimple\Container
116
     */
117
    public function getServices()
118
    {
119
        $this->container = parent::getServices();
0 ignored issues
show
Are you sure the assignment to $this->container is correct as parent::getServices() (which targets JaegerApp\Di::getServices()) seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
120
        $this->container['db'] = function ($c) {
121
            $db = new Db();
122
            $db->setCredentials($this->getDbConfig());
123
            $type = 'pdo';
124
            if( function_exists('mysqli_select_db'))
125
            {
126
                $type = 'mysqli';
127
            }
128
            
129
            $db->setAccessType($type);
130
            return $db;
131
        };
132
        
133
        $this->container['encrypt'] = function ($c) {
134
            $encrypt = new Encrypt();
135
            $new_key = $c['platform']->getEncryptionKey();
136
            $encrypt->setKey($new_key);
137
            return $encrypt;
138
        };
139
        
140
        $this->container['lang'] = function ($c) {
141
            $lang = new Language();
142
            if (is_array($this->getLangPath())) {
143
                foreach ($this->getLangPath() as $path) {
144
                    $lang->init($path);
145
                }
146
            } elseif ($this->getLangPath() != '') {
147
                $lang->init($this->getLangPath());
148
            }
149
            return $lang;
150
        };
151
        
152
        $this->container['validate'] = function ($c) {
153
            $validate = new Validate();
154
            $validate->setRegex($this->container['regex']);
155
            return $validate;
156
        };
157
        
158
        $this->container['files'] = function ($c) {
159
            $file = new Files();
160
            return $file;
161
        };
162
        
163
        $this->container['errors'] = function ($c) {
164
            $errors = new Errors();
165
            $errors->setValidation($c['validate']);
166
            return $errors;
167
        };
168
        
169
        $this->container['license'] = function ($c) {
170
            $license = new License();
171
            return $license;
172
        };
173
        
174
        $this->container['email'] = function ($c) {
175
            
176
            $email = new Email();
177
            $email->setView($c['view']);
178
            $email->setLang($c['lang']);
179
            return $email;
180
        };
181
        
182
        $this->container['view'] = function ($c) {
183
            $view = new View();
184
            $helpers = array(
185
                'file_size' => function ($text) {
186
                    return $this->container['view_helpers']->m62FileSize($text, false);
187
                },
188
                'lang' => function ($text) {
189
                    return $this->container['view_helpers']->m62Lang($text);
190
                },
191
                'date_time' => function ($text, $html = true) {
192
                    return $this->container['view_helpers']->m62DateTime($text, false);
193
                },
194
                'relative_time' => function ($date) {
195
                    return $this->container['view_helpers']->m62RelativeDateTime($date);
196
                },
197
                'encode' => function ($text) {
198
                    return $this->container['view_helpers']->m62Encode($text);
199
                },
200
                'decode' => function ($text) {
201
                    return $this->container['view_helpers']->m62Decode($text);
202
                }
203
            );
204
            
205
            $view->addHelper('m62', $helpers);
206
            return $view;
207
        };
208
        
209
        $this->container['regex'] = function ($c) {
210
            $regex = new Regex();
211
            return $regex;
212
        };
213
        
214
        $this->container['shell'] = function ($c) {
215
            $shell = new Shell();
216
            return $shell;
217
        };
218
        
219
        $this->container['console'] = function ($c) {
220
            $console = new Console();
221
            $console->setLang($c['lang']);
222
            return $console;
223
        };
224
        
225
        return $this->container;
226
    }
227
}