public static function userForm(PHPWS_User $user, $message = NULL) { javascript('jquery'); javascriptMod('users', 'generate'); $form = new PHPWS_Form('edit-user'); if ($user->getId() > 0) { $form->addHidden('user_id', $user->getId()); $form->addSubmit('go', dgettext('users', 'Update User')); } else { $form->addSubmit('go', dgettext('users', 'Add User')); } $form->addHidden('action', 'admin'); $form->addHidden('command', 'postUser'); $form->addHidden('module', 'users'); $form->addCheckbox('notify_user', 1); $form->setLabel('notify_user', dgettext('user', 'Notify user of account creation')); if (Current_User::allow('users', 'settings')) { $db = new PHPWS_DB('users_auth_scripts'); $db->setIndexBy('id'); $db->addColumn('id'); $db->addColumn('display_name'); $result = $db->select('col'); if (PHPWS_Error::isError($result)) { PHPWS_Error::log($result); } else { if (!isset($result[$user->authorize])) { $message['AUTHORIZE'] = dgettext('users', 'Warning: this user\'s authorization script is broken. Choose another and update.'); } $form->addSelect('authorize', $result); $form->setMatch('authorize', $user->authorize); $form->setLabel('authorize', dgettext('users', 'Authorization')); } } if (!$user->id || $user->canChangePassword()) { $form->addText('username', $user->getUsername()); $form->setRequired('username'); $form->setLabel('username', dgettext('users', 'Username')); $form->addPassword('password1'); $form->addPassword('password2'); $form->setLabel('password1', dgettext('users', 'Password')); $form->addButton('create_pw', dgettext('users', 'Generate password')); } else { $form->addTplTag('USERNAME', $user->getUsername()); $form->addTplTag('USERNAME_LABEL', '<strong>' . dgettext('users', 'Username') . '</strong>'); } $form->addText('display_name', $user->display_name); $form->addText('email', $user->getEmail()); $form->setSize('email', 30); $form->setRequired('email'); $form->setLabel('email', dgettext('users', 'Email Address')); $form->setLabel('display_name', dgettext('users', 'Display name')); if (isset($tpl)) { $form->mergeTemplate($tpl); } $template = $form->getTemplate(); $vars['action'] = 'admin'; $vars['user_id'] = $user->id; if ($user->id) { $vars['command'] = 'setUserPermissions'; $links[] = PHPWS_Text::secureLink(\Icon::show('permission') . ' ' . dgettext('users', 'Permissions'), 'users', $vars, null, dgettext('users', 'Permissions'), 'btn btn-default'); } if (isset($links)) { $template['LINKS'] = implode(' | ', $links); } if (isset($message)) { foreach ($message as $tag => $error) { $template[strtoupper($tag) . '_ERROR'] = $error; } } if (!$user->id) { $template['JOIN_GROUPS'] = self::getJoinGroups(); } else { $group_ids = $user->getGroups(); if ($group_ids) { $db = Database::newDB(); $t1 = $db->addTable('users_groups'); $f1 = $t1->addField('name'); $c1 = $t1->getFieldConditional('id', $group_ids, 'in'); $c2 = $t1->getFieldConditional('user_id', 0); $db->stackConditionals($c1, $c2); while ($group = $db->selectColumn()) { $template['members'][] = array('NAME' => $group); } } if (!isset($template['members'])) { $template['EMPTY_GROUP'] = dgettext('user', 'User not a member of any group'); } } return PHPWS_Template::process($template, 'users', 'forms/userForm.tpl'); }
/** * Although called via Current_User, this functions gives * a group with edit permissions the right to edit this item. */ public static function giveItemPermission($user_id, Key $key) { $user = new PHPWS_User($user_id); $groups = $user->getGroups(); if (empty($groups) || !is_array($groups)) { return; } if (empty($key->_edit_groups)) { $key->_edit_groups = array(); } PHPWS_Core::initModClass('users', 'Group.php'); foreach ($groups as $group_id) { $group_obj = new PHPWS_Group($group_id, false); if (!in_array($group_id, $key->_edit_groups) && $group_obj->allow($key->module, $key->edit_permission)) { $key->_edit_groups[] = $group_id; } } return $key->savePermissions(); }