1: <?php
2:
3: if (!defined('XOOPS_ROOT_PATH')) exit();
4:
5: class Profile_DataObj extends XCube_Object
6: {
7: 8: 9:
10: function getPropertyDefinition()
11: {
12: $handler =& xoops_getmodulehandler('definitions', 'profile');
13: $defArr =& $handler->getObjects();
14: $ret = array(
15: S_PUBLIC_VAR("int uid")
16: );
17: foreach(array_keys($defArr) as $key){
18: $ret[] = S_PUBLIC_VAR($defArr->getServiceField());
19: }
20:
21: return $ret;
22: }
23: }
24:
25: class Profile_DataObjArray extends XCube_ObjectArray
26: {
27: 28: 29:
30: function getClassName()
31: {
32: return "Profile_DataObj";
33: }
34: }
35:
36: 37: 38: 39:
40: class Profile_OptionsObj extends XCube_Object
41: {
42: 43: 44:
45: function getPropertyDefinition()
46: {
47: $ret = array(
48: S_PUBLIC_VAR("string option_name"),
49: );
50:
51: return $ret;
52: }
53: }
54:
55: class Profile_OptionsObjArray extends XCube_ObjectArray
56: {
57: 58: 59:
60: function getClassName()
61: {
62: return "Profile_OptionsObj";
63: }
64: }
65:
66: class Profile_DefinitionsObj extends XCube_Object
67: {
68: 69: 70:
71: function getPropertyDefinition()
72: {
73: $ret = array(
74: S_PUBLIC_VAR("int field_id"),
75: S_PUBLIC_VAR("string field_name"),
76: S_PUBLIC_VAR("string label"),
77: S_PUBLIC_VAR("string type"),
78: S_PUBLIC_VAR("int weight"),
79: S_PUBLIC_VAR("text description"),
80: S_PUBLIC_VAR("text access"),
81: S_PUBLIC_VAR("Profile_OptionsObjArray options"),
82: );
83:
84: return $ret;
85: }
86: }
87:
88: class Profile_DefinitionsObjArray extends XCube_ObjectArray
89: {
90: 91: 92:
93: function getClassName()
94: {
95: return "Profile_DefinitionsObj";
96: }
97: }
98:
99: class Profile_Service extends XCube_Service
100: {
101: var $mServiceName = "Profile_Service";
102: var $mNameSpace = "Profile";
103: var $mClassName = "Profile_Service";
104:
105: 106: 107:
108: function prepare()
109: {
110: $this->addType('Profile_DataObj');
111: $this->addType('Profile_DataObjArray');
112: $this->addType('Profile_OptionsObj');
113: $this->addType('Profile_OptionsObjArray');
114: $this->addType('Profile_DefinitionsObj');
115: $this->addType('Profile_DefinitionsObjArray');
116:
117: $this->addFunction(S_PUBLIC_FUNC('Profile_DefinitionsObjArray getDefinitions(int uid, int groupid, bool show_form)'));
118: $this->addFunction(S_PUBLIC_FUNC('Profile_DataObj getProfile(int uid)'));
119: $this->addFunction(S_PUBLIC_FUNC('Profile_DataObjArr getProfileArr(string field_name, string value)'));
120: $this->addFunction(S_PUBLIC_FUNC('bool setProfile(string field_name, string value, int uid)'));
121:
122: $handler =& xoops_getmodulehandler('definitions', 'profile');
123: $defArr =& $handler->getObjects();
124: $fieldDef = "";
125: foreach(array_keys($defArr) as $key){
126: $fieldDef .= $defArr[$key]->getServiceField() .',';
127: }
128: $fieldDef = rtrim($fieldDef, ',');
129: $this->addFunction(S_PUBLIC_FUNC('bool setProfiles(int uid'. $fieldDef .')'));
130: }
131:
132: 133: 134: 135: 136: 137: 138:
139: function getDefinitions()
140: {
141: $definitionsArr = array();
142:
143: $root =& XCube_Root::getSingleton();
144: $uid = ($root->mContext->mXoopsUser) ? $root->mContext->mXoopsUser->get('uid') : 0;
145:
146:
147:
148: $request_uid = $root->mContext->mRequest->getRequest('uid');
149: if($request_uid>0){
150: $gHandler =& xoops_gethandler('member');
151: $groupArr =& $gHandler->getGroupsByUser($request_uid);
152: }
153:
154: $groupid = $root->mContext->mRequest->getRequest('groupid');
155:
156: $show_form = $root->mContext->mRequest->getRequest('show_form');
157:
158: $criteria = new CriteriaCompo();
159: if($show_form==true){
160: $criteria->add(new Criteria('show_form', '1'));
161: }
162: $handler =& xoops_getmodulehandler('definitions', 'profile');
163: $definitions =& $handler->getObjects($criteria);
164: foreach(array_keys($definitions) as $key){
165: if($uid>0 && $request_uid==$uid){
166: $def = $definitions[$key]->gets();
167: }
168: elseif($request_uid>0){
169: $flag = false;
170: $accessArr = explode(',', $definitions[$key]->get('access'));
171: foreach(array_keys($groupArr) as $keyG){
172: if(in_array($groupArr[$keyG], $accessArr)){
173: $flag = true;
174: }
175: }
176: if($flag==true){
177: $def = $definitions[$key]->gets();
178: }
179: }
180: elseif($groupid>0){
181: if(in_array($groupid, explode(',', $definitions[$key]->get('access')))){
182: $def = $definitions[$key]->gets();
183: }
184: }
185: else{
186: $def = $definitions[$key]->gets();
187: }
188: $def['options'] = ($def['options']) ? explode('|', $def['options']) : array();
189: $definitionsArr[] = $def;
190: }
191: unset($handler);
192: return $definitionsArr;
193: }
194:
195: 196: 197: 198:
199: function getProfile()
200: {
201: $root =& XCube_Root::getSingleton();
202: $uid = $root->mContext->mRequest->getRequest('uid');
203: $handler =& xoops_getmodulehandler('data', 'profile');
204:
205: $dataObj =& $handler->get($uid);
206: if(! $dataObj){
207: $dataObj =& $handler->create();
208: }
209: $dataArr = $dataObj->gets();
210: return $dataArr;
211: }
212:
213: 214: 215: 216:
217: function getProfileArr()
218: {
219: $dataList = array();
220:
221: $root =& XCube_Root::getSingleton();
222: $field_name = $root->mContext->mRequest->getRequest('field_name');
223: $value = $root->mContext->mRequest->getRequest('value');
224:
225: $handler =& xoops_getmodulehandler('data', 'profile');
226: $criteria = new CriteriaCompo();
227: $criteria->add(new Criteria($field_name, $value));
228: $dataArr =& $handler->getObjects($criteria);
229: foreach(array_keys($dataArr) as $key){
230: $dataList[$key] = $dataArr[$key]->gets();
231: }
232: return $dataList;
233: }
234:
235: 236: 237: 238:
239: function setProfile()
240: {
241: $root =& XCube_Root::getSingleton();
242: $field_name = $root->mContext->mRequest->getRequest('field_name');
243: $value = $root->mContext->mRequest->getRequest('value');
244: $uid = $root->mContext->mRequest->getRequest('uid');
245:
246: $handler =& xoops_getmodulehandler('data', 'profile');
247: $obj =& $handler->get($uid);
248:
249: if (! $obj) {
250: return false;
251: }
252:
253: $obj->set($field_name, $value);
254: if($handler->insert($obj)){
255: return true;
256: }
257: else{
258: return false;
259: }
260: }
261:
262: 263: 264: 265:
266: function setProfiles()
267: {
268: $root =& XCube_Root::getSingleton();
269: $uid = $root->mContext->mRequest->getRequest('uid');
270:
271: $defHandler =& xoops_getmodulehandler('definitions', 'profile');
272: $defArr =& $defHandler->getObjects();
273:
274: $dataHandler =& xoops_getmodulehandler('data', 'profile');
275: $dataObj =& $dataHandler->get($uid);
276:
277: if(! $dataObj){
278: $dataObj = $dataHandler->create();
279: }
280:
281: $dataObj->set("uid", $uid);
282:
283: foreach(array_keys($defArr) as $key){
284: $dataObj->set($defArr[$key]->getShow('field_name'), $root->mContext->mRequest->getRequest($defArr[$key]->getShow('field_name')));
285: }
286:
287: if($dataHandler->insert($dataObj)){
288: return true;
289: }
290: else{
291: return false;
292: }
293: }
294: }
295:
296:
297: ?>
298: