* @category Horde
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package Mime_Viewer
*/
class Horde_Mime_Viewer_Msexcel extends Horde_Mime_Viewer_Base
{
/**
* This driver's display capabilities.
*
* @var array
*/
protected $_capability = array(
'full' => true,
'info' => false,
'inline' => false,
'raw' => false
);
/**
* Constructor.
*
* @param Horde_Mime_Part $mime_part The object with the data to be
* rendered.
* @param array $conf Configuration:
*
* 'location' - (string) Location of the gnumeric binary.
*
*
* @throws InvalidArgumentException
*/
public function __construct(Horde_Mime_Part $part, array $conf = array())
{
$this->_required = array_merge($this->_required, array(
'location'
));
parent::__construct($part, $conf);
}
/**
* Return the full rendered version of the Horde_Mime_Part object.
*
* @return array See parent::render().
*/
protected function _render()
{
/* Check to make sure the viewer program exists. */
if (!($location = $this->getConfigParam('location')) ||
!file_exists($location)) {
return array();
}
$process = proc_open(
escapeshellcmd($location) . ' --import-type=Gnumeric_Excel:excel --export-type=Gnumeric_html:html40 fd://0 fd://1',
array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w')
),
$pipes
);
if (is_resource($process)) {
fwrite($pipes[0], $this->_mimepart->getContents());
fclose($pipes[0]);
$out = stream_get_contents($pipes[1]);
fclose($pipes[1]);
} else {
$out = '';
}
return $this->_renderReturn(
$out,
'text/html; charset=UTF-8'
);
}
}