/** * Removes Group from the list stored in the session and from * the list of application-defined groups. * * @access private * @param mixed groupList List of groups (id => displayName) stored in session * @param mixed group_arg Array or string containing id of group to remove * @return TRUE if group successfully deleted * @see smdoc_group_user::deleteAll * @see smdoc_group_appext::getInstance */ function _deleteGroup(&$groupList, $group_arg) { if (is_string($group_arg)) { $group = $group_arg; $group_arg = array(); $group_arg[$group] = $group; } elseif (!is_array($group_arg)) { return FALSE; } // we don't know what this thing is, don't muck up the list. $app_defined =& smdoc_group_appext::getInstance($this->foowd); foreach ($group_arg as $id) { if (smdoc_group::checkGroup($this->foowd, $id)) { continue; } // can't reset system groups unset($groupList[$id]); if (isset($app_defined->groups[$id])) { smdoc_group_user::deleteAll($this->foowd, $id); unset($app_defined->groups[$id]); $app_defined->foowd_changed = TRUE; } } return $app_defined->foowd_changed; }
/** * Output a list of all known groups. * * Values set in template: * + grouplist - below * + addForm - Form for adding a new group * + deleteForm - Form for deleting groups * * Sample contents of $t['grouplist']: * <pre> * array ( * 'GroupId' => array ( * 'group_name' => 'GroupName', * 'group_count' => 8, * 'group_delete' => checkbox for deletion * ) * ) * </pre> * * @static * @global array Specifies table information for user persistance. * @param smdoc $foowd Reference to the foowd environment object. * @param string className The name of the class. */ function class_list(&$foowd, $className) { $foowd->track('smdoc_group->class_list'); include_once INPUT_DIR . 'input.textbox.php'; include_once INPUT_DIR . 'input.form.php'; include_once INPUT_DIR . 'input.checkbox.php'; global $GROUP_USER_SOURCE; $groupList = array(); /* * Create form for adding new group */ $addForm = new input_form('addForm', NULL, SQ_POST, _("Add Group")); $newGroup = new input_textbox('newGroup', REGEX_TITLE, NULL, 'New Group', FALSE); if ($addForm->submitted() && !empty($newGroup->value) && $newGroup->wasValid) { if ($foowd->groups->addGroup($newGroup->value)) { $newGroup->value = ''; } } $addForm->addObject($newGroup); /* * Get list of groups that includes only those * that users can be assigned to */ $groups = $foowd->getUserGroups(FALSE); /* * Create form for deleting groups */ $deleteForm = new input_form('deleteForm', NULL, SQ_POST, _("Delete Groups")); if (!empty($groups)) { foreach ($groups as $id => $name) { $elem = array(); $elem['group_name'] = $name; $elem['group_count'] = $foowd->database->count($GROUP_USER_SOURCE, array('title' => $id)); // Create checkbox for delete form // only add checkboxes for groups that can be deleted if (!smdoc_group::checkGroup($foowd, $id)) { $deleteBox = new input_checkbox($id, $deleteForm, FALSE, 'Delete'); if ($deleteForm->submitted() && $deleteBox->checked) { $foowd->groups->deleteGroup($id); unset($elem); } else { // Add box to form and array $deleteForm->addObject($deleteBox); $elem['group_delete'] =& $deleteForm->objects[$id]; } } else { $elem['group_delete'] = NULL; } // Add array to group list if (isset($elem)) { $groupList[$id] = $elem; } } } $foowd->template->assign_by_ref('addForm', $addForm); $foowd->template->assign_by_ref('deleteForm', $deleteForm); $foowd->template->assign('grouplist', $groupList); $foowd->track(); }