public function getUgroups() { if ($this->ugroups === null) { $result = ugroup_db_get_existing_ugroups($this->group->getId(), array($GLOBALS['UGROUP_ANONYMOUS'], $GLOBALS['UGROUP_REGISTERED'], $GLOBALS['UGROUP_PROJECT_MEMBERS'], $GLOBALS['UGROUP_PROJECT_ADMIN'])); while ($row = db_fetch_array($result)) { $this->ugroups[$row['ugroup_id']] = util_translate_name_ugroup($row['name']); } } return $this->ugroups; }
/** * Display the value function form * * @param field_id: the field id to edit * @param value_function: the value function to bind to * @param or_label: display an additionnal label to display "Or ..." * * @return void */ function displayValueFunctionForm($field_id, $value_function, $or_label = "") { $hp = Codendi_HTMLPurifier::instance(); global $Language; if ($or_label) { echo '<h3>' . $hp->purify($or_label, CODENDI_PURIFIER_CONVERT_HTML) . ' ' . $Language->getText('tracker_include_type', 'bind_to_list') . ' '; } else { echo '<h3>' . $Language->getText('tracker_include_type', 'bind_to_list') . ' '; } echo help_button('TrackerAdministration.html#TrackerBindingFieldToValueList') . '</h3>'; echo ' <FORM ACTION="" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="func" VALUE="update_binding"> <INPUT TYPE="HIDDEN" NAME="field_id" VALUE="' . (int) $field_id . '"> <INPUT TYPE="HIDDEN" NAME="group_id" VALUE="' . (int) $this->Group->getID() . '"> <INPUT TYPE="HIDDEN" NAME="atid" VALUE="' . (int) $this->getID() . '"> ' . $Language->getText('tracker_include_type', 'bind_to') . ': <select multiple name="value_function[]"> <option value="">' . $Language->getText('global', 'none') . '</option>'; $selected = ""; if ($value_function && in_array("artifact_submitters", $value_function)) { $selected = " selected"; } echo '<option value="artifact_submitters"' . $selected . '>' . $Language->getText('tracker_include_type', 'submitters') . '</option>'; $selected = ""; $ugroup_res = ugroup_db_get_ugroup($GLOBALS['UGROUP_PROJECT_MEMBERS']); $name = util_translate_name_ugroup(db_result($ugroup_res, 0, 'name')); if ($value_function && in_array("group_members", $value_function)) { $selected = " selected"; } echo '<option value="group_members"' . $selected . '>' . $hp->purify($name, CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; $selected = ""; $ugroup_res = ugroup_db_get_ugroup($GLOBALS['UGROUP_PROJECT_ADMIN']); $name = util_translate_name_ugroup(db_result($ugroup_res, 0, 'name')); if ($value_function && in_array("group_admins", $value_function)) { $selected = " selected"; } echo '<option value="group_admins"' . $selected . '>' . $hp->purify($name, CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; $selected = ""; $ugroup_res = ugroup_db_get_ugroup($GLOBALS['UGROUP_TRACKER_ADMIN']); $name = util_translate_name_ugroup(db_result($ugroup_res, 0, 'name')); if ($value_function && in_array("tracker_admins", $value_function)) { $selected = " selected"; } echo '<option value="tracker_admins"' . $selected . '>' . $hp->purify($name, CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; $ugroup_res = ugroup_db_get_existing_ugroups(100); $rows = db_numrows($ugroup_res); for ($i = 0; $i < $rows; $i++) { $ug = db_result($ugroup_res, $i, 'ugroup_id'); $selected = ""; if ($ug == $GLOBALS['UGROUP_NONE'] || $ug == $GLOBALS['UGROUP_ANONYMOUS'] || $ug == $GLOBALS['UGROUP_PROJECT_MEMBERS'] || $ug == $GLOBALS['UGROUP_PROJECT_ADMIN'] || $ug == $GLOBALS['UGROUP_TRACKER_ADMIN']) { continue; } $ugr = "ugroup_" . $ug; if ($value_function && in_array($ugr, $value_function)) { $selected = " selected"; } echo '<option value="' . $ugr . '"' . $selected . '>' . $hp->purify(util_translate_name_ugroup(db_result($ugroup_res, $i, 'name')), CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; } if ($this->Group->getID() != 100) { $ugroup_res = ugroup_db_get_existing_ugroups($this->Group->getID()); $rows = db_numrows($ugroup_res); for ($i = 0; $i < $rows; $i++) { $selected = ""; $ug = db_result($ugroup_res, $i, 'ugroup_id'); $ugr = "ugroup_" . $ug; if ($value_function && in_array($ugr, $value_function)) { $selected = " selected"; } echo '<option value="' . $ugr . '"' . $selected . '>' . $hp->purify(util_translate_name_ugroup(db_result($ugroup_res, $i, 'name')), CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; } } echo ' </select> <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="' . $Language->getText('tracker_include_type', 'bind') . '"> </FORM>'; }
$vExport = new Valid_WhiteList('export', array('user_groups', 'user_groups_format')); $vExport->required(); if ($request->valid($vExport)) { $export = $request->get('export'); $col_list = array('group', 'username', 'realname'); $lbl_list = array('group' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_group'), 'username' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_username', array($GLOBALS['sys_name'])), 'realname' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_realname')); $um = UserManager::instance(); switch ($export) { case 'user_groups': $sep = get_csv_separator(); $eol = "\n"; $name = 'export_user_groups_' . $project->getUnixName() . '.csv'; header('Content-Disposition: filename=' . $name); header('Content-Type: text/csv'); echo build_csv_header($col_list, $lbl_list) . $eol; $ugs = ugroup_db_get_existing_ugroups($group_id, array($GLOBALS['UGROUP_PROJECT_MEMBERS'], $GLOBALS['UGROUP_PROJECT_ADMIN'])); while ($ugrp = db_fetch_array($ugs)) { if ($ugrp['ugroup_id'] <= 100) { $sqlUsers = ugroup_db_get_dynamic_members($ugrp['ugroup_id'], false, $group_id); } else { $sqlUsers = ugroup_db_get_members($ugrp['ugroup_id']); } $users = db_query($sqlUsers); while ($user = db_fetch_array($users)) { $r = array('group' => util_translate_name_ugroup($ugrp['name']), 'username' => $user['user_name'], 'realname' => $um->getUserById($user['user_id'])->getRealname()); echo build_csv_record($col_list, $r) . $eol; } } break; case 'user_groups_format': echo '<h3>' . $Language->getText('project_export_user_groups', 'exp_format') . '</h3>';
/** * Get the list of source ugroups by project * * @param Integer $sourceProject Id of the current soucrce project * @param ProjectUGroup $currentSource Currently bound ugroup * * @return Array */ private function getUgroupList($sourceProject, ProjectUGroup $currentSource = null) { $ugroupList = array(); $selected = false; $ugroups = ugroup_db_get_existing_ugroups($sourceProject); while ($ugroup = db_fetch_array($ugroups)) { $userGroup = new ProjectUGroup(array('ugroup_id' => $ugroup['ugroup_id'])); if (!$userGroup->isBound()) { if ($currentSource && $currentSource->getId() == $ugroup['ugroup_id']) { $selected = true; } $ugroupList[] = array('ugroup_id' => $ugroup['ugroup_id'], 'name' => $ugroup['name'], 'selected' => $selected); } } return $ugroupList; }
/** * Validate ugroup list param used for tracker reminder. * @TODO write less, write better * * @param HTTPRequest $request HTTP request * * @return Array */ public function validateReminderUgroups(HTTPRequest $request) { $groupId = $this->getTracker()->getGroupId(); $ugs = ugroup_db_get_existing_ugroups($groupId, array($GLOBALS['UGROUP_PROJECT_MEMBERS'], $GLOBALS['UGROUP_PROJECT_ADMIN'])); $ugroupIds = array(); while ($row = db_fetch_array($ugs)) { $ugroupIds[] = intval($row['ugroup_id']); } $validUgroupIds = array(); $selectedUgroups = $request->get('reminder_ugroup'); if (!empty($selectedUgroups)) { foreach ($selectedUgroups as $ugroup) { if (in_array($ugroup, $ugroupIds)) { $validUgroupIds[] = $ugroup; } else { $errorMessage = $GLOBALS['Language']->getText('project_admin_utils', 'tracker_date_reminder_invalid_ugroup', array($ugroup)); throw new Tracker_DateReminderException($errorMessage); } } if (!empty($validUgroupIds)) { return $validUgroupIds; } } else { $errorMessage = $GLOBALS['Language']->getText('project_admin_utils', 'tracker_date_reminder_empty_ugroup_param'); throw new Tracker_DateReminderException($errorMessage); } }
} else { echo $Language->getText('project_admin_index', 'member_request_delegation_desc_restricted_user'); } echo '</p></td></tr>'; //Retrieve the saved ugroups for notification from DB $dar = $pm->getMembershipRequestNotificationUGroup($group_id); if ($dar && !$dar->isError() && $dar->rowCount() > 0) { $selectedUgroup = array(); foreach ($dar as $row) { $selectedUgroup[] = $row['ugroup_id']; } } else { $selectedUgroup = array($GLOBALS['UGROUP_PROJECT_ADMIN']); } $ugroupList = array(array('value' => $GLOBALS['UGROUP_PROJECT_ADMIN'], 'text' => util_translate_name_ugroup('project_admin'))); $res = ugroup_db_get_existing_ugroups($group_id); while ($row = db_fetch_array($res)) { $ugroupList[] = array('value' => $row['ugroup_id'], 'text' => $row['name']); } echo '<tr><td colspan="2" style="text-align: center;">'; echo '<form method="post" action="permission_request.php">'; echo '<input type="hidden" name="func" value="member_req_notif_group" />'; echo '<input type="hidden" name="group_id" value="' . $group_id . '">'; echo html_build_multiple_select_box_from_array($ugroupList, "ugroups[]", $selectedUgroup, 8, false, '', false, '', false, '', false); echo '<br />'; echo '<input type="submit" name="submit" value="' . $Language->getText('global', 'btn_update') . '" />'; echo '</form>'; echo '</td></tr>'; echo '<tr><td colspan="2"><p>'; echo $Language->getText('project_admin_index', 'member_request_delegation_msg_desc'); echo '</p></td></tr>';
/** * Return the list of ugroup selectable to fill the notification table. * * It contains: all dynamic ugroups plus project members and admins. */ function getUgroupsAllowedForTable($groupId) { $res = ugroup_db_get_existing_ugroups($groupId, array($GLOBALS['UGROUP_PROJECT_MEMBERS'], $GLOBALS['UGROUP_PROJECT_ADMIN'])); $ugroups = array(); while ($row = db_fetch_array($res)) { $r = array(); $r['value'] = $row['ugroup_id']; $r['text'] = util_translate_name_ugroup($row['name']); $ugroups[] = $r; } return $ugroups; }
protected static function fetchSelectUsers($select_name, $field, $value_function) { $hp = Codendi_HTMLPurifier::instance(); $html = ''; $html .= '<input type="hidden" name="' . $select_name . '" value="" />'; $html .= '<select multiple="multiple" name="' . $select_name . '"> <option value="">' . $GLOBALS['Language']->getText('global', 'none') . '</option>'; $selected = ""; if (in_array("artifact_submitters", $value_function)) { $selected = 'selected="selected"'; } $html .= '<option value="artifact_submitters" ' . $selected . '>' . $GLOBALS['Language']->getText('plugin_tracker_include_type', 'submitters') . '</option>'; $selected = ""; $ugroup_res = ugroup_db_get_ugroup($GLOBALS['UGROUP_PROJECT_MEMBERS']); $name = util_translate_name_ugroup(db_result($ugroup_res, 0, 'name')); if (in_array("group_members", $value_function)) { $selected = 'selected="selected"'; } $html .= '<option value="group_members" ' . $selected . '>' . $hp->purify($name, CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; $selected = ""; $ugroup_res = ugroup_db_get_ugroup($GLOBALS['UGROUP_PROJECT_ADMIN']); $name = util_translate_name_ugroup(db_result($ugroup_res, 0, 'name')); if (in_array("group_admins", $value_function)) { $selected = 'selected="selected"'; } $html .= '<option value="group_admins" ' . $selected . '>' . $hp->purify($name, CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; $ugroup_res = ugroup_db_get_existing_ugroups(100); $rows = db_numrows($ugroup_res); for ($i = 0; $i < $rows; $i++) { $ug = db_result($ugroup_res, $i, 'ugroup_id'); $selected = ""; if ($ug == $GLOBALS['UGROUP_NONE'] || $ug == $GLOBALS['UGROUP_ANONYMOUS'] || $ug == $GLOBALS['UGROUP_PROJECT_MEMBERS'] || $ug == $GLOBALS['UGROUP_PROJECT_ADMIN'] || $ug == $GLOBALS['UGROUP_TRACKER_ADMIN']) { continue; } $ugr = "ugroup_" . $ug; if (in_array($ugr, $value_function)) { $selected = 'selected="selected"'; } $html .= '<option value="' . $ugr . '" ' . $selected . '>' . $hp->purify(util_translate_name_ugroup(db_result($ugroup_res, $i, 'name')), CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; } $group_id = $field->getTracker()->getGroupId(); if ($group_id != 100) { $ugroup_res = ugroup_db_get_existing_ugroups($group_id); $rows = db_numrows($ugroup_res); for ($i = 0; $i < $rows; $i++) { $selected = ""; $ug = db_result($ugroup_res, $i, 'ugroup_id'); $ugr = "ugroup_" . $ug; if (in_array($ugr, $value_function)) { $selected = 'selected="selected"'; } $html .= '<option value="' . $ugr . '" ' . $selected . '>' . $hp->purify(util_translate_name_ugroup(db_result($ugroup_res, $i, 'name')), CODENDI_PURIFIER_CONVERT_HTML) . '</option>'; } } $html .= '</select>'; return $html; }