-
Notifications
You must be signed in to change notification settings - Fork 120
Expand file tree
/
Copy pathAppController.php
More file actions
executable file
·107 lines (95 loc) · 3.52 KB
/
AppController.php
File metadata and controls
executable file
·107 lines (95 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
/**
* Application level Controller
*
* This file is application-wide controller file. You can put all
* application-wide controller-related methods here.
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package app.Controller
* @since CakePHP(tm) v 0.2.9
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
App::uses('Controller', 'Controller');
/**
* Application Controller
*
* Add your application-wide methods in the class below, your controllers
* will inherit them.
*
* @package app.Controller
* @link http://book.cakephp.org/2.0/en/controllers.html#the-app-controller
*/
class AppController extends Controller {
public $helpers = array('Session', 'Form' => array('className' => 'BootstrapForm'), 'Html' => array('className' => 'AjaxHtml'), 'Image');
public $components = array(
'Session',
'DebugKit.Toolbar',
'Image',
'CheckCmd',
'Paginator',
'Auth' => array(
'authenticate' => array(
'Form' => array(
'passwordHasher' => 'Blowfish',
'fields' => array('username' => 'email')
)
),
'authorize' => array('Controller'),
'unauthorizedRedirect' => array('controller' => 'songs', 'action' => 'index')
)
);
public function isAuthorized($user) {
return true;
}
public function beforeFilter() {
if ($this->request->is('ajax')) {
$this->response->type("application/json");
$this->layout = "ajax";
} elseif ($this->request->params['controller'] != 'installers' && !$this->__isInstalled()) {
$this->redirect(array('controller' => 'installers', 'action' => 'index'));
} elseif ($this->request->params['controller'] == 'installers' && $this->__isInstalled()) {
$this->Session->setFlash(__('Sonerezh is already installed. Remove or rename app/Config/database.php to run the installation again.'), 'flash_info');
$this->redirect(array('controller' => 'songs', 'action' => 'index'));
}
}
public function beforeRender() {
parent::beforeRender();
if (isset($this->request->query['ajax'])) {
unset($this->request->query['ajax']);
}
}
public function redirect($url, $status = null, $exit = true) {
if($url == null && $status == 403 && $this->request->is('ajax')){
$url = $this->Auth->loginAction;
}
parent::redirect($url, $status, $exit);
}
/**
* This function checks if Sonerezh is already installed on the server
* @return bool
*/
private function __isInstalled(){
$installed = true;
if (!file_exists(APP."Config".DS."database.php")) {
$installed = false;
}
if ($installed) {
App::uses('ConnectionManager', 'Model');
try {
ConnectionManager::getDataSource('default');
} catch (Exception $connectionError) {
$installed = false;
}
}
return $installed;
}
}