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);
         }
     }
 }
Beispiel #2
0
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']);
             }
         }
     }
 }
Beispiel #4
0
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;
}
Beispiel #6
0
/**
 * 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%">';
}
Beispiel #7
0
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;
 }
Beispiel #9
0
/**
 * 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 . '&amp;group_project_id=' . $group_project_id . '&amp;func=browse';
        if (session_loggedin()) {
            $labels[] = _('Add task');
            $links[] = '/pm/task.php?group_id=' . $group_id . '&amp;group_project_id=' . $group_project_id . '&amp;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 . '&amp;group_project_id=' . $group_project_id . '&amp;func=downloadcsv';
        $labels[] = _('Upload CSV');
        $links[] = '/pm/task.php?group_id=' . $group_id . '&amp;group_project_id=' . $group_project_id . '&amp;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 . '&amp;group_project_id=' . $group_project_id . '&amp;update_pg=1';
    }
    if (!empty($labels)) {
        echo $HTML->subMenu($labels, $links);
    }
}
Beispiel #13
0
 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 . '_'];
}
Beispiel #17
0
 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;
 }
Beispiel #18
0
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;
}
Beispiel #19
0
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;
}
Beispiel #20
0
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;
 }
Beispiel #22
0
/**
 * 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);
     }
 }
Beispiel #24
0
             }
         }
         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());
         }
     }
 }
Beispiel #26
0
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) {
Beispiel #29
0
	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);
Beispiel #30
0
/**
 *	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();
        }
    }
}