function getContent()
 {
     $frsrf = new FRSReleaseFactory();
     $html_my_monitored_fp = '';
     $sql = "SELECT groups.group_name,groups.group_id " . "FROM groups,filemodule_monitor,frs_package " . "WHERE groups.group_id=frs_package.group_id " . "AND frs_package.status_id !=" . $frsrf->STATUS_DELETED . " " . "AND frs_package.package_id=filemodule_monitor.filemodule_id " . "AND filemodule_monitor.user_id='" . user_getid() . "' ";
     $um =& UserManager::instance();
     $current_user =& $um->getCurrentUser();
     if ($current_user->isRestricted()) {
         $projects = $current_user->getProjects();
         $sql .= "AND groups.group_id IN (" . implode(',', $projects) . ") ";
     }
     $sql .= "GROUP BY group_id ORDER BY group_id ASC LIMIT 100";
     $result = db_query($sql);
     $rows = db_numrows($result);
     if (!$result || $rows < 1) {
         $html_my_monitored_fp .= $GLOBALS['Language']->getText('my_index', 'my_files_msg');
     } else {
         $html_my_monitored_fp .= '<table style="width:100%">';
         $request =& HTTPRequest::instance();
         for ($j = 0; $j < $rows; $j++) {
             $group_id = db_result($result, $j, 'group_id');
             $sql2 = "SELECT frs_package.name,filemodule_monitor.filemodule_id " . "FROM groups,filemodule_monitor,frs_package " . "WHERE groups.group_id=frs_package.group_id " . "AND groups.group_id={$group_id} " . "AND frs_package.status_id !=" . $frsrf->STATUS_DELETED . " " . "AND frs_package.package_id=filemodule_monitor.filemodule_id " . "AND filemodule_monitor.user_id='" . user_getid() . "'  LIMIT 100";
             $result2 = db_query($sql2);
             $rows2 = db_numrows($result2);
             $vItemId = new Valid_UInt('hide_item_id');
             $vItemId->required();
             if ($request->valid($vItemId)) {
                 $hide_item_id = $request->get('hide_item_id');
             } else {
                 $hide_item_id = null;
             }
             $vFrs = new Valid_WhiteList('hide_frs', array(0, 1));
             $vFrs->required();
             if ($request->valid($vFrs)) {
                 $hide_frs = $request->get('hide_frs');
             } else {
                 $hide_frs = null;
             }
             list($hide_now, $count_diff, $hide_url) = my_hide_url('frs', $group_id, $hide_item_id, $rows2, $hide_frs);
             $html_hdr = ($j ? '<tr class="boxitem"><td colspan="2">' : '') . $hide_url . '<A HREF="/project/?group_id=' . $group_id . '">' . db_result($result, $j, 'group_name') . '</A>&nbsp;&nbsp;&nbsp;&nbsp;';
             $html = '';
             $count_new = max(0, $count_diff);
             for ($i = 0; $i < $rows2; $i++) {
                 if (!$hide_now) {
                     $html .= '
                     <TR class="' . util_get_alt_row_color($i) . '">' . '<TD WIDTH="99%">&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;<A HREF="/file/showfiles.php?group_id=' . $group_id . '">' . db_result($result2, $i, 'name') . '</A></TD>' . '<TD><A HREF="/file/filemodule_monitor.php?filemodule_id=' . db_result($result2, $i, 'filemodule_id') . '&group_id=' . $group_id . '" onClick="return confirm(\'' . $GLOBALS['Language']->getText('my_index', 'stop_file') . '\')">' . '<IMG SRC="' . util_get_image_theme("ic/trash.png") . '" HEIGHT="16" WIDTH="16" ' . 'BORDER=0" ALT="' . $GLOBALS['Language']->getText('my_index', 'stop_monitor') . '"></A></TD></TR>';
                 }
             }
             $html_hdr .= my_item_count($rows2, $count_new) . '</td></tr>';
             $html_my_monitored_fp .= $html_hdr . $html;
         }
         $html_my_monitored_fp .= '</table>';
     }
     return $html_my_monitored_fp;
 }
 function getContent()
 {
     $html_my_monitored_forums = '';
     $sql = "SELECT groups.group_id, groups.group_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.is_public <> 9 " . "AND forum_group_list.group_forum_id=forum_monitored_forums.forum_id " . "AND forum_monitored_forums.user_id='" . user_getid() . "' ";
     $um =& UserManager::instance();
     $current_user =& $um->getCurrentUser();
     if ($current_user->isRestricted()) {
         $projects = $current_user->getProjects();
         $sql .= "AND groups.group_id IN (" . implode(',', $projects) . ") ";
     }
     $sql .= "GROUP BY group_id ORDER BY group_id ASC LIMIT 100";
     $result = db_query($sql);
     $rows = db_numrows($result);
     if (!$result || $rows < 1) {
         $html_my_monitored_forums .= $GLOBALS['Language']->getText('my_index', 'my_forums_msg');
     } else {
         $request =& HTTPRequest::instance();
         $html_my_monitored_forums .= '<table style="width:100%">';
         for ($j = 0; $j < $rows; $j++) {
             $group_id = db_result($result, $j, 'group_id');
             $sql2 = "SELECT 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.group_id={$group_id} " . "AND forum_group_list.is_public <> 9 " . "AND forum_group_list.group_forum_id=forum_monitored_forums.forum_id " . "AND forum_monitored_forums.user_id='" . user_getid() . "' LIMIT 100";
             $result2 = db_query($sql2);
             $rows2 = db_numrows($result2);
             $vItemId = new Valid_UInt('hide_item_id');
             $vItemId->required();
             if ($request->valid($vItemId)) {
                 $hide_item_id = $request->get('hide_item_id');
             } else {
                 $hide_item_id = null;
             }
             $vForum = new Valid_WhiteList('hide_forum', array(0, 1));
             $vForum->required();
             if ($request->valid($vForum)) {
                 $hide_forum = $request->get('hide_forum');
             } else {
                 $hide_forum = null;
             }
             list($hide_now, $count_diff, $hide_url) = my_hide_url('forum', $group_id, $hide_item_id, $rows2, $hide_forum);
             $html_hdr = ($j ? '<tr class="boxitem"><td colspan="2">' : '') . $hide_url . '<A HREF="/forum/?group_id=' . $group_id . '">' . db_result($result, $j, 'group_name') . '</A>&nbsp;&nbsp;&nbsp;&nbsp;';
             $html = '';
             $count_new = max(0, $count_diff);
             for ($i = 0; $i < $rows2; $i++) {
                 if (!$hide_now) {
                     $group_forum_id = db_result($result2, $i, 'group_forum_id');
                     $html .= '
                 <TR class="' . util_get_alt_row_color($i) . '"><TD WIDTH="99%">' . '&nbsp;&nbsp;&nbsp;-&nbsp;<A HREF="/forum/forum.php?forum_id=' . $group_forum_id . '">' . stripslashes(db_result($result2, $i, 'forum_name')) . '</A></TD>' . '<TD ALIGN="center"><A HREF="/my/stop_monitor.php?forum_id=' . $group_forum_id . '" onClick="return confirm(\'' . $GLOBALS['Language']->getText('my_index', 'stop_forum') . '\')">' . '<IMG SRC="' . util_get_image_theme("ic/trash.png") . '" HEIGHT="16" WIDTH="16" ' . 'BORDER=0 ALT="' . $GLOBALS['Language']->getText('my_index', 'stop_monitor') . '"></A></TD></TR>';
                 }
             }
             $html_hdr .= my_item_count($rows2, $count_new) . '</td></tr>';
             $html_my_monitored_forums .= $html_hdr . $html;
         }
         $html_my_monitored_forums .= '</table>';
     }
     return $html_my_monitored_forums;
 }
Example #3
0
 private function getUGroupIdInRequest($request)
 {
     $vUgroupId = new Valid_UInt('ugroup_id');
     $vUgroupId->required();
     if ($request->valid($vUgroupId)) {
         $ugroupId = $request->get('ugroup_id');
     } else {
         $ugroupId = null;
     }
     return $ugroupId;
 }
 function initDisplay()
 {
     $request =& HTTPRequest::instance();
     //
     // User may request a specific table id
     $vVersion = new Valid_UInt('version');
     $vVersion->required();
     if ($request->valid($vVersion)) {
         $this->version = $request->get('version');
     }
     $this->atf =& Docman_ApprovalTableFactoriesFactory::getFromItem($this->item, $this->version);
     $this->table =& $this->atf->getTable();
 }
 public function update()
 {
     $vChildren = new Valid_UInt('children');
     $vChildren->required();
     if ($this->request->validArray($vChildren)) {
         $this->dao->updateChildren($this->tracker->getId(), $this->request->get('children'));
     } else {
         if ($this->request->exist('children')) {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_hierarchy', 'controller_bad_request'));
         } else {
             $this->dao->deleteAllChildren($this->tracker->getId());
         }
     }
     $this->redirect(array('tracker' => $this->tracker->getId(), 'func' => 'admin-hierarchy'));
 }
Example #6
0
 function testUInt()
 {
     $v = new Valid_UInt();
     $v->disableFeedback();
     $this->assertTrue($v->validate('0'));
     $this->assertTrue($v->validate('1'));
     $this->assertTrue($v->validate('2147483647'));
     $this->assertFalse($v->validate('-1'));
     // With a value lower than -2^31 it may imply a int overflow that may
     // generate a positive int (in this case: 2^31-1).
     $this->assertFalse($v->validate('-2147483649'));
     $this->assertFalse($v->validate('0.5'));
     $this->assertFalse($v->validate('toto'));
 }
 function getContent()
 {
     $folder_or_document = is_a($this->item, 'Docman_Folder') ? 'folder' : (is_a($this->item, 'Docman_File') ? 'file' : 'document');
     $item_type = $this->_controller->_getItemFactory()->getItemTypeForItem($this->item);
     $vVersion = new Valid_UInt('version');
     $vVersion->required();
     if ($this->_controller->request->valid($vVersion)) {
         $version = $this->_controller->request->get('version');
         $label = $this->_controller->request->get('label');
     } else {
         $version = false;
     }
     $content = '';
     $content .= '<dl><dt>' . $GLOBALS['Language']->getText('plugin_docman', 'details_actions_delete') . '</dt><dd>';
     $content .= '<form action="' . $this->url . '" method="POST">';
     $content .= '<div class="docman_confirm_delete">';
     if ($version !== false) {
         $content .= $GLOBALS['Language']->getText('plugin_docman', 'details_delete_warning_version', array($this->hp->purify($this->item->getTitle(), CODENDI_PURIFIER_CONVERT_HTML), $version));
     } else {
         $content .= $GLOBALS['Language']->getText('plugin_docman', 'details_delete_warning_' . $folder_or_document, $this->hp->purify($this->item->getTitle(), CODENDI_PURIFIER_CONVERT_HTML));
     }
     if ($item_type == PLUGIN_DOCMAN_ITEM_TYPE_WIKI) {
         $content .= $this->getWikiDeleteInfo();
     }
     $content .= '<div class="docman_confirm_delete_buttons">';
     if ($this->token) {
         $content .= '<input type="hidden" name="token" value="' . $this->token . '" />';
     }
     $content .= '     <input type="hidden" name="section" value="actions" />';
     if ($version !== false) {
         $content .= '     <input type="hidden" name="action" value="deleteVersion" />';
         $content .= '     <input type="hidden" name="version" value="' . $version . '" />';
     } else {
         $content .= '     <input type="hidden" name="action" value="delete" />';
     }
     $content .= '     <input type="hidden" name="id" value="' . $this->item->getId() . '" />';
     $content .= '     <input type="submit" tabindex="2" name="confirm" value="' . $GLOBALS['Language']->getText('plugin_docman', 'details_delete_confirm') . '" />';
     $content .= '     <input type="submit" tabindex="1" name="cancel" value="' . $GLOBALS['Language']->getText('plugin_docman', 'details_delete_cancel') . '" />';
     $content .= '</div>';
     $content .= '</div>';
     $content .= '</form>';
     $content .= '</dd></dl>';
     return $content;
 }
 function getContent()
 {
     $html = '';
     $request = HTTPRequest::instance();
     $um = UserManager::instance();
     $user = $um->getCurrentUser();
     $vFunc = new Valid_WhiteList('docman_func', array('show_docman'));
     $vFunc->required();
     if ($request->valid($vFunc)) {
         $func = $request->get('docman_func');
     } else {
         $func = '';
     }
     $vDocmanId = new Valid_UInt('docman_id');
     $vDocmanId->required();
     if ($request->valid($vDocmanId)) {
         $docman_id = $request->get('docman_id');
     } else {
         $docman_id = '';
     }
     $html .= '<form method="post" action="?">';
     $html .= '<label>' . $GLOBALS['Language']->getText('plugin_docman', 'widget_my_docman_search_label') . '</label>';
     $html .= '<input type="hidden" name="docman_func" value="show_docman" />';
     $html .= '<input type="text" name="docman_id" value="' . $docman_id . '" id="docman_id" />';
     $html .= '&nbsp;';
     $html .= '<input type="submit" value="' . $GLOBALS['Language']->getText('plugin_docman', 'widget_my_docman_search_btn') . '"/>';
     $html .= '</form>';
     if ($func == 'show_docman' && $docman_id) {
         $res = $this->returnAllowedGroupId($docman_id, $user);
         if ($res) {
             $dPm = Docman_PermissionsManager::instance($res['group_id']);
             $itemPerm = $dPm->userCanAccess($user, $docman_id);
             if ($itemPerm) {
                 $html .= '<p><a href="/plugins/docman/?group_id=' . $res['group_id'] . '&action=details&id=' . $docman_id . '&section=properties">Show &quot;' . $res['title'] . '&quot; Properties</a></p>';
                 return $html;
             }
         }
         $html .= '<p>' . $GLOBALS['Language']->getText('plugin_docman', 'perm_denied') . '</p>';
     }
     return $html;
 }
Example #9
0
 /**
  * Validate the HTTP request for the user members pane
  *
  * @param Integer     $groupId Id of the project
  * @param HTTPRequest $request HTTP request
  *
  * @return Array
  */
 public function validateRequest($groupId, $request)
 {
     $userDao = new UserDao();
     $res = $userDao->firstUsernamesLetters();
     $allowedBeginValues = array();
     foreach ($res as $data) {
         $allowedBeginValues[] = $data['capital'];
     }
     $result['allowed_begin_values'] = $allowedBeginValues;
     $validBegin = new Valid_WhiteList('begin', $allowedBeginValues);
     $validBegin->required();
     $validInProject = new Valid_UInt('in_project');
     $validInProject->required();
     $result['offset'] = $request->exist('browse') ? 0 : $request->getValidated('offset', 'uint', 0);
     $result['number_per_page'] = $request->exist('number_per_page') ? $request->getValidated('number_per_page', 'uint', 0) : 15;
     $result['search'] = $request->getValidated('search', 'string', '');
     $result['begin'] = $request->getValidated('begin', $validBegin, '');
     $result['in_project'] = $request->getValidated('in_project', $validInProject, $groupId);
     $result['user'] = $request->get('user');
     $result['add_user_name'] = $request->get('add_user_name');
     return $result;
 }
