/**
  * Update project
  *
  * @param void
  * @return null
  */
 function edit()
 {
     $this->wireframe->print_button = false;
     if ($this->request->isApiCall() && !$this->request->isSubmitted()) {
         $this->httpError(HTTP_ERR_BAD_REQUEST, null, true, true);
     }
     // if
     if ($this->active_project->isNew()) {
         $this->httpError(HTTP_ERR_NOT_FOUND);
     }
     // if
     if (!$this->active_project->canEdit($this->logged_user)) {
         $this->httpError(HTTP_ERR_FORBIDDEN);
     }
     // if
     $project_data = $this->request->post('project');
     if (!is_array($project_data)) {
         $project_data = array('name' => $this->active_project->getName(), 'overview' => $this->active_project->getOverview(), 'default_visibility' => $this->active_project->getDefaultVisibility(), 'leader_id' => $this->active_project->getLeaderId(), 'group_id' => $this->active_project->getGroupId(), 'company_id' => $this->active_project->getCompanyId(), 'default_visibility' => $this->active_project->getDefaultVisibility(), 'starts_on' => $this->active_project->getStartsOn());
     }
     // if
     $this->smarty->assign('project_data', $project_data);
     if ($this->request->isSubmitted()) {
         db_begin_work();
         $old_name = $this->active_project->getName();
         $this->active_project->setAttributes($project_data);
         if ($this->active_project->isModified('leader_id') && $this->active_project->getLeaderId()) {
             $leader = Users::findById($this->active_project->getLeaderId());
             if (instance_of($leader, 'User')) {
                 $this->active_project->setLeader($leader);
             }
             // if
         }
         // if
         if ($this->active_project->isModified('company_id')) {
             cache_remove('project_icons');
         }
         // if
         $save = $this->active_project->save();
         if ($save && !is_error($save)) {
             db_commit();
             if ($this->request->isApiCall()) {
                 $this->serveData($this->active_project, 'project');
             } else {
                 flash_success('Project :name has been updated', array('name' => $old_name));
                 $this->redirectToUrl($this->active_project->getOverviewUrl());
             }
             // if
         } else {
             db_rollback();
             if ($this->request->isApiCall()) {
                 $this->serveData($save);
             } else {
                 $this->smarty->assign('errors', $save);
             }
             // if
         }
         // if
     }
     // if
 }
 public function __construct(Project $project, $count, $selected)
 {
     $this->label = util_unconvert_htmlspecialchars($project->getPublicName());
     $this->count = $count;
     $this->value = $project->getGroupId();
     $this->selected = $selected;
 }
Example #3
0
/**
 * @return string
 */
function service_replace_template_name_in_link($link, array $template, Project $project)
{
    $link = preg_replace('#(/www/|/projects/|group=)' . $template['name'] . '(/|&|$)#', '$1' . $project->getUnixName() . '$2', $link);
    $link = preg_replace('/group_id=' . $template['id'] . '([^\\d]|$)/', 'group_id=' . $project->getGroupId() . '$1', $link);
    EventManager::instance()->processEvent(Event::SERVICE_REPLACE_TEMPLATE_NAME_IN_LINK, array('link' => &$link, 'template' => $template, 'project' => $project));
    return $link;
}
 /**
  * Get the parameters to redirect to proper pane on the AgileDashboard
  * @param Codendi_Request $request
  * @param Project $project
  * @return array || null
  */
 public function getRedirectToParameters(Codendi_Request $request, Project $project)
 {
     $request_parameters = $this->extractParametersFromRequest($request);
     if ($request_parameters) {
         $request_parameters['group_id'] = $project->getGroupId();
     }
     return $request_parameters;
 }
Example #5
0
 /**
  * Launch the migration of a TV3 to a TV5
  *
  * @param Project $project
  * @param $tracker_id
  * @param $name
  * @param $description
  * @param $short_name
  *
  * @return bool true if everything seems right
  */
 public function askForMigration(Project $project, $tracker_id, $name, $description, $short_name)
 {
     if (!$this->tracker_factory->validMandatoryInfoOnCreate($name, $description, $short_name, $project->getGroupId())) {
         return false;
     }
     $this->system_event_manager->queueTV3Migration($this->user_manager->getCurrentUser(), $project, $tracker_id, $name, $description, $short_name);
     return true;
 }
