function testFactoryShouldReturnModStuffIfStuffAuthIsConfiguredForThisProjectAndDefaultConfigIsModPerl()
 {
     $projectInfo = array();
     ForgeConfig::set(SVN_Apache_SvnrootConf::CONFIG_SVN_AUTH_KEY, SVN_Apache_SvnrootConf::CONFIG_SVN_AUTH_PERL);
     $factory = $this->GivenAAuthFactoryWithStuffPlugin();
     $this->assertIsA($factory->get($projectInfo), 'SVN_Apache_ModStuff');
 }
 private function displayBody()
 {
     $items = $this->data_mapper->fetchAll($this->getProjectFromRequest());
     $presenter = new ChooseNewsPresenter($items, $this->request->get('project_id'));
     $renderer = TemplateRendererFactory::build()->getRenderer(ForgeConfig::get('codendi_dir') . '/src/templates/news/');
     $renderer->renderToPage('choose_news', $presenter);
 }
 private function stripOutlookTextQuote($mail_content)
 {
     if (ForgeConfig::get('sys_strip_outlook') == 1) {
         return $this->stripOutlook($this->stripOutlook($mail_content, 'en'), 'fr');
     }
     return $mail_content;
 }
示例#4
0
function send_new_user_email($to, $login, $password, $confirm_hash, $template, $isAdminPresenter)
{
    //needed by new_user_email.txt
    $base_url = get_server_url();
    $defaultTheme = $GLOBALS['sys_themedefault'];
    $color_logo = "#0000";
    $color_button = "#347DBA";
    if (themeIsFlamingParrot($defaultTheme)) {
        $defaultThemeVariant = $GLOBALS['sys_default_theme_variant'];
        $color_logo = FlamingParrot_Theme::getColorOfCurrentTheme($defaultThemeVariant);
        $color_button = $color_logo;
    }
    $logo_url = $base_url . "/themes/" . $defaultTheme . "/images/organization_logo.png";
    $has_logo = file_exists(dirname(__FILE__) . '/../themes/' . $defaultTheme . '/images/organization_logo.png');
    if ($isAdminPresenter) {
        $subject = $GLOBALS['Language']->getText('account_register', 'welcome_email_title', $GLOBALS['sys_name']);
        include $GLOBALS['Language']->getContent('account/new_account_email');
        $presenter = new MailRegisterByAdminPresenter($has_logo, $logo_url, $title, $section_one, $section_two, $section_after_login, $thanks, $signature, $help, $color_logo, $login, $section_three, $section_after_password, $password);
    } else {
        $subject = $GLOBALS['Language']->getText('include_proj_email', 'account_register', $GLOBALS['sys_name']);
        include $GLOBALS['Language']->getContent('include/new_user_email');
        $redirect_url = $base_url . "/account/verify.php?confirm_hash={$confirm_hash}";
        $presenter = new MailRegisterByUserPresenter($has_logo, $logo_url, $title, $section_one, $section_two, $section_after_login, $thanks, $signature, $help, $color_logo, $login, $redirect_url, $redirect_button, $color_button);
    }
    $renderer = TemplateRendererFactory::build()->getRenderer(ForgeConfig::get('codendi_dir') . '/src/templates/mail/');
    $mail = initializeMail($subject, $GLOBALS['sys_noreply'], $to, $renderer->renderToString($template, $presenter), $message);
    return $mail->send();
}
示例#5
0
 public function stream(Git_HTTP_Command $command)
 {
     $cwd = '/tmp';
     $descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"));
     if (ForgeConfig::get('sys_logger_level') == Logger::DEBUG) {
         $descriptorspec[2] = array('file', ForgeConfig::get('codendi_log') . '/git_http_error_log', 'a');
     }
     $pipes = array();
     $this->logger->debug('Command: ' . $command->getCommand());
     $this->logger->debug('Environment: ' . print_r($command->getEnvironment(), true));
     $process = proc_open($command->getCommand(), $descriptorspec, $pipes, $cwd, $command->getEnvironment());
     if (is_resource($process)) {
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             fwrite($pipes[0], file_get_contents('php://input'));
         }
         fclose($pipes[0]);
         $first = true;
         while ($result = stream_get_contents($pipes[1], self::CHUNK_LENGTH)) {
             if ($first) {
                 list($headers, $body) = http_split_header_body($result);
                 foreach (explode("\r\n", $headers) as $header) {
                     header($header);
                 }
                 file_put_contents('php://output', $body);
             } else {
                 file_put_contents('php://output', $result);
             }
             $first = false;
         }
         fclose($pipes[1]);
         $return_value = proc_close($process);
     }
 }
