$search = Horde_Serialize::unserialize($search, Horde_Serialize::JSON);
$args += array(
'search_uid' => isset($search->imapuid) ? $search->imapuid : null,
- 'search_unseen' => isset($search->unseen) ? $search->unseen : null,
- 'search_view' => isset($search->view) ? $search->view : null
+ 'search_unseen' => isset($search->unseen) ? $search->unseen : null
);
}
}
}
- this.viewport.loadView(f, { search: (this.uid ? { imapuid: Number(this.uid), view: f } : null), background: opts.background});
+ this.viewport.loadView(f, { search: (this.uid ? { imapuid: Number(this.uid) } : null), background: opts.background});
},
_createViewPort: function()
$cached = array_flip($cached);
}
- if (isset($args['search_unseen'])) {
+ if (!empty($args['search_unseen'])) {
/* Do an unseen search. We know what messages the browser
* doesn't have based on $cached. Thus, search for the first
* unseen message not located in $cached. */
return $result;
}
$rownum = array_search(reset($uid_search), $sorted_list['s']);
+ } elseif (!empty($args['search_uid'])) {
+ $rownum = 1;
+ foreach (array_keys($sorted_list['s'], $args['search_uid']) as $val) {
+ if (empty($sorted_list['m'][$val]) ||
+ ($sorted_list['m'][$val] == $args['search_mbox'])) {
+ $rownum = $val;
+ break;
+ }
+ }
} else {
/* If this is the initial request for a mailbox, figure out the
* starting location based on user's preferences. */
}
/* Determine the row slice to process. */
- if (isset($args['search_uid']) || !is_null($rownum)) {
- if (is_null($rownum)) {
- $rownum = 1;
- foreach (array_keys($sorted_list['s'], $args['search_uid']) as $val) {
- if (empty($sorted_list['m'][$val]) ||
- ($sorted_list['m'][$val] == $args['search_mbox'])) {
- $rownum = $val;
- break;
- }
- }
- }
-
+ if (is_null($rownum)) {
+ $slice_start = $args['slice_start'];
+ $slice_end = $args['slice_end'];
+ } else {
$slice_start = $rownum - $args['before'];
$slice_end = $rownum + $args['after'];
if ($slice_start < 1) {
}
$result->rownum = $rownum;
- } else {
- $slice_start = $args['slice_start'];
- $slice_end = $args['slice_end'];
}
$slice_start = max(1, $slice_start);