| <?php
|
| require 'db_connect.php';
|
|
|
| try {
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS config (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| key_name TEXT UNIQUE,
|
| value_text TEXT
|
| )");
|
|
|
| $configs = [
|
| 'brand' => 'OFT MGMT',
|
| 'hero_h1' => 'Creatività, performance e contenuti che portano <span class="accent">risultati reali</span>.',
|
| 'hero_sub' => 'Agenzia creativa: marketing, social, foto e video — risultati concreti',
|
| 'tagline' => 'Agenzia creativa: marketing, social, foto e video — risultati concreti',
|
| 'email' => 'info@oftagency.com',
|
| 'phone' => '+39 333 123 4567',
|
| 'whatsapp_url' => 'https://wa.me/393331234567',
|
| 'instagram_url' => 'https://instagram.com/oft_mgmt',
|
| 'instagram_label' => '@oft_mgmt',
|
| 'tiktok_url' => 'https://tiktok.com/@oft_mgmt',
|
| 'booking_url' => '#contact',
|
| 'address' => 'Via G. Origlia, 36 — Nocera Inferiore (SA)',
|
| 'agency_image_1' => 'team.jpg',
|
| 'agency_image_2' => 'agenzia.jpg',
|
| 'video_embed_url' => 'https://www.youtube.com/embed/dQw4w9WgXcQ?autoplay=1&rel=0',
|
|
|
|
|
| 'about_title' => 'Chi <span class="accent">siamo</span>',
|
| 'about_intro' => 'OFT MGMT nasce nel 2025 dall’energia di tre ragazzi che credono nel potere delle idee e aiutano i brand a farsi notare davvero.',
|
| 'about_text_1' => 'OFT MGMT è nata all’inizio del 2025 da tre ragazzi con un’idea chiara: trasformare la passione per creatività e marketing in risultati concreti. Negli anni abbiamo aiutato attività locali a crescere sui social con contenuti e campagne che fanno la differenza.',
|
| 'about_text_2' => 'Da passione condivisa a progetto reale: un’agenzia creativa pensata per dare voce ai brand e portarli a un livello superiore.',
|
|
|
|
|
| 'contact_title' => 'Contatti',
|
| 'contact_intro' => 'Siamo rapidi a rispondere. Instagram, email o telefono: scegli tu.',
|
|
|
| 'admin_password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'
|
| ];
|
|
|
| $stmt = $db->prepare("INSERT OR IGNORE INTO config (key_name, value_text) VALUES (:k, :v)");
|
| foreach ($configs as $k => $v) {
|
| $stmt->execute([':k' => $k, ':v' => $v]);
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS stats (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| label TEXT,
|
| value TEXT,
|
| unit TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
|
|
|
|
| $count = $db->query("SELECT COUNT(*) FROM stats")->fetchColumn();
|
| if ($count == 0) {
|
| $stats = [
|
| ['Progetti', '120', '+', 1],
|
| ['Brand seguiti', '35', '+', 2],
|
| ['Clienti soddisfatti', '98', '%', 3]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO stats (label, value, unit, sort_order) VALUES (?, ?, ?, ?)");
|
| foreach ($stats as $s) {
|
| $stmt->execute($s);
|
| }
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS services (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| icon TEXT,
|
| title TEXT,
|
| description TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
|
|
| $count = $db->query("SELECT COUNT(*) FROM services")->fetchColumn();
|
| if ($count == 0) {
|
| $services = [
|
| ['🎯', 'Social Media Management', 'Piano editoriale data‑driven, copy, publishing e community.', 1],
|
| ['📸', 'Produzione Foto', 'Still life, lifestyle, ritratti, cataloghi e ADV.', 2],
|
| ['🎬', 'Produzione Video', 'Short‑form, brand stories e spot orientati alla conversione.', 3],
|
| ['📈', 'Campagne Pubblicitarie', 'Meta/TikTok Ads, test A/B, scaling e report.', 4],
|
| ['🛒', 'Web & Ecommerce', 'Siti veloci e focalizzati su conversioni e brand identity.', 5],
|
| ['⚡', 'Strategy & Advisory', 'Posizionamento, tone of voice, content system, crescita.', 6]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO services (icon, title, description, sort_order) VALUES (?, ?, ?, ?)");
|
| foreach ($services as $s) {
|
| $stmt->execute($s);
|
| }
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS founders (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| name TEXT,
|
| role TEXT,
|
| image_path TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
|
|
| $count = $db->query("SELECT COUNT(*) FROM founders")->fetchColumn();
|
| if ($count == 0) {
|
| $founders = [
|
| ['Michele Bisogno', 'Founder & CEO', 'michele.jpg', 1],
|
| ['Francesco Novi', 'Founder & CEO', 'francesco.jpg', 2],
|
| ['Eliodoro D’ Acunzo', 'Founder & CEO', 'elio.jpg', 3]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO founders (name, role, image_path, sort_order) VALUES (?, ?, ?, ?)");
|
| foreach ($founders as $f) {
|
| $stmt->execute($f);
|
| }
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS cases (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| title TEXT,
|
| stats_text TEXT,
|
| role_text TEXT,
|
| tags TEXT,
|
| image_path TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
|
|
| $count = $db->query("SELECT COUNT(*) FROM cases")->fetchColumn();
|
| if ($count == 0) {
|
| $cases = [
|
| [
|
| 'Cava Brew Fest 01',
|
| 'Festival della birra a Cava de’ Tirreni: 80.000 presenze, 3M visualizzazioni, 6.000 nuovi follower e 350k account raggiunti.',
|
| 'Ruolo: strategia digitale, contenuti virali e promozione online → evento diventato fenomeno social.',
|
| '#Event,#ShortForm,#IG Growth',
|
| 'cava.png',
|
| 1
|
| ],
|
| [
|
| 'IGEM — Nautica & Luxury Experience 02',
|
| 'Partendo da zero: 1,5M visualizzazioni organiche, 6.000 follower totali e 15 tour venduti in un mese.',
|
| 'Ruolo: gestione social, contenuti accattivanti e campagne mirate per far crescere rapidamente la brand awareness.',
|
| '#Luxury,#Tour,#Performance',
|
| 'nautica.PNG',
|
| 2
|
| ]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO cases (title, stats_text, role_text, tags, image_path, sort_order) VALUES (?, ?, ?, ?, ?, ?)");
|
| foreach ($cases as $c) {
|
| $stmt->execute($c);
|
| }
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS pricing (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| name TEXT,
|
| price TEXT,
|
| features TEXT, -- JSON or separator separated
|
| is_recommended BOOLEAN DEFAULT 0,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
|
|
| $count = $db->query("SELECT COUNT(*) FROM pricing")->fetchColumn();
|
| if ($count == 0) {
|
| $pricing = [
|
| [
|
| 'Growth pack',
|
| '600',
|
| "12 contenuti verticali|Story set base, grafiche base|Format vincenti + gestione pubblicazioni|Ottimizzazione contenuti e strategie|Gestione Ads (+100€ / mese budget ads)",
|
| 0,
|
| 1
|
| ],
|
| [
|
| 'Premium pack',
|
| '1000',
|
| "12 contenuti verticali|Story set avanzato + grafiche premium|Copywriting professionale|Shooting extra con fotografo|Format avanzati + trend scouting|Gestione Ads (+200€ / mese budget ads)|Reportistica avanzata e consulenza",
|
| 1,
|
| 2
|
| ]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO pricing (name, price, features, is_recommended, sort_order) VALUES (?, ?, ?, ?, ?)");
|
| foreach ($pricing as $p) {
|
| $stmt->execute($p);
|
| }
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS faq (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| question TEXT,
|
| answer TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
|
|
| $count = $db->query("SELECT COUNT(*) FROM faq")->fetchColumn();
|
| if ($count == 0) {
|
| $faqs = [
|
| ['Quanto tempo per vedere i risultati?', 'Primi segnali in 2–4 settimane (reach/engagement); 1–3 mesi per KPI di business.', 1],
|
| ['Quali piattaforme gestite?', 'Instagram, TikTok, Facebook, YouTube (Shorts) e campagne Meta/TikTok Ads.', 2],
|
| ['Create anche i contenuti?', 'Sì: strategia, shooting foto/video, editing, copy e calendari di pubblicazione.', 3],
|
| ['Come si inizia?', 'Prenota una call: obiettivi, roadmap e preventivo in 48 ore.', 4],
|
| ['Esperienza?', 'Food, retail, hospitality, servizi, DTC e PMI locali.', 5],
|
| ['Dopo posso gestire da solo?', 'Sì, formiamo il tuo team e lasciamo linee guida operative.', 6]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO faq (question, answer, sort_order) VALUES (?, ?, ?)");
|
| foreach ($faqs as $f) {
|
| $stmt->execute($f);
|
| }
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS solutions (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| title TEXT,
|
| description TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
| if ($db->query("SELECT COUNT(*) FROM solutions")->fetchColumn() == 0) {
|
| $sols = [
|
| ['I limiti attuali ❌', 'Ampio seguito (100k+ follower, milioni di views) ma bassa conversione: contenuti generici e identità poco distintiva.', 1],
|
| ['La nostra soluzione ✅', 'Strategia con contenuti dinamici e autentici (video), format coinvolgenti, pubblicazione costante e storytelling che valorizza qualità ed esperienza.', 2],
|
| ['Focus operativo', 'Ideazione format, shooting, editing e scheduling. Community, analisi e, quando serve, distribuzione paid per scalare.', 3]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO solutions (title, description, sort_order) VALUES (?, ?, ?)");
|
| foreach($sols as $s) $stmt->execute($s);
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS goals (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| title TEXT,
|
| description TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
| if ($db->query("SELECT COUNT(*) FROM goals")->fetchColumn() == 0) {
|
| $goals = [
|
| ['#1 Awareness & Reputazione', 'Diventare destinazione di qualità ad Angri, valorizzando autenticità e cura in ogni dettaglio.', 1],
|
| ['#2 Identità forte', 'Stile distintivo che racconta persone e prodotti, con format interattivi e community.', 2],
|
| ['#3 Esperienza & Qualità', 'Dall’ambiente al servizio fino alle materie prime: un racconto che fidelizza.', 3]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO goals (title, description, sort_order) VALUES (?, ?, ?)");
|
| foreach($goals as $g) $stmt->execute($g);
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS roadmap (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| phase TEXT, -- bold part
|
| detail TEXT, -- muted part
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
| if ($db->query("SELECT COUNT(*) FROM roadmap")->fetchColumn() == 0) {
|
| $roads = [
|
| ['1° mese — Setup e Analisi', 'Audit, posizionamento, definizione KPI e content system.', 1],
|
| ['1°–2° mese — Lancio comunicazione', 'Format, shooting, pubblicazione e prime iterazioni.', 2],
|
| ['3° mese — Crescita awareness', 'Ottimizzazioni e distribuzione per accelerare reach.', 3],
|
| ['4° mese — Focus esperienza', 'Storytelling su qualità e servizio.', 4],
|
| ['5°–6° mese — Consolidamento identità', 'Consistenza visiva e voce del brand.', 5],
|
| ['6° mese — Valutazione & Scaling', 'Dati, learnings, piani di crescita.', 6]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO roadmap (phase, detail, sort_order) VALUES (?, ?, ?)");
|
| foreach($roads as $r) $stmt->execute($r);
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS bottom_stats (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| value TEXT,
|
| label TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
| if ($db->query("SELECT COUNT(*) FROM bottom_stats")->fetchColumn() == 0) {
|
| $bstats = [
|
| ['+5.000.000', 'Visualizzazioni in organico', 1],
|
| ['+550.000', 'Account raggiunti', 2],
|
| ['+8.000', 'Nuovi follower', 3]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO bottom_stats (value, label, sort_order) VALUES (?, ?, ?)");
|
| foreach($bstats as $b) $stmt->execute($b);
|
| }
|
|
|
|
|
| $db->exec("CREATE TABLE IF NOT EXISTS about_gallery (
|
| id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| image_path TEXT,
|
| sort_order INTEGER DEFAULT 0
|
| )");
|
| if ($db->query("SELECT COUNT(*) FROM about_gallery")->fetchColumn() == 0) {
|
| $gallery = [
|
| ['team.jpg', 1],
|
| ['agenzia.jpg', 2]
|
| ];
|
| $stmt = $db->prepare("INSERT INTO about_gallery (image_path, sort_order) VALUES (?, ?)");
|
| foreach($gallery as $g) $stmt->execute($g);
|
| }
|
|
|
| echo "Database setup completed successfully!";
|
|
|
| } catch (PDOException $e) {
|
| die("Setup failed: " . $e->getMessage());
|
| }
|
| ?>
|
|
|