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

@@ -213,7 +213,7 @@ class VSignup
}
/* signup form */
public function processForm($allowedFields, $requiredFields)
public static function processForm($allowedFields, $requiredFields)
{
global $cfg, $language, $class_filter;
@@ -256,7 +256,7 @@ class VSignup
return $error_message;
}
/* define user folders */
public function getUserFolders($usr_key)
public static function getUserFolders($usr_key)
{
global $cfg;
@@ -302,7 +302,7 @@ class VSignup
return array($dir[0], $dir[1]);
}
/* create user folders */
public function createUserFolders($usr_key)
public static function createUserFolders($usr_key)
{
global $cfg;
@@ -334,7 +334,7 @@ class VSignup
copy($cfg['profile_images_dir'] . '/default.jpg', $cfg['profile_images_dir'] . '/' . $usr_key . '/' . $usr_key . '.jpg');
}
/* validating registration account */
public function processAccount($fields = false)
public static function processAccount($fields = false)
{
global $db, $cfg, $class_filter, $class_login, $class_redirect, $class_database;
@@ -473,6 +473,82 @@ class VSignup
"ch_cfg" => $ch_cfg,
"ch_pfields" => $ch_pfields,
"ch_rownum" => $ch_rownum,
"live_key" => '',
"old_usr_key" => 0,
"old_key" => '',
"oauth_provider" => '',
"oauth_uid" => '',
"oauth_password" => 0,
"usr_live" => 0,
"usr_b_count" => 0,
"usr_featured" => 0,
"usr_promoted" => 0,
"usr_partner" => 0,
"usr_affiliate" => 0,
"affiliate_pay_custom" => 0,
"usr_sub_share" => 0,
"usr_sub_perc" => 50,
"usr_sub_currency" => 'USD',
"usr_free_sub" => 0,
"usr_weekupdates" => 0,
"usr_deleted" => 0,
"usr_followcount" => 0,
"usr_subcount" => 0,
"usr_tokencount" => 0,
"usr_profileinc" => 0,
"usr_mail_filecomment" => 1,
"usr_mail_chancomment" => 1,
"usr_mail_privmessage" => 1,
"usr_mail_friendinv" => 1,
"usr_mail_chansub" => 1,
"usr_mail_chanfollow" => 1,
"partner_date" => '0000-00-00 00:00:00',
"affiliate_date" => '0000-00-00 00:00:00',
"affiliate_custom" => '',
"affiliate_email" => '',
"affiliate_badge" => '',
"affiliate_maps_key" => '',
"usr_sub_email" => '',
"usr_role" => '',
"usr_logins" => 0,
"usr_lastlogin" => '0000-00-00 00:00:00',
"usr_menuaccess" => '',
"usr_description" => '',
"usr_website" => '',
"usr_phone" => '',
"usr_fax" => '',
"usr_town" => '',
"usr_city" => '',
"usr_zip" => '',
"usr_relation" => '',
"usr_showage" => 0,
"usr_occupations" => '',
"usr_companies" => '',
"usr_schools" => '',
"usr_interests" => '',
"usr_movies" => '',
"usr_music" => '',
"usr_books" => '',
"usr_del_reason" => '',
"fb_id" => 0,
"ch_title" => '',
"ch_descr" => '',
"ch_tags" => '',
"ch_influences" => '',
"ch_style" => '',
"ch_type" => 1,
"ch_views" => 0,
"home_cfg" => '',
"ch_lastview" => date("Y-m-d"),
"ch_photos" => '',
"ch_photos_nr" => 0,
"usr_fname" => '',
"usr_lname" => '',
"ch_links" => '',
"ch_custom_fields" => '',
"ch_positions" => '',
"ch_channels" => '',
"chat_temp" => '',
);
if ($fields) {
$ins_array1['oauth_provider'] = $fields['oauth_provider'];
@@ -552,7 +628,7 @@ class VSignup
}
/* set account verified */
public function verifyAccount()
public static function verifyAccount()
{
global $db;
@@ -566,11 +642,11 @@ class VSignup
}
/* signup form sessions start */
public function formSessionInit()
public static function formSessionInit()
{
global $cfg, $class_filter, $language;
$signup_username = ($cfg['username_format'] == 'strict' and VUserinfo::isValidUsername($_POST['frontend_signin_username'])) ? $class_filter->clr_str($_POST['frontend_signin_username']) : ($cfg['username_format'] == 'loose' and VUserinfo::isValidUsername($_POST['frontend_signin_username'])) ? VUserinfo::clearString($_POST['frontend_signin_username']) : null;
$signup_username = (($cfg['username_format'] == 'strict' and VUserinfo::isValidUsername($_POST['frontend_signin_username'])) ? $class_filter->clr_str($_POST['frontend_signin_username']) : (($cfg['username_format'] == 'loose' and VUserinfo::isValidUsername($_POST['frontend_signin_username'])) ? VUserinfo::clearString($_POST['frontend_signin_username']) : null));
$signup_pack = $cfg['paid_memberships'] == 1 ? $class_filter->clr_str($_POST['frontend_membership_type_sel']) : null;
$_SESSION['signup_username'] = $signup_username;
@@ -578,7 +654,7 @@ class VSignup
return true;
}
/* signup form sessions reset */
public function formSessionReset()
public static function formSessionReset()
{
$_SESSION['signup_username'] = null;
$_SESSION['signup_pack'] = null;