OSDN Git Service

m-input対応
[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', 'editable', 'public_flag_default', 'sort_order'),
19                 'edit' => array('name', 'key_name', 'profile_type', 'required', 'editable', 'public_flag_default', 'sort_order'),
20                 'escape' => array(
21                         'name' => array(
22                                 'html' => true,
23                                 'all' => true,
24                         ),
25                 ),
26         );
27
28         var $validate = array(
29                 'name' => array(
30                         'maxLengthJP' => array(
31                                 'rule' => array('maxLengthJP', 255),
32                         ),
33                         'notEmpty' => array(
34                                 'rule' => 'notEmpty',
35                         ),
36                 ),
37                 'key_name' => array(
38                         'keyName' => array(
39                                 'rule' => 'keyName',
40                         ),
41                         'maxLengthJP' => array(
42                                 'rule' => array('maxLengthJP', 64),
43                         ),
44                         'notEmpty' => array(
45                                 'rule' => 'notEmpty',
46                         ),
47                 ),
48                 'profile_type' => array(
49                         'profileType' => array(
50                                 'rule' => 'profileType',
51                         ),
52                 ),
53                 'required' => array(
54                         'boolean' => array(
55                                 'rule' => 'boolean',
56                         ),
57                 ),
58                 'editable' => array(
59                         'boolean' => array(
60                                 'rule' => 'boolean',
61                         ),
62                 ),
63                 'public_flag_default' => array(
64                         'publicFlag' => array(
65                                 'rule' => 'publicFlagDefault',
66                         ),
67                 ),
68                 'sort_order' => array(
69                         'numeric' => array(
70                                 'rule' => array('numeric'),
71                                 'allowEmpty' => true,
72                         ),
73                 ),
74         );
75
76         //The Associations below have been created with all possible keys, those that are not needed can be removed
77         var $belongsTo = array(
78                 'System' => array(
79                         'className' => 'System',
80                         'foreignKey' => 'system_id',
81                         'conditions' => '',
82                         'fields' => array('id', 'name'),
83                 )
84         );
85
86         var $hasMany = array(
87                 'ProfileSelect' => array(
88                         'className' => 'ProfileSelect',
89                         'foreignKey' => 'profile_id',
90                         'dependent' => true,
91                         'conditions' => '',
92                         'fields' => '',
93                         'order' => array('ProfileSelect.sort_order' => 'asc'),
94                         'limit' => '',
95                         'offset' => '',
96                         'exclusive' => '',
97                         'finderQuery' => '',
98                         'counterQuery' => ''
99                 ),
100                 'ProfileTable' => array(
101                         'className' => 'ProfileTable',
102                         'foreignKey' => 'profile_id',
103                         'dependent' => true,
104                         'conditions' => '',
105                         'fields' => '',
106                         'order' => array('ProfileTable.sort_order' => 'asc'),
107                         'limit' => '',
108                         'offset' => '',
109                         'exclusive' => '',
110                         'finderQuery' => '',
111                         'counterQuery' => ''
112                 ),
113                 'CharactersHasProfile' => array(
114                         'className' => 'CharactersHasProfile',
115                         'foreignKey' => 'profile_id',
116                         'associationForeignKey' => 'id',
117                         'dependent' => true,
118                         'conditions' => '',
119                         'fields' => array(
120                                 'CharactersHasProfile.profile_table_id',
121                                 'CharactersHasProfile.value',
122                                 'CharactersHasProfile.public_flag',
123                                 'CharactersHasProfile.link_value',
124                         ),
125                         'order' => array('CharactersHasProfile.id' => 'asc'),
126                         'limit' => '',
127                         'offset' => '',
128                         'finderQuery' => '',
129                         'deleteQuery' => '',
130                         'insertQuery' => ''
131                 )
132         );
133
134         /* validation Rule */
135
136         /* 同システム中に同じkey_nameは不可 */
137         function isUniqueKeyname4system($data, $system_id, $id = null) 
138         {
139                 $params = array(
140                         'conditions' => array(
141                                 'Profile.system_id' => $system_id,
142                                 'Profile.key_name' => $data['key_name'],
143                         ),
144                         'recursive' => -1,
145                 );
146
147                 if($id) {
148                         $params['conditions']['Profile.id !='] = $id;
149                 }
150
151                 return !($this->find('count', $params));
152         }
153
154         /* プロフィールの入力型 */
155         function profileType($data) 
156         {
157                 if (isset($data['profile_type']) && in_array($data['profile_type'], $this->profile_type)) {
158                         return true;
159                 } else {
160                         return false;
161                 }
162         }
163
164         function publicFlagDefault($data) 
165         {
166                 if (isset($data["public_flag_default"]) && in_array($data["public_flag_default"], $this->public_flag)) {
167                         return true;
168                 } else {
169                         return false;
170                 }
171         }
172
173
174         /* コールバックメソッド */
175         function beforeSave($options = array())
176         {
177                 if (empty($this->data['Profile']['sort_order'])) {
178                         $this->data['Profile']['sort_order'] = 0;
179                 }
180
181                 return parent::beforeSave($options);
182         }
183 }