diff --git a/phpstan.dist.neon b/phpstan.dist.neon index e3169fc6..3c30d089 100644 --- a/phpstan.dist.neon +++ b/phpstan.dist.neon @@ -20,6 +20,9 @@ parameters: # symbol statically from `paths` + `scanDirectories` below. bootstrapFiles: - tools/phpstan/phpstan-bootstrap.php + # Listed directly (not just require'd from the bootstrap) so PHPStan + # tracks it for result-cache invalidation when constants change. + - tools/phpstan/constants.stub.php # Indexed for symbol resolution (classes/interfaces/functions defined here # are findable) but NOT reported on directly. These cover every source dir diff --git a/src/cli/Commands/WatchdogCommand.php b/src/cli/Commands/WatchdogCommand.php index 43484697..aea641d6 100644 --- a/src/cli/Commands/WatchdogCommand.php +++ b/src/cli/Commands/WatchdogCommand.php @@ -73,7 +73,7 @@ class WatchdogCommand implements CommandInterface { // ── Nginx stats ────────────────────────────────────── $rNginx = explode("\n", file_get_contents('http://127.0.0.1:' . $rServers[SERVER_ID]['http_broadcast_port'] . '/nginx_status')); list($rAccepted, $rHandled, $rRequests) = explode(' ', trim($rNginx[2])); - $rRequestsPerSecond = ($rLastRequests ? intval(floatval($rRequests - $rLastRequests) / (time() - $rLastRequestsTime)) : 0); + $rRequestsPerSecond = ($rLastRequests ? intval((floatval($rRequests) - floatval($rLastRequests)) / (time() - $rLastRequestsTime)) : 0); $rLastRequests = $rRequests; $rLastRequestsTime = time(); @@ -88,10 +88,10 @@ class WatchdogCommand implements CommandInterface { $rInfoB = explode(' ', preg_replace('!cpu +!', '', $rStat[0])); $rPrevStat = $rStat; $rDiff = array(); - $rDiff['user'] = $rInfoB[0] - $rInfoA[0]; - $rDiff['nice'] = $rInfoB[1] - $rInfoA[1]; - $rDiff['sys'] = $rInfoB[2] - $rInfoA[2]; - $rDiff['idle'] = $rInfoB[3] - $rInfoA[3]; + $rDiff['user'] = intval($rInfoB[0]) - intval($rInfoA[0]); + $rDiff['nice'] = intval($rInfoB[1]) - intval($rInfoA[1]); + $rDiff['sys'] = intval($rInfoB[2]) - intval($rInfoA[2]); + $rDiff['idle'] = intval($rInfoB[3]) - intval($rInfoA[3]); $rTotal = array_sum($rDiff); $rCPU = array(); foreach ($rDiff as $x => $y) { diff --git a/src/core/Storage/DropboxClient.php b/src/core/Storage/DropboxClient.php index c983b20b..a4a4400a 100644 --- a/src/core/Storage/DropboxClient.php +++ b/src/core/Storage/DropboxClient.php @@ -839,9 +839,11 @@ class DropboxClient { * @throws DropboxException When metadata cannot be parsed and $throw_on_error is true. */ private static function getMetaFromHeaders(&$header_array, $throw_on_error = false) { - $obj = json_decode(substr(@array_shift(array_filter($header_array, function ($s) { + $rApiHeaders = array_filter($header_array, function ($s) { return stripos($s, 'dropbox-api-result:') === 0; - })), 20)); + }); + $rApiHeader = (string) array_shift($rApiHeaders); + $obj = json_decode(substr($rApiHeader, 20)); if ($throw_on_error && (empty($obj) || !is_object($obj))) { throw new DropboxException('Could not retrieve meta data from header data: ' . print_r($header_array, true)); diff --git a/src/core/Util/NetworkUtils.php b/src/core/Util/NetworkUtils.php index 2fe86952..a6b7f972 100644 --- a/src/core/Util/NetworkUtils.php +++ b/src/core/Util/NetworkUtils.php @@ -185,7 +185,7 @@ class NetworkUtils { * @param array $rUser User row. * @param int $rDownloadPID PID of the download to remove. * @param int $rFloodLimit Configured flood limit (0 = no tracking). - * @return null + * @return void */ public static function stopDownload($rType, $rUser, $rDownloadPID, $rFloodLimit) { if ($rFloodLimit != 0) { diff --git a/src/core/Util/StreamUtils.php b/src/core/Util/StreamUtils.php index 1223aec1..2abccff1 100644 --- a/src/core/Util/StreamUtils.php +++ b/src/core/Util/StreamUtils.php @@ -206,6 +206,7 @@ class StreamUtils { return $rCurrentSegment[1]; } } + return null; } /** diff --git a/src/domain/Device/MagService.php b/src/domain/Device/MagService.php index 9110d3ad..4d46f8a4 100644 --- a/src/domain/Device/MagService.php +++ b/src/domain/Device/MagService.php @@ -552,6 +552,6 @@ class MagService { */ public static function resetSTB($rID) { $db = self::db(); - $db->query("UPDATE `mag_devices` SET `ip` = '', `ver` = '', `image_version` = '', `stb_type` = '', `sn` = '', `device_id` = '', `device_id2` = '', `hw_version` = '', `token` = '' WHERE `mag_id` = ?;", $rID); + return $db->query("UPDATE `mag_devices` SET `ip` = '', `ver` = '', `image_version` = '', `stb_type` = '', `sn` = '', `device_id` = '', `device_id2` = '', `hw_version` = '', `token` = '' WHERE `mag_id` = ?;", $rID); } } diff --git a/src/domain/Server/ServerRepository.php b/src/domain/Server/ServerRepository.php index 623ef068..2e3ef098 100644 --- a/src/domain/Server/ServerRepository.php +++ b/src/domain/Server/ServerRepository.php @@ -535,6 +535,7 @@ class ServerRepository { } return $rServerURL; } + return ''; } /** diff --git a/src/domain/Stream/StreamRepository.php b/src/domain/Stream/StreamRepository.php index 6ff8fcc5..98042844 100644 --- a/src/domain/Stream/StreamRepository.php +++ b/src/domain/Stream/StreamRepository.php @@ -61,6 +61,7 @@ class StreamRepository { if ($db->num_rows() == 1) { return $db->get_row(); } + return false; } /** @@ -409,6 +410,7 @@ class StreamRepository { } else { return $db->get_row(); } + return false; } /** diff --git a/src/domain/User/GroupService.php b/src/domain/User/GroupService.php index 646abe4e..ecb285f7 100644 --- a/src/domain/User/GroupService.php +++ b/src/domain/User/GroupService.php @@ -163,6 +163,7 @@ class GroupService { } else { return $db->get_row(); } + return false; } /** diff --git a/src/infrastructure/bootstrap/player_utility_functions.php b/src/infrastructure/bootstrap/player_utility_functions.php index 13ef3fcc..5777fb11 100644 --- a/src/infrastructure/bootstrap/player_utility_functions.php +++ b/src/infrastructure/bootstrap/player_utility_functions.php @@ -43,6 +43,7 @@ function getStream($rID) { return $rRow; } + return false; } /** diff --git a/src/modules/plex/PlexController.php b/src/modules/plex/PlexController.php index 169dba6c..c64deea6 100644 --- a/src/modules/plex/PlexController.php +++ b/src/modules/plex/PlexController.php @@ -131,7 +131,7 @@ class PlexController { $rUsername = RequestManager::getAll()['username'] ?? ''; $rPassword = RequestManager::getAll()['password'] ?? ''; - $rToken = PlexAuth::getPlexToken($rIP, $rPort, $rUsername, $rPassword, true); + $rToken = PlexAuth::getPlexToken($rIP, $rPort, $rUsername, $rPassword); if (!$rToken) { echo json_encode(['result' => false]); exit(); diff --git a/tools/phpstan/constants.stub.php b/tools/phpstan/constants.stub.php index b44dc2f1..6b10f300 100644 --- a/tools/phpstan/constants.stub.php +++ b/tools/phpstan/constants.stub.php @@ -11,132 +11,132 @@ * @package XC_VM */ -if (!defined('ARCHIVE_PATH')) define('ARCHIVE_PATH', (string) getenv('XCVM_STUB')); -if (!defined('BIN_PATH')) define('BIN_PATH', (string) getenv('XCVM_STUB')); -if (!defined('BUFFER_SIZE')) define('BUFFER_SIZE', (int) getenv('XCVM_STUB')); -if (!defined('CACHE_TMP_PATH')) define('CACHE_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('CIDR_TMP_PATH')) define('CIDR_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('CLIENT_BANNED')) define('CLIENT_BANNED', (int) getenv('XCVM_STUB')); -if (!defined('CLIENT_DISABLED')) define('CLIENT_DISABLED', (int) getenv('XCVM_STUB')); -if (!defined('CLIENT_DISALLOWED')) define('CLIENT_DISALLOWED', (int) getenv('XCVM_STUB')); -if (!defined('CLIENT_EXPIRED')) define('CLIENT_EXPIRED', (int) getenv('XCVM_STUB')); -if (!defined('CLIENT_INVALID')) define('CLIENT_INVALID', (int) getenv('XCVM_STUB')); -if (!defined('CLIENT_IS_E2')) define('CLIENT_IS_E2', (int) getenv('XCVM_STUB')); -if (!defined('CLIENT_IS_MAG')) define('CLIENT_IS_MAG', (int) getenv('XCVM_STUB')); -if (!defined('CLIENT_IS_STALKER')) define('CLIENT_IS_STALKER', (int) getenv('XCVM_STUB')); -if (!defined('CLOSE_EMPTY')) define('CLOSE_EMPTY', (int) getenv('XCVM_STUB')); -if (!defined('CONFIG_PATH')) define('CONFIG_PATH', (string) getenv('XCVM_STUB')); -if (!defined('CONS_TMP_PATH')) define('CONS_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('CONTENT_PATH')) define('CONTENT_PATH', (string) getenv('XCVM_STUB')); -if (!defined('CREATED_PATH')) define('CREATED_PATH', (string) getenv('XCVM_STUB')); -if (!defined('CRONS_TMP_PATH')) define('CRONS_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('DB_ACCESS_ENABLED')) define('DB_ACCESS_ENABLED', (bool) getenv('XCVM_STUB')); -if (!defined('DELAY_PATH')) define('DELAY_PATH', (string) getenv('XCVM_STUB')); -if (!defined('DEV_MODE')) define('DEV_MODE', (bool) getenv('XCVM_STUB')); -if (!defined('DIVERGENCE_TMP_PATH')) define('DIVERGENCE_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('E2_IMAGES_PATH')) define('E2_IMAGES_PATH', (string) getenv('XCVM_STUB')); -if (!defined('EPG_PATH')) define('EPG_PATH', (string) getenv('XCVM_STUB')); -if (!defined('FFMPEG')) define('FFMPEG', (string) getenv('XCVM_STUB')); -if (!defined('FFMPEG_BIN_40')) define('FFMPEG_BIN_40', (string) getenv('XCVM_STUB')); -if (!defined('FFMPEG_BIN_71')) define('FFMPEG_BIN_71', (string) getenv('XCVM_STUB')); -if (!defined('FFMPEG_BIN_80')) define('FFMPEG_BIN_80', (string) getenv('XCVM_STUB')); -if (!defined('FFMPEG_FONT')) define('FFMPEG_FONT', (string) getenv('XCVM_STUB')); -if (!defined('FFPROBE')) define('FFPROBE', (string) getenv('XCVM_STUB')); -if (!defined('FFPROBE_BIN_40')) define('FFPROBE_BIN_40', (string) getenv('XCVM_STUB')); -if (!defined('FFPROBE_BIN_71')) define('FFPROBE_BIN_71', (string) getenv('XCVM_STUB')); -if (!defined('FFPROBE_BIN_80')) define('FFPROBE_BIN_80', (string) getenv('XCVM_STUB')); -if (!defined('FLOOD_TMP_PATH')) define('FLOOD_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('GEOISP_BIN')) define('GEOISP_BIN', (string) getenv('XCVM_STUB')); -if (!defined('GEOLITE2C_BIN')) define('GEOLITE2C_BIN', (string) getenv('XCVM_STUB')); -if (!defined('GEOLITE2_BIN')) define('GEOLITE2_BIN', (string) getenv('XCVM_STUB')); -if (!defined('GIT_OWNER')) define('GIT_OWNER', (string) getenv('XCVM_STUB')); -if (!defined('GIT_REPO_BIN')) define('GIT_REPO_BIN', (string) getenv('XCVM_STUB')); -if (!defined('GIT_REPO_MAIN')) define('GIT_REPO_MAIN', (string) getenv('XCVM_STUB')); -if (!defined('GIT_REPO_UPDATE')) define('GIT_REPO_UPDATE', (string) getenv('XCVM_STUB')); -if (!defined('HOST')) define('HOST', (string) getenv('XCVM_STUB')); -if (!defined('IMAGES_PATH')) define('IMAGES_PATH', (string) getenv('XCVM_STUB')); -if (!defined('KEYFRAME_HEADER')) define('KEYFRAME_HEADER', (string) getenv('XCVM_STUB')); -if (!defined('LINES_TMP_PATH')) define('LINES_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('LOGS_TMP_PATH')) define('LOGS_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('MAIN_HOME')) define('MAIN_HOME', (string) getenv('XCVM_STUB')); -if (!defined('MAX_PREBUFFER')) define('MAX_PREBUFFER', (int) getenv('XCVM_STUB')); -if (!defined('MAX_SEG_BYTES')) define('MAX_SEG_BYTES', (int) getenv('XCVM_STUB')); -if (!defined('MINISTRA_TMP_PATH')) define('MINISTRA_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('MIN_SEG_PTS')) define('MIN_SEG_PTS', (int) getenv('XCVM_STUB')); -if (!defined('MONITOR_CALLS')) define('MONITOR_CALLS', (int) getenv('XCVM_STUB')); -if (!defined('OPENSSL_EXTRA')) define('OPENSSL_EXTRA', (string) getenv('XCVM_STUB')); -if (!defined('PACKET_SIZE')) define('PACKET_SIZE', (int) getenv('XCVM_STUB')); -if (!defined('PAGE_NAME')) define('PAGE_NAME', (string) getenv('XCVM_STUB')); -if (!defined('PAT_HEADER')) define('PAT_HEADER', (string) getenv('XCVM_STUB')); -if (!defined('PAT_PERIOD')) define('PAT_PERIOD', (int) getenv('XCVM_STUB')); -if (!defined('PHP_BIN')) define('PHP_BIN', (string) getenv('XCVM_STUB')); -if (!defined('PHP_ERRORS')) define('PHP_ERRORS', (bool) getenv('XCVM_STUB')); -if (!defined('PLAYER_BOOTSTRAP_DONE')) define('PLAYER_BOOTSTRAP_DONE', (bool) getenv('XCVM_STUB')); -if (!defined('PLAYER_TMP_PATH')) define('PLAYER_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('PLAYLIST_PATH')) define('PLAYLIST_PATH', (string) getenv('XCVM_STUB')); -if (!defined('SEGMENT_DURATION')) define('SEGMENT_DURATION', (int) getenv('XCVM_STUB')); -if (!defined('SERIES_TMP_PATH')) define('SERIES_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('SERVER_ID')) define('SERVER_ID', (string) getenv('XCVM_STUB')); -if (!defined('SIGNALS_PATH')) define('SIGNALS_PATH', (string) getenv('XCVM_STUB')); -if (!defined('SIGNALS_TMP_PATH')) define('SIGNALS_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('STATUS_CERTBOT')) define('STATUS_CERTBOT', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_CERTBOT_INVALID')) define('STATUS_CERTBOT_INVALID', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_CERTBOT_RUNNING')) define('STATUS_CERTBOT_RUNNING', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_CODE_LENGTH')) define('STATUS_CODE_LENGTH', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_DISABLED')) define('STATUS_DISABLED', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_EXISTS_CODE')) define('STATUS_EXISTS_CODE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_EXISTS_DIR')) define('STATUS_EXISTS_DIR', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_EXISTS_HMAC')) define('STATUS_EXISTS_HMAC', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_EXISTS_IP')) define('STATUS_EXISTS_IP', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_EXISTS_MAC')) define('STATUS_EXISTS_MAC', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_EXISTS_NAME')) define('STATUS_EXISTS_NAME', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_EXISTS_SOURCE')) define('STATUS_EXISTS_SOURCE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_EXISTS_USERNAME')) define('STATUS_EXISTS_USERNAME', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_FAILURE')) define('STATUS_FAILURE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_FLUSH')) define('STATUS_FLUSH', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INSUFFICIENT_CREDITS')) define('STATUS_INSUFFICIENT_CREDITS', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_CAPTCHA')) define('STATUS_INVALID_CAPTCHA', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_CODE')) define('STATUS_INVALID_CODE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_DATA')) define('STATUS_INVALID_DATA', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_DATE')) define('STATUS_INVALID_DATE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_DIR')) define('STATUS_INVALID_DIR', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_EMAIL')) define('STATUS_INVALID_EMAIL', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_FILE')) define('STATUS_INVALID_FILE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_GROUP')) define('STATUS_INVALID_GROUP', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_INPUT')) define('STATUS_INVALID_INPUT', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_IP')) define('STATUS_INVALID_IP', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_MAC')) define('STATUS_INVALID_MAC', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_NAME')) define('STATUS_INVALID_NAME', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_PACKAGE')) define('STATUS_INVALID_PACKAGE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_PASSWORD')) define('STATUS_INVALID_PASSWORD', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_PLAYLIST')) define('STATUS_INVALID_PLAYLIST', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_SUBRESELLER')) define('STATUS_INVALID_SUBRESELLER', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_TYPE')) define('STATUS_INVALID_TYPE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_USER')) define('STATUS_INVALID_USER', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_INVALID_USERNAME')) define('STATUS_INVALID_USERNAME', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_NOT_ADMIN')) define('STATUS_NOT_ADMIN', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_NOT_RESELLER')) define('STATUS_NOT_RESELLER', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_NO_DESCRIPTION')) define('STATUS_NO_DESCRIPTION', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_NO_KEY')) define('STATUS_NO_KEY', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_NO_SOURCE')) define('STATUS_NO_SOURCE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_NO_SOURCES')) define('STATUS_NO_SOURCES', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_NO_TITLE')) define('STATUS_NO_TITLE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_NO_TRIALS')) define('STATUS_NO_TRIALS', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_RESERVED_CODE')) define('STATUS_RESERVED_CODE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_SPACE_ISSUE')) define('STATUS_SPACE_ISSUE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_SUCCESS')) define('STATUS_SUCCESS', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_SUCCESS_MULTI')) define('STATUS_SUCCESS_MULTI', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_SUCCESS_REPLACE')) define('STATUS_SUCCESS_REPLACE', (int) getenv('XCVM_STUB')); -if (!defined('STATUS_TOO_MANY_RESULTS')) define('STATUS_TOO_MANY_RESULTS', (int) getenv('XCVM_STUB')); -if (!defined('STORAGE_PATH')) define('STORAGE_PATH', (string) getenv('XCVM_STUB')); -if (!defined('STORE_PREBUFFER')) define('STORE_PREBUFFER', (int) getenv('XCVM_STUB')); -if (!defined('STREAMS_PATH')) define('STREAMS_PATH', (string) getenv('XCVM_STUB')); -if (!defined('STREAMS_TMP_PATH')) define('STREAMS_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('TIMEOUT')) define('TIMEOUT', (int) getenv('XCVM_STUB')); -if (!defined('TIMEOUT_READ')) define('TIMEOUT_READ', (int) getenv('XCVM_STUB')); -if (!defined('TMP_PATH')) define('TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('VIDEO_PATH')) define('VIDEO_PATH', (string) getenv('XCVM_STUB')); -if (!defined('VOD_PATH')) define('VOD_PATH', (string) getenv('XCVM_STUB')); -if (!defined('WATCH_TMP_PATH')) define('WATCH_TMP_PATH', (string) getenv('XCVM_STUB')); -if (!defined('XC_VM_VERSION')) define('XC_VM_VERSION', (string) getenv('XCVM_STUB')); -if (!defined('YOUTUBE_BIN')) define('YOUTUBE_BIN', (string) getenv('XCVM_STUB')); +if (!defined('ARCHIVE_PATH')) define('ARCHIVE_PATH', (string) mt_rand()); +if (!defined('BIN_PATH')) define('BIN_PATH', (string) mt_rand()); +if (!defined('BUFFER_SIZE')) define('BUFFER_SIZE', mt_rand()); +if (!defined('CACHE_TMP_PATH')) define('CACHE_TMP_PATH', (string) mt_rand()); +if (!defined('CIDR_TMP_PATH')) define('CIDR_TMP_PATH', (string) mt_rand()); +if (!defined('CLIENT_BANNED')) define('CLIENT_BANNED', mt_rand()); +if (!defined('CLIENT_DISABLED')) define('CLIENT_DISABLED', mt_rand()); +if (!defined('CLIENT_DISALLOWED')) define('CLIENT_DISALLOWED', mt_rand()); +if (!defined('CLIENT_EXPIRED')) define('CLIENT_EXPIRED', mt_rand()); +if (!defined('CLIENT_INVALID')) define('CLIENT_INVALID', mt_rand()); +if (!defined('CLIENT_IS_E2')) define('CLIENT_IS_E2', mt_rand()); +if (!defined('CLIENT_IS_MAG')) define('CLIENT_IS_MAG', mt_rand()); +if (!defined('CLIENT_IS_STALKER')) define('CLIENT_IS_STALKER', mt_rand()); +if (!defined('CLOSE_EMPTY')) define('CLOSE_EMPTY', mt_rand()); +if (!defined('CONFIG_PATH')) define('CONFIG_PATH', (string) mt_rand()); +if (!defined('CONS_TMP_PATH')) define('CONS_TMP_PATH', (string) mt_rand()); +if (!defined('CONTENT_PATH')) define('CONTENT_PATH', (string) mt_rand()); +if (!defined('CREATED_PATH')) define('CREATED_PATH', (string) mt_rand()); +if (!defined('CRONS_TMP_PATH')) define('CRONS_TMP_PATH', (string) mt_rand()); +if (!defined('DB_ACCESS_ENABLED')) define('DB_ACCESS_ENABLED', (bool) mt_rand()); +if (!defined('DELAY_PATH')) define('DELAY_PATH', (string) mt_rand()); +if (!defined('DEV_MODE')) define('DEV_MODE', (bool) mt_rand()); +if (!defined('DIVERGENCE_TMP_PATH')) define('DIVERGENCE_TMP_PATH', (string) mt_rand()); +if (!defined('E2_IMAGES_PATH')) define('E2_IMAGES_PATH', (string) mt_rand()); +if (!defined('EPG_PATH')) define('EPG_PATH', (string) mt_rand()); +if (!defined('FFMPEG')) define('FFMPEG', (string) mt_rand()); +if (!defined('FFMPEG_BIN_40')) define('FFMPEG_BIN_40', (string) mt_rand()); +if (!defined('FFMPEG_BIN_71')) define('FFMPEG_BIN_71', (string) mt_rand()); +if (!defined('FFMPEG_BIN_80')) define('FFMPEG_BIN_80', (string) mt_rand()); +if (!defined('FFMPEG_FONT')) define('FFMPEG_FONT', (string) mt_rand()); +if (!defined('FFPROBE')) define('FFPROBE', (string) mt_rand()); +if (!defined('FFPROBE_BIN_40')) define('FFPROBE_BIN_40', (string) mt_rand()); +if (!defined('FFPROBE_BIN_71')) define('FFPROBE_BIN_71', (string) mt_rand()); +if (!defined('FFPROBE_BIN_80')) define('FFPROBE_BIN_80', (string) mt_rand()); +if (!defined('FLOOD_TMP_PATH')) define('FLOOD_TMP_PATH', (string) mt_rand()); +if (!defined('GEOISP_BIN')) define('GEOISP_BIN', (string) mt_rand()); +if (!defined('GEOLITE2C_BIN')) define('GEOLITE2C_BIN', (string) mt_rand()); +if (!defined('GEOLITE2_BIN')) define('GEOLITE2_BIN', (string) mt_rand()); +if (!defined('GIT_OWNER')) define('GIT_OWNER', (string) mt_rand()); +if (!defined('GIT_REPO_BIN')) define('GIT_REPO_BIN', (string) mt_rand()); +if (!defined('GIT_REPO_MAIN')) define('GIT_REPO_MAIN', (string) mt_rand()); +if (!defined('GIT_REPO_UPDATE')) define('GIT_REPO_UPDATE', (string) mt_rand()); +if (!defined('HOST')) define('HOST', (string) mt_rand()); +if (!defined('IMAGES_PATH')) define('IMAGES_PATH', (string) mt_rand()); +if (!defined('KEYFRAME_HEADER')) define('KEYFRAME_HEADER', (string) mt_rand()); +if (!defined('LINES_TMP_PATH')) define('LINES_TMP_PATH', (string) mt_rand()); +if (!defined('LOGS_TMP_PATH')) define('LOGS_TMP_PATH', (string) mt_rand()); +if (!defined('MAIN_HOME')) define('MAIN_HOME', (string) mt_rand()); +if (!defined('MAX_PREBUFFER')) define('MAX_PREBUFFER', mt_rand()); +if (!defined('MAX_SEG_BYTES')) define('MAX_SEG_BYTES', mt_rand()); +if (!defined('MINISTRA_TMP_PATH')) define('MINISTRA_TMP_PATH', (string) mt_rand()); +if (!defined('MIN_SEG_PTS')) define('MIN_SEG_PTS', mt_rand()); +if (!defined('MONITOR_CALLS')) define('MONITOR_CALLS', mt_rand()); +if (!defined('OPENSSL_EXTRA')) define('OPENSSL_EXTRA', (string) mt_rand()); +if (!defined('PACKET_SIZE')) define('PACKET_SIZE', mt_rand()); +if (!defined('PAGE_NAME')) define('PAGE_NAME', (string) mt_rand()); +if (!defined('PAT_HEADER')) define('PAT_HEADER', (string) mt_rand()); +if (!defined('PAT_PERIOD')) define('PAT_PERIOD', mt_rand()); +if (!defined('PHP_BIN')) define('PHP_BIN', (string) mt_rand()); +if (!defined('PHP_ERRORS')) define('PHP_ERRORS', (bool) mt_rand()); +if (!defined('PLAYER_BOOTSTRAP_DONE')) define('PLAYER_BOOTSTRAP_DONE', (bool) mt_rand()); +if (!defined('PLAYER_TMP_PATH')) define('PLAYER_TMP_PATH', (string) mt_rand()); +if (!defined('PLAYLIST_PATH')) define('PLAYLIST_PATH', (string) mt_rand()); +if (!defined('SEGMENT_DURATION')) define('SEGMENT_DURATION', mt_rand()); +if (!defined('SERIES_TMP_PATH')) define('SERIES_TMP_PATH', (string) mt_rand()); +if (!defined('SERVER_ID')) define('SERVER_ID', (string) mt_rand()); +if (!defined('SIGNALS_PATH')) define('SIGNALS_PATH', (string) mt_rand()); +if (!defined('SIGNALS_TMP_PATH')) define('SIGNALS_TMP_PATH', (string) mt_rand()); +if (!defined('STATUS_CERTBOT')) define('STATUS_CERTBOT', mt_rand()); +if (!defined('STATUS_CERTBOT_INVALID')) define('STATUS_CERTBOT_INVALID', mt_rand()); +if (!defined('STATUS_CERTBOT_RUNNING')) define('STATUS_CERTBOT_RUNNING', mt_rand()); +if (!defined('STATUS_CODE_LENGTH')) define('STATUS_CODE_LENGTH', mt_rand()); +if (!defined('STATUS_DISABLED')) define('STATUS_DISABLED', mt_rand()); +if (!defined('STATUS_EXISTS_CODE')) define('STATUS_EXISTS_CODE', mt_rand()); +if (!defined('STATUS_EXISTS_DIR')) define('STATUS_EXISTS_DIR', mt_rand()); +if (!defined('STATUS_EXISTS_HMAC')) define('STATUS_EXISTS_HMAC', mt_rand()); +if (!defined('STATUS_EXISTS_IP')) define('STATUS_EXISTS_IP', mt_rand()); +if (!defined('STATUS_EXISTS_MAC')) define('STATUS_EXISTS_MAC', mt_rand()); +if (!defined('STATUS_EXISTS_NAME')) define('STATUS_EXISTS_NAME', mt_rand()); +if (!defined('STATUS_EXISTS_SOURCE')) define('STATUS_EXISTS_SOURCE', mt_rand()); +if (!defined('STATUS_EXISTS_USERNAME')) define('STATUS_EXISTS_USERNAME', mt_rand()); +if (!defined('STATUS_FAILURE')) define('STATUS_FAILURE', mt_rand()); +if (!defined('STATUS_FLUSH')) define('STATUS_FLUSH', mt_rand()); +if (!defined('STATUS_INSUFFICIENT_CREDITS')) define('STATUS_INSUFFICIENT_CREDITS', mt_rand()); +if (!defined('STATUS_INVALID_CAPTCHA')) define('STATUS_INVALID_CAPTCHA', mt_rand()); +if (!defined('STATUS_INVALID_CODE')) define('STATUS_INVALID_CODE', mt_rand()); +if (!defined('STATUS_INVALID_DATA')) define('STATUS_INVALID_DATA', mt_rand()); +if (!defined('STATUS_INVALID_DATE')) define('STATUS_INVALID_DATE', mt_rand()); +if (!defined('STATUS_INVALID_DIR')) define('STATUS_INVALID_DIR', mt_rand()); +if (!defined('STATUS_INVALID_EMAIL')) define('STATUS_INVALID_EMAIL', mt_rand()); +if (!defined('STATUS_INVALID_FILE')) define('STATUS_INVALID_FILE', mt_rand()); +if (!defined('STATUS_INVALID_GROUP')) define('STATUS_INVALID_GROUP', mt_rand()); +if (!defined('STATUS_INVALID_INPUT')) define('STATUS_INVALID_INPUT', mt_rand()); +if (!defined('STATUS_INVALID_IP')) define('STATUS_INVALID_IP', mt_rand()); +if (!defined('STATUS_INVALID_MAC')) define('STATUS_INVALID_MAC', mt_rand()); +if (!defined('STATUS_INVALID_NAME')) define('STATUS_INVALID_NAME', mt_rand()); +if (!defined('STATUS_INVALID_PACKAGE')) define('STATUS_INVALID_PACKAGE', mt_rand()); +if (!defined('STATUS_INVALID_PASSWORD')) define('STATUS_INVALID_PASSWORD', mt_rand()); +if (!defined('STATUS_INVALID_PLAYLIST')) define('STATUS_INVALID_PLAYLIST', mt_rand()); +if (!defined('STATUS_INVALID_SUBRESELLER')) define('STATUS_INVALID_SUBRESELLER', mt_rand()); +if (!defined('STATUS_INVALID_TYPE')) define('STATUS_INVALID_TYPE', mt_rand()); +if (!defined('STATUS_INVALID_USER')) define('STATUS_INVALID_USER', mt_rand()); +if (!defined('STATUS_INVALID_USERNAME')) define('STATUS_INVALID_USERNAME', mt_rand()); +if (!defined('STATUS_NOT_ADMIN')) define('STATUS_NOT_ADMIN', mt_rand()); +if (!defined('STATUS_NOT_RESELLER')) define('STATUS_NOT_RESELLER', mt_rand()); +if (!defined('STATUS_NO_DESCRIPTION')) define('STATUS_NO_DESCRIPTION', mt_rand()); +if (!defined('STATUS_NO_KEY')) define('STATUS_NO_KEY', mt_rand()); +if (!defined('STATUS_NO_SOURCE')) define('STATUS_NO_SOURCE', mt_rand()); +if (!defined('STATUS_NO_SOURCES')) define('STATUS_NO_SOURCES', mt_rand()); +if (!defined('STATUS_NO_TITLE')) define('STATUS_NO_TITLE', mt_rand()); +if (!defined('STATUS_NO_TRIALS')) define('STATUS_NO_TRIALS', mt_rand()); +if (!defined('STATUS_RESERVED_CODE')) define('STATUS_RESERVED_CODE', mt_rand()); +if (!defined('STATUS_SPACE_ISSUE')) define('STATUS_SPACE_ISSUE', mt_rand()); +if (!defined('STATUS_SUCCESS')) define('STATUS_SUCCESS', mt_rand()); +if (!defined('STATUS_SUCCESS_MULTI')) define('STATUS_SUCCESS_MULTI', mt_rand()); +if (!defined('STATUS_SUCCESS_REPLACE')) define('STATUS_SUCCESS_REPLACE', mt_rand()); +if (!defined('STATUS_TOO_MANY_RESULTS')) define('STATUS_TOO_MANY_RESULTS', mt_rand()); +if (!defined('STORAGE_PATH')) define('STORAGE_PATH', (string) mt_rand()); +if (!defined('STORE_PREBUFFER')) define('STORE_PREBUFFER', mt_rand()); +if (!defined('STREAMS_PATH')) define('STREAMS_PATH', (string) mt_rand()); +if (!defined('STREAMS_TMP_PATH')) define('STREAMS_TMP_PATH', (string) mt_rand()); +if (!defined('TIMEOUT')) define('TIMEOUT', mt_rand()); +if (!defined('TIMEOUT_READ')) define('TIMEOUT_READ', mt_rand()); +if (!defined('TMP_PATH')) define('TMP_PATH', (string) mt_rand()); +if (!defined('VIDEO_PATH')) define('VIDEO_PATH', (string) mt_rand()); +if (!defined('VOD_PATH')) define('VOD_PATH', (string) mt_rand()); +if (!defined('WATCH_TMP_PATH')) define('WATCH_TMP_PATH', (string) mt_rand()); +if (!defined('XC_VM_VERSION')) define('XC_VM_VERSION', (string) mt_rand()); +if (!defined('YOUTUBE_BIN')) define('YOUTUBE_BIN', (string) mt_rand()); diff --git a/tools/phpstan/gen-constants-stub.php b/tools/phpstan/gen-constants-stub.php index 53c6a542..d3b83c2d 100644 --- a/tools/phpstan/gen-constants-stub.php +++ b/tools/phpstan/gen-constants-stub.php @@ -101,11 +101,15 @@ echo " * @package XC_VM\n"; echo " */\n\n"; foreach ($consts as $name => $type) { + // Use mt_rand()-based expressions so PHPStan infers a GENERAL type + // (int/string/bool) and never constant-folds to a literal (0/'') — a + // literal would create false positives like division-by-zero or + // always-false comparisons at call sites. $expr = match ($type) { - 'string' => "(string) getenv('XCVM_STUB')", - 'int' => "(int) getenv('XCVM_STUB')", - 'bool' => "(bool) getenv('XCVM_STUB')", - default => "json_decode((string) getenv('XCVM_STUB'), true)", + 'string' => "(string) mt_rand()", + 'int' => "mt_rand()", + 'bool' => "(bool) mt_rand()", + default => "json_decode((string) mt_rand(), true)", }; echo "if (!defined('$name')) define('$name', $expr);\n"; } diff --git a/tools/phpstan/phpstan-bootstrap.php b/tools/phpstan/phpstan-bootstrap.php index 2e80aa55..bf8a33cc 100644 --- a/tools/phpstan/phpstan-bootstrap.php +++ b/tools/phpstan/phpstan-bootstrap.php @@ -25,6 +25,5 @@ if (!defined('MAIN_HOME')) { define('MAIN_HOME', $srcRoot . '/'); } -// Declare constants the app defines at runtime (inside methods) so PHPStan can -// resolve them. Auto-generated — regenerate with gen-constants-stub.php. -require __DIR__ . '/constants.stub.php'; +// NOTE: constants.stub.php is loaded via its own bootstrapFiles entry in +// phpstan.dist.neon (so PHPStan tracks it for result-cache invalidation).