From b2b24bb76add8b094bf98018e1e3fabefff8d5e9 Mon Sep 17 00:00:00 2001 From: Robert Sesek Date: Thu, 20 Jul 2006 20:54:05 +0000 Subject: [PATCH] r907: Adding and implementing the UsergroupAPI --- admin/usergroup.php | 82 ++++++++++--------------- includes/api_usergroup.php | 120 +++++++++++++++++++++++++++++++++++++ 2 files changed, 153 insertions(+), 49 deletions(-) create mode 100644 includes/api_usergroup.php diff --git a/admin/usergroup.php b/admin/usergroup.php index 958ffa0..ebfb924 100755 --- a/admin/usergroup.php +++ b/admin/usergroup.php @@ -20,7 +20,7 @@ \*=====================================================================*/ require_once('./global.php'); -require_once('./includes/functions_datastore.php'); +require_once('./includes/api_usergroup.php'); if (!can_perform('canadmingroups')) { @@ -79,17 +79,10 @@ if (empty($_REQUEST['do'])) if ($_REQUEST['do'] == 'kill') { - $bugsys->input_clean('usergroupid', TYPE_UINT); - if ($bugsys->in['usergroupid'] < 7) - { - $admin->error($lang->string('You can\'t delete a default usergroup.')); - } - - $db->query("DELETE FROM " . TABLE_PREFIX . "usergroup WHERE usergroupid = " . $bugsys->in['usergroupid']); - $db->query("UPDATE " . TABLE_PREFIX . "user SET usergroupid = 2 WHERE usergroupid = " . $bugsys->in['usergroupid']); - - build_usergroups(); - build_assignedto(); + $usergroup = new UsergroupAPI($bugsys); + $usergroup->set('usergroupid', $bugsys->in['usergroupid']); + $usergroup->set_condition(); + $usergroup->delete(); $admin->redirect('usergroup.php?do=modify'); } @@ -119,13 +112,12 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit') if ($edit) { - $usergroup = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "usergroup WHERE usergroupid = " . $bugsys->in['usergroupid']); - if (!is_array($usergroup)) - { - $admin->error($lang->getlex('error_invalid_id')); - } + $usergroup = new UsergroupAPI($bugsys); + $usergroup->set('usergroupid', $bugsys->in['usergroupid']); + $usergroup->set_condition(); + $usergroup->fetch(); - $admin->form_hidden_field('usergroupid', $usergroup['usergroupid']); + $admin->form_hidden_field('usergroupid', $usergroup->objdata['usergroupid']); } else { @@ -135,8 +127,8 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit') // Details $admin->table_start(); $admin->table_head($lang->string('Usergroup Details'), 2, 'usergroups'); - $admin->row_input($lang->string('Usergroup Title'), 'title', $bugsys->sanitize($usergroup['title'])); - $admin->row_input($lang->string('Display Title
This is the title that others will be able to see when comments are posted.
'), 'displaytitle', $bugsys->sanitize($usergroup['displaytitle'])); + $admin->row_input($lang->string('Usergroup Title'), 'title', $bugsys->sanitize($usergroup->objdata['title'])); + $admin->row_input($lang->string('Display Title
This is the title that others will be able to see when comments are posted.
'), 'displaytitle', $bugsys->sanitize($usergroup->objdata['displaytitle'])); $admin->table_end(); // Permission @@ -149,7 +141,7 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit') $admin->row_span($group, 'thead', 'center'); foreach ($settings AS $setting => $name) { - $admin->row_yesno($name, "perm[$setting]", ($usergroup['permissions'] & $_PERMISSION["$setting"])); + $admin->row_yesno($name, "perm[$setting]", ($usergroup->objdata['permissions'] & $_PERMISSION["$setting"])); } } @@ -161,7 +153,7 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit') if ($edit) { - $perms = $db->query("SELECT fieldid, mask FROM " . TABLE_PREFIX . "bugfieldpermission WHERE usergroupid = $usergroup[usergroupid]"); + $perms = $db->query("SELECT fieldid, mask FROM " . TABLE_PREFIX . "bugfieldpermission WHERE usergroupid = " . $usergroup->objdata['usergroupid']); while ($perm = $db->fetch_array($perms)) { $permissions["$perm[fieldid]"] = $perm['mask']; @@ -194,28 +186,22 @@ if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit') if ($_POST['do'] == 'insert') { - foreach ($_POST['perm'] AS $permtitle => $binaryswitch) + $bugsys->input_clean('perm', TYPE_UINT); + foreach ($bugsys->in['perm'] AS $permtitle => $binaryswitch) { $permissionvalue += $_PERMISSION["$permtitle"] * $binaryswitch; } - $db->query(" - INSERT INTO " . TABLE_PREFIX . "usergroup - (title, displaytitle, permissions) - VALUES - ('" . $bugsys->in['title'] . "', '" . $bugsys->in['displaytitle'] . "', - $permissionvalue - )" - ); - - $ugroupid = $db->insert_id(); - - build_usergroups(); + $usergroup = new UsergroupAPI($bugsys); + $usergroup->set('title', $bugsys->in['title']); + $usergroup->set('displaytitle', $bugsys->in['displaytitle']); + $usergroup->set('permissions', $permissionvalue); + $usergroup->insert(); $bugsys->input_clean('custom', TYPE_UINT); foreach ($bugsys->in['custom'] AS $fieldid => $mask) { - $values[] = "$ugroupid, " . $bugsys->clean($fieldid, TYPE_UINT) . ", " . $mask; + $values[] = $usergroup->insertid . ", " . $bugsys->clean($fieldid, TYPE_UINT) . ", " . $mask; } if (is_array($values)) @@ -241,26 +227,24 @@ if ($_POST['do'] == 'update') 'usergroupid' => TYPE_UINT, 'custom' => TYPE_UINT )); - foreach ($_POST['perm'] AS $permtitle => $binaryswitch) + $bugsys->input_clean('perm', TYPE_UINT); + foreach ($bugsys->in['perm'] AS $permtitle => $binaryswitch) { $permissionvalue += $_PERMISSION["$permtitle"] * $binaryswitch; } - $db->query(" - UPDATE " . TABLE_PREFIX . "usergroup - SET title = '" . $bugsys->in['title'] . "', - displaytitle = '" . $bugsys->in['displaytitle'] . "', - permissions = $permissionvalue - WHERE usergroupid = " . $bugsys->in['usergroupid'] - ); - - build_usergroups(); - build_assignedto(); + $usergroup = new UsergroupAPI($bugsys); + $usergroup->set('usergroupid', $bugsys->in['usergroupid']); + $usergroup->set_condition(); + $usergroup->set('title', $bugsys->in['title']); + $usergroup->set('displaytitle', $bugsys->in['displaytitle']); + $usergroup->set('permissions', $permissionvalue); + $usergroup->update(); - $ugroupid = $bugsys->in['usergroupid']; + $bugsys->input_clean('custom', TYPE_UINT); foreach ($bugsys->in['custom'] AS $fieldid => $mask) { - $values[] = "$ugroupid, " . $bugsys->clean($fieldid, TYPE_UINT) . ", " . $mask; + $values[] = $usergroup->values['usergroupid'] . ", " . $bugsys->clean($fieldid, TYPE_UINT) . ", " . $mask; } if (is_array($values)) diff --git a/includes/api_usergroup.php b/includes/api_usergroup.php new file mode 100644 index 0000000..913269a --- /dev/null +++ b/includes/api_usergroup.php @@ -0,0 +1,120 @@ +load('api', null); + +require_once('./includes/functions_datastore.php'); + +/** +* API: Usergroup +* +* @author Iris Studios, Inc. +* @copyright Copyright ©2002 - [#]year[#], Iris Studios, Inc. +* @version $Revision$ +* @package Bugdar +* +*/ +class UsergroupAPI extends API +{ + /** + * Fields + * @var array + * @access private + */ + var $fields = array( + 'usergroupid' => array(TYPE_UINT, REQ_AUTO, 'verify_nozero'), + 'title' => array(TYPE_STR, REQ_YES, 'verify_noempty'), + 'displaytitle' => array(TYPE_STR, REQ_NO), + 'permissions' => array(TYPE_UINT, REQ_NO) + ); + + /** + * Database table + * @var string + * @access private + */ + var $table = 'usergroup'; + + /** + * Table prefix + * @var string + * @access private + */ + var $prefix = TABLE_PREFIX; + + // ################################################################### + /** + * Post-insert + * + * @access private + */ + function post_insert() + { + build_usergroups(); + } + + // ################################################################### + /** + * Post-update + * + * @access private + */ + function post_update() + { + build_usergroups(); + build_assignedto(); + } + + // ################################################################### + /** + * Pre-delete + * + * @access private + */ + function pre_delete() + { + if ($this->values['usergroupid'] < 7) + { + return $this->registry->lang->string('You can\'t delete a default usergroup.'); + } + } + + // ################################################################### + /** + * Post-delete + * + * @access private + */ + function post_delete() + { + $this->registry->db->query("UPDATE " . TABLE_PREFIX . "user SET usergroupid = 2 WHERE usergroupid = " . $this->values['usergroupid']); + build_usergroups(); + build_assignedto(); + } +} + +/*=====================================================================*\ +|| ################################################################### +|| # $HeadURL$ +|| # $Id$ +|| ################################################################### +\*=====================================================================*/ +?> \ No newline at end of file -- 2.22.5