Rodrigo Santellan | 14 Apr 21:45 2015

[RCD] Help trying to do a search with only the framework.


I'm trying to do a search with only the framework framework. I has been trying to separate the component so they can be used on another framework, I'm using it now in Symonfony2 but planing to use in another ones.

So far I identified the class rcube_imap_search that will do the search.

I created a helper with static methods that I'm rewriting to not use globals.

On the file RouncubeHelper I create a connection to the IMAP server. My problem is that when I try to do the actual search with the method search it always come empty.

What I'm missing? If I'm using only one folder is a good practice to call to:
$searchRcube = new \rcube_imap_search(array('skip_deleted' => true), $this->rcube->get_storage()->conn);
$data = $searchRcube->exec(array($folder), $criteria, null, 'date');

Like that?

Regards and thank in advance for any help.
Attachment (RoundcubeHelper.php): application/x-httpd-php, 7444 bytes
Attachment (ReceiveHelper.class.php): application/x-httpd-php, 26 KiB
Roundcube Development discussion mailing list
dev <at>

[RCD] Patch

There are an error in function rcmail_message_list_smart_column_name in 

Good function looks like this

function rcmail_message_list_smart_column_name()
     global $RCMAIL;

     $delim       = $RCMAIL->storage->get_hierarchy_delimiter();
     $mbox        = $RCMAIL->output->get_env('mailbox') ?: 
     $sent_mbox   = $RCMAIL->config->get('sent_mbox');
     $drafts_mbox = $RCMAIL->config->get('drafts_mbox');

     if (((strpos($mbox.$delim, $sent_mbox.$delim) === false) || 
(strpos($mbox.$delim, $drafts_mbox.$delim) === false))
         && (strpos(strtoupper($mbox.$delim), 'INBOX'.$delim) === false)
     ) {
         return 'to';

     return 'from';

Roundcube Development discussion mailing list
dev <at>

Cor Bosman | 3 Apr 10:57 2015

[RCD] plugin for developers

Hey all, i had a need for this, so maybe some of you developers that also create plugins can use it as well.

I made a plugin that adds any number of sections to your preferences, and lets other plugins register on that section. Useful if you have a few local plugins that belong together and can be put into one section. 



Roundcube Development discussion mailing list
dev <at>
Cor Bosman | 2 Apr 12:19 2015

[RCD] icons

Hey all, as a plugin developer I often run into the problem of what icon to use for tabs and sections. I usually
end up using one of the existing icons, but it doesnt really look nice when you have 5 tabs using the same

I think roundcube really limited itself by using custom icons. It's kind of reinventing the wheel.

Would it be an idea to add fontawesome as an icon set to roundcube?  This would add over 500 icons to the set to
choose from and is framework agnostic. We would need a way for plugin authors to add a classname to their
tabs/section, but that shouldnt be too hard. I think it wouldnt even be so bad if roundcube itself used
fontawesome icons.



Roundcube Development discussion mailing list
dev <at>

Olivier Thauvin | 27 Mar 13:59 2015

[RCD] Patch: one fix and one feature

Hi guys,

We are using roundcube at works and we found two problem we'd really like to see

The first one is trival: on/off french translation in sieve plugin are wrong telling
filter is off when it's on and vice et versa.

The second is a bit more tricky: the dovecot sieve vacation feature will act
only the receive mail is addressed to exactly the user's mail. But the mail I
use is not LOGIN <at> domain but first.lastname <at> domain making sieve never replying.
The workaround is to add my address when enabling sieve filter.

The patch I did will find my addresses from my roundcube identities and add them
automatically. So our users has less things to do to make it works.

I hope you'll find them usefull.



Olivier Thauvin
♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖
commit 43c41f7772e7484cc48e118d922598da552d8d91
Author: Olivier Thauvin <olivier.thauvin <at>>
Date:   Mon Mar 16 18:15:09 2015 +0100

    Add identities email to sieve vacation addresses

    This patch add identities email addresse into the :addresses vacation option
    allowing sieve to properly recognize email destination.

diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
index 8d86500..50ce839 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
 <at>  <at>  -329,6 +329,16  <at>  <at>  class rcube_sieve_vacation extends rcube_sieve_engine
             'noclose' => true
             ) + $attrib);

+        // Setting default identities into sieve vacation module
+        // This avoid issue when email is not login and sieve don't recognize it
+        if (!$this->vacation['addresses']) {
+            $identities = rcmail::get_instance()->user->list_identities(null, true);
+            $this->vacation['addresses'] = array();
+            foreach ($identities as $idx => $ident) {
+                $this->vacation['addresses'][] = $ident['email_ascii'];
+            }
+        }
         // form elements
         $subject   = new html_inputfield(array('name' => 'vacation_subject', 'id' => 'vacation_subject',
'size' => 50));
         $reason    = new html_textarea(array('name' => 'vacation_reason', 'id' => 'vacation_reason', 'cols' =>
60, 'rows' => 8));
commit 6f87c428f99d9388a9d0f828b4622beed45d7f1a
Author: Olivier Thauvin <olivier.thauvin <at>>
Date:   Fri Mar 27 13:48:18 2015 +0100

    Fix french translation (reverse on/off)

diff --git a/plugins/managesieve/localization/ b/plugins/managesieve/localization/
index a0a38b0..51cc299 100644
--- a/plugins/managesieve/localization/
+++ b/plugins/managesieve/localization/
 <at>  <at>  -168,8 +168,8  <at>  <at>  $labels['vacation.body'] = 'Corps';
 $labels['vacation.start'] = 'Début de vacances';
 $labels['vacation.end'] = 'Fin de vacances';
 $labels['vacation.status'] = 'État';
-$labels['vacation.on'] = 'Arrêt';
-$labels[''] = 'Marche';
+$labels['vacation.on'] = 'Marche';
+$labels[''] = 'Arrêt';
 $labels['vacation.addresses'] = 'Mes adresses supplémentaires';
 $labels['vacation.interval'] = 'Plage de réponse';
 $labels['vacation.after'] = 'Mettre en place la règle de vacances après';
Roundcube Development discussion mailing list
dev <at>
Michael Heydekamp | 22 Mar 21:41 2015

[RCD] Submenus of contextmenu not accessible anymore in 1.2-git

Currently submenus of contextmenu plugin are not accessible anymore in
1.2-git, just a very small white rectangle is being shown instead.

Any hint...?


Michael Heydekamp
Roundcube Development discussion mailing list
dev <at>
Thomas Bruederli | 18 Mar 21:14 2015

[RCD] Update 1.1.1 released

Dear Roundcube users

We're proud to announce the first service release to the stable
version 1.1 of Roundcube webmail. It contains
some important bug fixes and improvements in error handling as well as
a few new features and configuration options.

See the full Changelog here:

It's considered stable and we recommend to update all productive
installations of Roundcube with this version. Download it from

And remember: backup before you update!

Kind regards,
Roundcube Development discussion mailing list
dev <at>

Rodrigo Santellan | 16 Mar 22:04 2015

[RCD] Problem with rcube_imap_cache.


I'm trying to decoupling a little bit the roundcube base to use in a project.

My problem is that running roundcube in console with only the framework works like a charm but when I try to put in a Symfony2 project I have undefined $index on rcube_imap_cache.

The line is this:
$this->add_index_row($mailbox, $sort_field, $data, $mbox_data, $exists, $index['modseq']);

On the method: function get_index($mailbox, $sort_field = null, $sort_order = null, $existing = false)

My problem is that I cannot find where $index is defined.

Where is that property is constructed?

Roundcube Development discussion mailing list
dev <at>
Hans de Raad | 8 Mar 21:58 2015

[RCD] Fwd: Re: Roundcube Next - a survey

Hi Thomas,

first of all, many thanks for the great software you and the other RC communitymembers have provided me with
in the past years.
It has been an absolute pleasure using it and I have a lot of very satisfied customers thankfully using it on a
daily basis as well.

With regards to your questions:

#1: what's your take on the programming language choice?

From a hosting perspective, currently nothing beats PHP. However PHP does have its drawbacks mostly
related to shared hosting environments using old versions (which are a real PITA).
From a developer perspective, for backend web development modern PHP is just as suitable for just about any
project as Python, Ruby or even Java. So when selecting a programming language of choice in my projects my
first priority would be developer familiarity with the language and the status of the frameworks
avaiable in it.

And from that perspective, PHP has quite a lot going for it. Frameworks like Symfony 2 are very mature and
versatile (even huge projects like Drupal are moving towards leveraging their power). Also with modern
theming engines like Twig, separating layout and business logic is very mature.

Performance wise, for most projects PHP is good enough, especially since mostly the performance
bottlenecks aren't in the webserver (or PHP parser/engine) but in the database/storage behind it.

But, that said, there are valid alternatives and NodeJS is definitely one project to watch. However, I've
had mixed experiences with its stability, especially since the codebase is evolving very rapidly
(featurewise) there are quite some things to watch out for when utilizing third party libaries since not
all of them are keeping up with this well enough. Another issue is in distributions, especially
enterprise (or LTS) releases tend to stick with older versions of packages only backporting necessary
security patches. 
This could ofcourse change when containerized deployments become more mainstream, however I expect that
will take at least a couple of years to really materialize.

#2: what are your favorite javascript application libraries and frameworks?

At the moment everything seems to be about either Backbone.js, Ember.JS and AngularJS.
These platforms are quite different and depending on your needs can either be very much overkill or
underfeatured. Backbone in example doesnt have two way data binding out of the box (you can use something
like Epoxy.js or stickit), while the others do, however backbone is severely lighter than the other 2 and
can utilize quite a broad range of external libraries like underscore js.

AngularJS is pretty much universally regarded (always dangerous to state something like that, but please
allow me for the sake of argument) to have the broadest featureset, but that also comes with quite a steep
learning curve.
Projects which start from scratch often seem to select Angular, while Backbone seems to be integrated with
existing systems (like, again Drupal) quite often.

#3: who's willing to help us draft the perfect protocol for this?

I have some experience with messaging protocols ranging from bus networks (yay good old RS485) and SNMP to
XMPP, so I'd love to contribute to that, but I don't have a lot of time available, so my contributions would
probably mostly be limited to reviewing and the occasional comment.
My advise in general however would be (and I know I'm preaching to the choir, but still) to adopt a protocol if
it already exists and can be considered an open standard. from that POV the JMAP protocol looks very promising.


I hope my input has been useful to you! Looking forward to see what you and the other great community members
come up with!

Best regards


OpenNovations / DevHdR

Van Sevenbergestraat 49
2274PK Voorburg

Tel +31 6 83578847

www.hcderaad.nlHans de Raad
Attachment (Info #4.vcf): text/vcard, 181 bytes
Roundcube Development discussion mailing list
dev <at>
Michael Heydekamp | 8 Mar 00:53 2015

[RCD] RC session terminated every few minutes...?


currently my Roundcube session is being terminated every few minutes, so I
have to type this message pretty fast. ;)

Roundcube Webmail 1.2-git [GIT 20150306.1906]

Ist this a (known) Roundcube issue...?


Michael Heydekamp
Roundcube Development discussion mailing list
dev <at>
Cor Bosman | 7 Mar 14:02 2015

[RCD] session storage driver plugin support

Hey all, I recently submitted two PRs to refactor session storage. The first made it 
possible to hook into sessions, which get initialised very early in the code execution path.
The second refactored session storage drivers into separate classes and added redis
as a session storage driver. 

Both PRs were accepted, so for people wanting to experiment you can use redis as
a session store in the master branch. I also created a sample plugin that adds php-memcached
(not to be confused with php-memcache, they are two different PHP memcache options) as
a session store. 

You can find the example plugin here:


Roundcube Development discussion mailing list
dev <at>