Example #10
0
     if ($request->valid($vForumName) && $request->valid($vDescription) && $request->valid($vIsPublic) && $request->valid($vMonitored)) {
         $forum_name = $request->get('forum_name');
         $is_public = $request->get('is_public');
         $description = $request->get('description');
         $is_monitored = $request->get('is_monitored');
         $fid = forum_create_forum($group_id, $forum_name, $is_public, 1, $description);
         if ($is_monitored) {
             forum_add_monitor($fid, user_getid());
         }
     }
 } else {
     if ($request->existAndNonEmpty('change_status')) {
         /*
         	Change a forum to public/private
         */
         $vGrpForum = new Valid_UInt('group_forum_id');
         $vGrpForum->required();
         if ($request->valid($vForumName) && $request->valid($vDescription) && $request->valid($vIsPublic) && $request->valid($vGrpForum)) {
             $forum_name = $request->get('forum_name');
             $is_public = $request->get('is_public');
             $description = $request->get('description');
             $group_forum_id = $request->get('group_forum_id');
             $sql = "UPDATE forum_group_list SET is_public=" . db_ei($is_public) . ",forum_name='" . db_es(htmlspecialchars($forum_name)) . "'," . "description='" . db_es(htmlspecialchars($description)) . "' " . "WHERE group_forum_id=" . db_ei($group_forum_id) . " AND group_id=" . db_ei($group_id);
             $result = db_query($sql);
             if (!$result || db_affected_rows($result) < 1) {
                 $feedback .= ' ' . $Language->getText('forum_admin_index', 'upd_err') . ' ';
             } else {
                 $feedback .= ' ' . $Language->getText('forum_admin_index', 'upd_success') . ' ';
             }
         }
     }
 private function inconsistentArtifactsIdsAreValid(array $artifact_ids)
 {
     $validator = new Valid_UInt();
     $validator->required();
     $artifact_factory = Tracker_ArtifactFactory::instance();
     foreach ($artifact_ids as $artifact_id) {
         if (!($validator->validate($artifact_id) && $artifact_factory->getArtifactById($artifact_id))) {
             return false;
         }
     }
     return true;
 }
 function updatePreferences(&$request)
 {
     $request->valid(new Valid_String('cancel'));
     $nbShow = new Valid_UInt('nb_svn_commits');
     $nbShow->required();
     if (!$request->exist('cancel')) {
         if ($request->valid($nbShow)) {
             $this->_nb_svn_commits = $request->get('nb_svn_commits');
         } else {
             $this->_nb_svn_commits = self::NB_COMMITS_TO_DISPLAY;
         }
         user_set_preference('my_latests_svn_commits_nb_display', $this->_nb_svn_commits);
     }
     return true;
 }
Example #13
0
 /**
  * Checks whether a planning tracker id is present in the parameters, and is
  * a valid positive integer.
  * 
  * @param PlanningParameters $planning_parameters The validated parameters.
  * 
  * @return bool
  */
 private function planningTrackerIdIsPresentAndIsAPositiveInteger(PlanningParameters $planning_parameters)
 {
     $planning_tracker_id = new Valid_UInt();
     $planning_tracker_id->required();
     return $planning_tracker_id->validate($planning_parameters->planning_tracker_id);
 }
 /**
  * Perform wiki attachment removal.
  */
 function deleteAttachments()
 {
     $request = HTTPRequest::instance();
     if ($request->isPost() && $request->exist('attachments_to_delete')) {
         $args = $request->get('attachments_to_delete');
         $deleteStatus = true;
         $um = UserManager::instance();
         $user = $um->getCurrentUser();
         foreach ($args as $id) {
             $valid = new Valid_UInt('repo_id');
             $valid->required();
             if ($valid->validate($id)) {
                 $wa = new WikiAttachment();
                 $wa->initWithId($id);
                 if ($wa->validate() && $wa->gid == $_REQUEST['group_id'] && $wa->isAutorized($user->getId())) {
                     if (!$wa->deleteAttachment()) {
                         $deleteStatus = false;
                     }
                 } else {
                     $deleteStatus = false;
                 }
             } else {
                 $deleteStatus = false;
             }
         }
         if ($deleteStatus) {
             $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('wiki_actions_wikiserviceadmin', 'delete_attachment_success'));
         } else {
             $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('wiki_actions_wikiserviceadmin', 'delete_attachment_failure'));
         }
     }
 }
Example #15
0
}
$vRelative = new Valid_WhiteList('relative', array('true'));
$vRelative->required();
if ($request->valid($vRelative)) {
    $relative = true;
} else {
    $relative = false;
}
$vOrder = new Valid_WhiteList('order', array('start_size', 'end_size', 'evolution', 'evolution_rate'));
$vOrder->required();
if ($request->valid($vOrder)) {
    $order = $request->get('order');
} else {
    $order = 'end_size';
}
$vOffset = new Valid_UInt('offset');
$vOffset->required();
if ($request->valid($vOffset)) {
    $offset = $request->get('offset');
} else {
    $offset = 0;
}
$title = 'Disk usage';
$GLOBALS['HTML']->includeCalendarScripts();
$GLOBALS['HTML']->header(array('title' => $title));
echo '<h1>' . $title . '</h1>';
echo '
<table>
  <tr>
    <th align="center">Service/Projects</th>
    <th align="center">Users</th>
Example #16
0
<?php

