OSDN Git Service

Document追加
[trpgtools-onweb/cake-frame.git] / app / models / profile.php
1 <?php
2 class Profile extends AppModel {
3
4         var $name = 'Profile';
5
6         var $profile_type = array(
7                 'input',
8                 'textarea',
9                 'select',
10                 'radio',
11                 'checkbox',
12                 'm-input',
13                 'table',
14                 's-table',
15         );
16
17         var $fields = array(
18                 'add' => array('system_id', 'name', 'key_name', 'profile_type', 'required', 'allow_link', 'public_flag_default', 'sort_order'),
19                 'edit' => array('name', 'key_name', 'profile_type', 'required', 'allow_link', 'public_flag_default', 'sort_order'),
20                 'edit_all' => array('sort_order'),
21                 'escape' => array(
22                         'name' => array(
23                                 'html' => true,
24                                 'all' => true,
25                         ),
26                 ),
27         );
28
29         var $validate = array(
30                 'name' => array(
31                         'maxLengthJP' => array(
32                                 'rule' => array('maxLengthJP', 255),
33                         ),
34                         'notEmpty' => array(
35                                 'rule' => 'notEmpty',
36                         ),
37                 ),
38                 'key_name' => array(
39                         'keyName' => array(
40                                 'rule' => 'keyName',
41                         ),
42                         'maxLengthJP' => array(
43                                 'rule' => array('maxLengthJP', 64),
44                         ),
45                         'notEmpty' => array(
46                                 'rule' => 'notEmpty',
47                         ),
48                 ),
49                 'profile_type' => array(
50                         'profileType' => array(
51                                 'rule' => 'profileType',
52                         ),
53                 ),
54                 'required' => array(
55                         'boolean' => array(
56                                 'rule' => 'boolean',
57                         ),
58                 ),
59                 'allow_link' => array(
60                         'boolean' => array(
61                                 'rule' => 'boolean',
62                         ),
63                 ),
64                 'public_flag_default' => array(
65                         'publicFlag' => array(
66                                 'rule' => 'publicFlagDefault',
67                         ),
68                 ),
69                 'sort_order' => array(
70                         'numeric' => array(
71                                 'rule' => array('numeric'),
72                                 'allowEmpty' => true,
73                         ),
74                 ),
75         );
76
77         //The Associations below have been created with all possible keys, those that are not needed can be removed
78         var $belongsTo = array(
79                 'System' => array(
80                         'className' => 'System',
81                         'foreignKey' => 'system_id',
82                         'conditions' => '',
83                         'fields' => array('id', 'name'),
84                 )
85         );
86
87         var $hasMany = array(
88                 'ProfileSelect' => array(
89                         'className' => 'ProfileSelect',
90                         'foreignKey' => 'profile_id',
91                         'dependent' => true,
92                         'conditions' => '',
93                         'fields' => '',
94 //                      'order' => array('ProfileSelect.sort_order' => 'asc'), // Using filesortの原因
95                         'limit' => '',
96                         'offset' => '',
97                         'exclusive' => '',
98                         'finderQuery' => '',
99                         'counterQuery' => ''
100                 ),
101                 'ProfileTable' => array(
102                         'className' => 'ProfileTable',
103                         'foreignKey' => 'profile_id',
104                         'dependent' => true,
105                         'conditions' => '',
106                         'fields' => '',
107 //                      'order' => array('ProfileTable.sort_order' => 'asc'),
108                         'limit' => '',
109                         'offset' => '',
110                         'exclusive' => '',
111                         'finderQuery' => '',
112                         'counterQuery' => ''
113                 ),
114                 'CharactersHasProfile' => array(
115                         'className' => 'CharactersHasProfile',
116                         'foreignKey' => 'profile_id',
117                         'associationForeignKey' => 'id',
118                         'dependent' => true,
119                         'conditions' => '',
120                         'fields' => array(
121                                 'CharactersHasProfile.id',
122                                 'CharactersHasProfile.character_id',
123                                 'CharactersHasProfile.profile_table_id',
124                                 'CharactersHasProfile.profile_table_static_id',
125                                 'CharactersHasProfile.value',
126                                 'CharactersHasProfile.public_flag',
127                                 'CharactersHasProfile.link_value',
128                         ),
129                         'order' => array('CharactersHasProfile.id' => 'asc'),
130                         'limit' => '',
131                         'offset' => '',
132                         'finderQuery' => '',
133                         'deleteQuery' => '',
134                         'insertQuery' => ''
135                 )
136         );
137
138         /* validation Rule */
139
140         /* 同システム中に同じkey_nameは不可 */
141         function isUniqueKeyname4system($data, $system_id, $id = null) 
142         {
143                 $params = array(
144                         'conditions' => array(
145                                 'Profile.system_id' => $system_id,
146                                 'Profile.key_name' => $data['key_name'],
147                         ),
148                         'recursive' => -1,
149                 );
150
151                 if($id) {
152                         $params['conditions']['Profile.id !='] = $id;
153                 }
154
155                 return !($this->find('count', $params));
156         }
157
158         /* プロフィールの入力型 */
159         function profileType($data) 
160         {
161                 if (isset($data['profile_type']) && in_array($data['profile_type'], $this->profile_type)) {
162                         return true;
163                 } else {
164                         return false;
165                 }
166         }
167
168         function publicFlagDefault($data) 
169         {
170                 if (isset($data["public_flag_default"]) && in_array($data["public_flag_default"], $this->public_flag)) {
171                         return true;
172                 } else {
173                         return false;
174                 }
175         }
176
177
178         /* コールバックメソッド */
179         function beforeSave($options = array())
180         {
181                 if (empty($this->data['Profile']['sort_order'])) {
182                         $this->data['Profile']['sort_order'] = 0;
183                 }
184
185                 return parent::beforeSave($options);
186         }
187
188         function afterSave($created) {
189                 $this->deleteCache4Profile();
190
191                 return parent::afterSave($created);
192         }
193         function afterDelete() {
194                 $this->deleteCache4Profile();
195
196                 return parent::afterDelete($model);
197         }
198
199         /* キャッシュ削除 */
200         function deleteCache4Profile()
201         {
202                 if (!isset($this->Character)) {
203                         $this->Character = CorePlus::set_model('Character');
204                 }
205                 $this->Character->cacheDelete();
206
207                 if (!isset($this->System)) {
208                         $this->System = CorePlus::set_model('System');
209                 }
210                 $this->System->cacheDelete();
211         }
212
213 }