XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
ProfileService.class.php
1<?php
10
11if (!defined('XOOPS_ROOT_PATH')) {
12 exit();
13}
14
16{
20 public function getPropertyDefinition()
21 {
22 $handler =& xoops_getmodulehandler('definitions', 'profile');
23 $defArr =& $handler->getObjects();
24 $ret = [
25 S_PUBLIC_VAR('int uid')
26 ];
27 foreach (array_keys($defArr) as $key) {
28 $ret[] = S_PUBLIC_VAR($defArr->getServiceField());
29 }
30
31 return $ret;
32 }
33}
34
36{
40 public function getClassName()
41 {
42 return 'Profile_DataObj';
43 }
44}
45
51{
55 public function getPropertyDefinition()
56 {
57 $ret = [
58 S_PUBLIC_VAR('string option_name'),
59 ];
60
61 return $ret;
62 }
63}
64
66{
70 public function getClassName()
71 {
72 return 'Profile_OptionsObj';
73 }
74}
75
77{
81 public function getPropertyDefinition()
82 {
83 $ret = [
84 S_PUBLIC_VAR('int field_id'),
85 S_PUBLIC_VAR('string field_name'),
86 S_PUBLIC_VAR('string label'),
87 S_PUBLIC_VAR('string type'),
88 S_PUBLIC_VAR('int weight'),
89 S_PUBLIC_VAR('text description'),
90 S_PUBLIC_VAR('text access'),
91 S_PUBLIC_VAR('Profile_OptionsObjArray options'),
92 ];
93
94 return $ret;
95 }
96}
97
99{
103 public function getClassName()
104 {
105 return 'Profile_DefinitionsObj';
106 }
107}
108
110{
111 public $mServiceName = 'Profile_Service';
112 public $mNameSpace = 'Profile';
113 public $mClassName = 'Profile_Service';
114
118 public function prepare()
119 {
120 $this->addType('Profile_DataObj');
121 $this->addType('Profile_DataObjArray');
122 $this->addType('Profile_OptionsObj');
123 $this->addType('Profile_OptionsObjArray');
124 $this->addType('Profile_DefinitionsObj');
125 $this->addType('Profile_DefinitionsObjArray');
126
127 $this->addFunction(S_PUBLIC_FUNC('Profile_DefinitionsObjArray getDefinitions(int uid, int groupid, bool show_form)'));
128 $this->addFunction(S_PUBLIC_FUNC('Profile_DataObj getProfile(int uid)'));
129 $this->addFunction(S_PUBLIC_FUNC('Profile_DataObjArr getProfileArr(string field_name, string value)'));
130 $this->addFunction(S_PUBLIC_FUNC('bool setProfile(string field_name, string value, int uid)'));
131
132 $handler =& xoops_getmodulehandler('definitions', 'profile');
133 $defArr =& $handler->getObjects();
134 $fieldDef = '';
135 foreach (array_keys($defArr) as $key) {
136 $fieldDef .= $defArr[$key]->getServiceField() .',';
137 }
138 $fieldDef = rtrim($fieldDef, ',');
139 $this->addFunction(S_PUBLIC_FUNC('bool setProfiles(int uid'. $fieldDef .')'));
140 }
141
149 public function getDefinitions()
150 {
151 $definitionsArr = [];
152
153 $root =& XCube_Root::getSingleton();
154 $uid = ($root->mContext->mXoopsUser) ? $root->mContext->mXoopsUser->get('uid') : 0;
155
156 //get parameters
157 //access limit by uid
158 $request_uid = $root->mContext->mRequest->getRequest('uid');
159 if ($request_uid>0) {
160 $gHandler =& xoops_gethandler('member');
161 $groupArr =& $gHandler->getGroupsByUser($request_uid);
162 }
163 //access limit by group id
164 $groupid = $root->mContext->mRequest->getRequest('groupid');
165 //show_form
166 $show_form = $root->mContext->mRequest->getRequest('show_form');
167
168 $criteria = new CriteriaCompo();
169 if (true == $show_form) {
170 $criteria->add(new Criteria('show_form', '1'));
171 }
172 $handler =& xoops_getmodulehandler('definitions', 'profile');
173 $definitions =& $handler->getObjects($criteria);
174 foreach (array_keys($definitions) as $key) {
175 if ($uid>0 && $request_uid==$uid) {
176 $def = $definitions[$key]->gets();
177 } elseif ($request_uid>0) {
178 $flag = false;
179 $accessArr = explode(',', $definitions[$key]->get('access'));
180 foreach (array_keys($groupArr) as $keyG) {
181 if (in_array($groupArr[$keyG], $accessArr)) {
182 $flag = true;
183 }
184 }
185 if (true == $flag) {
186 $def = $definitions[$key]->gets();
187 }
188 } elseif ($groupid>0) {
189 if (in_array($groupid, explode(',', $definitions[$key]->get('access')))) {
190 $def = $definitions[$key]->gets();
191 }
192 } else {
193 $def = $definitions[$key]->gets();
194 }
195 $def['options'] = ($def['options']) ? explode('|', $def['options']) : [];
196 $definitionsArr[] = $def;
197 }
198 unset($handler);
199 return $definitionsArr;
200 }
201
206 public function getProfile()
207 {
208 $root =& XCube_Root::getSingleton();
209 $uid = $root->mContext->mRequest->getRequest('uid');
210 $handler =& xoops_getmodulehandler('data', 'profile');
211
212 $dataObj =& $handler->get($uid);
213 if (! $dataObj) {
214 $dataObj =& $handler->create();
215 }
216 $dataArr = $dataObj->gets();
217 return $dataArr;
218 }
219
224 public function getProfileArr()
225 {
226 $dataList = [];
227
228 $root =& XCube_Root::getSingleton();
229 $field_name = $root->mContext->mRequest->getRequest('field_name');
230 $value = $root->mContext->mRequest->getRequest('value');
231
232 $handler =& xoops_getmodulehandler('data', 'profile');
233 $criteria = new CriteriaCompo();
234 $criteria->add(new Criteria($field_name, $value));
235 $dataArr =& $handler->getObjects($criteria);
236 foreach (array_keys($dataArr) as $key) {
237 $dataList[$key] = $dataArr[$key]->gets();
238 }
239 return $dataList;
240 }
241
246 public function setProfile()
247 {
248 $root =& XCube_Root::getSingleton();
249 $field_name = $root->mContext->mRequest->getRequest('field_name');
250 $value = $root->mContext->mRequest->getRequest('value');
251 $uid = $root->mContext->mRequest->getRequest('uid');
252
253 $handler =& xoops_getmodulehandler('data', 'profile');
254 $obj =& $handler->get($uid);
255
256 if (! $obj) {
257 return false;
258 }
259
260 $obj->set($field_name, $value);
261 if ($handler->insert($obj)) {
262 return true;
263 } else {
264 return false;
265 }
266 }
267
272 public function setProfiles()
273 {
274 $root =& XCube_Root::getSingleton();
275 $uid = $root->mContext->mRequest->getRequest('uid');
276
277 $defHandler =& xoops_getmodulehandler('definitions', 'profile');
278 $defArr =& $defHandler->getObjects();
279
280 $dataHandler =& xoops_getmodulehandler('data', 'profile');
281 $dataObj =& $dataHandler->get($uid);
282
283 if (! $dataObj) {
284 $dataObj = $dataHandler->create();
285 }
286
287 $dataObj->set('uid', $uid);
288
289 foreach (array_keys($defArr) as $key) {
290 $dataObj->set($defArr[$key]->getShow('field_name'), $root->mContext->mRequest->getRequest($defArr[$key]->getShow('field_name')));
291 }
292
293 if ($dataHandler->insert($dataObj)) {
294 return true;
295 } else {
296 return false;
297 }
298 }
299}
options for select box