Added types and fixed a typo (#1176)

* Added types and fixed a typo

* Types

* Types

* Types

* Update ExtensionManager.php
This commit is contained in:
Yağızhan authored and GitHub committed 2023-04-28 08:14:20 -07:00
1 parent 736ab30709
commit b3f48293fa
4 files changed
+55 -60

No files matched your search

+24 -24
View File
@@ -31,34 +31,34 @@ class FOSSBilling_ExtensionManager implements InjectionAwareInterface
const TYPE_HOOK = 'hook';
const TYPE_TRANSLATION = 'translation';
private $_url = 'https://extensions.fossbilling.org/api/';
private string $_url = 'https://extensions.fossbilling.org/api/';
/**
* @param \Box_Di $di
*/
public function setDi($di)
public function setDi($di): void
{
$this->di = $di;
}
/**
* @return \Box_Di
* @return \Box_Di|null
*/
public function getDi()
public function getDi(): ?Box_Di
{
return $this->di;
}
/**
* Fetch extension details from the FOSSBilling extension directory
*
*
* @param string $id The extension identifier (e.g. Example)
*
*
* @return array The extension details
* @example https://extensions.fossbilling.org/api/extension/Example An example of the API response
* @throws \Box_Exception
*/
public function getExtension($id)
public function getExtension(string $id): array
{
$manifest = $this->makeRequest('extension/' . $id);
@@ -71,19 +71,19 @@ class FOSSBilling_ExtensionManager implements InjectionAwareInterface
/**
* Fetch the list of releases of an extension from the FOSSBilling extension directory
*
*
* @param string $id The extension identifier (e.g. Example)
*
*
* @return array The list of releases of the extension
* @example https://extensions.fossbilling.org/api/extension/Example An example of the API response (the "releases" array)
* @throws \Box_Exception
*/
public function getExtensionReleases($id)
public function getExtensionReleases(string $id): array
{
$releases = $this->getExtension($id)['releases'];
if (empty($releases) || !is_array($releases)) {
throw new \Box_Exception('Unable to fetch the releaes of the extension from the FOSSBilling extension directory.');
throw new \Box_Exception('Unable to fetch the releases of the extension from the FOSSBilling extension directory.');
}
return $releases;
@@ -91,14 +91,14 @@ class FOSSBilling_ExtensionManager implements InjectionAwareInterface
/**
* Fetch the latest release of an extension from the FOSSBilling extension directory
*
*
* @param string $id The extension identifier (e.g. Example)
*
*
* @return array The latest release of the extension
* @example https://extensions.fossbilling.org/api/extension/Example An example of the API response (the first element in the "releases" array)
* @throws \Box_Exception
*/
public function getLatestExtensionRelease($id)
public function getLatestExtensionRelease(string $id): array
{
$releases = $this->getExtensionReleases($id);
$latest = reset($releases);
@@ -112,13 +112,13 @@ class FOSSBilling_ExtensionManager implements InjectionAwareInterface
/**
* Fetch the list of extensions from the FOSSBilling extension directory
*
*
* @param string $type The extension type (e.g. mod) - optional
*
*
* @return array The list of extensions
* @example https://extensions.fossbilling.org/api/list An example of the API response
*/
public function getExtensionList($type = null)
public function getExtensionList($type = null): array
{
$params = [];
@@ -131,12 +131,12 @@ class FOSSBilling_ExtensionManager implements InjectionAwareInterface
/**
* Check if the latest version of an extension is compatible with the current FOSSBilling version
*
*
* @param string $extension The extension identifier (e.g. Example)
*
*
* @return bool True if the extension is compatible, false otherwise
*/
public function isExtensionCompatible($extension)
public function isExtensionCompatible(string $extension): bool
{
$latest = $this->getLatestExtensionRelease($extension);
@@ -151,14 +151,14 @@ class FOSSBilling_ExtensionManager implements InjectionAwareInterface
/**
* Make a request to the FOSSBilling extension directory
*
*
* @param string $endpoint The API endpoint to call (e.g. list)
* @param array $params The array of parameters to pass to the API endpoint
*
*
* @return array The API response
* @throws \Box_Exception
*/
public function makeRequest($endpoint, array $params = [])
public function makeRequest(string $endpoint, array $params = []): array
{
$url = $this->_url . $endpoint;
@@ -186,4 +186,4 @@ class FOSSBilling_ExtensionManager implements InjectionAwareInterface
return $json['result'];
}
}
}
+12 -12
View File
@@ -52,7 +52,7 @@ class FOSSBilling_Mail
* @param string $bodyHTML The HTML content of the email body.
* @param string|null $transport (optional) The name of the transport to use for sending the email.
* @param string|null $dsn (optional) The DSN to use for sending the email. (See: https://symfony.com/doc/current/mailer.html#using-a-3rd-party-transport)
*
*
* @return void
*/
public function __construct(array|string $from, array|string $to, string $subject, string $bodyHTML, string|null $transport, string|null $dsn = null)
@@ -89,7 +89,7 @@ class FOSSBilling_Mail
*
* @return void
*/
public function addTo(string|array $toAddresses)
public function addTo(string|array $toAddresses): void
{
$this->email->addto($toAddresses);
}
@@ -101,7 +101,7 @@ class FOSSBilling_Mail
*
* @return void
*/
public function addCc(string|array $ccAddresses)
public function addCc(string|array $ccAddresses): void
{
$this->email->addCc($ccAddresses);
}
@@ -113,7 +113,7 @@ class FOSSBilling_Mail
*
* @return void
*/
public function addBcc(string|array $bccAddresses)
public function addBcc(string|array $bccAddresses): void
{
$this->email->addBcc($bccAddresses);
}
@@ -125,22 +125,22 @@ class FOSSBilling_Mail
*
* @return void
*/
public function addReplyto(string|array $replyToAddresses)
public function addReplyto(string|array $replyToAddresses): void
{
$this->email->addReplyTo($replyToAddresses);
}
/**
* Set the priority of the email message. Can be an integer between 1 and 5, with 1 being the highest priority.
* It's recomended to use Symfony's pre-defined constants instead of a specific integer, but either should work. (Example: Email::PRIORITY_HIGH)
* It's recommended to use Symfony's pre-defined constants instead of a specific integer, but either should work. (Example: Email::PRIORITY_HIGH)
*
* @param int $priority The priority of the email message, represented as an integer between 1 and 5.
*
* @throws \Box_Exception if the provided priority is invalid.
*
* @throws \Box_Exception if the provided priority is invalid.
*
* @return void
*/
public function setPriority(int $priority)
public function setPriority(int $priority): void
{
if (is_int($priority) && $priority >= Email::PRIORITY_HIGHEST && $priority <= Email::PRIORITY_LOWEST) {
$this->email->priority($priority);
@@ -154,7 +154,7 @@ class FOSSBilling_Mail
*
* @param array|null $options An optional array of options specific to the chosen transport method.
* @throws \Box_Exception If the transport method is unknown or if required options for the selected transport aren't defined
*
*
* @return void
*/
public function send(array|null $options = null)
@@ -201,10 +201,10 @@ class FOSSBilling_Mail
* @param array $options An associative array of SMTP options including 'smtp_host', 'smtp_port', 'smtp_username', and 'smtp_password'.
*
* @throws \Box_Exception if the SMTP host or port is not configured.
*
*
* @return string A string representing the DSN for the SMTP transport.
*/
private function __smtpDsn(array $options)
private function __smtpDsn(array $options): string
{
if (empty($options['smtp_host']) || empty($options['smtp_port'])) {
throw new \Box_Exception('SMTP host or port is not configured');
+16 -21
View File
@@ -27,9 +27,9 @@ class FOSSBilling_Requirements implements \Box\InjectionAwareInterface
return $this->di;
}
private $_all_ok = true;
private $_app_path = PATH_ROOT;
private $_options = array();
private bool $_all_ok = true;
private string $_app_path = PATH_ROOT;
private array $_options = array();
public function __construct()
{
@@ -57,12 +57,12 @@ class FOSSBilling_Requirements implements \Box\InjectionAwareInterface
);
}
public function getOptions()
public function getOptions(): array
{
return $this->_options;
}
public function getInfo()
public function getInfo(): array
{
$data = array();
$data['ip'] = $_SERVER['SERVER_ADDR'] ?? null;
@@ -87,7 +87,7 @@ class FOSSBilling_Requirements implements \Box\InjectionAwareInterface
PATH_CACHE => substr(sprintf('%o', fileperms(PATH_CACHE)), -4),
PATH_LOG => substr(sprintf('%o', fileperms(PATH_LOG)), -4),
);
$data['extensions'] = array(
'apc' => extension_loaded('apc'),
'pdo_mysql' => extension_loaded('pdo_mysql'),
@@ -95,34 +95,30 @@ class FOSSBilling_Requirements implements \Box\InjectionAwareInterface
'mbstring' => extension_loaded('mbstring'),
'openssl' => extension_loaded('openssl'),
);
//determine php username
if(function_exists('posix_getpwuid') && function_exists('posix_geteuid')) {
$data['posix_getpwuid'] = posix_getpwuid(posix_geteuid());
}
return $data;
}
public function isPhpVersionOk()
public function isPhpVersionOk(): bool
{
$current = $this->_options['php']['version'];
$required = $this->_options['php']['min_version'];
return version_compare($current, $required, '>=');
}
public function isFOSSBillingVersionOk()
public function isFOSSBillingVersionOk(): bool
{
$current = FOSSBilling_Version::VERSION;
if ($current == "0.0.1") {
return false;
}
return true;
return FOSSBilling_Version::VERSION !== '0.0.1';
}
/**
* What extensions must be loaded for FOSSBilling to function correctly
*/
public function extensions()
public function extensions(): array
{
$exts = $this->_options['php']['extensions'];
@@ -142,7 +138,7 @@ class FOSSBilling_Requirements implements \Box\InjectionAwareInterface
/**
* Files that must be writable
*/
public function files()
public function files(): array
{
$files = $this->_options['writable_files'];
$result = array();
@@ -164,7 +160,7 @@ class FOSSBilling_Requirements implements \Box\InjectionAwareInterface
/**
* Folders that must be writable
*/
public function folders()
public function folders(): array
{
$folders = $this->_options['writable_folders'];
@@ -187,7 +183,7 @@ class FOSSBilling_Requirements implements \Box\InjectionAwareInterface
* Check if we can continue with installation
* @return bool
*/
public function canInstall()
public function canInstall(): bool
{
$this->extensions();
$this->folders();
@@ -201,11 +197,10 @@ class FOSSBilling_Requirements implements \Box\InjectionAwareInterface
* @param string $perm
* @return bool
*/
public function checkPerms($path, $perm = '0777')
public function checkPerms(string $path, string $perm = '0777'): bool
{
clearstatcache();
$configmod = substr(sprintf('%o', @fileperms($path)), -4);
return ($configmod == $perm);
}
}
+3 -3
View File
@@ -21,13 +21,13 @@ final class FOSSBilling_Version
* Compare the specified FOSSBilling version string $version
* with the current FOSSBilling_Version::VERSION of FOSSBilling.
*
* @param string $version A version string (e.g. "0.7.1").
* @return integer -1 if the $version is older,
* @param string $version A version string (e.g. "0.7.1").
* @return integer -1 if the $version is older,
* 0 if they are the same,
* and +1 if $version is newer.
*
*/
public static function compareVersion($version)
public static function compareVersion(string $version): int
{
return version_compare(strtolower($version), strtolower(self::VERSION));
}