-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMultidatabasesAppController.php
More file actions
147 lines (129 loc) · 3.61 KB
/
MultidatabasesAppController.php
File metadata and controls
147 lines (129 loc) · 3.61 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?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->_setupMultidatabaseTitle();
$this->_initMultidatabase(['multidatabaseSetting']);
$this->_loadFrameSetting();
}
/**
* ブロック名を汎用DBタイトルとしてセットする
*
* @return void
*/
protected function _setupMultidatabaseTitle() {
$this->loadModel('Blocks.Block');
$block = $this->Block->find('first', [
'recursive' => 0,
'conditions' => ['Block.id' => Current::read('Block.id')],
]);
$this->_multidatabaseTitle = $block['BlocksLanguage']['name'];
}
/**
* 初期設定
*
* @return bool|void
*/
protected function _initMultidatabase() {
// 汎用DBを取得
if (!$multidatabase = $this->Multidatabase->getMultidatabase()) {
return $this->throwBadRequest();
}
// メタデータを取得
if (!$metadata = $this->MultidatabaseMetadata->getEditMetadatas(
$multidatabase['Multidatabase']['id'])
) {
return $this->throwBadRequest();
}
if (!$metadataGroups = $this->MultidatabaseMetadata->getMetadataGroups(
$multidatabase['Multidatabase']['id'])
) {
return $this->throwBadRequest();
}
$this->_multidatabaseTitle = $multidatabase['Multidatabase']['name'];
$this->set('multidatabase', $multidatabase);
$this->set('multidatabaseMetadata', $metadata);
$this->set('multidatabaseMetadataGroups', $metadataGroups);
if (!$multidatabaseSetting = $this->MultidatabaseSetting->getMultidatabaseSetting()) {
$multidatabaseSetting = $this->MultidatabaseSetting->createBlockSetting();
$multidatabaseSetting['MultidatabaseSetting']['multidatabase_key'] = null;
} else {
$multidatabaseSetting['MultidatabaseSetting']['multidatabase_key']
= $multidatabase['Multidatabase']['key'];
}
$this->_multidatabase = $multidatabase;
$this->_metadata = $metadata;
$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();
}
}