Example #6
0
 /**
  * Say if the service is allowed for the project
  *
  * @param Project $project
  *
  * @return bool
  */
 protected function isAllowed($project)
 {
     $plugin_manager = PluginManager::instance();
     $p = $plugin_manager->getPluginByName('tracker');
     if ($p && $plugin_manager->isPluginAvailable($p) && $p->isAllowed($project->getGroupId())) {
         return true;
     }
     return false;
 }
 public function __construct(Project $project, $count, $checked)
 {
     $this->label = $project->getUnixName();
     $this->count = $count;
     $this->value = $project->getGroupId();
     if ($checked) {
         $this->checked = 'checked="checked"';
     }
 }
 /**
  * Returns docman admin ugroups
  * 
  * @param Project $project
  *
  * @return DataAccessResult
  */
 function getDocmanAdminUgroups(Project $project)
 {
     $sql = "SELECT ugroup_id\n              FROM permissions\n              WHERE permission_type = 'PLUGIN_DOCMAN_ADMIN'\n                AND object_id = " . $this->da->escapeInt($project->getGroupId()) . "\n              ORDER BY ugroup_id";
     $res = $this->retrieve($sql);
     if ($res && !$res->isError()) {
         return $res;
     } else {
         return false;
     }
 }
 public function solveInconsistencies()
 {
     $milestone_artifact = Tracker_ArtifactFactory::instance()->getArtifactById($this->request->get('aid'));
     $milestone = $this->milestone_factory->getMilestoneFromArtifact($milestone_artifact);
     $artifact_ids = $this->request->get('inconsistent-artifacts-ids');
     $extractor = new AgileDashboard_PaneRedirectionExtractor();
     if (!($this->inconsistentArtifactsIdsAreValid($artifact_ids) && $milestone->solveInconsistencies($this->getCurrentUser(), $artifact_ids))) {
         $this->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('plugin_agiledashboard', 'error_on_inconsistencies_solving'));
     }
     $this->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('plugin_agiledashboard', 'successful_inconsistencies_solving'));
     if (!($request_has_redirect = $extractor->getRedirectToParameters($this->request, $this->project))) {
         $this->redirect(array('group_id' => $this->project->getGroupId()));
     }
     $this->redirect($extractor->getRedirectToParameters($this->request, $this->project));
 }
