Exemple #1
0
 /**
  * Process the request.
  *
  * @param Pluf_HTTP_Request The request
  * @return bool false
  */
 function process_request(&$request)
 {
     // Find which language to use. By priority:
     // A session value with 'pluf_language'
     // A cookie with 'pluf_language'
     // The browser information.
     $lang = false;
     if (!empty($request->session)) {
         $lang = $request->session->getData('pluf_language', false);
         if ($lang and !in_array($lang, Pluf::f('languages', array('en')))) {
             $lang = false;
         }
     }
     if ($lang === false and !empty($request->COOKIE[Pluf::f('lang_cookie', 'pluf_language')])) {
         $lang = $request->COOKIE[Pluf::f('lang_cookie', 'pluf_language')];
         if ($lang and !in_array($lang, Pluf::f('languages', array('en')))) {
             $lang = false;
         }
     }
     if ($lang === false) {
         // will default to 'en'
         $lang = Pluf_Translation::getAcceptedLanguage(Pluf::f('languages', array('en')));
     }
     Pluf_Translation::loadSetLocale($lang);
     $request->language_code = $lang;
     return false;
 }
Exemple #2
0
 /**
  * Notify of the update of the review.
  *
  *
  * @param IDF_Conf Current configuration
  * @param bool Creation (true)
  */
 public function notify($conf, $create = true)
 {
     $patch = $this->get_patch();
     $review = $patch->get_review();
     $prj = $review->get_project();
     $to_email = array();
     if ('' != $conf->getVal('review_notification_email', '')) {
         $langs = Pluf::f('languages', array('en'));
         $to_email[] = array($conf->getVal('issues_notification_email'), $langs[0]);
     }
     $current_locale = Pluf_Translation::getLocale();
     $reviewers = $review->getReviewers();
     if (!Pluf_Model_InArray($review->get_submitter(), $reviewers)) {
         $reviewers[] = $review->get_submitter();
     }
     $comments = $patch->getFileComments(array('order' => 'id DESC'));
     $gcomments = $patch->get_comments_list(array('order' => 'id DESC'));
     $context = new Pluf_Template_Context(array('review' => $review, 'patch' => $patch, 'comments' => $comments, 'gcomments' => $gcomments, 'project' => $prj, 'url_base' => Pluf::f('url_base')));
     // build the list of emails and lang
     foreach ($reviewers as $user) {
         $email_lang = array($user->email, $user->language);
         if (!in_array($email_lang, $to_email)) {
             $to_email[] = $email_lang;
         }
     }
     $tmpl = new Pluf_Template('idf/review/review-updated-email.txt');
     foreach ($to_email as $email_lang) {
         Pluf_Translation::loadSetLocale($email_lang[1]);
         $email = new Pluf_Mail(Pluf::f('from_email'), $email_lang[0], sprintf(__('Updated Code Review %s - %s (%s)'), $review->id, $review->summary, $prj->shortname));
         $email->addTextMessage($tmpl->render($context));
         $email->sendMail();
     }
     Pluf_Translation::loadSetLocale($current_locale);
 }
Exemple #3
0
 /**
  * Notification of change of the object.
  *
  * @param IDF_Conf Current configuration
  * @param bool Creation (true)
  */
 public function notify($conf, $create = true)
 {
     // Now we add to the queue, soon we will push everything in
     // the queue, including email notifications and indexing.
     // Even if the url is empty, we add to the queue as some
     // plugins may want to do something with this information in
     // an asynchronous way.
     $project = $this->get_project();
     $scm = $project->getConf()->getVal('scm', 'git');
     $url = str_replace(array('%p', '%r'), array($project->shortname, $this->scm_id), $conf->getVal('webhook_url', ''));
     $payload = array('to_send' => array('project' => $project->shortname, 'rev' => $this->scm_id, 'scm' => $scm, 'summary' => $this->summary, 'fullmessage' => $this->fullmessage, 'author' => $this->origauthor, 'creation_date' => $this->creation_dtime), 'project_id' => $project->id, 'authkey' => $project->getPostCommitHookKey(), 'url' => $url);
     $item = new IDF_Queue();
     $item->type = 'new_commit';
     $item->payload = $payload;
     $item->create();
     if ('' == $conf->getVal('source_notification_email', '')) {
         return;
     }
     $current_locale = Pluf_Translation::getLocale();
     $langs = Pluf::f('languages', array('en'));
     Pluf_Translation::loadSetLocale($langs[0]);
     $context = new Pluf_Template_Context(array('c' => $this, 'project' => $this->get_project(), 'url_base' => Pluf::f('url_base')));
     $tmpl = new Pluf_Template('idf/source/commit-created-email.txt');
     $text_email = $tmpl->render($context);
     $email = new Pluf_Mail(Pluf::f('from_email'), $conf->getVal('source_notification_email'), sprintf(__('New Commit %s - %s (%s)'), $this->scm_id, $this->summary, $this->get_project()->shortname));
     $email->addTextMessage($text_email);
     $email->sendMail();
     Pluf_Translation::loadSetLocale($current_locale);
 }
