ILIAS  trunk Revision v12.0_alpha-1221-g4e438232683
ILIAS\FileDelivery\Setup\DeliveryMethodObjective Class Reference
+ Inheritance diagram for ILIAS\FileDelivery\Setup\DeliveryMethodObjective:
+ Collaboration diagram for ILIAS\FileDelivery\Setup\DeliveryMethodObjective:

Public Member Functions

 getArtifactName ()
 
 getPreconditions (Environment $environment)
 Objectives might depend on other objectives. More...
 
 build ()
 
 isApplicable (Environment $environment)
 Get to know whether the objective is applicable. More...
 
- Public Member Functions inherited from ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective
 getArtifactName ()
 
 build ()
 
 buildIn (Environment $env)
 
 getPreconditions (Environment $environment)
 Objectives might depend on other objectives. More...
 
 getHash ()
 Get a hash for this objective. More...
 
 getLabel ()
 Get a label that describes this objective. More...
 
 isNotable ()
 Get to know if this is an interesting objective for a human. More...
 
 achieve (Environment $environment)
 Objectives can be achieved. More...
 
 isApplicable (Environment $environment)
 Get to know whether the objective is applicable. More...
 
 getHash ()
 Get a hash for this objective. More...
 
 getLabel ()
 Get a label that describes this objective. More...
 
 isNotable ()
 Get to know if this is an interesting objective for a human. More...
 
 getPreconditions (Environment $environment)
 Objectives might depend on other objectives. More...
 
 achieve (Environment $environment)
 Objectives can be achieved. More...
 
 isApplicable (Environment $environment)
 Get to know whether the objective is applicable. More...
 

Data Fields

const SETTINGS = 'delivery_method'
 
const SETTINGS_EXTERNAL_DATA_DIR = 'ext_data_dir'
 
const XSENDFILE = 'xsendfile'
 
const XACCEL = 'xaccel'
 
const PHP = 'php'
 

Private Member Functions

 isModXSendFileLoaded ()
 

Private Attributes

string $ext_data_dir = null
 
IOWrapper $io = null
 

Additional Inherited Members

- Static Public Member Functions inherited from ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective
static PATH ()
 
- Protected Member Functions inherited from ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective
 getPath ()
 
 makeDirectoryFor (string $path)
 
- Static Protected Member Functions inherited from ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective
static saveName (string $name)
 

Detailed Description

Member Function Documentation

◆ build()

ILIAS\FileDelivery\Setup\DeliveryMethodObjective::build ( )

Reimplemented from ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective.

Definition at line 78 of file DeliveryMethodObjective.php.

78 : Artifact
79 {
80 $delivery_method = self::PHP;
81
82 if (file_exists(self::PATH())) {
83 $settings = (@include self::PATH()) ?? [];
84 $delivery_method = $settings[self::SETTINGS] ?? self::PHP;
85 }
86
87 if ($this->isModXSendFileLoaded()) {
88 $delivery_method = self::XSENDFILE;
89 }
90
91 return new ArrayArtifact(array_filter([
92 self::SETTINGS => $delivery_method,
93 self::SETTINGS_EXTERNAL_DATA_DIR => $this->ext_data_dir
94 ]));
95 }

References ILIAS\FileDelivery\Setup\DeliveryMethodObjective\isModXSendFileLoaded(), ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective\PATH(), ILIAS\FileDelivery\Setup\DeliveryMethodObjective\PHP, ILIAS\FileDelivery\Setup\DeliveryMethodObjective\SETTINGS, and ILIAS\FileDelivery\Setup\DeliveryMethodObjective\XSENDFILE.

+ Here is the call graph for this function:

◆ getArtifactName()

ILIAS\FileDelivery\Setup\DeliveryMethodObjective::getArtifactName ( )

Reimplemented from ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective.

Definition at line 43 of file DeliveryMethodObjective.php.

43 : string
44 {
45 return 'delivery_method';
46 }

◆ getPreconditions()

ILIAS\FileDelivery\Setup\DeliveryMethodObjective::getPreconditions ( Environment  $environment)

Objectives might depend on other objectives.

Exceptions
UnachievableExceptionif the objective is not achievable
Returns
Objective[]

Reimplemented from ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective.

Definition at line 48 of file DeliveryMethodObjective.php.

48 : array
49 {
50 return array_merge(
51 parent::getPreconditions($environment),
52 [
54 ]
55 );
56 }

◆ isApplicable()

ILIAS\FileDelivery\Setup\DeliveryMethodObjective::isApplicable ( Environment  $environment)

Get to know whether the objective is applicable.

Don't change the environment or cause changes on services in the environment. Just check if this objective needs to be achieved, either currently or at all. In case of doubt whether the objective is applicable or not return true.

Reimplemented from ILIAS\FileDelivery\Setup\BuildStaticConfigStoredObjective.

Definition at line 123 of file DeliveryMethodObjective.php.

123 : bool
124 {
125 return true;
126 }

◆ isModXSendFileLoaded()

ILIAS\FileDelivery\Setup\DeliveryMethodObjective::isModXSendFileLoaded ( )
private

Definition at line 97 of file DeliveryMethodObjective.php.

97 : bool
98 {
99 if (\function_exists('apache_get_modules') && \in_array('mod_xsendfile', apache_get_modules(), true)) {
100 return true;
101 }
102
103 try {
104 $command_exists = shell_exec('which apache2ctl');
105 if (empty($command_exists)) {
106 return false;
107 }
108
109 $loaded_modules = array_map(
110 static fn(string $module): string => explode(' ', trim($module))[0] ?? '',
111 explode("\n", shell_exec('apache2ctl -M 2>/dev/null') ?? '')
112 );
113 } catch (\Throwable $e) {
114 $this->io?->error($e->getMessage());
115 $this->io?->error($e->getTraceAsString());
116 $loaded_modules = [];
117 }
118
119 return \in_array('xsendfile_module', $loaded_modules, true);
120 }

References Vendor\Package\$e.

Referenced by ILIAS\FileDelivery\Setup\DeliveryMethodObjective\build().

+ Here is the caller graph for this function:

Field Documentation

◆ $ext_data_dir

string ILIAS\FileDelivery\Setup\DeliveryMethodObjective::$ext_data_dir = null
private

Definition at line 40 of file DeliveryMethodObjective.php.

◆ $io

IOWrapper ILIAS\FileDelivery\Setup\DeliveryMethodObjective::$io = null
private

Definition at line 41 of file DeliveryMethodObjective.php.

◆ PHP

const ILIAS\FileDelivery\Setup\DeliveryMethodObjective::PHP = 'php'

◆ SETTINGS

const ILIAS\FileDelivery\Setup\DeliveryMethodObjective::SETTINGS = 'delivery_method'

◆ SETTINGS_EXTERNAL_DATA_DIR

const ILIAS\FileDelivery\Setup\DeliveryMethodObjective::SETTINGS_EXTERNAL_DATA_DIR = 'ext_data_dir'

Definition at line 35 of file DeliveryMethodObjective.php.

Referenced by ILIAS\FileDelivery\Init\init().

◆ XACCEL

const ILIAS\FileDelivery\Setup\DeliveryMethodObjective::XACCEL = 'xaccel'

Definition at line 37 of file DeliveryMethodObjective.php.

Referenced by ILIAS\FileDelivery\Init\init().

◆ XSENDFILE

const ILIAS\FileDelivery\Setup\DeliveryMethodObjective::XSENDFILE = 'xsendfile'

The documentation for this class was generated from the following file: