| Server IP : 104.21.21.239 / Your IP : 216.73.217.143 Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-69-123.ec2.internal 6.1.176-223.369.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jul 24 13:34:27 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/banners/domains/stagemag/ |
Upload File : |
<?php
ob_start();
require_once __DIR__ . '/functions.php';
init_session();
$currentDateTime = date('Y-m-d H:i:s');
$utime = time();
// Pick auth email deterministically even if multiple cookies exist
$authPick = stagemag_pick_auth_email($_COOKIE, (string)($_SERVER['HTTP_COOKIE'] ?? ''));
$authEmail = $authPick['picked'];
// #region agent log
debug_ndjson_log('E', 'domains/stagemag/header.php:7', 'header entry', [
'host' => $_SERVER['HTTP_HOST'] ?? '',
'https' => (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 1 : 0,
'xf_proto' => $_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '',
'xf_host' => $_SERVER['HTTP_X_FORWARDED_HOST'] ?? '',
'xf_for' => isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? substr((string)$_SERVER['HTTP_X_FORWARDED_FOR'], 0, 80) : '',
'remote_addr' => $_SERVER['REMOTE_ADDR'] ?? '',
'referer' => $_SERVER['HTTP_REFERER'] ?? '',
'ua' => substr($_SERVER['HTTP_USER_AGENT'] ?? '', 0, 120),
'sec_fetch_site' => $_SERVER['HTTP_SEC_FETCH_SITE'] ?? '',
'sec_fetch_mode' => $_SERVER['HTTP_SEC_FETCH_MODE'] ?? '',
'sec_fetch_dest' => $_SERVER['HTTP_SEC_FETCH_DEST'] ?? '',
'script' => $_SERVER['SCRIPT_NAME'] ?? '',
'request_uri' => $_SERVER['REQUEST_URI'] ?? '',
'has_cookie_email' => isset($_COOKIE['email']) ? 1 : 0,
'cookie_email_len' => isset($_COOKIE['email']) ? strlen((string)$_COOKIE['email']) : 0,
'cookie_trim_empty' => isset($_COOKIE['email']) ? (trim((string)$_COOKIE['email']) === '' ? 1 : 0) : null,
'cookie_fp' => isset($_COOKIE['email']) ? substr(sha1((string)$_COOKIE['email']), 0, 10) : '',
'cookie_raw' => debug_cookie_fingerprints(),
'auth_pick' => $authPick,
'session_id' => session_id() ? substr(session_id(), 0, 8) : '',
'session_keys' => [
'id' => isset($_SESSION['id']) ? 1 : 0,
'email' => isset($_SESSION['email']) ? 1 : 0,
'lname' => isset($_SESSION['lname']) ? 1 : 0,
'zip' => isset($_SESSION['zip']) ? 1 : 0,
],
]);
// #endregion
/* ── Cache / security headers ── */
if (!headers_sent()) {
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Pragma: no-cache');
header('X-XSS-Protection: 0');
header('Content-Type: text/html; charset=utf-8');
}
/* ── Authentication ── */
if ($authEmail !== '') {
// If session already populated, build $getuser from session
if (isset($_SESSION['id']) && $_SESSION['id'] !== '' && $_SESSION['id'] !== '-1' && isset($_SESSION['zip'])) {
// Guard: if lname is missing the session is corrupt — force logout
if (!isset($_SESSION['lname'])) {
// #region agent log
debug_ndjson_log('F', 'domains/stagemag/header.php:27', 'forced logout: session missing lname', [
'script' => $_SERVER['SCRIPT_NAME'] ?? '',
'has_cookie_email' => isset($_COOKIE['email']) ? 1 : 0,
'cookie_email_len' => isset($_COOKIE['email']) ? strlen((string)$_COOKIE['email']) : 0,
'session_id' => session_id() ? substr(session_id(), 0, 8) : '',
]);
// #endregion
header('Location: /logout.php?force=1&k=' . urlencode($_SESSION['ajaxkey'] ?? '') . '&refer=' . urlencode($_SERVER['SCRIPT_NAME']));
exit;
}
$getuser = [
'fname' => $_SESSION['fname'],
'lname' => $_SESSION['lname'],
'email' => $_SESSION['email'],
'regadminid' => $_SESSION['regadminid'],
'id' => $_SESSION['id'],
'member' => $_SESSION['member'],
'accesslevel'=> $_SESSION['accesslevel'],
'zip' => $_SESSION['zip'],
];
}
// If we still don't have $getuser, query the database
if (!isset($getuser['id'])) {
// #region agent log
debug_ndjson_log('G', 'domains/stagemag/header.php:45', 'db lookup from cookie', [
'auth_email_fp' => $authPick['picked_fp'] ?? '',
]);
// #endregion
$stmtUser = db_read()->prepare(
"SELECT starusers.zip, starusers.id, starusers.fname, starusers.lname,
starusers.member, starusers.email, starusers.accesslevel, starusers.regadminid
FROM bway_bww.starusers
WHERE email = :email AND confirmed = '1'"
);
$stmtUser->execute([':email' => $authEmail]);
$getuser = $stmtUser->fetch();
if ($getuser) {
$_SESSION['fname'] = $getuser['fname'];
$_SESSION['lname'] = $getuser['lname'];
$_SESSION['email'] = $getuser['email'];
$_SESSION['regadminid'] = $getuser['regadminid'];
$_SESSION['id'] = $getuser['id'];
$_SESSION['member'] = $getuser['member'];
$_SESSION['accesslevel']= $getuser['accesslevel'];
$_SESSION['zip'] = $getuser['zip'];
// #region agent log
debug_ndjson_log('G', 'domains/stagemag/header.php:65', 'db lookup success; session populated', [
'session_id' => session_id() ? substr(session_id(), 0, 8) : '',
'accesslevel' => isset($getuser['accesslevel']) ? (int)$getuser['accesslevel'] : null,
]);
// #endregion
} else {
// #region agent log
debug_ndjson_log('G', 'domains/stagemag/header.php:72', 'db lookup failed; cookie email not confirmed user', [
'cookie_email_len' => strlen((string)$_COOKIE['email']),
'session_id' => session_id() ? substr(session_id(), 0, 8) : '',
]);
// #endregion
}
}
}
// If still no valid user or access level too low — redirect to login
if (!isset($getuser['id']) || (int)($getuser['accesslevel'] ?? -1) < 0) {
// #region agent log
debug_ndjson_log('H', 'domains/stagemag/header.php:80', 'redirecting to login (no valid user)', [
'script' => $_SERVER['SCRIPT_NAME'] ?? '',
'has_programid' => isset($_GET['programid']) ? 1 : 0,
'programid' => isset($_GET['programid']) ? (string)$_GET['programid'] : '',
'has_cookie_email' => isset($_COOKIE['email']) ? 1 : 0,
'cookie_email_len' => isset($_COOKIE['email']) ? strlen((string)$_COOKIE['email']) : 0,
'xf_proto' => $_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '',
'referer' => $_SERVER['HTTP_REFERER'] ?? '',
'ua' => substr($_SERVER['HTTP_USER_AGENT'] ?? '', 0, 120),
'sec_fetch_site' => $_SERVER['HTTP_SEC_FETCH_SITE'] ?? '',
'sec_fetch_mode' => $_SERVER['HTTP_SEC_FETCH_MODE'] ?? '',
'session_id' => session_id() ? substr(session_id(), 0, 8) : '',
]);
// #endregion
if (isset($_GET['programid'])) {
header('Location: /login.php?refer=' . urlencode($_SERVER['SCRIPT_NAME']) . '&programid=' . urlencode($_GET['programid']));
exit;
} else {
header('Location: /login.php?refer=' . urlencode($_SERVER['SCRIPT_NAME']));
exit;
}
}
/* ── URL params ── */
$typer = $_GET['typer'] ?? '1';
$pointme = '12';
$colorme = 'd4d4d4';
$coloryou = 'efefef';
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
$isMobile = (stripos($userAgent, 'iPhone') !== false || stripos($userAgent, 'android') !== false);
$isIPhone = (stripos($userAgent, 'iPhone') !== false);
$programid = isset($_GET['programid']) ? intval($_GET['programid']) : null;
?>
<!DOCTYPE html>
<html lang="en">
<head>
<?php if (isset($headercontent)): ?>
<?= $headercontent ?>
<?php else: ?>
<title>BroadwayWorld Stage Mag</title>
<?php endif; ?>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- Tell the browser to be responsive to screen width -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<!-- Favicon icon -->
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="https://cloudimages.broadwayworld.com/2017/icons/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://cloudimages.broadwayworld.com/2017/icons/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://cloudimages.broadwayworld.com/2017/icons/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://cloudimages.broadwayworld.com/2017/icons/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon-precomposed" sizes="60x60" href="https://cloudimages.broadwayworld.com/2017/icons/apple-touch-icon-60x60.png" />
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="https://cloudimages.broadwayworld.com/2017/icons/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="https://cloudimages.broadwayworld.com/2017/icons/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="https://cloudimages.broadwayworld.com/2017/icons/apple-touch-icon-152x152.png" />
<link rel="icon" type="image/png" href="https://cloudimages.broadwayworld.com/2017/icons/favicon-196x196.png" sizes="196x196" />
<link rel="icon" type="image/png" href="https://cloudimages.broadwayworld.com/2017/icons/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/png" href="https://cloudimages.broadwayworld.com/2017/icons/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="https://cloudimages.broadwayworld.com/2017/icons/favicon-16x16.png" sizes="16x16" />
<link rel="icon" type="image/png" href="https://cloudimages.broadwayworld.com/2017/icons/favicon-128.png" sizes="128x128" />
<meta name="msapplication-TileImage" content="https://cloudimages.broadwayworld.com/2017/icons/mstile-144x144.png" />
<meta name="msapplication-square70x70logo" content="https://cloudimages.broadwayworld.com/2017/icons/mstile-70x70.png" />
<meta name="msapplication-square150x150logo" content="https://cloudimages.broadwayworld.com/2017/icons/mstile-150x150.png" />
<meta name="msapplication-wide310x150logo" content="https://cloudimages.broadwayworld.com/2017/icons/mstile-310x150.png" />
<meta name="msapplication-square310x310logo" content="https://cloudimages.broadwayworld.com/2017/icons/mstile-310x310.png" />
<!-- Bootstrap Core CSS -->
<link href="https://cloudimages.broadwayworld.com/theme/assets/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="https://cloudadmin.broadwayworld.com/theme/horizontal/css/style3.css" rel="stylesheet">
<!-- You can change the theme colors from here -->
<link href="https://cloudimages.broadwayworld.com/theme/horizontal/css/colors/blue.css" id="theme" rel="stylesheet">
<style type="text/css">
.topbar {
background: #b20223;
}
.sidebar-nav>ul>li>a.active {
background: transparent;
}
.table-striped tbody tr:nth-of-type(odd) {
background: #ffff;
}
.container-fluid {
padding: 0 10px 2px;
max-width: 1280px;
margin: 0 auto;
}
.topbar .navbar-header {
background: #b20223;
}
/* Page Title Styling */
#content-header {
margin-bottom: 20px;
border-bottom: 2px solid #e0e0e0;
}
#content-header h2 {
color: #333;
margin: 0 0 0 10px;
padding: 10px 20px 12px 16px;
font-size: 22px;
font-weight: 600;
border-left: 4px solid #b20223;
}
</style>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script data-ezscrex=false data-pagespeed-no-defer data-cfasync=false async >window['gtag_enable_tcf_support'] = true; (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-P3NJDWD');</script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-253633-29"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-253633-29');
</script>
</head>
<body class="fix-header card-no-border logo-center">
<img src="https://cloud.broadwayworld.com/sitepixel.cfm" width="1" height="1" alt="" style="display:none;" loading="eager" decoding="async">
<!-- ============================================================== -->
<!-- Preloader - style you can find in spinners.css -->
<!-- ============================================================== -->
<div class="preloader">
<svg class="circular" viewBox="25 25 50 50">
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10" /> </svg>
</div>
<!-- ============================================================== -->
<!-- Main wrapper - style you can find in pages.scss -->
<!-- ============================================================== -->
<div id="main-wrapper">
<!-- ============================================================== -->
<!-- Topbar header - style you can find in pages.scss -->
<!-- ============================================================== -->
<header class="topbar">
<script src="https://cloudadmin.broadwayworld.com/plugins/bower_components/jquery/dist/jquery224.min.js"></script>
<nav class="navbar top-navbar navbar-expand-md navbar-light">
<!-- ============================================================== -->
<!-- Logo -->
<!-- ============================================================== -->
<div class="navbar-header">
<a class="navbar-brand" href="/">
<!-- Logo icon --><b>
<!--You can put here icon as well // <i class="wi wi-sunset"></i> //-->
<!-- Dark Logo icon -->
<img src="https://cloudimages.broadwayworld.com/2018/bwweliteadmin-logo4-2a.png" alt="homepage" class="dark-logo" style="max-height: 59px;" />
<!-- Light Logo icon -->
<img src="https://cloudimages.broadwayworld.com/2018/bwweliteadmin-logo4-2a.png" alt="homepage" class="light-logo" style="max-height: 59px;" />
</b>
<!--End Logo icon -->
<!-- Logo text --><span>
<!-- dark Logo text -->
<img src="https://cloudimages.broadwayworld.com/theme/assets/images/bwwlogo-text2a.png" alt="homepage" class="dark-logo" style="max-height: 20px;"/>
<!-- Light Logo text -->
<img src="https://cloudimages.broadwayworld.com/stagemag/bww-stagemag2a.png" class="light-logo" alt="homepage" style="max-height: 20px;" /></span> </a>
</div>
<!-- ============================================================== -->
<!-- End Logo -->
<!-- ============================================================== -->
<div class="navbar-collapse">
<!-- ============================================================== -->
<!-- toggle and nav items -->
<!-- ============================================================== -->
<ul class="navbar-nav mr-auto mt-md-0">
<!-- This is -->
<li class="nav-item"> <a class="nav-link nav-toggler hidden-md-up text-muted waves-effect waves-dark" href="javascript:void(0)"><i class="mdi mdi-menu"></i></a> </li>
<!-- ============================================================== -->
<!-- Comment -->
<!-- ============================================================== -->
<!-- ============================================================== -->
<!-- End Messages -->
<!-- ============================================================== -->
<!-- ============================================================== -->
<!-- Messages -->
<!-- ============================================================== -->
<!-- ============================================================== -->
<!-- End Messages -->
<!-- ============================================================== -->
</ul>
<!-- ============================================================== -->
<!-- User profile and search -->
<!-- ============================================================== -->
<ul class="navbar-nav my-lg-0">
<!-- ============================================================== -->
<!-- Search -->
<!-- ============================================================== -->
<!-- ============================================================== -->
<!-- Profile -->
<!-- ============================================================== -->
<?php if (!$isIPhone): ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle text-muted waves-effect waves-dark" href="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?= htmlspecialchars($getuser['fname'] ?? '') ?></a>
<div class="dropdown-menu dropdown-menu-right scale-up">
<ul class="dropdown-user">
<li role="separator" class="divider"></li>
<li><a href="/newmain.php"><i class="fa fa-lightbulb-o"></i> View Main Page</a></li>
<li role="separator" class="divider"></li>
<li>
<form action="/logout.php" method="post" style="margin:0; padding:0;">
<input type="hidden" name="k" value="<?= htmlspecialchars($_SESSION['ajaxkey'] ?? '') ?>">
<button type="submit" style="background:none;border:none;padding:0;margin:0;color:inherit;cursor:pointer;">
<i class="fa fa-power-off"></i> Logout
</button>
</form>
</li>
<?php if (isset($getuser['id']) && $getuser['id'] == 26): ?>
<li> <a href="https://cloudadmin.broadwayworld.com/editcol333_ck_cdh_search.cfm?id=2079188&ModPagespeed=off&saved=on" class="waves-effect"> <i data-icon="G" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">What's New </span></a>
</li>
<?php endif; ?>
</ul>
</div>
</li>
</ul>
<?php endif; ?>
</div>
</nav>
</header>
<!-- ============================================================== -->
<!-- End Topbar header -->
<!-- ============================================================== -->
<!-- ============================================================== -->
<!-- Left Sidebar - style you can find in sidebar.scss -->
<!-- ============================================================== -->
<aside class="left-sidebar">
<!-- Sidebar scroll-->
<div class="scroll-sidebar">
<!-- Sidebar navigation-->
<nav class="sidebar-nav" style="margin: auto;
<?php if (!$isIPhone && stripos($userAgent, 'android') === false): ?> width: 46%;<?php endif; ?>">
<ul id="sidebarnav">
<li> <a class="has-arrow waves-effect waves-dark" href="/index.php" aria-expanded="false"><i class="mdi mdi-gauge"></i><span class="hide-menu">
Dashboard</span></a>
</li>
<li> <a href="/programstart.php" class="waves-effect"><i data-icon="m" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Create a Program </span></a>
</li>
<li> <a href="/newmain.php" class="waves-effect"> <i data-icon="o" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Home </span></a>
</li>
<li> <a href="/newmain-whatsnew.php" class="waves-effect"> <i data-icon="G" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">What's New </span></a>
</li>
<?php
/* ====================================================================
MOBILE SIDEBAR (iPhone / Android only, with programid)
==================================================================== */
if ($programid !== null && $isMobile):
// --- Count badges via prepared statements ---
$pdo = db_read();
// Cast count (typer=1)
$stmtCastCount1 = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.cast WHERE programid = :pid AND typer = 1");
$stmtCastCount1->execute([':pid' => $programid]);
$castCount1 = (int)$stmtCastCount1->fetchColumn();
// Cast count (typer=2 — Creative Team)
$stmtCastCount2 = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.cast WHERE programid = :pid AND typer = 2");
$stmtCastCount2->execute([':pid' => $programid]);
$castCount2 = (int)$stmtCastCount2->fetchColumn();
// Multimedia photos (typer=1)
$stmtPhotoCount = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.multimedia WHERE programid = :pid AND typer = 1");
$stmtPhotoCount->execute([':pid' => $programid]);
$photoCount = (int)$stmtPhotoCount->fetchColumn();
// Multimedia videos (typer=2)
$stmtVideoCount = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.multimedia WHERE programid = :pid AND typer = 2");
$stmtVideoCount->execute([':pid' => $programid]);
$videoCount = (int)$stmtVideoCount->fetchColumn();
// Song list length
$stmtSongLen = $pdo->prepare("SELECT length(songlist) AS counter FROM stagemag.productions WHERE id = :pid");
$stmtSongLen->execute([':pid' => $programid]);
$songLen = (int)$stmtSongLen->fetchColumn();
// Opening note length
$stmtOpenLen = $pdo->prepare("SELECT length(openingnote) AS counter FROM stagemag.productions WHERE id = :pid");
$stmtOpenLen->execute([':pid' => $programid]);
$openLen = (int)$stmtOpenLen->fetchColumn();
// Closing note length
$stmtCloseLen = $pdo->prepare("SELECT length(closingnote) AS counter FROM stagemag.productions WHERE id = :pid");
$stmtCloseLen->execute([':pid' => $programid]);
$closeLen = (int)$stmtCloseLen->fetchColumn();
// Donor list length
$stmtDonorLen = $pdo->prepare("SELECT length(donorlist) AS counter FROM stagemag.productions WHERE id = :pid");
$stmtDonorLen->execute([':pid' => $programid]);
$donorLen = (int)$stmtDonorLen->fetchColumn();
// Ads count
$stmtAdsCount = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.ads WHERE programid = :pid");
$stmtAdsCount->execute([':pid' => $programid]);
$adsCount = (int)$stmtAdsCount->fetchColumn();
// Articles count
$stmtArticlesCount = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.articles WHERE programid = :pid");
$stmtArticlesCount->execute([':pid' => $programid]);
$articlesCount = (int)$stmtArticlesCount->fetchColumn();
// At This Performance — fetch production row
$stmtDupe = $pdo->prepare("SELECT * FROM stagemag.productions WHERE id = :pid");
$stmtDupe->execute([':pid' => $programid]);
$getdupe = $stmtDupe->fetch();
$todaydate = date('Y-m-d');
$atThisShowBadge = true;
if ($getdupe
&& ($getdupe['atthisperformance'] ?? '') !== ''
&& ($getdupe['atthisperformancestart'] ?? '') >= $todaydate
&& ($getdupe['atthisperformanceend'] ?? '') >= $todaydate
) {
$atThisShowBadge = false;
}
// Guestbook flag
$stmtGB = $pdo->prepare("SELECT guestbook FROM stagemag.productions WHERE id = :pid");
$stmtGB->execute([':pid' => $programid]);
$guestbookFlag = (int)$stmtGB->fetchColumn();
?>
<div class="row">
<div class="col-lg-3 col-xlg-2 col-md-4">
<div class="stickyside">
<div class="list-group" id="top-menu">
<a href="https://stagemag.broadwayworld.com/programedit.php?programid=<?= $programid ?>" class="list-group-item active">Edit</a>
<a href="https://stagemag.broadwayworld.com/programedit.php?programid=<?= $programid ?>" class="list-group-item">Settings
<a href="programedit-titlepage.php?programid=<?= $programid ?>&typer=1" class="list-group-item">Title Page
<a href="programedit-cast.php?programid=<?= $programid ?>&typer=1" class="list-group-item">Cast
<?php if ($castCount1 === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?></a>
<a href="programedit-cast.php?programid=<?= $programid ?>&typer=2" class="list-group-item"> Creative Team
<?php if ($castCount2 === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-multimedia.php?programid=<?= $programid ?>&typer=1" class="list-group-item">Photos
<?php if ($photoCount === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-multimedia.php?programid=<?= $programid ?>&typer=2" class="list-group-item">Videos <?php if ($videoCount === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?></a>
<a href="programedit-text.php?programid=<?= $programid ?>&typer=3" class="list-group-item"> Song List
<?php if ($songLen < 10): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-text.php?programid=<?= $programid ?>&typer=1" class="list-group-item"> Opening Pages
<?php if ($openLen < 10): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-text.php?programid=<?= $programid ?>&typer=2" class="list-group-item"> Closing Pages
<?php if ($closeLen < 10): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-text.php?programid=<?= $programid ?>&typer=4" class="list-group-item"> Donor List
<?php if ($donorLen < 10): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-ads.php?programid=<?= $programid ?>" class="list-group-item">Ads
<?php if ($adsCount === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-articles.php?programid=<?= $programid ?>" class="list-group-item"> Articles
<?php if ($articlesCount === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-atthisperformance.php?programid=<?= $programid ?>" class="list-group-item"> At This Show
<?php if ($atThisShowBadge): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-pages.php?programid=<?= $programid ?>" class="list-group-item"> Modify Page Titles
</a>
<a href="programedit-extrapages.php?programid=<?= $programid ?>" class="list-group-item"> Add Extra Pages
</a>
<a href="programedit-features.php?programid=<?= $programid ?>" class="list-group-item"> Interactive Options
</div>
<br>
<div class="list-group" id="top-menu">
<a href="" class="list-group-item active">Preview Program</a>
<a href="preview-program.php?programid=<?= $programid ?>" class="list-group-item" >Classic</a>
<a href="preview-program.php?programid=<?= $programid ?>&magtype=2" class="list-group-item">Modern</a>
</div>
<br>
<div class="list-group" id="top-menu">
<a href="" class="list-group-item active">Share Program</a>
<a href="programedit-share.php?programid=<?= $programid ?>" class="list-group-item" >Share Program</a>
<a href="programedit-sharepdf.php?programid=<?= $programid ?>" class="list-group-item" >PDF Program <font color="#b20223">BETA</font></a>
<a href="programedit-stats.php?programid=<?= $programid ?>" class="list-group-item">Stats/Subscribers</a>
<a href="programedit-users.php?programid=<?= $programid ?>" class="list-group-item">Add Additional Users</a>
<?php if ($guestbookFlag == 1): ?>
<a href="programedit-guestbook.php?programid=<?= $programid ?>" class="list-group-item">Moderate Guestbook</a>
<?php endif; ?>
</div>
</div>
</div>
<?php endif; /* end mobile sidebar */ ?>
</ul>
</nav>
<!-- End Sidebar navigation -->
</div>
<!-- End Sidebar scroll-->
</aside>
<!-- ============================================================== -->
<!-- End Left Sidebar - style you can find in sidebar.scss -->
<!-- ============================================================== -->
<!-- ============================================================== -->
<!-- Page wrapper -->
<!-- ============================================================== -->
<div class="page-wrapper">
<div class="container-fluid">
<script src="https://cloudimages.broadwayworld.com/theme/assets/plugins/bootstrap/js/bootstrap.min.js"></script>
<!-- slimscrollbar scrollbar JavaScript /theme/horizontal/js/jquery.slimscroll.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-slimScroll/1.3.8/jquery.slimscroll.min.js"></script>
<!--Wave Effects -->
<script src="https://cloudimages.broadwayworld.com/theme/horizontal/js/waves.js"></script>
<!--Menu sidebar -->
<script src="https://cloudimages.broadwayworld.com/theme/horizontal/js/sidebarmenu.js"></script>
<!--stickey kit -->
<script src="https://cloudimages.broadwayworld.com/theme/assets/plugins/sticky-kit-master/dist/sticky-kit.min.js"></script>
<!--Custom JavaScript -->
<script src="https://cloudimages.broadwayworld.com/theme/horizontal/js/custom.min.js"></script>
<!-- ============================================================== -->
<?php
/* ====================================================================
DESKTOP SIDEBAR (not iPhone, not Android, with numeric programid)
==================================================================== */
if ($programid !== null && !$isMobile && is_numeric($_GET['programid'] ?? '')):
$pdo = db_read();
// --- Count badges via prepared statements ---
// Cast count (typer=1)
$stmtCastCount1 = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.cast WHERE programid = :pid AND typer = 1");
$stmtCastCount1->execute([':pid' => $programid]);
$dCastCount1 = (int)$stmtCastCount1->fetchColumn();
// Cast count (typer=2)
$stmtCastCount2 = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.cast WHERE programid = :pid AND typer = 2");
$stmtCastCount2->execute([':pid' => $programid]);
$dCastCount2 = (int)$stmtCastCount2->fetchColumn();
// Photos (typer=1)
$stmtPhotoCount = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.multimedia WHERE programid = :pid AND typer = 1");
$stmtPhotoCount->execute([':pid' => $programid]);
$dPhotoCount = (int)$stmtPhotoCount->fetchColumn();
// Videos (typer=2)
$stmtVideoCount = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.multimedia WHERE programid = :pid AND typer = 2");
$stmtVideoCount->execute([':pid' => $programid]);
$dVideoCount = (int)$stmtVideoCount->fetchColumn();
// Song list length
$stmtSongLen = $pdo->prepare("SELECT length(songlist) AS counter FROM stagemag.productions WHERE id = :pid");
$stmtSongLen->execute([':pid' => $programid]);
$dSongLen = (int)$stmtSongLen->fetchColumn();
// Opening note length
$stmtOpenLen = $pdo->prepare("SELECT length(openingnote) AS counter FROM stagemag.productions WHERE id = :pid");
$stmtOpenLen->execute([':pid' => $programid]);
$dOpenLen = (int)$stmtOpenLen->fetchColumn();
// Closing note length
$stmtCloseLen = $pdo->prepare("SELECT length(closingnote) AS counter FROM stagemag.productions WHERE id = :pid");
$stmtCloseLen->execute([':pid' => $programid]);
$dCloseLen = (int)$stmtCloseLen->fetchColumn();
// Donor list length
$stmtDonorLen = $pdo->prepare("SELECT length(donorlist) AS counter FROM stagemag.productions WHERE id = :pid");
$stmtDonorLen->execute([':pid' => $programid]);
$dDonorLen = (int)$stmtDonorLen->fetchColumn();
// Ads count
$stmtAdsCount = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.ads WHERE programid = :pid");
$stmtAdsCount->execute([':pid' => $programid]);
$dAdsCount = (int)$stmtAdsCount->fetchColumn();
// Articles count
$stmtArticlesCount = $pdo->prepare("SELECT count(id) AS counter FROM stagemag.articles WHERE programid = :pid");
$stmtArticlesCount->execute([':pid' => $programid]);
$dArticlesCount = (int)$stmtArticlesCount->fetchColumn();
// At This Performance — fetch production row
$stmtDupe = $pdo->prepare("SELECT * FROM stagemag.productions WHERE id = :pid");
$stmtDupe->execute([':pid' => $programid]);
$getdupe = $stmtDupe->fetch();
$todaydate = date('Y-m-d');
$dAtThisShowBadge = true;
if ($getdupe
&& ($getdupe['atthisperformance'] ?? '') !== ''
&& ($getdupe['atthisperformancestart'] ?? '') >= $todaydate
&& ($getdupe['atthisperformanceend'] ?? '') >= $todaydate
) {
$dAtThisShowBadge = false;
}
// Regional show listing check
$stmtRegional = $pdo->prepare("SELECT id FROM amazonrds.regionalshows WHERE stagemagid = :pid");
$stmtRegional->execute([':pid' => $programid]);
$regionalCount = $stmtRegional->rowCount();
// Guestbook flag
$stmtGB = $pdo->prepare("SELECT guestbook FROM stagemag.productions WHERE id = :pid");
$stmtGB->execute([':pid' => $programid]);
$dGuestbookFlag = (int)$stmtGB->fetchColumn();
?>
<div class="row">
<div class="col-lg-3 col-xlg-2 col-md-4" style=" padding: 0px!important;">
<div class="stickyside">
<div class="list-group" id="top-menu">
<a href="https://stagemag.broadwayworld.com/programedit.php?programid=<?= $programid ?>" class="list-group-item active">Edit</a>
<a href="https://stagemag.broadwayworld.com/programedit.php?programid=<?= $programid ?>" class="list-group-item">Settings
<a href="programedit-titlepage.php?programid=<?= $programid ?>&typer=1" class="list-group-item">Title Page
<a href="programedit-cast.php?programid=<?= $programid ?>&typer=1" class="list-group-item">Cast
<?php if ($dCastCount1 === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?></a>
<a href="programedit-cast.php?programid=<?= $programid ?>&typer=2" class="list-group-item"> Creative Team
<?php if ($dCastCount2 === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-multimedia.php?programid=<?= $programid ?>&typer=1" class="list-group-item">Photos
<?php if ($dPhotoCount === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-multimedia.php?programid=<?= $programid ?>&typer=2" class="list-group-item">Videos <?php if ($dVideoCount === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?></a>
<a href="programedit-text.php?programid=<?= $programid ?>&typer=3" class="list-group-item"> Song List
<?php if ($dSongLen < 10): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-text.php?programid=<?= $programid ?>&typer=1" class="list-group-item"> Opening Pages
<?php if ($dOpenLen < 10): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-text.php?programid=<?= $programid ?>&typer=2" class="list-group-item"> Closing Pages
<?php if ($dCloseLen < 10): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-text.php?programid=<?= $programid ?>&typer=4" class="list-group-item"> Donor List
<?php if ($dDonorLen < 10): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-ads.php?programid=<?= $programid ?>" class="list-group-item">Ads
<?php if ($dAdsCount === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-articles.php?programid=<?= $programid ?>" class="list-group-item"> Articles
<?php if ($dArticlesCount === 0): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-atthisperformance.php?programid=<?= $programid ?>" class="list-group-item"> At This Show
<?php if ($dAtThisShowBadge): ?>
<span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">+</span><?php endif; ?>
</a>
<a href="programedit-pages.php?programid=<?= $programid ?>" class="list-group-item"> Modify Page Titles
</a>
<a href="programedit-extrapages.php?programid=<?= $programid ?>" class="list-group-item"> Add Extra Pages
</a>
<a href="programedit-features.php?programid=<?= $programid ?>" class="list-group-item"> Interactive Options
</a>
</div>
<br>
<div class="list-group" id="top-menu">
<a href="" class="list-group-item active">Preview Program</a>
<?php if ($getdupe): ?>
<a href="https://stagemag.broadwayworld.com/modern/<?= htmlspecialchars($getdupe['seo_friendly'] ?? '') ?>" target="_new" class="list-group-item">Modern</a>
<?php endif; ?>
<a href="preview-program.php?programid=<?= $programid ?>&magtype=2" class="list-group-item">Classic</a>
</div>
<br>
<div class="list-group" id="top-menu">
<a href="" class="list-group-item active">Share Program</a>
<a href="programedit-share.php?programid=<?= $programid ?>" class="list-group-item" >Share Program</a>
<a href="programedit-savethedate.php?programid=<?= $programid ?>" class="list-group-item">Show Promo Kit <span class="label label-rouded label-custom pull-right" style="background-color:#b20223;">NEW</span></a>
<a href="programedit-sharepdf.php?programid=<?= $programid ?>" class="list-group-item" >PDF Program <span class="label label-rouded label-custom pull-right" style="background-color:#5b6abf;">BETA</span></a>
<a href="programedit-stats.php?programid=<?= $programid ?>" class="list-group-item">Stats/Subscribers</a>
<a href="programedit-users.php?programid=<?= $programid ?>" class="list-group-item">Add Users</a>
<?php if ($regionalCount === 0): ?>
<a href="/create-to-listing.php?createid=<?= $programid ?>" class="list-group-item">Add BWW Listing</a>
<?php endif; ?>
<?php if ($dGuestbookFlag == 1): ?>
<a href="programedit-guestbook.php?programid=<?= $programid ?>" class="list-group-item">Moderate Guestbook</a>
<?php endif; ?>
</div>
</div>
</div>
<?php endif; /* end desktop sidebar */ ?>