Exemple #4
0
 /**
  * Notification of change of the object.
  *
  * For the moment, only email, but one can add webhooks later.
  *
  * Usage:
  * <pre>
  * $this->notify($conf); // Notify the creation
  * $this->notify($conf, false); // Notify the update of the object
  * </pre>
  *
  * @param IDF_Conf Current configuration
  * @param bool Creation (true)
  */
 public function notify($conf, $create = true)
 {
     $prj = $this->get_project();
     $to_email = array();
     if ('' != $conf->getVal('issues_notification_email', '')) {
         $langs = Pluf::f('languages', array('en'));
         $to_email[] = array($conf->getVal('issues_notification_email'), $langs[0]);
     }
     $current_locale = Pluf_Translation::getLocale();
     $id = '<' . md5($this->id . md5(Pluf::f('secret_key'))) . '@' . Pluf::f('mail_host', 'localhost') . '>';
     if ($create) {
         if (null != $this->get_owner() and $this->owner != $this->submitter) {
             $email_lang = array($this->get_owner()->email, $this->get_owner()->language);
             if (!in_array($email_lang, $to_email)) {
                 $to_email[] = $email_lang;
             }
         }
         $comments = $this->get_comments_list(array('order' => 'id ASC'));
         $context = new Pluf_Template_Context(array('issue' => $this, 'comment' => $comments[0], 'project' => $prj, 'url_base' => Pluf::f('url_base')));
         foreach ($to_email as $email_lang) {
             Pluf_Translation::loadSetLocale($email_lang[1]);
             $email = new Pluf_Mail(Pluf::f('from_email'), $email_lang[0], sprintf(__('Issue %s - %s (%s)'), $this->id, $this->summary, $prj->shortname));
             $tmpl = new Pluf_Template('idf/issues/issue-created-email.txt');
             $email->addTextMessage($tmpl->render($context));
             $email->addHeaders(array('Message-ID' => $id));
             $email->sendMail();
         }
     } else {
         $comments = $this->get_comments_list(array('order' => 'id DESC'));
         $email_sender = '';
         if (isset($comments[0])) {
             $email_sender = $comments[0]->get_submitter()->email;
         }
         foreach ($this->get_interested_list() as $interested) {
             $email_lang = array($interested->email, $interested->language);
             if (!in_array($email_lang, $to_email)) {
                 $to_email[] = $email_lang;
             }
         }
         $email_lang = array($this->get_submitter()->email, $this->get_submitter()->language);
         if (!in_array($email_lang, $to_email)) {
             $to_email[] = $email_lang;
         }
         if (null != $this->get_owner()) {
             $email_lang = array($this->get_owner()->email, $this->get_owner()->language);
             if (!in_array($email_lang, $to_email)) {
                 $to_email[] = $email_lang;
             }
         }
         $context = new Pluf_Template_Context(array('issue' => $this, 'comments' => $comments, 'project' => $prj, 'url_base' => Pluf::f('url_base')));
         foreach ($to_email as $email_lang) {
             if ($email_lang[0] == $email_sender) {
                 continue;
                 // Do not notify the one having created
                 // the comment
             }
             Pluf_Translation::loadSetLocale($email_lang[1]);
             $email = new Pluf_Mail(Pluf::f('from_email'), $email_lang[0], sprintf(__('Updated Issue %s - %s (%s)'), $this->id, $this->summary, $prj->shortname));
             $tmpl = new Pluf_Template('idf/issues/issue-updated-email.txt');
             $email->addTextMessage($tmpl->render($context));
             $email->addHeaders(array('References' => $id));
             $email->sendMail();
         }
     }
     Pluf_Translation::loadSetLocale($current_locale);
 }
