1: <?php
2: /**
3: * This file contains the frontend group collection and item class.
4: *
5: * @package Core
6: * @subpackage GenericDB_Model
7: * @version SVN Revision $Rev:$
8: *
9: * @author Murat Purc <murat@purc.de>
10: * @copyright four for business AG <www.4fb.de>
11: * @license http://www.contenido.org/license/LIZENZ.txt
12: * @link http://www.4fb.de
13: * @link http://www.contenido.org
14: */
15:
16: defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
17:
18: /**
19: * Frontend group collection
20: *
21: * @package Core
22: * @subpackage GenericDB_Model
23: */
24: class cApiFrontendGroupCollection extends ItemCollection {
25:
26: /**
27: * Constructor Function
28: */
29: public function __construct() {
30: global $cfg;
31: parent::__construct($cfg['tab']['frontendgroups'], 'idfrontendgroup');
32: $this->_setItemClass('cApiFrontendGroup');
33:
34: // set the join partners so that joins can be used via link() method
35: $this->_setJoinPartner('cApiClientCollection');
36: }
37:
38: /**
39: * Creates a new group
40: *
41: * @param string $groupname Specifies the groupname
42: * @return cApiFrontendGroup
43: */
44: public function create($groupname) {
45: global $client;
46:
47: $group = new cApiFrontendGroup();
48:
49: // _arrInFilters = array('urlencode', 'htmlspecialchars', 'addslashes');
50:
51: $mangledGroupName = $group->_inFilter($groupname);
52: $this->select("idclient = " . (int) $client . " AND groupname = '" . $mangledGroupName . "'");
53:
54: if (($obj = $this->next()) !== false) {
55: $groupname = $groupname . md5(rand());
56: }
57:
58: $item = parent::createNewItem();
59: $item->set('idclient', $client);
60: $item->set('groupname', $groupname);
61: $item->store();
62:
63: return $item;
64: }
65:
66: /**
67: * Overridden delete method to remove groups from groupmember table
68: * before deleting group
69: *
70: * @param int $itemID specifies the frontend user group
71: * @todo should return return value of overloaded method
72: */
73: public function delete($itemID) {
74: $associations = new cApiFrontendGroupMemberCollection();
75: $associations->select('idfrontendgroup = ' . (int) $itemID);
76:
77: while (($item = $associations->next()) !== false) {
78: $associations->delete($item->get('idfrontendgroupmember'));
79: }
80: parent::delete($itemID);
81: }
82: }
83:
84: /**
85: * Frontend group item
86: *
87: * @package Core
88: * @subpackage GenericDB_Model
89: */
90: class cApiFrontendGroup extends Item {
91:
92: /**
93: * Constructor Function
94: *
95: * @param mixed $mId Specifies the ID of item to load
96: */
97: public function __construct($mId = false) {
98: global $cfg;
99: parent::__construct($cfg['tab']['frontendgroups'], 'idfrontendgroup');
100: if ($mId !== false) {
101: $this->loadByPrimaryKey($mId);
102: }
103: }
104: }
105: