alecpl
2011-04-29 cf58ce8512f389f9b9c1bad3fe6dfcb293163f15
- Fix a bug where selecting too many contacts would produce too large URI request (#1487892)


3 files modified
14 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/js/app.js 9 ●●●●● patch | view | raw | blame | history
program/steps/addressbook/mailto.inc 4 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Fix a bug where selecting too many contacts would produce too large URI request (#1487892)
- Fix relative URLs handling according to a <base> in HTML (#1487889)
- Fix handling of top-level domains with more than 5 chars or unicode chars (#1487883)
- Fix usage of non-standard HTTP error codes (#1487797)
program/js/app.js
@@ -829,24 +829,21 @@
          }
          // use contact_id passed as command parameter
          var a_cids = [];
          var n, len, a_cids = [];
          if (props)
            a_cids.push(props);
          // get selected contacts
          else if (this.contact_list) {
            var selection = this.contact_list.get_selection();
            for (var n=0; n<selection.length; n++)
            for (n=0, len=selection.length; n<len; n++)
              a_cids.push(selection[n]);
          }
          if (a_cids.length)
            this.http_request('mailto', '_cid='+urlencode(a_cids.join(','))+'&_source='+urlencode(this.env.source), true);
            this.http_post('mailto', {_cid: a_cids.join(','), _source: this.env.source}, true);
          break;
        }
        // don't know if this is necessary...
        url = url.replace(/&_framed=1/, '');
        this.redirect(url);
        break;
program/steps/addressbook/mailto.inc
@@ -19,14 +19,14 @@
*/
$cid = get_input_value('_cid', RCUBE_INPUT_GET);
$cid = get_input_value('_cid', RCUBE_INPUT_POST);
$recipients = null;
$mailto = array();
if ($cid && preg_match('/^[a-z0-9\+\/=_-]+(,[a-z0-9\+\/=_-]+)*$/i', $cid) && $CONTACTS->ready)
{
  $CONTACTS->set_page(1);
  $CONTACTS->set_pagesize(100);
  $CONTACTS->set_pagesize(substr_count($cid, ',')+2); // +2 to skip counting query
  $recipients = $CONTACTS->search($CONTACTS->primary_key, $cid);
  while (is_object($recipients) && ($rec = $recipients->iterate())) {