Exemple #5
0
 /**
  * Notification of change of the object.
  *
  * @param IDF_Conf Current configuration
  * @param bool Creation (true)
  */
 public function notify($conf, $create = true)
 {
     if ('' == $conf->getVal('downloads_notification_email', '')) {
         return;
     }
     $current_locale = Pluf_Translation::getLocale();
     $langs = Pluf::f('languages', array('en'));
     Pluf_Translation::loadSetLocale($langs[0]);
     $context = new Pluf_Template_Context(array('file' => $this, 'urlfile' => $this->getAbsoluteUrl($this->get_project()), 'project' => $this->get_project(), 'tags' => $this->get_tags_list()));
     $tmpl = new Pluf_Template('idf/downloads/download-created-email.txt');
     $text_email = $tmpl->render($context);
     $addresses = explode(',', $conf->getVal('downloads_notification_email'));
     foreach ($addresses as $address) {
         $email = new Pluf_Mail(Pluf::f('from_email'), $address, sprintf(__('New download - %s (%s)'), $this->summary, $this->get_project()->shortname));
         $email->addTextMessage($text_email);
         $email->sendMail();
     }
     Pluf_Translation::loadSetLocale($current_locale);
 }
Exemple #6
0
 public function notify($conf, $create = true)
 {
     if ('' == $conf->getVal('review_notification_email', '')) {
         return;
     }
     $current_locale = Pluf_Translation::getLocale();
     $langs = Pluf::f('languages', array('en'));
     Pluf_Translation::loadSetLocale($langs[0]);
     $context = new Pluf_Template_Context(array('review' => $this->get_review(), 'patch' => $this, 'comments' => array(), 'project' => $this->get_review()->get_project(), 'url_base' => Pluf::f('url_base')));
     $tmpl = new Pluf_Template('idf/review/review-created-email.txt');
     $text_email = $tmpl->render($context);
     $addresses = explode(';', $conf->getVal('review_notification_email'));
     foreach ($addresses as $address) {
         $email = new Pluf_Mail(Pluf::f('from_email'), $address, sprintf(__('New Code Review %s - %s (%s)'), $this->get_review()->id, $this->get_review()->summary, $this->get_review()->get_project()->shortname));
         $email->addTextMessage($text_email);
         $email->sendMail();
     }
     Pluf_Translation::loadSetLocale($current_locale);
 }
Exemple #7
0
 /**
  * Notification of change of a WikiPage.
  *
  * The content of a WikiPage is in the IDF_WikiRevision object,
  * this is why we send the notificatin from there. This means that
  * when the create flag is set, this is for the creation of a
  * wikipage and not, for the addition of a new revision.
  *
  * Usage:
  * <pre>
  * $this->notify($conf); // Notify the creation of a wiki page
  * $this->notify($conf, false); // Notify the update of the page
  * </pre>
  *
  * @param IDF_Conf Current configuration
  * @param bool Creation (true)
  */
 public function notify($conf, $create = true)
 {
     if ('' == $conf->getVal('wiki_notification_email', '')) {
         return;
     }
     $current_locale = Pluf_Translation::getLocale();
     $langs = Pluf::f('languages', array('en'));
     Pluf_Translation::loadSetLocale($langs[0]);
     $context = new Pluf_Template_Context(array('page' => $this->get_wikipage(), 'rev' => $this, 'project' => $this->get_wikipage()->get_project(), 'url_base' => Pluf::f('url_base')));
     if ($create) {
         $template = 'idf/wiki/wiki-created-email.txt';
         $title = sprintf(__('New Documentation Page %s - %s (%s)'), $this->get_wikipage()->title, $this->get_wikipage()->summary, $this->get_wikipage()->get_project()->shortname);
     } else {
         $template = 'idf/wiki/wiki-updated-email.txt';
         $title = sprintf(__('Documentation Page Changed %s - %s (%s)'), $this->get_wikipage()->title, $this->get_wikipage()->summary, $this->get_wikipage()->get_project()->shortname);
     }
     $tmpl = new Pluf_Template($template);
     $text_email = $tmpl->render($context);
     $email = new Pluf_Mail(Pluf::f('from_email'), $conf->getVal('wiki_notification_email'), $title);
     $email->addTextMessage($text_email);
     $email->sendMail();
     Pluf_Translation::loadSetLocale($current_locale);
 }