update privacy policy
This commit is contained in:
parent
ea20afe57f
commit
d9856c1c15
@ -40,7 +40,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['name'])) {
|
||||
$telephone_no = $_POST['telephone_no'] ?? '';
|
||||
$email_id = $_POST['email_id'] ?? '';
|
||||
|
||||
$stmt = db()->prepare("UPDATE platform_profile SET name = :name, description = :description, logo_path = :logo, favicon_path = :favicon, ctr_no = :ctr_no, telephone_no = :telephone_no, email_id = :email_id WHERE id = 1");
|
||||
$terms = $_POST['terms'] ?? '';
|
||||
$privacy_policy = $_POST['privacy_policy'] ?? '';
|
||||
|
||||
$stmt = db()->prepare("UPDATE platform_profile SET name = :name, description = :description, logo_path = :logo, favicon_path = :favicon, ctr_no = :ctr_no, telephone_no = :telephone_no, email_id = :email_id, terms = :terms, privacy_policy = :privacy_policy WHERE id = 1");
|
||||
$stmt->execute([
|
||||
'name' => $name,
|
||||
'description' => $description,
|
||||
@ -48,7 +51,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['name'])) {
|
||||
'favicon' => $favicon_path,
|
||||
'ctr_no' => $ctr_no,
|
||||
'telephone_no' => $telephone_no,
|
||||
'email_id' => $email_id
|
||||
'email_id' => $email_id,
|
||||
'terms' => $terms,
|
||||
'privacy_policy' => $privacy_policy
|
||||
]);
|
||||
|
||||
header('Location: ' . app_url('admin.php', ['page' => 'profile', 'saved' => 1]));
|
||||
@ -112,7 +117,19 @@ $prof = get_platform_profile();
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="mb-3 mt-4"><?= h(t('Terms of Conditions', 'الشروط والأحكام'))?></h5>
|
||||
<div class="mb-3">
|
||||
<label class="form-label"><?= h(t('Terms of Conditions', 'الشروط والأحكام'))?></label>
|
||||
<textarea name="terms" class="form-control" rows="5"><?= h($prof['terms'] ?? '')?></textarea>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label class="form-label"><?= h(t('Privacy Policy', 'سياسة الخصوصية'))?></label>
|
||||
<textarea name="privacy_policy" class="form-control" rows="5"><?= h($prof['privacy_policy'] ?? '')?></textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary" style="background-color: var(--accent); border-color: var(--accent);">
|
||||
|
||||
<?= h(t('Save Changes', 'حفظ التغييرات')) ?>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
@ -177,7 +177,7 @@ render_nav('pricing.php');
|
||||
<div class="panel-card">
|
||||
<span class="eyebrow"><?= h(t('Checkout flow', 'مسار الدفع')) ?></span>
|
||||
<h1 class="section-title mb-2"><?= h(t('Create a subscription and unlock the student dashboard', 'أنشئ اشتراكاً وافتح لوحة الطالب')) ?></h1>
|
||||
<p class="text-secondary mb-4"><?= h(t('This first slice records a real subscription row locally, reserves a Thawani reference, and prepares Wablas reminders.', 'تسجل هذه الشريحة الأولى صف اشتراك حقيقياً محلياً وتحجز مرجع Thawani وتجهز تذكيرات Wablas.')) ?></p>
|
||||
<p class="text-secondary mb-4"><?= h(t('This first slice records a real subscription row locally, reserves a Thawani reference, and prepares WhatsApp reminders.', 'تسجل هذه الشريحة الأولى صف اشتراك حقيقياً محلياً وتحجز مرجع Thawani وتجهز تذكيرات واتساب.')) ?></p>
|
||||
<?php if ($errors): ?>
|
||||
<div class="alert alert-danger border">
|
||||
<ul class="mb-0 ps-3">
|
||||
@ -230,7 +230,7 @@ render_nav('pricing.php');
|
||||
<div class="form-check border rounded-3 p-3">
|
||||
<input class="form-check-input" type="checkbox" id="wablas_opt_in" name="wablas_opt_in" value="1" <?= $form['wablas_opt_in'] ? 'checked' : '' ?>>
|
||||
<label class="form-check-label" for="wablas_opt_in">
|
||||
<?= h(t('Send payment success and class reminders through Wablas WhatsApp gateway.', 'أرسل نجاح الدفع وتذكيرات الحصص عبر بوابة Wablas لواتساب.')) ?>
|
||||
<?= h(t('Send payment success and class reminders through WhatsApp.', 'أرسل نجاح الدفع وتذكيرات الحصص عبر واتساب.')) ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@ -270,9 +270,6 @@ render_nav('pricing.php');
|
||||
<?= h(price_label($plan, $cycle)) ?>
|
||||
<?php endif; ?>
|
||||
</strong></div>
|
||||
<div class="summary-row"><span><?= h(t('Gateway', 'البوابة')) ?></span><strong>Thawani</strong></div>
|
||||
<div class="summary-row"><span><?= h(t('Notifications', 'الإشعارات')) ?></span><strong>Wablas</strong></div>
|
||||
<div class="summary-row"><span><?= h(t('Live rooms', 'الغرف المباشرة')) ?></span><strong>Google Meet</strong></div>
|
||||
<hr>
|
||||
<ul class="list-unstyled compact-list compact-list-tight mb-0">
|
||||
<?php foreach (current_lang() === 'ar' ? $plan['features_ar'] : $plan['features_en'] as $feature): ?>
|
||||
|
||||
9
db/migrations/migrate_policy.php
Normal file
9
db/migrations/migrate_policy.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../config.php';
|
||||
try {
|
||||
db()->exec("ALTER TABLE `platform_profile` ADD COLUMN `terms` TEXT DEFAULT NULL, ADD COLUMN `privacy_policy` TEXT DEFAULT NULL");
|
||||
echo "Migration successful\n";
|
||||
} catch (Exception $e) {
|
||||
echo "Migration error: " . $e->getMessage() . "\n";
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: 127.0.0.1 Database: app_39496
|
||||
-- Host: localhost Database: app_39496
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.11.14-MariaDB-0+deb12u2
|
||||
|
||||
@ -32,7 +32,7 @@ CREATE TABLE `classes` (
|
||||
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
||||
`status` enum('active','inactive') NOT NULL DEFAULT 'active',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -53,7 +53,7 @@ CREATE TABLE `course_activities` (
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `course_id` (`course_id`),
|
||||
CONSTRAINT `course_activities_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -73,7 +73,7 @@ CREATE TABLE `course_live_lessons` (
|
||||
`meet_url` varchar(500) DEFAULT NULL,
|
||||
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -115,7 +115,7 @@ CREATE TABLE `courses` (
|
||||
`max_students` int(11) DEFAULT NULL,
|
||||
`registration_open` tinyint(1) DEFAULT 1,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -170,7 +170,7 @@ CREATE TABLE `plans` (
|
||||
`features_ar` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`features_ar`)),
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `plan_key` (`plan_key`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -202,6 +202,46 @@ CREATE TABLE `platform_profile` (
|
||||
`smtp_pass` varchar(255) DEFAULT NULL,
|
||||
`smtp_from_email` varchar(255) DEFAULT NULL,
|
||||
`smtp_from_name` varchar(255) DEFAULT NULL,
|
||||
`terms` text DEFAULT NULL,
|
||||
`privacy_policy` text DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `role_permissions`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `role_permissions`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `role_permissions` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`role_id` int(11) NOT NULL,
|
||||
`page` varchar(50) NOT NULL,
|
||||
`can_view` tinyint(1) DEFAULT 0,
|
||||
`can_add` tinyint(1) DEFAULT 0,
|
||||
`can_edit` tinyint(1) DEFAULT 0,
|
||||
`can_delete` tinyint(1) DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `role_page` (`role_id`,`page`),
|
||||
CONSTRAINT `role_permissions_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `roles`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `roles`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `roles` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`description` text DEFAULT NULL,
|
||||
`is_system` tinyint(1) DEFAULT 0,
|
||||
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
@ -225,7 +265,7 @@ CREATE TABLE `student_assessments` (
|
||||
KEY `student_id` (`student_id`),
|
||||
CONSTRAINT `student_assessments_ibfk_1` FOREIGN KEY (`activity_id`) REFERENCES `course_activities` (`id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `student_assessments_ibfk_2` FOREIGN KEY (`student_id`) REFERENCES `student_subscriptions` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -255,7 +295,7 @@ CREATE TABLE `student_subscriptions` (
|
||||
`picture` varchar(255) DEFAULT NULL,
|
||||
`civil_id` varchar(50) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -288,7 +328,7 @@ CREATE TABLE `subjects` (
|
||||
`status` enum('active','inactive') NOT NULL DEFAULT 'active',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `slug` (`slug`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -306,7 +346,7 @@ CREATE TABLE `teacher_assignments` (
|
||||
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `unique_assignment` (`teacher_id`,`class_id`,`subject_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -327,7 +367,7 @@ CREATE TABLE `teachers` (
|
||||
`password` varchar(255) DEFAULT NULL,
|
||||
`status` enum('active','inactive') NOT NULL DEFAULT 'active',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@ -345,13 +385,15 @@ CREATE TABLE `users` (
|
||||
`reset_token` varchar(255) DEFAULT NULL,
|
||||
`reset_expires` datetime DEFAULT NULL,
|
||||
`role` enum('admin','user') DEFAULT 'admin',
|
||||
`role_id` int(11) DEFAULT NULL,
|
||||
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
||||
`phone` varchar(50) DEFAULT NULL,
|
||||
`profile_picture` varchar(255) DEFAULT NULL,
|
||||
`role_id` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `email` (`email`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
UNIQUE KEY `email` (`email`),
|
||||
KEY `fk_user_role` (`role_id`),
|
||||
CONSTRAINT `fk_user_role` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
@ -363,39 +405,4 @@ CREATE TABLE `users` (
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- Table structure for table `roles`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `roles`;
|
||||
CREATE TABLE `roles` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`description` text DEFAULT NULL,
|
||||
`is_system` tinyint(1) DEFAULT 0,
|
||||
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Table structure for table `role_permissions`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `role_permissions`;
|
||||
CREATE TABLE `role_permissions` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`role_id` int(11) NOT NULL,
|
||||
`page` varchar(50) NOT NULL,
|
||||
`can_view` tinyint(1) DEFAULT 0,
|
||||
`can_add` tinyint(1) DEFAULT 0,
|
||||
`can_edit` tinyint(1) DEFAULT 0,
|
||||
`can_delete` tinyint(1) DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `role_page` (`role_id`,`page`),
|
||||
KEY `role_id` (`role_id`),
|
||||
CONSTRAINT `role_permissions_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Dump completed on 2026-04-07 13:32:08
|
||||
-- Dump completed on 2026-04-11 15:49:39
|
||||
|
||||
@ -39,7 +39,7 @@ function app_name(): string
|
||||
|
||||
function project_description(): string
|
||||
{
|
||||
return (string) ($_SERVER['PROJECT_DESCRIPTION'] ?? 'Modern multilingual e-learning classrooms with subscriptions, teachers, students, Google Meet live sessions, Thawani billing, and Wablas notifications.');
|
||||
return (string) ($_SERVER['PROJECT_DESCRIPTION'] ?? 'Modern multilingual e-learning classrooms with subscriptions, teachers, students, Google Meet live sessions, Thawani billing, and WhatsApp notifications.');
|
||||
}
|
||||
|
||||
|
||||
@ -209,8 +209,8 @@ function plans_catalog_static(): array
|
||||
'price_monthly' => 59,
|
||||
'price_yearly' => 590,
|
||||
'subjects_limit' => 4,
|
||||
'features_en' => ['All subjects', 'Unlimited live rooms', 'Teacher Q&A', 'Wablas reminders'],
|
||||
'features_ar' => ['جميع المواد', 'غرف مباشرة غير محدودة', 'أسئلة وأجوبة مع المعلم', 'تذكيرات عبر وابلاس'],
|
||||
'features_en' => ['All subjects', 'Unlimited live rooms', 'Teacher Q&A', 'WhatsApp reminders'],
|
||||
'features_ar' => ['جميع المواد', 'غرف مباشرة غير محدودة', 'أسئلة وأجوبة مع المعلم', 'تذكيرات عبر واتساب'],
|
||||
],
|
||||
'pro' => [
|
||||
'key' => 'pro',
|
||||
@ -715,13 +715,15 @@ function render_footer(): void
|
||||
<div class="container py-4 d-flex flex-column flex-lg-row justify-content-between gap-3 small text-secondary">
|
||||
<div>
|
||||
<strong class="text-dark"><?= h(app_name()) ?></strong>
|
||||
<div><?= h(t('Subscription-based classrooms in English and Arabic with Google Meet, Thawani, and Wablas workflows.', 'فصول باشتراكات بالإنجليزية والعربية مع تدفقات عمل Google Meet وThawani وWablas.')) ?></div>
|
||||
<div><?= h(t('Subscription-based classrooms in English and Arabic with Google Meet, Thawani, and WhatsApp workflows.', 'فصول باشتراكات بالإنجليزية والعربية مع تدفقات عمل Google Meet وThawani وواتساب.')) ?></div>
|
||||
</div>
|
||||
<div class="d-flex gap-3 flex-wrap">
|
||||
<a class="text-decoration-none text-secondary" href="<?= h(app_url('catalog.php')) ?>"><?= h(t('Subject catalog', 'كتالوج المواد')) ?></a>
|
||||
<a class="text-decoration-none text-secondary" href="<?= h(app_url('courses.php')) ?>"><?= h(t('Courses', 'الدورات')) ?></a>
|
||||
<a class="text-decoration-none text-secondary" href="<?= h(app_url('pricing.php')) ?>"><?= h(t('Plans', 'الخطط')) ?></a>
|
||||
<a class="text-decoration-none text-secondary" href="<?= h(app_url('dashboard.php')) ?>"><?= h(t('Student dashboard', 'لوحة الطالب')) ?></a>
|
||||
<a class="text-decoration-none text-secondary" href="<?= h(app_url('terms.php')) ?>"><?= h(t('Terms of Conditions', 'الشروط والأحكام')) ?></a>
|
||||
<a class="text-decoration-none text-secondary" href="<?= h(app_url('policy.php')) ?>"><?= h(t('Privacy Policy', 'سياسة الخصوصية')) ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@ -18,7 +18,7 @@ $metrics = ['subjects' => count($subjects), 'teachers' => db()->query("SELECT CO
|
||||
<div class="col-lg-7">
|
||||
<span class="eyebrow"><?= h(landing_setting('hero_eyebrow', 'Single platform LMS', 'منصة تعليم موحدة')) ?></span>
|
||||
<h1 class="display-title mt-3 mb-3"><?= h(landing_setting('hero_title', 'Subscriptions, multilingual classrooms, and live Google Meet learning in one precise workspace.', 'الاشتراكات والفصول متعددة اللغات والتعلم المباشر عبر Google Meet في مساحة واحدة دقيقة.')) ?></h1>
|
||||
<p class="lead text-secondary mb-4"><?= h(landing_setting('hero_desc', 'Launch a polished e-learning experience for students, teachers, and admins with English/Arabic support, Thawani billing flows, and Wablas-ready WhatsApp notifications.', 'أطلق تجربة تعليم إلكتروني مصقولة للطلاب والمعلمين والإدارة مع دعم الإنجليزية والعربية وتدفقات دفع ثواني وإشعارات واتساب جاهزة عبر وابلاس.')) ?></p>
|
||||
<p class="lead text-secondary mb-4"><?= h(landing_setting('hero_desc', 'Launch a polished e-learning experience for students, teachers, and admins with English/Arabic support, Thawani billing flows, and WhatsApp notifications.', 'أطلق تجربة تعليم إلكتروني مصقولة للطلاب والمعلمين والإدارة مع دعم الإنجليزية والعربية وتدفقات دفع ثواني وإشعارات واتساب.')) ?></p>
|
||||
<div class="d-flex flex-wrap gap-2 mb-4">
|
||||
<a class="btn btn-primary btn-lg rounded-pill px-4 shadow-sm" href="<?= h(app_url('pricing.php')) ?>"><?= h(t('Start subscription flow', 'ابدأ مسار الاشتراك')) ?></a>
|
||||
<a class="btn btn-light btn-lg rounded-pill px-4 shadow-sm text-primary fw-bold" href="<?= h(app_url('catalog.php')) ?>"><?= h(t('Browse subjects', 'تصفح المواد')) ?></a>
|
||||
|
||||
33
policy.php
Normal file
33
policy.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/app.php';
|
||||
|
||||
$prof = get_platform_profile();
|
||||
$policy_content = $prof['privacy_policy'] ?? '';
|
||||
|
||||
render_head(
|
||||
t('Privacy Policy', 'سياسة الخصوصية'),
|
||||
t('Read our privacy policy.', 'اقرأ سياسة الخصوصية الخاصة بنا.')
|
||||
);
|
||||
render_nav('policy.php');
|
||||
?>
|
||||
<main class="flex-grow-1 bg-light py-5">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
<div class="card border-0 shadow-sm rounded-4">
|
||||
<div class="card-body p-4 p-md-5">
|
||||
<h1 class="mb-4"><?= h(t('Privacy Policy', 'سياسة الخصوصية')) ?></h1>
|
||||
<div class="content text-secondary" style="white-space: pre-wrap;">
|
||||
<?php if (trim($policy_content) === ''): ?>
|
||||
<?= h(t('No privacy policy provided yet.', 'لم يتم توفير سياسة الخصوصية بعد.')) ?>
|
||||
<?php else: ?>
|
||||
<?= h($policy_content) ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php render_footer(); ?>
|
||||
@ -74,7 +74,7 @@ render_nav('dashboard.php');
|
||||
<hr>
|
||||
<div class="small text-secondary d-flex flex-column gap-2">
|
||||
<div><strong class="text-dark"><?= h(t('Payment channel', 'قناة الدفع')) ?>:</strong> <?= h($subscription['payment_gateway']) ?></div>
|
||||
<div><strong class="text-dark"><?= h(t('Reminder channel', 'قناة التذكير')) ?>:</strong> <?= h((int) $subscription['wablas_opt_in'] === 1 ? t('Enabled via Wablas', 'مفعلة عبر وابلاس') : t('Not enabled', 'غير مفعلة')) ?></div>
|
||||
<div><strong class="text-dark"><?= h(t('Reminder channel', 'قناة التذكير')) ?>:</strong> <?= h((int) $subscription['wablas_opt_in'] === 1 ? t('Enabled', 'مفعلة') : t('Not enabled', 'غير مفعلة')) ?></div>
|
||||
<div><strong class="text-dark"><?= h(t('Live classroom', 'الفصل المباشر')) ?>:</strong> Google Meet</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
33
terms.php
Normal file
33
terms.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/app.php';
|
||||
|
||||
$prof = get_platform_profile();
|
||||
$terms_content = $prof['terms'] ?? '';
|
||||
|
||||
render_head(
|
||||
t('Terms of Conditions', 'الشروط والأحكام'),
|
||||
t('Read our terms of conditions.', 'اقرأ الشروط والأحكام الخاصة بنا.')
|
||||
);
|
||||
render_nav('terms.php');
|
||||
?>
|
||||
<main class="flex-grow-1 bg-light py-5">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
<div class="card border-0 shadow-sm rounded-4">
|
||||
<div class="card-body p-4 p-md-5">
|
||||
<h1 class="mb-4"><?= h(t('Terms of Conditions', 'الشروط والأحكام')) ?></h1>
|
||||
<div class="content text-secondary" style="white-space: pre-wrap;">
|
||||
<?php if (trim($terms_content) === ''): ?>
|
||||
<?= h(t('No terms of conditions provided yet.', 'لم يتم توفير الشروط والأحكام بعد.')) ?>
|
||||
<?php else: ?>
|
||||
<?= h($terms_content) ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php render_footer(); ?>
|
||||
Loading…
x
Reference in New Issue
Block a user