IMP_Contents_View::downloadAll PHP Méthode

downloadAll() public méthode

public downloadAll ( )
    public function downloadAll()
    {
        global $page_output, $session;
        $headers = $this->_contents->getHeader();
        $zipfile = trim(preg_replace('/[^\\pL\\pN-+_. ]/u', '_', $headers['Subject']), ' _');
        if (empty($zipfile)) {
            $zipfile = _("attachments.zip");
        } else {
            $zipfile .= '.zip';
        }
        $page_output->disableCompression();
        $session->close();
        $tosave = array();
        foreach ($this->_contents->downloadAllList() as $val) {
            if (!($mime = $this->_getRawDownloadPart($val))) {
                continue;
            }
            if (!($name = $mime->getName(true))) {
                $name = sprintf(_("part %s"), $val);
            }
            $tosave[] = array('data' => $mime->getContents(array('stream' => true)), 'name' => $name);
        }
        if (empty($tosave)) {
            return array();
        }
        return array('data' => Horde_Compress::factory('Zip')->compress($tosave, array('stream' => true)), 'name' => $zipfile, 'type' => 'application/zip');
    }

Usage Example

Exemple #1
0
 /**
  * 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();
 }