2025-07-10 20:01:56 +03:00
<? php
2026-03-14 23:57:33 +03:00
// Migration logic — loaded from MigrateCommand
// Requires admin.php already loaded, $db available
2025-07-10 20:01:56 +03:00
set_time_limit ( 0 );
ini_set ( 'memory_limit' , - 1 );
2025-10-15 19:23:51 +03:00
$rXUITableList = array ( 'access_codes' , 'users' , 'blocked_ips' , 'blocked_uas' , 'blocked_isps' , 'bouquets' , 'enigma2_devices' , 'mag_devices' , 'epg' , 'users_groups' , 'users_packages' , 'rtmp_ips' , 'streams_series' , 'streams_episodes' , 'servers' , 'streams' , 'streams_options' , 'streams_servers' , 'streams_categories' , 'tickets' , 'tickets_replies' , 'profiles' , 'lines' , 'watch_folders' );
2025-10-08 20:55:35 +03:00
$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 ());
2025-10-15 18:47:26 +03:00
2025-10-08 20:55:35 +03:00
file_put_contents ( TMP_PATH . '.migration.pid' , getmypid ());
file_put_contents ( TMP_PATH . '.migration.status' , 1 );
2026-02-20 19:56:08 +03:00
$odb = new DatabaseHandler ( $_INFO [ 'username' ], $_INFO [ 'password' ], "xc_vm_migrate" , $_INFO [ 'hostname' ], $_INFO [ 'port' ], true );
2025-10-08 20:55:35 +03:00
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 ) {
2025-10-15 19:23:51 +03:00
$AdminAccesCode = '' ;
2025-10-15 18:47:26 +03:00
if ( count ( $rMigrateOptions ) == 0 ) {
$rMigrateOptions = $rXUITableList ;
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
$rItemCount = 0 ;
foreach ( $rXUITableList as $rTable ) {
$odb -> query ( 'SHOW TABLES LIKE ?;' , $rTable );
if ( $odb -> num_rows () > 0 ) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `' . $rTable . '`;' );
$rItemCount += ( intval ( $odb -> get_row ()[ 'count' ]) ?: 0 );
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
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 " ;
2025-10-15 19:23:51 +03:00
if ( in_array ( 'access_codes' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `access_codes`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$db -> query ( 'TRUNCATE `access_codes`;' );
echo 'Add ' . number_format ( count ( $rResults ), 0 ) . ' access codes.' . " \n " ;
foreach ( $rResults as $rResult ) {
try {
if ( $rResult [ 'type' ] == 0 ) {
$AdminAccesCode = $rResult [ 'code' ];
}
$rResult = verifyPostTable ( 'access_codes' , $rResult );
$rPrepare = prepareArray ( $rResult );
$rQuery = 'INSERT INTO `access_codes`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2026-03-07 21:53:45 +03:00
AuthRepository :: updateCodes ();
2025-10-15 19:23:51 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
}
}
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'users' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `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 `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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'blocked_ips' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `blocked_ips`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 );
2025-10-08 20:55:35 +03:00
$rPrepare = prepareArray ( $rResult );
2025-10-15 18:47:26 +03:00
$rQuery = 'INSERT INTO `blocked_ips`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
2025-10-08 20:55:35 +03:00
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'blocked_uas' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `blocked_uas`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 );
2025-10-08 20:55:35 +03:00
$rPrepare = prepareArray ( $rResult );
2025-10-15 18:47:26 +03:00
$rQuery = 'INSERT INTO `blocked_uas`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
2025-10-08 20:55:35 +03:00
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'blocked_isps' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `blocked_isps`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'bouquets' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `bouquets`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$db -> query ( 'TRUNCATE `bouquets`;' );
echo 'Creating ' . number_format ( count ( $rResults ), 0 ) . ' bouquets.' . " \n " ;
foreach ( $rResults as $rResult ) {
try {
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'enigma2_devices' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `enigma2_devices`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 ;
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
if ( empty ( $rSteps )) {
$rSteps = [ 0 ];
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
foreach ( $rSteps as $rStep ) {
try {
$odb -> query ( 'SELECT * FROM `enigma2_devices` LIMIT ' . $rStep . ', 1000;' );
$rResults = $odb -> get_rows ();
foreach ( $rResults as $rResult ) {
$rResult = verifyPostTable ( 'enigma2_devices' , $rResult );
$rPrepare = prepareArray ( $rResult );
$rQuery = 'INSERT INTO `enigma2_devices`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'mag_devices' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `mag_devices`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 ;
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
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 ) {
2025-10-08 20:55:35 +03:00
$rResult = verifyPostTable ( 'mag_devices' , $rResult );
$rPrepare = prepareArray ( $rResult );
$rQuery = 'INSERT INTO `mag_devices`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'epg' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `epg`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'users_groups' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `users_groups`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$db -> query ( 'TRUNCATE `users_groups`;' );
echo 'Creating ' . number_format ( count ( $rResults ), 0 ) . ' user groups.' . " \n " ;
foreach ( $rResults as $rResult ) {
try {
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'users_packages' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `users_packages`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$db -> query ( 'TRUNCATE `users_packages`;' );
echo 'Creating ' . number_format ( count ( $rResults ), 0 ) . ' user packages.' . " \n " ;
foreach ( $rResults as $rResult ) {
try {
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'rtmp_ips' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `rtmp_ips`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 );
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'streams_series' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `streams_series`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 ;
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
if ( empty ( $rSteps )) {
$rSteps = [ 0 ];
}
foreach ( $rSteps as $rStep ) {
try {
$odb -> query ( 'SELECT * FROM `streams_series` LIMIT ' . $rStep . ', 1000;' );
$rResults = $odb -> get_rows ();
foreach ( $rResults as $rResult ) {
$rResult = verifyPostTable ( 'streams_series' , $rResult );
$rPrepare = prepareArray ( $rResult );
$rQuery = 'INSERT INTO `streams_series`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
}
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'streams_episodes' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `streams_episodes`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 ;
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
if ( empty ( $rSteps )) {
$rSteps = [ 0 ];
}
foreach ( $rSteps as $rStep ) {
try {
$odb -> query ( 'SELECT * FROM `streams_episodes` LIMIT ' . $rStep . ', 1000;' );
$rResults = $odb -> get_rows ();
foreach ( $rResults as $rResult ) {
$rResult = verifyPostTable ( 'streams_episodes' , $rResult );
$rPrepare = prepareArray ( $rResult );
$rQuery = 'INSERT INTO `streams_episodes`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'servers' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `servers` ORDER BY `id` ASC;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$rMain = false ;
$db -> query ( 'TRUNCATE `servers`;' );
echo 'Moving ' . number_format ( count ( $rResults ), 0 ) . ' servers.' . " \n " ;
foreach ( $rResults as $rResult ) {
try {
$rResult = verifyPostTable ( 'servers' , $rResult );
2025-10-08 20:55:35 +03:00
$rPrepare = prepareArray ( $rResult );
2025-10-15 18:47:26 +03:00
$rQuery = 'INSERT INTO `servers`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
2025-10-08 20:55:35 +03:00
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'streams' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `streams`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$db -> query ( 'TRUNCATE `streams`;' );
echo 'Adding ' . number_format ( $rCount , 0 ) . ' streams.' . " \n " ;
$rSteps = [];
$stepSize = 1000 ;
for ( $i = 0 ; $i < $rCount ; $i += $stepSize ) {
$rSteps [] = $i ;
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
if ( empty ( $rSteps )) {
$rSteps = [ 0 ];
}
foreach ( $rSteps as $rStep ) {
try {
$odb -> query ( 'SELECT * FROM `streams` LIMIT ' . $rStep . ', 1000;' );
$rResults = $odb -> get_rows ();
foreach ( $rResults as $rResult ) {
$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 " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'streams_options' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `streams_options`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 );
2025-10-08 20:55:35 +03:00
$rPrepare = prepareArray ( $rResult );
2025-10-15 18:47:26 +03:00
$rQuery = 'INSERT INTO `streams_options`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
2025-10-08 20:55:35 +03:00
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'streams_servers' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `streams_servers`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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_servers` LIMIT ' . $rStep . ', 1000;' );
$rResults = $odb -> get_rows ();
foreach ( $rResults as $rResult ) {
$rResult [ 'stream_status' ] = 0 ;
$rResult [ 'stream_started' ] = null ;
$rResult [ 'monitor_pid' ] = null ;
if ( $rResult [ 'pid' ] < 0 ) {
$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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'streams_categories' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `streams_categories`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'tickets' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `tickets`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$db -> query ( 'TRUNCATE `tickets`;' );
echo 'Posting ' . number_format ( count ( $rResults ), 0 ) . ' tickets.' . " \n " ;
foreach ( $rResults as $rResult ) {
try {
$rResult = verifyPostTable ( 'tickets' , $rResult );
2025-10-08 20:55:35 +03:00
$rPrepare = prepareArray ( $rResult );
2025-10-15 18:47:26 +03:00
$rQuery = 'INSERT INTO `tickets`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
2025-10-08 20:55:35 +03:00
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'tickets_replies' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `tickets_replies`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'profiles' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `profiles`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
2026-02-06 20:44:33 +03:00
if ( in_array ( 'providers' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `providers`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$db -> query ( 'TRUNCATE `providers`;' );
echo 'Generating ' . number_format ( count ( $rResults ), 0 ) . ' providers.' . " \n " ;
foreach ( $rResults as $rResult ) {
try {
$rResult = verifyPostTable ( 'providers' , $rResult );
$rPrepare = prepareArray ( $rResult );
$rQuery = 'INSERT INTO `providers`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
}
}
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'lines' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `lines`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 `lines` LIMIT ' . $rStep . ', 1000;' );
$rResults = $odb -> get_rows ();
2025-07-10 20:01:56 +03:00
foreach ( $rResults as $rResult ) {
2025-10-08 20:55:35 +03:00
$rResult [ 'stream_status' ] = 0 ;
$rResult [ 'stream_started' ] = null ;
$rResult [ 'monitor_pid' ] = null ;
2025-10-15 18:47:26 +03:00
if ( $rResult [ 'pid' ] < 0 ) {
2025-10-08 20:55:35 +03:00
$rResult [ 'pid' ] = null ;
}
2025-10-15 18:47:26 +03:00
$rResult = verifyPostTable ( 'lines' , $rResult );
2025-10-08 20:55:35 +03:00
$rPrepare = prepareArray ( $rResult );
2025-10-15 18:47:26 +03:00
$rQuery = 'INSERT INTO `lines`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
2025-10-08 20:55:35 +03:00
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
}
}
}
}
if ( in_array ( 'watch_folders' , $rMigrateOptions )) {
$odb -> query ( "SHOW TABLES LIKE 'watch_folders';" );
if ( $odb -> num_rows () > 0 ) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `watch_folders`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 );
$rPrepare = prepareArray ( $rResult );
$rQuery = 'INSERT INTO `watch_folders`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
} else {
2025-10-15 18:47:26 +03:00
if ( count ( $rMigrateOptions ) == 0 ) {
$rMigrateOptions = $rTableList ;
}
$rItemCount = 0 ;
foreach ( $rTableList as $rTable ) {
$odb -> query ( 'SHOW TABLES LIKE ?;' , $rTable );
if ( $odb -> num_rows () > 0 ) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `' . $rTable . '`;' );
$rItemCount += ( intval ( $odb -> get_row ()[ 'count' ]) ?: 0 );
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
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 ];
}
2025-10-08 20:55:35 +03:00
2025-10-15 18:47:26 +03:00
foreach ( $rSteps as $rStep ) {
try {
$odb -> query ( 'SELECT * FROM `members` LIMIT ' . $rStep . ', 1000;' );
$rResults = $odb -> get_rows ();
2025-07-10 20:01:56 +03:00
foreach ( $rResults as $rResult ) {
2025-10-15 18:47:26 +03:00
$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 ( in_array ( 'blocked_ips' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `blocked_ips`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 )) {
$odb -> query ( 'SELECT * FROM `blocked_user_agents`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 )) {
$odb -> query ( 'SELECT * FROM `isp_addon`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 )) {
$odb -> query ( 'SELECT * FROM `blocked_isps`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 )) {
$odb -> query ( 'SELECT * FROM `bouquets`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 )])) {
2025-10-08 20:55:35 +03:00
} else {
2025-10-15 18:47:26 +03:00
$rType = array ( 1 => 'channels' , 2 => 'movies' , 3 => 'channels' , 4 => 'radio' )[ $rBouquetMap [ intval ( $rStreamID )]];
if ( ! $rType ) {
} else {
$rResult [ 'bouquet_' . $rType ][] = intval ( $rStreamID );
}
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
}
$rSeries = json_decode ( $rResult [ 'bouquet_series' ], true );
$rResult [ 'bouquet_series' ] = array ();
foreach ( $rSeries as $rSeriesID ) {
if ( ! in_array ( intval ( $rSeriesID ), $rSeriesMap )) {
2025-10-08 20:55:35 +03:00
} else {
2025-10-15 18:47:26 +03:00
$rResult [ 'bouquet_series' ][] = intval ( $rSeriesID );
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
}
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 )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `enigma2_devices`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 );
2025-10-08 20:55:35 +03:00
$rPrepare = prepareArray ( $rResult );
2025-10-15 18:47:26 +03:00
$rQuery = 'INSERT INTO `enigma2_devices`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
2025-10-08 20:55:35 +03:00
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'mag_devices' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `mag_devices`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 {
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'epg' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `epg`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
2025-10-08 20:55:35 +03:00
}
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'epg_sources' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `epg_sources`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'member_groups' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `member_groups` WHERE `can_delete` = 1;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'groups' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `groups` WHERE `can_delete` = 1;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
2025-10-08 20:55:35 +03:00
}
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'groups' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `groups` WHERE `can_delete` = 1;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'packages' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `packages`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 )) {
$odb -> query ( 'SELECT * FROM `rtmp_ips`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'series' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `series`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 ];
}
2025-10-08 20:55:35 +03:00
2025-10-15 18:47:26 +03:00
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 " ;
2025-10-08 20:55:35 +03:00
}
}
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'series_episodes' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `series_episodes`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 ();
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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'streaming_servers' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `streaming_servers`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'servers' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `servers` ORDER BY `id` ASC;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 ;
2025-10-08 20:55:35 +03:00
} else {
2025-10-15 18:47:26 +03:00
$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 )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `streams`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 ();
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 )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `streams_options`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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' ]);
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
}
}
}
}
if ( in_array ( 'streams_sys' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `streams_sys`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 )) {
2025-10-08 20:55:35 +03:00
} else {
2025-10-15 18:47:26 +03:00
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 ) {
$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' ]);
}
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
}
}
}
}
if ( in_array ( 'stream_servers' , $rMigrateOptions )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `stream_servers`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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 )) {
2025-07-10 20:01:56 +03:00
} else {
2025-10-15 18:47:26 +03:00
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' ]);
}
2025-07-10 20:01:56 +03:00
}
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
}
}
}
}
if ( in_array ( 'stream_categories' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `stream_categories`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$db -> query ( 'TRUNCATE `streams_categories`;' );
echo 'Creating ' . number_format ( count ( $rResults ), 0 ) . ' categories.' . " \n " ;
foreach ( $rResults as $rResult ) {
try {
$rResult = verifyPostTable ( 'streams_categories' , $rResult );
2025-10-08 20:55:35 +03:00
$rPrepare = prepareArray ( $rResult );
2025-10-15 18:47:26 +03:00
$rQuery = 'INSERT INTO `streams_categories`(' . $rPrepare [ 'columns' ] . ') VALUES(' . $rPrepare [ 'placeholder' ] . ');' ;
2025-10-08 20:55:35 +03:00
$db -> query ( $rQuery , ... $rPrepare [ 'data' ]);
2025-10-15 18:47:26 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
}
}
}
}
if ( in_array ( 'categories' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `categories`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
2025-07-10 20:01:56 +03:00
}
}
2025-10-08 20:55:35 +03:00
}
2025-10-15 18:47:26 +03:00
}
if ( in_array ( 'tickets' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `tickets`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 " ;
}
}
2025-10-08 20:55:35 +03:00
}
}
2025-10-15 18:47:26 +03:00
if ( in_array ( 'tickets_replies' , $rMigrateOptions )) {
$odb -> query ( 'SELECT * FROM `tickets_replies`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 )) {
$odb -> query ( 'SELECT * FROM `transcoding_profiles`;' );
$rResults = $odb -> get_rows ();
if ( count ( $rResults ) > 0 ) {
$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 )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `user_output`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
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 )) {
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `users`;' );
2025-10-08 20:55:35 +03:00
$rCount = $odb -> get_row ()[ 'count' ];
2025-10-15 18:47:26 +03:00
if ( $rCount > 0 ) {
$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 )) {
$odb -> query ( "SHOW TABLES LIKE 'watch_folders';" );
if ( 0 >= $odb -> num_rows ()) {
2025-07-10 20:01:56 +03:00
} else {
2025-10-15 18:47:26 +03:00
$odb -> query ( 'SELECT COUNT(*) AS `count` FROM `watch_folders`;' );
$rCount = $odb -> get_row ()[ 'count' ];
if ( $rCount > 0 ) {
$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' ]);
}
2025-10-08 20:55:35 +03:00
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
}
}
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';" );
2025-10-15 18:47:26 +03:00
if ( $odb -> num_rows () > 0 ) {
2025-10-08 20:55:35 +03:00
$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' ]);
}
2025-07-10 20:01:56 +03:00
}
2025-10-08 20:55:35 +03:00
} catch ( Exception $e ) {
echo 'Error: ' . $e . " \n " ;
}
2025-10-15 19:23:51 +03:00
if ( in_array ( 'access_codes' , $rMigrateOptions )) {
2026-02-06 20:44:33 +03:00
echo " \n " . 'Admin acces code: ' . $AdminAccesCode ;
2025-10-15 19:23:51 +03:00
}
2025-10-08 20:55:35 +03:00
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 " ;
2025-10-15 19:23:51 +03:00
2025-10-08 20:55:35 +03:00
file_put_contents ( TMP_PATH . '.migration.status' , 2 );
if ( is_object ( $odb )) {
$odb -> close_mysql ();
2025-07-10 20:01:56 +03:00
}