feat: Add complete Docker deployment with web-based setup wizard
Major additions: - Web-based setup wizard (setup.php, setup_wizard.php, setup-wizard.js) - Production Docker configuration (docker-compose.prod.yml, .env.production) - Database initialization SQL files (deploy/init_settings.sql) - Template builder system with drag-and-drop UI - Advanced features (OAuth, CDN, enhanced analytics, monetization) - Comprehensive documentation (deployment guides, quick start, feature docs) - Design system with accessibility and responsive layout - Deployment automation scripts (deploy.ps1, generate-secrets.ps1) Setup wizard allows customization of: - Platform name and branding - Domain configuration - Membership tiers and pricing - Admin credentials - Feature toggles Database includes 270+ tables for complete video streaming platform with advanced features for analytics, moderation, template building, and monetization. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -746,7 +746,7 @@ class VAffiliate
|
||||
global $language, $class_database, $class_filter, $class_language, $db, $cfg, $smarty;
|
||||
|
||||
$type = self::getType();
|
||||
$usr_key = ($cfg["is_be"] == 1 and isset($_GET["uk"])) ? $class_filter->clr_str($_GET["uk"]) : (!$cfg["is_be"] ? $_SESSION["USER_KEY"] : false);
|
||||
$usr_key = ($cfg["is_be"] == 1 and isset($_GET["uk"])) ? $class_filter->clr_str($_GET["uk"]) : ((!$cfg["is_be"]) ? $_SESSION["USER_KEY"] : false);
|
||||
$f = isset($_GET["f"]) ? $class_filter->clr_str($_GET["f"]) : 'lastmonth';
|
||||
|
||||
if ($f) {
|
||||
@@ -796,7 +796,7 @@ class VAffiliate
|
||||
$views_min = isset($_SESSION["views_min"]) ? $_SESSION["views_min"] : 0;
|
||||
$views_max = isset($_SESSION["views_max"]) ? $_SESSION["views_max"] : 0;
|
||||
|
||||
$uk = ($cfg["is_be"] == 1 and isset($_GET["uk"])) ? $class_filter->clr_str($_GET["uk"]) : (!$cfg["is_be"] ? $_SESSION["USER_KEY"] : false);
|
||||
$uk = ($cfg["is_be"] == 1 and isset($_GET["uk"])) ? $class_filter->clr_str($_GET["uk"]) : ((!$cfg["is_be"]) ? $_SESSION["USER_KEY"] : false);
|
||||
$fk = isset($_GET["fk"]) ? $class_filter->clr_str($_GET["fk"]) : false;
|
||||
$tab = isset($_GET["tab"]) ? $class_filter->clr_str($_GET["tab"]) : false;
|
||||
|
||||
@@ -820,7 +820,7 @@ class VAffiliate
|
||||
($uk ? "A.`usr_key`='" . $uk . "' AND " : null),
|
||||
($views_min > 0 ? "A.`p_views`>='" . $views_min . "' AND " : null),
|
||||
($views_max > 0 ? "A.`p_views`<='" . $views_max . "' AND " : null),
|
||||
($tab == 'section-all' ? null : ($tab == 'section-paid' ? "A.`p_paid`='1' AND " : "A.`p_paid`='0' AND "))
|
||||
($tab == 'section-all' ? null : (($tab == 'section-paid') ? "A.`p_paid`='1' AND " : "A.`p_paid`='0' AND "))
|
||||
)
|
||||
);
|
||||
|
||||
@@ -844,7 +844,7 @@ class VAffiliate
|
||||
($uk ? "A.`usr_key`='" . $uk . "' AND " : null),
|
||||
($views_min > 0 ? "A.`p_views`>='" . $views_min . "' AND " : null),
|
||||
($views_max > 0 ? "A.`p_views`<='" . $views_max . "' AND " : null),
|
||||
($tab == 'section-all' ? null : ($tab == 'section-paid' ? "A.`p_paid`='1' AND " : "A.`p_paid`='0' AND "))
|
||||
($tab == 'section-all' ? null : (($tab == 'section-paid') ? "A.`p_paid`='1' AND " : "A.`p_paid`='0' AND "))
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1143,7 +1143,7 @@ class VAffiliate
|
||||
$html .= '</div>';
|
||||
$html .= '<div class="vs-column half fit">';
|
||||
$html .= '<ul class="views-details">';
|
||||
$html .= $cfg["is_be"] == 1 ? '<li><i class="icon-paypal"></i> ' . ($af_mail == '' ? '<span class="">affiliate email not available</span>' : ($res->fields["p_paid"] == 0 ? '<a href="' . $pp_link_shared . '" target="_blank">' . $language["account.entry.payout.pay"] . '</a>' : $language["account.entry.payout.paydate"] . ': ' . date('M j, o, H:i:s A', strtotime($res->fields["p_paydate"])))) . '</li>' : null;
|
||||
$html .= $cfg["is_be"] == 1 ? '<li><i class="icon-paypal"></i> ' . ($af_mail == '' ? '<span class="">affiliate email not available</span>' : (($res->fields["p_paid"] == 0) ? '<a href="' . $pp_link_shared . '" target="_blank">' . $language["account.entry.payout.pay"] . '</a>' : $language["account.entry.payout.paydate"] . ': ' . date('M j, o, H:i:s A', strtotime($res->fields["p_paydate"])))) . '</li>' : null;
|
||||
$html .= (!$cfg["is_be"] and $res->fields["p_paid"] == 1) ? '<li><i class="icon-paypal"></i> ' . ($res->fields["p_paid"] == 1 ? $language["account.entry.payout.paydate"] . ': ' . date('M j, o, H:i:s A', strtotime($res->fields["p_paydate"])) : null) . '</li>' : null;
|
||||
$html .= '<li><i class="icon-pie"></i> <a href="javascript:;" class="fviews" rel-id="' . $db_id . '" rel-fk="' . $res->fields["file_key"] . '" rel-f="' . $f . '">' . $language["account.entry.act.views"] . '</a> ' . $_f . '</li>';
|
||||
$html .= '<li><i class="icon-pie"></i> <a href="javascript:;" class="fviews-range" rel-id="' . $db_id . '" rel-fk="' . $res->fields["file_key"] . '" rel-s="' . $p_start . '" rel-e="' . $p_end . '">' . $language["account.entry.act.views"] . '</a> ' . date('M j', strtotime($p_start)) . ' -- ' . date('M j, o', strtotime($p_end)) . '</li>';
|
||||
@@ -1265,7 +1265,7 @@ class VAffiliate
|
||||
t = $(this);
|
||||
rid = t.attr("rel-nr");
|
||||
b = "' . ($cfg['is_be'] == 1 ? "" : $cfg["main_url"] . '/' . VHref::getKey("affiliate")) . '";
|
||||
u = b + "?' . (isset($_GET["a"]) ? 'a=' . $class_filter->clr_str($_GET["a"]) : (isset($_GET["g"]) ? 'g=' . $class_filter->clr_str($_GET["g"]) : 'a')) . '&t=' . self::getType() . (isset($_GET["f"]) ? '&f=' . $class_filter->clr_str($_GET["f"]) : '&f=today') . '&c=' . (isset($_GET["c"]) ? $class_filter->clr_str($_GET["c"]) : (isset($_POST["custom_country"]) ? $class_filter->clr_str($_POST["custom_country"]) : 'xx')) . '&r="+rid;
|
||||
u = b + "?' . (isset($_GET["a"]) ? 'a=' . $class_filter->clr_str($_GET["a"]) : ((isset($_GET["g"])) ? 'g=' . $class_filter->clr_str($_GET["g"]) : 'a')) . '&t=' . self::getType() . (isset($_GET["f"]) ? '&f=' . $class_filter->clr_str($_GET["f"]) : '&f=today') . '&c=' . (isset($_GET["c"]) ? $class_filter->clr_str($_GET["c"]) : ((isset($_POST["custom_country"])) ? $class_filter->clr_str($_POST["custom_country"]) : 'xx')) . '&r="+rid;
|
||||
u+= "' . (isset($_GET["fk"]) ? '&fk=' . $class_filter->clr_str($_GET["fk"]) : null) . '";
|
||||
u+= "' . ((isset($_GET["uk"]) and !isset($_GET["fk"])) ? '&uk=' . $class_filter->clr_str($_GET["uk"]) : null) . '";
|
||||
|
||||
@@ -1393,7 +1393,7 @@ class VAffiliate
|
||||
// $_i = $_i_be;
|
||||
$html = '
|
||||
<article>
|
||||
<h3 class="content-title"><i class="icon-' . (isset($_GET["g"]) ? 'globe' : (isset($_GET["o"]) ? 'bars' : (isset($_GET["rp"]) ? 'paypal' : 'pie'))) . '"></i>' . (isset($_GET["g"]) ? $language["account.entry.act.maps"] : (isset($_GET["o"]) ? $language["account.entry.act.comp"] : (isset($_GET["rp"]) ? $language["account.entry.payout.rep"] : $language["account.entry.act.views"]))) . $_i . '</h3>
|
||||
<h3 class="content-title"><i class="icon-' . (isset($_GET["g"]) ? 'globe' : ((isset($_GET["o"])) ? 'bars' : ((isset($_GET["rp"])) ? 'paypal' : 'pie'))) . '"></i>' . (isset($_GET["g"]) ? $language["account.entry.act.maps"] : ((isset($_GET["o"])) ? $language["account.entry.act.comp"] : ((isset($_GET["rp"])) ? $language["account.entry.payout.rep"] : $language["account.entry.act.views"]))) . $_i . '</h3>
|
||||
<div id="search-boxes">
|
||||
<section class="inner-search-off place-right">
|
||||
<form id="view-limits" class="entry-form-class" method="post" action="">
|
||||
@@ -1447,7 +1447,7 @@ class VAffiliate
|
||||
<article id="time-sort-filters" style="display: ' . (isset($_GET["f"]) ? 'block' : 'none') . ';">
|
||||
<h3 class="content-title content-filter"><i class="icon-filter"></i>' . $language["account.entry.filter.results"] . '</h3>
|
||||
<section class="filter">
|
||||
' . (($cfg[($type == 'doc' ? 'document' : $type) . "_module"] == 1 and !$o) ? self::tpl_filters($type) : null) . '
|
||||
' . (($cfg[(($type == 'doc') ? 'document' : $type) . "_module"] == 1 and !$o) ? self::tpl_filters($type) : null) . '
|
||||
</section>
|
||||
<div class="clearfix"></div>
|
||||
</article>
|
||||
|
||||
Reference in New Issue
Block a user