-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTTJoinBehavior.php
More file actions
72 lines (51 loc) · 1.8 KB
/
TTJoinBehavior.php
File metadata and controls
72 lines (51 loc) · 1.8 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
<?php
class TTJoinBehavior extends ModelBehavior {
private $lists = array();
private function __TTjoin( Model $model, $joinKey, $arg=null) {
$joinKeys = explode(".",$joinKey);
$modelName = $joinKeys[0];
$TTkey = $joinKeys[1];
$callFunctionName = $this->settings[$model->alias]['callFunctionName'];
$joinModel = ClassRegistry::init($modelName);
$j = $joinModel->$callFunctionName();
$data = $j[$TTkey];
$database = ConnectionManager::getDataSource($joinModel->useDbConfig)->config['database'];
$data['table'] = $database.'.'.$joinModel->useTable;
$data['alias'] = $joinModel->alias;
if(isset($joinKeys[2])){
$data['type'] = $joinKeys[2];
}
if($arg){
$data = Hash::merge($data , $arg);
}
$this->lists[] = $data ;
return $model;
}
private function __TTRun(){
return $this->lists;
}
public function TTJoin(Model $model,$arg = array()){
$this->lists = [];
foreach($arg as $k=>$v){
if(is_numeric($k)){
$this->__TTjoin($model,$v);
}else{
if($k == 'NoModel'){
$this->lists[] = $v;
}else{
$this->__TTjoin($model,$k,$v);
}
}
}
return $this->__TTRun();
}
public function setup(Model $Model, $settings = array()) {
if (!isset($this->settings[$Model->alias])) {
$this->settings[$Model->alias] = array(
'callFunctionName' => 'TTjoinLists',
);
}
$this->settings[$Model->alias] = array_merge(
$this->settings[$Model->alias], (array)$settings);
}
}