Пример #1
0
 /**
  * Returns a link to display and download a file from the VFS backend
  * associated with this object.
  *
  * @param string $file  The file name.
  *
  * @return string  The HTML code of the generated link.
  */
 public function vfsDisplayUrl($file)
 {
     global $registry;
     $mime_part = new Horde_Mime_Part();
     $mime_part->setType(Horde_Mime_Magic::extToMime($file['type']));
     $viewer = $GLOBALS['injector']->getInstance('Horde_Core_Factory_MimeViewer')->create($mime_part);
     // We can always download files.
     $url_params = array('actionID' => 'download_file', 'file' => $file['name'], 'type' => $file['type'], 'source' => $this->driver->getName(), 'key' => $this->getValue('__key'));
     $dl = Horde::link($registry->downloadUrl($file['name'], $url_params), $file['name']) . Horde_Themes_Image::tag('download.png', array('alt' => _("Download"))) . '</a>';
     // Let's see if we can view this one, too.
     if ($viewer && !$viewer instanceof Horde_Mime_Viewer_Default) {
         $url = Horde::url('view.php')->add($url_params)->add('actionID', 'view_file');
         $link = Horde::link($url, $file['name'], null, '_blank') . $file['name'] . '</a>';
     } else {
         $link = $file['name'];
     }
     return $link . ' ' . $dl;
 }
Пример #2
0
 public function setMapiAttribute($type, $name, $value)
 {
     switch ($name) {
         case Horde_Compress_Tnef::MAPI_ATTACH_LONG_FILENAME:
             $this->name = preg_replace('/.*[\\/](.*)$/', '\\1', $value);
             break;
         case Horde_Compress_Tnef::MAPI_ATTACH_MIME_TAG:
             $type = str_replace("", '', preg_replace('/^(.*)\\/.*/', '\\1', $value));
             $subtype = str_replace("", '', preg_replace('/.*\\/(.*)$/', '\\1', $value));
             $this->type = $type;
             $this->subtype = $subtype;
             break;
         case Horde_Compress_Tnef::MAPI_ATTACH_EXTENSION:
             $value = Horde_Mime_Magic::extToMime($value);
             $type = str_replace("", '', preg_replace('/^(.*)\\/.*/', '\\1', $value));
             $subtype = str_replace("", '', preg_replace('/.*\\/(.*)$/', '\\1', $value));
             $this->type = $type;
             $this->subtype = $subtype;
     }
 }
Пример #3
0
}
$gollem_vfs = $injector->getInstance('Gollem_Vfs');
$stream = null;
$data = '';
try {
    if (is_callable(array($gollem_vfs, 'readStream'))) {
        $stream = $gollem_vfs->readStream($vars->dir, $vars->file);
    } else {
        $data = $gollem_vfs->read($vars->dir, $vars->file);
    }
} catch (Horde_Vfs_Exception $e) {
    Horde::log($e, 'NOTICE');
    throw $e;
}
$mime_part = new Horde_Mime_Part();
$mime_part->setType(Horde_Mime_Magic::extToMime($vars->type));
$mime_part->setContents(is_resource($stream) ? $stream : $data);
$mime_part->setName($vars->file);
// We don't know better.
$mime_part->setCharset('US-ASCII');
$ret = $injector->getInstance('Horde_Core_Factory_MimeViewer')->create($mime_part)->render('full');
reset($ret);
$key = key($ret);
try {
    $size = $gollem_vfs->size($vars->dir, $vars->file);
} catch (Horde_Vfs_Exception $e) {
    $size = null;
}
if (empty($ret)) {
    $browser->downloadHeaders($vars->file, null, false, $size);
    if (is_resource($stream)) {
Пример #4
0
 /**
  * Returns the links to view, download, and delete an attachment.
  *
  * @param integer $ticket  A ticket ID.
  * @param string $file     An attachment name.
  * @param integer $queue   The ticket's queue ID.
  *
  * @return array  List of URLs.
  */
 public static function attachmentUrl($ticket, $file, $queue)
 {
     global $injector, $registry;
     $links = array();
     // Can we view the attachment online?
     $mime_part = new Horde_Mime_Part();
     $mime_part->setType(Horde_Mime_Magic::extToMime($file['type']));
     $viewer = $injector->getInstance('Horde_Core_Factory_MimeViewer')->create($mime_part);
     if ($viewer && !$viewer instanceof Horde_Mime_Viewer_Default) {
         $links['view'] = Horde::url('view.php')->add(array('actionID' => 'view_file', 'type' => $file['type'], 'file' => $file['name'], 'ticket' => $ticket))->link(array('title' => $file['name'], 'target' => '_blank')) . $file['name'] . '</a>';
     } else {
         $links['view'] = $file['name'];
     }
     // We can always download attachments.
     $url_params = array('actionID' => 'download_file', 'file' => $file['name'], 'ticket' => $ticket);
     $links['download'] = $registry->downloadUrl($file['name'], $url_params)->link(array('title' => $file['name'])) . Horde::img('download.png', _("Download")) . '</a>';
     // Admins can delete attachments.
     if (self::hasPermission($queue, 'queue', Horde_Perms::DELETE)) {
         $links['delete'] = Horde::url('ticket/delete_attachment.php')->add(array('file' => $file['name'], 'id' => $ticket, 'url' => Horde::selfUrl(true, false, true)))->link(array('title' => sprintf(_("Delete %s"), $file['name']), 'onclick' => 'return window.confirm(\'' . addslashes(sprintf(_("Permanently delete %s?"), $file['name'])) . '\');')) . Horde::img('delete.png', sprintf(_("Delete %s"), $file['name'])) . '</a>';
     }
     return $links;
 }
Пример #5
0
                 if (substr($val['link'], 0, 1) == '/') {
                     $parts = explode('/', $val['link']);
                     $name = array_pop($parts);
                     $dir = implode('/', $parts);
                 } else {
                     $name = $val['link'];
                     $dir = Gollem::$backend['dir'];
                 }
                 $url = $manager_url->copy()->add('dir', Gollem::subdirectory($dir, $name));
                 $item['link'] = $item['name'] . ' -> ' . $url->link() . $val['link'] . '</a>';
             } else {
                 $item['link'] = $item['name'] . ' -> ' . $val['link'];
             }
             break;
         default:
             $mime_type = Horde_Mime_Magic::extToMime($val['type']);
             // Edit link if possible.
             if (strpos($mime_type, 'text/') === 0) {
                 $url = $edit_url->copy()->add(array('actionID' => 'edit_file', 'type' => $val['type'], 'file' => $val['name'], 'dir' => Gollem::$backend['dir'], 'driver' => Gollem::$backend['driver']));
                 $item['edit'] = Horde::link('#', '', '', '_blank', Horde::popupJs($url));
             }
             // We can always download files.
             $item['dl'] = $registry->downloadUrl($val['name'], array('dir' => Gollem::$backend['dir'], 'backend' => $GLOBALS['session']->get('gollem', 'backend_key')))->link(array('title' => sprintf(_("Download %s"), $val['name'])));
             // Try a view link.
             $url = $view_url->copy()->add(array('type' => $val['type'], 'file' => $val['name'], 'dir' => Gollem::$backend['dir'], 'driver' => Gollem::$backend['driver']));
             $item['link'] = Horde::link('#', '', '', '_blank', Horde::popupJs($url)) . $name . '</a>';
             break;
     }
     $entry[] = $item;
 }
 /* Set up the variables needed for the header row. */
Пример #6
0
 public static function base64ImgData($in, $limit = null)
 {
     if (!($dataurl = $GLOBALS['browser']->hasFeature('dataurl'))) {
         return $in;
     }
     if (!is_null($limit) && (is_bool($dataurl) || $limit < $dataurl)) {
         $dataurl = $limit;
     }
     /* Only encode image files if they are below the dataurl limit. */
     if (!$in instanceof Horde_Themes_Image) {
         $in = self::fromUri($in);
     }
     if (!file_exists($in->fs)) {
         return $in->uri;
     }
     /* Delete approx. 50 chars from the limit to account for the various
      * data/base64 header text.  Multiply by 0.75 to determine the
      * base64 encoded size. */
     return $dataurl === true || filesize($in->fs) <= $dataurl * 0.75 - 50 ? strval(Horde_Url_Data::create(Horde_Mime_Magic::extToMime(substr($in->uri, strrpos($in->uri, '.') + 1)), file_get_contents($in->fs))) : $in->uri;
 }