mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-09 19:13:26 +00:00
69 lines
3.3 KiB
PHP
69 lines
3.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Phraseanet
|
|
*
|
|
* (c) 2005-2014 Alchemy
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Alchemy\Phrasea\Setup;
|
|
|
|
/**
|
|
* @see https://github.com/sensio/SensioDistributionBundle/blob/master/Resources/skeleton/app/SymfonyRequirements.php
|
|
*
|
|
* Represents a PHP requirement in form of a php.ini configuration.
|
|
*
|
|
* @author Tobias Schultze <http://tobion.de>
|
|
*/
|
|
class PhpIniRequirement extends Requirement
|
|
{
|
|
/**
|
|
* Constructor that initializes the requirement.
|
|
*
|
|
* @param string $cfgName The configuration name used for ini_get()
|
|
* @param Boolean|callback $evaluation Either a Boolean indicating whether the configuration should evaluate to true or false,
|
|
or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
|
|
* @param Boolean $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
|
|
This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
|
|
Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
|
|
* @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a Boolean a default message is derived)
|
|
* @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a Boolean a default help is derived)
|
|
* @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
|
|
* @param Boolean $optional Whether this is only an optional recommendation not a mandatory requirement
|
|
*/
|
|
public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
|
|
{
|
|
$cfgValue = ini_get($cfgName);
|
|
|
|
if (is_callable($evaluation)) {
|
|
if (null === $testMessage || null === $helpHtml) {
|
|
throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
|
|
}
|
|
|
|
$fulfilled = call_user_func($evaluation, $cfgValue);
|
|
} else {
|
|
if (null === $testMessage) {
|
|
$testMessage = sprintf('%s %s be %s in php.ini',
|
|
$cfgName,
|
|
$optional ? 'should' : 'must',
|
|
$evaluation ? 'enabled' : 'disabled'
|
|
);
|
|
}
|
|
|
|
if (null === $helpHtml) {
|
|
$helpHtml = sprintf('Set <strong>%s</strong> to <strong>%s</strong> in php.ini<a href="#phpini">*</a>.',
|
|
$cfgName,
|
|
$evaluation ? 'on' : 'off'
|
|
);
|
|
}
|
|
|
|
$fulfilled = $evaluation == $cfgValue;
|
|
}
|
|
|
|
parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
|
|
}
|
|
}
|