public function __construct(Project $project, $count, $selected)
 {
     $this->label = util_unconvert_htmlspecialchars($project->getPublicName());
     $this->count = $count;
     $this->value = $project->getGroupId();
     $this->selected = $selected;
 }
 public function __construct(array $hit, Project $project)
 {
     $this->project_name = util_unconvert_htmlspecialchars($project->getPublicName());
     $this->has_highlight = !empty($this->highlight);
     $this->display_permissions = isset($hit['fields']['permissions']);
     if ($this->display_permissions) {
         $this->permissions = implode(', ', $hit['fields']['permissions']);
     }
 }
 public function export(Project $project, array $options, PFUser $user, ZipArchive $archive)
 {
     $this->logger->info("Start exporting project " . $project->getPublicName());
     $xml_element = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>
                                          <project />');
     $this->exportProjectUgroups($project, $xml_element);
     $this->exportPlugins($project, $xml_element, $options, $user, $archive);
     $this->logger->info("Finish exporting project " . $project->getPublicName());
     return $this->convertToXml($xml_element);
 }
 private function notifySiteAdmin(Project $project)
 {
     $subject = $GLOBALS['Language']->getText('register_project_one_step', 'complete_mail_subject', array($project->getPublicName()));
     $presenter = new MailPresenterFactory();
     $renderer = TemplateRendererFactory::build()->getRenderer(ForgeConfig::get('codendi_dir') . '/src/templates/mail/');
     $mail = new TuleapRegisterMail($presenter, $renderer, "mail-project-register-admin");
     $mail = $mail->getMailNotificationProject($subject, ForgeConfig::get('sys_noreply'), ForgeConfig::get('sys_email_admin'), $project);
     if (!$mail->send()) {
         $GLOBALS['Response']->addFeedback(Feedback::WARN, $GLOBALS['Language']->getText('global', 'mail_failed', array($GLOBALS['sys_email_admin'])));
     }
 }
Example #5
0
 public function __construct(array $hit, Project $project)
 {
     $this->item_title = $hit['fields']['title'];
     $this->url = '/plugins/docman/?group_id=' . $hit['fields']['group_id'] . '&id=' . $hit['fields']['id'] . '&action=details';
     $this->project_name = $project->getPublicName();
     $this->highlight = isset($hit['highlight']['file']) ? array_shift($hit['highlight']['file']) : '';
     $this->has_highlight = !empty($this->highlight);
     $this->display_permissions = isset($hit['fields']['permissions']);
     if ($this->display_permissions) {
         $this->permissions = implode(', ', $hit['fields']['permissions']);
     }
 }
Example #6
0
 /**
  * Get the HTML output for current binding
  *
  * @param Project $currentProject Project of the currently bound ugroup
  * @param ProjectUGroup  $currentSource  Currently bound ugroup
  *
  * @return String
  */
 private function getCurrentBindingHTML(Project $currentProject = null, ProjectUGroup $currentSource = null)
 {
     if ($currentSource) {
         $currentBindHTML = '';
         if ($currentSource && $currentProject->userIsAdmin()) {
             $currentBindHTML .= $GLOBALS['Language']->getText('project_ugroup_binding', 'current_binded', array('<a href="/project/admin/editugroup.php?group_id=' . $currentProject->getID() . '&ugroup_id=' . $currentSource->getId() . '&func=edit" ><b>' . $currentSource->getName() . '</b></a>', '<a href="/projects/' . $currentProject->getUnixName() . '" ><b>' . $currentProject->getPublicName() . '</b></a>'));
         }
         $currentBindHTML .= '<form action="" method="post"><input type="hidden" name="action" value="remove_binding" /><input type="submit" value="' . $GLOBALS['Language']->getText('project_ugroup_binding', 'remove_binding') . '"/></form>';
     } else {
         $currentBindHTML = $GLOBALS['Language']->getText('project_ugroup_binding', 'no_binding');
     }
     return $currentBindHTML;
 }
