-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMultidatabasesAppController.php
More file actions
131 lines (114 loc) · 3.19 KB
/
MultidatabasesAppController.php
File metadata and controls
131 lines (114 loc) · 3.19 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
/**
* MultidatabasesAppController Controller
* 汎用データベースAppコントローラー
* (汎用データべース関連コントローラーの共通処理を定義する)
*
* @author Noriko Arai <arai@nii.ac.jp>
* @author Tomoyuki OHNO (Ricksoft Co., Ltd.) <ohno.tomoyuki@ricksoft.jp>
* @link http://www.netcommons.org NetCommons Project
* @license http://www.netcommons.org/license.txt NetCommons License
* @copyright Copyright 2014, NetCommons Project
*/
App::uses('AppController', 'Controller');
/**
* MultidatabasesAppController Controller
*
* @author Tomoyuki OHNO (Ricksoft Co., Ltd.) <ohno.tomoyuki@ricksoft.jp>
* @package NetCommons\Multidatabases\Controller
*/
class MultidatabasesAppController extends AppController {
/**
* 使用するComponent
*
* @var array
*/
public $components = [
'Pages.PageLayout',
'Security',
];
/**
* @var array use model
*/
public $uses = [
'Multidatabases.Multidatabase',
'Multidatabases.MultidatabaseMetadata',
'Multidatabases.MultidatabaseSetting',
'Multidatabases.MultidatabaseFrameSetting',
];
/**
* @var array 汎用DBタイトル
*/
protected $_multidatabaseTitle;
/**
* @var array フレーム設定
*/
protected $_frameSetting;
/**
* @var array 汎用DBブロック設定
*/
protected $_setting;
/**
* @var array 汎用DB設定
*/
protected $_multidatabase;
/**
* @var array 汎用DB メタデータ設定
*/
protected $_metadata;
/**
* prepare
*
* @return void
*/
protected function _prepare() {
$this->_initMultidatabase(['multidatabaseSetting']);
$this->_loadFrameSetting();
}
/**
* 初期設定
*
* @return bool|void
*/
protected function _initMultidatabase() {
// 汎用DBを取得
if (!$multidatabase = $this->Multidatabase->getMultidatabase()) {
return $this->throwBadRequest();
}
// メタデータを取得
if (!$metadatas = $this->MultidatabaseMetadata->getEditMetadatas(
$multidatabase['Multidatabase']['id'])
) {
return $this->throwBadRequest();
}
foreach ($metadatas as $metadata) {
$metadataGroups[$metadata['position']][$metadata['rank']] = $metadata;
}
$this->_multidatabaseTitle = $multidatabase['Multidatabase']['name'];
$this->set('multidatabase', $multidatabase);
$this->set('multidatabaseMetadata', $metadatas);
$this->set('multidatabaseMetadataGroups', $metadataGroups);
$multidatabaseSetting['MultidatabaseSetting'] = $multidatabase['MultidatabaseSetting'];
if (!$multidatabaseSetting) {
$multidatabaseSetting = $this->MultidatabaseSetting->createBlockSetting();
$multidatabaseSetting['MultidatabaseSetting']['multidatabase_key'] = null;
} else {
$multidatabaseSetting['MultidatabaseSetting']['multidatabase_key']
= $multidatabase['Multidatabase']['key'];
}
$this->_multidatabase = $multidatabase;
$this->_metadata = $metadatas;
$this->_setting = $multidatabaseSetting;
$this->set('multidatabaseSetting', $multidatabaseSetting['MultidatabaseSetting']);
$this->set('userId', (int)$this->Auth->user('id'));
return true;
}
/**
* フレーム設定を取得する
*
* @return void
*/
protected function _loadFrameSetting() {
$this->_frameSetting = $this->MultidatabaseFrameSetting->getMultidatabaseFrameSetting();
}
}