//
// SourceForge: Breaking Down the Barriers to Open Source Development
// Copyright (c) Enalean, 2015. All rights reserved
// Copyright 1999-2000 (c) The SourceForge Crew
// http://sourceforge.net
//
require_once 'pre.php';
require_once 'bookmarks.php';
require_once 'my_utils.php';
$request = HTTPRequest::instance();
$vId = new Valid_UInt('bookmark_id');
$vId->setErrorMessage('bookmark_id is required');
$vId->required();
if (!$request->valid($vId)) {
    $GLOBALS['Response']->redirect('/my');
} else {
    $bookmark_id = (int) $request->get('bookmark_id');
}
$vUrl = new Valid_String('bookmark_url');
$vUrl->setErrorMessage('Url is required');
$vUrl->required();
$vTitle = new Valid_String('bookmark_title');
$vTitle->setErrorMessage('Title is required');
$vTitle->required();
$bookmark_url_id = '/my/bookmark_edit.php?bookmark_id=' . $bookmark_id;
$csrf_token = new CSRFSynchronizerToken($bookmark_url_id);
if ($request->isPost() && $request->valid($vUrl) && $request->valid($vTitle)) {
    $csrf_token->check();
    $bookmark_url = $request->get('bookmark_url');
 /**
  * Validate request values
  *
  * @param HTTPRequest $request request containing form values
  *
  * @return Array
  */
 function validateRequest($request)
 {
     $status = true;
     $invalid = array();
     $valid = new Valid_String('request_summary');
     $valid->required();
     $summary = trim($request->get('request_summary'));
     if ($request->valid($valid) && strlen($summary) < self::MAX_SUMMARY_LENGTH && $summary != '') {
         $params['summary'] = $summary;
     } else {
         $status = false;
         $invalid[] = $GLOBALS['Language']->getText('plugin_requesthelp', 'summary');
     }
     $valid = new Valid_Text('request_description');
     $valid->required();
     $description = trim($request->get('request_description'));
     $defaultDescription = $GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_default_description');
     if ($request->valid($valid) && strlen($description) < self::MAX_DESCRIPTION_LENGTH && $description != '' && $description != $defaultDescription) {
         $params['description'] = $description;
     } else {
         $status = false;
         $invalid[] = 'Description';
     }
     $valid = new Valid_UInt('type');
     $valid->required();
     if ($request->valid($valid)) {
         $requestType = $request->get('type');
         $params['type'] = $requestType;
         switch ($requestType) {
             case RequestHelp::TYPE_SUPPORT:
                 $params['text_type'] = $this->_getPluginProperty('support_request');
                 break;
             case RequestHelp::TYPE_ENHANCEMENT:
                 $params['text_type'] = $this->_getPluginProperty('enhancement_request');
                 break;
             default:
                 $status = false;
                 $invalid[] = 'Type';
                 break;
         }
     } else {
         $status = false;
         $invalid[] = 'Type';
     }
     $valid = new Valid_UInt('severity');
     $valid->required();
     if ($request->valid($valid)) {
         $severity = $request->get('severity');
         $params['severity'] = $severity;
         switch ($severity) {
             case RequestHelp::SEVERITY_MINOR:
                 $params['text_severity'] = 'Minor';
                 break;
             case RequestHelp::SEVERITY_SERIOUS:
                 $params['text_severity'] = 'Serious';
                 break;
             case RequestHelp::SEVERITY_CRITICAL:
                 $params['text_severity'] = 'Critical';
                 break;
             default:
                 $status = false;
                 $invalid[] = $GLOBALS['Language']->getText('plugin_requesthelp', 'severity');
                 break;
         }
     } else {
         $status = false;
         $invalid[] = $GLOBALS['Language']->getText('plugin_requesthelp', 'severity');
     }
     $cc = array();
     $mails = array_map('trim', preg_split('/[,;]/', $request->get('cc')));
     $rule = new Rule_Email();
     $um = $this->_getUserManager();
     $invalidCc = array();
     foreach ($mails as $mail) {
         if ($rule->isValid($mail)) {
             $cc[] = $mail;
         } else {
             if (trim($mail) != '') {
                 $user = $um->findUser($mail);
                 if ($user) {
                     $mail = $user->getUserName();
                     if ($mail) {
                         $cc[] = $mail;
                     } else {
                         $invalidCc[] = $mail;
                     }
                 } else {
                     $invalidCc[] = $mail;
                 }
             }
         }
     }
     if (!empty($invalidCc)) {
         $c = $this->getController();
         $c->addWarn($GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_invalid_cc', implode(", ", $invalidCc)));
     }
     $params['cc'] = implode(";", $cc);
     return array('status' => $status, 'params' => $params, 'invalid' => $invalid);
 }
Example #18
0
function plugin_forumml_show_message($p, $hp, $msg, $id_parent, $purgeCache)
{
    $body = $msg['body'];
    $request = HTTPRequest::instance();
    // Is "ready to display" body already in cache or not
    $bodyIsCached = false;
    if (!empty($msg['cached_html']) && !$purgeCache) {
        $bodyIsCached = true;
    }
    if (PEAR::isError($from_info = Mail_RFC822::parseAddressList($msg['sender'], $GLOBALS['sys_default_domain'])) || !isset($from_info[0]) || !$from_info[0]->personal) {
        $from_info = $hp->purify($msg['sender'], CODENDI_PURIFIER_CONVERT_HTML);
    } else {
        $from_info = '<abbr title="' . $hp->purify($from_info[0]->mailbox . '@' . $from_info[0]->host, CODENDI_PURIFIER_CONVERT_HTML) . '">' . $hp->purify($from_info[0]->personal, CODENDI_PURIFIER_CONVERT_HTML) . '</abbr>';
    }
    echo '<div class="plugin_forumml_message">';
    // specific thread
    echo '<div class="plugin_forumml_message_header boxitemalt" id="plugin_forumml_message_' . $msg['id_message'] . '">';
    echo '<div class="plugin_forumml_message_header_subject">' . $hp->purify($msg['subject'], CODENDI_PURIFIER_CONVERT_HTML) . '</div>';
    echo '<a href="#' . $msg['id_message'] . '" title="message #' . $msg['id_message'] . '">';
    echo '<img src="' . $p->getThemePath() . '/images/ic/comment.png" id="' . $msg['id_message'] . '" style="vertical-align:middle" alt="#' . $msg['id_message'] . '" />';
    echo '</a>';
    echo ' <span class="plugin_forumml_message_header_from">' . $from_info . '</span>';
    echo ' <span class="plugin_forumml_message_header_date">' . $GLOBALS['Language']->getText('plugin_forumml', 'show_message_date', array($msg['date'])) . '</span>';
    echo '&nbsp;<a href="#" id="plugin_forumml_toogle_msg_' . $msg['id_message'] . '" class="plugin_forumml_toggle_font">' . $GLOBALS['Language']->getText('plugin_forumml', 'toggle_font') . '</a>';
    // get CC
    $cc = trim($msg['cc']);
    if ($cc) {
        if (PEAR::isError($cc_info = Mail_RFC822::parseAddressList($cc, $GLOBALS['sys_default_domain']))) {
            $ccs = $hp->purify($cc, CODENDI_PURIFIER_CONVERT_HTML);
        } else {
            $ccs = array();
            foreach ($cc_info as $c) {
                if (!$c->personal) {
                    $ccs[] = $hp->purify($c->mailbox . '@' . $c->host, CODENDI_PURIFIER_CONVERT_HTML);
                } else {
                    $ccs[] = '<abbr title="' . $hp->purify($c->mailbox . '@' . $c->host, CODENDI_PURIFIER_CONVERT_HTML) . '">' . $hp->purify($c->personal, CODENDI_PURIFIER_CONVERT_HTML) . '</abbr>';
                }
            }
            $ccs = implode(', ', $ccs);
        }
        print '<div class="plugin_forumml_message_header_cc">' . $GLOBALS['Language']->getText('plugin_forumml', 'show_message_cc') . ' ' . $ccs . '</div>';
    }
    // Message content
    if (strpos($msg['content_type'], 'multipart/') !== false) {
        $content_type = $msg['msg_type'];
    } else {
        $content_type = $msg['content_type'];
    }
    $is_html = strpos($content_type, "text/html") !== false;
    // get attached files
    if (count($msg['attachments'])) {
        print '<div class="plugin_forumml_message_header_attachments">';
        $first = true;
        foreach ($msg['attachments'] as $attachment) {
            // Special case, this is an HTML email
            if (preg_match('/.html$/i', $attachment['file_name'])) {
                // By default, the first html attachment replaces the default body (text)
                if ($first) {
                    if (!$bodyIsCached && is_file($attachment['file_path'])) {
                        $body = file_get_contents($attachment['file_path']);
                        // Make sure that the body is utf8
                        if (!mb_detect_encoding($body, 'UTF-8', true)) {
                            $body = mb_convert_encoding($body, 'UTF-8');
                        }
                        $is_html = true;
                    }
                    continue;
                } else {
                    $flink = $attachment['file_name'];
                }
            } else {
                $flink = $attachment['file_name'];
            }
            if (!$first) {
                echo ',&nbsp;&nbsp;';
            }
            echo "<img src='" . $p->getThemePath() . "/images/ic/attach.png'/>  <a href='upload.php?group_id=" . $request->get('group_id') . "&list=" . $request->get('list') . "&id=" . $attachment['id_attachment'] . "&topic=" . $id_parent . "'>" . $flink . "</a>";
            $first = false;
        }
        echo '</div>';
    }
    echo '</div>';
    print '<div id="plugin_forumml_message_content_' . $msg['id_message'] . '" class="plugin_forumml_message_content_std">';
    $body = str_replace("\r\n", "\n", $body);
    // If there is no cached html of if user requested to regenerate the cache, do it, otherwise use cached HTML.
    if (!$bodyIsCached) {
        // Purify message body, according to the content-type
        if ($is_html) {
            // Update attachment links
            $body = plugin_forumml_replace_attachment($msg['id_message'], $request->get('group_id'), $request->get('list'), $id_parent, $body);
            // Use CODENDI_PURIFIER_FULL for html mails
            $msg['cached_html'] = $hp->purify($body, CODENDI_PURIFIER_FULL, $request->get('group_id'));
        } else {
            // CODENDI_PURIFIER_FORUMML level : no basic html markups, no forms, no javascript,
            // Allowed: url + automagic links + <blockquote>
            $purified_body = $hp->purify($body, CODENDI_PURIFIER_CONVERT_HTML, $request->get('group_id'));
            $purified_body = str_replace('&gt;', '>', $purified_body);
            $tab_body = '';
            $level = 0;
            $current_level = 0;
            $search_for_quotes = false;
            $maxi = strlen($purified_body);
            for ($i = 0; $i < $maxi; ++$i) {
                if ($search_for_quotes) {
                    if ($purified_body[$i] == ">") {
                        ++$current_level;
                        if ($level < $current_level) {
                            $tab_body .= '<blockquote class="grep">';
                            ++$level;
                        }
                    } else {
                        $search_for_quotes = false;
                        if ($level > $current_level) {
                            $tab_body .= '</blockquote>';
                            --$level;
                        }
                        if ($purified_body[$i] == "\n" && $i < $maxi - 1) {
                            $search_for_quotes = true;
                            $current_level = 0;
                        }
                        $tab_body .= $purified_body[$i];
                    }
                } else {
                    if ($purified_body[$i] == "\n" && $i < $maxi - 1) {
                        $search_for_quotes = true;
                        $current_level = 0;
                    }
                    $tab_body .= $purified_body[$i];
                }
            }
            $purified_body = str_replace('>', '&gt;', $purified_body);
            $msg['cached_html'] = nl2br($tab_body);
        }
        db_query('UPDATE plugin_forumml_message SET cached_html="' . db_es($msg['cached_html']) . '" WHERE id_message=' . $msg['id_message']);
    }
    echo $msg['cached_html'];
    echo '</div>';
    // Reply
    echo '<div class="plugin_forumml_message_footer">';
    // If you click on 'Reply', load reply form
    $vMess = new Valid_UInt('id_mess');
    $vMess->required();
    if ($request->valid($vMess) && $request->get('id_mess') == $msg['id_message']) {
        $vReply = new Valid_WhiteList('reply', array(0, 1));
        $vReply->required();
        if ($request->valid($vReply) && $request->get('reply') == 1) {
            if ($is_html) {
                $body = $hp->purify($body, CODENDI_PURIFIER_STRIP_HTML);
            } else {
                $body = $hp->purify($body, CODENDI_PURIFIER_CONVERT_HTML);
            }
            plugin_forumml_reply($hp, $msg['subject'], $msg['id_message'], $id_parent, $body, $msg['sender']);
        }
    } else {
        print "<a href='message.php?group_id=" . $request->get('group_id') . "&topic=" . $id_parent . "&id_mess=" . $msg['id_message'] . "&reply=1&list=" . $request->get('list') . "#reply-" . $msg['id_message'] . "'>\n                            <img src='" . $p->getThemePath() . "/images/ic/comment_add.png'/>\n                            " . $GLOBALS['Language']->getText('plugin_forumml', 'reply') . "\n                        </a>";
    }
    echo '</div>';
    echo '</div>';
}
Example #19
0
//
// SourceForge: Breaking Down the Barriers to Open Source Development
// Copyright 1999-2000 (c) The SourceForge Crew
// http://sourceforge.net
//
//
require_once 'pre.php';
require '../forum/forum_utils.php';
$request =& HTTPRequest::instance();
if (user_isloggedin()) {
    /*
    	User obviously has to be logged in to monitor
    	a thread
    */
    $vForumId = new Valid_UInt('forum_id');
    $vForumId->required();
    if ($request->valid($vForumId)) {
        $forum_id = $request->get('forum_id');
        // Check permissions
        if (!forum_utils_access_allowed($forum_id)) {
            exit_error($Language->getText('global', 'error'), $Language->getText('forum_forum', 'forum_restricted'));
        }
        //If the forum is associated to a private news, non-allowed users shouldn't be able to monitor this forum
        // but they should be able to disable monitoring news that have been set from public to private
        $qry = "SELECT * FROM news_bytes WHERE forum_id=" . db_ei($forum_id);
        $res = db_query($qry);
        if (db_numrows($res) > 0) {
            if (!forum_utils_news_access($forum_id) && !user_monitor_forum($forum_id, user_getid())) {
                exit_error($Language->getText('global', 'error'), $Language->getText('news_admin_index', 'permission_denied'));
            }
Example #20
0
 /**
  * Display form to fill a request
  *
  * @param Array $params params of the hook
  *
  * @return Void
  */
 function displayForm($params = null)
 {
     $um = UserManager::instance();
     $user = $um->getCurrentUser();
     $ignoreLabs = $this->getController()->getPlugin()->getProperty('ignore_labs');
     if ($user->isLoggedIn() && ($ignoreLabs || $user->useLabFeatures())) {
         $type = RequestHelp::TYPE_SUPPORT;
         $severity = RequestHelp::SEVERITY_MINOR;
         $summary = '';
         $description = $GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_default_description');
         $cc = '';
         if (is_array($params)) {
             $valid = new Valid_UInt();
             if (isset($params['type']) && $valid->validate($params['type'])) {
                 $type = $params['type'];
             }
             if (isset($params['severity']) && $valid->validate($params['severity'])) {
                 $severity = $params['severity'];
             }
             $valid = new Valid_String();
             if (isset($params['summary']) && $valid->validate($params['summary'])) {
                 $summary = $params['summary'];
             }
             $valid = new Valid_Text();
             if (isset($params['description']) && $valid->validate($params['description'])) {
                 $description = $params['description'];
             }
             $valid = new Valid_String();
             if (isset($params['cc']) && $valid->validate($params['cc'])) {
                 $cc = $params['cc'];
             }
         }
         $p = PluginManager::instance()->getPluginByName('requesthelp');
         echo '<fieldset class="requesthelp_fieldset">
          <legend><b>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_explain_label') . '</b></legend>
          <form name="request" class="requesthelp_cssform" action="' . $p->getPluginPath() . '/" method="post" enctype="multipart/form-data">
              <table>
                  <tr>';
         echo '<td><b><a class="tooltip" href="#" title="' . $GLOBALS['Language']->getText('plugin_requesthelp', 'tooltip_type') . '">Type:</a></b>&nbsp;<span class="highlight"><big>*</big></b></span></td><td><select name="type"><option value="' . RequestHelp::TYPE_SUPPORT . '" ';
         if ($type == RequestHelp::TYPE_SUPPORT) {
             echo 'selected';
         }
         echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Support_request') . '</option>
                      <option value="' . RequestHelp::TYPE_ENHANCEMENT . '" ';
         if ($type == RequestHelp::TYPE_ENHANCEMENT) {
             echo 'selected';
         }
         echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Enhancement_request') . '</option>
                  </select>';
         echo '</td><td align="right"><b><a class="tooltip" href="#" title="' . $GLOBALS['Language']->getText('plugin_requesthelp', 'tooltip_severity') . '">' . $GLOBALS['Language']->getText('plugin_requesthelp', 'severity') . ':</a></b>&nbsp;<span class="highlight"><big>*</big></b></span>
                          <select name="severity">
                          <option value="' . RequestHelp::SEVERITY_MINOR . '" ';
         if ($severity == RequestHelp::SEVERITY_MINOR) {
             echo 'selected';
         }
         echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Minor') . '</option>
                          <option value="' . RequestHelp::SEVERITY_SERIOUS . '" ';
         if ($severity == RequestHelp::SEVERITY_SERIOUS) {
             echo 'selected';
         }
         echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Serious') . '</option>
                          <option value="' . RequestHelp::SEVERITY_CRITICAL . '" ';
         if ($severity == RequestHelp::SEVERITY_CRITICAL) {
             echo 'selected';
         }
         echo '>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'Critical') . '</option>
                          </select>
                      </td>
                  </tr>';
         echo '<tr><td><b><a class="tooltip" href="#" title="' . $GLOBALS['Language']->getText('plugin_requesthelp', 'tooltip_summary') . '">' . $GLOBALS['Language']->getText('plugin_requesthelp', 'summary') . ':</a></b>&nbsp;<span class="highlight"><big>*</big></span></td>
                  <td colspan="3"><input type="text" name="request_summary" value="' . $summary . '" /></td></tr>';
         echo '<tr><td><b><a class="tooltip" href="#" title="' . $GLOBALS['Language']->getText('plugin_requesthelp', 'tooltip_description') . '"><span class="requesthelp_totop">Description:</span></a></b>&nbsp;<span class="highlight"><span class="requesthelp_totop"><big>*</big></b></span></span></td><td  colspan="3"><textarea id="request_description" name="request_description">' . $description . '</textarea></td></tr>
         <tr><td></td><td colspan="3"><i><b><u>Note</u>: </b>' . $GLOBALS['Language']->getText('plugin_requesthelp', 'requesthelp_cc_note') . '</i></td></tr>
         <tr><td><label>CC :</label></td><td  colspan="3"><input id="requesthelp_cc" type="text" name="cc" value="' . $cc . '" /></td></tr>
         <tr><td><input name="action" type="hidden" value="submit_ticket" /></td><td><input name="submit" type="submit" value="Submit" /></td></tr>
             </table>
         </form>
     </fieldset>';
         $js = "\$('request_description').defaultValueActsAsHint();\n                   options = new Array();\n                   options['defaultValueActsAsHint'] = false;\n                   new UserAutoCompleter('requesthelp_cc', '" . util_get_dir_image_theme() . "', true, options);";
         $GLOBALS['Response']->includeFooterJavascriptSnippet($js);
     }
 }
Example #21
0
if (!$project || !is_object($project) || $project->isError()) {
    exit_no_group();
}
//if the project isn't active, require you to be a member of the super-admin group
if ($project->getStatus() != 'A') {
    session_require(array('group' => 1));
}
$vFunc = new Valid_WhiteList('func', array('member_req_notif_group', 'member_req_notif_message'));
$vFunc->required();
if ($request->isPost() && $request->valid($vFunc)) {
    /*
      updating the database
    */
    switch ($request->get('func')) {
        case 'member_req_notif_group':
            $vUGroups = new Valid_UInt('ugroups');
            $vUGroups->required();
            if ($request->validArray($vUGroups)) {
                $ugroups = $request->get('ugroups');
                // Remove ugroups that are empty or contain no project admins
                $result = ugroup_filter_ugroups_by_project_admin($group_id, $ugroups);
                $nonAdmins = $result['non_admins'];
                $validUgroups = $result['ugroups'];
                if (empty($validUgroups)) {
                    // If no valid ugroups the default one is project admins ugroup
                    $validUgroups = array($GLOBALS['UGROUP_PROJECT_ADMIN']);
                    $GLOBALS['Response']->addFeedback('error', $Language->getText('project_admin_index', 'member_request_delegation_ugroups_all_invalid'));
                } else {
                    // If some selected ugroups are not valid display them to the user.
                    $diff = array_diff($ugroups, $validUgroups);
                    if (!empty($diff)) {
Example #22
0
 */
 $vPath = new Valid_String('_path');
 $vPath->required();
 if ($request->valid($vPath)) {
     $_path = $request->get('_path');
 } else {
     $_path = '';
 }
 // MV: This comes from src/www/svn/index.php, it seems that user can
 // specify a rev_id here
 $vRevId1 = new Valid_UInt('rev_id');
 $vRevId1->required();
 if ($request->valid($vRevId1)) {
     $_rev_id = $request->get('rev_id');
 } else {
     $vRevId2 = new Valid_UInt('_rev_id');
     $vRevId2->required();
     if ($request->valid($vRevId2)) {
         $_rev_id = $request->get('_rev_id');
     } else {
         $_rev_id = '';
     }
 }
 $vCommiter = new Valid_String('_commiter');
 $vCommiter->required();
 if ($request->valid($vCommiter)) {
     $_commiter = $request->get('_commiter');
 } else {
     $_commiter = '';
 }
 $vSrch = new Valid_String('_srch');
Example #23
0
function frs_process_release_form($is_update, $request, $group_id, $title, $url)
{
    global $frspf, $frsrf, $frsff;
    $pm = ProjectManager::instance();
    //get and filter all inputs from $request
    $release = array();
    $res = $request->get('release');
    $vName = new Valid_String();
    $vPackage_id = new Valid_UInt();
    $vStatus_id = new Valid_UInt();
    if ($vName->validate($res['name']) && $vPackage_id->validate($res['package_id']) && $vStatus_id->validate($res['status_id'])) {
        $release['status_id'] = $res['status_id'];
        $release['name'] = $res['name'];
        $release['package_id'] = $res['package_id'];
    } else {
        $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_update_failed'));
        $GLOBALS['Response']->redirect('/file/showfiles.php?group_id=' . $group_id);
    }
    $um = UserManager::instance();
    $user = $um->getCurrentUser();
    $vDate = new Valid_String();
    if ($vDate->validate($res['date'])) {
        $release['date'] = $res['date'];
    } else {
        $release['date'] = "";
    }
    $vRelease_notes = new Valid_Text();
    if ($vRelease_notes->validate($res['release_notes'])) {
        $release['release_notes'] = $res['release_notes'];
    } else {
        $release['release_notes'] = "";
    }
    $vChange_log = new Valid_Text();
    if ($vChange_log->validate($res['change_log'])) {
        $release['change_log'] = $res['change_log'];
    } else {
        $release['change_log'] = "";
    }
    if ($request->valid(new Valid_String('js'))) {
        $js = $request->get('js');
    } else {
        $js = "";
    }
    if ($request->validArray(new Valid_String('ftp_file'))) {
        $ftp_file = $request->get('ftp_file');
    } else {
        $ftp_file = array();
    }
    if ($request->validArray(new Valid_UInt('file_processor'))) {
        $file_processor = $request->get('file_processor');
    } else {
        $file_processor = array();
    }
    if ($request->validArray(new Valid_UInt('file_type'))) {
        $file_type = $request->get('file_type');
    } else {
        $file_type = array();
    }
    if ($request->validArray(new Valid_String('reference_md5'))) {
        $reference_md5 = $request->get('reference_md5');
    } else {
        $reference_md5 = array();
    }
    if ($request->validArray(new Valid_String('comment'))) {
        $comment = $request->get('comment');
    } else {
        $comment = array();
    }
    if ($request->validArray(new Valid_UInt('ftp_file_processor'))) {
        $ftp_file_processor = $request->get('ftp_file_processor');
    } else {
        $ftp_file_processor = array();
    }
    if ($request->validArray(new Valid_UInt('ftp_file_type'))) {
        $ftp_file_type = $request->get('ftp_file_type');
    } else {
        $ftp_file_type = array();
    }
    if ($request->validArray(new Valid_String('ftp_reference_md5'))) {
        $ftp_reference_md5 = $request->get('ftp_reference_md5');
    } else {
        $ftp_reference_md5 = array();
    }
    if ($request->valid(new Valid_String('release_news_subject'))) {
        $release_news_subject = $request->get('release_news_subject');
    } else {
        $release_news_subject = "";
    }
    if ($request->valid(new Valid_Text('release_news_details'))) {
        $release_news_details = $request->get('release_news_details');
    } else {
        $release_news_details = "";
    }
    if ($request->valid(new Valid_WhiteList('private_news', array(0, 1)))) {
        $private_news = $request->get('private_news');
    } else {
        $private_news = 0;
    }
    if ($request->validArray(new Valid_UInt('ugroups'))) {
        $ugroups = $request->get('ugroups');
    } else {
        $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_update_failed'));
        $GLOBALS['Response']->redirect('/file/showfiles.php?group_id=' . $group_id);
    }
    if ($request->valid(new Valid_WhiteList('release_submit_news', array(0, 1)))) {
        $release_submit_news = (int) $request->get('release_submit_news');
    } else {
        $release_submit_news = 0;
    }
    if ($request->valid(new Valid_WhiteList('notification', array(0, 1)))) {
        $notification = $request->get('notification');
    } else {
        $notification = 0;
    }
    if ($is_update) {
        if ($request->validArray(new Valid_UInt('release_files_to_delete'))) {
            $release_files_to_delete = $request->get('release_files_to_delete');
        } else {
            $release_files_to_delete = array();
        }
        if ($request->validArray(new Valid_UInt('release_files'))) {
            $release_files = $request->get('release_files');
        } else {
            $release_files = array();
        }
        if ($request->validArray(new Valid_UInt('release_file_processor'))) {
            $release_file_processor = $request->get('release_file_processor');
        } else {
            $release_file_processor = array();
        }
        if ($request->validArray(new Valid_UInt('release_file_type'))) {
            $release_file_type = $request->get('release_file_type');
        } else {
            $release_file_type = array();
        }
        if ($request->validArray(new Valid_String('release_reference_md5'))) {
            $release_reference_md5 = $request->get('release_reference_md5');
        } else {
            $release_reference_md5 = array();
        }
        if ($request->validArray(new Valid_UInt('new_release_id'))) {
            $new_release_id = $request->get('new_release_id');
        } else {
            $new_release_id = array();
        }
        if ($request->validArray(new Valid_String('release_time'))) {
            $release_time = $request->get('release_time');
        } else {
            $release_time = array();
        }
        if ($request->validArray(new Valid_String('reference_md5'))) {
            $reference_md5 = $request->get('reference_md5');
        } else {
            $reference_md5 = array();
        }
        if ($request->validArray(new Valid_Text('release_comment'))) {
            $release_comment = $request->get('release_comment');
        } else {
            $release_comment = array();
        }
        if ($request->valid(new Valid_UInt('id'))) {
            $release['release_id'] = $request->get('id');
        } else {
            exit;
        }
    }
    $validator = new frsValidator();
    if ($is_update) {
        $valid = $validator->isValidForUpdate($release, $group_id);
    } else {
        $valid = $validator->isValidForCreation($release, $group_id);
    }
    if ($valid) {
        //uplaod release_notes and change_log if needed
        $data_uploaded = false;
        if (isset($_FILES['uploaded_change_log']) && !$_FILES['uploaded_change_log']['error']) {
            $code = addslashes(fread(fopen($_FILES['uploaded_change_log']['tmp_name'], 'r'), file_utils_get_size($_FILES['uploaded_change_log']['tmp_name'])));
            if (strlen($code) > 0 && strlen($code) < $GLOBALS['sys_max_size_upload']) {
                //size is fine
                $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'data_uploaded'));
                $data_uploaded = true;
                $release['change_log'] = $code;
            } else {
                //too big or small
                $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('file_admin_editreleases', 'length_err', $GLOBALS['sys_max_size_upload']));
            }
        }
        if (isset($_FILES['uploaded_release_notes']) && !$_FILES['uploaded_release_notes']['error']) {
            $code = addslashes(fread(fopen($_FILES['uploaded_release_notes']['tmp_name'], 'r'), file_utils_get_size($_FILES['uploaded_release_notes']['tmp_name'])));
            if (strlen($code) > 0 && strlen($code) < $GLOBALS['sys_max_size_upload']) {
                //size is fine
                if (!$data_uploaded) {
                    $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'data_uploaded'));
                }
                $release['release_notes'] = $code;
            } else {
                //too big or small
                $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('file_admin_editreleases', 'length_err', $GLOBALS['sys_max_size_upload']));
            }
        }
        if ($is_update) {
            // make sure that we don't change the date by error because of timezone reasons.
            // eg: release created in India (GMT +5:30) at 2004-06-03.
            // MLS in Los Angeles (GMT -8) changes the release notes
            // the release_date that we showed MLS is 2004-06-02.
            // with mktime(0,0,0,2,6,2004); we will change the unix time in the database
            // and the people in India will discover that their release has been created on 2004-06-02
            $rel =& $frsrf->getFRSReleaseFromDb($release['release_id']);
            if (format_date('Y-m-d', $rel->getReleaseDate()) == $release['date']) {
                // the date didn't change => don't update it
                $unix_release_time = $rel->getReleaseDate();
            } else {
                $date_list = split("-", $release['date'], 3);
                $unix_release_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]);
            }
        } else {
            //parse the date
            $date_list = split("-", $release['date'], 3);
            $unix_release_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]);
        }
        //now we create or update the release
        $array = array('release_date' => $unix_release_time, 'name' => $release['name'], 'status_id' => $release['status_id'], 'package_id' => $release['package_id'], 'notes' => $release['release_notes'], 'changes' => $release['change_log']);
        if ($is_update) {
            $array['release_id'] = $release['release_id'];
        }
        if ($is_update) {
            $res = $frsrf->update($array);
            if (!$res) {
                $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_update_failed'));
                //insert failed - go back to definition screen
            } else {
                //release added - now show the detail page for this new release
                $release_id = $array['release_id'];
                $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_updated', $release['name']));
            }
        } else {
            $res = $frsrf->create($array);
            if (!$res) {
                $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language'] > getText('file_admin_editreleases', 'add_rel_fail'));
                //insert failed - go back to definition screen
            } else {
                //release added - now show the detail page for this new release
                $release_id = $res;
                $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_added'));
            }
        }
        if ($res) {
            // extract cross references
            $reference_manager =& ReferenceManager::instance();
            $reference_manager->extractCrossRef($release['release_notes'], $release_id, ReferenceManager::REFERENCE_NATURE_RELEASE, $group_id);
            $reference_manager->extractCrossRef($release['change_log'], $release_id, ReferenceManager::REFERENCE_NATURE_RELEASE, $group_id);
            //set the release permissions
            list($return_code, $feedbacks) = permission_process_selection_form($group_id, 'RELEASE_READ', $release_id, $ugroups);
            if (!$return_code) {
                $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editpackages', 'perm_update_err'));
                $GLOBALS['Response']->addFeedback('error', $feedbacks);
            }
            //submit news if requested
            if ($release_id && user_ismember($group_id, 'A') && $release_submit_news) {
                news_submit($group_id, $release_news_subject, $release_news_details, $private_news, 3);
            }
            // Send notification
            if ($notification) {
                $rel = $frsrf->getFRSReleaseFromDb($release_id);
                $count = $frsrf->emailNotification($rel);
                if ($count === false) {
                    $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'mail_failed', array($GLOBALS['sys_email_admin'])));
                } else {
                    if ($count > 0) {
                        $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'email_sent', $count));
                    }
                }
            }
            $group = $pm->getProject($group_id);
            $group_unix_name = $group->getUnixName(false);
            $project_files_dir = $GLOBALS['ftp_frs_dir_prefix'] . '/' . $group_unix_name;
            if ($is_update) {
                $files =& $rel->getFiles();
                //remove files
                foreach ($release_files_to_delete as $rel_file) {
                    $res =& $frsff->getFRSFileFromDb($rel_file);
                    $fname = $res->getFileName();
                    $res = $frsff->delete_file($group_id, $rel_file);
                    if ($res == 0) {
                        $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'f_not_yours', basename($fname)));
                    } else {
                        $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'file_deleted', basename($fname)));
                    }
                }
                //update files
                $index = 0;
                foreach ($release_files as $rel_file) {
                    if (!$release_files_to_delete || !in_array($rel_file, $release_files_to_delete)) {
                        $package_id = $release['package_id'];
                        $fname = $files[$index]->getFileName();
                        $list = split('/', $fname);
                        $fname = $list[sizeof($list) - 1];
                        if ($new_release_id[$index] != $release_id) {
                            //changing to a different release for this file
                            //see if the new release is valid for this project
                            $res2 = $frsrf->getFRSReleaseFromDb($new_release_id[$index], $group_id);
                            if (!$res2 || count($res2) < 1) {
                                //release not found for this project
                                $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_not_yours', $fname));
                            } else {
                                $package_id = $res2->getPackageID();
                            }
                        }
                        if ($new_release_id[$index] == $release_id || $res2) {
                            if (!ereg("[0-9]{4}-[0-9]{2}-[0-9]{2}", $release_time[$index])) {
                                $GLOBALS['Response']->addFeedback('warning', $GLOBALS['Language']->getText('file_admin_editreleases', 'data_not_parsed_file', $fname));
                            } else {
                                $res2 =& $frsff->getFRSFileFromDb($rel_file);
                                if (format_date('Y-m-d', $res2->getReleaseTime()) == $release_time[$index]) {
                                    $unix_release_time = $res2->getReleaseTime();
                                } else {
                                    $date_list = split("-", $release_time[$index], 3);
                                    $unix_release_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]);
                                }
                                $array = array('release_id' => $new_release_id[$index], 'release_time' => $unix_release_time, 'type_id' => $release_file_type[$index], 'processor_id' => $release_file_processor[$index], 'file_id' => $rel_file, 'comment' => $release_comment[$index], 'filename' => 'p' . $package_id . '_r' . $new_release_id[$index] . '/' . $fname, 'filepath' => 'p' . $package_id . '_r' . $new_release_id[$index] . '/' . $fname . '_' . $unix_release_time);
                                if ($release_reference_md5[$index] && $release_reference_md5[$index] != '') {
                                    $array['reference_md5'] = $release_reference_md5[$index];
                                }
                                $res = $frsff->update($array);
                                if ($res) {
                                    $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'file_updated', $fname));
                                }
                            }
                        }
                    }
                    $index++;
                }
            }
            //add new files
            //files processing
            $http_files_list = array();
            $processor_type_list = array();
            $file_type_list = array();
            $http_files_processor_type_list = array();
            $ftp_files_processor_type_list = array();
            if (isset($js) && $js == 'no_js') {
                //if javascript is not allowed, there is maximum one file to upload
                // TODO : fix warnings due to array instead of string for "file_processor", "file_type" & "reference_md5"
                if ($ftp_file[0] != -1) {
                    $ftp_files_processor_type_list[] = array('name' => $ftp_file[0], 'processor' => $file_processor, 'type' => $file_type, 'reference_md5' => $reference_md5, 'comment' => $comment);
                } else {
                    if (trim($_FILES['file']['name'][0]) != '') {
                        $http_files_processor_type_list[] = array('error' => $_FILES['file']['error'][0], 'name' => stripslashes($_FILES['file']['name'][0]), 'tmp_name' => $_FILES['file']['tmp_name'][0], 'processor' => $file_processor, 'type' => $file_type, 'reference_md5' => $reference_md5, 'comment' => $comment);
                    }
                }
            } else {
                //get http files with the associated processor type and file type in allowed javascript case
                $nb_files = isset($_FILES['file']) ? count($_FILES['file']['name']) : 0;
                for ($i = 0; $i < $nb_files; $i++) {
                    if (trim($_FILES['file']['name'][$i]) != '') {
                        $http_files_processor_type_list[] = array('error' => $_FILES['file']['error'][$i], 'name' => stripslashes($_FILES['file']['name'][$i]), 'tmp_name' => $_FILES['file']['tmp_name'][$i], 'processor' => $file_processor[$i], 'type' => $file_type[$i], 'reference_md5' => $reference_md5[$i], 'comment' => $comment[$i]);
                    }
                }
                //remove hidden ftp_file input (if the user let the select boxe on --choose file)
                $tmp_file_list = array();
                $index = 0;
                foreach ($ftp_file as $file) {
                    if (trim($file) != '') {
                        $ftp_files_processor_type_list[] = array('name' => $file, 'processor' => $ftp_file_processor[$index], 'type' => $ftp_file_type[$index], 'reference_md5' => $ftp_reference_md5[$index]);
                        $index++;
                    }
                }
            }
            if (count($http_files_processor_type_list) > 0 || count($ftp_files_processor_type_list) > 0) {
                //see if this release belongs to this project
                $res1 =& $frsrf->getFRSReleaseFromDb($release_id, $group_id);
                if (!$res1 || count($res1) < 1) {
                    //release not found for this project
                    $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'rel_not_yours'));
                } else {
                    $now = time();
                    $addingFiles = false;
                    //iterate and add the http files to the frs_file table
                    foreach ($http_files_processor_type_list as $file) {
                        $filename = $file['name'];
                        if (isset($file['error'])) {
                            switch ($file['error']) {
                                case UPLOAD_ERR_OK:
                                    // all is OK
                                    break;
                                case UPLOAD_ERR_INI_SIZE:
                                case UPLOAD_ERR_FORM_SIZE:
                                    $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'error_upload_size', $file['error']));
                                    break;
                                case UPLOAD_ERR_PARTIAL:
                                    $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'error_upload_partial', $file['error']));
                                    break;
                                case UPLOAD_ERR_NO_FILE:
                                    $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'error_upload_nofile', $file['error']));
                                    break;
                                default:
                                    $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'error_upload_unknown', $file['error']));
                            }
                        }
                        if (is_uploaded_file($file['tmp_name'])) {
                            $uploaddir = $frsff->getSrcDir($request->getProject());
                            $uploadfile = $uploaddir . "/" . basename($filename);
                            if (!file_exists($uploaddir) || !is_writable($uploaddir) || !move_uploaded_file($file['tmp_name'], $uploadfile)) {
                                $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'not_add_file') . ": " . basename($filename));
                            } else {
                                $newFile = new FRSFile();
                                $newFile->setRelease($res1);
                                $newFile->setFileName($filename);
                                $newFile->setProcessorID($file['processor']);
                                $newFile->setTypeID($file['type']);
                                $newFile->setReferenceMd5($file['reference_md5']);
                                $newFile->setUserId($user->getId());
                                $newFile->setComment($file['comment']);
                                try {
                                    $frsff->createFile($newFile);
                                    $addingFiles = true;
                                } catch (Exception $e) {
                                    $GLOBALS['Response']->addFeedback('error', $e->getMessage());
                                }
                            }
                        } else {
                            $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('file_admin_editreleases', 'not_add_file') . ": " . basename($filename));
                        }
                    }
                    //iterate and add the ftp files to the frs_file table
                    foreach ($ftp_files_processor_type_list as $file) {
                        $filename = $file['name'];
                        $newFile = new FRSFile();
                        $newFile->setRelease($res1);
                        $newFile->setFileName($filename);
                        $newFile->setProcessorID($file['processor']);
                        $newFile->setTypeID($file['type']);
                        $newFile->setReferenceMd5($file['reference_md5']);
                        $newFile->setUserId($user->getId());
                        try {
                            $frsff->createFile($newFile, ~FRSFileFactory::COMPUTE_MD5);
                            $addingFiles = true;
                            $em = EventManager::instance();
                            $em->processEvent(Event::COMPUTE_MD5SUM, array('fileId' => $newFile->getFileID()));
                            $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'offline_md5', $filename));
                        } catch (Exception $e) {
                            $GLOBALS['Response']->addFeedback('error', $e->getMessage());
                        }
                    }
                }
                if ($addingFiles) {
                    $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('file_admin_editreleases', 'add_files'));
                }
            }
            //redirect to files
            $GLOBALS['Response']->redirect('/file/?group_id=' . $group_id);
        }
    } else {
        $GLOBALS['Response']->addFeedback('error', $validator->getErrors());
    }
    frs_display_release_form($is_update, $release, $group_id, $title, $url);
}
Example #24
0
 * along with Codendi; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