Example #7
0
 public function sendMail(PFUser $user, Project $project, $tv3_id, $tracker_name)
 {
     $mail = new Codendi_Mail();
     $breadcrumbs = array();
     $breadcrumbs[] = '<a href="' . get_server_url() . '/projects/' . $project->getUnixName(true) . '" />' . $project->getPublicName() . '</a>';
     $mail->getLookAndFeelTemplate()->set('breadcrumbs', $breadcrumbs);
     $mail->addAdditionalHeader("X-Codendi-Project", $project->getUnixName());
     $mail->setFrom($GLOBALS['sys_noreply']);
     $mail->setTo($user->getEmail());
     $mail->setSubject('Output of your migration TV3 -> TV5');
     $mail->setBody($this->getMailBody($tv3_id, $tracker_name));
     $mail->send();
     $this->purgeLogStack();
 }
 function __construct(Project $project, $url, $feedback, MailBuilder $mail_builder)
 {
     parent::__construct();
     $this->project = $project;
     $this->_url = $url;
     $this->_listeners = array();
     $this->_feedback = $feedback;
     $this->_item_factory = $this->_getItemFactory();
     $this->notifications = array();
     $this->mail_builder = $mail_builder;
     if ($project && !$project->isError()) {
         $this->_group_name = $project->getPublicName();
     }
 }
 /**
  *
  * Send mails to a group of people and check the max number of emailed people limit.
  *
  * @param Project $project Project of the receivers
  * @param PFO_User $user Sender
  * @param string $subject
  * @param string $html_body
  * @param PFUser[] $receivers
  */
 public function sendMassmail(Project $project, PFUser $user, $subject, $html_body, array $receivers)
 {
     $hp = Codendi_HTMLPurifier::instance();
     $project_name = $project->getPublicName();
     $sys_max_number_of_emailed_people = ForgeConfig::get('sys_max_number_of_emailed_people');
     if (count($receivers) > $sys_max_number_of_emailed_people && !$user->isSuperUser()) {
         $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('my_index', 'massmail_not_sent_max_users', $sys_max_number_of_emailed_people));
         return;
     }
     $mail = new Codendi_Mail();
     $mail->setFrom($user->getEmail());
     $mail->setTo($user->getEmail());
     $mail->setBccUser($receivers);
     $mail->setSubject("[" . $GLOBALS['sys_name'] . "] [" . $project_name . "] " . $subject);
     $mail->setBodyText($hp->purify($html_body, CODENDI_PURIFIER_STRIP_HTML));
     $mail->setBodyHtml($html_body);
     $is_sent = $mail->send();
     return $is_sent;
 }
Example #10
0
 public function displayHeader($title, $breadcrumbs, $toolbar)
 {
     $GLOBALS['HTML']->setRenderedThroughService(true);
     $breadcrumbs = array_merge(array(array('title' => $this->project->getPublicName(), 'url' => '/projects/' . $this->project->getUnixName() . '/')), $breadcrumbs);
     foreach ($breadcrumbs as $b) {
         $classname = '';
         if (isset($b['classname'])) {
             $classname = 'class="breadcrumb-step-' . $b['classname'] . '"';
         }
         $GLOBALS['HTML']->addBreadcrumb('<a href="' . $b['url'] . '" ' . $classname . '>' . $b['title'] . '</a>');
     }
     foreach ($toolbar as $t) {
         $class = isset($t['class']) ? 'class="' . $t['class'] . '"' : '';
         $item_title = isset($t['short_title']) ? $t['short_title'] : $t['title'];
         $GLOBALS['HTML']->addToolbarItem('<a href="' . $t['url'] . '" ' . $class . '>' . $item_title . '</a>');
     }
     $params = array('title' => $title, 'group' => $this->project->group_id, 'toptab' => $this->getId());
     if ($pv = (int) HTTPRequest::instance()->get('pv')) {
         $params['pv'] = (int) $pv;
     }
     $this->displayDuplicateInheritanceWarning();
     site_project_header($params);
 }
 public function get_project_full_name()
 {
     return $this->project->getPublicName();
 }
Example #12
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;
 }
