function CallHook($hookname, $params) { global $use_cvssyncmailplugin, $G_SESSION, $HTML; $group_id = $params['group']; if ($hookname == "groupisactivecheckbox") { $group =& group_get_object($group_id); if ($group->usesPlugin('scmcvs')) { //Check if the group is active // this code creates the checkbox in the project edit public info page to activate/deactivate the plugin echo "<tr>"; echo "<td>"; echo ' <input type="CHECKBOX" name="use_cvssyncmailplugin" value="1" '; // CHECKED OR UNCHECKED? if ($group->usesPlugin($this->name)) { echo "CHECKED"; } echo "><br/>"; echo "</td>"; echo "<td>"; echo "<strong>Use " . $this->text . " Plugin</strong>"; echo "</td>"; echo "</tr>"; } } elseif ($hookname == "groupisactivecheckboxpost") { // this code actually activates/deactivates the plugin after the form was submitted in the project edit public info page $group =& group_get_object($group_id); $use_cvssyncmailplugin = getStringFromRequest('use_cvssyncmailplugin'); if ($use_cvssyncmailplugin == 1) { $group->setPluginUse($this->name); } else { $group->setPluginUse($this->name, false); } } }
function news_header($params) { global $HTML, $group_id, $news_name, $news_id, $sys_news_group, $sys_use_news; if (!$sys_use_news) { exit_disabled(); } $params['toptab'] = 'news'; $params['group'] = $group_id; /* Show horizontal links */ if ($group_id && $group_id != $sys_news_group) { site_project_header($params); } else { $HTML->header($params); } if ($group_id && $group_id != $sys_news_group) { $menu_texts = array(); $menu_links = array(); $menu_texts[] = _('Submit'); $menu_links[] = '/news/submit.php?group_id=' . $group_id; if (session_loggedin()) { $project =& group_get_object($params['group']); if ($project && is_object($project) && !$project->isError()) { $perm =& $project->getPermission(session_get_user()); if ($perm && is_object($perm) && !$perm->isError() && $perm->isAdmin()) { $menu_texts[] = _('Admin'); $menu_links[] = '/news/admin/?group_id=' . $group_id; } } } echo $HTML->subMenu($menu_texts, $menu_links); } }
function CallHook($hookname, &$params) { if ($hookname == "project_admin_plugins") { // this displays the link in the project admin options page to it's task board administration $group_id = $params['group_id']; $group = group_get_object($group_id); if ($group->usesPlugin($this->name)) { echo '<p><a href="/plugins/taskboard/admin/index.php?group_id=' . $group->getID() . '">' . _("Task Board Admin") . '</a></p>'; } } elseif ($hookname == "groupmenu") { $group_id = $params['group']; $group = group_get_object($group_id); if (!$group || !is_object($group)) { return; } if ($group->isError()) { return; } if (!$group->isProject()) { return; } if ($group->usesPlugin($this->name)) { $params['TITLES'][] = _("Task Board"); $params['DIRS'][] = '/plugins/taskboard/index.php?group_id=' . $group->getID(); if ($params['toptab'] == $this->name) { $params['selected'] = array_search($this->text, $params['TITLES']); } } } }
function docman_header($title, $pagehead, $style = 'xyz') { global $group_id, $HTML, $sys_use_docman; if (!$sys_use_docman) { exit_disabled(); } $project =& group_get_object($group_id); if (!$project || !is_object($project)) { exit_no_group(); } if (!$project->usesDocman()) { exit_error(_('Error'), _('This project has turned off the Doc Manager.')); } site_project_header(array('title' => $title, 'group' => $group_id, 'toptab' => 'docman')); $menu_text = array(); $menu_links = array(); $menu_text[] = _('Submit new documentation'); $menu_links[] = '/docman/new.php?group_id=' . $group_id; $menu_text[] = _('View Documentation'); $menu_links[] = '/docman/index.php?group_id=' . $group_id; $menu_text[] = _('Search in documents'); $menu_links[] = '/docman/search.php?group_id=' . $group_id; if (session_loggedin()) { $perm =& $project->getPermission(session_get_user()); if ($perm && is_object($perm) && !$perm->isError() && $perm->isDocEditor()) { $menu_text[] = _('Admin'); $menu_links[] = '/docman/admin/index.php?group_id=' . $group_id; } } echo $HTML->subMenu($menu_text, $menu_links); }
function activate_group($group_id) { global $feedback; $group =& group_get_object($group_id); if (!$group || !is_object($group)) { $feedback .= _('Error creating group object') . '<br />'; return false; } else { if ($group->isError()) { $feedback .= $group->getErrorMessage() . '<br />'; return false; } } $feedback .= sprintf(_('Approving Group: %1$s'), $group->getUnixName()) . '<br />'; if (!$group->approve(session_get_user())) { $feedback .= $group->getErrorMessage() . '<br />'; return false; } $hook_params = array(); $hook_params['group_id'] = $group_id; plugin_hook("group_approved", $hook_params); //plugin webcalendar //create webcal group plugin_hook('add_cal_group', $group_id); return true; }
/** * GForge SCM Library * * Copyright 2004 (c) GForge LLC * * @version $Id$ * @author Tim Perdue tim@gforge.org * @date 2005-04-16 * * This file is part of GForge. * * GForge is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * GForge is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GForge; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ function scm_header($params) { global $HTML, $sys_use_scm; if (!$sys_use_scm) { exit_disabled(); } $project =& group_get_object($params['group']); if (!$project || !is_object($project)) { exit_error('Error', 'Could Not Get Project'); } elseif ($project->isError()) { exit_error('Error', $project->getErrorMessage()); } if (!$project->usesSCM()) { exit_error('Error', _('Error - This project has turned off SCM.')); } site_project_header(array('title' => _('SCM Repository'), 'group' => $params['group'], 'toptab' => 'scm')); /* Show horizontal links */ if (session_loggedin()) { $perm =& $project->getPermission(session_get_user()); if ($perm && is_object($perm) && !$perm->isError() && $perm->isAdmin()) { echo $HTML->subMenu(array(_('SCM'), _('Admin'), _('Reporting')), array('/scm/?group_id=' . $params['group'], '/scm/admin/?group_id=' . $params['group'], '/scm/reporting/?group_id=' . $params['group'])); } } echo '<div style="width:99%">'; }
function survey_header($params) { global $group_id, $is_admin_page, $HTML, $sys_use_survey; if (!$sys_use_survey) { exit_disabled(); } $params['toptab'] = 'surveys'; $params['group'] = $group_id; if ($project =& group_get_object($group_id)) { if (!$project->usesSurvey()) { exit_error(_('Error'), _('This Group Has Turned Off Surveys.')); } site_project_header($params); if ($is_admin_page && $group_id) { echo $HTML->subMenu(array(_('Surveys'), _('Admin'), _('Add Survey'), _('Edit Survey'), _('Add Questions'), _('Edit Questions'), _('Show Results')), array('/survey/?group_id=' . $group_id, '/survey/admin/?group_id=' . $group_id, '/survey/admin/add_survey.php?group_id=' . $group_id, '/survey/admin/edit_survey.php?group_id=' . $group_id, '/survey/admin/add_question.php?group_id=' . $group_id, '/survey/admin/show_questions.php?group_id=' . $group_id, '/survey/admin/show_results.php?group_id=' . $group_id)); } else { if (session_loggedin()) { $perm =& $project->getPermission(session_get_user()); if ($perm && is_object($perm) && !$perm->isError() && $perm->isAdmin()) { echo $HTML->subMenu(array(_('Admin')), array('/survey/admin/?group_id=' . $group_id)); } } } } // end if (valid group id) }
/** * Declares itself as accepting RDF XML on /projects/... * @param unknown_type $params */ function project_rdf_metadata(&$params) { # TODO : create another resource $group_id = $params['group']; $new_prefixes = array('admssw' => 'http://purl.org/adms/sw/', 'rad' => 'http://www.w3.org/ns/radion#', 'schema' => 'http://schema.org/'); foreach ($new_prefixes as $s => $u) { if (!isset($params['prefixes'][$u])) { $params['prefixes'][$u] = $s; } } $res = $params['in_Resource']; // we could save the type doap:Project in such case, as there's an equivalence, but not sure all consumers do reasoning $types = array('doap:Project', 'admssw:SoftwareProject'); rdfutils_setPropToUri($res, 'rdf:type', $types); $tags_list = NULL; if (forge_get_config('use_project_tags')) { $group = group_get_object($group_id); $tags_list = $group->getTags(); } // connect to FusionForge internals $pm = ProjectManager::instance(); $project = $pm->getProject($group_id); $tags = array(); if ($tags_list) { $tags = split(', ', $tags_list); // reuse the same as dcterms:subject until further specialization of adms.sw keywords $res->setProp('rad:keyword', $tags); } $project_description = $project->getDescription(); if ($project_description) { // it seems that doap:description is not equivalent to dcterms:description, so repeat $res->setProp('dcterms:description', $project_description); } $res->setProp('rdfs:comment', "Generated with the doaprdf and admssw plugins of fusionforge"); rdfutils_setPropToUri($res, 'dcterms:isPartOf', util_make_url("/projects")); $admins = $project->getAdmins(); $members = $project->getUsers(); $contributors_uris = array(); foreach ($admins as $u) { $contributor_uri = util_make_url_u($u->getUnixName(), $u->getID()); $contributor_uri = rtrim($contributor_uri, '/'); $contributor_uri = $contributor_uri . '#person'; if (!in_array($contributor_uri, $contributors_uris)) { $contributors_uris[] = $contributor_uri; } } foreach ($members as $u) { $contributor_uri = util_make_url_u($u->getUnixName(), $u->getID()); $contributor_uri = rtrim($contributor_uri, '/'); $contributor_uri = $contributor_uri . '#person'; if (!in_array($contributor_uri, $contributors_uris)) { $contributors_uris[] = $contributor_uri; } } rdfutils_setPropToUri($res, 'schema:contributor', $contributors_uris); $params['out_Resources'][] = $res; }
/** * Initialize a task board */ function &taskboard_init($group_id) { $res = db_query_params('INSERT INTO plugin_taskboard(group_id) VALUES($1)', array($group_id)); if (!$res) { return false; } $Group = group_get_object($data["group_id"]); $Taskboard = new TaskBoard($Group, $data); return $Taskboard; }
/** * isGroupMember - returns if the logged in user is member of the current group * * @param int $groupId group id */ function isGroupMember($groupId) { $Group =& group_get_object($groupId); if ($Group && is_object($Group) && !$Group->isError() && session_loggedin()) { $perm =& $Group->getPermission(session_get_user()); if ($perm && is_object($perm) && $perm->isMember()) { return true; } } return false; }
function isAvailable($parameters) { if (isset($parameters[SEARCH__PARAMETER_GROUP_ID]) && $parameters[SEARCH__PARAMETER_GROUP_ID]) { $Group =& group_get_object($parameters[SEARCH__PARAMETER_GROUP_ID]); if ($Group && is_object($Group) && !$Group->isError()) { $this->Group =& $Group; return true; } } return false; }
function pm_header($params) { // XXX ogi: What to do with these? global $group_id, $is_pm_page, $words, $group_project_id, $HTML, $order, $pg, $sys_use_pm; if (!$sys_use_pm) { exit_disabled(); } //required by site_project_header $params['group'] = $group_id; $params['toptab'] = 'pm'; //only projects can use the bug tracker, and only if they have it turned on $project =& group_get_object($group_id); if (!$project || !is_object($project)) { exit_no_group(); } if (!$project->usesPm()) { exit_error(_('Error'), _('This Project Has Turned Off The Task Manager')); } site_project_header($params); $labels = array(); $links = array(); if ($group_project_id) { $labels[] = ($pg ? $pg->getName() . ': ' : '') . _('Browse tasks'); $links[] = '/pm/task.php?group_id=' . $group_id . '&group_project_id=' . $group_project_id . '&func=browse'; if (session_loggedin()) { $labels[] = _('Add task'); $links[] = '/pm/task.php?group_id=' . $group_id . '&group_project_id=' . $group_project_id . '&func=addtask'; } if ($group_project_id) { $gantt_width = 820; $gantt_height = 680; $gantt_url = "/pm/task.php?group_id={$group_id}&group_project_id={$group_project_id}&func=ganttpage"; $gantt_title = _('Gantt Chart'); $gantt_winopt = 'scrollbars=yes,resizable=yes,toolbar=no,height=' . $gantt_height . ',width=' . $gantt_width; $labels[] = $gantt_title; $links[] = $gantt_url . '" onclick="window.open(this.href, \'' . preg_replace('/\\s/', '_', $gantt_title) . '\', \'' . $gantt_winopt . '\'); return false;'; } //upload/download as CSV files $labels[] = _('Download as CSV'); $links[] = '/pm/task.php?group_id=' . $group_id . '&group_project_id=' . $group_project_id . '&func=downloadcsv'; $labels[] = _('Upload CSV'); $links[] = '/pm/task.php?group_id=' . $group_id . '&group_project_id=' . $group_project_id . '&func=uploadcsv'; } if ($pg && is_object($pg) && $pg->userIsAdmin()) { $labels[] = _('Reporting'); $links[] = '/pm/reporting/?group_id=' . $group_id; $labels[] = _('Admin'); $links[] = '/pm/admin/?group_id=' . $group_id . '&group_project_id=' . $group_project_id . '&update_pg=1'; } if (!empty($labels)) { echo $HTML->subMenu($labels, $links); } }
function Security_nforge(&$DB) { $this->DB = $DB; $u = session_get_user(); $group =& group_get_object($DB->group_id); $perm =& $group->getPermission($u); // check if the user is docman's admin if ($perm and !$perm->isError()) { if ($perm->isDocEditor() || $perm->isAdmin()) { $DB->wikimasters = array($u->getUnixName()); } } }
/** * getRows - get the html output for result rows * * @return string html output */ function getRows() { $rowsCount = $this->searchQuery->getRowsCount(); $result =& $this->searchQuery->getResult(); $dateFormat = _('Y-m-d H:i'); $group = group_get_object($this->groupId); $group_name = $group->getUnixName(); $data = unserialize(db_result($result, 0, 'versiondata')); $return = ''; for ($i = 0; $i < $rowsCount; $i++) { $return .= '<tr ' . $GLOBALS['HTML']->boxGetAltRowStyle($i) . '>' . '<td>'; $return .= util_make_link('/wiki/g/' . $group_name . '/' . db_result($result, $i, 'pagename'), html_image('ic/msg.png', '10', '12', array('border' => '0')) . ' ' . db_result($result, $i, 'pagename')); $return .= '</td> <td width="15%">' . $data['author'] . '</td> <td width="15%">' . date($dateFormat, db_result($result, $i, 'mtime')) . '</td></tr>'; } return $return; }
/** * Fetches a ProjectGroup object from the database * * @param group_project_id the projectgroup id * @param data whether or not the db result handle is passed in * @return the ProjectGroup object */ function &projectgroup_get_object($group_project_id, $data = false) { global $PROJECTGROUP_OBJ; if (!isset($PROJECTGROUP_OBJ["_" . $group_project_id . "_"])) { if ($data) { //the db result handle was passed in } else { $res = db_query("SELECT * FROM project_group_list_vw\n\t\t\t\tWHERE group_project_id='{$group_project_id}'"); if (db_numrows($res) < 1) { $PROJECTGROUP_OBJ["_" . $group_project_id . "_"] = false; return false; } $data =& db_fetch_array($res); } $Group =& group_get_object($data["group_id"]); $PROJECTGROUP_OBJ["_" . $group_project_id . "_"] = new ProjectGroup($Group, $group_project_id, $data); } return $PROJECTGROUP_OBJ["_" . $group_project_id . "_"]; }
/** * Gets a FRSPackage object from the given package id * * @param package_id the package id * @param data the DB handle if passed in (optional) * @return the FRSPackage object */ function &frspackage_get_object($package_id, $data = false) { global $FRSPACKAGE_OBJ; if (!isset($FRSPACKAGE_OBJ['_' . $package_id . '_'])) { if ($data) { //the db result handle was passed in } else { $res = db_query("SELECT * FROM frs_package\n\t\t\t\tWHERE package_id='{$package_id}'"); if (db_numrows($res) < 1) { $FRSPACKAGE_OBJ['_' . $package_id . '_'] = false; return false; } $data =& db_fetch_array($res); } $Group =& group_get_object($data['group_id']); $FRSPACKAGE_OBJ['_' . $package_id . '_'] = new FRSPackage($Group, $data['package_id'], $data); } return $FRSPACKAGE_OBJ['_' . $package_id . '_']; }
function userExists() { global $group_id; // Mapping (PhpWiki vs FusionForge) performed is: // ANON for non logged or non member // USER for member of the project. // ADMIN for member having admin rights if (session_loggedin()) { // Get project object (if error => ANON) $project =& group_get_object($group_id); if (!$project || !is_object($project)) { $this->_level = WIKIAUTH_ANON; return false; } elseif ($project->isError()) { $this->_level = WIKIAUTH_ANON; return false; } $member = false; $user = session_get_user(); $perm =& $project->getPermission($user); if (!$perm || !is_object($perm)) { $this->_level = WIKIAUTH_ANON; return false; } elseif (!$perm->isError()) { $member = $perm->isMember(); } if ($member) { $this->_userid = $user->getRealName(); $this->_is_external = $user->getIsExternal(); if ($perm->isAdmin()) { $this->_level = WIKIAUTH_ADMIN; } else { $this->_level = WIKIAUTH_USER; } return $this; } } $this->_level = WIKIAUTH_ANON; return false; }
function getSCMData($session_ser, $group_id) { $grp =& group_get_object($group_id); if (!$grp || !is_object($grp)) { return new soap_fault('', 'getSCMData', 'Could Not Get Group', 'Could Not Get Group'); } elseif ($grp->isError()) { return new soap_fault('', 'getSCMData', $grp->getErrorMessage(), $grp->getErrorMessage()); } if (!$grp->usesSCM()) { return new soap_fault('', 'getSCMData', 'SCM is not enabled in this project'); } $res = array(); //TODO: Get SCM type from plugins if ($grp->usesPlugin("scmcvs")) { $res["type"] = "CVS"; $res["allow_anonymous"] = $grp->enableAnonSCM(); $res["public"] = $grp->enablePserver(); $res["box"] = $grp->getSCMBox(); $res["module"] = $grp->getUnixName(); $res["connection_string"] = ""; // this doesn't apply to CVS // Note: This was taken from CVS plugin. Maybe we shouldn't hardcode this? $res["root"] = "/cvsroot/" . $grp->getUnixName(); } else { if ($grp->usesPlugin("scmsvn")) { $res["type"] = "SVN"; $res["allow_anonymous"] = $grp->enableAnonSCM(); $res["public"] = $grp->enablePserver(); $res["box"] = $grp->getSCMBox(); $res["root"] = $GLOBALS["svn_root"] . "/" . $grp->getUnixName(); $res["module"] = ""; // doesn't apply to SVN // Note: This is an ugly hack. We can't access SVN plugin object for this project // directly. Currently this is being rewritten, but for now we must make this. include $gfconfig . 'plugins/scmsvn/config.php'; $res["connection_string"] = "http" . ($use_ssl ? "s" : "") . "://" . $grp->getSCMBox() . "/" . $svn_root . "/" . $grp->getUnixName(); } } return $res; }
function add2AccessFile($group_id) { $result = ""; $project =& group_get_object($group_id); $result = "[" . $project->getUnixName() . ":/]\n"; $users =& $project->getMembers(); foreach ($users as $user) { $perm =& $project->getPermission($user); if ($perm->isCVSWriter()) { $result .= $user->getUnixName() . "= rw\n"; } else { if ($perm->isCVSReader()) { $result .= $user->getUnixName() . "= r\n"; } } } if ($project->enableAnonSCM()) { $result .= "anonsvn= r\n"; $result .= "* = r\n"; } $result .= "\n"; return $result; }
function frs_header($params) { global $group_id, $HTML, $sys_use_frs; /* Does this site use FRS? */ if (!$sys_use_frs) { exit_disabled(); } $project =& group_get_object($group_id); if (!$project || !is_object($project)) { exit_no_group(); } $params['toptab'] = 'frs'; $params['group'] = $group_id; site_project_header($params); if (session_loggedin()) { $perm =& $project->getPermission(session_get_user()); if ($perm && is_object($perm) && !$perm->isError() && $perm->isReleaseTechnician()) { echo $HTML->subMenu(array(_('Files'), _('Admin')), array('/frs/?group_id=' . $group_id, '/frs/admin/?group_id=' . $group_id)); } } }
/** * getMonitoredForums * * @return Forum[] The array of Forums * */ function getMonitoredForums() { $forums = array(); $sql = "SELECT groups.group_name,groups.group_id,forum_group_list.group_forum_id,forum_group_list.forum_name " . "FROM groups,forum_group_list,forum_monitored_forums " . "WHERE groups.group_id=forum_group_list.group_id AND groups.status ='A' " . "AND forum_group_list.group_forum_id=forum_monitored_forums.forum_id " . "AND forum_monitored_forums.user_id='" . $this->User->getID() . "' ORDER BY group_name DESC"; $result = db_query($sql); $rows = db_numrows($result); if ($rows < 1) { return $forums; } $last_group = ''; for ($i = 0; $i < $rows; $i++) { $group_id = db_result($result, $i, 'group_id'); $forum_id = db_result($result, $i, 'group_forum_id'); $group =& group_get_object($group_id); $forum =& new Forum($group, $forum_id); if ($forum->isError()) { $this->setError($forum->getErrorMessage()); } else { $forums[] =& $forum; } } return $forums; }
/** * GForge Mailing Lists Facility * * Portions Copyright 1999-2001 (c) VA Linux Systems * The rest Copyright 2003 (c) Guillaume Smet * * @version $Id$ * */ function mail_header($params) { global $HTML, $group_id; if ($group_id) { //required for site_project_header $params['group'] = $group_id; $params['toptab'] = 'mail'; $project =& group_get_object($group_id); if ($project && is_object($project)) { if (!$project->usesMail()) { exit_error(_('Error'), _('This Project Has Turned Off The Mailing Lists')); } } site_project_header($params); if (session_loggedin()) { $perm =& $project->getPermission(session_get_user()); if ($perm && is_object($perm) && !$perm->isError() && $perm->isAdmin()) { echo $HTML->subMenu(array(_('Admin')), array('/mail/admin/?group_id=' . $group_id)); } } } else { exit_no_group(); } }
function activate_group($group_id) { global $feedback; //echo("activate_group($group_id)<br>"); if (sf_ldap_create_group($group_id, 0)) { db_query("UPDATE groups " . "SET status='A' " . "WHERE group_id={$group_id}"); /* Make founding admin be an active member of the project */ $admin_res = db_query("SELECT * " . "FROM users,user_group " . "WHERE user_group.group_id={$group_id} " . "AND user_group.admin_flags='A' " . "AND users.user_id=user_group.user_id "); if (db_numrows($admin_res) > 0) { $group =& group_get_object($group_id); // // user_get_object should really have a valid user_id passed in // or you are defeating the purpose of the object pooling // $admin =& user_get_object(db_result($admin_res, 0, 'user_id'), $admin_res); if ($group->addUser($admin->getUnixName())) { /* Now send the project approval emails */ group_add_history('approved', 'x', $group_id); send_new_project_email($group_id); usleep(250000); // TODO: This is dirty. If sendmail required pause, let send_new... handle it } else { $feedback = $group->getErrorMessage(); } } else { echo db_error(); } } else { /* There was error creating LDAP entry */ group_add_history('ldap:', sf_ldap_get_error_msg(), $group_id); } }
} } foreach ($config as $config_name => $config_value) { $r = $wc->updateWikiConfig($config_name, $config_value); if (!$r) { exit_error("Error", $wc->getErrorMessage()); } } $type = 'admin'; $feedback = _('Configuration saved.'); } else { exit_error(_('Access Denied'), _('You are not a project Admin')); } } if ($type == 'admin') { $group = group_get_object($id); if (!$group) { exit_error(_('Invalid Project'), _('Inexistent Project')); } if (!$group->usesPlugin($pluginname)) { //check if the group has the plugin active exit_error("Error", "First activate the {$pluginname} plugin through the Project's Admin Interface"); } $userperm = $group->getPermission($user); //we'll check if the user belongs to the group if (!$userperm->IsMember()) { exit_error(_('Access Denied'), _('You are not a member of this project')); } //only project admin can access here if ($userperm->isAdmin()) { wiki_Project_Header(array('title' => "Configuration for your project's Wiki", 'pagename' => "{$pluginname}", 'sectionvals' => array(group_getname($id))));
function CallHook($hookname, &$params) { if (isset($params['group_id'])) { $group_id = $params['group_id']; } elseif (isset($params['group'])) { $group_id = $params['group']; } else { $group_id = null; } if ($hookname == "groupmenu") { $project = group_get_object($group_id); if (!$project || !is_object($project)) { return; } if ($project->isError()) { return; } if (!$project->isProject()) { return; } if ($project->usesPlugin($this->name)) { $params['TITLES'][] = $this->text; $params['DIRS'][] = util_make_url('/plugins/mediawiki/wiki/' . $project->getUnixName() . '/index.php'); $params['ADMIN'][] = ''; $params['TOOLTIPS'][] = _('Mediawiki Space'); } $params['toptab'] == $this->name ? $params['selected'] = count($params['TITLES']) - 1 : ''; } elseif ($hookname == "groupisactivecheckbox") { //Check if the group is active // this code creates the checkbox in the project edit public info page to activate/deactivate the plugin $group = group_get_object($group_id); echo "<tr>"; echo "<td>"; echo ' <input type="checkbox" name="use_mediawikiplugin" value="1" '; // checked or unchecked? if ($group->usesPlugin($this->name)) { echo "checked"; } echo " /><br/>"; echo "</td>"; echo "<td>"; echo "<strong>Use " . $this->text . " Plugin</strong>"; echo "</td>"; echo "</tr>"; } elseif ($hookname == "groupisactivecheckboxpost") { // this code actually activates/deactivates the plugin after the form was submitted in the project edit public info page $group = group_get_object($group_id); $use_mediawikiplugin = getStringFromRequest('use_mediawikiplugin'); if ($use_mediawikiplugin == 1) { $group->setPluginUse($this->name); } else { $group->setPluginUse($this->name, false); } } elseif ($hookname == "project_public_area") { $project = group_get_object($group_id); if (!$project || !is_object($project)) { return; } if ($project->isError()) { return; } if (!$project->isProject()) { return; } if ($project->usesPlugin($this->name)) { echo '<div class="public-area-box">'; print '<a href="' . util_make_url('/plugins/mediawiki/wiki/' . $project->getUnixName() . '/index.php') . '">'; print html_abs_image(util_make_url('/plugins/mediawiki/wiki/' . $project->getUnixName() . '/skins/fusionforge/wiki.png'), '20', '20', array('alt' => 'Mediawiki')); print ' Mediawiki'; print '</a>'; echo '</div>'; } } elseif ($hookname == "role_get") { $role =& $params['role']; // Read access $right = new PluginSpecificRoleSetting($role, 'plugin_mediawiki_read'); $right->SetAllowedValues(array('0', '1')); $right->SetDefaultValues(array('Admin' => '1', 'Senior Developer' => '1', 'Junior Developer' => '1', 'Doc Writer' => '1', 'Support Tech' => '1')); // Edit privileges $right = new PluginSpecificRoleSetting($role, 'plugin_mediawiki_edit'); $right->SetAllowedValues(array('0', '1', '2', '3')); $right->SetDefaultValues(array('Admin' => '3', 'Senior Developer' => '2', 'Junior Developer' => '1', 'Doc Writer' => '3', 'Support Tech' => '0')); // File upload privileges $right = new PluginSpecificRoleSetting($role, 'plugin_mediawiki_upload'); $right->SetAllowedValues(array('0', '1', '2')); $right->SetDefaultValues(array('Admin' => '2', 'Senior Developer' => '2', 'Junior Developer' => '1', 'Doc Writer' => '2', 'Support Tech' => '0')); // Administrative tasks $right = new PluginSpecificRoleSetting($role, 'plugin_mediawiki_admin'); $right->SetAllowedValues(array('0', '1')); $right->SetDefaultValues(array('Admin' => '1', 'Senior Developer' => '0', 'Junior Developer' => '0', 'Doc Writer' => '0', 'Support Tech' => '0')); } elseif ($hookname == "role_normalize") { $role =& $params['role']; $new_sa =& $params['new_sa']; $new_pa =& $params['new_pa']; $projects = $role->getLinkedProjects(); foreach ($projects as $p) { $role->normalizePermsForSection($new_pa, 'plugin_mediawiki_read', $p->getID()); $role->normalizePermsForSection($new_pa, 'plugin_mediawiki_edit', $p->getID()); $role->normalizePermsForSection($new_pa, 'plugin_mediawiki_upload', $p->getID()); $role->normalizePermsForSection($new_pa, 'plugin_mediawiki_admin', $p->getID()); } } elseif ($hookname == "role_translate_strings") { $right = new PluginSpecificRoleSetting($role, 'plugin_mediawiki_read'); $right->setDescription(_('Mediawiki read access')); $right->setValueDescriptions(array('0' => _('No reading'), '1' => _('Read access'))); $right = new PluginSpecificRoleSetting($role, 'plugin_mediawiki_edit'); $right->setDescription(_('Mediawiki write access')); $right->setValueDescriptions(array('0' => _('No editing'), '1' => _('Edit existing pages only'), '2' => _('Edit and create pages'), '3' => _('Edit, create, move, delete pages'))); $right = new PluginSpecificRoleSetting($role, 'plugin_mediawiki_upload'); $right->setDescription(_('Mediawiki file upload')); $right->setValueDescriptions(array('0' => _('No uploading'), '1' => _('Upload permitted'), '2' => _('Upload and re-upload'))); $right = new PluginSpecificRoleSetting($role, 'plugin_mediawiki_admin'); $right->setDescription(_('Mediawiki administrative tasks')); $right->setValueDescriptions(array('0' => _('No administrative access'), '1' => _('Edit interface, import XML dumps'))); } elseif ($hookname == "role_get_setting") { $role = $params['role']; $reference = $params['reference']; $value = $params['value']; switch ($params['section']) { case 'plugin_mediawiki_read': if ($role->hasPermission('project_admin', $reference)) { $params['result'] = 1; } else { $params['result'] = $value; } break; case 'plugin_mediawiki_edit': if ($role->hasPermission('project_admin', $reference)) { $params['result'] = 3; } else { $params['result'] = $value; } break; case 'plugin_mediawiki_upload': if ($role->hasPermission('project_admin', $reference)) { $params['result'] = 2; } else { $params['result'] = $value; } break; case 'plugin_mediawiki_admin': if ($role->hasPermission('project_admin', $reference)) { $params['result'] = 1; } else { $params['result'] = $value; } break; } } elseif ($hookname == "role_has_permission") { $value = $params['value']; switch ($params['section']) { case 'plugin_mediawiki_read': switch ($params['action']) { case 'read': default: $params['result'] |= $value >= 1; break; } break; case 'plugin_mediawiki_edit': switch ($params['action']) { case 'editexisting': $params['result'] |= $value >= 1; break; case 'editnew': $params['result'] |= $value >= 2; break; case 'editmove': $params['result'] |= $value >= 3; break; } break; case 'plugin_mediawiki_upload': switch ($params['action']) { case 'upload': $params['result'] |= $value >= 1; break; case 'reupload': $params['result'] |= $value >= 2; break; } break; case 'plugin_mediawiki_admin': switch ($params['action']) { case 'admin': default: $params['result'] |= $value >= 1; break; } break; } } elseif ($hookname == "list_roles_by_permission") { switch ($params['section']) { case 'plugin_mediawiki_read': switch ($params['action']) { case 'read': default: $params['qpa'] = db_construct_qpa($params['qpa'], ' AND perm_val >= 1'); break; } break; case 'plugin_mediawiki_edit': switch ($params['action']) { case 'editexisting': $params['qpa'] = db_construct_qpa($params['qpa'], ' AND perm_val >= 1'); break; case 'editnew': $params['qpa'] = db_construct_qpa($params['qpa'], ' AND perm_val >= 2'); break; case 'editmove': $params['qpa'] = db_construct_qpa($params['qpa'], ' AND perm_val >= 3'); break; } break; case 'plugin_mediawiki_upload': switch ($params['action']) { case 'upload': $params['qpa'] = db_construct_qpa($params['qpa'], ' AND perm_val >= 1'); break; case 'reupload': $params['qpa'] = db_construct_qpa($params['qpa'], ' AND perm_val >= 2'); break; } break; case 'plugin_mediawiki_admin': switch ($params['action']) { case 'admin': default: $params['qpa'] = db_construct_qpa($params['qpa'], ' AND perm_val >= 1'); break; } break; } } elseif ($hookname == "project_admin_plugins") { $group_id = $params['group_id']; $group = group_get_object($group_id); if ($group->usesPlugin($this->name)) { echo util_make_link("/plugins/mediawiki/plugin_admin.php?group_id=" . $group->getID(), _("MediaWiki Plugin admin")) . "<br />"; } } elseif ($hookname == "clone_project_from_template") { $template = $params['template']; $project = $params['project']; $id_mappings = $params['id_mappings']; $sections = array('plugin_mediawiki_read', 'plugin_mediawiki_edit', 'plugin_mediawiki_upload', 'plugin_mediawiki_admin'); foreach ($template->getRoles() as $oldrole) { $newrole = RBACEngine::getInstance()->getRoleById($id_mappings['role'][$oldrole->getID()]); $oldsettings = $oldrole->getSettingsForProject($template); foreach ($sections as $section) { if (isset($oldsettings[$section][$template->getID()])) { $newrole->setSetting($section, $project->getID(), $oldsettings[$section][$template->getID()]); } } } } elseif ($hookname == 'group_delete') { $projectId = $params['group_id']; $projectObject = group_get_object($projectId); if ($projectObject->usesPlugin($this->name)) { //delete the files and db schema $schema = 'plugin_mediawiki_' . $projectObject->getUnixName(); // Sanitize schema name $schema = strtr($schema, "-", "_"); db_query_params('drop schema $1 cascade', array($schema)); exec('/bin/rm -rf ' . forge_get_config('projects_path', 'mediawiki') . '/' . $projectObject->getUnixName()); } } }
function addFile($session_ser, $group_id, $package_id, $release_id, $name, $base64_contents, $type_id, $processor_id, $release_time) { continue_session($session_ser); $grp =& group_get_object($group_id); if (!$grp || !is_object($grp)) { return new soap_fault('', 'addFile', 'Could Not Get Group', 'Could Not Get Group'); } elseif ($grp->isError()) { return new soap_fault('', 'addFile', $grp->getErrorMessage(), $grp->getErrorMessage()); } $frsp =& frspackage_get_object($package_id); if (!$frsp || !is_object($frsp)) { return new soap_fault('', 'addFile', 'Could Not Get Package', 'Could Not Get Package'); } else { if ($frsp->isError()) { return new soap_fault('', 'addFile', $frsp->getErrorMessage(), $frsp->getErrorMessage()); } } $frsr =& frsrelease_get_object($release_id); if (!$frsr || !is_object($frsr)) { return new soap_fault('', 'addFile', 'Could Not Get Release', 'Could Not Get Release'); } else { if ($frsr->isError()) { return new soap_fault('', 'addFile', $frsr->getErrorMessage(), $frsr->getErrorMessage()); } } $frsf = new FRSFile($frsr); if (!$frsf || !is_object($frsf)) { return new soap_fault('', 'addFile', 'Could Not Get File', 'Could Not Get File'); } $tmpname = tempnam("/tmp", "gforge_cli_frs"); $fh = fopen($tmpname, "wb"); if (!$fh) { return new soap_fault('', 'addFile', 'Could not create temporary file in directory /tmp'); } fwrite($fh, base64_decode($base64_contents)); fclose($fh); if (!$frsf->create($name, $tmpname, $type_id, $processor_id, $release_time)) { @unlink($tmpname); return new soap_fault('', 'addFile', $frsf->getErrorMessage(), $frsf->getErrorMessage()); } else { @unlink($tmpname); return $frsf->getID(); } }
function &group_get_object_by_name($groupname) { $res = db_query("SELECT * FROM groups WHERE unix_group_name='{$groupname}'"); return group_get_object(db_result($res, 0, 'group_id'), $res); }
<?php // // SourceForge: Breaking Down the Barriers to Open Source Development // Copyright 1999-2000 (c) The SourceForge Crew // http://sourceforge.net // // $Id: editpackages.php,v 1.2 2003/11/13 11:29:26 helix Exp $ require 'pre.php'; require $DOCUMENT_ROOT . '/project/admin/project_admin_utils.php'; session_require(array('group' => $group_id)); $project =& group_get_object($group_id); if (!$project->userIsReleaseTechnician()) { exit_permission_denied(); } $is_admin = $project->userIsAdmin(); /* Relatively simple form to edit/add packages of releases */ // only admin can modify packages (vs modifying releases of packages) if ($is_admin && $submit) { /* make updates to the database */ if ($func == 'add_package' && $package_name) { //create a new package db_query("INSERT INTO frs_package (group_id,name,status_id) " . "VALUES ('{$group_id}','" . htmlspecialchars($package_name) . "','1')"); $feedback .= ' Added Package '; } else { if ($func == 'update_package' && $package_id && $package_name && $status_id) { if ($status_id != 1) {
Total rewrite in OO and GForge coding guidelines 12/2002 by Tim Perdue */ require_once '../../env.inc.php'; require_once $gfwww . 'include/pre.php'; require_once $gfwww . 'pm/include/ProjectGroupHTML.class.php'; require_once $gfcommon . 'pm/ProjectGroupFactory.class.php'; require_once $gfcommon . 'pm/ProjectCategory.class.php'; if (!session_loggedin()) { exit_not_logged_in(); } $group_id = getIntFromRequest('group_id'); $group_project_id = getIntFromRequest('group_project_id'); if (!$group_id) { exit_no_group(); } $g =& group_get_object($group_id); if (!$g || !is_object($g)) { exit_no_group(); } elseif ($g->isError()) { exit_error('Error', $g->getErrorMessage()); } $perm =& $g->getPermission(session_get_user()); $update_cat = getStringFromRequest('update_cat'); $add_cat = getStringFromRequest('add_cat'); $delete = getStringFromRequest('delete'); $id = getIntFromRequest('id'); if (getStringFromRequest('post_changes')) { /* Update the database */ $pg = new ProjectGroup($g, $group_project_id);
/** * session_require() - Convenience function to easily enforce permissions * * Calling page will terminate with error message if current user * fails checks. * * @param array Associative array specifying criteria * @return does not return if check is failed * */ function session_require($req) { if (!user_isloggedin()) { exit_not_logged_in(); //exit_permission_denied(); } if ($req['group']) { $group =& group_get_object($req['group']); if (!$group || !is_object($group)) { exit_error(_('Error'), _('Error creating group object')); } else { if ($group->isError()) { exit_error(_('Error'), $group->getErrorMessage()); } } $perm =& $group->getPermission(session_get_user()); if (!$perm || !is_object($perm)) { exit_error(_('Error'), _('Error creating permission object')); } else { if ($perm->isError()) { exit_error(_('Error'), $perm->getErrorMessage()); } } if ($req['admin_flags']) { //$query .= " AND admin_flags = '$req[admin_flags]'"; if (!$perm->isAdmin()) { exit_permission_denied(); } } else { if (!$perm->isMember()) { exit_permission_denied(); } } } else { if ($req['isloggedin']) { //no need to check as long as the check is present at top of function } else { exit_permission_denied(); } } }