require_once 'pre.php';
require_once 'www/file/file_utils.php';
$vGroupId = new Valid_GroupId();
$vGroupId->required();
if ($request->valid($vGroupId)) {
    $group_id = $request->get('group_id');
} else {
    exit_no_group();
}
if (!user_isloggedin() || !user_ismember($group_id, 'R2')) {
    exit_permission_denied();
}
$vProcId = new Valid_UInt('proc_id');
$vProcId->required();
if ($request->valid($vProcId)) {
    $proc_id = $request->get('proc_id');
} else {
    $GLOBALS['Response']->redirect('manageprocessors.php?group_id=' . $group_id);
}
file_utils_admin_header(array('title' => $Language->getText('file_admin_manageprocessors', 'update_proc'), 'help' => 'ManageProcessorsList.html'));
$sql = "SELECT name,rank FROM frs_processor WHERE group_id=" . db_ei($group_id) . " AND processor_id=" . db_ei($proc_id);
$result = db_query($sql);
$name = db_result($result, 0, 'name');
$rank = db_result($result, 0, 'rank');
if (db_numrows($result) < 1) {
    #invalid  processor  id
    $feedback .= " " . $Language->getText('file_admin_manageprocessors', 'invalid_procid');
    file_utils_footer(array());
 /**
  * Update preferences
  *
  * @param Array $request HTTP request
  *
  * @return Boolean
  */
 function updatePreferences($request)
 {
     $request->valid(new Valid_String('cancel'));
     $vOffset = new Valid_UInt('plugin_git_user_pushes_offset');
     $vOffset->required();
     $vDays = new Valid_UInt('plugin_git_user_pushes_past_days');
     $vDays->required();
     if (!$request->exist('cancel')) {
         if ($request->valid($vOffset)) {
             $this->offset = $request->get('plugin_git_user_pushes_offset');
         } else {
             $this->offset = 5;
         }
         if ($request->valid($vDays)) {
             $this->pastDays = $request->get('plugin_git_user_pushes_past_days');
         } else {
             $this->pastDays = 30;
         }
         user_set_preference('plugin_git_user_pushes_offset', $this->offset);
         user_set_preference('plugin_git_user_pushes_past_days', $this->pastDays);
     }
     return true;
 }
 /**
  * Validate date Reminder Id.
  *
  * @param HTTPRequest $request HTTP request
  *
  * @return Integer
  */
 public function validateReminderId(HTTPRequest $request)
 {
     $validReminderId = new Valid_UInt('reminder_id');
     $validReminderId->required();
     if ($request->valid($validReminderId)) {
         return $request->get('reminder_id');
     } else {
         $errorMessage = $GLOBALS['Language']->getText('project_admin_utils', 'tracker_date_reminder_invalid_reminder', array($request->get('reminder_id')));
         throw new Tracker_DateReminderException($errorMessage);
     }
 }
 function updatePreferences(&$request)
 {
     $done = false;
     $vContentId = new Valid_UInt('content_id');
     $vContentId->required();
     if (($chart = $request->get('chart')) && $request->valid($vContentId)) {
         $vId = new Valid_Uint('chart_id');
         if ($request->validInArray('chart', $vId)) {
             $id = " chart_id   = " . db_escape_int($chart['chart_id']) . " ";
         } else {
             $id = '';
         }
         $vTitle = new Valid_String('title');
         if ($request->validInArray('chart', $vTitle)) {
             $title = " title = '" . db_escape_string($chart['title']) . "' ";
         } else {
             $title = '';
         }
         if ($id || $title) {
             $sql = "UPDATE plugin_graphontrackersv5_widget_chart SET " . $title . ", " . $id . " WHERE owner_id = " . $this->owner_id . " AND owner_type = '" . $this->owner_type . "' AND id = " . (int) $request->get('content_id');
             $res = db_query($sql);
             $done = true;
         }
     }
     return $done;
 }
Example #28
0
<?php

require_once 'pre.php';
$valid = new Valid_UInt('tracker_id');
$valid->required();
if ($request->valid($valid)) {
    if (user_get_preference('tracker_comment_invertorder_' . $request->get('tracker_id'))) {
        user_del_preference('tracker_comment_invertorder_' . $request->get('tracker_id'));
    } else {
        user_set_preference('tracker_comment_invertorder_' . $request->get('tracker_id'), '1');
    }
}
Example #29
0
 * Codendi 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.
 *
 * Codendi 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 Codendi. If not, see <http://www.gnu.org/licenses/>.
 */
require_once 'pre.php';
$request = HTTPRequest::instance();
$vGroupId = new Valid_UInt('group_id');
$vGroupId->required();
if ($request->valid($vGroupId)) {
    $group_id = $request->get('group_id');
} else {
    exit_no_group();
}
$pm = ProjectManager::instance();
$group = $pm->getProject($group_id);
if (!$group || !is_object($group) || $group->isError()) {
    exit_no_group();
}
$vExport = new Valid_WhiteList('export', array('user_groups', 'user_groups_format'));
$vExport->required();
if ($request->valid($vExport)) {
    $export = $request->get('export');
Example #30
0
 function updatePreferences($request)
 {
     $done = false;
     $vContentId = new Valid_UInt('content_id');
     $vContentId->required();
     if (($rss = $request->get('rss')) && $request->valid($vContentId)) {
         $vUrl = new Valid_String('url');
         if ($request->validInArray('rss', $vUrl)) {
             $url = " url   = '" . db_escape_string($rss['url']) . "' ";
         } else {
             $url = '';
         }
         $vTitle = new Valid_String('title');
         if ($request->validInArray('rss', $vTitle)) {
             $title = " title = '" . db_escape_string($rss['title']) . "' ";
         } else {
             $title = '';
         }
         if ($url || $title) {
             $sql = "UPDATE widget_rss SET " . $title . ", " . $url . " WHERE owner_id = " . $this->owner_id . " AND owner_type = '" . $this->owner_type . "' AND id = " . (int) $request->get('content_id');
             $res = db_query($sql);
             $done = true;
         }
     }
     return $done;
 }