d22b3e1c0d
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>
63 lines
2.8 KiB
PHP
63 lines
2.8 KiB
PHP
<?php
|
|
/*******************************************************************************************************************
|
|
| Software Name : EasyStream
|
|
| Software Description : High End YouTube Clone Script with Videos, Shorts, Streams, Images, Audio, Documents, Blogs
|
|
| Software Author : (c) Sami Ahmed
|
|
|*******************************************************************************************************************
|
|
|
|
|
|*******************************************************************************************************************
|
|
| This source file is subject to the EasyStream Proprietary License Agreement.
|
|
|
|
|
| By using this software, you acknowledge having read this Agreement and agree to be bound thereby.
|
|
|*******************************************************************************************************************
|
|
| Copyright (c) 2025 Sami Ahmed. All rights reserved.
|
|
|*******************************************************************************************************************/
|
|
|
|
defined('_ISVALID') or header('Location: /error');
|
|
|
|
class VForm
|
|
{
|
|
/* check for empty fields */
|
|
public static function checkEmptyFields($allowedFields, $requiredFields, $replace = '')
|
|
{
|
|
global $language, $smarty, $cfg;
|
|
|
|
if (is_array($replace)) {
|
|
if ($cfg['paid_memberships'] == 0) {
|
|
unset($replace['frontend_membership_type']);
|
|
}
|
|
foreach ($replace as $rv) {
|
|
$pv = $_POST[$rv];
|
|
$lang = $language[str_replace('_', '.', $rv)];
|
|
|
|
if (str_replace($lang, '', $pv) == '' or str_replace($lang . ': ', '', $pv) == '') {
|
|
$_POST[$rv] = '';
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_array($allowedFields)) {
|
|
foreach ($_POST as $key => $value) {
|
|
if (in_array($key, $allowedFields)) {
|
|
if (in_array($key, $requiredFields) and ($value == '' or $value == '---')) {
|
|
$error_message = '<span class="bold">' . $language['notif.error.required.field'] . '</span> <span class="bold underlined">' . $language[str_replace('_', '.', $key)] . ' </span>';
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $error_message;
|
|
}
|
|
/* clear tags */
|
|
public static function clearTag($tag, $url = '')
|
|
{
|
|
$rep = $url == '' ? " " : "-";
|
|
$clear = array("~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "+", "`", "=", "[", "]", "\\", "{", "}", "|", ";", "'", ".", ",", "/", ":", '"', "<", ">", "?", "_", "-", "\n", "\r", "\t");
|
|
if ($url == 1) {
|
|
$tag = html_entity_decode($tag, ENT_QUOTES, 'UTF-8');
|
|
$clear[] = " ";
|
|
}
|
|
return preg_replace('/\s\s+/', ' ', trim(str_replace($clear, $rep, $tag)));
|
|
}
|
|
}
|