Example #10
0
function svn_get_revisions(Project $project, $offset, $chunksz, $_rev_id = '', $_commiter = '', $_srch = '', $order_by = '', $pv = 0, $foundRows = true)
{
    global $_path;
    $um = UserManager::instance();
    //check user access rights
    $forbidden = svn_utils_get_forbidden_paths($um->getCurrentUser()->getName(), $project->getSVNRootPath());
    $select = 'SELECT';
    $group_by = '';
    if ($foundRows) {
        $select .= ' SQL_CALC_FOUND_ROWS';
    }
    $select .= ' svn_commits.revision as revision, svn_commits.id as commit_id, svn_commits.description as description, svn_commits.date as date, svn_commits.whoid';
    $from = " FROM svn_commits";
    $where = " WHERE svn_commits.group_id=" . db_ei($project->getGroupId());
    //check user access rights
    if (!empty($forbidden)) {
        $from .= " INNER JOIN svn_checkins ON (svn_checkins.commitid = svn_commits.id)";
        $from .= " INNER JOIN svn_dirs ON (svn_dirs.id = svn_checkins.dirid)";
        $where_forbidden = "";
        foreach ($forbidden as $no_access => $v) {
            if ($no_access == $_path) {
                $_path = '';
            }
            $where_forbidden .= " AND svn_dirs.dir not like '" . db_es(substr($no_access, 1)) . "%'";
        }
        $where .= $where_forbidden;
        $group_by .= ' GROUP BY revision';
    }
    //if status selected, and more to where clause
    if ($_path != '') {
        $path_str = " AND svn_dirs.dir like '%" . db_es($_path) . "%'";
        if (!isset($forbidden) || empty($forbidden)) {
            $from .= " INNER JOIN svn_checkins ON (svn_checkins.commitid = svn_commits.id)";
            $from .= " INNER JOIN svn_dirs ON (svn_dirs.id = svn_checkins.dirid)";
            $group_by .= ' GROUP BY revision';
        }
    } else {
        $path_str = "";
    }
    //if revision selected, and more to where clause
    if (isset($_rev_id) && $_rev_id != '') {
        $commit_str = " AND svn_commits.revision='" . db_ei($_rev_id) . "' ";
    } else {
        $commit_str = '';
    }
    if (isset($_commiter) && $_commiter && $_commiter != 100) {
        $commiter_str = " AND svn_commits.whoid='" . db_ei($um->getUserByUserName($_commiter)->getId()) . "' ";
    } else {
        //no assigned to was chosen, so don't add it to where clause
        $commiter_str = '';
    }
    if (isset($_srch) && $_srch != '') {
        $srch_str = " AND svn_commits.description like '%" . db_es(htmlspecialchars($_srch)) . "%'";
    } else {
        $srch_str = "";
    }
    $where .= $commiter_str . $commit_str . $srch_str . $path_str;
    if (!isset($pv) || !$pv) {
        $limit = " LIMIT " . db_ei($offset) . "," . db_ei($chunksz);
    }
    // SQLi Warning: no real possibility to escape $order_by here.
    // We rely on a proper filtering of user input by calling methods.
    if (!isset($order_by) || $order_by == '') {
        $order_by = " ORDER BY revision DESC ";
    }
    $sql = $select . $from . $where . $group_by . $order_by . $limit;
    //echo $sql."<br>\n";
    $result = db_query($sql);
    // Compute the number of rows.
    $totalrows = -1;
    if ($foundRows) {
        $sql1 = 'SELECT FOUND_ROWS() as nb';
        $result1 = db_query($sql1);
        if ($result1 && !db_error($result1)) {
            $row1 = db_fetch_array($result1);
            $totalrows = $row1['nb'];
        }
    }
    return array($result, $totalrows);
}
Example #11
0
 public function fetchTrackerSwitcher(PFUser $user, $separator, Project $include_project = null, Tracker $current_tracker = null)
 {
     $hp = Codendi_HTMLPurifier::instance();
     $html = '';
     //Projects/trackers
     $projects = $user->getProjects(true);
     if ($include_project) {
         $found = false;
         foreach ($projects as $data) {
             if ($data['group_id'] == $include_project->getGroupId()) {
                 $found = true;
                 break;
             }
         }
         if (!$found) {
             $projects[] = array('group_id' => $include_project->getGroupId(), 'group_name' => $include_project->getPublicName());
         }
     }
     $html .= '<strong>';
     if ($current_tracker) {
         $html .= $hp->purify($current_tracker->getProject()->getPublicName(), CODENDI_PURIFIER_CONVERT_HTML);
     } else {
         $html .= $GLOBALS['Language']->getText('plugin_tracker', 'tracker_switcher');
     }
     $html .= '</strong>' . $separator;
     $html .= '<select id="tracker_select_tracker">';
     if (!$current_tracker) {
         $html .= '<option selected="selected">--</option>';
     }
     $factory = TrackerFactory::instance();
     foreach ($projects as $data) {
         if ($trackers = $factory->getTrackersByGroupId($data['group_id'])) {
             foreach ($trackers as $key => $v) {
                 if (!$v->userCanView($user)) {
                     unset($trackers[$key]);
                 }
             }
             if ($trackers) {
                 $html .= '<optgroup label="' . $hp->purify($data['group_name'], CODENDI_PURIFIER_CONVERT_HTML) . '">';
                 foreach ($trackers as $t) {
                     $selected = $current_tracker && $t->getId() == $current_tracker->getId() ? 'selected="selected"' : '';
                     $html .= '<option ' . $selected . ' value="' . $t->getId() . '">';
                     $html .= $hp->purify($t->getName(), CODENDI_PURIFIER_CONVERT_HTML);
                     $html .= '</option>';
                 }
                 $html .= '</optgroup>';
             }
         }
     }
     $html .= '</select>';
     return $html;
 }
 private function getAddToProjectDashboardURL(Project $project)
 {
     return $this->getAddToDashboardURL('g' . $project->getGroupId(), Tracker_Widget_ProjectRenderer::ID);
 }
 public function assertUserCanAccessProject(User $user, Project $project)
 {
     if ($project->isPublic() && $user->isRestricted() && !$user->isMember($project->getGroupId()) || !$project->isPublic() && !$user->isMember($project->getGroupId())) {
         throw new Exception('User do not have access to the project', '3002');
     }
 }
 public function isThereAMigrationQueuedForProject(Project $project)
 {
     return $this->system_event_manager->isThereAnEventAlreadyOnGoingMatchingParameter(SystemEvent_TRACKER_V3_MIGRATION::NAME, $project->getGroupId());
 }
Example #15
0
 private function dumpProjectRepoConfForAGivenMirror(Project $project, Git_Mirror_Mirror $mirror, Git_Gitolite_GitModifications $git_modifications)
 {
     if (empty($mirror->hostname)) {
         return;
     }
     $repositories = $this->mirror_data_mapper->fetchAllProjectRepositoriesForMirror($mirror, array($project->getGroupId()));
     $this->createConfFolderForMirrorIfNeeded($mirror);
     $config_file = $this->getProjectPermissionConfFileForMirror($project, $mirror);
     $this->writeGitConfig($config_file, $this->project_serializer->dumpPartialProjectRepoConf($project, $repositories), $git_modifications);
 }
Example #16
-1
 /**
  * Returns an instance of PermissionsManager
  *
  * @param Project $project Used project
  *
  * @return Docman_PermissionsManager
  */
 function getDocmanPermissionsManager($project)
 {
     return Docman_PermissionsManager::instance($project->getGroupId());
 }