XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
group.php
1<?php
13
14
15if (!defined('XOOPS_ROOT_PATH')) {
16 exit();
17}
18
24class XoopsGroup extends XoopsObject
25{
26
27 public function __construct()
28 {
29 static $initVars;
30 if (isset($initVars)) {
31 $this->vars = $initVars;
32 return;
33 }
34 parent::__construct();
35 $this->initVar('groupid', XOBJ_DTYPE_INT, null, false);
36 $this->initVar('name', XOBJ_DTYPE_TXTBOX, null, true, 100);
37 $this->initVar('description', XOBJ_DTYPE_TXTAREA, null, false);
38 $this->initVar('group_type', XOBJ_DTYPE_OTHER, null, false);
39 $initVars = $this->vars;
40 }
41 public function XoopsGroup()
42 {
43 return self::__construct();
44 }
45}
46
47
59{
60
68 public function &create($isNew = true)
69 {
70 $group =new XoopsGroup();
71 if ($isNew) {
72 $group->setNew();
73 }
74
75 $group->setVar('group_type', 'User');
76
77 return $group;
78 }
79
86 public function &get($id)
87 {
88 $ret = false;
89 if ((int)$id > 0) {
90 $db = &$this->db;
91 $sql = 'SELECT * FROM '.$db->prefix('groups').' WHERE groupid='.$id;
92 if ($result = $db->query($sql)) {
93 $numrows = $db->getRowsNum($result);
94 if (1 == $numrows) {
95 $group = new XoopsGroup();
96 $group->assignVars($db->fetchArray($result));
97 $ret =& $group;
98 }
99 }
100 }
101 return $ret;
102 }
103
110 public function insert(&$group)
111 {
112 $name = null;
113 $description = null;
114 $group_type = null;
115 $groupid = null;
116 if ('xoopsgroup' != strtolower(get_class($group))) {
117 return false;
118 }
119 if (!$group->isDirty()) {
120 return true;
121 }
122 if (!$group->cleanVars()) {
123 return false;
124 }
125 foreach ($group->cleanVars as $k => $v) {
126 ${$k} = $v;
127 }
128 $db = &$this->db;
129 if ($group->isNew()) {
130 $groupid = $db->genId('group_groupid_seq');
131 $sql = sprintf('INSERT INTO %s (groupid, name, description, group_type) VALUES (%u, %s, %s, %s)', $db->prefix('groups'), $groupid, $db->quoteString($name), $db->quoteString($description), $db->quoteString($group_type));
132 } else {
133 $sql = sprintf('UPDATE %s SET name = %s, description = %s, group_type = %s WHERE groupid = %u', $db->prefix('groups'), $db->quoteString($name), $db->quoteString($description), $db->quoteString($group_type), $groupid);
134 }
135 if (!$result = $db->query($sql)) {
136 return false;
137 }
138 if (empty($groupid)) {
139 $groupid = $db->getInsertId();
140 }
141 $group->assignVar('groupid', $groupid);
142 return true;
143 }
144
151 public function delete(&$group)
152 {
153 if ('xoopsgroup' != strtolower(get_class($group))) {
154 return false;
155 }
156 $sql = sprintf('DELETE FROM %s WHERE groupid = %u', $this->db->prefix('groups'), $group->getVar('groupid'));
157 if (!$result = $this->db->query($sql)) {
158 return false;
159 }
160 return true;
161 }
162
170 public function &getObjects($criteria = null, $id_as_key = false)
171 {
172 $ret = [];
173 $limit = $start = 0;
174 $db = &$this->db;
175 $sql = 'SELECT * FROM '.$db->prefix('groups');
176 if (isset($criteria) && $criteria instanceof \criteriaelement) {
177 $sql .= ' '.$criteria->renderWhere();
178 $limit = $criteria->getLimit();
179 $start = $criteria->getStart();
180 }
181 $result = $db->query($sql, $limit, $start);
182 if (!$result) {
183 return $ret;
184 }
185 while ($myrow = $db->fetchArray($result)) {
186 $group =new XoopsGroup();
187 $group->assignVars($myrow);
188 if (!$id_as_key) {
189 $ret[] =& $group;
190 } else {
191 $ret[$myrow['groupid']] =& $group;
192 }
193 unset($group);
194 }
195 return $ret;
196 }
197}
198
207{
211 public function __construct()
212 {
213 //parent::__construct();
214
215 $this->initVar('linkid', XOBJ_DTYPE_INT, null, false);
216 $this->initVar('groupid', XOBJ_DTYPE_INT, null, false);
217 $this->initVar('uid', XOBJ_DTYPE_INT, null, false);
218 }
219}
220
232{
233
240 public function &create($isNew = true)
241 {
242 $mship =new XoopsMembership();
243 if ($isNew) {
244 $mship->setNew();
245 }
246 return $mship;
247 }
248
255 public function &get($id)
256 {
257 $ret = false;
258 if ((int)$id > 0) {
259 $db = &$this->db;
260 $sql = 'SELECT * FROM '.$db->prefix('groups_users_link').' WHERE linkid='.$id;
261 if ($result = $db->query($sql)) {
262 $numrows = $db->getRowsNum($result);
263 if (1 == $numrows) {
264 $mship =new XoopsMembership();
265 $mship->assignVars($db->fetchArray($result));
266 $ret =& $mship;
267 }
268 }
269 }
270 return $ret;
271 }
272
279 public function insert(&$mship)
280 {
281 $groupid = null;
282 $uid = null;
283 $linkid = null;
284 if ('xoopsmembership' != strtolower(get_class($mship))) {
285 return false;
286 }
287 if (!$mship->isDirty()) {
288 return true;
289 }
290 if (!$mship->cleanVars()) {
291 return false;
292 }
293 foreach ($mship->cleanVars as $k => $v) {
294 ${$k} = $v;
295 }
296 $db = &$this->db;
297 if ($mship->isNew()) {
298 $linkid = $db->genId('groups_users_link_linkid_seq');
299 $sql = sprintf('INSERT INTO %s (linkid, groupid, uid) VALUES (%u, %u, %u)', $db->prefix('groups_users_link'), $linkid, $groupid, $uid);
300 } else {
301 $sql = sprintf('UPDATE %s SET groupid = %u, uid = %u WHERE linkid = %u', $db->prefix('groups_users_link'), $groupid, $uid, $linkid);
302 }
303 if (!$result = $db->query($sql)) {
304 return false;
305 }
306 if (empty($linkid)) {
307 $linkid = $this->db->getInsertId();
308 }
309 $mship->assignVar('linkid', $linkid);
310 return true;
311 }
312
319 public function delete(&$mship)
320 {
321 $groupm = null;
322 if ('xoopsmembership' != strtolower(get_class($mship))) {
323 return false;
324 }
325 $sql = sprintf('DELETE FROM %s WHERE linkid = %u', $this->db->prefix('groups_users_link'), $groupm->getVar('linkid'));
326 if (!$result = $this->db->query($sql)) {
327 return false;
328 }
329 return true;
330 }
331
339 public function &getObjects($criteria = null, $id_as_key = false)
340 {
341 $ret = [];
342 $limit = $start = 0;
343 $db = &$this->db;
344 $sql = 'SELECT * FROM '.$db->prefix('groups_users_link');
345 if (isset($criteria) && $criteria instanceof \criteriaelement) {
346 $sql .= ' '.$criteria->renderWhere();
347 $limit = $criteria->getLimit();
348 $start = $criteria->getStart();
349 }
350 $result = $db->query($sql, $limit, $start);
351 if (!$result) {
352 return $ret;
353 }
354 while ($myrow = $db->fetchArray($result)) {
355 $mship = new XoopsMembership();
356 $mship->assignVars($myrow);
357 if (!$id_as_key) {
358 $ret[] =& $mship;
359 } else {
360 $ret[$myrow['linkid']] =& $mship;
361 }
362 unset($mship);
363 }
364 return $ret;
365 }
366
373 public function getCount($criteria = null)
374 {
375 $db = &$this->db;
376 $sql = 'SELECT COUNT(*) FROM '.$db->prefix('groups_users_link');
377 if (isset($criteria) && $criteria instanceof \criteriaelement) {
378 $sql .= ' '.$criteria->renderWhere();
379 }
380 $result = $db->query($sql);
381 if (!$result) {
382 return 0;
383 }
384 [$count] = $db->fetchRow($result);
385 return $count;
386 }
387
394 public function deleteAll($criteria = null)
395 {
396 $sql = 'DELETE FROM '.$this->db->prefix('groups_users_link');
397 if (isset($criteria) && $criteria instanceof \criteriaelement) {
398 $sql .= ' '.$criteria->renderWhere();
399 }
400 if (!$result = $this->db->query($sql)) {
401 return false;
402 }
403 return true;
404 }
405
412 public function &getGroupsByUser($uid)
413 {
414 $ret = [];
415 $db = &$this->db;
416 $sql = 'SELECT groupid FROM '.$db->prefix('groups_users_link').' WHERE uid='.(int)$uid;
417 $result = $db->query($sql);
418 if (!$result) {
419 return $ret;
420 }
421 while ([$groupid] = $db->fetchRow($result)) {
422 $ret[] = $groupid;
423 }
424 return $ret;
425 }
426
435 public function &getUsersByGroup($groupid, $limit=0, $start=0)
436 {
437 $ret = [];
438 $db = &$this->db;
439 $sql = 'SELECT uid FROM ' . $db->prefix('groups_users_link') . ' WHERE groupid='.(int)$groupid;
440
441 $result = $db->query($sql, $limit, $start);
442 if (!$result) {
443 return $ret;
444 }
445 while ([$uid] = $db->fetchRow($result)) {
446 $ret[] = $uid;
447 }
448 return $ret;
449 }
450
458 public function &getUsersByNoGroup($groupid, $limit=0, $start=0)
459 {
460 $ret = [];
461
462 $groupid = (int)$groupid;
463 $db = &$this->db;
464 $usersTable = $db->prefix('users');
465 $linkTable = $db->prefix('groups_users_link');
466
467 $sql = "SELECT u.uid FROM {$usersTable} u LEFT JOIN {$linkTable} g ON u.uid=g.uid," .
468 "{$usersTable} u2 LEFT JOIN {$linkTable} g2 ON u2.uid=g2.uid AND g2.groupid={$groupid} " .
469 "WHERE (g.groupid != {$groupid} OR g.groupid IS NULL) " .
470 "AND (g2.groupid = {$groupid} OR g2.groupid IS NULL) " . 'AND u.uid = u2.uid AND g2.uid IS NULL GROUP BY u.uid';
471
472 $result = $db->query($sql, $limit, $start);
473 if (!$result) {
474 return $ret;
475 }
476 while ([$uid] = $db->fetchRow($result)) {
477 $ret[] = $uid;
478 }
479 return $ret;
480 }
481}
& getObjects($criteria=null, $id_as_key=false)
Definition group.php:170
insert(&$group)
Definition group.php:110
& create($isNew=true)
Definition group.php:68
__construct()
Definition group.php:27
& getObjects($criteria=null, $id_as_key=false)
Definition group.php:339
& getGroupsByUser($uid)
Definition group.php:412
deleteAll($criteria=null)
Definition group.php:394
& getUsersByGroup($groupid, $limit=0, $start=0)
Definition group.php:435
getCount($criteria=null)
Definition group.php:373
& getUsersByNoGroup($groupid, $limit=0, $start=0)
Definition group.php:458
& create($isNew=true)
Definition group.php:240
initVar($key, $data_type, $value=null, $required=false, $maxlength=null, $options='')
Definition object.php:206