isFileHasThumbnail just check for GD/GMagick/IMagick

And small cleanup
This commit is contained in:
djmaze 2021-11-19 11:10:08 +01:00
parent 378ba93100
commit 3895b7233c
2 changed files with 24 additions and 54 deletions

View file

@ -49,7 +49,16 @@ abstract class Collection extends \ArrayObject implements \JsonSerializable
{ {
$this->exchangeArray([]); $this->exchangeArray([]);
} }
/*
public function __call(string $name, array $arguments)
{
$callable = "array_{$name}";
if (!\is_callable($callable)) {
throw new BadMethodCallException(__CLASS__.'->'.$name);
}
return $callable($this->getArrayCopy(), ...$arguments);
}
*/
public function Slice(int $offset, int $length = null, bool $preserve_keys = false) public function Slice(int $offset, int $length = null, bool $preserve_keys = false)
{ {
return new static( return new static(
@ -70,7 +79,7 @@ abstract class Collection extends \ArrayObject implements \JsonSerializable
$aNames = \explode('\\', \get_class($this)); $aNames = \explode('\\', \get_class($this));
return array( return array(
'@Object' => 'Collection/' . \end($aNames), '@Object' => 'Collection/' . \end($aNames),
'@Count' => $this->Count(), '@Count' => $this->count(),
'@Collection' => $this->getArrayCopy() '@Collection' => $this->getArrayCopy()
); );
} }

View file

@ -124,29 +124,15 @@ trait Response
static $aCache = array(); static $aCache = array();
$sExt = \MailSo\Base\Utils::GetFileExtension($sFileName); $sExt = \MailSo\Base\Utils::GetFileExtension($sFileName);
if (isset($aCache[$sExt])) if (isset($aCache[$sExt])) {
{
return $aCache[$sExt]; return $aCache[$sExt];
} }
$bResult = \function_exists('gd_info'); $bResult = (
if ($bResult) \extension_loaded('gd')
{ || \extension_loaded('gmagick')
$bResult = false; || \extension_loaded('imagick')
switch ($sExt) ) && \in_array($sExt, ['png', 'gif', 'jpg', 'jpeg']);
{
case 'png':
$bResult = \function_exists('imagecreatefrompng');
break;
case 'gif':
$bResult = \function_exists('imagecreatefromgif');
break;
case 'jpg':
case 'jpeg':
$bResult = \function_exists('imagecreatefromjpeg');
break;
}
}
$aCache[$sExt] = $bResult; $aCache[$sExt] = $bResult;
@ -160,31 +146,6 @@ trait Response
$sFolderFullName : \md5($sFolderFullName); $sFolderFullName : \md5($sFolderFullName);
} }
private function objectData(object $oData, string $sParent, array $aParameters = array()) : array
{
$mResult = array();
if (\is_object($oData))
{
$aNames = \explode('\\', \get_class($oData));
$mResult = array(
'@Object' => \end($aNames)
);
if ($oData instanceof \MailSo\Base\Collection)
{
$mResult['@Object'] = 'Collection/'.$mResult['@Object'];
$mResult['@Count'] = $oData->Count();
$mResult['@Collection'] = $this->responseObject($oData->getArrayCopy(), $sParent, $aParameters);
}
else
{
$mResult['@Object'] = 'Object/'.$mResult['@Object'];
}
}
return $mResult;
}
/** /**
* @param mixed $mResponse * @param mixed $mResponse
* *
@ -241,7 +202,7 @@ trait Response
'Folder' => $mResult['Folder'], 'Folder' => $mResult['Folder'],
'Uid' => $mResult['Uid'], 'Uid' => $mResult['Uid'],
'MimeType' => 'message/rfc822', 'MimeType' => 'message/rfc822',
'FileName' => (0 === \strlen($sSubject) ? 'message-'.$mResult['Uid'] : \MailSo\Base\Utils::ClearXss($sSubject)).'.eml' 'FileName' => (\strlen($sSubject) ? \MailSo\Base\Utils::ClearXss($sSubject) : 'message-'.$mResult['Uid']) . '.eml'
)); ));
$sForwardedFlag = $this->Config()->Get('labs', 'imap_forwarded_flag', ''); $sForwardedFlag = $this->Config()->Get('labs', 'imap_forwarded_flag', '');
@ -253,7 +214,7 @@ trait Response
if ('Message' === $sParent) if ('Message' === $sParent)
{ {
$oAttachments = /* @var \MailSo\Mail\AttachmentCollection */ $mResponse->Attachments(); $oAttachments = /* @var \MailSo\Mail\AttachmentCollection */ $mResponse->Attachments();
$bHasExternals = false; $bHasExternals = false;
$mFoundedCIDs = array(); $mFoundedCIDs = array();
@ -278,7 +239,7 @@ trait Response
$sPlain = ''; $sPlain = '';
$sHtml = \trim($mResponse->Html()); $sHtml = \trim($mResponse->Html());
if (0 === \strlen($sHtml)) if (!\strlen($sHtml))
{ {
$sPlain = \trim($mResponse->Plain()); $sPlain = \trim($mResponse->Plain());
} }
@ -304,15 +265,15 @@ trait Response
return \preg_replace('/[\r\n]+/', '<br />', $aMatches[1].\trim($aMatches[2]).$aMatches[3]); return \preg_replace('/[\r\n]+/', '<br />', $aMatches[1].\trim($aMatches[2]).$aMatches[3]);
}, $sHtml); }, $sHtml);
$mResult['Html'] = 0 === \strlen($sHtml) ? '' : \MailSo\Base\HtmlUtils::ClearHtml( $mResult['Html'] = \strlen($sHtml) ? \MailSo\Base\HtmlUtils::ClearHtml(
$sHtml, $bHasExternals, $mFoundedCIDs, $aContentLocationUrls, $mFoundedContentLocationUrls, false, false, $sHtml, $bHasExternals, $mFoundedCIDs, $aContentLocationUrls, $mFoundedContentLocationUrls, false, false,
$fAdditionalExternalFilter, null, !!$this->Config()->Get('labs', 'try_to_detect_hidden_images', false) $fAdditionalExternalFilter, null, !!$this->Config()->Get('labs', 'try_to_detect_hidden_images', false)
); ) : '';
$mResult['ExternalProxy'] = null !== $fAdditionalExternalFilter; $mResult['ExternalProxy'] = null !== $fAdditionalExternalFilter;
$mResult['Plain'] = $sPlain; $mResult['Plain'] = $sPlain;
// $mResult['Plain'] = 0 === \strlen($sPlain) ? '' : \MailSo\Base\HtmlUtils::ConvertPlainToHtml($sPlain); // $mResult['Plain'] = \strlen($sPlain) ? \MailSo\Base\HtmlUtils::ConvertPlainToHtml($sPlain) : '';
$mResult['TextHash'] = \md5($mResult['Html'].$mResult['Plain']); $mResult['TextHash'] = \md5($mResult['Html'].$mResult['Plain']);
@ -446,7 +407,7 @@ trait Response
$mResult = $mResponse->jsonSerialize(); $mResult = $mResponse->jsonSerialize();
$mResult['@Collection'] = $this->responseObject($mResult['@Collection'], $sParent, $aParameters); $mResult['@Collection'] = $this->responseObject($mResult['@Collection'], $sParent, $aParameters);
if ($mResponse instanceof \MailSo\Mail\EmailCollection) { if ($mResponse instanceof \MailSo\Mail\EmailCollection) {
return array_slice($mResult['@Collection'], 0, 100); return \array_slice($mResult['@Collection'], 0, 100);
} }
if ($mResponse instanceof \MailSo\Mail\AttachmentCollection if ($mResponse instanceof \MailSo\Mail\AttachmentCollection
|| $mResponse instanceof \MailSo\Mail\FolderCollection || $mResponse instanceof \MailSo\Mail\FolderCollection