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:
SamiAhmed7777
2025-10-26 01:42:31 -07:00
parent 0b7e2d0a5b
commit d22b3e1c0d
90 changed files with 22329 additions and 268 deletions

View File

@@ -18,13 +18,13 @@ defined('_ISVALID') or header('Location: /error');
class VArraySection
{
/* remove from array based on key */
public function arrayRemoveKey()
public static function arrayRemoveKey()
{
$args = func_get_args();
return array_diff_key($args[0], array_flip(array_slice($args, 1)));
}
/* multi array pop */
public function array_mpop($array, $iterate)
public static function array_mpop($array, $iterate)
{
if (!is_array($array) && is_int($iterate)) {
return false;
@@ -37,7 +37,7 @@ class VArraySection
return $array;
}
/* more sanitized forms and fields */
public function getArray($section)
public static function getArray($section)
{
global $class_filter, $cfg;
@@ -603,7 +603,7 @@ class VArraySection
$entryid = (int) $_POST['hc_id'];
$account_new_pack = "account_new_pack_" . $entryid;
$_array = array(
"usr_user" => (($cfg['username_format'] == 'strict' and VUserinfo::isValidUsername($_POST['account_new_username'])) ? $class_filter->clr_str($_POST['account_new_username']) : ($cfg['username_format'] == 'loose' and VUserinfo::isValidUsername($_POST['account_new_username'])) ? VUserinfo::clearString($_POST['account_new_username']) : null),
"usr_user" => (($cfg['username_format'] == 'strict' and VUserinfo::isValidUsername($_POST['account_new_username'])) ? $class_filter->clr_str($_POST['account_new_username']) : (($cfg['username_format'] == 'loose' and VUserinfo::isValidUsername($_POST['account_new_username'])) ? VUserinfo::clearString($_POST['account_new_username']) : null)),
"usr_password" => $_POST['account_new_password'],
"usr_password_conf" => $_POST['account_new_password_conf'],
"usr_email" => $class_filter->clr_str($_POST['frontend_global_email']),