diff --git a/src/admin/footer.php b/src/admin/footer.php index 5e12dcd7..5c7f7275 100644 --- a/src/admin/footer.php +++ b/src/admin/footer.php @@ -20,22 +20,7 @@ if (!isset($rModal) || !$rModal) { } echo ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n\t\t" . '' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' ' . "\r\n" . ' '; - -if (isset($_SETUP)): - echo ' + \ No newline at end of file diff --git a/src/includes/admin.php b/src/includes/admin.php index 045b95dc..6588d86d 100644 --- a/src/includes/admin.php +++ b/src/includes/admin.php @@ -3224,7 +3224,7 @@ function getFPMStatus($rServerID) { return systemapirequest($rServerID, array('action' => 'fpm_status')); } -function fCf52f24c866C872() { +function grantPrivilegesToAllServers() { global $rServers; foreach ($rServers as $rServerID => $rServerArray) { diff --git a/src/includes/admin_api.php b/src/includes/admin_api.php index 013694d9..92d5d46d 100644 --- a/src/includes/admin_api.php +++ b/src/includes/admin_api.php @@ -4708,13 +4708,11 @@ class API { } if ($rArray['mag_legacy_redirect']) { - if (file_exists(MAIN_HOME . 'www/c/')) { - } else { + if (!file_exists(MAIN_HOME . 'www/c/')) { self::$db->query('INSERT INTO `signals`(`server_id`, `time`, `custom_data`) VALUES(?, ?, ?);', SERVER_ID, time(), json_encode(array('action' => 'enable_ministra'))); } } else { - if (!file_exists(MAIN_HOME . 'www/c/')) { - } else { + if (file_exists(MAIN_HOME . 'www/c/')) { self::$db->query('INSERT INTO `signals`(`server_id`, `time`, `custom_data`) VALUES(?, ?, ?);', SERVER_ID, time(), json_encode(array('action' => 'disable_ministra'))); } } diff --git a/src/includes/cli/migrate.php b/src/includes/cli/migrate.php index 320386db..fd3aab54 100644 --- a/src/includes/cli/migrate.php +++ b/src/includes/cli/migrate.php @@ -2,1013 +2,1053 @@ require str_replace('\\', '/', dirname($argv[0])) . '/../../includes/admin.php'; set_time_limit(0); ini_set('memory_limit', -1); -if ($argc) { - $rTableList = array('reg_users', 'users', 'enigma2_devices', 'mag_devices', 'user_output', 'streaming_servers', 'series', 'series_episodes', 'streams', 'streams_sys', 'streams_options', 'stream_categories', 'bouquets', 'member_groups', 'packages', 'rtmp_ips', 'epg', 'blocked_ips', 'blocked_user_agents', 'isp_addon', 'tickets', 'tickets_replies', 'transcoding_profiles', 'watch_folders', 'categories', 'epg_sources', 'members', 'blocked_isps', 'groups', 'servers', 'stream_servers'); - $rMigrateOptions = (json_decode(file_get_contents(TMP_PATH . '.migration.options'), true) ?: array()); - if (count($rMigrateOptions) != 0) { - } else { - $rMigrateOptions = $rTableList; - } - file_put_contents(TMP_PATH . '.migration.pid', getmypid()); - file_put_contents(TMP_PATH . '.migration.status', 1); - $odb = new Database($_INFO['username'], $_INFO['password'], $_INFO['database'], $_INFO['hostname'], $_INFO['port'], true); - if (!$odb->connected) { - echo 'Failed to connect to migration database, or database is empty!' . "\n"; - file_put_contents(TMP_PATH . '.migration.status', 3); - exit(); - } - echo 'Connected to migration database.' . "\n"; - $odb->query("SHOW TABLES LIKE 'access_codes';"); +if (!$argc) { + exit(0); +} + +$rTableList = array('reg_users', 'users', 'enigma2_devices', 'mag_devices', 'user_output', 'streaming_servers', 'series', 'series_episodes', 'streams', 'streams_sys', 'streams_options', 'stream_categories', 'bouquets', 'member_groups', 'packages', 'rtmp_ips', 'epg', 'blocked_ips', 'blocked_user_agents', 'isp_addon', 'tickets', 'tickets_replies', 'transcoding_profiles', 'watch_folders', 'categories', 'epg_sources', 'members', 'blocked_isps', 'groups', 'servers', 'stream_servers'); +$rMigrateOptions = (json_decode(file_get_contents(TMP_PATH . '.migration.options'), true) ?: array()); +if (count($rMigrateOptions) == 0) { + $rMigrateOptions = $rTableList; +} +file_put_contents(TMP_PATH . '.migration.pid', getmypid()); +file_put_contents(TMP_PATH . '.migration.status', 1); +$odb = new Database($_INFO['username'], $_INFO['password'], "xc_vm_migrate", $_INFO['hostname'], $_INFO['port'], true); +if (!$odb->connected) { + echo 'Failed to connect to migration database, or database is empty!' . "\n"; + file_put_contents(TMP_PATH . '.migration.status', 3); + exit(); +} +echo 'Connected to migration database.' . "\n"; +$odb->query("SHOW TABLES LIKE 'access_codes';"); +if ($odb->num_rows() > 0) { + echo "\n" . "Can't migrate from XC_VM to XC_VM! Use the restore functions instead." . "\n\n"; + exit(); +} + +$rItemCount = 0; +foreach ($rTableList as $rTable) { + $odb->query('SHOW TABLES LIKE ?;', $rTable); if (0 >= $odb->num_rows()) { - $rItemCount = 0; - foreach ($rTableList as $rTable) { - $odb->query('SHOW TABLES LIKE ?;', $rTable); - if (0 >= $odb->num_rows()) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `' . $rTable . '`;'); - $rItemCount += (intval($odb->get_row()['count']) ?: 0); + } else { + $odb->query('SELECT COUNT(*) AS `count` FROM `' . $rTable . '`;'); + $rItemCount += (intval($odb->get_row()['count']) ?: 0); + } +} +if ($rItemCount == 0) { + echo "\n" . "Couldn't find anything to migrate in the `xc_vm_migrate` database. Please ensure you restore your backup to that database specifically." . "\n\n"; + exit(); +} +echo "\n" . 'Migrating database to XC_VM...' . "\n\n"; +echo 'Remapping bouquets.' . "\n"; +$rSeriesMap = $rBouquetMap = array(); +$odb->query('SELECT `id`, `type` FROM `streams`;'); +$rStreams = $odb->get_rows(); +foreach ($rStreams as $rStream) { + $rBouquetMap[intval($rStream['id'])] = intval($rStream['type']); +} +$odb->query('SELECT `id` FROM `series`;'); +$rSeries = $odb->get_rows(); +foreach ($rSeries as $rSeriesArr) { + $rSeriesMap[] = intval($rSeriesArr['id']); +} +if (in_array('reg_users', $rMigrateOptions)) { + $odb->query('SELECT COUNT(*) AS `count` FROM `reg_users`;'); + $rCount = $odb->get_row()['count']; + if ($rCount > 0) { + $db->query('TRUNCATE `users`;'); + echo 'Adding ' . number_format($rCount, 0) . ' users.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `reg_users` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + foreach ($rResults as $rResult) { + $rResult = verifyPostTable('users', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `users`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; } } - if ($rItemCount != 0) { - echo "\n" . 'Migrating database to XC_VM...' . "\n\n"; - echo 'Remapping bouquets.' . "\n"; - $rSeriesMap = $rBouquetMap = array(); - $odb->query('SELECT `id`, `type` FROM `streams`;'); - $rStreams = $odb->get_rows(); - foreach ($rStreams as $rStream) { - $rBouquetMap[intval($rStream['id'])] = intval($rStream['type']); + } +} +if (in_array('members', $rMigrateOptions)) { + $odb->query('SELECT COUNT(*) AS `count` FROM `members`;'); + $rCount = $odb->get_row()['count']; + if ($rCount > 0) { + $db->query('TRUNCATE `users`;'); + echo 'Adding ' . number_format($rCount, 0) . ' users.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `members` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + foreach ($rResults as $rResult) { + $rResult = verifyPostTable('users', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `users`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; } - $odb->query('SELECT `id` FROM `series`;'); - $rSeries = $odb->get_rows(); - foreach ($rSeries as $rSeriesArr) { - $rSeriesMap[] = intval($rSeriesArr['id']); + } + } +} +if (!in_array('blocked_ips', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `blocked_ips`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `blocked_ips`;'); + echo 'Blocking ' . number_format(count($rResults), 0) . ' IP addresses.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('blocked_ips', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `blocked_ips`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; } - if (!in_array('reg_users', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `reg_users`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `users`;'); - echo 'Adding ' . number_format($rCount, 0) . ' users.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { + } + } +} +if (!in_array('blocked_user_agents', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `blocked_user_agents`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `blocked_uas`;'); + echo 'Blocking ' . number_format(count($rResults), 0) . ' user-agents.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('blocked_uas', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `blocked_uas`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('isp_addon', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `isp_addon`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `blocked_isps`;'); + echo 'Blocking ' . number_format(count($rResults), 0) . " ISP's." . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('blocked_isps', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `blocked_isps`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('blocked_isps', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `blocked_isps`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `blocked_isps`;'); + echo 'Blocking ' . number_format(count($rResults), 0) . " ISP's." . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('blocked_isps', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `blocked_isps`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('bouquets', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `bouquets`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `bouquets`;'); + echo 'Creating ' . number_format(count($rResults), 0) . ' bouquets.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rChannels = json_decode($rResult['bouquet_channels'], true); + $rResult['bouquet_radios'] = array(); + $rResult['bouquet_movies'] = $rResult['bouquet_radios']; + $rResult['bouquet_channels'] = $rResult['bouquet_movies']; + foreach ($rChannels as $rStreamID) { + if (!isset($rBouquetMap[intval($rStreamID)])) { } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `reg_users` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rResult = verifyPostTable('users', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `users`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; + $rType = array(1 => 'channels', 2 => 'movies', 3 => 'channels', 4 => 'radio')[$rBouquetMap[intval($rStreamID)]]; + if (!$rType) { + } else { + $rResult['bouquet_' . $rType][] = intval($rStreamID); } } } - } - if (!in_array('members', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `members`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `users`;'); - echo 'Adding ' . number_format($rCount, 0) . ' users.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { + $rSeries = json_decode($rResult['bouquet_series'], true); + $rResult['bouquet_series'] = array(); + foreach ($rSeries as $rSeriesID) { + if (!in_array(intval($rSeriesID), $rSeriesMap)) { } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `members` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rResult = verifyPostTable('users', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `users`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } + $rResult['bouquet_series'][] = intval($rSeriesID); } } - } - if (!in_array('blocked_ips', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `blocked_ips`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `blocked_ips`;'); - echo 'Blocking ' . number_format(count($rResults), 0) . ' IP addresses.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('blocked_ips', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `blocked_ips`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('blocked_user_agents', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `blocked_user_agents`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `blocked_uas`;'); - echo 'Blocking ' . number_format(count($rResults), 0) . ' user-agents.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('blocked_uas', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `blocked_uas`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('isp_addon', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `isp_addon`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `blocked_isps`;'); - echo 'Blocking ' . number_format(count($rResults), 0) . " ISP's." . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('blocked_isps', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `blocked_isps`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('blocked_isps', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `blocked_isps`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `blocked_isps`;'); - echo 'Blocking ' . number_format(count($rResults), 0) . " ISP's." . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('blocked_isps', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `blocked_isps`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('bouquets', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `bouquets`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `bouquets`;'); - echo 'Creating ' . number_format(count($rResults), 0) . ' bouquets.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rChannels = json_decode($rResult['bouquet_channels'], true); - $rResult['bouquet_radios'] = array(); - $rResult['bouquet_movies'] = $rResult['bouquet_radios']; - $rResult['bouquet_channels'] = $rResult['bouquet_movies']; - foreach ($rChannels as $rStreamID) { - if (!isset($rBouquetMap[intval($rStreamID)])) { - } else { - $rType = array(1 => 'channels', 2 => 'movies', 3 => 'channels', 4 => 'radio')[$rBouquetMap[intval($rStreamID)]]; - if (!$rType) { - } else { - $rResult['bouquet_' . $rType][] = intval($rStreamID); - } - } - } - $rSeries = json_decode($rResult['bouquet_series'], true); - $rResult['bouquet_series'] = array(); - foreach ($rSeries as $rSeriesID) { - if (!in_array(intval($rSeriesID), $rSeriesMap)) { - } else { - $rResult['bouquet_series'][] = intval($rSeriesID); - } - } - foreach (array('channels', 'movies', 'radios', 'series') as $rType) { - if ($rResult['bouquet_' . $rType]) { - } else { - $rResult['bouquet_' . $rType] = '[]'; - } - } - $rResult = verifyPostTable('bouquets', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `bouquets`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('enigma2_devices', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `enigma2_devices`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `enigma2_devices`;'); - echo 'Authorising ' . number_format($rCount, 0) . ' enigma devices.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { + foreach (array('channels', 'movies', 'radios', 'series') as $rType) { + if ($rResult['bouquet_' . $rType]) { } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `enigma2_devices` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rResult['lock_device'] = 1; - $rResult = verifyPostTable('enigma2_devices', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `enigma2_devices`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } + $rResult['bouquet_' . $rType] = '[]'; } } + $rResult = verifyPostTable('bouquets', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `bouquets`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; } - if (!in_array('mag_devices', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `mag_devices`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `mag_devices`;'); - echo 'Authorising ' . number_format($rCount, 0) . ' MAG devices.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { + } + } +} +if (!in_array('enigma2_devices', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `enigma2_devices`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `enigma2_devices`;'); + echo 'Authorising ' . number_format($rCount, 0) . ' enigma devices.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `enigma2_devices` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + foreach ($rResults as $rResult) { + $rResult['lock_device'] = 1; + $rResult = verifyPostTable('enigma2_devices', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `enigma2_devices`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('mag_devices', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `mag_devices`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `mag_devices`;'); + echo 'Authorising ' . number_format($rCount, 0) . ' MAG devices.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `mag_devices` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + foreach ($rResults as $rResult) { + $rResult['mac'] = base64_decode($rResult['mac']); + $rResult['lock_device'] = 1; + if (0 >= $rResult['user_id']) { } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `mag_devices` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rResult['mac'] = base64_decode($rResult['mac']); - $rResult['lock_device'] = 1; - if (0 >= $rResult['user_id']) { - } else { - $rResult = verifyPostTable('mag_devices', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `mag_devices`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } + $rResult = verifyPostTable('mag_devices', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `mag_devices`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); } } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; } - if (!in_array('epg', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `epg`;'); + } + } +} +if (!in_array('epg', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `epg`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `epg`;'); + echo 'Processing ' . number_format(count($rResults), 0) . ' EPG URLs.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('epg', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `epg`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('epg_sources', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `epg_sources`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `epg`;'); + echo 'Processing ' . number_format(count($rResults), 0) . ' EPG URLs.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('epg', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `epg`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('member_groups', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `member_groups` WHERE `can_delete` = 1;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('DELETE FROM `users_groups` WHERE `can_delete` = 1;'); + echo 'Creating ' . number_format(count($rResults), 0) . ' user groups.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult['can_view_vod'] = $rResult['reset_stb_data']; + $rResult['allow_restrictions'] = 1; + $rResult['allow_change_username'] = 1; + $rResult['allow_change_password'] = 1; + $rResult['minimum_username_length'] = 8; + $rResult['minimum_password_length'] = 8; + $rResult = verifyPostTable('users_groups', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `users_groups`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('groups', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `groups` WHERE `can_delete` = 1;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('DELETE FROM `users_groups` WHERE `can_delete` = 1;'); + echo 'Creating ' . number_format(count($rResults), 0) . ' user groups.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult['can_view_vod'] = $rResult['reset_stb_data']; + $rResult['allow_restrictions'] = 1; + $rResult['allow_change_username'] = 1; + $rResult['allow_change_password'] = 1; + $rResult['minimum_username_length'] = 8; + $rResult['minimum_password_length'] = 8; + $rResult = verifyPostTable('users_groups', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `users_groups`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('groups', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `groups` WHERE `can_delete` = 1;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('DELETE FROM `users_groups` WHERE `can_delete` = 1;'); + echo 'Creating ' . number_format(count($rResults), 0) . ' user groups.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult['can_view_vod'] = $rResult['reset_stb_data']; + $rResult['allow_restrictions'] = 1; + $rResult['allow_change_username'] = 1; + $rResult['allow_change_password'] = 1; + $rResult['minimum_username_length'] = 8; + $rResult['minimum_password_length'] = 8; + $rResult = verifyPostTable('users_groups', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `users_groups`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('packages', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `packages`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `users_packages`;'); + echo 'Creating ' . number_format(count($rResults), 0) . ' user packages.' . "\n"; + foreach ($rResults as $rResult) { + try { + if ($rResult['can_gen_mag']) { + $rResult['is_mag'] = 1; + } else { + $rResult['is_mag'] = 0; + } + if ($rResult['can_gen_e2']) { + $rResult['is_e2'] = 1; + } else { + $rResult['is_e2'] = 0; + } + if ($rResult['only_mag'] || $rResult['only_e2']) { + $rResult['is_line'] = 0; + } else { + $rResult['is_line'] = 1; + } + $rResult['lock_device'] = 1; + $rResult['check_compatible'] = 1; + if (count(json_decode($rResult['output_formats'], true)) != 0) { + } else { + $rResult['output_formats'] = '[1,2,3]'; + } + $rResult = verifyPostTable('users_packages', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `users_packages`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('rtmp_ips', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `rtmp_ips`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `rtmp_ips`;'); + echo 'Authorising ' . number_format(count($rResults), 0) . ' RTMP IPs.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('rtmp_ips', $rResult); + $rResult['push'] = 1; + $rResult['pull'] = 1; + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `rtmp_ips`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('series', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `series`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `streams_series`;'); + echo 'Adding ' . number_format($rCount, 0) . ' TV series.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `series` LIMIT ' . $rStep . ', 1000;'); $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `epg`;'); - echo 'Processing ' . number_format(count($rResults), 0) . ' EPG URLs.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('epg', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `epg`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('epg_sources', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `epg_sources`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `epg`;'); - echo 'Processing ' . number_format(count($rResults), 0) . ' EPG URLs.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('epg', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `epg`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('member_groups', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `member_groups` WHERE `can_delete` = 1;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('DELETE FROM `users_groups` WHERE `can_delete` = 1;'); - echo 'Creating ' . number_format(count($rResults), 0) . ' user groups.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult['can_view_vod'] = $rResult['reset_stb_data']; - $rResult['allow_restrictions'] = 1; - $rResult['allow_change_username'] = 1; - $rResult['allow_change_password'] = 1; - $rResult['minimum_username_length'] = 8; - $rResult['minimum_password_length'] = 8; - $rResult = verifyPostTable('users_groups', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `users_groups`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('groups', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `groups` WHERE `can_delete` = 1;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('DELETE FROM `users_groups` WHERE `can_delete` = 1;'); - echo 'Creating ' . number_format(count($rResults), 0) . ' user groups.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult['can_view_vod'] = $rResult['reset_stb_data']; - $rResult['allow_restrictions'] = 1; - $rResult['allow_change_username'] = 1; - $rResult['allow_change_password'] = 1; - $rResult['minimum_username_length'] = 8; - $rResult['minimum_password_length'] = 8; - $rResult = verifyPostTable('users_groups', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `users_groups`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('groups', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `groups` WHERE `can_delete` = 1;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('DELETE FROM `users_groups` WHERE `can_delete` = 1;'); - echo 'Creating ' . number_format(count($rResults), 0) . ' user groups.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult['can_view_vod'] = $rResult['reset_stb_data']; - $rResult['allow_restrictions'] = 1; - $rResult['allow_change_username'] = 1; - $rResult['allow_change_password'] = 1; - $rResult['minimum_username_length'] = 8; - $rResult['minimum_password_length'] = 8; - $rResult = verifyPostTable('users_groups', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `users_groups`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('packages', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `packages`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `users_packages`;'); - echo 'Creating ' . number_format(count($rResults), 0) . ' user packages.' . "\n"; - foreach ($rResults as $rResult) { - try { - if ($rResult['can_gen_mag']) { - $rResult['is_mag'] = 1; - } else { - $rResult['is_mag'] = 0; - } - if ($rResult['can_gen_e2']) { - $rResult['is_e2'] = 1; - } else { - $rResult['is_e2'] = 0; - } - if ($rResult['only_mag'] || $rResult['only_e2']) { - $rResult['is_line'] = 0; - } else { - $rResult['is_line'] = 1; - } - $rResult['lock_device'] = 1; - $rResult['check_compatible'] = 1; - if (count(json_decode($rResult['output_formats'], true)) != 0) { - } else { - $rResult['output_formats'] = '[1,2,3]'; - } - $rResult = verifyPostTable('users_packages', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `users_packages`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('rtmp_ips', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `rtmp_ips`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `rtmp_ips`;'); - echo 'Authorising ' . number_format(count($rResults), 0) . ' RTMP IPs.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('rtmp_ips', $rResult); - $rResult['push'] = 1; - $rResult['pull'] = 1; - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `rtmp_ips`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('series', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `series`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `streams_series`;'); - echo 'Adding ' . number_format($rCount, 0) . ' TV series.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { + foreach ($rResults as $rResult) { + $rResult['category_id'] = '[' . intval($rResult['category_id']) . ']'; + $rResult['release_date'] = $rResult['releaseDate']; + if ($rResult['tmdb_id'] != 0) { } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `series` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rResult['category_id'] = '[' . intval($rResult['category_id']) . ']'; - $rResult['release_date'] = $rResult['releaseDate']; - if ($rResult['tmdb_id'] != 0) { - } else { - $rResult['tmdb_id'] = null; - } - $rResult = verifyPostTable('streams_series', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT IGNORE INTO `streams_series`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } + $rResult['tmdb_id'] = null; } + $rResult = verifyPostTable('streams_series', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT IGNORE INTO `streams_series`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; } - if (!in_array('series_episodes', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `series_episodes`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `streams_episodes`;'); - echo 'Adding ' . number_format($rCount, 0) . ' episodes.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { - } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `series_episodes` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rResult['episode_num'] = $rResult['sort']; - $rResult = verifyPostTable('streams_episodes', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `streams_episodes`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('streaming_servers', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `streaming_servers`;'); + } + } +} +if (!in_array('series_episodes', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `series_episodes`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `streams_episodes`;'); + echo 'Adding ' . number_format($rCount, 0) . ' episodes.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `series_episodes` LIMIT ' . $rStep . ', 1000;'); $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $rMain = false; - $db->query('TRUNCATE `servers`;'); - echo 'Moving ' . number_format(count($rResults), 0) . ' servers.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult['server_type'] = 0; - $rResult['parent_id'] = null; - $rResult['http_broadcast_port'] = 80; - $rResult['https_broadcast_port'] = 443; - $rResult['rtmp_port'] = 8880; - $rResult['total_services'] = 4; - $rResult['http_ports_add'] = null; - $rResult['https_ports_add'] = null; - if ($rResult['can_delete'] == 0 && !$rMain) { - $rResult['is_main'] = 1; - $rMain = true; - } else { - $rResult['is_main'] = 0; - } - $rResult = verifyPostTable('servers', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `servers`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } + foreach ($rResults as $rResult) { + $rResult['episode_num'] = $rResult['sort']; + $rResult = verifyPostTable('streams_episodes', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `streams_episodes`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; } - if (!in_array('servers', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `servers` ORDER BY `id` ASC;'); + } + } +} +if (!in_array('streaming_servers', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `streaming_servers`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $rMain = false; + $db->query('TRUNCATE `servers`;'); + echo 'Moving ' . number_format(count($rResults), 0) . ' servers.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult['server_type'] = 0; + $rResult['parent_id'] = null; + $rResult['http_broadcast_port'] = 80; + $rResult['https_broadcast_port'] = 443; + $rResult['rtmp_port'] = 8880; + $rResult['total_services'] = 4; + $rResult['http_ports_add'] = null; + $rResult['https_ports_add'] = null; + if ($rResult['can_delete'] == 0 && !$rMain) { + $rResult['is_main'] = 1; + $rMain = true; + } else { + $rResult['is_main'] = 0; + } + $rResult = verifyPostTable('servers', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `servers`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('servers', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `servers` ORDER BY `id` ASC;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $rMain = false; + $db->query('TRUNCATE `servers`;'); + echo 'Moving ' . number_format(count($rResults), 0) . ' servers.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult['server_type'] = 0; + $rResult['parent_id'] = null; + $rResult['http_broadcast_port'] = 80; + $rResult['https_broadcast_port'] = 443; + $rResult['rtmp_port'] = 8880; + $rResult['total_services'] = 4; + $rResult['http_ports_add'] = null; + $rResult['https_ports_add'] = null; + if (!$rMain) { + $rResult['is_main'] = 1; + $rMain = true; + } else { + $rResult['is_main'] = 0; + } + $rResult = verifyPostTable('servers', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `servers`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +$rCreatedOptions = array(); +if (!in_array('streams', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `streams`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `streams`;'); + echo 'Adding ' . number_format($rCount, 0) . ' streams.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `streams` LIMIT ' . $rStep . ', 1000;'); $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $rMain = false; - $db->query('TRUNCATE `servers`;'); - echo 'Moving ' . number_format(count($rResults), 0) . ' servers.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult['server_type'] = 0; - $rResult['parent_id'] = null; - $rResult['http_broadcast_port'] = 80; - $rResult['https_broadcast_port'] = 443; - $rResult['rtmp_port'] = 8880; - $rResult['total_services'] = 4; - $rResult['http_ports_add'] = null; - $rResult['https_ports_add'] = null; - if (!$rMain) { - $rResult['is_main'] = 1; - $rMain = true; - } else { - $rResult['is_main'] = 0; - } - $rResult = verifyPostTable('servers', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `servers`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - $rCreatedOptions = array(); - if (!in_array('streams', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `streams`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `streams`;'); - echo 'Adding ' . number_format($rCount, 0) . ' streams.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { - } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `streams` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - try { - $rExternal = json_decode($rResult['external_push'], true); - if ($rExternal) { - } else { - $rResult['external_push'] = '{}'; - } - $rResult['category_id'] = '[' . intval($rResult['category_id']) . ']'; - $rResult['movie_properties'] = $rResult['movie_propeties']; - if (!$rResult['target_container']) { - } else { - list($rResult['target_container']) = json_decode($rResult['target_container'], true); - } - $rCreatedOptions[$rResult['id']] = $rResult['cchannel_rsources']; - $rResult = verifyPostTable('streams', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `streams`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('streams_options', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `streams_options`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `streams_options`;'); - echo 'Attributing ' . number_format($rCount, 0) . ' options to streams.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { - } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `streams_options` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rResult = verifyPostTable('streams_options', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `streams_options`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('streams_sys', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `streams_sys`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `streams_servers`;'); - echo 'Allocating ' . number_format($rCount, 0) . ' streams to servers.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { - } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `streams_sys` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - foreach ($rResults as $rResult) { - if ($rResult['parent_id'] && $rResult['parent_id'] != 0) { - } else { - $rResult['parent_id'] = null; - } - if (!isset($rCreatedOptions[$rResult['stream_id']])) { - } else { - $rResult['cchannel_rsources'] = $rCreatedOptions[$rResult['stream_id']]; - } - $rResult['custom_ffmpeg'] = ''; - $rResult['stream_status'] = 0; - $rResult['stream_started'] = null; - $rResult['monitor_pid'] = null; - if ($rResult['pid'] > 0) { - } else { - $rResult['pid'] = null; - } - $rResult = verifyPostTable('streams_servers', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `streams_servers`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('stream_servers', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `stream_servers`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `streams_servers`;'); - echo 'Allocating ' . number_format($rCount, 0) . ' streams to servers.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { - } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `stream_servers` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - foreach ($rResults as $rResult) { - if ($rResult['parent_id'] && $rResult['parent_id'] != 0) { - } else { - $rResult['parent_id'] = null; - } - $rResult['stream_status'] = 0; - $rResult['stream_started'] = null; - $rResult['monitor_pid'] = null; - if ($rResult['pid'] > 0) { - } else { - $rResult['pid'] = null; - } - $rResult = verifyPostTable('streams_servers', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `streams_servers`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('stream_categories', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `stream_categories`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `streams_categories`;'); - echo 'Creating ' . number_format(count($rResults), 0) . ' categories.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('streams_categories', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `streams_categories`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('categories', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `categories`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `streams_categories`;'); - echo 'Creating ' . number_format(count($rResults), 0) . ' categories.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('streams_categories', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `streams_categories`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('tickets', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `tickets`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `tickets`;'); - echo 'Posting ' . number_format(count($rResults), 0) . ' tickets.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('tickets', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `tickets`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('tickets_replies', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `tickets_replies`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `tickets_replies`;'); - echo 'Posting ' . number_format(count($rResults), 0) . ' replies.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('tickets_replies', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `tickets_replies`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('transcoding_profiles', $rMigrateOptions)) { - } else { - $odb->query('SELECT * FROM `transcoding_profiles`;'); - $rResults = $odb->get_rows(); - if (0 >= count($rResults)) { - } else { - $db->query('TRUNCATE `profiles`;'); - echo 'Generating ' . number_format(count($rResults), 0) . ' transcoding profiles.' . "\n"; - foreach ($rResults as $rResult) { - try { - $rResult = verifyPostTable('profiles', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `profiles`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - $rOutput = array(); - if (!in_array('user_output', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `user_output`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - echo 'Attributing ' . number_format($rCount, 0) . ' output options to lines.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { - } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `user_output` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rOutput[$rResult['user_id']][] = $rResult['access_output_id']; - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } - } - } - if (!in_array('users', $rMigrateOptions)) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `users`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `lines`;'); - echo 'Adding ' . number_format($rCount, 0) . ' lines.' . "\n"; - $rSteps = range(0, $rCount, 1000); - if ($rSteps) { - } else { - $rSteps = array(0); - } - foreach ($rSteps as $rStep) { - try { - $odb->query('SELECT * FROM `users` LIMIT ' . $rStep . ', 1000;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - if (!empty($rResult['isp_desc'])) { - } else { - $rResult['isp_desc'] = null; - } - if (!isset($rOutput[$rResult['id']])) { - } else { - $rResult['allowed_outputs'] = '[' . implode(',', $rOutput[$rResult['id']]) . ']'; - } - if (!isset($rResult['output'])) { - } else { - $rResult['allowed_outputs'] = $rResult['output']; - } - $rResult['bouquet'] = '[' . implode(',', array_map('intval', json_decode($rResult['bouquet'], true))) . ']'; - $rResult = verifyPostTable('lines', $rResult); - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `lines`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - } + foreach ($rResults as $rResult) { try { + $rExternal = json_decode($rResult['external_push'], true); + if ($rExternal) { + } else { + $rResult['external_push'] = '{}'; + } + $rResult['category_id'] = '[' . intval($rResult['category_id']) . ']'; + $rResult['movie_properties'] = $rResult['movie_propeties']; + if (!$rResult['target_container']) { + } else { + list($rResult['target_container']) = json_decode($rResult['target_container'], true); + } + $rCreatedOptions[$rResult['id']] = $rResult['cchannel_rsources']; + $rResult = verifyPostTable('streams', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `streams`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); } catch (Exception $e) { echo 'Error: ' . $e . "\n"; } } - } - if (!in_array('watch_folders', $rMigrateOptions)) { - } else { - $odb->query("SHOW TABLES LIKE 'watch_folders';"); - if (0 >= $odb->num_rows()) { - } else { - $odb->query('SELECT COUNT(*) AS `count` FROM `watch_folders`;'); - $rCount = $odb->get_row()['count']; - if (0 >= $rCount) { - } else { - $db->query('TRUNCATE `watch_folders`;'); - echo 'Adding ' . number_format($rCount, 0) . ' folders to watch.' . "\n"; - $odb->query('SELECT * FROM `watch_folders`;'); - $rResults = $odb->get_rows(); - foreach ($rResults as $rResult) { - $rResult = verifyPostTable('watch_folders', $rResult); - $rResult['bouquets'] = '[' . implode(',', array_map('intval', json_decode($rResult['bouquets'], true))) . ']'; - $rResult['fb_bouquets'] = '[' . implode(',', array_map('intval', json_decode($rResult['fb_bouquets'], true))) . ']'; - $rPrepare = prepareArray($rResult); - $rQuery = 'INSERT INTO `watch_folders`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; - $db->query($rQuery, ...$rPrepare['data']); - } - } - } - } - try { - $odb->query('SELECT * FROM `settings` LIMIT 1;'); - $rSettings = $odb->get_row(); - $db->query('UPDATE `settings` SET `server_name` = ?, `default_timezone` = ?;', $rSettings['server_name'], $rSettings['default_timezone']); } catch (Exception $e) { echo 'Error: ' . $e . "\n"; } - try { - $odb->query("SHOW TABLES LIKE 'admin_settings';"); - if (0 >= $odb->num_rows()) { - } else { - $rAdminSettings = array(); - $odb->query('SELECT * FROM `admin_settings`;'); - foreach ($odb->get_rows() as $rRow) { - $rAdminSettings[$rRow['type']] = $rRow['value']; - } - if (!(0 < strlen($rAdminSettings['recaptcha_v2_secret_key']) && 0 < strlen($rAdminSettings['recaptcha_v2_site_key']))) { - } else { - $db->query('UPDATE `settings` SET `recaptcha_v2_secret_key` = ?, `recaptcha_v2_site_key` = ?;', $rAdminSettings['recaptcha_v2_secret_key'], $rAdminSettings['recaptcha_v2_site_key']); - } - } - } catch (Exception $e) { - echo 'Error: ' . $e . "\n"; - } - echo "\n" . 'Migration has been completed!' . "\n\n" . 'Your settings have been reset to the XC_VM default, please take some time to review the settings page and make the desired changes.' . "\n"; - file_put_contents(TMP_PATH . '.migration.status', 2); - if (!is_object($odb)) { - } else { - $odb->close_mysql(); - } - } else { - echo "\n" . "Couldn't find anything to migrate in the `xc_vm_migrate` database. Please ensure you restore your backup to that database specifically." . "\n\n"; - exit(); } - } else { - echo "\n" . "Can't migrate from XC_VM to XC_VM! Use the restore functions instead." . "\n\n"; - exit(); } -} else { - exit(0); +} +if (!in_array('streams_options', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `streams_options`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `streams_options`;'); + echo 'Attributing ' . number_format($rCount, 0) . ' options to streams.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `streams_options` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + foreach ($rResults as $rResult) { + $rResult = verifyPostTable('streams_options', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `streams_options`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('streams_sys', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `streams_sys`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `streams_servers`;'); + echo 'Allocating ' . number_format($rCount, 0) . ' streams to servers.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `streams_sys` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + foreach ($rResults as $rResult) { + if ($rResult['parent_id'] && $rResult['parent_id'] != 0) { + } else { + $rResult['parent_id'] = null; + } + if (!isset($rCreatedOptions[$rResult['stream_id']])) { + } else { + $rResult['cchannel_rsources'] = $rCreatedOptions[$rResult['stream_id']]; + } + $rResult['custom_ffmpeg'] = ''; + $rResult['stream_status'] = 0; + $rResult['stream_started'] = null; + $rResult['monitor_pid'] = null; + if ($rResult['pid'] > 0) { + } else { + $rResult['pid'] = null; + } + $rResult = verifyPostTable('streams_servers', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `streams_servers`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } + } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('stream_servers', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `stream_servers`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `streams_servers`;'); + echo 'Allocating ' . number_format($rCount, 0) . ' streams to servers.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `stream_servers` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + foreach ($rResults as $rResult) { + if ($rResult['parent_id'] && $rResult['parent_id'] != 0) { + } else { + $rResult['parent_id'] = null; + } + $rResult['stream_status'] = 0; + $rResult['stream_started'] = null; + $rResult['monitor_pid'] = null; + if ($rResult['pid'] > 0) { + } else { + $rResult['pid'] = null; + } + $rResult = verifyPostTable('streams_servers', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `streams_servers`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } + } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('stream_categories', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `stream_categories`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `streams_categories`;'); + echo 'Creating ' . number_format(count($rResults), 0) . ' categories.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('streams_categories', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `streams_categories`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('categories', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `categories`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `streams_categories`;'); + echo 'Creating ' . number_format(count($rResults), 0) . ' categories.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('streams_categories', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `streams_categories`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('tickets', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `tickets`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `tickets`;'); + echo 'Posting ' . number_format(count($rResults), 0) . ' tickets.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('tickets', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `tickets`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('tickets_replies', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `tickets_replies`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `tickets_replies`;'); + echo 'Posting ' . number_format(count($rResults), 0) . ' replies.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('tickets_replies', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `tickets_replies`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('transcoding_profiles', $rMigrateOptions)) { +} else { + $odb->query('SELECT * FROM `transcoding_profiles`;'); + $rResults = $odb->get_rows(); + if (0 >= count($rResults)) { + } else { + $db->query('TRUNCATE `profiles`;'); + echo 'Generating ' . number_format(count($rResults), 0) . ' transcoding profiles.' . "\n"; + foreach ($rResults as $rResult) { + try { + $rResult = verifyPostTable('profiles', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `profiles`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +$rOutput = array(); +if (!in_array('user_output', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `user_output`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + echo 'Attributing ' . number_format($rCount, 0) . ' output options to lines.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `user_output` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + foreach ($rResults as $rResult) { + $rOutput[$rResult['user_id']][] = $rResult['access_output_id']; + } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + } +} +if (!in_array('users', $rMigrateOptions)) { +} else { + $odb->query('SELECT COUNT(*) AS `count` FROM `users`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `lines`;'); + echo 'Adding ' . number_format($rCount, 0) . ' lines.' . "\n"; + $rSteps = []; + $stepSize = 1000; + for ($i = 0; $i < $rCount; $i += $stepSize) { + $rSteps[] = $i; + } + if (empty($rSteps)) { + $rSteps = [0]; + } + + foreach ($rSteps as $rStep) { + try { + $odb->query('SELECT * FROM `users` LIMIT ' . $rStep . ', 1000;'); + $rResults = $odb->get_rows(); + foreach ($rResults as $rResult) { + if (!empty($rResult['isp_desc'])) { + } else { + $rResult['isp_desc'] = null; + } + if (!isset($rOutput[$rResult['id']])) { + } else { + $rResult['allowed_outputs'] = '[' . implode(',', $rOutput[$rResult['id']]) . ']'; + } + if (!isset($rResult['output'])) { + } else { + $rResult['allowed_outputs'] = $rResult['output']; + } + $rResult['bouquet'] = '[' . implode(',', array_map('intval', json_decode($rResult['bouquet'], true))) . ']'; + $rResult = verifyPostTable('lines', $rResult); + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `lines`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } + try { + } catch (Exception $e) { + echo 'Error: ' . $e . "\n"; + } + } +} +if (!in_array('watch_folders', $rMigrateOptions)) { +} else { + $odb->query("SHOW TABLES LIKE 'watch_folders';"); + if (0 >= $odb->num_rows()) { + } else { + $odb->query('SELECT COUNT(*) AS `count` FROM `watch_folders`;'); + $rCount = $odb->get_row()['count']; + if (0 >= $rCount) { + } else { + $db->query('TRUNCATE `watch_folders`;'); + echo 'Adding ' . number_format($rCount, 0) . ' folders to watch.' . "\n"; + $odb->query('SELECT * FROM `watch_folders`;'); + $rResults = $odb->get_rows(); + foreach ($rResults as $rResult) { + $rResult = verifyPostTable('watch_folders', $rResult); + $rResult['bouquets'] = '[' . implode(',', array_map('intval', json_decode($rResult['bouquets'], true))) . ']'; + $rResult['fb_bouquets'] = '[' . implode(',', array_map('intval', json_decode($rResult['fb_bouquets'], true))) . ']'; + $rPrepare = prepareArray($rResult); + $rQuery = 'INSERT INTO `watch_folders`(' . $rPrepare['columns'] . ') VALUES(' . $rPrepare['placeholder'] . ');'; + $db->query($rQuery, ...$rPrepare['data']); + } + } + } +} +try { + $odb->query('SELECT * FROM `settings` LIMIT 1;'); + $rSettings = $odb->get_row(); + $db->query('UPDATE `settings` SET `server_name` = ?, `default_timezone` = ?;', $rSettings['server_name'], $rSettings['default_timezone']); +} catch (Exception $e) { + echo 'Error: ' . $e . "\n"; +} +try { + $odb->query("SHOW TABLES LIKE 'admin_settings';"); + if (0 >= $odb->num_rows()) { + } else { + $rAdminSettings = array(); + $odb->query('SELECT * FROM `admin_settings`;'); + foreach ($odb->get_rows() as $rRow) { + $rAdminSettings[$rRow['type']] = $rRow['value']; + } + if (!(0 < strlen($rAdminSettings['recaptcha_v2_secret_key']) && 0 < strlen($rAdminSettings['recaptcha_v2_site_key']))) { + } else { + $db->query('UPDATE `settings` SET `recaptcha_v2_secret_key` = ?, `recaptcha_v2_site_key` = ?;', $rAdminSettings['recaptcha_v2_secret_key'], $rAdminSettings['recaptcha_v2_site_key']); + } + } +} catch (Exception $e) { + echo 'Error: ' . $e . "\n"; +} +echo "\n" . 'Migration has been completed!' . "\n\n" . 'Your settings have been reset to the XC_VM default, please take some time to review the settings page and make the desired changes.' . "\n"; +file_put_contents(TMP_PATH . '.migration.status', 2); +if (is_object($odb)) { + $odb->close_mysql(); } diff --git a/src/tools b/src/tools index 3c29469d..9eee1c5d 100644 --- a/src/tools +++ b/src/tools @@ -105,7 +105,7 @@ if (posix_getpwuid(posix_geteuid())['name'] == 'root') { break; case 'mysql': - Fcf52f24C866c872(); + grantPrivilegesToAllServers(); echo 'Load balancers have been granted access to MySQL in the system.' . "\n\n"; break; @@ -116,7 +116,7 @@ if (posix_getpwuid(posix_geteuid())['name'] == 'root') { $db->query('CREATE DATABASE IF NOT EXISTS `xc_vm`;'); shell_exec('sudo mysql xc_vm < "' . MAIN_HOME . 'bin/install/database.sql"'); shell_exec('sudo ' . PHP_BIN . ' ' . INCLUDES_PATH . 'startup.php'); - Fcf52f24C866C872(); + grantPrivilegesToAllServers(); $db = new Database($_INFO['username'], $_INFO['password'], $_INFO['database'], $_INFO['hostname'], $_INFO['port']); CoreUtilities::$db = &$db; CoreUtilities::init(); @@ -167,18 +167,26 @@ if (posix_getpwuid(posix_geteuid())['name'] == 'root') { $db->query('DROP DATABASE IF EXISTS `xc_vm_migrate`;'); $db->query('CREATE DATABASE IF NOT EXISTS `xc_vm_migrate`;'); echo 'Migration database has been cleared.' . "\n"; - $de57b163e9d85b49 = (count($argv) == 3 ? $argv[2] : null); - if ($de57b163e9d85b49 && file_exists($de57b163e9d85b49) && pathinfo($de57b163e9d85b49['extension'] == 'sql')) { - echo 'Restoring: ' . $de57b163e9d85b49 . "\n"; - shell_exec('sudo mysql xc_vm_migrate < ' . escapeshellarg($de57b163e9d85b49)); - echo 'If no errors were shown above, restore was completed.' . "\n\n"; + $database = (count($argv) == 3 ? $argv[2] : null); + + if ($database && file_exists($database)) { + $pathInfo = pathinfo($database); + $extension = strtolower($pathInfo['extension'] ?? ''); + + if ($extension === 'sql') { + echo 'Restoring: ' . $database . "\n"; + shell_exec('sudo mysql xc_vm_migrate < ' . escapeshellarg($database)); + echo 'If no errors were shown above, restore was completed.' . "\n\n"; + } else { + echo 'Error: File must have .sql extension' . "\n"; + } } else { echo 'You can restore a database to it using:' . "\n"; echo 'sudo mysql xc_vm_migrate < backup.sql' . "\n\n"; } - fCf52F24C866c872(); + grantPrivilegesToAllServers(); break;