use wcf\system\devtools\DevtoolsSetup;
use wcf\system\exception\SystemException;
use wcf\system\exception\UserInputException;
+use wcf\system\image\adapter\ImagickImageAdapter;
use wcf\system\io\File;
use wcf\system\io\Tar;
use wcf\system\language\LanguageFactory;
}
$system['gdLib']['result'] = (version_compare($system['gdLib']['value'], '2.0.0') >= 0);
+ // ImageMagick
+ $system['imagick'] = ['result' => false];
+ if (ImagickImageAdapter::isSupported()) {
+ $system['imagick'] = [
+ 'result' => true,
+ 'value' => ImagickImageAdapter::getVersion(),
+ ];
+ $system['imagick']['supportsAnimatedGIFs'] = ImagickImageAdapter::supportsAnimatedGIFs($system['imagick']['value']);
+ }
+
// memory limit
$system['memoryLimit']['value'] = ini_get('memory_limit');
$system['memoryLimit']['result'] = $this->compareMemoryLimit();
SessionHandler::getInstance()->register('masterPassword', 1);
SessionHandler::getInstance()->register('__wcfSetup_developerMode', self::$developerMode);
SessionHandler::getInstance()->register('__wcfSetup_directories', self::$directories);
+ SessionHandler::getInstance()->register('__wcfSetup_imagick', ImagickImageAdapter::isSupported());
SessionHandler::getInstance()->unregister('__changeSessionID');
SessionHandler::getInstance()->update();
* active color
* @var \ImagickPixel
*/
- protected $color = null;
+ protected $color;
/**
* Imagick object
* @var \Imagick
*/
- protected $imagick = null;
+ protected $imagick;
/**
* image height
public function __construct() {
$this->imagick = new \Imagick();
- // check if writing animated gifs is supported
- $version = $this->imagick->getVersion();
- preg_match('~([0-9]+\.[0-9]+\.[0-9]+)~', $version['versionString'], $match);
- if (version_compare($match[0], '6.3.6') < 0) {
+ if (!static::supportsAnimatedGIFs(static::getVersion())) {
$this->supportsWritingAnimatedGIF = false;
}
}
public static function isSupported() {
return class_exists('\Imagick', false);
}
+
+ /**
+ * @return string
+ */
+ public static function getVersion() {
+ preg_match('~(?P<version>[0-9]+\.[0-9]+\.[0-9]+)~', \Imagick::getVersion()['versionString'], $match);
+
+ return $match['version'];
+ }
+
+ /**
+ * @param string $version
+ * @return bool
+ */
+ public static function supportsAnimatedGIFs($version) {
+ return version_compare($version, '6.3.6') >= 0;
+ }
}
}
}
+ if (WCF::getSession()->getVar('__wcfSetup_imagick')) {
+ $statement->execute([
+ 'imagick',
+ 'image_adapter_type',
+ ]);
+ }
+
// update options.inc.php
OptionEditor::resetCache();
}
<item name="wcf.global.systemRequirements.uploadMaxFilesize.description"><![CDATA[Die derzeitige Konfiguration der Skriptsprache „PHP“ macht das Hochladen von Dateien unmöglich. Einige Funktionalitäten werden durch diese Konfiguration nur eingeschränkt funktionieren.]]></item>
<item name="wcf.global.systemRequirements.gdLib"><![CDATA[Installierte Version der Grafikbearbeitungs-Bibliothek „gdlib“]]></item>
<item name="wcf.global.systemRequirements.gdLib.description"><![CDATA[Grafikbearbeitungs-Bibliothek „gdlib“ ist für die Verarbeitung und dynamische Generierung von Bildern zuständig.]]></item>
+ <item name="wcf.global.systemRequirements.imagick"><![CDATA[Installierte Version der Grafikbearbeitungs-Bibliothek „ImageMagick“]]></item>
+ <item name="wcf.global.systemRequirements.imagick.description"><![CDATA[Grafikbearbeitungs-Bibliothek „ImageMagick“ ist für die Verarbeitung und dynamische Generierung von Bildern zuständig. Unterstützt zusätzlich die Skalierung von animierten GIF-Dateien.]]></item>
<item name="wcf.global.systemRequirements.gdLib.notFound"><![CDATA[nicht gefunden]]></item>
<item name="wcf.global.systemRequirements.active"><![CDATA[aktiviert]]></item>
<item name="wcf.global.systemRequirements.notActive"><![CDATA[nicht aktiviert]]></item>
<item name="wcf.global.systemRequirements.gdLib"><![CDATA[Installed version of the graphics library “GDLib”]]></item>
<item name="wcf.global.systemRequirements.gdLib.description"><![CDATA[The graphics-library “GDLib” is needed to read images and for the dynamic image generation.]]></item>
<item name="wcf.global.systemRequirements.gdLib.notFound"><![CDATA[not found]]></item>
+ <item name="wcf.global.systemRequirements.imagick"><![CDATA[Installed version of the graphics library “ImageMagick”]]></item>
+ <item name="wcf.global.systemRequirements.imagick.description"><![CDATA[The graphics-library “ImageMagick” is used to read images and for the dynamic image generation. Supports for scaling of animated GIF files.]]></item>
<item name="wcf.global.systemRequirements.active"><![CDATA[Enabled]]></item>
<item name="wcf.global.systemRequirements.notActive"><![CDATA[Not enabled]]></item>
<item name="wcf.global.systemRequirements.memoryLimit"><![CDATA[PHP memory limit]]></item>
</dl>
</div>
</section>
+
+ <section class="section">
+ <h2 class="sectionTitle">{lang}wcf.global.systemRequirements.imagick{/lang}</h2>
+
+ <div class="row rowColGap formGrid">
+ <dl class="col-xs-12 col-md-6">
+ <dt>{lang}wcf.global.systemRequirements.element.recommended{/lang}</dt>
+ <dd>{lang}wcf.global.systemRequirements.active{/lang}</dd>
+ </dl>
+
+ <dl class="col-xs-12 col-md-6">
+ <dt>{lang}wcf.global.systemRequirements.element.yours{/lang}</dt>
+ <dd>
+ <span class="badge {if !$system.imagick.result}red{elseif !$system.imagick.supportsAnimatedGIFs}yellow{else}green{/if}">{$system.imagick.value}</span>
+ {if !$system.imagick.result}<small>{lang}wcf.global.systemRequirements.imagick.description{/lang}</small>{/if}
+ </dd>
+ </dl>
+ </div>
+ </section>
</section>
<div class="formSubmit">
- <input type="submit" value="{lang}wcf.global.button.next{/lang}"{if !$system.phpVersion.result || !$system.sql.result || !$system.memoryLimit.result || !$system.gdLib.result} disabled{/if} accesskey="s">
+ <input type="submit" value="{lang}wcf.global.button.next{/lang}"{if !$system.phpVersion.result || !$system.sql.result || !$system.memoryLimit.result || (!$system.gdLib.result && !$system.imagick.result)} disabled{/if} accesskey="s">
<input type="hidden" name="step" value="{@$nextStep}">
<input type="hidden" name="tmpFilePrefix" value="{@$tmpFilePrefix}">
<input type="hidden" name="languageCode" value="{@$languageCode}">