. */ namespace SP\Config; use SP\Core\Exceptions\ConfigException; use SP\Util\Checks; /** * Class ConfigUtil * * @package Config */ final class ConfigUtil { /** * Adaptador para convertir una cadena de extensiones a un array * * @param string $filesAllowedExts * * @return array */ public static function filesExtsAdapter(string $filesAllowedExts) { if (empty($filesAllowedExts)) { return []; } return array_map(function ($value) { if (preg_match('/[^a-z0-9_-]+/i', $value)) { return null; } return strtoupper($value); }, explode(',', $filesAllowedExts)); } /** * Adaptador para convertir una cadena de direcciones de email a un array * * @param string $mailAddresses * * @return array */ public static function mailAddressesAdapter(string $mailAddresses): array { if (empty($mailAddresses)) { return []; } return array_filter(explode(',', $mailAddresses), function ($value) { return filter_var($value, FILTER_VALIDATE_EMAIL); }); } /** * Adaptador para convertir una cadena de eventos a un array * * @param array $events * * @return array */ public static function eventsAdapter(array $events) { return array_filter($events, function ($value) { return preg_match('/^[a-z][a-z\.]+$/i', $value); }); } /** * Comprobar el archivo de configuración. * Esta función comprueba que el archivo de configuración exista y los permisos sean correctos. * * @throws ConfigException */ public static function checkConfigDir() { if (!is_dir(CONFIG_PATH)) { clearstatcache(); throw new ConfigException(__u('\'/app/config\' directory does not exist.'), ConfigException::CRITICAL); } if (!is_writable(CONFIG_PATH)) { clearstatcache(); throw new ConfigException(__u('Unable to write into \'/app/config\' directory'), ConfigException::CRITICAL); } if (!Checks::checkIsWindows() && ($configPerms = decoct(fileperms(CONFIG_PATH) & 0777)) !== '750' ) { clearstatcache(); throw new ConfigException( __u('\'/app/config\' directory permissions are wrong'), ConfigException::ERROR, sprintf(__('Current: %s - Needed: 750'), $configPerms)); } } }