Horde_Registry::appInit('imp', array('session_control' => 'readonly')); $vars = $injector->getInstance('Horde_Variables'); /* Run through action handlers */ switch ($vars->actionID) { case 'compose_attach_preview': $view_ob = new IMP_Compose_View($vars->composeCache); $res = $view_ob->composeAttachPreview($vars->id, true, $vars->ctype); break; case 'print_attach': $view_ob = new IMP_Contents_View(new IMP_Indices_Mailbox($vars)); $view_ob->checkToken($vars); $res = $view_ob->printAttach($vars->id); break; case 'view_attach': $view_ob = new IMP_Contents_View(new IMP_Indices_Mailbox($vars)); $view_ob->checkToken($vars); $res = $view_ob->viewAttach($vars->id, $vars->mode, $vars->autodetect, $vars->ctype); break; case 'view_source': $view_ob = new IMP_Contents_View(new IMP_Indices_Mailbox($vars)); $res = $view_ob->viewSource(); break; } if (empty($res)) { exit; } if (is_resource($res['data'])) { fseek($res['data'], 0, SEEK_END); $size = ftell($res['data']); } else { $size = strlen($res['data']);
/** * 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(); }