46 lines
2.7 KiB
PHP
Executable File
46 lines
2.7 KiB
PHP
Executable File
<?php
|
|
header('Content-Type: application/json');
|
|
header('Access-Control-Allow-Origin: *');
|
|
$db = pg_connect("host=localhost dbname=adx_system user=admin password=admin123") or die(json_encode(['error'=>'DB']));
|
|
pg_query($db, "SET search_path TO admin,public");
|
|
$action = $_GET['action'] ?? 'dashboard';
|
|
|
|
switch($action) {
|
|
case 'dashboard':
|
|
$channels = pg_fetch_all(pg_query($db, "SELECT * FROM youtube_channels ORDER BY monthly_revenue DESC")) ?: [];
|
|
$videos = pg_fetch_all(pg_query($db, "SELECT v.*, c.channel_name FROM youtube_videos v JOIN youtube_channels c ON v.channel_id=c.id ORDER BY v.published_at DESC LIMIT 20")) ?: [];
|
|
$totals = pg_fetch_assoc(pg_query($db, "SELECT COUNT(*) as channels, SUM(subscribers) as subs, SUM(total_views) as views, SUM(videos_count) as vids, SUM(monthly_revenue) as rev FROM youtube_channels WHERE status='active'"));
|
|
$vid_totals = pg_fetch_assoc(pg_query($db, "SELECT COUNT(*) as total, SUM(views) as views, SUM(ad_revenue) as ad_rev, SUM(affiliate_revenue) as aff_rev FROM youtube_videos WHERE status='published'"));
|
|
echo json_encode(['status'=>'success','channels'=>$channels,'videos'=>$videos,'totals'=>$totals,'video_totals'=>$vid_totals]);
|
|
break;
|
|
|
|
case 'channel':
|
|
$id = (int)($_GET['id'] ?? 0);
|
|
$ch = pg_fetch_assoc(pg_query($db, "SELECT * FROM youtube_channels WHERE id=$id"));
|
|
$vids = pg_fetch_all(pg_query($db, "SELECT * FROM youtube_videos WHERE channel_id=$id ORDER BY published_at DESC")) ?: [];
|
|
echo json_encode(['status'=>'success','channel'=>$ch,'videos'=>$vids]);
|
|
break;
|
|
|
|
case 'create_channel':
|
|
$data = json_decode(file_get_contents('php://input'), true) ?: $_POST;
|
|
$name = pg_escape_string($db, $data['channel_name'] ?? 'New Channel');
|
|
$niche = pg_escape_string($db, $data['niche'] ?? 'general');
|
|
$lang = pg_escape_string($db, $data['language'] ?? 'fr');
|
|
$r = pg_query($db, "INSERT INTO youtube_channels (channel_name, niche, language) VALUES ('$name','$niche','$lang') RETURNING id");
|
|
echo json_encode(['status'=>'success','id'=>pg_fetch_assoc($r)['id']]);
|
|
break;
|
|
|
|
case 'create_video':
|
|
$data = json_decode(file_get_contents('php://input'), true) ?: $_POST;
|
|
$ch = (int)($data['channel_id'] ?? 1);
|
|
$title = pg_escape_string($db, $data['title'] ?? 'New Video');
|
|
$desc = pg_escape_string($db, $data['description'] ?? '');
|
|
$dur = (int)($data['duration_sec'] ?? 300);
|
|
$r = pg_query($db, "INSERT INTO youtube_videos (channel_id, title, description, duration_sec, status) VALUES ($ch,'$title','$desc',$dur,'draft') RETURNING id");
|
|
echo json_encode(['status'=>'success','id'=>pg_fetch_assoc($r)['id']]);
|
|
break;
|
|
|
|
default:
|
|
echo json_encode(['error'=>'Unknown action','actions'=>['dashboard','channel','create_channel','create_video']]);
|
|
}
|