/**
* URL parameters:
* - actionID
*
* @throws IMP_Exception
*/
public function download(Horde_Variables $vars)
{
global $injector, $registry;
/* Check for an authenticated user. */
if (!$registry->isAuthenticated(array('app' => 'imp'))) {
$e = new IMP_Exception(_("User is not authenticated."));
$e->logged = true;
throw $e;
}
switch ($vars->actionID) {
case 'download_all':
$view_ob = new IMP_Contents_View(new IMP_Indices_Mailbox($vars));
$view_ob->checkToken($vars);
return $view_ob->downloadAll();
case 'download_attach':
$view_ob = new IMP_Contents_View(new IMP_Indices_Mailbox($vars));
$view_ob->checkToken($vars);
return $view_ob->downloadAttach($vars->id, $vars->zip);
case 'download_mbox':
$mlist = IMP_Mailbox::formFrom($vars->mbox_list);
$mbox = $injector->getInstance('IMP_Mbox_Generate')->generate($mlist);
$name = is_array($mlist) ? reset($mlist) : $mlist;
switch ($vars->type) {
case 'mbox':
return array('data' => $mbox, 'name' => $name . '.mbox', 'type' => 'text/plain; charset=UTF-8');
case 'mboxzip':
try {
$data = Horde_Compress::factory('Zip')->compress(array(array('data' => $mbox, 'name' => $name . '.mbox')), array('stream' => true));
fclose($mbox);
} catch (Horde_Exception $e) {
fclose($mbox);
throw $e;
}
return array('data' => $data, 'name' => $name . '.zip', 'type' => 'application/zip');
}
break;
case 'download_render':
$view_ob = new IMP_Contents_View(new IMP_Indices_Mailbox($vars));
$view_ob->checkToken($vars);
return $view_ob->downloadRender($vars->id, $vars->mode, $vars->ctype);
case 'save_message':
$view_ob = new IMP_Contents_View(new IMP_Indices_Mailbox($vars));
return $view_ob->saveMessage();
}
return array();
}