feat: Add comprehensive documentation suite and reorganize project structure

- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
This commit is contained in:
SamiAhmed7777
2025-10-21 00:39:45 -07:00
commit 0b7e2d0a5b
6080 changed files with 1332936 additions and 0 deletions

133
home_personalized.php Normal file
View File

@@ -0,0 +1,133 @@
<?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.
|*******************************************************************************************************************/
/**
* Personalized Homepage with Recommendations
*
* This is an enhanced version of index.php that includes:
* - Personalized "For You" feed
* - Trending content section
* - Continue watching section
* - Subscriptions feed
* - Dynamic content recommendations
*
* To use this as your homepage, rename index.php to index_backup.php
* and rename this file to index.php
*/
define('_ISVALID', true);
include_once 'f_core/config.core.php';
// Handle sidebar toggle parameters
$m = VSecurity::getParam('m', 'string');
$n = VSecurity::getParam('n', 'string');
if ($m !== null || $n !== null) {
$_SESSION['sbm'] = ($m !== null) ? 1 : 0;
exit;
}
// Initialize sidebar as visible for new users if not set
if (!isset($_SESSION['sbm'])) {
$_SESSION['sbm'] = 1;
}
// Load language files
include_once $class_language->setLanguageFile('frontend', 'language.home');
include_once $class_language->setLanguageFile('frontend', 'language.global');
include_once $class_language->setLanguageFile('frontend', 'language.files');
// Get user ID
$usr_id = isset($_SESSION['USER_ID']) ? (int) $_SESSION['USER_ID'] : 0;
$is_logged_in = $usr_id > 0;
// Get configuration
$cfg = $class_database->getConfigurations('video_module,short_module,live_module,image_module,audio_module,document_module,blog_module,user_subscriptions,file_history');
// Prepare content sections
$sections = [];
// 1. Continue Watching (only for logged-in users)
if ($is_logged_in && $cfg['file_history'] == 1) {
$continue_watching = VRecommendations::getContinueWatching($usr_id, 10);
if (!empty($continue_watching)) {
$sections['continue_watching'] = [
'title' => 'Continue Watching',
'items' => $continue_watching,
'type' => 'mixed'
];
}
}
// 2. For You / Recommended Videos (personalized for logged-in users, trending for guests)
if ($cfg['video_module'] == 1) {
$for_you = VRecommendations::getForYouFeed(20, 'video');
$sections['for_you'] = [
'title' => $is_logged_in ? 'Recommended for You' : 'Trending Videos',
'items' => $for_you,
'type' => 'video'
];
}
// 3. Subscriptions Feed (only for logged-in users)
if ($is_logged_in && $cfg['user_subscriptions'] == 1 && $cfg['video_module'] == 1) {
$subscriptions = VRecommendations::getFromSubscriptions($usr_id, 15, 'video');
if (!empty($subscriptions)) {
$sections['subscriptions'] = [
'title' => 'Latest from Subscriptions',
'items' => $subscriptions,
'type' => 'video'
];
}
}
// 4. Trending Shorts
if ($cfg['short_module'] == 1) {
$trending_shorts = VRecommendations::getTrending(15, 'short');
$sections['trending_shorts'] = [
'title' => 'Trending Shorts',
'items' => $trending_shorts,
'type' => 'short'
];
}
// 5. Live Streams
if ($cfg['live_module'] == 1) {
$live_streams = VRecommendations::getTrending(10, 'live');
$sections['live'] = [
'title' => 'Live Now',
'items' => $live_streams,
'type' => 'live'
];
}
// 6. Popular This Week
if ($cfg['video_module'] == 1) {
$popular_week = VRecommendations::getTrending(20, 'video');
$sections['popular_week'] = [
'title' => 'Popular This Week',
'items' => $popular_week,
'type' => 'video'
];
}
// Assign sections to Smarty
$smarty->assign('personalized_sections', $sections);
$smarty->assign('is_logged_in', $is_logged_in);
$smarty->assign('usr_id', $usr_id);
// Display the enhanced homepage
echo $class_smarty->displayPage('frontend', 'tpl_index_personalized', null, null);
?>