2025-09-30 15:45:09 +03:00
<? php if ( count ( get_included_files ()) != 1 || TRUE ) :
$rModal = isset ( CoreUtilities :: $rRequest [ 'modal' ]);
$rUpdate = ( json_decode ( CoreUtilities :: $rSettings [ 'update_data' ], true ) ?: array ());
?>
2025-07-10 20:01:56 +03:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?= $rSettings['server_name'] ?: 'XC_VM'; ?> <?= isset($_TITLE) ? ' | ' . $_TITLE : ''; ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="robots" content="noindex,nofollow">
<link rel="shortcut icon" href="assets/images/favicon.ico">
<link href="assets/libs/jquery-nice-select/nice-select.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/switchery/switchery.min.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/select2/select2.min.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/datatables/dataTables.bootstrap4.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/datatables/responsive.bootstrap4.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/datatables/buttons.bootstrap4.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/datatables/select.bootstrap4.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/jquery-toast/jquery.toast.min.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/bootstrap-touchspin/jquery.bootstrap-touchspin.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/treeview/style.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/clockpicker/bootstrap-clockpicker.min.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/daterangepicker/daterangepicker.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/nestable2/jquery.nestable.min.css" rel="stylesheet" />
<link href="assets/libs/magnific-popup/magnific-popup.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/quill/quill.min.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/jbox/jBox.all.min.css" rel="stylesheet" type="text/css" />
<link href="assets/css/icons.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/jquery-vectormap/jquery-jvectormap-1.2.2.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/bootstrap-colorpicker/bootstrap-colorpicker.min.css" rel="stylesheet" type="text/css" />
<?php if (isset($_SETUP) || !$rThemes[$rUserInfo['theme']]['dark']): ?>
<link href="assets/css/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="assets/css/app.css" rel="stylesheet" type="text/css" />
<link href="assets/css/listings.css" rel="stylesheet" type="text/css" />
<link href="assets/css/custom.css" rel="stylesheet" type="text/css" />
<?php else: ?>
<link href="assets/css/bootstrap.dark.css" rel="stylesheet" type="text/css" />
<link href="assets/css/app.dark.css" rel="stylesheet" type="text/css" />
<link href="assets/css/listings.dark.css" rel="stylesheet" type="text/css" />
<link href="assets/css/custom.dark.css" rel="stylesheet" type="text/css" />
<?php endif; ?>
<link href="assets/css/extra.css" rel="stylesheet" type="text/css" />
<?php if (!isset($rModal) || !$rModal): ?>
<!-- No modal specific CSS needed -->
<?php else: ?>
<link href="assets/css/modal.css" rel="stylesheet" type="text/css" />
<?php endif; ?>
</head>
<body>
<?php if (!isset($rModal) || !$rModal): ?>
<!-- Header and other content -->
<header id="topnav">
<div
2025-12-02 23:46:27 +03:00
class="navbar-overlay bg-animate<?= (!empty($rUserInfo['hue']) && isset($rHues[$rUserInfo['hue']])) ? '-' . $rUserInfo['hue'] : '' ?>">
2025-07-10 20:01:56 +03:00
</div>
<div class="navbar-custom">
<div class="container-fluid">
<div class="logo-box">
<a href="index" class="logo text-center">
2025-12-08 21:19:09 +03:00
<span class="logo-lg<?= (isset($rUserInfo['hue']) && strlen($rUserInfo['hue']) > 0) ? ' whiteout' : ''; ?>">
2025-07-10 20:01:56 +03:00
<img src="assets/images/logo-topbar.png" alt="" height="60">
</span>
2025-12-08 21:19:09 +03:00
<span class="logo-sm<?= (isset($rUserInfo['hue']) && strlen($rUserInfo['hue']) > 0) ? ' whiteout' : ''; ?>">
2025-07-10 20:01:56 +03:00
<img src="assets/images/logo-topbar.png" alt="" height="50">
</span>
</a>
</div>
<?php if (!isset($_SETUP)): ?>
<?php if (!$rMobile && $rSettings['header_stats']): ?>
<ul class="list-unstyled topnav-menu topnav-menu-left m-0" style="opacity: 80%" id="header_stats">
<li class="dropdown notification-list">
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect pd-left pd-right" data-toggle="dropdown" href="./live_connections" role="button" aria-haspopup="false" aria-expanded="false">
<span class="pro-user-name text-white ml-1">
<i class="fe-zap text-white"></i> <button type="button" class="btn btn-dark bg-animate<?= $rUserInfo['hue'] ? '-' . $rUserInfo['hue'] : ''; ?> btn-xs waves-effect waves-light no-border"><span id="header_connections">0</span></button>
</span>
</a>
</li>
<li class="dropdown notification-list">
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect pd-left pd-right" data-toggle="dropdown" href="./live_connections" role="button" aria-haspopup="false" aria-expanded="false">
<span class="pro-user-name text-white ml-1">
<i class="fe-users text-white"></i> <button type="button" class="btn btn-dark bg-animate<?= $rUserInfo['hue'] ? '-' . $rUserInfo['hue'] : ''; ?> btn-xs waves-effect waves-light no-border"><span id="header_users">0</span></button>
</span>
</a>
</li>
<li class="dropdown notification-list">
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect pd-left pd-right" data-toggle="dropdown" href="./streams" role="button" aria-haspopup="false" aria-expanded="false">
<span class="pro-user-name text-white ml-1">
<i class="fe-play text-white"></i> <button type="button" class="btn btn-dark bg-animate<?= $rUserInfo['hue'] ? '-' . $rUserInfo['hue'] : ''; ?> btn-xs waves-effect waves-light no-border"><span id="header_streams_up">0</span> <i class="mdi mdi-arrow-up-thick"></i> <span id="header_streams_down">0</span> <i class="mdi mdi-arrow-down-thick"></i></button>
</span>
</a>
</li>
<li class="dropdown notification-list">
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect pd-left pd-right" data-toggle="dropdown" href="./dashboard" role="button" aria-haspopup="false" aria-expanded="false">
<span class="pro-user-name text-white ml-1">
<i class="fe-trending-up text-white"></i> <button type="button" class="btn btn-dark bg-animate<?= $rUserInfo['hue'] ? '-' . $rUserInfo['hue'] : ''; ?> btn-xs waves-effect waves-light no-border"><span id="header_network_up">0</span> <small>Mbps</small> <i class="mdi mdi-arrow-up-thick"></i> <span id="header_network_down">0</span> <small>Mbps</small> <i class="mdi mdi-arrow-down-thick"></i></button>
</span>
</a>
</li>
</ul>
<?php endif; ?>
<!-- Streams, Channels, Movies, Episodes & Radio Stations -->
<!-- Include similar structure for multiselect_streams, multiselect_series, etc. -->
<ul class="list-unstyled topnav-menu float-right mb-0 topnav-custom">
<li class="dropdown notification-list">
<a class="navbar-toggle nav-link">
<div class="lines text-white">
<span></span>
<span></span>
<span></span>
</div>
</a>
</li>
<?php if (CoreUtilities::$rSettings['enable_search']): ?>
<li class="dropdown notification-list" id="search-mobile">
<a href="javascript:void(0);"
class="search-toggle pad-15 nav-link right-bar-toggle waves-effect text-white">
<i class="mdi mdi-magnify noti-icon"></i>
</a>
</li>
<li class="d-none d-sm-block" id="topnav-search">
<div class="app-search"
data-theme="bg-animate<?= (0 < strlen($rUserInfo['hue']) && in_array($rUserInfo['hue'], array_keys($rHues))) ? '-' . $rUserInfo['hue'] : ''; ?>">
<div class="app-search-box">
<select placeholder="Search..."
class="quick_search form-control bg-animate<?= (0 < strlen($rUserInfo['hue']) && in_array($rUserInfo['hue'], array_keys($rHues))) ? '-' . $rUserInfo['hue'] : ''; ?>"
data-toggle="select2"></select>
</div>
</div>
</li>
<?php endif; ?>
<li class="dropdown notification-list">
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false">
<span class="pro-user-name text-white ml-1">
<?= htmlspecialchars($rUserInfo['username']) ?> <i class="mdi mdi-chevron-down"></i>
</span>
<span class="pro-user-name-mob nav-link text-white waves-effect">
<i class="fe-user noti-icon"></i>
</span>
</a>
<div class="dropdown-menu dropdown-menu-right profile-dropdown">
<a href="edit_profile" class="dropdown-item notify-item">
2025-11-27 21:14:21 +03:00
<span><?= $language::get('user_profile'); ?></span>
2025-07-10 20:01:56 +03:00
</a>
<?php if (hasPermissions('adv', 'settings')): ?>
<a href="settings" class="dropdown-item notify-item">
2025-11-27 21:14:21 +03:00
<span><?= $language::get('general_settings'); ?></span>
2025-07-10 20:01:56 +03:00
</a>
<?php endif; ?>
<?php if (hasPermissions('adv', 'database')): ?>
<a href="backups" class="dropdown-item notify-item">
2025-11-27 21:14:21 +03:00
<span><?= $language::get('backup_settings'); ?></span>
2025-07-10 20:01:56 +03:00
</a>
<a href="cache" class="dropdown-item notify-item">
2025-11-27 21:14:21 +03:00
<span><?= $language::get('cache_redis'); ?></span>
2025-07-10 20:01:56 +03:00
</a>
<?php endif; ?>
<?php if (hasPermissions('adv', 'folder_watch_settings')): ?>
<div class="dropdown-divider"></div>
<a href="settings_plex" class="dropdown-item notify-item">
2025-11-27 21:14:21 +03:00
<span><?= $language::get('plex_settings'); ?></span>
2025-07-10 20:01:56 +03:00
</a>
<a href="settings_watch" class="dropdown-item notify-item">
2025-11-27 21:14:21 +03:00
<span><?= $language::get('watch_settings'); ?></span>
2025-07-10 20:01:56 +03:00
</a>
<?php endif; ?>
2025-09-30 15:45:09 +03:00
2025-07-10 20:01:56 +03:00
<div class="dropdown-divider"></div>
<a href="logout" class="dropdown-item notify-item">
2025-11-27 21:14:21 +03:00
<span><?= $language::get('logout'); ?></span>
2025-07-10 20:01:56 +03:00
</a>
</div>
</li>
<!-- User Profile, General Settings, etc. -->
<?php if ($rServerError && hasPermissions('adv', 'servers')): ?>
<li class="notification-list">
<a href="servers" class="nav-link right-bar-toggle waves-effect <?php echo $rUserInfo['theme'] == 1 ? 'text-white' : 'text-warning'; ?>">
<i class="mdi mdi-wifi-strength-off noti-icon"></i>
</a>
</li>
<?php elseif ($allServersHealthy && hasPermissions('adv', 'servers')): ?>
<li class="notification-list">
<a href="proxies" class="nav-link right-bar-toggle waves-effect <?php echo $rUserInfo['theme'] == 1 ? 'text-white' : 'text-warning'; ?>">
<i class="mdi mdi-wifi-strength-off noti-icon"></i>
</a>
</li>
<?php endif; ?>
2025-07-13 19:25:52 +03:00
<?php if (!$rMobile && isset($rUpdate) && is_array($rUpdate) && $rUpdate['version'] && (0 < version_compare($rUpdate['version'], XC_VM_VERSION) || version_compare($rUpdate['version'], XC_VM_VERSION) == 0)): ?>
2025-07-10 20:01:56 +03:00
<li class="notification-list">
2025-07-15 22:07:15 +03:00
<a href="settings" class="nav-link right-bar-toggle waves-effect <?php echo $rUserInfo['theme'] == 1 ? 'text-white' : 'text-warning'; ?>" title="Official Release v<?php echo $rUpdate['version']; ?> is available to download.">
2025-07-10 20:01:56 +03:00
<i class="mdi mdi-update noti-icon"></i>
</a>
</li>
<?php endif; ?>
<?php if ($rSettings['show_tickets']): ?>
<?php
$rTickets = array();
$rIDs = array();
// Assuming $db is your database connection variable
$db->query('SELECT `id` FROM `users` WHERE `owner_id` = ?;', $rUserInfo['id']);
foreach ($db->get_rows() as $rRow) {
$rIDs[] = $rRow['id'];
}
if (count($rIDs) > 0) {
$db->query('SELECT `tickets`.`id`, `tickets`.`title`, MAX(`tickets_replies`.`date`) AS `date`, `users`.`username` FROM `tickets` LEFT JOIN `tickets_replies` ON `tickets_replies`.`ticket_id` = `tickets`.`id` LEFT JOIN `users` ON `users`.`id` = `tickets`.`member_id` WHERE `tickets`.`status` <> 0 AND `admin_read` = 0 AND `user_read` = 1 AND `member_id` <> ? AND `member_id` IN (?) GROUP BY `tickets_replies`.`ticket_id` ORDER BY `tickets_replies`.`date` DESC LIMIT 50;', $rUserInfo['id'], implode(',', $rIDs));
$unreadTicketCount = $db->num_rows();
foreach ($db->get_rows() as $rRow) {
$rTickets[] = $rRow;
}
}
?>
<li class="dropdown notification-list">
<a class="nav-link dropdown-toggle waves-effect text-white" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false">
<i class="fe-mail noti-icon"></i>
<?php if ($unreadTicketCount > 0): ?>
<span class="badge badge-info rounded-circle noti-icon-badge"><?php echo $unreadTicketCount < 100 ? $unreadTicketCount : '99+'; ?></span>
<?php endif; ?>
</a>
<div class="dropdown-menu dropdown-menu-right dropdown-lg">
<div class="dropdown-item noti-title">
<h5 class="m-0">Tickets</h5>
</div>
<div class="slimscroll noti-scroll">
<?php foreach ($rTickets as $rTicket): ?>
2025-10-10 18:30:55 +03:00
<?php $timeAgo = time() - intval($rTicket['date']);
if ($timeAgo < 60) {
$timeAgo = $timeAgo . ' seconds ago';
} elseif ($timeAgo < 3600) {
$timeAgo = ceil($timeAgo / 60) . ' minutes ago';
} else if ($timeAgo < 86400) {
$timeAgo = ceil($timeAgo / 3600) . ' hours ago';
} else {
$timeAgo = ceil($timeAgo / 86400) . ' days ago';
}
?>
2025-07-10 20:01:56 +03:00
<a href="ticket_view?id=<?php echo $rTicket['id']; ?>" class="dropdown-item notify-item">
<div class="notify-icon bg-info"><i class="mdi mdi-comment"></i></div>
2025-10-10 18:30:55 +03:00
<p class="notify-details"><?php echo htmlspecialchars($rTicket['title']); ?><small class="text-muted"><?php echo $timeAgo; ?></small></p>
2025-07-10 20:01:56 +03:00
</a>
<?php endforeach; ?>
</div>
<a href="tickets" class="dropdown-item text-center text-primary notify-item notify-all">View Tickets<i class="fi-arrow-right"></i></a>
</div>
</li>
<?php endif; ?>
</ul>
<?php endif; ?>
<div class="clearfix"></div>
</div>
</div>
<?php if (!isset($_SETUP)): ?>
<div class="topbar-menu">
<div class="container-fluid">
<div id="navigation">
<ul class="navigation-menu">
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="index"><i class="fe-activity"></i><?= $language::get('dashboard'); ?>
2025-07-10 20:01:56 +03:00
<?php if (!$rMobile): ?>
<div class="arrow-down"></div>
</a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'live_connections')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="live_connections"><?= $language::get('live_connections'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
<?php else: ?>
</a>
<?php endif; ?>
</li>
<?php if (hasPermissions('adv', 'servers') || hasPermissions('adv', 'process_monitor')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><i class="fas fa-server"></i><?= $language::get('servers'); ?> <div class="arrow-down">
2025-07-10 20:01:56 +03:00
</div></a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'servers')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="server_install"><?= $language::get('install_load_balancer'); ?></a></li>
<li><a href="servers"><?= $language::get('manage_servers'); ?></a></li>
<li><a href="proxies"><?= $language::get('manage_proxies'); ?></a></li>
<li><a href="server_order"><?= $language::get('server_order'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'process_monitor')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="process_monitor"><?= $language::get('process_monitor'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_user') || hasPermissions('adv', 'users') || hasPermissions('adv', 'add_mag') || hasPermissions('adv', 'manage_mag') || hasPermissions('adv', 'add_e2') || hasPermissions('adv', 'manage_e2')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"> <i class="fas fa-desktop"></i><?= $language::get('users'); ?> <div class="arrow-down">
2025-07-10 20:01:56 +03:00
</div></a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_user') || hasPermissions('adv', 'users')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('user_lines'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_user')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="line"><?= $language::get('add_users'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'users')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="lines"><?= $language::get('manage_users'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_edit_lines')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="line_mass"><?= $language::get('mass_edit_users'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_mag') || hasPermissions('adv', 'manage_mag')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('mag_devices'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_mag')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="mag"><?= $language::get('add_mag'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'manage_mag')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="mags"><?= $language::get('manage_mag_devices'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_edit_mags')): ?>
<li><a href="mag_mass">Mass Edit Mags</a></li>
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_e2') || hasPermissions('adv', 'manage_e2')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('enigma_devices'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_e2')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="enigma"><?= $language::get('add_enigma'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'manage_e2')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="enigmas"><?= $language::get('manage_enigma_devices'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_edit_enigmas')): ?>
<li><a href="enigma_mass">Mass Edit Enigmas</a></li>
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_reguser') || hasPermissions('adv', 'mng_regusers')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('reseller'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_reguser')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="user"><?= $language::get('add_registered_user'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mng_regusers')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="users"><?= $language::get('manage_registered_user'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_edit_users')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="user_mass"><?= $language::get('mass_edit_resellers'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_stream') || hasPermissions('adv', 'create_channel') || hasPermissions('adv', 'import_streams') || hasPermissions('adv', 'streams') || hasPermissions('adv', 'add_movie') || hasPermissions('adv', 'import_movies') || hasPermissions('adv', 'movies') || hasPermissions('adv', 'series') || hasPermissions('adv', 'episodes') || hasPermissions('adv', 'add_series') || hasPermissions('adv', 'radio') || hasPermissions('adv', 'add_radio')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"> <i class="fas fa-play"></i><?= $language::get('content'); ?> <div class="arrow-down"></div>
2025-07-10 20:01:56 +03:00
</a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_stream') || hasPermissions('adv', 'import_streams') || hasPermissions('adv', 'streams')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('streams'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_stream')): ?><li><a
2025-11-27 21:14:21 +03:00
href="stream"><?= $language::get('add_stream'); ?></a></li><?php endif; ?>
2025-07-10 20:01:56 +03:00
<?php if (hasPermissions('adv', 'import_streams') && !$rMobile): ?>
2025-11-27 21:14:21 +03:00
<li><a href="stream?import=1"><?= $language::get('import_multiple_stream'); ?></a></li>
<li><a href="review?type=1"><?= $language::get('import_review_stream'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'streams')): ?><li><a
2025-11-27 21:14:21 +03:00
href="streams"><?= $language::get('manage_streams'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'streams')): ?><li><a
2025-11-27 21:14:21 +03:00
href="stream_mass"><?= $language::get('mass_edit_streams'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'create_channel') || hasPermissions('adv', 'streams')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('created_channels'); ?> <div class="arrow-down"></div>
2025-07-10 20:01:56 +03:00
</a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'create_channel')): ?><li><a
2025-11-27 21:14:21 +03:00
href="created_channel"><?= $language::get('create_channel'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'streams')): ?><li><a
2025-11-27 21:14:21 +03:00
href="created_channels"><?= $language::get('manage_created_channels'); ?></a>
2025-07-10 20:01:56 +03:00
</li><?php endif; ?>
<?php if (hasPermissions('adv', 'streams')): ?><li><a
2025-11-27 21:14:21 +03:00
href="created_channel_mass"><?= $language::get('mass_edit_created_channels'); ?></a>
2025-07-10 20:01:56 +03:00
</li><?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_movie') || hasPermissions('adv', 'import_movies') || hasPermissions('adv', 'movies')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('movies'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_movie')): ?><li><a
2025-11-27 21:14:21 +03:00
href="movie"><?= $language::get('add_movie'); ?></a></li><?php endif; ?>
2025-07-10 20:01:56 +03:00
<?php if (hasPermissions('adv', 'import_movies') && !$rMobile): ?>
2025-11-27 21:14:21 +03:00
<li><a href="movie?import=1"><?= $language::get('import_multiple_movies'); ?></a></li>
<li><a href="review?type=2"><?= $language::get('import_review_movies'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'movies')): ?><li><a
2025-11-27 21:14:21 +03:00
href="movies"><?= $language::get('manage_movies'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_sedits_vod')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="movie_mass"><?= $language::get('mass_edit_movies'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_series') || hasPermissions('adv', 'series') || hasPermissions('adv', 'episodes')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('series'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_series')): ?><li><a
2025-11-27 21:14:21 +03:00
href="serie"><?= $language::get('add_series'); ?></a></li><?php endif; ?>
2025-07-10 20:01:56 +03:00
<?php if (hasPermissions('adv', 'series')): ?><li><a
2025-11-27 21:14:21 +03:00
href="series"><?= $language::get('manage_series'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'episodes')): ?><li><a
2025-11-27 21:14:21 +03:00
href="episodes"><?= $language::get('manage_episodes'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_sedits')): ?>
<li><a href="series_mass">Mass Edit Series</a></li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_sedits')): ?>
<li><a href="episodes_mass">Mass Edit Episodes</a></li>
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_radio') || hasPermissions('adv', 'radio')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('stations'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_radio')): ?><li><a
2025-11-27 21:14:21 +03:00
href="radio"><?= $language::get('add_station'); ?></a></li><?php endif; ?>
2025-07-10 20:01:56 +03:00
<?php if (hasPermissions('adv', 'radio')): ?><li><a
2025-11-27 21:14:21 +03:00
href="radios"><?= $language::get('manage_stations'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_edit_radio')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="radio_mass"><?= $language::get('mass_edit_stations'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
2025-11-27 21:14:21 +03:00
<?php if (hasPermissions('adv', 'movies')): ?><li><a href="archive"><?= $language::get('recordings'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
2025-11-27 21:14:21 +03:00
<?php if (!$rMobile && hasPermissions('adv', 'streams')): ?><li><a href="epg_view"><?= $language::get('tv_guide'); ?></a></li><?php endif; ?>
2025-07-10 20:01:56 +03:00
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_bouquet') || hasPermissions('adv', 'bouquets') || hasPermissions('adv', 'edit_bouquet')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"> <i class="fas fa-spa"></i><?= $language::get('bouquets'); ?> <div class="arrow-down"></div>
2025-07-10 20:01:56 +03:00
</a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_bouquet')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="bouquet"><?= $language::get('add_bouquet'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'bouquets')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="bouquets"><?= $language::get('manage_bouquets'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'edit_bouquet') && !$rMobile): ?>
2025-11-27 21:14:21 +03:00
<li><a href="bouquet_order"><?= $language::get('order_bouquets'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'streams') || hasPermissions('adv', 'episodes') || hasPermissions('adv', 'series') || hasPermissions('adv', 'categories') || hasPermissions('adv', 'epg') || hasPermissions('adv', 'mng_groups') || hasPermissions('adv', 'mng_packages') || hasPermissions('adv', 'tprofiles') || hasPermissions('adv', 'folder_watch') || hasPermissions('adv', 'add_code') || hasPermissions('adv', 'block_asns') || hasPermissions('adv', 'block_ips') || hasPermissions('adv', 'block_isps') || hasPermissions('adv', 'block_uas') || hasPermissions('adv', 'rtmp') || hasPermissions('adv', 'channel_order') || hasPermissions('adv', 'fingerprint') || hasPermissions('adv', 'mass_delete') || hasPermissions('adv', 'stream_tools') || hasPermissions('adv', 'mass_edit_enigmas') || hasPermissions('adv', 'mass_edit_lines') || hasPermissions('adv', 'mass_edit_mags') || hasPermissions('adv', 'mass_sedits_vod') || hasPermissions('adv', 'mass_sedits') || hasPermissions('adv', 'mass_edit_radio') || hasPermissions('adv', 'mass_edit_streams') || hasPermissions('adv', 'mass_edit_users') || hasPermissions('adv', 'connection_logs') || hasPermissions('adv', 'client_request_log') || hasPermissions('adv', 'login_logs') || hasPermissions('adv', 'panel_logs') || hasPermissions('adv', 'credits_log') || hasPermissions('adv', 'live_connections') || hasPermissions('adv', 'manage_events') || hasPermissions('adv', 'reg_userlog') || hasPermissions('adv', 'stream_errors') || hasPermissions('adv', 'folder_watch') || hasPermissions('adv', 'add_hmac') || hasPermissions('adv', 'quick_tools') || hasPermissions('adv', 'manage_tickets')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"> <i class="fas fa-wrench"></i><?= $language::get('management'); ?> <div class="arrow-down">
2025-07-10 20:01:56 +03:00
</div></a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'categories') || hasPermissions('adv', 'epg') || hasPermissions('adv', 'mng_groups') || hasPermissions('adv', 'mng_packages') || hasPermissions('adv', 'tprofiles') || hasPermissions('adv', 'folder_watch')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('service_setup'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'mng_packages')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="packages"><?= $language::get('packages'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'categories')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="stream_categories"><?= $language::get('categories'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mng_groups')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="groups"><?= $language::get('groups'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'epg')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="epgs"><?= $language::get('epgs'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'tprofiles')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="profiles"><?= $language::get('transcode_profiles'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'folder_watch')): ?>
<li><a href="plex">Plex Sync</a></li>
2025-11-27 21:14:21 +03:00
<li><a href="watch"><?= $language::get('folder_watch'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_code') || hasPermissions('adv', 'block_asns') || hasPermissions('adv', 'block_ips') || hasPermissions('adv', 'block_isps') || hasPermissions('adv', 'block_uas') || hasPermissions('adv', 'rtmp') || hasPermissions('adv', 'add_hmac')): ?>
<li class="has-submenu">
<a href="#">Access Codes <div class="arrow-down"></div></a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'add_code')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="code"><?= $language::get('add_access_codes'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_code')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="codes"><?= $language::get('menage_access_codes'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_code') || hasPermissions('adv', 'block_asns') || hasPermissions('adv', 'block_ips') || hasPermissions('adv', 'block_isps') || hasPermissions('adv', 'block_uas') || hasPermissions('adv', 'rtmp') || hasPermissions('adv', 'add_hmac')): ?>
<li class="has-submenu">
<a href="#">Security <div class="arrow-down"></div></a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'block_asns')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="asns"><?= $language::get('blocked_asns'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'block_ips')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="ips"><?= $language::get('blocked_ips'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'block_isps')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="isps"><?= $language::get('blocked_isps'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'block_uas')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="useragents"><?= $language::get('blocked_uas'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_hmac')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="hmacs"><?= $language::get('hmac_keys'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'rtmp')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="rtmp_ips"><?= $language::get('rtmp_ips'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'channel_order') || hasPermissions('adv', 'rtmp') || hasPermissions('adv', 'fingerprint') || hasPermissions('adv', 'mass_delete') || hasPermissions('adv', 'stream_tools') || hasPermissions('adv', 'quick_tools')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('tools'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu">
<?php if (hasPermissions('adv', 'channel_order') && !$rMobile): ?>
2025-11-27 21:14:21 +03:00
<li><a href="channel_order"><?= $language::get('channel_order'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'fingerprint')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="fingerprint"><?= $language::get('fingerprint'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'mass_delete')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="mass_delete"><?= $language::get('mass_delete'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'quick_tools')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="quick_tools"><?= $language::get('quick_tools'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'rtmp')): ?>
<li><a href="rtmp_monitor">RTMP Monitor</a></li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'stream_tools')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="stream_tools"><?= $language::get('stream_tools'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'movies') || hasPermissions('adv', 'streams') || hasPermissions('adv', 'connection_logs') || hasPermissions('adv', 'client_request_log') || hasPermissions('adv', 'login_logs') || hasPermissions('adv', 'panel_logs') || hasPermissions('adv', 'credits_log') || hasPermissions('adv', 'live_connections') || hasPermissions('adv', 'manage_events') || hasPermissions('adv', 'reg_userlog') || hasPermissions('adv', 'streams') || hasPermissions('adv', 'episodes') || hasPermissions('adv', 'series') || hasPermissions('adv', 'stream_errors') || hasPermissions('adv', 'folder_watch')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"><?= $language::get('logs'); ?> <div class="arrow-down"></div></a>
2025-07-10 20:01:56 +03:00
<ul class="submenu megamenu">
<li>
<ul>
<?php
$logs = [
2025-11-27 21:14:21 +03:00
['url' => 'line_activity', 'title' => $language::get('activity_logs'), 'permissions' => ['connection_logs']],
['url' => 'client_logs', 'title' => $language::get('client_logs'), 'permissions' => ['client_request_log']],
['url' => 'credit_logs', 'title' => $language::get('credit_logs'), 'permissions' => ['credits_log']],
2025-07-10 20:01:56 +03:00
['url' => 'queue', 'title' => 'Encoding Queue', 'permissions' => ['streams', 'episodes', 'series']],
2025-11-27 21:14:21 +03:00
['url' => 'line_ips', 'title' => $language::get('ips_per_line'), 'permissions' => ['connection_logs']],
['url' => 'live_connections', 'title' => $language::get('live_connections'), 'permissions' => ['live_connections']],
2025-07-10 20:01:56 +03:00
['url' => 'login_logs', 'title' => 'Login Logs', 'permissions' => ['login_logs']],
2025-11-27 21:14:21 +03:00
['url' => 'mag_events', 'title' => $language::get('mag_event_logs'), 'permissions' => ['manage_events']],
2025-07-10 20:01:56 +03:00
['url' => 'ondemand', 'title' => 'On-Demand Scanner', 'permissions' => ['streams']],
['url' => 'panel_logs', 'title' => 'Panel Errors', 'permissions' => ['panel_logs']],
2025-11-27 21:14:21 +03:00
['url' => 'user_logs', 'title' => $language::get('reseller_logs'), 'permissions' => ['reg_userlog']],
2025-07-10 20:01:56 +03:00
['url' => 'restream_logs', 'title' => 'Restream Detection', 'permissions' => ['restream_logs']],
2025-11-27 21:14:21 +03:00
['url' => 'stream_errors', 'title' => $language::get('stream_errors'), 'permissions' => ['stream_errors']],
2025-07-10 20:01:56 +03:00
['url' => 'stream_rank', 'title' => 'Stream Rank', 'permissions' => ['streams']],
['url' => 'mysql_syslog', 'title' => 'System Logs', 'permissions' => ['panel_logs']],
['url' => 'theft_detection', 'title' => 'VOD Theft Detection', 'permissions' => ['movies']],
2025-11-27 21:14:21 +03:00
['url' => 'watch_output', 'title' => $language::get('watch_folder_logs'), 'permissions' => ['folder_watch']]
2025-07-10 20:01:56 +03:00
];
$filteredLogs = array_filter($logs, function ($log) {
return array_reduce($log['permissions'], function ($carry, $permission) {
return $carry || hasPermissions('adv', $permission);
}, false);
});
$splitIndex = count($filteredLogs) > 8 ? ceil(count($filteredLogs) / 2) : null;
$i = 0;
foreach ($filteredLogs as $log) {
if ($splitIndex && $i == $splitIndex) {
echo '</ul></li><li><ul>';
}
echo '<li><a href="' . $log['url'] . '">' . $log['title'] . '</a></li>';
$i++;
}
?>
</ul>
</li>
</ul>
</li>
<?php endif; ?>
<?php if (!$rSettings['show_tickets'] && hasPermissions('adv', 'manage_tickets')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="tickets"><?= $language::get('tickets'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
<?php if (hasPermissions('adv', 'add_bouquet') || hasPermissions('adv', 'streams') || hasPermissions('adv', 'categories')): ?>
<li class="has-submenu">
2025-11-27 21:14:21 +03:00
<a href="#"> <i class="fas fa-users"></i><?= $language::get('supplirs'); ?> <div class="arrow-down"></div>
2025-07-10 20:01:56 +03:00
</a>
<ul class="submenu">
<?php if (hasPermissions('adv', 'streams')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="provider"><?= $language::get('add_providers'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
<?php if (hasPermissions('adv', 'streams')): ?>
2025-11-27 21:14:21 +03:00
<li><a href="providers"><?= $language::get('stream_providers'); ?></a></li>
2025-07-10 20:01:56 +03:00
<?php endif; ?>
</ul>
</li>
<?php endif; ?>
</ul>
<div class="clearfix"></div>
</div>
</div>
</div>
<?php endif; ?>
</header>
<?php endif; ?>
<div id="status">
<div class="spinner"></div>
</div>
<?php else: exit();
2025-12-02 23:46:27 +03:00
endif; ?>