示例#6
0
function html_get_timezone_popup($selected = 0)
{
    $GLOBALS['HTML']->includeFooterJavascriptFile('/scripts/jstimezonedetect/jstz.min.js');
    $GLOBALS['HTML']->includeFooterJavascriptFile('/scripts/tuleap/timezone.js');
    $renderer = TemplateRendererFactory::build()->getRenderer(ForgeConfig::get('codendi_dir') . '/src/templates/account/');
    return $renderer->renderToString('timezone', new Account_TimezoneSelectorPresenter($selected));
}
 public function display(Codendi_Request $request)
 {
     $title = $GLOBALS['Language']->getText('plugin_git', 'descriptor_name');
     $renderer = TemplateRendererFactory::build()->getRenderer(dirname(GIT_BASE_DIR) . '/templates');
     $presenter = null;
     switch ($request->get('action')) {
         case 'list-repositories':
             $presenter = $this->getListRepositoriesPresenter($request);
             break;
         case 'manage-allowed-projects':
         case 'set-mirror-restriction':
         case 'update-allowed-project-list':
             $presenter = $this->getManageAllowedProjectsPresenter($request);
             $renderer = TemplateRendererFactory::build()->getRenderer(ForgeConfig::get('codendi_dir') . '/src/templates/resource_restrictor');
             break;
         case 'show-edit-mirror':
         case 'show-add-mirror':
             break;
         default:
             $presenter = $this->getAllMirrorsPresenter($title);
             break;
     }
     if (!$presenter) {
         return;
     }
     $GLOBALS['HTML']->header(array('title' => $title, 'selected_top_tab' => 'admin'));
     $renderer->renderToPage($presenter->getTemplate(), $presenter);
     $GLOBALS['HTML']->footer(array());
 }
 /**
  * Return path of the file that contains ssh command stderr
  *
  * @return String
  */
 public function getStdErrFilePath()
 {
     if (!$this->filepath) {
         $this->filepath = tempnam(ForgeConfig::get('tmp_dir'), 'stderr_');
     }
     return $this->filepath;
 }
 public function itCreatesUserWithPrefixSetFromConfig()
 {
     $suffix = '-team';
     ForgeConfig::set(GenericUserFactory::CONFIG_KEY_SUFFIX, $suffix);
     $generic_user = $this->factory->create('120', 'my_password');
     $this->assertEqual(substr($generic_user->getUnixName(), -strlen($suffix)), $suffix);
 }
示例#10
0
 public static function getUserGroupDisplayName($name)
 {
     switch ($name) {
         case self::NOBODY:
             return $GLOBALS['Language']->getText('project_ugroup', 'ugroup_nobody');
         case self::ANON:
             return $GLOBALS['Language']->getText('project_ugroup', 'ugroup_anonymous_users');
         case self::AUTHENTICATED:
             $label = ForgeConfig::get(self::CONFIG_AUTHENTICATED_LABEL);
             if ($label == false) {
                 $label = $GLOBALS['Language']->getText('project_ugroup', 'ugroup_authenticated_users');
             }
             return $label;
         case self::REGISTERED:
             $label = ForgeConfig::get(self::CONFIG_REGISTERED_LABEL);
             if ($label == false) {
                 $label = $GLOBALS['Language']->getText('project_ugroup', 'ugroup_registered_users');
             }
             return $label;
         case self::PROJECT_MEMBERS:
             return $GLOBALS['Language']->getText('project_ugroup', 'ugroup_project_members');
         case self::PROJECT_ADMINS:
             return $GLOBALS['Language']->getText('project_ugroup', 'ugroup_project_admins');
         default:
             return util_translate_name_ugroup($name);
     }
 }
