/** * 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(); }