Example #13
0
        $group_id = $request->get('group_id');
    } else {
        exit_no_group();
    }
    //Process MEMBERSHIP_DELETE event
    account_remove_user_from_group($group_id, $user_id, false);
    /********* mail the changes so the admins know what happened *********/
    $res_admin = db_query("SELECT user.user_id AS user_id, user.email AS email, user.user_name AS user_name FROM user,user_group " . "WHERE user_group.user_id=user.user_id AND user_group.group_id=" . db_ei($group_id) . " AND " . "user_group.admin_flags = 'A'");
    $to = '';
    while ($row_admin = db_fetch_array($res_admin)) {
        $to .= "{$row_admin['email']},";
    }
    if (strlen($to) > 0) {
        $to = substr($to, 0, -1);
        $project = new Project($group_id);
        $project_name = $project->getPublicName();
        list($host, $port) = explode(':', $GLOBALS['sys_default_domain']);
        $link_members = get_server_url() . "/project/memberlist.php?group_id={$group_id}";
        $subject = $Language->getText('bookmark_rmproject', 'mail_subject', array($GLOBALS['sys_name'], user_getname($user_id), $project_name));
        $body = stripcslashes($Language->getText('bookmark_rmproject', 'mail_body', array($project_name, user_getname($user_id), $link_members)));
        $mail = new Mail();
        $mail->setTo($to);
        $mail->setSubject($subject);
        $mail->setFrom($GLOBALS['sys_noreply']);
        $mail->setBody($body);
        $mail->send();
    }
    // display the personal page again
    session_redirect("/my/");
} else {
    exit_not_logged_in();
 public function __construct(Project $project)
 {
     $this->project_name = util_unconvert_htmlspecialchars($project->getPublicName());
     $this->project_uri = '/projects/' . $project->getUnixName();
 }
 public function get_section_two()
 {
     return $GLOBALS['Language']->getText('mail_register_project_one_step_notification', 'section_two', array($this->project->getPublicName()));
 }
 private function notifySiteAdmin(Project $project)
 {
     $mail = new Mail();
     $mail->setTo(ForgeConfig::get('sys_email_admin'));
     $mail->setFrom(ForgeConfig::get('sys_noreply'));
     $mail->setSubject($GLOBALS['Language']->getText('register_project_one_step', 'complete_mail_subject', array($project->getPublicName())));
     if ($this->projectsMustBeApprovedByAdmin()) {
         $mail->setBody($GLOBALS['Language']->getText('register_project_one_step', 'complete_mail_body_approve', array(ForgeConfig::get('sys_name'), $project->getPublicName(), get_server_url() . '/admin/approve-pending.php')));
     } else {
         $mail->setBody($GLOBALS['Language']->getText('register_project_one_step', 'complete_mail_body_auto', array(ForgeConfig::get('sys_name'), $project->getPublicName(), get_server_url() . '/admin/groupedit.php?group_id=' . $project->getID())));
     }
     if (!$mail->send()) {
         $GLOBALS['Response']->addFeedback(Feedback::WARN, $GLOBALS['Language']->getText('global', 'mail_failed', array($GLOBALS['sys_email_admin'])));
     }
 }
Example #17
0
//
if (isset($group_id) && $group_id) {
    $project = new Project($group_id);
    // We want only project news, not deleted
    $where_clause = " is_approved<>4 AND group_id={$group_id} ";
} else {
    // We want only approved news (=1 => automatically <>4)
    $where_clause = " is_approved = 1 ";
}
$res = db_query('SELECT forum_id,summary,date,details,group_id FROM news_bytes ' . 'WHERE ' . $where_clause . ' ORDER BY date DESC LIMIT ' . $limit);
// ## one time output
print " <channel>\n";
print "  <copyright>" . $Language->getText('export_rss_sfnewreleases', 'copyright', array($GLOBALS['sys_long_org_name'], $GLOBALS['sys_name'], date('Y', time()))) . "</copyright>\n";
print "  <pubDate>" . gmdate('D, d M Y G:i:s', time()) . " GMT</pubDate>\n";
if (isset($group_id) && $group_id) {
    print "  <description>" . $Language->getText('export_rss_sfnews', 'highlights', $GLOBALS['sys_name']) . " - " . $project->getPublicName() . "</description>\n";
    print "  <link>" . get_server_url() . "/project/?group_id={$group_id}</link>\n";
    print "  <title> " . $Language->getText('export_rss_sfnews', 'news', $GLOBALS['sys_name']) . " - " . $project->getPublicName() . "</title>\n";
} else {
    print "  <description>" . $Language->getText('export_rss_sfnews', 'highlights', $GLOBALS['sys_name']) . "</description>\n";
    print "  <link>" . get_server_url() . "</link>\n";
    print "  <title> " . $Language->getText('export_rss_sfnews', 'news', $GLOBALS['sys_name']) . "</title>\n";
}
list($host, $port) = explode(':', $GLOBALS['sys_default_domain']);
print "  <webMaster>webmaster@" . $host . "</webMaster>\n";
print "  <language>en-us</language>\n";
// ## item outputs
while ($row = db_fetch_array($res)) {
    $forum_id = $row['forum_id'];
    $group_id = isset($group_id) ? $group_id : $GLOBALS['sys_news_group'];
    if (news_check_permission($forum_id, $group_id)) {
Example #18
0
 /**
  * Make project available
  *
  * @param Project $project
  *
  * @return Boolean
  */
 public function activate(Project $project)
 {
     $dao = $this->_getDao();
     if ($dao->updateStatus($project->getId(), 'A')) {
         include_once 'proj_email.php';
         group_add_history('approved', 'x', $project->getId());
         $em = $this->getEventManager();
         $em->processEvent('approve_pending_project', array('group_id' => $project->getId()));
         if (!send_new_project_email($project->getId())) {
             $GLOBALS['Response']->addFeedback('warning', $project->getPublicName() . " - " . $GLOBALS['Language']->getText('global', 'mail_failed', array($GLOBALS['sys_email_admin'])));
         }
         return true;
     }
     return false;
 }