Hello everybody, this is my first post in this list.

As soon as I installed roundcubemail, I really appreciated the 
virtuser_file/virtuser_query config options to 
automatically fill-in the email address when auto_create_user is set to true, 
but I was a little disappointed to see 
that there is no way to automatically set the user's real name.
Moreover silently setting the login name as the sender's real name reveals to 
mail recipients an information that should 
be usually kept secret.

For these two reasons I wrote this very little patch to add some more 
automation.
you can apply it to svn 1452 directly, with "patch -p1 <this_message"
or you can apply it to release 0.1.1 tweaking a file name:
"sed 's/rcube_user\.php/rcube_user.inc/g' <this_message | patch -p1"

there are two new config entries, leaving both empty preserves the actual 
behavior.

"passwd_query" works exactly as "virtuser_query", a example query may be:
select real_name from some_table where login_name="%u"

"passwd_file" will extract the "gecos" field from a passwd-like file, a example 
line may be:
unixname:x:1000:100:John Doe:/usr/share/empty:/bin/false

I hope that this very little unintrusive patch will be included in the next 
release :)

diff -Naubr roundcubemail.old/config/main.inc.php.dist 
roundcubemail.new/config/main.inc.php.dist
--- roundcubemail.old/config/main.inc.php.dist  2008-05-29 17:21:51.000000000 
+0200
+++ roundcubemail.new/config/main.inc.php.dist  2008-05-29 17:19:21.000000000 
+0200
@@ -61,6 +61,14 @@
  // The query should select the user's e-mail address as first col
  $rcmail_config['virtuser_query'] = '';

+// Path to a passwd-like file to get real name from user name
+$rcmail_config['passwd_file'] = '';
+
+// Query to get real name from user name
+// %u will be replaced with the current username for login.
+// The query should select the user's real name as first col
+$rcmail_config['passwd_query'] = '';
+
  // use this host for sending mails.
  // to use SSL connection, set ssl://smtp.host.com
  // if left blank, the PHP mail() function is used
diff -Naubr roundcubemail.old/program/include/rcube_user.php 
roundcubemail.new/program/include/rcube_user.php
--- roundcubemail.old/program/include/rcube_user.php    2008-05-29 
17:21:54.000000000 +0200
+++ roundcubemail.new/program/include/rcube_user.php    2008-05-29 
17:39:45.000000000 +0200
@@ -368,6 +368,25 @@
          $user_email = strpos($user, '@') ? $user : sprintf('[EMAIL 
PROTECTED]', $user, $mail_domain);

        $user_name = $user != $user_email ? $user : '';
+      if (!empty($CONFIG['passwd_file'])) {
+          if ($fp = fopen ($CONFIG['passwd_file'], 'r')) {
+              do {
+                  $line = explode (':', fgets ($fp));
+                  if ((count ($line) >= 5) && ($line[0] == $user)) {
+                      $user_name = $line[4];
+                      break;
+                  }
+              } while (feof ($fp) == FALSE);
+              fclose ($fp);
+          }
+      }
+      if (!empty($CONFIG['passwd_query'])) {
+          if ($sql_result = $DB->query (preg_replace('/%u/', 
$DB->escapeSimple($user), $CONFIG['passwd_query']))) {
+              while ($sql_arr = $DB->fetch_array($sql_result)) {
+                  $user_name = $sql_arr[0];
+              }
+          }
+      }

        // try to resolve the e-mail address from the virtuser table
        if ($virtuser_query = $rcmail->config->get('virtuser_query') &&
_______________________________________________
List info: http://lists.roundcube.net/dev/

Reply via email to