[evolvis-commits] r12159: Fixed problems with emails being sent in the language of the user currently↵ connected on the web interface rather than in the language of their =?UTF-8?Q?=20intended=E2=86=B5=20recipien?==?UTF-8?Q?t?=. The correct language is now chosen for project submissions an =?UTF-8?Q?d=E2=86=B5=20group=20join=20submi?==?UTF-8?Q?ssions?=. ↵
mirabilos at evolvis.org
mirabilos at evolvis.org
Thu Feb 24 18:41:48 CET 2011
Author: mirabilos
Date: 2011-02-24 18:41:48 +0100 (Thu, 24 Feb 2011)
New Revision: 12159
Modified:
trunk/gforge_base/evolvisforge-5.1/gforge/ChangeLog
trunk/gforge_base/evolvisforge-5.1/gforge/common/include/Group.class.php
trunk/gforge_base/evolvisforge-5.1/gforge/common/include/GroupJoinRequest.class.php
trunk/gforge_base/evolvisforge-5.1/gforge/debian/changelog
trunk/gforge_base/evolvisforge-5.1/gforge/www/include/BaseLanguage.class.php
trunk/gforge_base/evolvisforge-5.1/gforge/www/include/pre.php
trunk/gforge_base/evolvisforge-5.1/gforge/www/project/admin/index.php
Log:
Fixed problems with emails being sent in the language of the user currently
connected on the web interface rather than in the language of their intended
recipient. The correct language is now chosen for project submissions and
group join submissions.
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/ChangeLog
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/ChangeLog 2011-02-24 17:41:46 UTC (rev 12158)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/ChangeLog 2011-02-24 17:41:48 UTC (rev 12159)
@@ -1,3 +1,21 @@
+2007-11-07 Roland Mas <lolando at debian.org>
+
+ * common/include/GroupJoinRequest.class.php: New
+ send_accept_mail() function.
+ * www/project/admin/index.php: Use it.
+
+2007-11-06 Roland Mas <lolando at debian.org>
+
+ * www/include/BaseLanguage.class.php: Added
+ setup_gettext_from_browser() and setup_gettext_for_user(), to be
+ able to temporarily override a locale.
+ * www/include/pre.php: Adapt accordingly.
+ * common/include/GroupJoinRequest.class.php: Switch to the email
+ recipient's locale before sending email, then switch back to the
+ current user's locale.
+ * common/include/Group.class.php: Ditto for group
+ approval/rejection messages.
+
2007-11-04 Roland Mas <lolando at debian.org>
* Several fixes to remove vulnerabilities against symlink attacks
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/include/Group.class.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/include/Group.class.php 2011-02-24 17:41:46 UTC (rev 12158)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/include/Group.class.php 2011-02-24 17:41:48 UTC (rev 12159)
@@ -2036,7 +2036,7 @@
*/
function sendApprovalEmail() {
$res_admins = db_query("
- SELECT users.user_name,users.email,users.language
+ SELECT users.user_name,users.email,users.language,users.user_id
FROM users,user_group
WHERE users.user_id=user_group.user_id
AND user_group.group_id='".$this->getID()."'
@@ -2050,8 +2050,8 @@
// send one email per admin
while ($row_admins = db_fetch_array($res_admins)) {
- $l = new BaseLanguage () ;
- $l->loadLanguageID($row_admins['language']);
+ $admin =& user_get_object($row_admins['user_id']);
+ setup_gettext_for_user ($admin) ;
// $2 $2 $3 $4 $5 $6
$message=stripcslashes(sprintf(_('Your project registration for %7$s has been approved.
@@ -2087,6 +2087,8 @@
-- the %7$s crew'), $this->getPublicName(), $this->getUnixName(), $GLOBALS['sys_default_domain'], $GLOBALS['sys_shell_host'], $GLOBALS['sys_scm_host'], $this->getID(), $GLOBALS['sys_name']));
util_send_message($row_admins['email'], sprintf(_('%1$s Project Approved'), $GLOBALS['sys_name']), $message);
+
+ setup_gettext_from_browser () ;
}
return true;
@@ -2106,7 +2108,7 @@
*/
function sendRejectionEmail($response_id, $message="zxcv") {
$res_admins = db_query("
- SELECT u.email, u.language
+ SELECT u.email, u.language, u.user_id
FROM users u, user_group ug
WHERE ug.group_id='".$this->getID()."'
AND u.user_id=ug.user_id;
@@ -2118,8 +2120,8 @@
}
while ($row_admins = db_fetch_array($res_admins)) {
- $l = new BaseLanguage () ;
- $l->loadLanguageID($row_admins['language']);
+ $admin =& user_get_object($row_admins['user_id']);
+ setup_gettext_for_user ($admin) ;
$response=stripcslashes(sprintf(_('Your project registration for %3$s has been denied.
@@ -2142,6 +2144,7 @@
}
util_send_message($row_admins['email'], sprintf(_('%1$s Project Denied'), $GLOBALS['sys_name']), $response);
+ setup_gettext_from_browser () ;
}
return true;
@@ -2159,7 +2162,7 @@
*/
function sendNewProjectNotificationEmail() {
- $res = db_query("SELECT users.email, users.language
+ $res = db_query("SELECT users.email, users.language, users.user_id
FROM users,user_group
WHERE group_id=1
AND user_group.admin_flags='A'
@@ -2171,9 +2174,9 @@
} else {
for ($i=0; $i<db_numrows($res) ; $i++) {
$admin_email = db_result($res,$i,'email') ;
- $l = new BaseLanguage () ;
- $l->loadLanguageID(db_result($res,$i,'language'));
-
+ $admin =& user_get_object(db_result($res,$i,'user_id'));
+ setup_gettext_for_user ($admin) ;
+
$message=stripcslashes(sprintf(_('New %1$s Project Submitted
Project Full Name: %2$s
@@ -2183,11 +2186,12 @@
Please visit the following URL to approve or reject this project:
http://%5$s/admin/approve-pending.php'), $GLOBALS['sys_name'], $this->getPublicName(), util_unconvert_htmlspecialchars($this->getRegistrationPurpose()), $this->getLicenseName(), $GLOBALS['sys_default_domain']));
util_send_message($admin_email, sprintf(_('New %1$s Project Submitted'), $GLOBALS['sys_name']), $message);
+ setup_gettext_from_browser () ;
}
}
// Get the email of the user who wants to register the project
- $res = db_query("SELECT u.email, u.language
+ $res = db_query("SELECT u.email, u.language, u.user_id
FROM users u, user_group ug
WHERE ug.group_id='".$this->getID()."' AND u.user_id=ug.user_id;");
@@ -2197,8 +2201,8 @@
} else {
for ($i=0; $i<db_numrows($res) ; $i++) {
$email = db_result($res, $i, 'email');
- $l = new BaseLanguage () ;
- $l->loadLanguageID(db_result($res,$i,'language'));
+ $user =& user_get_object(db_result($res,$i,'user_id'));
+ setup_gettext_for_user ($user) ;
$message=stripcslashes(sprintf(_('New %1$s Project Submitted
@@ -2209,6 +2213,7 @@
The %1$s admin team will now examine your project submission. You will be notified of their decision.'), $GLOBALS['sys_name'], $this->getPublicName(), util_unconvert_htmlspecialchars($this->getRegistrationPurpose()), $this->getLicenseName(), $GLOBALS['sys_default_domain']));
util_send_message($email, sprintf(_('New %1$s Project Submitted'), $GLOBALS['sys_name']), $message);
+ setup_gettext_from_browser () ;
}
}
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/include/GroupJoinRequest.class.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/include/GroupJoinRequest.class.php 2011-02-24 17:41:46 UTC (rev 12158)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/include/GroupJoinRequest.class.php 2011-02-24 17:41:48 UTC (rev 12159)
@@ -157,7 +157,7 @@
db_rollback();
return false;
} else {
- if (!$this->fetchData($group_id,$user_id)) {
+ if (!$this->fetchData($this->Group->getID(),$user_id)) {
db_rollback();
return false;
} else {
@@ -244,19 +244,24 @@
$user =& session_get_user();
$admins =& $this->Group->getAdmins();
for ($i=0; $i<count($admins); $i++) {
- $emails[]=$admins[$i]->getEmail();
- }
- $email=implode($emails,',');
- $subject = sprintf(_('Request to Join Project %1$s'), $this->Group->getPublicName());
- $comments = util_unconvert_htmlspecialchars($this->data_array["comments"]);
- $body = sprintf(_('%1$s has requested to join your project.
+ setup_gettext_for_user ($admins[$i]) ;
+
+ $email=$admins[$i]->getEmail();
+ $subject = sprintf(_('Request to Join Project %1$s'), $this->Group->getPublicName());
+ $comments = util_unconvert_htmlspecialchars($this->data_array["comments"]);
+ $body = sprintf(_('%1$s has requested to join your project.
You can approve this request here: http://%2$s/project/admin/?group_id=%3$s.
Comments by the user:
%4$s'), $user->getRealName(), $GLOBALS['sys_default_domain'], $this->Group->getId(), $comments);
- $body = str_replace("\\n","\n",$body);
+ $body = str_replace("\\n","\n",$body);
- return util_send_message($email,$subject,$body);
+ $ret = util_send_message($email,$subject,$body);
+ if (! $ret) { return $ret; }
+
+ }
+ setup_gettext_from_browser () ;
+ return true ;
}
/**
@@ -265,15 +270,29 @@
* @return boolean success.
*/
function reject() {
- global $Language;
$user =& user_get_object($this->getUserId());
+ setup_gettext_for_user ($user) ;
$subject = sprintf(_('Request to Join Project %1$s'), $this->Group->getPublicName());
$body = sprintf(_('Your request to join the %1$s project was denied by the administrator.'), $this->Group->getPublicName());
util_send_message($user->getEmail(),$subject,$body);
+ setup_gettext_from_browser () ;
return $this->delete(1);
}
/**
+ * send_accept_mail()
+ *
+ */
+ function send_accept_mail() {
+ $user =& user_get_object($this->getUserId());
+ setup_gettext_for_user ($user) ;
+ $subject = sprintf(_('Request to Join Project %1$s'), $this->Group->getPublicName());
+ $body = sprintf(_('Your request to join the %1$s project was granted by the administrator.'), $this->Group->getPublicName());
+ util_send_message($user->getEmail(),$subject,$body);
+ setup_gettext_from_browser () ;
+ }
+
+ /**
* delete() - delete this row from the database.
*
* @param boolean I'm Sure.
@@ -307,4 +326,10 @@
}
}
+
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
+
?>
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/debian/changelog
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/debian/changelog 2011-02-24 17:41:46 UTC (rev 12158)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/debian/changelog 2011-02-24 17:41:48 UTC (rev 12159)
@@ -1,3 +1,9 @@
+gforge (4.6.99+svn6175+something-0+1) unstable; urgency=low
+
+ * New SVN snapshot.
+
+ -- Roland Mas <lolando at debian.org> Wed, 07 Nov 2007 13:36:28 +0100
+
gforge (4.6.99+svn6169-1) unstable; urgency=high
* New SVN snapshot (r6169), including the removal of a few tables
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/include/BaseLanguage.class.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/include/BaseLanguage.class.php 2011-02-24 17:41:46 UTC (rev 12158)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/include/BaseLanguage.class.php 2011-02-24 17:41:48 UTC (rev 12159)
@@ -526,6 +526,47 @@
textdomain('gforge');
}
+function setup_gettext_from_browser() {
+ global $Language, $sys_lang ;
+ if (!$sys_lang) {
+ $sys_lang="English";
+ }
+ if (session_loggedin()) {
+ $LUSER =& session_get_user();
+ $Language=new BaseLanguage();
+ $Language->loadLanguageID($LUSER->getLanguage());
+ } else {
+ //if you aren't logged in, check your browser settings
+ //and see if we support that language
+ //if we don't support it, just use default language
+ if (getStringFromServer('HTTP_ACCEPT_LANGUAGE')) {
+ $classname=getLanguageClassName(getStringFromServer('HTTP_ACCEPT_LANGUAGE'));
+ } else {
+ $classname='';
+ }
+ if (!$classname) {
+ $classname=$sys_lang;
+ }
+ $Language=new BaseLanguage();
+ $Language->loadLanguage($classname);
+ }
+
+ setlocale (LC_TIME, _('en_US'));
+ $sys_strftimefmt = _('%Y %B %e %H:%M');
+ $sys_datefmt = _('Y-m-d H:i');
+ $sys_shortdatefmt = _('Y-m-d');
+}
+
+function setup_gettext_for_user($user) {
+ $Language=new BaseLanguage();
+ $Language->loadLanguageID($user->getLanguage());
+
+ setlocale (LC_TIME, _('en_US'));
+ $sys_strftimefmt = _('%Y %B %e %H:%M');
+ $sys_datefmt = _('Y-m-d H:i');
+ $sys_shortdatefmt = _('Y-m-d');
+}
+
// Local Variables:
// mode: php
// c-file-style: "bsd"
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/include/pre.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/include/pre.php 2011-02-24 17:41:46 UTC (rev 12158)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/include/pre.php 2011-02-24 17:41:48 UTC (rev 12159)
@@ -159,34 +159,8 @@
require_once('www/include/BaseLanguage.class.php');
-if (!$sys_lang) {
- $sys_lang="English";
-}
-if (session_loggedin()) {
- $Language=new BaseLanguage();
- $Language->loadLanguageID($LUSER->getLanguage());
-} else {
- //if you aren't logged in, check your browser settings
- //and see if we support that language
- //if we don't support it, just use default language
- if (getStringFromServer('HTTP_ACCEPT_LANGUAGE')) {
- $classname=getLanguageClassName(getStringFromServer('HTTP_ACCEPT_LANGUAGE'));
- } else {
- $classname='';
- }
- if (!$classname) {
- $classname=$sys_lang;
- }
- $Language=new BaseLanguage();
- $Language->loadLanguage($classname);
-}
+setup_gettext_from_browser() ;
-setlocale (LC_TIME, _('en_US'));
-$sys_strftimefmt = _('%Y %B %e %H:%M');
-$sys_datefmt = _('Y-m-d H:i');
-$sys_shortdatefmt = _('Y-m-d');
-
-
/*
@@ -202,4 +176,10 @@
*/
+
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
+
?>
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/project/admin/index.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/project/admin/index.php 2011-02-24 17:41:46 UTC (rev 12158)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/project/admin/index.php 2011-02-24 17:41:48 UTC (rev 12159)
@@ -136,6 +136,7 @@
if (!$gjr || !is_object($gjr) || $gjr->isError()) {
$feedback .= 'Error Getting GroupJoinRequest';
} else {
+ $gjr->send_accept_mail();
$gjr->delete(true);
}
$feedback = _('User Added Successfully');
@@ -315,7 +316,7 @@
echo "Invalid User";
}
?>
- <form action="<?php echo $PHP_SELF.'?group_id='.$group_id; ?>" method="post">
+ <form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
<input type="hidden" name="submit" value="y" />
<input type="hidden" name="form_userid" value="<?php echo $user->getId(); ?>" />
<tr><td><input type="hidden" name="form_unix_name" value="<?php echo $user->getUnixName(); ?>" /><a href="<?php echo $GLOBALS['sys_urlprefix']; ?>/users/<?php echo $user->getUnixName(); ?>"><?php echo $user->getRealName(); ?></a></td>
More information about the evolvis-commits
mailing list