示例#11
0
 public function setUp()
 {
     parent::setUp();
     ForgeConfig::set('codendi_log', '/tmp');
     $this->log_file = tempnam(ForgeConfig::get('codendi_log'), 'codendi_syslog');
     $this->logger = new BackendLogger($this->log_file);
 }
 public function testFactoryShouldSetADefaultLanguageForUnknownLocales()
 {
     $default_language = new BaseLanguage($this->supportedLanguages, ForgeConfig::get('sys_lang'));
     $default_language->loadLanguage(ForgeConfig::get('sys_lang'));
     $factory = new BaseLanguageFactory();
     $this->assertEqual($default_language, $factory->getBaseLanguage('unknown_locale'));
 }
 public function itSavesNothingIfThereAreNoProjectLanguageAndMoreThanOneSystemLanguage()
 {
     ForgeConfig::set('sys_supported_languages', 'it_IT,ja_JP');
     stub($this->dao)->getUsedLanguageForProject()->returns(false);
     expect($this->dao)->updateLanguageOption()->never();
     $this->language_manager->getUsedLanguageForProject($this->project);
 }
 public function registerShutdownFunction()
 {
     if (ForgeConfig::get('DEBUG_MODE') && strpos($_SERVER['REQUEST_URI'], '/soap/') !== 0) {
         $php_code = '$request =& ' . get_class($this) . '::instance(); $request->checkThatAllVariablesAreValidated();';
         register_shutdown_function(create_function('', $php_code));
     }
 }
 public function getAvatarIfEnabled()
 {
     if (ForgeConfig::get('sys_enable_avatars')) {
         return '<div class="tracker_artifact_followup_avatar">' . $this->getHTMLAvatar() . '</div>';
     }
     return '';
 }
示例#16
0
 /**
  * @param string $request_uri '/plugins/agiledashboard/?group_id=1&action=show&....
  */
 public function __construct($request_uri)
 {
     $proto = ForgeConfig::get('sys_force_ssl') ? 'https' : 'http';
     $url = $proto . '://' . ForgeConfig::get('sys_default_domain') . $request_uri;
     $dimensions = $this->width . 'x' . $this->height;
     $this->class = Toggler::getClassname('plugin_cardwall_qrcode_toggler', false, true);
     $this->url = 'http://chart.apis.google.com/chart?' . http_build_query(array('chs' => $dimensions, 'cht' => 'qr', 'chld' => 'L|0', 'chl' => $url));
 }
 private function getPasswordLifetimeInSeconds()
 {
     $password_lifetime_in_days = ForgeConfig::get('sys_password_lifetime');
     if ($password_lifetime_in_days) {
         return DateHelper::SECONDS_IN_A_DAY * $password_lifetime_in_days;
     }
     return false;
 }
示例#18
0
 public function searchSvnRepositories()
 {
     $auth_mod = $this->da->quoteSmart(ForgeConfig::get(SVN_Apache_SvnrootConf::CONFIG_SVN_AUTH_KEY));
     $sql = "SELECT groups.*, service.*, unix_group_name AS repository_name, {$auth_mod} AS auth_mod\n                FROM groups, service\n                WHERE groups.group_id = service.group_id\n                  AND service.short_name = 'svn'\n                  AND service.is_used = '1'\n                  AND groups.status = 'A'";
     $sql_fragments = array($sql);
     $this->event_manager->processEvent(Event::GET_SVN_LIST_REPOSITORIES_SQL_FRAGMENTS, array('sql_fragments' => &$sql_fragments));
     return $this->retrieve(implode(' UNION ', $sql_fragments));
 }
示例#19
0
 public function tearDown()
 {
     if (is_file(ForgeConfig::get('codendi_log') . '/tv3_to_tv5.log')) {
         unlink(ForgeConfig::get('codendi_log') . '/tv3_to_tv5.log');
     }
     ForgeConfig::restore();
     parent::tearDown();
 }
示例#20
0
 public function notifyAdministrator(PFuser $user)
 {
     $user_name = $user->getUserName();
     $to = ForgeConfig::get('sys_email_admin');
     if (!send_new_user_email_notification($to, $user_name)) {
         $GLOBALS['Response']->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('global', 'mail_failed', $to));
     }
 }
 public function getAccess()
 {
     if ($this->is_public === null || ForgeConfig::get('sys_user_can_choose_project_privacy') === '0') {
         return ForgeConfig::get('sys_is_project_public') ? Project::ACCESS_PUBLIC : Project::ACCESS_PRIVATE;
     } else {
         return $this->is_public ? Project::ACCESS_PUBLIC : Project::ACCESS_PRIVATE;
     }
 }
 public function getAccess()
 {
     if (is_null($this->is_public)) {
         return ForgeConfig::get('sys_is_project_public') ? Project::ACCESS_PUBLIC : Project::ACCESS_PRIVATE;
     } else {
         return $this->is_public ? Project::ACCESS_PUBLIC : Project::ACCESS_PRIVATE;
     }
 }
示例#23
0
 public function __construct()
 {
     $this->env = array('GIT_PROJECT_ROOT' => ForgeConfig::get('sys_data_dir') . "/gitolite/repositories", 'GIT_HTTP_EXPORT_ALL' => "1", 'QUERY_STRING' => $_SERVER['QUERY_STRING'], 'REQUEST_METHOD' => $_SERVER['REQUEST_METHOD']);
     $this->appendToEnv('PATH_INFO');
     $this->appendToEnv('CONTENT_TYPE');
     $this->appendToEnv('HTTP_ACCEPT_ENCODING');
     $this->appendToEnv('HTTP_CONTENT_ENCODING');
 }
 public function itHasALogFileFromConfiguration()
 {
     ForgeConfig::store();
     ForgeConfig::set(SVN_Apache_SvnrootConf::CONFIG_SVN_LOG_PATH, '${APACHE_LOG_DIR}/tuleap_svn.log');
     $conf = $this->GivenAFullApacheConfWithModPerl();
     $this->assertPattern('%\\${APACHE_LOG_DIR}/tuleap_svn\\.log%', $conf);
     ForgeConfig::restore();
 }
 public function getTitle()
 {
     $title = $GLOBALS['Language']->getText('plugin_agiledashboard', 'milestone_planning_pane_title', $this->submilestone_tracker->getName());
     if (ForgeConfig::get('sys_showdeprecatedplanningv1')) {
         $title .= ' V2';
     }
     return $title;
 }
示例#26
0
 private function sendErrorMail($to, $subject, $message)
 {
     $mail = new Codendi_Mail();
     $mail->setFrom(ForgeConfig::get('sys_noreply'));
     $mail->setTo($to);
     $mail->setSubject($subject);
     $mail->setBody($message);
     $mail->send();
 }
 public function site_index(HTTPRequest $request)
 {
     $this->assertSiteAdmin($request);
     $presenter = new MediawikiSiteAdminAllowedProjectsPresenter($this->resource_restrictor->searchAllowedProjects());
     $renderer = TemplateRendererFactory::build()->getRenderer(ForgeConfig::get('codendi_dir') . '/src/templates/resource_restrictor');
     $GLOBALS['HTML']->header(array('title' => 'Mediawiki', 'selected_top_tab' => 'admin'));
     $renderer->renderToPage($presenter::TEMPLATE, $presenter);
     $GLOBALS['HTML']->footer(array());
 }
 function tableName($name)
 {
     switch ($name) {
         case 'interwiki':
             return ForgeConfig::get('sys_dbname') . '.plugin_mediawiki_interwiki';
         default:
             return parent::tableName($name);
     }
 }
 public function getAdminIndex(HTTPRequest $request)
 {
     $this->checkAccess($request);
     $presenter = new PHPWikiAdminAllowedProjectsPresenter($this->wiki_migrator->searchProjectsUsingPlugin());
     $renderer = TemplateRendererFactory::build()->getRenderer(ForgeConfig::get('codendi_dir') . '/src/templates/resource_restrictor');
     $GLOBALS['HTML']->header(array('title' => 'PHPWiki', 'selected_top_tab' => 'admin'));
     $renderer->renderToPage($presenter::TEMPLATE, $presenter);
     $GLOBALS['HTML']->footer(array());
 }
示例#30
0
 /**
  * @throws Docman_FolderNotCreatedException
  */
 private function createFolderWithRightAccessRights($folder_path, $project_unix_name)
 {
     if (!mkdir($folder_path)) {
         throw new Docman_FolderNotCreatedException("Folder {$folder_path} not created");
     }
     $user = ForgeConfig::get('sys_http_user');
     $this->backend->changeOwnerGroupMode($folder_path, $user, $user, 0700);
     $this->logger->info("Docman root folder for project {$project_unix_name} created");
 }