From 2535d13d7c7316385dfe53ed237afbba03be0e50 Mon Sep 17 00:00:00 2001 From: "laura.chevillet" Date: Mon, 9 Feb 2026 13:35:44 +0100 Subject: [PATCH 01/45] =?UTF-8?q?r=C3=A9cup=C3=A9ration=20du=20back=20up?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/admin_controller.php | 1 - models/category_model.php | 50 +++- ...af2d8a8255035d91b950_0.file_layout.tpl.php | 50 ++++ ...3f0963ead4008a7bda8fb_0.file_admin.tpl.php | 230 +++++++++++++++ ...809f87f59bd19d86da99_0.file_footer.tpl.php | 63 +++++ ...531347290b4e4994470b_0.file_header.tpl.php | 115 ++++++++ ...7634a5658ae38c7b520_0.file_preview.tpl.php | 69 +++++ ...f497c64277110a78bc40_0.file_search.tpl.php | 261 ++++++++++++++++++ views/admin.tpl | 9 +- views/home.tpl | 12 + 10 files changed, 852 insertions(+), 8 deletions(-) create mode 100644 templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php create mode 100644 templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php create mode 100644 templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php create mode 100644 templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php create mode 100644 templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php create mode 100644 templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php diff --git a/controllers/admin_controller.php b/controllers/admin_controller.php index 63e92a1..ea4ee7b 100644 --- a/controllers/admin_controller.php +++ b/controllers/admin_controller.php @@ -54,7 +54,6 @@ $arrCategoryToDisplay[] = $objCategory; } - // Il faudra donner à maman et gérer l'affichage quand Smarty sera prêt $this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay; //$this->_arrData['intCategory'] = $objCategoryModel->; $this->_display("admin"); diff --git a/models/category_model.php b/models/category_model.php index 6432a9a..a23907e 100644 --- a/models/category_model.php +++ b/models/category_model.php @@ -27,21 +27,59 @@ /** * fonction d'insertion d'une nouvelle catégorie dans la bdd - * @param object $objUser L'objet utilisateur + * @param object $objCategory l'objet catégorie * @return bool Est-ce que la requête s'est bien passée (true/false) */ - public function insert(object $objCategory):bool{ + public function insertCategory(object $objCategory):bool{ - $strRq = "INSERT INTO category (category_name, category_parent) - VALUES (:name, :parent)"; + $strRq = "INSERT INTO category (category_name) + VALUES (:name)"; $rqPrep = $this->_db->prepare($strRq); $rqPrep->bindValue(":name", $objCategory->getName(), PDO::PARAM_STR); - $rqPrep->bindValue(":parent", $objCategory->getParent(), PDO::PARAM_STR); return $rqPrep->execute(); } - } \ No newline at end of file + + /** + * fonction de suppression d'une catégorie dans la bdd + * @param object $objCategory l'objet catégorie + * @return bool Est-ce que la requête s'est bien passée (true/false) + */ + + public function deleteCategory(object $objCategory):bool{ + + $strRq = "DELETE FROM category + WHERE category_id= :id"; + + $rqPrep = $this->_db->prepare($strRq); + + $rqPrep->bindValue(":id", $objCategory->getId(), PDO::PARAM_INT); + + return $rqPrep->execute(); + } + + /** + * fonction de modification d'une catégorie dans la bdd + * @param object $objCategory l'objet catégorie + * @return bool Est-ce que la requête s'est bien passée (true/false) + */ + + public function editCategory(object $objCategory):bool{ + + $strRq = "UPDATE category + SET category_name = :name + WHERE category_id = :id"; + + $rqPrep = $this->_db->prepare($strRq); + + $rqPrep->bindValue(":id", $objCategory->getId(), PDO::PARAM_INT); + $rqPrep->bindValue(":name", $objCategory->getName(), PDO::PARAM_STR); + + return $rqPrep->execute(); + } + } + \ No newline at end of file diff --git a/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php new file mode 100644 index 0000000..90efc5c --- /dev/null +++ b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php @@ -0,0 +1,50 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989d31d7d28c9_01506908', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '947d9aa54bf412a952e2af2d8a8255035d91b950' => + array ( + 0 => 'views/layout.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/header.tpl' => 1, + 'file:views/_partial/footer.tpl' => 1, + ), +))) { +function content_6989d31d7d28c9_01506908 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, false); +$_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_8131712286989d31d7cfb58_06071603', "content"); +?> + + +renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +} +/* {block "content"} */ +class Block_8131712286989d31d7cfb58_06071603 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989d31d65c3a2_79771570', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb' => + array ( + 0 => 'views/admin.tpl', + 1 => 1770640156, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989d31d65c3a2_79771570 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_20302301596989d31d64f310_54306383', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_20302301596989d31d64f310_54306383 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + +
+ + + +
+
+ +
+ +
+
+
+

Dashboard

+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+
+ +
+ +
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
+ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989d1dc7c08f9_74223007', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'b1b065356827f03a32a2809f87f59bd19d86da99' => + array ( + 0 => 'views/_partial/footer.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989d1dc7c08f9_74223007 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; +?> + + + src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"> +> + + src="js/scripts.js"> +> + +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989d31d88f180_59508135', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'b3c0a235f975d8741b25531347290b4e4994470b' => + array ( + 0 => 'views/_partial/header.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989d31d88f180_59508135 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; +?> + + + + + + + + + src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"> +> + Folliow + + + + +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989d1dc613786_88061115', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'b70ee0d22061ca6100f647634a5658ae38c7b520' => + array ( + 0 => 'views/_partial/preview.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989d1dc613786_88061115 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; +?> + + +
+
+ +
+ +
+ +
+ + Photo de profil + +
+

getValue('objProject')->getTitle();?> +

+ + + + – getValue('objProject')->getCreatorname();?> + + + + + Lire la suite → + +
+ +
+ +
+
getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989d1dc059b91_90143315', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ebfd968608976813e893f497c64277110a78bc40' => + array ( + 0 => 'views/search.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/preview.tpl' => 1, + ), +))) { +function content_6989d1dc059b91_90143315 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_10870486496989d1dbe65e81_99494215', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_10870486496989d1dbe65e81_99494215 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + +
+

Rechercher parmi les articles

+
+
+
+

+ + Rechercher des articles +

+ +
+
+ + + + Recherchez dans les titres et contenus + +
+ +
+ + +
+ + +
+
+ Type de recherche par date +
+ getValue('intPeriod') == 0) {?>checked + aria-controls="date-exact date-range"> + +
+
+ getValue('intPeriod') == 1) {?>checked + aria-controls="date-exact date-range"> + +
+
+
+ +
+
+ Type de recherche par catégories +
+ + +
+
+
+ +
+ + + + Format: JJ/MM/AAAA + +
+ + + +
+ + +
+
+
+
+ + +
+

Liste des projets

+
+ getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProject')) == 0) {?> +
+

Pas de résultats

+
+ + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach2DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach2DoElse = false; +?> + renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+
+
+
+ +> + // Gestion de l'affichage des champs de date + const periodRadios = document.querySelectorAll('input[name="period"]'); + const dateExact = document.getElementById('date-exact'); + const dateRange = document.getElementById('date-range'); + + function toggleDateFields() { + const selectedPeriod = document.querySelector('input[name="period"]:checked').value; + + if (selectedPeriod === '0') { + dateExact.style.display = 'block'; + dateRange.style.display = 'none'; + } else { + dateExact.style.display = 'none'; + dateRange.style.display = 'block'; + } + } + + periodRadios.forEach(radio => { + radio.addEventListener('change', toggleDateFields); + }); + + // Initialisation au chargement + toggleDateFields(); + +> + - +
+
+ + +
+ + +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ + Pas encore de compte ? + Créer un compte + +
+ + + + +
+ + +
+ +
+ + + +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989d31d7d28c9_01506908', + 'unifunc' => 'content_6989e0891f99a9_84268185', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_6989d31d7d28c9_01506908 (\Smarty\Template $_smarty_tpl) { +function content_6989e0891f99a9_84268185 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_8131712286989d31d7cfb58_06071603', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1226719426989e0891f66b5_10703637', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_8131712286989d31d7cfb58_06071603 extends \Smarty\Runtime\Block +class Block_1226719426989e0891f66b5_10703637 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php b/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php index f674aeb..d200d8c 100644 --- a/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php +++ b/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989d31d65c3a2_79771570', + 'unifunc' => 'content_6989e088f38338_64666135', 'has_nocache_code' => false, 'file_dependency' => array ( 'ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb' => array ( 0 => 'views/admin.tpl', - 1 => 1770640156, + 1 => 1770643565, 2 => 'file', ), ), @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989d31d65c3a2_79771570 (\Smarty\Template $_smarty_tpl) { +function content_6989e088f38338_64666135 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_20302301596989d31d64f310_54306383', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_19184882506989e088f2e080_15773704', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_20302301596989d31d64f310_54306383 extends \Smarty\Runtime\Block +class Block_19184882506989e088f2e080_15773704 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; @@ -108,9 +108,9 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; @@ -152,52 +152,30 @@ $_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
-
- + + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrCategoryToDisplay'), 'category'); $foreach1DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('arrDetCategory')->value) { +foreach ($_from ?? [] as $_smarty_tpl->getVariable('category')->value) { $foreach1DoElse = false; ?> - - + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrCategoryToDisplay'), 'arrDetCategory'); -$foreach2DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('arrDetCategory')->value) { -$foreach2DoElse = false; -?> - - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> - -
- -
-
+ +
+ -
-
- -
+ +


@@ -205,14 +183,16 @@ $_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
- -
- - -
-
-
- +
+ +
+ + +
+
+ +
+
diff --git a/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php b/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php index bde3315..7788209 100644 --- a/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php +++ b/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989d1dc7c08f9_74223007', + 'unifunc' => 'content_6989e0893afd86_56926620', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989d1dc7c08f9_74223007 (\Smarty\Template $_smarty_tpl) { +function content_6989e0893afd86_56926620 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?>
diff --git a/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php b/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php index 2037e59..ea41c4f 100644 --- a/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php +++ b/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989d31d88f180_59508135', + 'unifunc' => 'content_6989e0892c1ac1_16523199', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989d31d88f180_59508135 (\Smarty\Template $_smarty_tpl) { +function content_6989e0892c1ac1_16523199 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?> diff --git a/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php b/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php index fa77fa8..a805224 100644 --- a/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php +++ b/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989d1dc613786_88061115', + 'unifunc' => 'content_6989e02ebdb495_34139226', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989d1dc613786_88061115 (\Smarty\Template $_smarty_tpl) { +function content_6989e02ebdb495_34139226 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?> diff --git a/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php b/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php new file mode 100644 index 0000000..d2cd1e7 --- /dev/null +++ b/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php @@ -0,0 +1,83 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989e02e94a704_31389377', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92' => + array ( + 0 => 'views/home.tpl', + 1 => 1770639710, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/preview.tpl' => 1, + ), +))) { +function content_6989e02e94a704_31389377 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_6558155986989e02e945ff4_36336799', "content"); +?> + +getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_6558155986989e02e945ff4_36336799 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + +
+

Folliow

+

Là où les talents rencontrent leur avenir

+

Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. + Créer un portfolio réellement pertinent aux exigences du marché et rentrez + directement en contact avec les entreprises.

+
+ + +
+
+
+ + + + +
+
+
+ +
+

Les 4 derniers articles

+
+ + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach0DoElse = false; +?> + renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989d1dc059b91_90143315', + 'unifunc' => 'content_6989e01e399336_22269044', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989d1dc059b91_90143315 (\Smarty\Template $_smarty_tpl) { +function content_6989e01e399336_22269044 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_10870486496989d1dbe65e81_99494215', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_17525989336989e01e3837e7_64042990', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_10870486496989d1dbe65e81_99494215 extends \Smarty\Runtime\Block +class Block_17525989336989e01e3837e7_64042990 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/views/admin.tpl b/views/admin.tpl index b4c18f9..30d2697 100644 --- a/views/admin.tpl +++ b/views/admin.tpl @@ -72,8 +72,7 @@
@@ -106,34 +105,21 @@
-
- + + {foreach from=$arrCategoryToDisplay item=category} + {/foreach} - - {foreach from=$arrCategoryToDisplay item=arrDetCategory} - - {/foreach} - -
- -
-
+ +
+ -
-
- -
+ +


@@ -141,14 +127,16 @@
- -
- - -
-
-
- +
+ +
+ + +
+
+ +
+
From 3af2e8a0567221eccbf15e0eac5fa3854db1039b Mon Sep 17 00:00:00 2001 From: "laura.chevillet" Date: Mon, 9 Feb 2026 16:03:51 +0100 Subject: [PATCH 03/45] =?UTF-8?q?Cr=C3=A9ation=20entity=20et=20model=20d'a?= =?UTF-8?q?uthorisation.=20Cr=C3=A9ation=20de=20toute=20la=20fonctionnalit?= =?UTF-8?q?=C3=A9=20de=20modifier=20le=20statut=20et=20supprimer=20un=20us?= =?UTF-8?q?er=20ok=20fonction=20et=20verif=20bdd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/admin_controller.php | 54 ++++- entities/authorisation_entity.php | 24 ++ models/authorisation_model.php | 29 +++ models/user_model.php | 45 +++- ...429efee0d6437582d377e_0.file_login.tpl.php | 10 +- ...af2d8a8255035d91b950_0.file_layout.tpl.php | 10 +- ...3f0963ead4008a7bda8fb_0.file_admin.tpl.php | 68 ++++-- ...809f87f59bd19d86da99_0.file_footer.tpl.php | 6 +- ...531347290b4e4994470b_0.file_header.tpl.php | 6 +- ...7634a5658ae38c7b520_0.file_preview.tpl.php | 6 +- ...b03b8d137ec1edb99bdd92_0.file_home.tpl.php | 10 +- ...f497c64277110a78bc40_0.file_search.tpl.php | 10 +- ...66afa34a71b920e_0.file_inscription.tpl.php | 218 ++++++++++++++++++ views/admin.tpl | 36 +-- 14 files changed, 456 insertions(+), 76 deletions(-) create mode 100644 entities/authorisation_entity.php create mode 100644 models/authorisation_model.php create mode 100644 templates_c/ee86afd5d4dff200944f3436866afa34a71b920e_0.file_inscription.tpl.php diff --git a/controllers/admin_controller.php b/controllers/admin_controller.php index 9b38286..8e4a509 100644 --- a/controllers/admin_controller.php +++ b/controllers/admin_controller.php @@ -8,6 +8,8 @@ require("./entities/image_entity.php"); require("./models/user_model.php"); require("./entities/user_entity.php"); + require("./models/authorisation_model.php"); + require("./entities/authorisation_entity.php"); require("mother_controller.php"); /** @@ -23,6 +25,8 @@ header("Location:index.php?ctrl=error&action=error_403"); exit; } + + //gestion de l'user $objCategoryModel = new CategoryModel; if (!empty($_POST['new_category'])) { @@ -42,6 +46,7 @@ exit; } + //affichage select des catégories $arrCategory = $objCategoryModel->findAllCategory(); $arrCategoryToDisplay = array(); @@ -50,9 +55,56 @@ $objCategory->hydrate($arrDetCategory); $arrCategoryToDisplay[] = $objCategory; } + + //gestion de l'user + $objUserModel = new UserModel; + + if (!empty($_POST['action'])) { + $intUserId = (int)$_POST['user_id']; + + if ($intUserId > 0) { + if ($_POST['action'] === 'update_status' && !empty($_POST['new_status'])) { + $objUser = new User(); + $objUser->setId($intUserId); + $objUser->setStatus((int)$_POST['new_status']); + if ($objUserModel->editStatus($objUser)) { + $_SESSION['message_success'] = "Le statut a bien été modifié !"; + } + } + elseif ($_POST['action'] === 'delete_user') { + $objUserModel->delete_soft($intUserId); + $_SESSION['message_success'] = "L'utilisateur a été supprimé."; + } + header("Location: index.php?ctrl=admin&action=admin"); + exit; + } + } + + //affichage select des users + $arrUser = $objUserModel->findAllUsers(); + $arrUserToDisplay = array(); + + foreach($arrUser as $arrDetUser){ + $objUser = new User; + $objUser->hydrate($arrDetUser); + $arrUserToDisplay[] = $objUser; + } + + //affichage select des authorisations + $objAuthorisationModel = new AuthorisationModel; + $arrAuthorisation = $objAuthorisationModel->findAllAuthorisation(); + $arrAuthorisationToDisplay = array(); + + foreach($arrAuthorisation as $arrDetAuthorisation){ + $objAuthorisation = new Authorisation; + $objAuthorisation->hydrate($arrDetAuthorisation); + $arrAuthorisationToDisplay[] = $objAuthorisation; + } //gérer l'affichage - $this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay; + $this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay; + $this->_arrData['arrUserToDisplay'] = $arrUserToDisplay; + $this->_arrData['arrAuthorisationToDisplay'] = $arrAuthorisationToDisplay; $this->_display("admin"); } } diff --git a/entities/authorisation_entity.php b/entities/authorisation_entity.php new file mode 100644 index 0000000..1cb600b --- /dev/null +++ b/entities/authorisation_entity.php @@ -0,0 +1,24 @@ +_prefix = 'authorisation_'; + } + + public function getId():int{ + return $this->_id; + } + public function setId(int $id){ + $this->_id = $id; + } + + public function getName():string{ + return $this->_name; + } + + } \ No newline at end of file diff --git a/models/authorisation_model.php b/models/authorisation_model.php new file mode 100644 index 0000000..84a3dd6 --- /dev/null +++ b/models/authorisation_model.php @@ -0,0 +1,29 @@ +_db->query($strRq)->fetchAll(); + } + + } \ No newline at end of file diff --git a/models/user_model.php b/models/user_model.php index 72f1ada..fd682e7 100644 --- a/models/user_model.php +++ b/models/user_model.php @@ -22,7 +22,8 @@ public function findAllUsers():array{ // Ecrire la requête $strRq = "SELECT user_id, user_firstname, user_name, user_image, user_status, authorisation_name - FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status"; + FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status + WHERE user_deleted_at IS NULL"; // Lancer la requête et récupérer les résultats return $this->_db->query($strRq)->fetchAll(); } @@ -50,7 +51,6 @@ } } - //public function insert(string $strName, string $strFirstname, string $strMail, string $strPwd):int{ /** * Fonction d'insertion d'un utilisateur en BDD * @param object $objUser L'objet utilisateur @@ -75,13 +75,10 @@ $rqPrep->bindValue(':location', $objUser->getLocation() ?? "", PDO::PARAM_STR); $rqPrep->bindValue(':description', $objUser->getDescription() ?? "", PDO::PARAM_STR); - - - // 3. Executer la requête - //var_dump($strRq);die; - //return $db->exec($strRq); return $rqPrep->execute(); } + + public function mailExists(string $mail): bool { $rq = $this->_db->prepare("SELECT 1 FROM users WHERE user_mail = :mail LIMIT 1"); @@ -90,4 +87,38 @@ return (bool)$rq->fetchColumn(); } + + /** + * Fonction de changement de status d'un utilisateur + * @param object $objUser L'objet utilisateur + * @return bool Est-ce que la requête s'est bien passée (true/false) + */ + + public function editStatus(object $objUser):bool{ + + $strRq = "UPDATE users + SET user_status = :status + WHERE user_id = :id"; + + $rqPrep = $this->_db->prepare($strRq); + $rqPrep->bindValue(":id", $objUser->getId(), PDO::PARAM_INT); + $rqPrep->bindValue(":status", $objUser->getStatus(), PDO::PARAM_INT); + return $rqPrep->execute(); + } + + /** + * Fonction permettant de supprimer un utilisateur avec une date de suppression + * @param int $intId L'identifiant de l'utilisateur + * @return bool Est-ce que la requête s'est bien passée (true/false) + */ + public function delete_soft(int $intId):bool{ + + $strRq = "UPDATE users + SET user_deleted_at = NOW() + WHERE user_id = :id"; + + $rqPrep = $this->_db->prepare($strRq); + $rqPrep->bindValue(":id", $intId, PDO::PARAM_INT); + return $rqPrep->execute(); + } } diff --git a/templates_c/5375cd75c92fd8c801b429efee0d6437582d377e_0.file_login.tpl.php b/templates_c/5375cd75c92fd8c801b429efee0d6437582d377e_0.file_login.tpl.php index c008541..272b1ad 100644 --- a/templates_c/5375cd75c92fd8c801b429efee0d6437582d377e_0.file_login.tpl.php +++ b/templates_c/5375cd75c92fd8c801b429efee0d6437582d377e_0.file_login.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989df814ecac5_82975272', + 'unifunc' => 'content_6989f5152cc653_86103445', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989df814ecac5_82975272 (\Smarty\Template $_smarty_tpl) { +function content_6989f5152cc653_86103445 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_10819558166989df814817a5_66837906', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_15010700106989f5152c2920_08155243', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_10819558166989df814817a5_66837906 extends \Smarty\Runtime\Block +class Block_15010700106989f5152c2920_08155243 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php index 2f9bc08..00e05e0 100644 --- a/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php +++ b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989e0891f99a9_84268185', + 'unifunc' => 'content_6989f7051730f9_04925440', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_6989e0891f99a9_84268185 (\Smarty\Template $_smarty_tpl) { +function content_6989f7051730f9_04925440 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_1226719426989e0891f66b5_10703637', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_15212756776989f70516f3e1_13586621', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_1226719426989e0891f66b5_10703637 extends \Smarty\Runtime\Block +class Block_15212756776989f70516f3e1_13586621 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php b/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php index d200d8c..515379e 100644 --- a/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php +++ b/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989e088f38338_64666135', + 'unifunc' => 'content_6989f704df71e4_04792390', 'has_nocache_code' => false, 'file_dependency' => array ( 'ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb' => array ( 0 => 'views/admin.tpl', - 1 => 1770643565, + 1 => 1770649348, 2 => 'file', ), ), @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989e088f38338_64666135 (\Smarty\Template $_smarty_tpl) { +function content_6989f704df71e4_04792390 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_19184882506989e088f2e080_15773704', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_3881550706989f704ddce33_55904583', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_19184882506989e088f2e080_15773704 extends \Smarty\Runtime\Block +class Block_3881550706989f704ddce33_55904583 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; @@ -124,29 +124,48 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
-
+
-
- + + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrUserToDisplay'), 'user'); $foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('arrDetStatus')->value) { +foreach ($_from ?? [] as $_smarty_tpl->getVariable('user')->value) { $foreach0DoElse = false; ?> - - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> - -
-
- -
+ + +
+
+ + +
+
@@ -160,9 +179,9 @@ $_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrCategoryToDisplay'), 'category'); -$foreach1DoElse = true; +$foreach2DoElse = true; foreach ($_from ?? [] as $_smarty_tpl->getVariable('category')->value) { -$foreach1DoElse = false; +$foreach2DoElse = false; ?>


-
- +

Créer une nouvelle catégorie

diff --git a/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php b/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php index 7788209..21e1321 100644 --- a/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php +++ b/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989e0893afd86_56926620', + 'unifunc' => 'content_6989f705319402_84731853', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989e0893afd86_56926620 (\Smarty\Template $_smarty_tpl) { +function content_6989f705319402_84731853 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?>
diff --git a/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php b/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php index ea41c4f..fac3081 100644 --- a/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php +++ b/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989e0892c1ac1_16523199', + 'unifunc' => 'content_6989f705231fa9_63622618', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989e0892c1ac1_16523199 (\Smarty\Template $_smarty_tpl) { +function content_6989f705231fa9_63622618 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?> diff --git a/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php b/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php index a805224..27b8b42 100644 --- a/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php +++ b/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989e02ebdb495_34139226', + 'unifunc' => 'content_6989f51a5fd501_76959549', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989e02ebdb495_34139226 (\Smarty\Template $_smarty_tpl) { +function content_6989f51a5fd501_76959549 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?> diff --git a/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php b/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php index d2cd1e7..5350786 100644 --- a/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php +++ b/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989e02e94a704_31389377', + 'unifunc' => 'content_6989f51a3af749_66573336', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,20 +21,20 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989e02e94a704_31389377 (\Smarty\Template $_smarty_tpl) { +function content_6989f51a3af749_66573336 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_6558155986989e02e945ff4_36336799', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_17367792036989f51a3abb88_04857391', "content"); ?> getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_6558155986989e02e945ff4_36336799 extends \Smarty\Runtime\Block +class Block_17367792036989f51a3abb88_04857391 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php b/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php index 2b7bcbe..a00c323 100644 --- a/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php +++ b/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989e01e399336_22269044', + 'unifunc' => 'content_6989f51198b742_67072597', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989e01e399336_22269044 (\Smarty\Template $_smarty_tpl) { +function content_6989f51198b742_67072597 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_17525989336989e01e3837e7_64042990', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_2211957246989f511978f29_13934431', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_17525989336989e01e3837e7_64042990 extends \Smarty\Runtime\Block +class Block_2211957246989f511978f29_13934431 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/ee86afd5d4dff200944f3436866afa34a71b920e_0.file_inscription.tpl.php b/templates_c/ee86afd5d4dff200944f3436866afa34a71b920e_0.file_inscription.tpl.php new file mode 100644 index 0000000..8711773 --- /dev/null +++ b/templates_c/ee86afd5d4dff200944f3436866afa34a71b920e_0.file_inscription.tpl.php @@ -0,0 +1,218 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989f3e29dbce4_20550543', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ee86afd5d4dff200944f3436866afa34a71b920e' => + array ( + 0 => 'views/inscription.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989f3e29dbce4_20550543 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_18645663486989f3e29da446_83083224', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_18645663486989f3e29da446_83083224 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + + + +
+ + +
+
+ + +
+ + +

Inscription

+ + +

+ Créez votre compte utilisateur. +

+ + + + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ @ + +
+
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+ + Déjà un compte ? + Se connecter + +
+ + +
+ + +
+ +
+
+
+
-
+
-
- -
-
- -
+
+
+ + +
+
+ + +
+
@@ -123,12 +132,11 @@


-
- +

Créer une nouvelle catégorie

From f4414d57041f89c9b27173c601af47a24ed56e2f Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Mon, 9 Feb 2026 16:11:04 +0100 Subject: [PATCH 04/45] Ajout de mise a jour auto serv --- .github/workflows/deploy.yml | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..3e6ee9b --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,38 @@ +name: Deploy production (servyass) + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Deploy via SSH + uses: appleboy/ssh-action@v1.0.0 + with: + host: ${{ secrets.SSH_HOST }} + username: yass + key: ${{ secrets.SSH_KEY }} + port: 22 + script: | + set -e + + echo "➡️ Deploy start" + + cd /var/www/projet_php + + echo "➡️ Pull main" + git fetch origin main + git reset --hard origin/main + + echo "➡️ Permissions" + chown -R yass:www-data /var/www/projet_php + chmod -R 775 /var/www/projet_php/templates_c + + echo "➡️ Clear Smarty cache" + rm -rf /var/www/projet_php/templates_c/* + + echo "✅ Deploy finished" From 07d946bd93450175dca6e8ccac8f610515a16563 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Mon, 9 Feb 2026 16:20:24 +0100 Subject: [PATCH 05/45] test --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3e6ee9b..8d2211f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -13,9 +13,9 @@ jobs: - name: Deploy via SSH uses: appleboy/ssh-action@v1.0.0 with: - host: ${{ secrets.SSH_HOST }} + host: boulayoune.com username: yass - key: ${{ secrets.SSH_KEY }} + key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIgURSQrA0I59Wr1xhGZ4j0GoZ9G5TkLNupyugNWsYvv yasserboulayoune@outlook.com port: 22 script: | set -e From acdadd92f0feb7c1c2e3f59bb48f46e35be097f8 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Mon, 9 Feb 2026 16:24:44 +0100 Subject: [PATCH 06/45] Ajout de mise a jour auto serv --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8d2211f..4c6fbae 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,7 +15,7 @@ jobs: with: host: boulayoune.com username: yass - key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIgURSQrA0I59Wr1xhGZ4j0GoZ9G5TkLNupyugNWsYvv yasserboulayoune@outlook.com + key: ${{ secrets.SSH_KEY }} port: 22 script: | set -e From cf4a4e405601ff7c8ee7ae8b406a551d8f404550 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Mon, 9 Feb 2026 16:27:56 +0100 Subject: [PATCH 07/45] Ajout de mise a jour auto serv encore --- .github/workflows/deploy.yml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4c6fbae..fac8e98 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -13,26 +13,27 @@ jobs: - name: Deploy via SSH uses: appleboy/ssh-action@v1.0.0 with: - host: boulayoune.com - username: yass - key: ${{ secrets.SSH_KEY }} - port: 22 + host: boulayoune.com # ton serveur + username: yass # ton utilisateur SSH + key: ${{ secrets.SSH_KEY }} # clé privée SSH sécurisée + port: 22 # port SSH (par défaut 22) script: | set -e - echo "➡️ Deploy start" + echo "➡️ Début du déploiement" + # Aller dans le dossier du projet cd /var/www/projet_php - echo "➡️ Pull main" + echo "➡️ Mise à jour depuis GitHub" git fetch origin main git reset --hard origin/main - echo "➡️ Permissions" + echo "➡️ Correction des permissions Smarty" chown -R yass:www-data /var/www/projet_php chmod -R 775 /var/www/projet_php/templates_c - echo "➡️ Clear Smarty cache" + echo "➡️ Nettoyage du cache Smarty" rm -rf /var/www/projet_php/templates_c/* - echo "✅ Deploy finished" + echo "✅ Déploiement terminé" From 0065d789e36d1d20b37a5cc99d7888203545aa89 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Mon, 9 Feb 2026 19:36:10 +0100 Subject: [PATCH 08/45] Ajout de mise a jour auto serv encore encore cnore enceojh --- .github/workflows/deploy.yml | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fac8e98..7a0debf 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -13,10 +13,10 @@ jobs: - name: Deploy via SSH uses: appleboy/ssh-action@v1.0.0 with: - host: boulayoune.com # ton serveur - username: yass # ton utilisateur SSH - key: ${{ secrets.SSH_KEY }} # clé privée SSH sécurisée - port: 22 # port SSH (par défaut 22) + host: boulayoune.com + username: yass + key: ${{ secrets.SSH_KEY }} + port: 22 script: | set -e @@ -26,14 +26,19 @@ jobs: cd /var/www/projet_php echo "➡️ Mise à jour depuis GitHub" - git fetch origin main - git reset --hard origin/main + # On force le nettoyage pour éviter les conflits de fichiers locaux + sudo git fetch origin main + sudo git reset --hard origin/main - echo "➡️ Correction des permissions Smarty" - chown -R yass:www-data /var/www/projet_php - chmod -R 775 /var/www/projet_php/templates_c + echo "➡️ Correction des permissions et nettoyage" + # Utilisation de sudo pour les tâches root + sudo chown -R yass:www-data /var/www/projet_php + + # On s'assure que le dossier templates_c existe avant le chmod + mkdir -p /var/www/projet_php/templates_c + sudo chmod -R 775 /var/www/projet_php/templates_c - echo "➡️ Nettoyage du cache Smarty" - rm -rf /var/www/projet_php/templates_c/* + echo "➡️ Vidage du cache Smarty" + sudo rm -rf /var/www/projet_php/templates_c/* - echo "✅ Déploiement terminé" + echo "✅ Déploiement terminé avec succès !" \ No newline at end of file From e0902db07fec93c71902f92a5955ea42e14a0998 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Mon, 9 Feb 2026 19:49:26 +0100 Subject: [PATCH 09/45] cette fois c'est la bonne mdrr --- .github/workflows/deploy.yml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7a0debf..0e21ae3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -11,34 +11,30 @@ jobs: steps: - name: Deploy via SSH - uses: appleboy/ssh-action@v1.0.0 + uses: appleboy/ssh-action@master # On passe sur la version master with: host: boulayoune.com username: yass key: ${{ secrets.SSH_KEY }} port: 22 + # Cette option aide si le format de clé pose souci au handshake + fingerprint: ${{ secrets.SSH_FINGERPRINT }} # Optionnel + script_stop: true script: | set -e - echo "➡️ Début du déploiement" - - # Aller dans le dossier du projet cd /var/www/projet_php - + echo "➡️ Mise à jour depuis GitHub" - # On force le nettoyage pour éviter les conflits de fichiers locaux sudo git fetch origin main sudo git reset --hard origin/main echo "➡️ Correction des permissions et nettoyage" - # Utilisation de sudo pour les tâches root sudo chown -R yass:www-data /var/www/projet_php - - # On s'assure que le dossier templates_c existe avant le chmod - mkdir -p /var/www/projet_php/templates_c + sudo mkdir -p /var/www/projet_php/templates_c sudo chmod -R 775 /var/www/projet_php/templates_c echo "➡️ Vidage du cache Smarty" sudo rm -rf /var/www/projet_php/templates_c/* - echo "✅ Déploiement terminé avec succès !" \ No newline at end of file + echo "✅ Déploiement terminé" \ No newline at end of file From b7a5e1cbd08f749b54b8d5f60ccaf1195f000041 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Mon, 9 Feb 2026 19:52:21 +0100 Subject: [PATCH 10/45] cetkzjhfozhgfzekjf --- .github/workflows/deploy.yml | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0e21ae3..0678f75 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -11,30 +11,18 @@ jobs: steps: - name: Deploy via SSH - uses: appleboy/ssh-action@master # On passe sur la version master + uses: appleboy/ssh-action@master with: host: boulayoune.com username: yass key: ${{ secrets.SSH_KEY }} port: 22 - # Cette option aide si le format de clé pose souci au handshake - fingerprint: ${{ secrets.SSH_FINGERPRINT }} # Optionnel - script_stop: true + debug: true script: | - set -e - echo "➡️ Début du déploiement" + echo "➡️ Connexion réussie !" cd /var/www/projet_php - - echo "➡️ Mise à jour depuis GitHub" sudo git fetch origin main sudo git reset --hard origin/main - - echo "➡️ Correction des permissions et nettoyage" sudo chown -R yass:www-data /var/www/projet_php - sudo mkdir -p /var/www/projet_php/templates_c sudo chmod -R 775 /var/www/projet_php/templates_c - - echo "➡️ Vidage du cache Smarty" - sudo rm -rf /var/www/projet_php/templates_c/* - - echo "✅ Déploiement terminé" \ No newline at end of file + sudo rm -rf /var/www/projet_php/templates_c/* \ No newline at end of file From 4e9b27772bb3aec1465f6fcf9a13e2abc4462216 Mon Sep 17 00:00:00 2001 From: GuillaumeH-Cci Date: Tue, 10 Feb 2026 08:42:18 +0100 Subject: [PATCH 11/45] =?UTF-8?q?Fonctionnalit=C3=A9=20Mod=C3=A9ration=20s?= =?UTF-8?q?ous=20Smarty=20+=20D=C3=A9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/project_controller.php | 42 +++ controllers/user_controller.php | 3 - models/mother_model.php | 14 +- models/project_model.php | 28 ++ ...149077158460_0.file_projet_display.tpl.php | 128 +++++++++ ...519973f0177a783a4561_0.file_header.tpl.php | 115 ++++++++ ...803dc4119c46e490c52_0.file_preview.tpl.php | 81 ++++++ ...12628e44c1dff2d9365b_0.file_search.tpl.php | 261 ++++++++++++++++++ ...8ed73fcd1924b1bda41b_0.file_layout.tpl.php | 50 ++++ ...f5b7b444b7670474263f88_0.file_home.tpl.php | 71 +++++ ...0dc5baa93ac9d38bfe874_0.file_login.tpl.php | 164 +++++++++++ ...9dcacc6c7b4e161e98a2_0.file_footer.tpl.php | 63 +++++ views/_partial/preview.tpl | 48 ++-- 13 files changed, 1046 insertions(+), 22 deletions(-) create mode 100644 templates_c/061ec8f4caa90f6cac9dd0d1f101149077158460_0.file_projet_display.tpl.php create mode 100644 templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php create mode 100644 templates_c/3848b4db17319a951391d803dc4119c46e490c52_0.file_preview.tpl.php create mode 100644 templates_c/55cbb497c7dde2dae3a712628e44c1dff2d9365b_0.file_search.tpl.php create mode 100644 templates_c/708269d7487a64eac6b48ed73fcd1924b1bda41b_0.file_layout.tpl.php create mode 100644 templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php create mode 100644 templates_c/b7b39f4634df66c24660dc5baa93ac9d38bfe874_0.file_login.tpl.php create mode 100644 templates_c/cef94db5b9dde613f0f79dcacc6c7b4e161e98a2_0.file_footer.tpl.php diff --git a/controllers/project_controller.php b/controllers/project_controller.php index af2e9fa..244753b 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -256,4 +256,46 @@ header("Location: index.php?ctrl=project&action=home"); exit; } + + public function accept(){ + + //Récupéré l'id dans l'url + $intId = $_GET['id']; + + //Je créer un nouveau model pour exec la commande SQL + $objProjectModel = new ProjectModel; + $objProjectModel->accept($intId); + + //Redirection vers la page + header("Location: index.php"); + exit; + } + + public function refuse(){ + + //Récupéré l'id dans l'url + $intId = $_GET['id']; + + //Je créer un nouveau model pour exec la commande SQL + $objProjectModel = new ProjectModel; + $objProjectModel->refuse($intId); + + //Redirection vers la page + header("Location: index.php"); + exit; + } + + public function delete(){ + + //Récupéré l'id dans l'url + $intId = $_GET['id']; + + //Je créer un nouveau model pour exec la commande SQL + $objProjectModel = new ProjectModel; + $objProjectModel->delete($intId); + + //Redirection vers la page + header("Location: index.php"); + exit; + } } \ No newline at end of file diff --git a/controllers/user_controller.php b/controllers/user_controller.php index 70e2599..b6938e1 100644 --- a/controllers/user_controller.php +++ b/controllers/user_controller.php @@ -147,7 +147,4 @@ class UserCtrl extends MotherCtrl { // Affichage de la vue inscription $this->_display("inscription"); } - - - } diff --git a/models/mother_model.php b/models/mother_model.php index c259719..f70ed7a 100644 --- a/models/mother_model.php +++ b/models/mother_model.php @@ -20,4 +20,16 @@ echo "Échec : " . $e->getMessage(); } } - } \ No newline at end of file + } + + /** + Pour passer sur le serveur de YASS: + *"mysql:host=boulayoune.com;dbname=projet_folliow", // Serveur et BDD + "projet_user", //Nom d'utilisateur de la base de données + "F0lliowRules!",// Mot de passe de la base de données + + Pour passer en local: + "mysql:host=localhost;dbname=projet_folliow", // Serveur et BDD + "root", //Nom d'utilisateur de la base de données + "",// Mot de passe de la base de données + */ \ No newline at end of file diff --git a/models/project_model.php b/models/project_model.php index d88e02d..95168d1 100644 --- a/models/project_model.php +++ b/models/project_model.php @@ -112,4 +112,32 @@ return $rqPrep->fetch(); } + + public function accept(int $id){ + + //SQL pour changer le status en accept + $strRq = "UPDATE project + SET project_status= 'publié' + WHERE project_id =".$id; + + //retourne la commande + return $this->_db->query($strRq); + } + + public function refuse(int $id){ + + $strRq = "UPDATE project + SET project_status= 'refusé' + WHERE project_id =".$id; + + return $this->_db->query($strRq); + } + + public function delete(int $id){ + + $strRq = "DELETE FROM project + WHERE project_id =".$id; + + return $this->_db->query($strRq); + } } \ No newline at end of file diff --git a/templates_c/061ec8f4caa90f6cac9dd0d1f101149077158460_0.file_projet_display.tpl.php b/templates_c/061ec8f4caa90f6cac9dd0d1f101149077158460_0.file_projet_display.tpl.php new file mode 100644 index 0000000..825c29f --- /dev/null +++ b/templates_c/061ec8f4caa90f6cac9dd0d1f101149077158460_0.file_projet_display.tpl.php @@ -0,0 +1,128 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989e58c411304_60305191', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '061ec8f4caa90f6cac9dd0d1f101149077158460' => + array ( + 0 => 'views/projet_display.tpl', + 1 => 1770639154, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989e58c411304_60305191 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_13978244256989e58c406518_61332798', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_13978244256989e58c406518_61332798 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +?> + +
+ + + +
Email envoyé avec succès.
+ +
Erreur lors de l'envoi de l'email.
+ + +
+ + +
+ +

getValue('objProject')->getTitle();?> +

+ +

+ getValue('arrProject')['category_name'] ?? 'Général';?> + +

+ +
+ +
+ +
+

Description

+

getValue('objProject')->getDescription();?> +

+ +
+ getValue('objProject')->getContent();?> + +
+
+ + +
+ + + + + + + + + +
+ +
+ + +
+
+ + + +
getValue('objProject')->getCreatorName();?> +
+ +

+ Publié le getValue('objProject')->getCreation_date();?> + +

+ + + +
+
+ +
+
+getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989f726978651_30802796', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '20a11b6ecdc7e0959bdb519973f0177a783a4561' => + array ( + 0 => 'views/_partial/header.tpl', + 1 => 1770639154, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989f726978651_30802796 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; +?> + + + + + + + + + src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"> +> + Folliow + + + + +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989f7269f97f7_68511256', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '3848b4db17319a951391d803dc4119c46e490c52' => + array ( + 0 => 'views/_partial/preview.tpl', + 1 => 1770646177, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989f7269f97f7_68511256 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; +?> + + +
+
+ +
+ +
+ +
+ + Photo de profil + +
+

getValue('objProject')->getTitle();?> +

+ + + + – getValue('objProject')->getCreatorname();?> + + + + + Lire la suite → + +
+ +
+ +
+ getValue('objProject')->getStatus() == "en_attente") {?> + + getValue('projectStatus') == "refusé") {?> +

Portfolio refusé

+ +
getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989e5b1383d99_95399806', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '55cbb497c7dde2dae3a712628e44c1dff2d9365b' => + array ( + 0 => 'views/search.tpl', + 1 => 1770639154, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/preview.tpl' => 1, + ), +))) { +function content_6989e5b1383d99_95399806 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_10517171146989e5b1375aa5_10994726', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_10517171146989e5b1375aa5_10994726 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +?> + +
+

Rechercher parmi les articles

+
+
+
+

+ + Rechercher des articles +

+ +
+
+ + + + Recherchez dans les titres et contenus + +
+ +
+ + +
+ + +
+
+ Type de recherche par date +
+ getValue('intPeriod') == 0) {?>checked + aria-controls="date-exact date-range"> + +
+
+ getValue('intPeriod') == 1) {?>checked + aria-controls="date-exact date-range"> + +
+
+
+ +
+
+ Type de recherche par catégories +
+ + +
+
+
+ +
+ + + + Format: JJ/MM/AAAA + +
+ + + +
+ + +
+
+
+
+ + +
+

Liste des projets

+
+ getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProject')) == 0) {?> +
+

Pas de résultats

+
+ + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach2DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach2DoElse = false; +?> + renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+
+
+
+ +> + // Gestion de l'affichage des champs de date + const periodRadios = document.querySelectorAll('input[name="period"]'); + const dateExact = document.getElementById('date-exact'); + const dateRange = document.getElementById('date-range'); + + function toggleDateFields() { + const selectedPeriod = document.querySelector('input[name="period"]:checked').value; + + if (selectedPeriod === '0') { + dateExact.style.display = 'block'; + dateRange.style.display = 'none'; + } else { + dateExact.style.display = 'none'; + dateRange.style.display = 'block'; + } + } + + periodRadios.forEach(radio => { + radio.addEventListener('change', toggleDateFields); + }); + + // Initialisation au chargement + toggleDateFields(); + +> +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989f726914163_83904848', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '708269d7487a64eac6b48ed73fcd1924b1bda41b' => + array ( + 0 => 'views/layout.tpl', + 1 => 1770639154, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/header.tpl' => 1, + 'file:views/_partial/footer.tpl' => 1, + ), +))) { +function content_6989f726914163_83904848 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, false); +$_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_14089017836989f726912e95_86271581', "content"); +?> + + +renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +} +/* {block "content"} */ +class Block_14089017836989f726912e95_86271581 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +?> + + +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989f72687e0c8_78461032', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '7e6dbbb1e41ad859e7f5b7b444b7670474263f88' => + array ( + 0 => 'views/home.tpl', + 1 => 1770639154, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/preview.tpl' => 1, + ), +))) { +function content_6989f72687e0c8_78461032 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_15962470546989f72687a521_39502617', "content"); +?> + +getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_15962470546989f72687a521_39502617 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +?> + +
+

Folliow

+

Là où les talents rencontrent leur avenir

+

Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. + Créer un portfolio réellement pertinent aux exigences du marché et rentrez + directement en contact avec les entreprises.

+
+ +
+

Les 4 derniers articles

+
+ + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach0DoElse = false; +?> + renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989f71c761896_25894348', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'b7b39f4634df66c24660dc5baa93ac9d38bfe874' => + array ( + 0 => 'views/login.tpl', + 1 => 1770639154, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989f71c761896_25894348 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_19992775976989f71c758fc2_34188356', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_19992775976989f71c758fc2_34188356 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +?> + +
+ getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrError')) > 0) {?> +
+ getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrError'), 'strError'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('strError')->value) { +$foreach0DoElse = false; +?> +

getValue('strError');?> +

+ getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+ + +
+ + +
+ +
+ + +
+
+ + +
+ + +

Connexion

+ + +

+ Connectez-vous à votre compte. +

+ + + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ + Pas encore de compte ? + Créer un compte + +
+ + + + +
+
+ +
+ +
+
+
+
+getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989f726ac4850_67307943', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'cef94db5b9dde613f0f79dcacc6c7b4e161e98a2' => + array ( + 0 => 'views/_partial/footer.tpl', + 1 => 1770639154, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989f726ac4850_67307943 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; +?> + + + src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"> +> + + src="js/scripts.js"> +> + + - {* PHOTO DE PROFIL *} - Photo de profil + {* PHOTO DE PROFIL *} + Photo de profil - {* INFOS *} -
-

{$objProject->getTitle()}

+ {* INFOS *} +
+

{$objProject->getTitle()}

- - - – {$objProject->getCreatorname()} - + + + – {$objProject->getCreatorname()} + - - Lire la suite → - -
+ + Lire la suite → + +
-
+
+ {*Controle de l'utilisateur ainsi que du status du projet*} + {if isset($smarty.session.user) + and $smarty.session.user.user_status == 2 + and $objProject->getStatus() eq "en_attente"} + + {elseif $projectStatus eq "refusé"} +

Portfolio refusé

+ {/if} \ No newline at end of file From d64f59430e92c7a07d38ca4b30f0e68ab03d9db8 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:18:51 +0100 Subject: [PATCH 12/45] eee --- .github/workflows/deploy.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0678f75..be3a9a0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,7 +15,8 @@ jobs: with: host: boulayoune.com username: yass - key: ${{ secrets.SSH_KEY }} + key: | + ${{ secrets.SSH_KEY }} port: 22 debug: true script: | From 8ce49943dddb9e34c2805dae29f9bf403f8daa1f Mon Sep 17 00:00:00 2001 From: "laura.chevillet" Date: Tue, 10 Feb 2026 11:23:29 +0100 Subject: [PATCH 13/45] =?UTF-8?q?Fonctionnalit=C3=A9=20tri=20cat=C3=A9gori?= =?UTF-8?q?e=20et=20date=20ok.=20Nettoyage=20du=20code=20et=20des=20commen?= =?UTF-8?q?taires=20de=20tous=20les=20models?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/project_controller.php | 23 ++-- models/authorisation_model.php | 1 - models/category_model.php | 10 +- models/image_model.php | 1 + models/project_model.php | 42 +++--- models/user_model.php | 42 +++--- ...69c67d6dd307aa06ae3_0.file_project.tpl.php | 110 +++++++++++++++ ...ce4a78a4dbca_0.file_projet_display.tpl.php | 128 ++++++++++++++++++ ...429efee0d6437582d377e_0.file_login.tpl.php | 10 +- ...af2d8a8255035d91b950_0.file_layout.tpl.php | 10 +- ...3f0963ead4008a7bda8fb_0.file_admin.tpl.php | 27 ++-- ...809f87f59bd19d86da99_0.file_footer.tpl.php | 6 +- ...531347290b4e4994470b_0.file_header.tpl.php | 6 +- ...7634a5658ae38c7b520_0.file_preview.tpl.php | 6 +- ...b03b8d137ec1edb99bdd92_0.file_home.tpl.php | 31 +++-- ...f497c64277110a78bc40_0.file_search.tpl.php | 10 +- views/admin.tpl | 15 +- views/home.tpl | 19 +-- 18 files changed, 381 insertions(+), 116 deletions(-) create mode 100644 templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php create mode 100644 templates_c/52c011ce77c5dc743b6591550c55ce4a78a4dbca_0.file_projet_display.tpl.php diff --git a/controllers/project_controller.php b/controllers/project_controller.php index af2e9fa..6f469f0 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -23,9 +23,20 @@ */ public function home(){ + + + $intCategory = 0; + if (!empty($_GET['filter_cat'])) { + $intCategory = (int) $_GET['filter_cat']; + } + + $boolOld = false; + if (!empty($_GET['filter_old']) && $_GET['filter_old'] == 'true') { + $boolOld = true; + } $objProjectModel = new ProjectModel; - $arrProject = $objProjectModel->findAll(); + $arrProject = $objProjectModel->findAll(0,'',0,0,'','','',$intCategory,$boolOld); $arrProjectToDisplay = array(); foreach($arrProject as $arrDetProject){ $objProject = new Project; @@ -34,8 +45,6 @@ } $this->_arrData['arrProjectToDisplay'] = $arrProjectToDisplay; - - $this->_display("home"); } @@ -43,8 +52,8 @@ /** * Fonction d'affichage de la barre de recherche */ - public function search(){ + //Récupérer les informations du formulaire $strKeywords = $_POST['keywords']??''; $intAuthor = $_POST['author']??0; @@ -87,8 +96,6 @@ /** * Fonction d'affichage de la page projet */ - - public function project (){ $objProjectModel = new ProjectModel; @@ -151,9 +158,9 @@ $objProjectModel->insert($objProject); } - //Débuggage + /*Débuggage var_dump($_SESSION); - var_dump($objProject); + var_dump($objProject);*/ $this->_arrData['arrProjectToDiplay'] = $arrProjectToDiplay; $this->_arrData['arrImageToDiplay'] = $arrImageToDiplay; diff --git a/models/authorisation_model.php b/models/authorisation_model.php index 84a3dd6..010660b 100644 --- a/models/authorisation_model.php +++ b/models/authorisation_model.php @@ -17,7 +17,6 @@ * fonction de récupération des infos d'authorisation * @return array */ - public function findAllAuthorisation():array{ $strRq = "SELECT * diff --git a/models/category_model.php b/models/category_model.php index a23907e..6c48379 100644 --- a/models/category_model.php +++ b/models/category_model.php @@ -10,6 +10,7 @@ /** * Fonction de récupération des catégories + * @param int $intLimit * @return array */ @@ -28,9 +29,8 @@ /** * fonction d'insertion d'une nouvelle catégorie dans la bdd * @param object $objCategory l'objet catégorie - * @return bool Est-ce que la requête s'est bien passée (true/false) + * @return bool Est-ce que la requête s'est bien passée */ - public function insertCategory(object $objCategory):bool{ $strRq = "INSERT INTO category (category_name) @@ -47,9 +47,8 @@ /** * fonction de suppression d'une catégorie dans la bdd * @param object $objCategory l'objet catégorie - * @return bool Est-ce que la requête s'est bien passée (true/false) + * @return bool Est-ce que la requête s'est bien passée */ - public function deleteCategory(object $objCategory):bool{ $strRq = "DELETE FROM category @@ -65,9 +64,8 @@ /** * fonction de modification d'une catégorie dans la bdd * @param object $objCategory l'objet catégorie - * @return bool Est-ce que la requête s'est bien passée (true/false) + * @return bool Est-ce que la requête s'est bien passée */ - public function editCategory(object $objCategory):bool{ $strRq = "UPDATE category diff --git a/models/image_model.php b/models/image_model.php index 2511f06..39e8158 100644 --- a/models/image_model.php +++ b/models/image_model.php @@ -11,6 +11,7 @@ /** * Fonction de récupération des images + * @param int $intLimit * @return array */ diff --git a/models/project_model.php b/models/project_model.php index d88e02d..c0ffece 100644 --- a/models/project_model.php +++ b/models/project_model.php @@ -8,12 +8,17 @@ */ class ProjectModel extends Connect{ - + + + /** + * Fonction de recherche des projets + * @param type string, int et bool + * @return array + */ public function findAll(int $intLimit=0, string $strKeywords='', int $intAuthor=0, int $intPeriod=0, string $strDate='', string $strStartDate='', - string $strEndDate='', int $intCategory=0):array{ + string $strEndDate='', int $intCategory=0, bool $bool6Months=false):array{ - // Ecrire la requête $strRq = "SELECT project.*, CONCAT(user_firstname, ' ', user_name) AS 'project_creatorname', user_image @@ -21,6 +26,7 @@ INNER JOIN users ON user_id = project_user"; $strWhere = " WHERE "; + // Recherche par mot clé if ($strKeywords != '') { $strRq .= " WHERE (project_title LIKE '%".$strKeywords."%' @@ -41,23 +47,25 @@ $strRq .= $strWhere." project_category = ".$intCategory; $strWhere = " AND "; } + + //recherche par ancienneté + if ($bool6Months === true) { + $strRq .= $strWhere . " project_creation_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH) "; + $strWhere = " AND "; + } // Recherche par dates if ($intPeriod == 0){ - // Par date exacte if ($strDate != ''){ $strRq .= $strWhere." project_creation_date = '".$strDate."'"; } }else{ - // Par période de dates if ($strStartDate != '' && $strEndDate != ''){ $strRq .= $strWhere." project_creation_date BETWEEN '".$strStartDate."' AND '".$strEndDate."'"; }else{ if ($strStartDate != ''){ - // A partir de $strRq .= $strWhere." project_creation_date >= '".$strStartDate."'"; }else if ($strEndDate != ''){ - // Avant le $strRq .= $strWhere." project_creation_date <= '".$strEndDate."'"; } } @@ -65,37 +73,39 @@ $strRq .= " ORDER BY project_creation_date DESC"; - if ($intLimit > 0){ $strRq .= " LIMIT ".$intLimit; } - // Lancer la requête et récupérer les résultats return $this->_db->query($strRq)->fetchAll(); } - //Fonction d'insertion d'information dans la BDD (Repris de la partie BLOG vu en cours..) + /** + * Fonction d'insertion d'un nouveau projet dans la bdd + * @param object $objProject l'objet projet + * @return bool Est-ce que la requête s'est bien passée + */ public function insert(object $objProject):bool{ - //Construire la requête $strRq = "INSERT INTO project (project_title, project_description, project_thumbnail, project_content, project_status, project_creation_date) VALUES (:title, :description, :thumbnail, :content, :status, DATE(NOW()))"; - // Préparer la requête $rqPrep = $this->_db->prepare($strRq); - // Donne les informations + $rqPrep->bindValue(":title", $objProject->getTitle(), PDO::PARAM_STR); $rqPrep->bindValue(":description", $objProject->getDescription(), PDO::PARAM_STR); $rqPrep->bindValue(":thumbnail", $objProject->getThumbnail(), PDO::PARAM_STR); $rqPrep->bindValue(":content", $objProject->getContent(), PDO::PARAM_STR); $rqPrep->bindValue(":status", $objProject->getStatus(), PDO::PARAM_STR); - //Executer la requête - //var_dump($strRq);die; - //return $db->exec($strRq); return $rqPrep->execute(); } + /** + * Fonction de recherche d'un seul projet + * @param int $intId + * @return + */ public function findOne(int $intId) { $strRq = "SELECT project.*, CONCAT(users.user_firstname, ' ', users.user_name) AS 'project_creatorname', diff --git a/models/user_model.php b/models/user_model.php index fd682e7..d20b743 100644 --- a/models/user_model.php +++ b/models/user_model.php @@ -5,46 +5,40 @@ /** * Traitement des requêtes pour les utilisateurs * @author : meilleurGroup - * @version : V0.5 */ + class UserModel extends Connect{ - // Attributs - - - // Méthodes + public function __construct(){ parent::__construct(); } /** + * Fonction de recherche des utilisateurs et leur niveau d'autorisation * @return array */ public function findAllUsers():array{ - // Ecrire la requête $strRq = "SELECT user_id, user_firstname, user_name, user_image, user_status, authorisation_name FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status WHERE user_deleted_at IS NULL"; - // Lancer la requête et récupérer les résultats return $this->_db->query($strRq)->fetchAll(); } /** + * Fonction de vérification des utilisateurs * @param string $strMail * @param string $strPwd * @return array|bool */ public function verifUser(string $strMail, string $strPwd):array|bool{ - // 2. Construire la requête + $strRq = "SELECT user_id, user_name, user_firstname, user_password, user_image, user_status, authorisation_name FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status WHERE user_mail = '".$strMail."'"; - // Récupère mon utilisateur - // Executer la requête et récupérer les résultats + $arrUser = $this->_db->query($strRq)->fetch(); - // Vérification du mot de passe haché if (password_verify($strPwd, $arrUser['user_password'])){ - // Renvoi l'utilisateur - unset($arrUser['user_password']); // on enlève le pwd + unset($arrUser['user_password']); return $arrUser; }else{ return false; @@ -54,17 +48,15 @@ /** * Fonction d'insertion d'un utilisateur en BDD * @param object $objUser L'objet utilisateur - * @return bool Est-ce que la requête s'est bien passée (true/false) + * @return bool Est-ce que la requête s'est bien passée */ public function insert(object $objUser):bool{ - - // 2. Construire la requête $strRq = "INSERT INTO users (user_name, user_firstname, user_pseudo, user_mail, user_password, user_phone, user_work, user_location, user_description) VALUES (:name, :firstname, :pseudo,:mail, :pwd, :phone, :work, :location,:description)"; - // Préparer la requête + $rqPrep = $this->_db->prepare($strRq); - // Donne les informations + $rqPrep->bindValue(":name", $objUser->getName(), PDO::PARAM_STR); $rqPrep->bindValue(":firstname", $objUser->getFirstname(), PDO::PARAM_STR); $rqPrep->bindValue(":pseudo", $objUser->getPseudo(), PDO::PARAM_STR); @@ -78,9 +70,13 @@ return $rqPrep->execute(); } - - public function mailExists(string $mail): bool - { + /** + * Fonction de vérification de mail + * @param string $mail + * @return bool Est-ce que la requête s'est bien passée + */ + public function mailExists(string $mail): bool{ + $rq = $this->_db->prepare("SELECT 1 FROM users WHERE user_mail = :mail LIMIT 1"); $rq->bindValue(":mail", $mail); $rq->execute(); @@ -91,7 +87,7 @@ /** * Fonction de changement de status d'un utilisateur * @param object $objUser L'objet utilisateur - * @return bool Est-ce que la requête s'est bien passée (true/false) + * @return bool Est-ce que la requête s'est bien passée */ public function editStatus(object $objUser):bool{ @@ -109,7 +105,7 @@ /** * Fonction permettant de supprimer un utilisateur avec une date de suppression * @param int $intId L'identifiant de l'utilisateur - * @return bool Est-ce que la requête s'est bien passée (true/false) + * @return bool Est-ce que la requête s'est bien passée */ public function delete_soft(int $intId):bool{ diff --git a/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php b/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php new file mode 100644 index 0000000..ecebd4d --- /dev/null +++ b/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php @@ -0,0 +1,110 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698ae9a3ee5104_18468093', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '3309f8a981537e6cbbf8869c67d6dd307aa06ae3' => + array ( + 0 => 'views/project.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:../app/views/partials/preview.tpl' => 1, + ), +))) { +function content_698ae9a3ee5104_18468093 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_2126029828698ae9a3edc808_29541958', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_2126029828698ae9a3edc808_29541958 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + +
+
+

Alimenter votre projet

+
+ + + + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ + +
+
+

Description

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+

Photos behind the scene

+
+ +
+
+
+

Other projects

+
+ getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach0DoElse = false; +?> + renderSubTemplate("file:../app/views/partials/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+
+
+
+ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698ae9506da109_21542800', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '52c011ce77c5dc743b6591550c55ce4a78a4dbca' => + array ( + 0 => 'views/projet_display.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698ae9506da109_21542800 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_919254056698ae95061e435_82964089', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_919254056698ae95061e435_82964089 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + +
+ + + +
Email envoyé avec succès.
+ +
Erreur lors de l'envoi de l'email.
+ + +
+ + +
+ +

getValue('objProject')->getTitle();?> +

+ +

+ getValue('arrProject')['category_name'] ?? 'Général';?> + +

+ +
+ +
+ +
+

Description

+

getValue('objProject')->getDescription();?> +

+ +
+ getValue('objProject')->getContent();?> + +
+
+ + +
+
+ + + + + + + +
+
+ +
+ + +
+
+ + + +
getValue('objProject')->getCreatorName();?> +
+ +

+ Publié le getValue('objProject')->getCreation_date();?> + +

+ + + +
+
+ +
+
+getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f5152cc653_86103445', + 'unifunc' => 'content_698ae969a7db02_27363144', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f5152cc653_86103445 (\Smarty\Template $_smarty_tpl) { +function content_698ae969a7db02_27363144 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_15010700106989f5152c2920_08155243', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_342031104698ae969942f96_18698715', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_15010700106989f5152c2920_08155243 extends \Smarty\Runtime\Block +class Block_342031104698ae969942f96_18698715 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php index 00e05e0..781b34d 100644 --- a/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php +++ b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f7051730f9_04925440', + 'unifunc' => 'content_698aed2fd402f7_78850375', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_6989f7051730f9_04925440 (\Smarty\Template $_smarty_tpl) { +function content_698aed2fd402f7_78850375 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_15212756776989f70516f3e1_13586621', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_691069574698aed2fd3d8f8_28027733', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_15212756776989f70516f3e1_13586621 extends \Smarty\Runtime\Block +class Block_691069574698aed2fd3d8f8_28027733 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php b/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php index 515379e..d4498ba 100644 --- a/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php +++ b/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f704df71e4_04792390', + 'unifunc' => 'content_698aed2fac7079_66630300', 'has_nocache_code' => false, 'file_dependency' => array ( 'ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb' => array ( 0 => 'views/admin.tpl', - 1 => 1770649348, + 1 => 1770712365, 2 => 'file', ), ), @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f704df71e4_04792390 (\Smarty\Template $_smarty_tpl) { +function content_698aed2fac7079_66630300 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_3881550706989f704ddce33_55904583', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_701047722698aed2faa98f9_91663021', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_3881550706989f704ddce33_55904583 extends \Smarty\Runtime\Block +class Block_701047722698aed2faa98f9_91663021 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; @@ -123,12 +123,14 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
+

Gestion de l'utilsateur

+

Changer le statut ou supprimer un utilisateur

-
+
- + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrCategoryToDisplay'), 'category'); $foreach2DoElse = true; @@ -191,7 +195,10 @@ $foreach2DoElse = false; $_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
- +
+ + +
@@ -205,7 +212,7 @@ $_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>

Créer une nouvelle catégorie

- +
diff --git a/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php b/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php index 21e1321..5bc79c5 100644 --- a/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php +++ b/templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f705319402_84731853', + 'unifunc' => 'content_698aed2fea7fd1_77495932', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f705319402_84731853 (\Smarty\Template $_smarty_tpl) { +function content_698aed2fea7fd1_77495932 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?>
diff --git a/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php b/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php index fac3081..83c7e19 100644 --- a/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php +++ b/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f705231fa9_63622618', + 'unifunc' => 'content_698aed2fe0e338_92194390', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f705231fa9_63622618 (\Smarty\Template $_smarty_tpl) { +function content_698aed2fe0e338_92194390 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?> diff --git a/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php b/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php index 27b8b42..7655780 100644 --- a/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php +++ b/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f51a5fd501_76959549', + 'unifunc' => 'content_698ae96d52fa95_22666517', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f51a5fd501_76959549 (\Smarty\Template $_smarty_tpl) { +function content_698ae96d52fa95_22666517 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?> diff --git a/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php b/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php index 5350786..e74f2cb 100644 --- a/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php +++ b/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f51a3af749_66573336', + 'unifunc' => 'content_698ae96d2e58d9_91616548', 'has_nocache_code' => false, 'file_dependency' => array ( 'ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92' => array ( 0 => 'views/home.tpl', - 1 => 1770639710, + 1 => 1770711346, 2 => 'file', ), ), @@ -21,20 +21,20 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989f51a3af749_66573336 (\Smarty\Template $_smarty_tpl) { +function content_698ae96d2e58d9_91616548 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_17367792036989f51a3abb88_04857391', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_826938963698ae96d2e14b1_12340515', "content"); ?> getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_17367792036989f51a3abb88_04857391 extends \Smarty\Runtime\Block +class Block_826938963698ae96d2e14b1_12340515 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; @@ -48,16 +48,17 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; directement en contact avec les entreprises.

-
-
-
- - - - -
-
+
+
+ + + + + + Tout +
+
diff --git a/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php b/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php index a00c323..fa5dbc1 100644 --- a/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php +++ b/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f51198b742_67072597', + 'unifunc' => 'content_698ada80e47fc8_23614044', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989f51198b742_67072597 (\Smarty\Template $_smarty_tpl) { +function content_698ada80e47fc8_23614044 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_2211957246989f511978f29_13934431', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1614324265698ada80a61e02_00521357', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_2211957246989f511978f29_13934431 extends \Smarty\Runtime\Block +class Block_1614324265698ada80a61e02_00521357 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/views/admin.tpl b/views/admin.tpl index d8c1208..af91005 100644 --- a/views/admin.tpl +++ b/views/admin.tpl @@ -85,12 +85,14 @@
+

Gestion de l'utilsateur

+

Changer le statut ou supprimer un utilisateur

-
+
- + {foreach from=$arrCategoryToDisplay item=category} {/foreach}
- +
+ + +
@@ -139,7 +146,7 @@

Créer une nouvelle catégorie

- +
diff --git a/views/home.tpl b/views/home.tpl index d83342d..49c9c0f 100644 --- a/views/home.tpl +++ b/views/home.tpl @@ -9,16 +9,17 @@ directement en contact avec les entreprises.

-
-
-
- - - - -
-
+
+
+ + + + + + Tout +
+
From 48108f717fe8a363af8a60e21556de1526f3e569 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Tue, 10 Feb 2026 12:05:44 +0100 Subject: [PATCH 14/45] =?UTF-8?q?=C3=A7a=20commence=20a=20bien=20me=20cass?= =?UTF-8?q?er=20la=20tete=20=C3=A7a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 19 +++++++++++++------ models/mother_model.php | 6 +++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index be3a9a0..db60a95 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,15 +15,22 @@ jobs: with: host: boulayoune.com username: yass - key: | - ${{ secrets.SSH_KEY }} + key: ${{ secrets.SSH_KEY }} port: 22 - debug: true script: | + set -e echo "➡️ Connexion réussie !" cd /var/www/projet_php - sudo git fetch origin main - sudo git reset --hard origin/main + + echo "➡️ Mise à jour du code..." + # On enlève le SUDO ici pour que Git utilise la clé de l'utilisateur yass + git fetch origin main + git reset --hard origin/main + + echo "➡️ Correction des permissions et nettoyage..." + # On garde le SUDO ici car ces commandes touchent au système sudo chown -R yass:www-data /var/www/projet_php sudo chmod -R 775 /var/www/projet_php/templates_c - sudo rm -rf /var/www/projet_php/templates_c/* \ No newline at end of file + sudo rm -rf /var/www/projet_php/templates_c/* + + echo "✅ Déploiement terminé ! (Shin-en no Egotisu)" \ No newline at end of file diff --git a/models/mother_model.php b/models/mother_model.php index 9bc3881..b7b106d 100644 --- a/models/mother_model.php +++ b/models/mother_model.php @@ -7,9 +7,9 @@ try{ // Connexion à la base de données $this->_db = new PDO( - "mysql:host=localhost;dbname=projet_folliow", // Serveur et BDD mysql:host=boulayoune.com;dbname=projet_folliow - "root", //Nom d'utilisateur de la base de données projet_user - "",// Mot de passe de la base de données F0lliowRules! + "mysql:host=boulayoune.com;dbname=projet_folliow", // Serveur et BDD "mysql:host=localhost;dbname=projet_folliow", + "projet_user", //Nom d'utilisateur de la base de données root + "F0lliowRules!",// Mot de passe de la base de données array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC) // Mode de renvoi ); // Pour résoudre les problèmes d’encodage From f4d5669e444b26ac2c5f83b1a0d3c87353323794 Mon Sep 17 00:00:00 2001 From: "laura.chevillet" Date: Tue, 10 Feb 2026 14:55:34 +0100 Subject: [PATCH 15/45] =?UTF-8?q?Ajout=20de=20la=20page=20user=20fonctionn?= =?UTF-8?q?elle=20(ctrl,=20model=20associ=C3=A9=20etc)=20update=20des=20li?= =?UTF-8?q?ens=20en=20display=20pour=20fonctionnement.=20Correction=20nom?= =?UTF-8?q?=20fichier=20project=5Fdisplay?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/project_controller.php | 2 +- controllers/user_controller.php | 41 +++ models/project_model.php | 26 +- models/user_model.php | 18 +- ...16434b0dddc13d6ee22b4c_0.file_user.tpl.php | 99 +++++++ ...69c67d6dd307aa06ae3_0.file_project.tpl.php | 10 +- ...af2d8a8255035d91b950_0.file_layout.tpl.php | 10 +- ...3f0963ead4008a7bda8fb_0.file_admin.tpl.php | 245 ++++++------------ ...809f87f59bd19d86da99_0.file_footer.tpl.php | 6 +- ...531347290b4e4994470b_0.file_header.tpl.php | 6 +- ...7634a5658ae38c7b520_0.file_preview.tpl.php | 65 +++-- ...f497c64277110a78bc40_0.file_search.tpl.php | 10 +- views/_partial/preview.tpl | 17 +- views/admin.tpl | 227 ++++++---------- ...projet_display.tpl => project_display.tpl} | 10 +- views/user.tpl | 43 +++ 16 files changed, 471 insertions(+), 364 deletions(-) create mode 100644 templates_c/32d027bc6f198a0e3016434b0dddc13d6ee22b4c_0.file_user.tpl.php rename views/{projet_display.tpl => project_display.tpl} (87%) create mode 100644 views/user.tpl diff --git a/controllers/project_controller.php b/controllers/project_controller.php index e5eecb1..7395647 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -181,7 +181,7 @@ $objProject->hydrate($arrProject); $this->_arrData["objProject"] = $objProject; - $this->_display("projet_display"); + $this->_display("project_display"); } else { header("Location: index.php?ctrl=project&action=home"); exit; diff --git a/controllers/user_controller.php b/controllers/user_controller.php index b6938e1..be15ddc 100644 --- a/controllers/user_controller.php +++ b/controllers/user_controller.php @@ -3,6 +3,8 @@ require("models/user_model.php"); require("entities/user_entity.php"); require("mother_controller.php"); + require("./models/project_model.php"); + require("./entities/project_entity.php"); class UserCtrl extends MotherCtrl { @@ -147,4 +149,43 @@ class UserCtrl extends MotherCtrl { // Affichage de la vue inscription $this->_display("inscription"); } + + /** + * le controlleur affichage de la page user + */ + public function user(){ + + $intId = isset($_GET['id']) ? (int)$_GET['id'] : 0; + + if ($intId <= 0) { + header("Location: index.php"); + exit; + } + + //affichage info utilisateur + $objUserModel = new UserModel; + $arrUserData = $objUserModel->findUserById($intId); + + if ($arrUserData === false) { + header("Location: index.php"); + exit; + } + $objUser = new User; + $objUser->hydrate($arrUserData); + + //affichage projet de l'utilisateur + $objProjectModel = new ProjectModel; + $arrProjects = $objProjectModel->findAll(0,'',$intId); + + $arrProjectToDisplay = array(); + foreach($arrProjects as $projectData) { + $objProject = new Project(); + $objProject->hydrate($projectData); + $arrProjectToDisplay[] = $objProject; + } + + $this->_arrData['user'] = $objUser; + $this->_arrData['arrProjectToDisplay'] = $arrProjectToDisplay; + $this->_display("user"); + } } diff --git a/models/project_model.php b/models/project_model.php index 058788a..d6bce18 100644 --- a/models/project_model.php +++ b/models/project_model.php @@ -104,9 +104,9 @@ /** * Fonction de recherche d'un seul projet * @param int $intId - * @return + * @return array */ - public function findOne(int $intId) { + public function findOne(int $intId) :array{ $strRq = "SELECT project.*, CONCAT(users.user_firstname, ' ', users.user_name) AS 'project_creatorname', users.user_image, @@ -150,4 +150,26 @@ return $this->_db->query($strRq); } + + /** + * Fonction de mise à jour d'un projet en BDD + * @param object $objProject L'objet utilisateur + * @return bool Est-ce que la requête s'est bien passée + */ + public function updateProject(object $objProject):bool{ + + $strRq = "UPDATE project + SET project_title = :title, project_description = :description, project_content = :content + WHERE project_id = :id"; + + $rqPrep = $this->_db->prepare($strRq); + + $rqPrep->bindValue(":title", $objProject->getTitle(), PDO::PARAM_STR); + $rqPrep->bindValue(":description", $objProject->getDescription(), PDO::PARAM_STR); + $rqPrep->bindValue(":content", $objProject->getContent(), PDO::PARAM_STR); + + + // Executer la requête + return $rqPrep->execute(); + } } \ No newline at end of file diff --git a/models/user_model.php b/models/user_model.php index d20b743..baa46dd 100644 --- a/models/user_model.php +++ b/models/user_model.php @@ -116,5 +116,21 @@ $rqPrep = $this->_db->prepare($strRq); $rqPrep->bindValue(":id", $intId, PDO::PARAM_INT); return $rqPrep->execute(); - } + } + + /** + * Récupère les informations d'un utilisateur par son ID + * @param int $intId L'identifiant de l'utilisateur + * @return array Tableau associatif (ou false si pas trouvé) + */ + public function findUserById(int $intId): array|bool { + + $strRq = "SELECT * FROM users WHERE user_id = :id"; + + $prep = $this->_db->prepare($strRq); + $prep->bindValue(':id', $intId, PDO::PARAM_INT); + $prep->execute(); + + return $prep->fetch(); + } } diff --git a/templates_c/32d027bc6f198a0e3016434b0dddc13d6ee22b4c_0.file_user.tpl.php b/templates_c/32d027bc6f198a0e3016434b0dddc13d6ee22b4c_0.file_user.tpl.php new file mode 100644 index 0000000..d919b98 --- /dev/null +++ b/templates_c/32d027bc6f198a0e3016434b0dddc13d6ee22b4c_0.file_user.tpl.php @@ -0,0 +1,99 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698b36e931d9d8_07796633', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '32d027bc6f198a0e3016434b0dddc13d6ee22b4c' => + array ( + 0 => 'views/user.tpl', + 1 => 1770729421, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/preview.tpl' => 1, + ), +))) { +function content_698b36e931d9d8_07796633 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_2035018945698b36e930efe0_69529586', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_2035018945698b36e930efe0_69529586 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + + + +
+

Les projets de getValue('user')->getPseudo();?> +

+ +
+ getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProjectToDisplay')) > 0) {?> + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach0DoElse = false; +?> +
+ renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> +
+ getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> + +

Cet utilisateur n'a pas encore publié de projets.

+ +
+
+ +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698ae9a3ee5104_18468093', + 'unifunc' => 'content_698b26e1f18ff9_58457550', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:../app/views/partials/preview.tpl' => 1, ), ))) { -function content_698ae9a3ee5104_18468093 (\Smarty\Template $_smarty_tpl) { +function content_698b26e1f18ff9_58457550 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_2126029828698ae9a3edc808_29541958', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1455455414698b26e1f12061_00705481', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_2126029828698ae9a3edc808_29541958 extends \Smarty\Runtime\Block +class Block_1455455414698b26e1f12061_00705481 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php index 781b34d..f131330 100644 --- a/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php +++ b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698aed2fd402f7_78850375', + 'unifunc' => 'content_698b36e945e8a9_68963664', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_698aed2fd402f7_78850375 (\Smarty\Template $_smarty_tpl) { +function content_698b36e945e8a9_68963664 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_691069574698aed2fd3d8f8_28027733', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1250254212698b36e945d469_86185066', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_691069574698aed2fd3d8f8_28027733 extends \Smarty\Runtime\Block +class Block_1250254212698b36e945d469_86185066 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php b/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php index d4498ba..80215d3 100644 --- a/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php +++ b/templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698aed2fac7079_66630300', + 'unifunc' => 'content_698b2a791a5267_98917235', 'has_nocache_code' => false, 'file_dependency' => array ( 'ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb' => array ( 0 => 'views/admin.tpl', - 1 => 1770712365, + 1 => 1770728055, 2 => 'file', ), ), @@ -20,213 +20,138 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_698aed2fac7079_66630300 (\Smarty\Template $_smarty_tpl) { +function content_698b2a791a5267_98917235 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_701047722698aed2faa98f9_91663021', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_510378351698b2a7919aa53_66812766', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_701047722698aed2faa98f9_91663021 extends \Smarty\Runtime\Block +class Block_510378351698b2a7919aa53_66812766 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; ?> -
- - - -
-
- -
- -
-
-
-

Dashboard

-
- -
-
-

Gestion de l'utilsateur

-

Changer le statut ou supprimer un utilisateur

-
-
- -
-
-
- + + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrUserToDisplay'), 'user'); $foreach0DoElse = true; foreach ($_from ?? [] as $_smarty_tpl->getVariable('user')->value) { $foreach0DoElse = false; ?> - - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> - - + + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrAuthorisationToDisplay'), 'arrDetAuthorisation'); $foreach1DoElse = true; foreach ($_from ?? [] as $_smarty_tpl->getVariable('arrDetAuthorisation')->value) { $foreach1DoElse = false; ?> - - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> - -
-
- - -
-
-
+
-
- -
-
-

Gestion des catégories

-
-
-
-

Modifier une catégorie existante

- + + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrCategoryToDisplay'), 'category'); $foreach2DoElse = true; foreach ($_from ?? [] as $_smarty_tpl->getVariable('category')->value) { $foreach2DoElse = false; ?> - - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> - -
-
- - -
- -
-
-
+
-
-
- -
-
-

Créer une nouvelle catégorie

-
- - -
-
- -
-
-
+
+ +
-
- + + +
+
+
+
+
+ +
+
+

Créer une nouvelle catégorie

+
+ + +
+
+ +
+
+
-
+
-
+
+
+
Connecté avec le compte : + + + getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698aed2fea7fd1_77495932', + 'unifunc' => 'content_698b36e981e641_42574835', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_698aed2fea7fd1_77495932 (\Smarty\Template $_smarty_tpl) { +function content_698b36e981e641_42574835 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?>
diff --git a/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php b/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php index 83c7e19..326f02a 100644 --- a/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php +++ b/templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698aed2fe0e338_92194390', + 'unifunc' => 'content_698b36e9514ec8_80997361', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_698aed2fe0e338_92194390 (\Smarty\Template $_smarty_tpl) { +function content_698b36e9514ec8_80997361 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?> diff --git a/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php b/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php index 7655780..00d165e 100644 --- a/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php +++ b/templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698ae96d52fa95_22666517', + 'unifunc' => 'content_698b36e9636399_70389179', 'has_nocache_code' => false, 'file_dependency' => array ( 'b70ee0d22061ca6100f647634a5658ae38c7b520' => array ( 0 => 'views/_partial/preview.tpl', - 1 => 1770634036, + 1 => 1770730137, 2 => 'file', ), ), @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_698ae96d52fa95_22666517 (\Smarty\Template $_smarty_tpl) { +function content_698b36e9636399_70389179 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; ?> @@ -38,32 +38,57 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial';
- getValue('objProject')->getUser_image();?> " - class="rounded-circle flex-shrink-0 mt-2 ml-5" - style="width: 48px; height: 48px; object-fit: cover;" - alt="Photo de profil"> + class="rounded-circle flex-shrink-0 mt-2 ml-5" + style="width: 48px; height: 48px; object-fit: cover;" + alt="Photo de profil"> -
-

getValue('objProject')->getTitle();?> +
+

getValue('objProject')->getTitle();?>

- - - getValue('objProject')->getId();?> " - class="stretched-link small"> - Lire la suite → - -
+ class="stretched-link small"> + Lire la suite → + + getValue('objProject')->getUser()) {?> + + Editer + + +

-
+
+ getValue('objProject')->getStatus() == "en_attente") {?> +
+ Accepter + Refuser + Supprimer +
+ getValue('projectStatus') == "refusé") {?> +

Portfolio refusé

+ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698ada80e47fc8_23614044', + 'unifunc' => 'content_698b32a2af19c0_80830560', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_698ada80e47fc8_23614044 (\Smarty\Template $_smarty_tpl) { +function content_698b32a2af19c0_80830560 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_1614324265698ada80a61e02_00521357', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1683455369698b32a2adef91_98812453', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_1614324265698ada80a61e02_00521357 extends \Smarty\Runtime\Block +class Block_1683455369698b32a2adef91_98812453 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; diff --git a/views/_partial/preview.tpl b/views/_partial/preview.tpl index 3ed2470..e247ef4 100644 --- a/views/_partial/preview.tpl +++ b/views/_partial/preview.tpl @@ -26,13 +26,24 @@ - – {$objProject->getCreatorname()} + – + + {$objProject->getCreatorname()} + - Lire la suite → + class="stretched-link small"> + Lire la suite → + {if $smarty.session.user.user_id == $objProject->getUser()} + + Editer + + {/if} diff --git a/views/admin.tpl b/views/admin.tpl index af91005..7b0fefe 100644 --- a/views/admin.tpl +++ b/views/admin.tpl @@ -2,164 +2,89 @@ {block name="content"} -
- - - -
-
-
- -
-
-
-

Dashboard

-
- -
-
-

Gestion de l'utilsateur

-

Changer le statut ou supprimer un utilisateur

-
+ +
+
+

Gestion des catégories

+
+
+
+

Modifier une catégorie existante

+ +
+
+ + +
+ +
+
+
+
+
+
+ +
+
+

Créer une nouvelle catégorie

+
+ + +
- +
- -
- - -
-
- - -
-
-
+
- -
-
-

Gestion des catégories

-
-
-
-

Modifier une catégorie existante

- -
-
- - -
- -
-
-
-
-
-
- -
-
-

Créer une nouvelle catégorie

-
- - -
-
- -
-
-
-
-
- -
-
+
-
+ + +
Connecté avec le compte : {$smarty.session.user.user_name} {$smarty.session.user.user_firstname} + {/block} \ No newline at end of file diff --git a/views/projet_display.tpl b/views/project_display.tpl similarity index 87% rename from views/projet_display.tpl rename to views/project_display.tpl index 21301dc..181802c 100644 --- a/views/projet_display.tpl +++ b/views/project_display.tpl @@ -58,11 +58,11 @@
- - - + + +
{$objProject->getCreatorName()}

diff --git a/views/user.tpl b/views/user.tpl new file mode 100644 index 0000000..f295280 --- /dev/null +++ b/views/user.tpl @@ -0,0 +1,43 @@ +{extends file="views/layout.tpl"} + +{block name="content"} + +

+ +
+

Les projets de {$user->getPseudo()}

+ +
+ {if count($arrProjectToDisplay) > 0} + {foreach $arrProjectToDisplay as $objProject} +
+ {include file="views/_partial/preview.tpl"} +
+ {/foreach} + {else} +

Cet utilisateur n'a pas encore publié de projets.

+ {/if} +
+
+ +{/block} \ No newline at end of file From 1df2ed36a5e8ee96ae787b12c67ace204e68b009 Mon Sep 17 00:00:00 2001 From: GuillaumeH-Cci Date: Tue, 10 Feb 2026 16:17:59 +0100 Subject: [PATCH 16/45] =?UTF-8?q?D=C3=A9but=20de=20la=20fonctionnalit?= =?UTF-8?q?=C3=A9=20de=20d=C3=A9p=C3=B4t=20de=20Img=20dans=20le=20projet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/admin_controller.php | 88 ++++-- controllers/project_controller.php | 43 +-- controllers/user_controller.php | 4 - entities/authorisation_entity.php | 24 ++ entities/project_entity.php | 1 + entities/user_entity.php | 1 + models/authorisation_model.php | 28 ++ models/category_model.php | 52 +++- models/image_model.php | 1 + models/mother_model.php | 6 +- models/project_model.php | 42 +-- models/user_model.php | 81 ++++-- ...519973f0177a783a4561_0.file_header.tpl.php | 6 +- ...69c67d6dd307aa06ae3_0.file_project.tpl.php | 110 ++++++++ ...803dc4119c46e490c52_0.file_preview.tpl.php | 8 +- ...ce4a78a4dbca_0.file_projet_display.tpl.php | 128 +++++++++ ...429efee0d6437582d377e_0.file_login.tpl.php | 164 +++++++++++ ...8ed73fcd1924b1bda41b_0.file_layout.tpl.php | 10 +- ...f5b7b444b7670474263f88_0.file_home.tpl.php | 25 +- ...af2d8a8255035d91b950_0.file_layout.tpl.php | 50 ++++ ...3f0963ead4008a7bda8fb_0.file_admin.tpl.php | 235 ++++++++++++++++ ...809f87f59bd19d86da99_0.file_footer.tpl.php | 63 +++++ ...531347290b4e4994470b_0.file_header.tpl.php | 115 ++++++++ ...7634a5658ae38c7b520_0.file_preview.tpl.php | 69 +++++ ...0dc5baa93ac9d38bfe874_0.file_login.tpl.php | 10 +- ...b03b8d137ec1edb99bdd92_0.file_home.tpl.php | 84 ++++++ ...9dcacc6c7b4e161e98a2_0.file_footer.tpl.php | 6 +- ...c0e3f74733796438d51_0.file_project.tpl.php | 123 +++++++++ ...f497c64277110a78bc40_0.file_search.tpl.php | 261 ++++++++++++++++++ ...66afa34a71b920e_0.file_inscription.tpl.php | 218 +++++++++++++++ ...d_Researcher_of_the_Ring__Idle_Sprite.webp | Bin 0 -> 112174 bytes ...ant_To_Get_Beat__Hurtily__Idle_Sprite.webp | Bin 0 -> 241396 bytes views/admin.tpl | 94 ++++--- views/home.tpl | 13 + views/project.tpl | 19 +- 35 files changed, 2014 insertions(+), 168 deletions(-) create mode 100644 entities/authorisation_entity.php create mode 100644 models/authorisation_model.php create mode 100644 templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php create mode 100644 templates_c/52c011ce77c5dc743b6591550c55ce4a78a4dbca_0.file_projet_display.tpl.php create mode 100644 templates_c/5375cd75c92fd8c801b429efee0d6437582d377e_0.file_login.tpl.php create mode 100644 templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php create mode 100644 templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php create mode 100644 templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php create mode 100644 templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php create mode 100644 templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php create mode 100644 templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php create mode 100644 templates_c/e3f999d4206c004969123c0e3f74733796438d51_0.file_project.tpl.php create mode 100644 templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php create mode 100644 templates_c/ee86afd5d4dff200944f3436866afa34a71b920e_0.file_inscription.tpl.php create mode 100644 uploads/projects/320px-Mad_Researcher_of_the_Ring__Idle_Sprite.webp create mode 100644 uploads/projects/800px-You_Want_To_Get_Beat__Hurtily__Idle_Sprite.webp diff --git a/controllers/admin_controller.php b/controllers/admin_controller.php index 63e92a1..8e4a509 100644 --- a/controllers/admin_controller.php +++ b/controllers/admin_controller.php @@ -8,6 +8,8 @@ require("./entities/image_entity.php"); require("./models/user_model.php"); require("./entities/user_entity.php"); + require("./models/authorisation_model.php"); + require("./entities/authorisation_entity.php"); require("mother_controller.php"); /** @@ -18,33 +20,33 @@ class AdminCtrl extends MotherCtrl{ public function admin(){ - /*accès à la page admin + if (!isset($_SESSION['user']) && ($_SESSION['user']['user_status'] != 1 )){ header("Location:index.php?ctrl=error&action=error_403"); exit; - }*/ + } + + //gestion de l'user $objCategoryModel = new CategoryModel; if (!empty($_POST['new_category'])) { - $objNewCategory = new Category; - if (!empty($objNewCategory->getName())) { - $objNewCategory = $_POST['new_category']; - $objCategoryModel->insertCategory($objNewCategory); - header("Location:index.php?ctrl=admin&action=admin"); - exit; - } + $newCat = new Category(); + $newCat->setName($_POST['new_category']); + $objCategoryModel->insertCategory($newCat); + header('Location: index.php?ctrl=admin&action=admin'); + exit; } - if (!empty($_POST['edit_category'])) { - $objEditCategory = new Category; - if ($objEditCategory->getId() > 0) { - $objEditCategory = $_POST['edit_category']; - $objCategoryModel->editCategory($objEditCategory); - header("Location:index.php?ctrl=admin&action=admin"); - exit; - } + if (!empty($_POST['id_to_edit']) && !empty($_POST['new_name'])) { + $editCat = new Category(); + $editCat->setId($_POST['id_to_edit']); + $editCat->setName($_POST['new_name']); + $objCategoryModel->editCategory($editCat); + header('Location: index.php?ctrl=admin&action=admin'); + exit; } + //affichage select des catégories $arrCategory = $objCategoryModel->findAllCategory(); $arrCategoryToDisplay = array(); @@ -53,10 +55,56 @@ $objCategory->hydrate($arrDetCategory); $arrCategoryToDisplay[] = $objCategory; } + + //gestion de l'user + $objUserModel = new UserModel; + + if (!empty($_POST['action'])) { + $intUserId = (int)$_POST['user_id']; + + if ($intUserId > 0) { + if ($_POST['action'] === 'update_status' && !empty($_POST['new_status'])) { + $objUser = new User(); + $objUser->setId($intUserId); + $objUser->setStatus((int)$_POST['new_status']); + if ($objUserModel->editStatus($objUser)) { + $_SESSION['message_success'] = "Le statut a bien été modifié !"; + } + } + elseif ($_POST['action'] === 'delete_user') { + $objUserModel->delete_soft($intUserId); + $_SESSION['message_success'] = "L'utilisateur a été supprimé."; + } + header("Location: index.php?ctrl=admin&action=admin"); + exit; + } + } + + //affichage select des users + $arrUser = $objUserModel->findAllUsers(); + $arrUserToDisplay = array(); + + foreach($arrUser as $arrDetUser){ + $objUser = new User; + $objUser->hydrate($arrDetUser); + $arrUserToDisplay[] = $objUser; + } + + //affichage select des authorisations + $objAuthorisationModel = new AuthorisationModel; + $arrAuthorisation = $objAuthorisationModel->findAllAuthorisation(); + $arrAuthorisationToDisplay = array(); + + foreach($arrAuthorisation as $arrDetAuthorisation){ + $objAuthorisation = new Authorisation; + $objAuthorisation->hydrate($arrDetAuthorisation); + $arrAuthorisationToDisplay[] = $objAuthorisation; + } - // Il faudra donner à maman et gérer l'affichage quand Smarty sera prêt - $this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay; - //$this->_arrData['intCategory'] = $objCategoryModel->; + //gérer l'affichage + $this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay; + $this->_arrData['arrUserToDisplay'] = $arrUserToDisplay; + $this->_arrData['arrAuthorisationToDisplay'] = $arrAuthorisationToDisplay; $this->_display("admin"); } } diff --git a/controllers/project_controller.php b/controllers/project_controller.php index 244753b..98f8e0c 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -23,9 +23,20 @@ */ public function home(){ + + + $intCategory = 0; + if (!empty($_GET['filter_cat'])) { + $intCategory = (int) $_GET['filter_cat']; + } + + $boolOld = false; + if (!empty($_GET['filter_old']) && $_GET['filter_old'] == 'true') { + $boolOld = true; + } $objProjectModel = new ProjectModel; - $arrProject = $objProjectModel->findAll(); + $arrProject = $objProjectModel->findAll(0,'',0,0,'','','',$intCategory,$boolOld); $arrProjectToDisplay = array(); foreach($arrProject as $arrDetProject){ $objProject = new Project; @@ -34,8 +45,6 @@ } $this->_arrData['arrProjectToDisplay'] = $arrProjectToDisplay; - - $this->_display("home"); } @@ -43,8 +52,8 @@ /** * Fonction d'affichage de la barre de recherche */ - public function search(){ + //Récupérer les informations du formulaire $strKeywords = $_POST['keywords']??''; $intAuthor = $_POST['author']??0; @@ -87,8 +96,6 @@ /** * Fonction d'affichage de la page projet */ - - public function project (){ $objProjectModel = new ProjectModel; @@ -112,33 +119,33 @@ $_SESSION['title'] = $_POST['titleProject']??""; $_SESSION['description'] = $_POST['descProject']??""; $_SESSION['content'] = $_POST['textProject']??""; - $_SESSION['thumbnail'] = $_FILES['imageProject']['name']??""; + $_SESSION['thumbnail'] = $_FILES['imageThumbnail']['name']??""; $_SESSION['status'] = 'en_attente'; $objProject = new Project(); /** - /* Créer par Besnik le GOAT et l'autre GOAT de Guillaume - /* - /* @return bool pour savoir si le fichier existe, - /* puis déplace vers le fichier uploads avec les images projet des utilisateurs - /* Communication avec la BDD + * Créer par Besnik le GOAT et l'autre GOAT de Guillaume + * + * @return bool pour savoir si le fichier existe, + * puis déplace vers le fichier uploads avec les images projet des utilisateurs + * Communication avec la BDD */ if (($_SESSION['thumbnail'] != null)){ $strDest = ""; if ((count($_FILES) > 0) && ($_FILES['imageProject']['error'] != 4)){ - $strDest = '../public/uploads/projects/'.$_FILES['imageProject']['name']; + $strDest = 'uploads/projects/'.$_FILES['imageProject']['name']; var_dump($strDest); move_uploaded_file($_FILES['imageProject']['tmp_name'], $strDest); } } /** En cas d'appuis sur le bouton d'envoie ou celui de remettre a plus tard - /* 1. Changement de status - /* 2. Hydratation avec les informations récupéré de l'utilisateur - /* 3. Envoie des données à la BDD - */ + * 1. Changement de status + * 2. Hydratation avec les informations récupéré de l'utilisateur + * 3. Envoie des données à la BDD + */ if (isset($_POST['sendMessage'])) { $_SESSION['status'] = 'publié'; $objProject->hydrate($_SESSION); @@ -151,14 +158,12 @@ $objProjectModel->insert($objProject); } - //Débuggage var_dump($_SESSION); var_dump($objProject); $this->_arrData['arrProjectToDiplay'] = $arrProjectToDiplay; $this->_arrData['arrImageToDiplay'] = $arrImageToDiplay; $this->_display("project"); - } diff --git a/controllers/user_controller.php b/controllers/user_controller.php index b6938e1..f231dd3 100644 --- a/controllers/user_controller.php +++ b/controllers/user_controller.php @@ -41,12 +41,8 @@ class UserCtrl extends MotherCtrl { } } $this->_arrData['arrError'] = $arrError; - - - $this->_display("login"); - } diff --git a/entities/authorisation_entity.php b/entities/authorisation_entity.php new file mode 100644 index 0000000..1cb600b --- /dev/null +++ b/entities/authorisation_entity.php @@ -0,0 +1,24 @@ +_prefix = 'authorisation_'; + } + + public function getId():int{ + return $this->_id; + } + public function setId(int $id){ + $this->_id = $id; + } + + public function getName():string{ + return $this->_name; + } + + } \ No newline at end of file diff --git a/entities/project_entity.php b/entities/project_entity.php index ab9047e..0a389bf 100644 --- a/entities/project_entity.php +++ b/entities/project_entity.php @@ -200,6 +200,7 @@ class Project extends Entity{ public function setCreatorName($creatorname){ $this->_creatorname = $creatorname; } + /** * Récupération du chemin photo profil * @return string nom du chemin photo profil diff --git a/entities/user_entity.php b/entities/user_entity.php index 0d4a9e8..7d320b9 100644 --- a/entities/user_entity.php +++ b/entities/user_entity.php @@ -111,6 +111,7 @@ public function getAccountCreation():string{ return $this->_account_creation; } + public function setAccountCreation(string $account_creation){ $this->_account_creation = $account_creation; } diff --git a/models/authorisation_model.php b/models/authorisation_model.php new file mode 100644 index 0000000..010660b --- /dev/null +++ b/models/authorisation_model.php @@ -0,0 +1,28 @@ +_db->query($strRq)->fetchAll(); + } + + } \ No newline at end of file diff --git a/models/category_model.php b/models/category_model.php index 6432a9a..6c48379 100644 --- a/models/category_model.php +++ b/models/category_model.php @@ -10,6 +10,7 @@ /** * Fonction de récupération des catégories + * @param int $intLimit * @return array */ @@ -27,21 +28,56 @@ /** * fonction d'insertion d'une nouvelle catégorie dans la bdd - * @param object $objUser L'objet utilisateur - * @return bool Est-ce que la requête s'est bien passée (true/false) + * @param object $objCategory l'objet catégorie + * @return bool Est-ce que la requête s'est bien passée */ + public function insertCategory(object $objCategory):bool{ - public function insert(object $objCategory):bool{ - - $strRq = "INSERT INTO category (category_name, category_parent) - VALUES (:name, :parent)"; + $strRq = "INSERT INTO category (category_name) + VALUES (:name)"; $rqPrep = $this->_db->prepare($strRq); $rqPrep->bindValue(":name", $objCategory->getName(), PDO::PARAM_STR); - $rqPrep->bindValue(":parent", $objCategory->getParent(), PDO::PARAM_STR); return $rqPrep->execute(); } - } \ No newline at end of file + + /** + * fonction de suppression d'une catégorie dans la bdd + * @param object $objCategory l'objet catégorie + * @return bool Est-ce que la requête s'est bien passée + */ + public function deleteCategory(object $objCategory):bool{ + + $strRq = "DELETE FROM category + WHERE category_id= :id"; + + $rqPrep = $this->_db->prepare($strRq); + + $rqPrep->bindValue(":id", $objCategory->getId(), PDO::PARAM_INT); + + return $rqPrep->execute(); + } + + /** + * fonction de modification d'une catégorie dans la bdd + * @param object $objCategory l'objet catégorie + * @return bool Est-ce que la requête s'est bien passée + */ + public function editCategory(object $objCategory):bool{ + + $strRq = "UPDATE category + SET category_name = :name + WHERE category_id = :id"; + + $rqPrep = $this->_db->prepare($strRq); + + $rqPrep->bindValue(":id", $objCategory->getId(), PDO::PARAM_INT); + $rqPrep->bindValue(":name", $objCategory->getName(), PDO::PARAM_STR); + + return $rqPrep->execute(); + } + } + \ No newline at end of file diff --git a/models/image_model.php b/models/image_model.php index 2511f06..39e8158 100644 --- a/models/image_model.php +++ b/models/image_model.php @@ -11,6 +11,7 @@ /** * Fonction de récupération des images + * @param int $intLimit * @return array */ diff --git a/models/mother_model.php b/models/mother_model.php index f70ed7a..9bc3881 100644 --- a/models/mother_model.php +++ b/models/mother_model.php @@ -7,9 +7,9 @@ try{ // Connexion à la base de données $this->_db = new PDO( - "mysql:host=boulayoune.com;dbname=projet_folliow", // Serveur et BDD - "projet_user", //Nom d'utilisateur de la base de données - "F0lliowRules!",// Mot de passe de la base de données + "mysql:host=localhost;dbname=projet_folliow", // Serveur et BDD mysql:host=boulayoune.com;dbname=projet_folliow + "root", //Nom d'utilisateur de la base de données projet_user + "",// Mot de passe de la base de données F0lliowRules! array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC) // Mode de renvoi ); // Pour résoudre les problèmes d’encodage diff --git a/models/project_model.php b/models/project_model.php index 95168d1..058788a 100644 --- a/models/project_model.php +++ b/models/project_model.php @@ -8,12 +8,17 @@ */ class ProjectModel extends Connect{ - + + + /** + * Fonction de recherche des projets + * @param type string, int et bool + * @return array + */ public function findAll(int $intLimit=0, string $strKeywords='', int $intAuthor=0, int $intPeriod=0, string $strDate='', string $strStartDate='', - string $strEndDate='', int $intCategory=0):array{ + string $strEndDate='', int $intCategory=0, bool $bool6Months=false):array{ - // Ecrire la requête $strRq = "SELECT project.*, CONCAT(user_firstname, ' ', user_name) AS 'project_creatorname', user_image @@ -21,6 +26,7 @@ INNER JOIN users ON user_id = project_user"; $strWhere = " WHERE "; + // Recherche par mot clé if ($strKeywords != '') { $strRq .= " WHERE (project_title LIKE '%".$strKeywords."%' @@ -41,23 +47,25 @@ $strRq .= $strWhere." project_category = ".$intCategory; $strWhere = " AND "; } + + //recherche par ancienneté + if ($bool6Months === true) { + $strRq .= $strWhere . " project_creation_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH) "; + $strWhere = " AND "; + } // Recherche par dates if ($intPeriod == 0){ - // Par date exacte if ($strDate != ''){ $strRq .= $strWhere." project_creation_date = '".$strDate."'"; } }else{ - // Par période de dates if ($strStartDate != '' && $strEndDate != ''){ $strRq .= $strWhere." project_creation_date BETWEEN '".$strStartDate."' AND '".$strEndDate."'"; }else{ if ($strStartDate != ''){ - // A partir de $strRq .= $strWhere." project_creation_date >= '".$strStartDate."'"; }else if ($strEndDate != ''){ - // Avant le $strRq .= $strWhere." project_creation_date <= '".$strEndDate."'"; } } @@ -65,37 +73,39 @@ $strRq .= " ORDER BY project_creation_date DESC"; - if ($intLimit > 0){ $strRq .= " LIMIT ".$intLimit; } - // Lancer la requête et récupérer les résultats return $this->_db->query($strRq)->fetchAll(); } - //Fonction d'insertion d'information dans la BDD (Repris de la partie BLOG vu en cours..) + /** + * Fonction d'insertion d'un nouveau projet dans la bdd + * @param object $objProject l'objet projet + * @return bool Est-ce que la requête s'est bien passée + */ public function insert(object $objProject):bool{ - //Construire la requête $strRq = "INSERT INTO project (project_title, project_description, project_thumbnail, project_content, project_status, project_creation_date) VALUES (:title, :description, :thumbnail, :content, :status, DATE(NOW()))"; - // Préparer la requête $rqPrep = $this->_db->prepare($strRq); - // Donne les informations + $rqPrep->bindValue(":title", $objProject->getTitle(), PDO::PARAM_STR); $rqPrep->bindValue(":description", $objProject->getDescription(), PDO::PARAM_STR); $rqPrep->bindValue(":thumbnail", $objProject->getThumbnail(), PDO::PARAM_STR); $rqPrep->bindValue(":content", $objProject->getContent(), PDO::PARAM_STR); $rqPrep->bindValue(":status", $objProject->getStatus(), PDO::PARAM_STR); - //Executer la requête - //var_dump($strRq);die; - //return $db->exec($strRq); return $rqPrep->execute(); } + /** + * Fonction de recherche d'un seul projet + * @param int $intId + * @return + */ public function findOne(int $intId) { $strRq = "SELECT project.*, CONCAT(users.user_firstname, ' ', users.user_name) AS 'project_creatorname', diff --git a/models/user_model.php b/models/user_model.php index 72f1ada..d20b743 100644 --- a/models/user_model.php +++ b/models/user_model.php @@ -5,66 +5,58 @@ /** * Traitement des requêtes pour les utilisateurs * @author : meilleurGroup - * @version : V0.5 */ + class UserModel extends Connect{ - // Attributs - - - // Méthodes + public function __construct(){ parent::__construct(); } /** + * Fonction de recherche des utilisateurs et leur niveau d'autorisation * @return array */ public function findAllUsers():array{ - // Ecrire la requête $strRq = "SELECT user_id, user_firstname, user_name, user_image, user_status, authorisation_name - FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status"; - // Lancer la requête et récupérer les résultats + FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status + WHERE user_deleted_at IS NULL"; return $this->_db->query($strRq)->fetchAll(); } /** + * Fonction de vérification des utilisateurs * @param string $strMail * @param string $strPwd * @return array|bool */ public function verifUser(string $strMail, string $strPwd):array|bool{ - // 2. Construire la requête + $strRq = "SELECT user_id, user_name, user_firstname, user_password, user_image, user_status, authorisation_name FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status WHERE user_mail = '".$strMail."'"; - // Récupère mon utilisateur - // Executer la requête et récupérer les résultats + $arrUser = $this->_db->query($strRq)->fetch(); - // Vérification du mot de passe haché if (password_verify($strPwd, $arrUser['user_password'])){ - // Renvoi l'utilisateur - unset($arrUser['user_password']); // on enlève le pwd + unset($arrUser['user_password']); return $arrUser; }else{ return false; } } - //public function insert(string $strName, string $strFirstname, string $strMail, string $strPwd):int{ /** * Fonction d'insertion d'un utilisateur en BDD * @param object $objUser L'objet utilisateur - * @return bool Est-ce que la requête s'est bien passée (true/false) + * @return bool Est-ce que la requête s'est bien passée */ public function insert(object $objUser):bool{ - - // 2. Construire la requête $strRq = "INSERT INTO users (user_name, user_firstname, user_pseudo, user_mail, user_password, user_phone, user_work, user_location, user_description) VALUES (:name, :firstname, :pseudo,:mail, :pwd, :phone, :work, :location,:description)"; - // Préparer la requête + $rqPrep = $this->_db->prepare($strRq); - // Donne les informations + $rqPrep->bindValue(":name", $objUser->getName(), PDO::PARAM_STR); $rqPrep->bindValue(":firstname", $objUser->getFirstname(), PDO::PARAM_STR); $rqPrep->bindValue(":pseudo", $objUser->getPseudo(), PDO::PARAM_STR); @@ -75,19 +67,54 @@ $rqPrep->bindValue(':location', $objUser->getLocation() ?? "", PDO::PARAM_STR); $rqPrep->bindValue(':description', $objUser->getDescription() ?? "", PDO::PARAM_STR); - - - // 3. Executer la requête - //var_dump($strRq);die; - //return $db->exec($strRq); return $rqPrep->execute(); } - public function mailExists(string $mail): bool - { + + /** + * Fonction de vérification de mail + * @param string $mail + * @return bool Est-ce que la requête s'est bien passée + */ + public function mailExists(string $mail): bool{ + $rq = $this->_db->prepare("SELECT 1 FROM users WHERE user_mail = :mail LIMIT 1"); $rq->bindValue(":mail", $mail); $rq->execute(); return (bool)$rq->fetchColumn(); } + + /** + * Fonction de changement de status d'un utilisateur + * @param object $objUser L'objet utilisateur + * @return bool Est-ce que la requête s'est bien passée + */ + + public function editStatus(object $objUser):bool{ + + $strRq = "UPDATE users + SET user_status = :status + WHERE user_id = :id"; + + $rqPrep = $this->_db->prepare($strRq); + $rqPrep->bindValue(":id", $objUser->getId(), PDO::PARAM_INT); + $rqPrep->bindValue(":status", $objUser->getStatus(), PDO::PARAM_INT); + return $rqPrep->execute(); + } + + /** + * Fonction permettant de supprimer un utilisateur avec une date de suppression + * @param int $intId L'identifiant de l'utilisateur + * @return bool Est-ce que la requête s'est bien passée + */ + public function delete_soft(int $intId):bool{ + + $strRq = "UPDATE users + SET user_deleted_at = NOW() + WHERE user_id = :id"; + + $rqPrep = $this->_db->prepare($strRq); + $rqPrep->bindValue(":id", $intId, PDO::PARAM_INT); + return $rqPrep->execute(); + } } diff --git a/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php b/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php index ab2a5b4..42ebec8 100644 --- a/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php +++ b/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f726978651_30802796', + 'unifunc' => 'content_698b49a6a94424_69678291', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f726978651_30802796 (\Smarty\Template $_smarty_tpl) { +function content_698b49a6a94424_69678291 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?> diff --git a/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php b/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php new file mode 100644 index 0000000..ecebd4d --- /dev/null +++ b/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php @@ -0,0 +1,110 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698ae9a3ee5104_18468093', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '3309f8a981537e6cbbf8869c67d6dd307aa06ae3' => + array ( + 0 => 'views/project.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:../app/views/partials/preview.tpl' => 1, + ), +))) { +function content_698ae9a3ee5104_18468093 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_2126029828698ae9a3edc808_29541958', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_2126029828698ae9a3edc808_29541958 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + +
+
+

Alimenter votre projet

+
+ + + + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+ + +
+
+

Description

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+

Photos behind the scene

+
+ +
+
+
+

Other projects

+
+ getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach0DoElse = false; +?> + renderSubTemplate("file:../app/views/partials/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+
+
+
+ +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f7269f97f7_68511256', + 'unifunc' => 'content_698b3af030ae20_50383766', 'has_nocache_code' => false, 'file_dependency' => array ( '3848b4db17319a951391d803dc4119c46e490c52' => array ( 0 => 'views/_partial/preview.tpl', - 1 => 1770646177, + 1 => 1770721040, 2 => 'file', ), ), @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f7269f97f7_68511256 (\Smarty\Template $_smarty_tpl) { +function content_698b3af030ae20_50383766 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?> diff --git a/templates_c/52c011ce77c5dc743b6591550c55ce4a78a4dbca_0.file_projet_display.tpl.php b/templates_c/52c011ce77c5dc743b6591550c55ce4a78a4dbca_0.file_projet_display.tpl.php new file mode 100644 index 0000000..c00ec98 --- /dev/null +++ b/templates_c/52c011ce77c5dc743b6591550c55ce4a78a4dbca_0.file_projet_display.tpl.php @@ -0,0 +1,128 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698ae9506da109_21542800', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '52c011ce77c5dc743b6591550c55ce4a78a4dbca' => + array ( + 0 => 'views/projet_display.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698ae9506da109_21542800 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_919254056698ae95061e435_82964089', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_919254056698ae95061e435_82964089 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + +
+ + + +
Email envoyé avec succès.
+ +
Erreur lors de l'envoi de l'email.
+ + +
+ + +
+ +

getValue('objProject')->getTitle();?> +

+ +

+ getValue('arrProject')['category_name'] ?? 'Général';?> + +

+ +
+ +
+ +
+

Description

+

getValue('objProject')->getDescription();?> +

+ +
+ getValue('objProject')->getContent();?> + +
+
+ + +
+
+ + + + + + + +
+
+ +
+ + +
+
+ + + +
getValue('objProject')->getCreatorName();?> +
+ +

+ Publié le getValue('objProject')->getCreation_date();?> + +

+ + + +
+
+ +
+
+getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698ae969a7db02_27363144', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '5375cd75c92fd8c801b429efee0d6437582d377e' => + array ( + 0 => 'views/login.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698ae969a7db02_27363144 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_342031104698ae969942f96_18698715', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_342031104698ae969942f96_18698715 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + +
+ getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrError')) > 0) {?> +
+ getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrError'), 'strError'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('strError')->value) { +$foreach0DoElse = false; +?> +

getValue('strError');?> +

+ getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+ + +
+ + +
+ +
+ + +
+
+ + +
+ + +

Connexion

+ + +

+ Connectez-vous à votre compte. +

+ + + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ + Pas encore de compte ? + Créer un compte + +
+ + + + +
+
+ +
+ +
+
+
+
+getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f726914163_83904848', + 'unifunc' => 'content_698b49a6a1f282_93718699', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_6989f726914163_83904848 (\Smarty\Template $_smarty_tpl) { +function content_698b49a6a1f282_93718699 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_14089017836989f726912e95_86271581', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1448432322698b49a6a1df69_22260225', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_14089017836989f726912e95_86271581 extends \Smarty\Runtime\Block +class Block_1448432322698b49a6a1df69_22260225 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; diff --git a/templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php b/templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php index 96a1596..727cce5 100644 --- a/templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php +++ b/templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f72687e0c8_78461032', + 'unifunc' => 'content_698b3af017bda3_81099221', 'has_nocache_code' => false, 'file_dependency' => array ( '7e6dbbb1e41ad859e7f5b7b444b7670474263f88' => array ( 0 => 'views/home.tpl', - 1 => 1770639154, + 1 => 1770721040, 2 => 'file', ), ), @@ -21,20 +21,20 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989f72687e0c8_78461032 (\Smarty\Template $_smarty_tpl) { +function content_698b3af017bda3_81099221 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_15962470546989f72687a521_39502617', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_856983399698b3af0178228_49803206', "content"); ?> getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_15962470546989f72687a521_39502617 extends \Smarty\Runtime\Block +class Block_856983399698b3af0178228_49803206 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; @@ -48,6 +48,19 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; directement en contact avec les entreprises.

+
+
+
+ + + + + + Tout +
+
+
+

Les 4 derniers articles

diff --git a/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php new file mode 100644 index 0000000..781b34d --- /dev/null +++ b/templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php @@ -0,0 +1,50 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698aed2fd402f7_78850375', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '947d9aa54bf412a952e2af2d8a8255035d91b950' => + array ( + 0 => 'views/layout.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/header.tpl' => 1, + 'file:views/_partial/footer.tpl' => 1, + ), +))) { +function content_698aed2fd402f7_78850375 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, false); +$_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_691069574698aed2fd3d8f8_28027733', "content"); +?> + + +renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +} +/* {block "content"} */ +class Block_691069574698aed2fd3d8f8_28027733 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698aed2fac7079_66630300', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb' => + array ( + 0 => 'views/admin.tpl', + 1 => 1770712365, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698aed2fac7079_66630300 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_701047722698aed2faa98f9_91663021', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_701047722698aed2faa98f9_91663021 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + +
+ + + +
+
+ +
+ +
+
+
+

Dashboard

+
+ +
+
+

Gestion de l'utilsateur

+

Changer le statut ou supprimer un utilisateur

+
+
+ +
+
+
+ + +
+
+ + +
+
+
+
+
+ +
+
+

Gestion des catégories

+
+
+
+

Modifier une catégorie existante

+ +
+
+ + +
+ +
+
+
+
+
+
+ +
+
+

Créer une nouvelle catégorie

+
+ + +
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698aed2fea7fd1_77495932', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'b1b065356827f03a32a2809f87f59bd19d86da99' => + array ( + 0 => 'views/_partial/footer.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698aed2fea7fd1_77495932 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; +?> + + + src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"> +> + + src="js/scripts.js"> +> + +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698aed2fe0e338_92194390', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'b3c0a235f975d8741b25531347290b4e4994470b' => + array ( + 0 => 'views/_partial/header.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698aed2fe0e338_92194390 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; +?> + + + + + + + + + src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"> +> + Folliow + + + + +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698ae96d52fa95_22666517', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'b70ee0d22061ca6100f647634a5658ae38c7b520' => + array ( + 0 => 'views/_partial/preview.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698ae96d52fa95_22666517 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; +?> + + +
+
+ +
+ +
+ +
+ + Photo de profil + +
+

getValue('objProject')->getTitle();?> +

+ + + + – getValue('objProject')->getCreatorname();?> + + + + + Lire la suite → + +
+ +
+ +
+
getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f71c761896_25894348', + 'unifunc' => 'content_698b3ae98ff4a6_44263627', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f71c761896_25894348 (\Smarty\Template $_smarty_tpl) { +function content_698b3ae98ff4a6_44263627 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_19992775976989f71c758fc2_34188356', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1193104747698b3ae98f71d7_06580866', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_19992775976989f71c758fc2_34188356 extends \Smarty\Runtime\Block +class Block_1193104747698b3ae98f71d7_06580866 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; diff --git a/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php b/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php new file mode 100644 index 0000000..e74f2cb --- /dev/null +++ b/templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php @@ -0,0 +1,84 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698ae96d2e58d9_91616548', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92' => + array ( + 0 => 'views/home.tpl', + 1 => 1770711346, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/preview.tpl' => 1, + ), +))) { +function content_698ae96d2e58d9_91616548 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_826938963698ae96d2e14b1_12340515', "content"); +?> + +getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_826938963698ae96d2e14b1_12340515 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + +
+

Folliow

+

Là où les talents rencontrent leur avenir

+

Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. + Créer un portfolio réellement pertinent aux exigences du marché et rentrez + directement en contact avec les entreprises.

+
+ +
+
+
+ + + + + + Tout +
+
+
+ +
+

Les 4 derniers articles

+
+ + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach0DoElse = false; +?> + renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f726ac4850_67307943', + 'unifunc' => 'content_698b49a6b1a9a1_35918373', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f726ac4850_67307943 (\Smarty\Template $_smarty_tpl) { +function content_698b49a6b1a9a1_35918373 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?>
diff --git a/templates_c/e3f999d4206c004969123c0e3f74733796438d51_0.file_project.tpl.php b/templates_c/e3f999d4206c004969123c0e3f74733796438d51_0.file_project.tpl.php new file mode 100644 index 0000000..a078cde --- /dev/null +++ b/templates_c/e3f999d4206c004969123c0e3f74733796438d51_0.file_project.tpl.php @@ -0,0 +1,123 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698b49a6958128_21190238', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'e3f999d4206c004969123c0e3f74733796438d51' => + array ( + 0 => 'views/project.tpl', + 1 => 1770734029, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:../app/views/partials/preview.tpl' => 1, + ), +))) { +function content_698b49a6958128_21190238 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_733012504698b49a694f3a4_14549542', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_733012504698b49a694f3a4_14549542 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; +?> + + +
+
+

Alimenter votre projet

+
+ + + + +
+ + + +
+
+ + +
+
+ + +
+
+ + +
+
+

Image thumbnail

+ +
+
+

Image du projet

+ +
+
+ + +
+
+ +
+

Vous devez vous connecter pour accéder à cette fonctionnalité

+
+ + + +
+
+

Description

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+

Photos behind the scene

+
+ +
+
+
+

Other projects

+
+ getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach0DoElse = false; +?> + renderSubTemplate("file:../app/views/partials/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+
+
+
+ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698ada80e47fc8_23614044', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ebfd968608976813e893f497c64277110a78bc40' => + array ( + 0 => 'views/search.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/preview.tpl' => 1, + ), +))) { +function content_698ada80e47fc8_23614044 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_1614324265698ada80a61e02_00521357', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_1614324265698ada80a61e02_00521357 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + +
+

Rechercher parmi les articles

+
+
+
+

+ + Rechercher des articles +

+ +
+
+ + + + Recherchez dans les titres et contenus + +
+ +
+ + +
+ + +
+
+ Type de recherche par date +
+ getValue('intPeriod') == 0) {?>checked + aria-controls="date-exact date-range"> + +
+
+ getValue('intPeriod') == 1) {?>checked + aria-controls="date-exact date-range"> + +
+
+
+ +
+
+ Type de recherche par catégories +
+ + +
+
+
+ +
+ + + + Format: JJ/MM/AAAA + +
+ + + +
+ + +
+
+
+
+ + +
+

Liste des projets

+
+ getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProject')) == 0) {?> +
+

Pas de résultats

+
+ + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach2DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach2DoElse = false; +?> + renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
+
+
+
+ +> + // Gestion de l'affichage des champs de date + const periodRadios = document.querySelectorAll('input[name="period"]'); + const dateExact = document.getElementById('date-exact'); + const dateRange = document.getElementById('date-range'); + + function toggleDateFields() { + const selectedPeriod = document.querySelector('input[name="period"]:checked').value; + + if (selectedPeriod === '0') { + dateExact.style.display = 'block'; + dateRange.style.display = 'none'; + } else { + dateExact.style.display = 'none'; + dateRange.style.display = 'block'; + } + } + + periodRadios.forEach(radio => { + radio.addEventListener('change', toggleDateFields); + }); + + // Initialisation au chargement + toggleDateFields(); + +> +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_6989f3e29dbce4_20550543', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ee86afd5d4dff200944f3436866afa34a71b920e' => + array ( + 0 => 'views/inscription.tpl', + 1 => 1770634036, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_6989f3e29dbce4_20550543 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_18645663486989f3e29da446_83083224', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_18645663486989f3e29da446_83083224 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; +?> + + + + +
+ + +
+
+ + +
+ + +

Inscription

+ + +

+ Créez votre compte utilisateur. +

+ + + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ @ + +
+
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+ + Déjà un compte ? + Se connecter + +
+ + +
+ + +
+ +
+
+
+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ⅈ}82%qh_?|_yzXN}1i4d8g>Xyw){ zSe0->ZKq^RKKG8-g2`lzhZJv2Kf)h}P^5yw=N{p{FB$eSFkZ%ZMr*(uS8m}h9*t@Q zXn*bs4jv7DFQbjuGak|$PaZK`loW}(c}iaGxz|lA1LO5F8TdY6j>nH=V)$x=ho5^J z_q|-s^o*}fFXJKf0q0X zzub;CJ@`PTWpoGtx8s{qjw(0`N(93ThX`LThfGiVfYX8?S$>bhpb21hRUv_-cLMKl@NG10N~SzJ>|cWv!+_IKD80+;`AD&-2g5|Y0Kv;Po|8E!cBVot1<_wHKQRu_d>tQroh5DTRx5FRsDC~P)#&||+ z05CcXeeL1l7zT#}i0Zidi`Q}bFf5=JR!W%N~%}+dc$F z1JFW*b-KI9+IRvgvwI=S?z?Dv1i0cN8V<9ZK8DGtt2B1+iSz_?>cd$wwE-l;Fzt?n*UC_qYkL9bZpgy{3Bam= z0IASvuDo_Hs|mITDIFCbEkW{Db9i00X!pgNlqW+*tY)>f-8LxxaMMFR3!S?*UtRMu{#RgC+9S*iBj0z(JO1~C<>k;T-m}{)w z5r(J-pnFe*n>+peL0|weXaN%QBTh{2%jQ2-3>9ft_buxky>9>lT(J?QF!Rj4>rcN? zQ4t)RTmVW3-ritQO023BJ_P`hhO4*(p!kr_rTBIPlrz$|d-^&2l5+D_-A#5L-d7tY?BR855<#6MaW$F7ZQy@`r z4B5m1`orB4Sck>XX0PHR&0K$F_uGC$#T?=SEyk9R`9@n83 zIbK-sMN`em6@*31&CRtiXb99|cdq~d zAu^~N+*~0Q1|%GC_Mw)CLfeI?1iN}@8Ss5CjU*rrp+f0akg_4u(mtZB3zf*p<{AL# zFkL;G88oE`!0Y)Tiupt-pt_k&gN!$UA%eO^O*X*OA&S|eTFCB45I@wW<>^8;r7M63 zqJWR2q88-Fie-eM_F9;wXAs!CxO3IqIHAINu= z!eBoS_&cH3>ZMb$a+rD%=5mliMJZ&L14y{8jc3w97;sHE3Z+|Ad;~>>AQ-JAjM6$D zZ^@NR+l4s!)B}v)*Qgd00>`VnfL<>FW+DNSsVZrd$>F|x7#(Uf^XfoQ-S6Vwor4_A z31EY9CDX15e8>R(XJS|tWdIB|n<%{|_>#WC3Ccz?1B3yk@Zqe{VF))+3GKs#*Pji( zB#hP*$WTN@lPcA@WsH9>>@ZIsjjL zy$K`*fT=BtwnD};VTfX&46-Zks~wa8;~B5#r6XmNLrjyS$OL#9^tA+uDzGp1(3lM- zghyy-uB5OMyOs-KAO*;@;QMf0RS;k2azttbvT1}QthvZENRFBoT4e%wJ=5>QiYiDH zW`zX=NWUh~!_tizWQMW@pe#Iup;)U5ps=fOgJ2I0EsPll8i=aGia_C(!p9U|rg((r*Mty43%f`) zODkxhAOY|U42lH{MX0b*_?*HQ@s9{=QW(M@ECKkdp&Y z@z5KAIY1Io1s`W43!hVXnslPcG!epx$Z(B`h6r%904^7b1!NTbS)GjwZ^oK;(I?Z4`p)xqB$xHAp!)h1Xu!gN-z4N z25~_pNWFS>oIUt7|DjecoR)bmn6jC$iWWcw62MNsl@ZuTDWJHqhR|=#^}}2|pfEN9 zT0==aeC{w~fMUZ!lmQ^CGsg*+yr1j$wQy*Krm!3ahz3cktUtGJ02JE^RAMK)I3D$X zYxr|bj%67la3Dd<2D!4cqX8f;7nMSNuvqawTkhw!a^w^T*Q^Liw;&4>{)BZH07ggQkeAmPYB^_z|CgW!u0(9`z<|p=A-&($@x&^WE>%Y zm=U(7JlN4X1c2^HE!4Z4LH}**uVu`%jRA~7fWrv3%k!s(g+$A7or+aI8k_U@o=$dxNj>Whcqb!fW*jcpu{}z*=_FzP>?%5 z&8p!hz2d&}=}rzNATWIOlx$L;qa1>{9YCc(#zrs2aC&~Znj78WO(3bEDZtC(A12EZZ&38Q)MzR+}KN4 zLBOz07N==|WWV2C+p&+i;b=%H1RzWdIX^ZXnMK;e>kWvK@Gd@9eZ*lo&DbMfyY~_hF+u99yyQ#nq7&Nj$%ha{F;?N4!ar8{?uUTG zeeZkX(`h=)nh(3vz#LTq;NNA_CJ7t=fq+$o_h<_LP2n#n{O9vR+wWt$P4DHCHd)A$ zTo527aC(Ig&qG~$cUJh6!ar5`FGpjvy?j@)kBk$tCa9aZsc>E4dt+7?guI_u;a@5I zpUb^tolZ%U4hMD9!zM_z)Bm3pJ_J!1Uhmiss_?ImoX-JvyIh)+eJerF6{vc>3ePEg z*P}6%rqt=B!oOGeqYCfpNpL_gQnT7zzz8qdAc7G?Qwi;;@NtDt4->V)$@U}Oa>p|v zM_$_0{6<*F5hZ$KuE6E36@G@oCx&W6s6r)CvEBpzC zAKrtgj3JHFfrZEa{_^j?^>WKCH;`7B4nr082;Ba>pI zKGbsHg^-YVLtb6K@~e8W(PzP|Y%M;mHj>CrO8c!d?vpKDKh|>6L6LA}SWXDJuJob{ zE3s}UnfdEu{WjTN{A(+Yp@>*&bE>|}3}`Y8Ll}kuLI4RaYXi)+$n5D4N2; zok=7Sfs9Op0fs~%gdq$e1PG%~h2(v;pb@fa!wtj`(%e6O`_Kf^Nf-!$0AUU>MZ+lX zUa{IpVmX7JL6x3W%Z|KOKLXKPI^PY zz?*8B^w7W%;Pnm*0g-{XT4y|ASYg;`i1WO_o;TeSXDOGHaZJmh>ID!y0?QNxqAq@D z6!-_^^o|k3m_?C*l=}NT)qURVp&V3&a2o3+B%*1}=tm?E!|HN*3x)X?|D=D{E8h;~ z>tWS`QNzhA&zD6%)&pF1;Bw#lMIV?~8aH^lo{99<#GaeZgjo=lWZM`r zD)$IzN+7?sLUbz%W8l#rk;%zcM0j2_mISjW&D@AwvPUAryCdIK887xJ-`9T8k~&~+ z6dN*o=zf20<2=N4ED5w>mA0^=2(gU9W7nC4`2a*5bwcQy$;?O#oY&{P0x6_e(Lxf1lJY=2&;pT z_kAn;yeIpqCujZw4)Rue0^W5)dm0z|D&Auq>k*_L0uXEs>I7k z>_RE zHMDR7^gWfo@`y~vh^~Qabf7aX=fzooBoy+F{SYDW4tt1gyezy}emueth3weQQrig& z{_b(r`~988NO{8pztu|r5K*+P&$WsaQb@fMLk3%$D17#4Jwsma&R_Z?c|!{?utoT9 z|H`gtg77Ng6<40v|HN(8GyKsa88$UL^`W^K+EaCOH@9p_9+*fXOD?1%B}QAEZ5IIstG#jPAdPlx{tT>N zb=X+dLHg!iF?2giT`GB_t6oD8()A2zNP(&#l**!AZAS}7b+uv3Gh6<*@18y{Ef^#O zQh*c?3V9_U);-TW^emR^J9rVoN+Wx?<@`*CWK1Xb#OqxSFTir(MLp!@yb9m%;5jf< zrkp!>bUWXi#RXXRHNW_$=K^We=Y+8qn%HwsyjT7B-ZK}Eb#SWi6AIsRC8$k)%6~-R z7r&RQ?Pz5)9p~pg!ECe{ zh-Jh^%_s`z)-}*GpbHj0&42%mo~Q+9f7O$YoSmG7)`=AsHWgNO(h1WPx~9v8Puwdn zHntgO@vIVvn#WmyJ|hv$U}66B(d_&Z;RxtqU5bTGMzlhu&z?Y!W;HoBz21D}eAKbc zn4{UsU<@JzQqy%7E=@iiO}$!kPU6^ZMVc=;a%Nf_CMI3!MYtJjY_5Aq7P4*;GrsohoB zxed*q_VkQ*MNEy#cZj!*5s!ScTfFM$Ku&>!09u=LqCBk7dC0$#n+~^6>~ZOPMYs*| zs_FErT4~0f@)EBMzmIgRKyte_(6KY-KW^XD3VEzIkAKmX&-e0Mn@^%ohF8`)G-(71 zv^ZDjYan5zf5^k)FsM7$m@cAL!sv8DqOKMrIKIc+kTPaORo|`$oFZZXy4@R zz-V8kSh;Yqf7K7(o?(8Lj%;3}c+=psHiT{(L%SUUejlDuCeW&|=j~}{_*%(~pUgX8 zl}U;1zsbj1Za?&Q}ZkO@)>3bf6@yCA_Q)(IupL#=^ zd>V!CP`C{?rWeRyo{2m(zKc62rec|o;SuLz6A^~FFbZDItMG%5#;{=@cK3EH2Sr=T z0T}O?{wWU4bgwMmm@rJ?UHAmN3I_^D{2b97l1WWxIRgDqNT9w^>V8;$xPuXGS+A?> zgceQ#FOQtaI)-%?qkjRGd&Ydk{u%Cye3*7jZCRc=Bw5%sikiq)63Yk4WJqI~iFUSE zx>M=_Se_)E!OrGWTu3gw5(=^0|GEveIh(8IwP(Ip@+{Lb+!>ij`>>~rVe_iqg;xkc zD4r>a9>wy{Nu$lg@-CnAfDF?xhf)~+S|`}nDpnOF`(nzzqz0P5nf*Io;^NEjHy6vOg8 z|4j4J4nf;=I^s?kR$Kh5Dm?xa3%5w{&5ti1%kMd}$l{kwL^H}`Wze7G2E#U4m<5}& zpLyHoe4Z=bv<1=UQ)S`(SlBtbLR);{6$$v}zdBFP)1{NKlu^%mtE)v(j()L?ybG&T z&;I`PZ+fd!-KtNYuX3wTzs%=fXVryYc<1*cpXYp6{Lc-kxK%XWba2?YQvB>_$s*^{kirMWkOc`aqf(`UD`i>;4Pm14Bfiz`8*%_Id6TjJVcdL z#gI2n{F&w_v#76`!Q!tNQW0ABeg3P~ApzAo+mv?gZ0Q-sjxJbIQCYS?$x$&gNdo`C0vS6n^k2>O`vjbW`CLbI|`A4n`}HM45t^ zm-*{wc_)nbrEpE*FWwJUB@BG1(b~+kZ|X^I@i49F_r&H;L7kaN;ZWgUD*WXosMCQv z!W4M=!_j6ZdS2tRfAn`qzdJ_%mu~!dM5UyJ%Z2k zRfLx-z22GeE=+RAV|WUisz3<1kjbzI`bei|;nD{kc|c-UgfPK0L#sZe!n1@HF1dXD z*s&>1Aq;`}s*F{5d1t%}n_LDBl$gRmL?Rqp;g!>~u<3Z2VHrXg0wgc|>^p`QJ{b`p z03C!thP=hwurR6-rfLeD1;fTJoKkfmLm)s1yezzGTw#%@kDHVc5jDvYV&f`WMI}fZ z7e`b`%x2cE2qYD~Z&-#!Rj_GssHTB&+^ooEC3!qQ-=uWB0!WnOCIuK86z6PEdq*5s zFm6yT^hTv$kg;!4F6`On=WK)0`-SLNu53_P$zTIqIoqVH9A>a@P|o@a_6i%-RW`K! z?06ErZ*(vl)jRLiQB5^N->5uo~4}!7j#egTe?> z4Q#6Yl1{Y%C?mW&{lXU53w`urS3kre(bSHbAai!kf13b(LYQ-CX#M@H64B!aawpuyk6jaNwS6(k;Xt zBcK7{OEYZ~ZrW?Ou=z_6J|q12A&xwA*}}v2>bG)E@J`IM2AO=V6B`UEA$ELOLK&Q`5qaJR5gln3L3{a>!F0~ zeuchNdC?43_5*5LHwpJH^nlhDbd-zfIoA)oqm~@g)la`~;mtR%IV?kSbHkZ`wi*qV zTFZfVKE^!l63E>ID#nYAt$pjl{?5Xhmwx2B?%LeWVpZ6&M+E5VX{X$AW(iG-R(FpI zFXXADJB?-=c1UkqX|Q`J@ctDa*vewLHX+LM^NY-apXH`ST7TRZ!C(nsd}ULoVisj4 zY&v59cCf^mZrVRR`t0Q-)O2pt9`!O@wqQFy$884ibZw%3vFUv4!rroCeHV0N2D(mo zaO+)r={`8>CNp-|{npn=yiPkJmlBTmWeiOKL>=wbuIidrvtYXnx3(~liwZZ!i;8jB zyK4vSI=1cX4XQxpYQke<_lTzKS-9@3f>md3T3tmG#U2YPr8tyl{gpSr)~w2$LZNN#c`J?df#)tPMdfCh>EZ?5>n@l};xlbp$n5gh3Lg`m zJ|W1e(F{@uJ>g%pGxcZR;v9ILVTcTS`k8n@K@CjHrLE_T%|y95ZM#4HuHoirA=$02@cZfGG%3Fl$MaCBn!OwJ2izauTSveACP}Snz6I z^4cY9t!bq_b{QOAD4beJqD`wW`3gU&1t(2V!%jHm+-s#0l|ESTQNVPlLt6wpaBw~?@2quY zX0MM(u<1E3@sp|nSY$M{t!fGyolrV6ZJG$Ba`v@SC`xW!U&|n3tpNpS3$tcUk^VC# zV2Od1!i$BMj5RZC_AV2!#zr4lt^t%XxiX2~`$Zh728^FSOmL6q;}AHUqa|)Vb0O7J z)+R36<4XHYqa4|J!pmQ7yEb;XaL2N>rbc&1FPf;FM&ejmO5$jWoFa@3Sx0 zJiEB~dEcfNGlOy=N|%B6{afZ`-go0t|CpEater6b-v*hZdS<<>289}AiJ20kE~@Ue z(7=@jo7JYJ`^rq~&ji@Le);NUr2zYL zk8Q)^;bNRwVf31SXubiO5NzSqHot+|3BTyi^FJ7R`p#0fBTq$OFM$Q8`^cL|-~PU%oVGLmi|w);x^wAb zIh8A`(zrE44GugwMRoDw|MNfc``M&(V5Y$@@)u8VRw7er^Z20&ZLCPW75X~I_M@nj z=MPFb*Oc-fC!CK{#`zAJ<9;IN-mo3w4zUL~#VoK9T}9EtucPe3t)tAsC)t9oBXUh9 zC_;<>SCJfqMir17DpQ+Q3b2gOK;zE2Fa)enEc?zV(02!d5v#ip;CN1_DM<|{c8DRG4eu~1g1 zMFG}i=O7kE*L3HG7N%2`p`l#4Tr4X_ zwLJp7p^d*og@1Q~oa^0X0t*|SYo^_6xf&Z~PxHJ^eiSa@w2`+bvtd{caR@h%@o6%|T$H5z?xC&0GKZc$Ft} zY>hMLHJqXVxG*_EuGn;bf{|#~5nK_pFagA&1JEE-J|t+!nT%isVk*yskgb*pFpCq$ zbA&OdkBkCcvxTlx2DcO|ty(K(G_~OomrYx{e*N5P#)xa6C}?c1k}IduLoCk38TM#T zywR3D_gbgtzz`wgt7@v4DpxWDT0a*aX8}u0)W{Jwi?0}D(ngjvbObjfAtH{NUP1q< zBGPj#X?(4VSgj zSFz6awutnBbF966u(K3JfYL;xiE1?J^+E_jWK#hJSBM;qiDry%H32{tN=l04AR2FM zQW=Y>1R;u5<19a#iZOs;OA!B5lC?&gK}Ae4M*&l zhaD5o&$?2`oV2>q0Z{7fwa8306BV>v$e3XUhBek?!>hUtSOwDn5Fhlo2Hk}$GxJ?Im)vso637rKmul#eJgJXM@2D(^m|^8SNZJ|=i)H0b`t*fi8tF2Tj zRR>r0M%I{zx#D*!t7rvCtI8hK=R*ibH7LPHs-!Xjy^&3^l&GSa4gm5xi0gtsZ}>S8 z1wdyEdzS-oXd6k}=vCGllsYp|(4Y(BFvf3~aJ!p!=O_zfZ(GQ>rpS~s#Z>Hi;gxS< z_1=GraHu_}GyO~4E!t2~A zQzL~%k!8ASwXW((U-wHc-}d3wmAbl0W>M5zD%P#VZHbJyb&XQjsO2mS3S}hfxA-v<=3C`RM#Tk{Rm<5gt_uaQA&Sl~F81)CD8>{(pLCXu*zV+J) zaZ}Bui@A(oMQA})Yn?SfjaVaAttpd400+&lACQvHtzCE86dRJor@R+cUg578K^G#z zvh2@~__@=A7!_c-7iF{<8xzk-+l42;MBziH)W{7L8#BNxU>JdXdOi6NLie!8hxu`N z^8-us#@f&VrPacgL7_Zr$riy~BY1t?9UYZQF_$Xm#tKipYfX(t6)>8-Vm?yLT-VUi5{T%CRPx%$Mc5Qq`6ni^>}NNlBRE$`j(UdnR=e<|yM zh=4m^IigC z_~OC_2kT8sx9xeRd;?F+ZjFKStEwJA*^dm4a50U=TB`g?zKm@VVFohc{Zn0N#Ci$ zh;N3(c~q!kXg&qU60$Cq7HPZcj%rFlfpX#BN~TUp=_u>m5gWave&{${_} zE?`J$v4m)mb}ea9M%*j_!R*QyoiA7T=npbz24sZHBmXFG;tdSu1TnK<$gEu4%iG_P zh08F1Ipj&aV^+5T`Z9+&8`-S95L@P@0x?`c)I&%Ecl zlh|?i$wqCADvqu%t{#v`f2s_XL|T}$MlIEpN&(@j6%!}9hK@-GuvxlU+C$6_%l5OpJf3uo%N?MEmQ~Pd3e8fX406?xnIw>^4e9zCKmNH$?DXz_!>4NY+%< zpb0<)RDd*spl%zla?}3pvF*%JrwExrC0c*f%u1zWC|w``-u*}PTIj>}%3wSEB;smb zUGV7woPT};vh>DppgQcG_0M!c8U#N$%MN6ECHc?V5vLS~?KucR3ER&LPg_6|} z4WnWr2nvl1=OJ8!Nj7%TS@a>s7% zOf5RNui!g{OCd2e>wVH4#I2UQMJ90#&8uSu?gks5=3~c<1~Zs?!tA_fDkO4RSn@&^ z3C>}Z8x*>gs4$2U2n&la3jna4e(T=_v!Cm=Hu0`{<7WynJiIKbMQ2OCX|fM{$3r&t zR42_8fnk_&W`v>U3CMuM=;gt$kH&-cs+cGth0v|-3I8P`sVFXQ$*p)u`+ZUTfDHPl zqzPy$_N~h`?DrxI--es=zE$sYxsRK(SgmA*72QSxU3TU~2>h~UR!4iM0bT8DciV5* zJs$CeTv@nM!PG~4%3d+%J7Qi)|Fl<90r8H%ZCjgJ`GV<29MgNcUMa(#dUMP zyXUt&b~~r9EnPdk)TuKj7Kk8qNVXTRci6z5=ts3VxlS^5v>ly>BnP!rX(|UWSxt`t{J@uU0p`$^mH&%_r|5V2XzNs!R04qS$zviv_rdG;Z$WbW5rG$j- zhBFyRjfM(1?qPiwenMz4YY9==b8#<(7oVU(tiFx^1Q2-tBIk6SE6+IPn3^C)<#6HZ z;Oxb_wH|!4hq#ka%wg&q!E(RcYIe3mEGLXtHA+T}W8=e)0`iXweQ|`SWFE=vcbkra zDz)7X8Cxtfz|*Jy%(>GSmo8pg>eRsiteYfB;s(v3Y_!SZs~)@SBMvN|G8_j$dD`Zq zolVEhKvlpK@W=q3zG_6?wc>b?b`(h&@ZcOyzQ8N5p~cu~H%eN^Lmxw=yqBpI{j1*A zRO%4oA=F5#*wNehCb9s|!uBAq@|}xJCCB=2!5d&3d4Vlhu1g1zoWctwJRoD)j*cyz zLg!dhoAasvlUt(YYu85|!qhVs{x2L`qWD*aPIm-iMncOVnsh>P3fw8)0RO;81OHw= zyfpQXn?T8ULR1LdQOK@SK9pPaS=}-9luV>QSOoDQhEZiT#9lj@kl9Ufv)3H6nIee6$oE>6vns^ zcER@tHEGwwg7<>+flyP9rlt&06;s8d{Zgx_UGNK3)-9Q_ zXx6M5X-$G4jwwD&;v{ihYXu_U`tCD;$c0HCm^NA;y4fhizfg+p@@_!!e}&vkTM`@g;A-$R2X{f7!5?aRHm3@Ecsx6 z#CuRzMr}U}8sU!*w8{d>sH&dZ;XYP5VL?Cw)Ee{@gWfFPbBHa9IE!D>@sWB?kh>3M zuK#p}inJuPB+Hkw>4uvvsRn$3D~V?vDMsW$%-PkstSh3ZlK9U>pyGkR^LL&h9PgJ~sQ0V|* zCiqpX2WIMfcpF<8S3+G{YadFtQ64W0z4XnCYJh2)cA;B%@#nBOBDY28{{arK3aR$z zeOTl*_VR8mZV^HNXgKoW@h-eZgn2+#*XENf5$nL(rCfuB-?(8{_&8vQTz{SY{t6oNJ= zg1^MH@=dM*vrtk+Nv-nTZhMvi9fIFY6QhUv+E2;=9pl%vt?d;)FT8ZAc`XFzx!OP# z5!NA}cQ|Xnu&9(t8r&clQl0g-$9G`{Xo4gi0}nhv{3#xBlN0P1I{KNYO8A^a#EvML zK057OR*C{qW^sH4WjL1w90mea8+BES`Z1&lJA0ABGx=aml?_lxNvWtS>H#47;Wb$_Hnr~zieLa_IEc6rx>7F4HHO5tJ&R6o2D)8w|*!Yi&l zlUN0?rNXM3_wa^L*EGU`eE|b3Ndg-uR&@L))>;Fl*#ZW@fLJ#vM%79qDiBLv$+YfCFLFv;IoL~6T(0XmV*#+#`I^3 zbW)2kVT$U+g-Q6t`qL-}2u$n``j<)o#5%2!b;*R8bT4hUQUL(B^+Xj5zO|SD07k@6 zC3hhGpOnHf%3mjL4%4)Loom_LYEA1BQbP9C2)R8~i037#;RWe2sEe!(<*q}J9=CgUyD%ENtb>ZpG+;>@gop=8foZ$X8c|->}RI4hw zyqs^OAKU3t*L8ipDkO*kA%v(ct29JerO!Z6)RYcA0FlZGI#7)l%S!xG6${Pb`>lR~ znlq|%rI_o2>!}g}K(`on#I^vCQ3e`7Cw$lPT}nQ|-9iVTW)OThrj7l+kwbE43Du4g*Wy<%!Su%cm9Id+D_mUUNK!;|EeWgtTbC z6E}u7r6OgyNx76#1j?KZi&I->7()1r0v`yR9hlJ6RF10ot(-FR0#`BIx=<(*+NUTQ zY@R)---jOH03G*wTS)*{;HbD20P5RK6(E-XP{keS)4{O|p=XCHgK6a@**GyP;X-~@ zPAQT-^qzvR@l0*Du>C)~<2hARYZ^k^5$%|#_VRiOp(>G%`~Xmg)DdW*l1hR=Tr0x7 zl!-75MFBEVTqU(!?pE@HDDIs5E*AlCXX(t3`cePsKhfv&=g%ZF3V-rfRk-`}J@hu- zjiA$|L{8XlIAxR>RX`@emML5c{&|O_+Q{omK-cq zbw;YAy{fz9EUJ|whC9@|4We~lT8^XvklglVx^w_PBZk1F`zRmFJ|hfZ6r=;U$L+Xo zr?3$v)|n8feB7)?=)LQAC+z4ak<)gafTu$}hdJnokP12>VNV|P&!&(|25jO2n4Yd@ z3`L=DN1R*UzQ!>zDcH z4^2p`D=R74n^9#Jr?RT5j51Mx`vC`ZyUB9OY^JD4;wx9FxWhkk;NKz-_diks4tmLL z7auLHWfp0lOu3J0hOxRE^mj59aLdwSnUxAE5%;`IZwtKMDAEcr{pdf{hP9KlViBZO z37e5GDyvEt!FqLg=cWK7bIx1;K~@(?XxCbg5gI7AmblO$y#4^FgH$15ikX3ybEz^` z>YX+?VXlyvyL_-z$Q8SDWlaq&S+i!*qT%7bp^myuip3~M1OPl(Io_<}nLqQI@;c=&+c|NFB^|Mn|f#=?B^ zHH+}A@0dIr1ce@FTR`%mbRs@gdx1HQ^C9+o_!b*2S0vCi=)cytDg$cSgJq%w09D%X zPc(*=xB}N}hzH6aBr0)aTCCxUZAe#U0bxY5S5D^lGylvDvt3<_9gv5*sRk> zqnFK@wP+}vDr>cUu*+yRBdx;jj_-RNudouiS`hTqCEByq@3)5A8XFP0PP3Z{+5}A^ zYO5N}TGJvUw|(_H(TT(}JMQ17>-(SNdiSF&my0o-&c_b}oitxG@aBDDk9 z;IQ{~9ScMSgP;c0RQ;kAiBq$qHozoP;xovKa2n#@#(qK!DlX`6^%*1y014>|=@y;K zB3{@eQ56Wltce&lg?Tc;a!)H!5BnYT^lT&yLBTX32CB?`s89dX{~iC?m#js>U$<`b zx;1NtD^@D?PHU?fv1WiaNdPe8W*c2+%TP@`WSw7!Q`-BA3Ys{BCH)rV$uW6UWmA#n zFbH8bMoFz%CVZg1o(2HaNJA2p;Oc-*;1IT>N)nJH@ahi5ivgFl9M%Ev6s@lZ(|RYL z$Y3XJiVL7>bceK0WFZ{j4_$YK=v__a;wuEw(HANQWUjOm1_0rua`Ob;xBOxo6`53_ z<#aWn`JD>~@+4D1G0XW8i$+ZpE%Z~i07kmcB@%BITLWSLs4G@6ZuQCWa=KqWE& zBrjTNK2{4ZRg@%x)go(+yai-&(n^C?nm*PCQXnZSu#Osr>-?_$5>+@KnK+n=q6e$2 zrNd0%CjRDNp)y)4SfsTvw0S_|L(+M=K*ufwlP3fNLuyFP;lg~F1f!r}sqtrjV#0rg z-wQtzzAJqFNo5B6s}W6Cnk!&1Y!GF4NA1Sga{^(hO;m=p)8-rTpPB!@j=0(0q%ljd zggk-pjEJxz$8jed6iUv?66GyY~;4|%xTKAyvgHP9wB z)c^(~DGQ2*%l6!qMRGpsmc|i2nXs2vU$#MM+yTJC6R_I;8xnBwcU1g`pn1fbS`~tHcE^pT`M-BMdP^X z*k8oFWBK};XCHs|Eao(grwmQ%71*4tuZ>D@?Xfx9O`a`W0vTBRL6iH*@~RA%EX|hY-i>xMx_EvX z7ythI`A+YCc=voXwSl^@lmb5C+;>us7VktA51>S?+0mnkHY6w_VMHC!CIpA-4if-8 zk=Pe9`>_b zw~(zqDIY?_pKE6hes$}0!DJLpX0{Wad{W35=O6@Y9)*-DL=hM$i8WAA>m6Jww5?v+ zTUt8P;g9_Qy`wkJ_^^MbGxM%zen5i^%dkX3`+a;gk7ZxYKPRz=7*}X(uX^$?UwRYD z%An9mpAZg?(j`EFA)I&OoQzmN^Fz9*Lq%}G2qi$#_oq>fC>un}Q^Z%F&3Pz4{KTB79ylh-TMgw(R3b7Ne{`7~cqL6=oAi%7JA zDp+s-(wXP2U6~r{C>PGqhu`~qpZJB(#MMf?ONX`2fl(|CO_zXt#nvw^za{p&$5Q0{ z)%@l%GwbaAELVECRRHQBA@xzCZW5LO!$i}SSkZspc+VTT%LIVrq2{O+Mb$s_&4()d zXtaTxH*|xrfeK~uPQ%k*-EXNs!-gjMt7zm7ycHKk3fMgYwSF@uaWb@%2#Iu(6dww1 zOx8tpSm(!RQ;b5cU`7;yCd5#MsI+|T>cwLP+xjY+Y846xpZQ_w%b#(}RV#wR%hu{S zzo|}E7&uq9eluBrINryHdtJD@LzY8VnK~UoM*_yZt`{B+Q2;TU1cTusS@5zkW^eii zCC$IZeS0SMq$04*irP9uz@-NFdd@wg;+M_+b_%`;e*;~q08&eGHOiD%7^JebCi+W| zi{43|ViS=A>Z%h2lX%ZPWmp4&zRHt;{J_Az7e;N5VM=ogsgz=7M)M66h2E8m1!oUo zS#Q*uE))gt@N>^x)|$$cs}||WTf7F`1|u|KqH2|d{vUDiq2;LahT-$(E+}kY$Ec6y zpkMlXsvOlcV?tO*6h>lDD4JeM<8QzJ-;VpdNg=S)CAtf~g^+KF=WM|j=6qYTzYWWa zl1=4~Vo*g~2vl`z2gmj9I82{JMqxt~k!@WC$7LO*Y<{ccEt842$=pbnlXt~80dlwdNTg%WC z2}-fApK`~4BDD~-v0F5+D=b!MVSxlTeJB59YxH5MM(lgg7Bm2m8+T5TKPB*8ga>)g zn9n~!QZq^oJ~eez>*>?=NfPP_Q&Qd(F$IGzk-F542M>Gh8$K{#++(AD&uBtGiLaDX zDZtEBY1~W|h&sn^ow;^)e_8O;sUe|w@{|pu7e@WV7f?l!=x(fjXe9Wr zab2$OBEL$tgiw|)U5%VRV0;$>)u=87{*Ik=y&d!USIHX>BT?C9BrcunOp-0n)Kgd~ zv1m@0fD}kZqR~&U9vDebkDxTsP@$GmQ;Up7%}~YKdgq>Z*z5_@816{VI9WJx?wr0# zB*dmg#2OSpu|d`4c~X}Ceh2739Kx1gmk1;uR)4q`ss6Z0g5E^vLGEHZ=4Ali|$ zQ$ljAmykEcv~(5W8PinHeGx}SW`Kecb*>ycQ)pegGD-=Rblq#E?YF972ScF=|IYe&Nl_%L~A;^e`z=c2$oD^nR2t2+bUsC|AYBC6^>_ zYxo~N46UApFZ~bz!c(f4fw&ACo?bOdLt6Fysu4kIz*DBHLP~!3pMdi_gvbbyno+_d z3hP(f_ko_O4{?yd>bG6t9dibC&fA-!M^g^b~&>Y2LnXu(($QMR&!*GUN5PXBlps(^ zy01_yQjkXVF=KSV7K-9KYi?_Ph4x0~xBrp7Qxn>gEPXr0wUH5emG6EOAwrLQnos?H z72Y#DlR_V+kkB*a^zW4W^V~{LBgAJlXeuZWZY z$F#J8XFM|>omKs6qh2l5F0jq00KpM0K*UDHnYs~xAh(RpgMK`D;V_E`7DhD*@& z7&zDJjbRGUD*W5;@~>{;wK23-oK)E8$z%%WA2^nIYWhLQKC=-sBbB8CJ(C>=!>S)! z;Xj-g^=SWJL2v|N-HVuC6Qau(pEq;s%9^G-Dy?(&-23o39VRqPs75qypo*RCih)#qyscC09L|NlMG_G&Lhq2s+qsTc5G>9{wOkyZ>XnL4qVgT>o|&6MODWq9+H zrnirS)8=JuXLL~ToZn^{1=7q{LBi^C|p%|>hv~bKr;o18m&pg6j{Le zrBeQn@}O|sUrK{ClOppNjYHHsU6Kxt9&Cq3qZTG8orBu>#L=%<7uu0c??ci2R-3l} znkaxliXjC^M*#DrN>UkUByd$<;zPd5Hl~FMXz@=*li&S20D*m$;p^4!1C4y5>cR!C zK~a@EVgp)%k`_pOIaPD`ltdY4CiG|tTtfwpZKz&`Gb7QLCXC_@fRL5pfxl)tQxwsL zn2zayjIF7M##}@P+5(JOoC`rHgv-Kc!98zgwf`jHW?}7O!7jB5lSdvrewN@Dd&l-h z#2TsqrV6zQLfii5EoEH}QtS5Id|=Cn)ER-oPsRy&tn zSff=L+Mry{*l2G0vNvrqtO;fPC1n^=|4#I(!T@@xeSKK_d*k-Yc>w8eb8NCgB&p!K zhA0I9jOE1FZi5UAm`ZP}|9Af0fBSE}W_x;~j#UuD#?4Y_>MHkd{V~%tHA^>oy zVyQXuI3%bFea7ipr2@jsbKx=4e;Jk;URKD^)*s_(W65WojCuwCOypcFr%q#1u=rlM z-FLyBh5a`PYu0z4_LE(C)=<$pS9TeVD;OwBwf}@O&KoQXeh!MWgu(>}cDD^i4D*I| zR`|@TZ4~wsF`Uw&5pL3i3%IRsuqUKQ9OXu$f^5{<@1@8vse6|+-Y>(*c0#G&GN`He zSiclp|9>{;1tox;Y!IVlB*2J&`sI>Z*|9;_x5C4UrZjRWrv@PJjS64D_6)7MbmpiD zMy?h!p`u)F7#dZikAtDL%G$&Ith{Zcf#C9-eB8|9adDncW+O_TbuzR>2h2*grKd3x z&54zs$$7l)Ae4j?N4D*?mLDV#my(C z1$!_9W+8?h_hGN3H|Y^W0B8j391u9iKm;Wxe2N{$=}uF%q0GoL*0X}pP9Pm_*H12d zyr#@_w1fS$Q=5d_wQWx8>{rS0b=va)MzU2r6Or`DR=H47E?>;$%DNTAp>!)KtL&Zk zzhnG=iN8s$E;!k4=o7b~={vW?XbPmFcnqu@+O}sGy1sTp7UsosPW~dTtsDf43uNG25a(yIBS3p~j zJMqkALqe?60Hc7HTPl3!Xu~qe8%3gk)B*f;0##8P&?UgQOzAcz9hXDok$0A!*~eL! zX4e@AMs1jRY9X09oi>bf(EIRT^=6|REj+%;ES`}DxMJjfCnEvVkNkr;lYU}#QBU>8 zg~5DZ_b`a!4^K)J{k-G7QQlM7pT%wgU|9Ud_pJtuIx+jk=%JG-Dq51XoVHNA1<$~> z5n2eVq2pZet(_bP>hStT5%HRXp23n%wNNZ*L75z4K5_wCIwhL}N)dX}IrhiF>ykel4UtjV)PC|tEVOi@I%#2 zN|)Ur@1OpX^EK?x1zi;FLyJ(uvB9PP%2%_uC8RXi#w97O zh->UwEO|^g$aMN+5kpQwSuHp}{X5N~#&ep$@Mjd@&5lkH#uo@%`d`D`o1Z2G1}I8q zTKm!y&JmWCio+G9FuY`naBh6Mw!F(|vUwj(;j=eeE{*6&>O!hD8Gwj0G2-{j38Gtb z<1nv_6CiGsF2%)Z44eBn^GQD_z+2LXu7MAltjt!_bY1oR+I;!h%l&w>i&frAqSd>f zh;zs0f*QcL8FNt)p_R2&geGd;FFGqSq{`7*{6dl%!yt{~xA;Jj;t$p9%d6yl{Clt? z*PwgR#TpM3j=oYDbihneMT9|$45^gpXH;PVh~evh{qGT68#od?49*5qt`(-iYM^LB z#oY~zRq^_HK3Nv=L@mgv(E>f@VQEj?A`bsOfKYZUb@H6ou%Q30vxR{p%Rp_y+_f`> zHM2X1W~Bvz%J}gIA2+%%cd%w)ri~eeTR!Z=4ZB81qKAedKuX;JL~~F7sxuddTeQnP)kFPh^ABGSDi965IbOMLU zly^UivmTP5DEoRNB4IL!A8iF{&eNILD|~k9R{kSdOaE^53)Anwe&27z8Ba0UdsvcB zwAA0w>M(%sGM?Mzp!)cbq`#*cJbo=m8FW{7J=fr@l%f5GSt=IMSP`EQ>F9%6rSA?shcH+ zKD1ho0)d zwQC;G&L1{2S`%|~Wy&`UNDWJA}g3Qtr_h*dK*+fc2|-S4h9KDJj>Bw)260>XaH z0l-|ou`a`u_Yd48AQcfFgfGD^+Yki+p2r@ud&9efHpg2d@!EiXG!ITPnJ5Xjgtx6m z&^rnb49`4MTC4|3fEsBrxV?x#E}T2|HG%e0$RGU`zy#xO{X^=jZ`u%!38~k5(^lXO z3l<#LB9{VSyvCfH(e`fL2DL;nQ>KQHiIqT15gDZrqHQ@7|CARkb8t~!G8r8a(g#k% z@OBob9l4##1JPs)V#I3Rcauy}=wCLL$pG-?fC-*365Vm;)t0osj0V>t>Uzj#cL}_oyqd8BX zaTK0L1{KcM1X+)9=~}?ex~oA&6nKS<+;iMvz0EU zZ(DHBK@?P6-IP1Ag10Z`;JlS3n%0V9o@-9p+zgk-{ARWzREH7AED^A~r3~bRLE%%v zn}m0Kio%b6fSU>9ThcL2H&ku#1fgeBui&Of3nvEWf@umTbP1KCTbn)hM%@Sg%girR zJRsLpuA50U>X8DYYef85NL4=Z$#lg3i-Du@PE%c3SXf5>^1P0jbms*m2;A_(f_}1|0ms+ zP)IV}TGiBq(rG{0lttYsnr~);rfc?oLf6tt$I#|K`sBTY9lg>p4S;Z1!sjtYCzwVb zx&)~g2r|)QL>+@FoTr83qcDg&^WY5JlByTmsWxPc=AA6UuF;p*Sk&G-TuaN`bf6fV zPTO-WrSJ4yY^V$|*)a~lleYJy;b8JVe;x(rmCVStU@BxH{5T2ve@3|!~LHet^<)&Zsg2;J{w z_p8hhfB_Uln-~a?#@-*`-jAyVSegQ#+J(rzSIF^i}bHbCv#IBNi8kLZ)G zX1D91=qf9ZZ^?eY_a88$@OVeF_J^{R*md4~aI^x6ooWxXhr*FUTS)mW66R$MQf~1L zO0F&Wa2y{D_O`_Mxc$L<*URkRGpEju|g0fRXbxfY7r?n zOvNUvaS^`f1*Z0xmpqf7bVXq{WXY5jYE|tcii)qq5JgkFOR0qHTIi2NyDWFCmX@bW}==Ml%cx4yPZ@ z%YKNy^;l~x&i0e)zTPZ5m>>Fiyu>*vnb)*W>V6s&v6>r{!?fy&;R$vrkfPD-Q=O#} zp_2BrL#c|MCyVbHbfNURlmDYg4uKi~sHURsWtAHWBMqcH)uCO}xfp=Sj5?D608$$* zh~-b2j9^?emD~_TlS0M|Tu1o5|MZ79Z|G%yPN4ce5_shiP{=QP@^~t<(~m$lV@hE2KEl0Wk&lx^vw|v7Z#9E8VrEcUdX%tN z*m+cIWsdOBb%kPeFhj4fr&=hgi%-p58WF&}Z= zr3?O+3X@nsnisaMAqu4k0H%qgq*{O9M#~lzXF;dQ4GD1CWBkASpZt(7{-vY^dRLTi z-PCo^J*z7!aO8#Hq(&(;>su;$(!B0MZ)FBggcL4$xmql7@|H-(;aKKoVqcuSkC@+l z1B7ubaiA&$km(&P#WPc^Usxw>dojBU$p!sAi0ozd#V)9a^%x1WWbtQ1?Z+oKa zqbMBkL~jtsYRH`QLy}QUKgWTH`=#-_3;|WsqzKhY!Kewb2_;nn=oQ*_7k1tFjA=z- z>T1H>nHoBN%FiSZzW@rpYdK zG;Xs|7-NdxfOa_bRW;QXj3B$m@T#F+ z&u4=xH&7atu9EkH8M9P{$O(qNliQL4IqRK%CnsdYihCvjSDf+s@m71>P>nCwG^6Pi zlWJl*(dY&RrKp@h@B>!4gq))u!?qDO(JocJs@|!(mVJC60zbfmq0oC#c+~5SCBKnG zQXYn7W`=>2v7VOc;#m1G3{g}y323>JQle>dg=V0-Ug&(LLhk8rtq87=e=V;?7+O{{ z04wxfrCK1I@v#0#Lrrc3K=G@hd6;S<5^t`Y7^9<0LrX-^H;T4#n`Y3Co7&>1*jj z(3@rEYs_4`?@Nf_E5k~cQet{yW=c6jalnX@q`(68okiK4<{aN&EdO{nblARRUZ1)( zR3^B;J)_qW8Y`Mm;&gS`i?pu|#Pe7>d#;tNZNUge!!3ufLU6|SKuPLL(F!nMqmWp? z%;=m#2|NRF;)xo>qH;+T7Iel1scx2Q;ri{?rE`?Ni$lhU;et60rJ-uwbec*Vl%(!3 z=5RRy*D!A}-ago_FFIfQF_{L@SrBFYbDk8=o|@OQ;-q^V?om7*9u7jA`a5VSO61 z?iPs{VhU48AjXf@m^4~65yLP`mT&24ZCZ~V;*4n&CdRWNIsDFMVMtRU7N;&0N;CdC zEm>)PUE3d@`Ma+n0>Go$d<>K=^dM%)2aUtzMquK(_kuzb9+e%$GQm`9-0>Qh zBUAeQRJf=dMk&5Y8c`vo@p$fK8EDBw=BU zW<5PaTgH4Iz=0+OEfibRYEh?<*>uDnz1_mt&4dBr{?mpH0|ijl-gF)MUG97Rup-nT9wEOM3ple_52rfwgxpcR1H21;>kPGtNin zli0BUg_Xe!T^qD{9jkq@36v`>pTbr7=EbHiCIUbVt_M61-uWm%2mGgUs)DVph$<`% zCMR+lL;a%}Wd-0P$2nRy@$M!Sj5YoKSt51!b<#lembAVxp$WxJA6S*VmG}rXuwC=} zT+kUEhrjv&hbZ#ErDV_t^Z+0jbp&3V;qFxj?>Y*v^K!LsI*QdOJ9$s^c1&aAnVYlS zfh1oC07~-H!$SpZsgNulC>(#rcM=|7MiWh`trl*n6v7=)x9BCH_M~^ckHSwW$V#a3D9yj7CUpFbtoRGemxWCZ;SjV?g)n-AFR_NhJ*}1#zY$dqP`wg31E)uBkJn&^^J{dr`>Ux zHlT{vxhG>mB?+rBmAP`i6)Pv~rhWwwL!hQ#Ue>}Wn(Dm6NRQ@tHKX3T52pw)Ss0089m94|Cyb{g-6#s~tcp>ZU7Io| zWoR7e64ECL?b=<|f!lAKar~i&`imWi2+%V7B`kuwQcA#Alh{ON@YrC)ZeT{%&;UR* zV;nd%dJvjuCW6;dzTzr{r!r{AA_6q!IQ@M6fG*J6HKC`Ls9`{2pvga8?q!o>Rj^7c zp<+p$HBJHp`-qP;s#&RKBP#UR(d9+K4r~b?5ep&eSu*fPUP^2w0Wg+T*#(bifS}2i zKm5{IIOdsbFC&yr{>>f@7R;JyN`@k3#)FwLziGi>R(j3XY>7^^yC(j_R@VQyELLH{d>98oG+C(T*34NrySDWZ!4W2fvkR5D zy}Rwce`VP+p={e=-afk{Y`oi{1L2@Bfy_;oUxskU0Zj@ZU^UU3dZ0EH(#$lJJ>kh- zj1j6Osf4eb%$$7**$~~AC?twRB8a%j*LKo3#?&g4Ea|bmym^+OjUDoEJy}LE;!05U zzT#kYH1A#Z!muN~734|Xl5)cM>hgxes)bnFQz2_7RTY1dW7S;|6Md9e< zdHO=;E4W3^<>B}lhxYV@!=?$2e}1L^P2NP@%?s-QLeG@51C?I*Unncj^de$5}gILTMTl@XtD zZdIo=MmTa%`vPcLb*+~5an^zpJgwme2TCzp!%)x4iHE!kH0+x-lJve6VBdT;Q$Lg zj$Egr8SQR}pJ}6#EViX2#=}-<-LS_Q)4EPLX|^zNa(d}0Z~ewX%bvo2gd=I;h41dq z-gn;};j(bIF+Dwm!x2N0=~pqrt*l5F>4Y7tI}8wW;`hl=27z1R4*5xm$m-Zhe!txv zH5RwzQn_p+o=0ki%`%Q)T!ky)BtqbpL}1Oa=d`cQs6AYsph81$=K9Id*HdTs>5Ipa zLh2n<1Aa!RUST~F=eaK%e#PbCa>TuU=Q%fo0on2?Pa+BpI8QXAzUb|Y;lvQy6Ek{S-&d)_P6no*5E8N8gX+i%+?&Hhe zGnv8=!xBUJAwdG!ID)7bK)E_g7EzIenr9B_2%Y=rr{2&1;A21gL;u3xOfyO%A|q1J zq#+PSI0$Boh%>ld{1P}jBuj!ikR}V5VhE&e=8$uRX;zX-g#fKR<{dYOxRGRFcKEv_R zr&-_sIFh047tvyCy`qdUZ=e5yOF+Yo|8?gEYTZKrX7d7w(%dIPq5rVWsrl29bJGq* z9oCFFmT@2mLU1u&Rj^x|Z3kitmuYSEnds`rf0<*8&-W2y*og;~b($0c3=!5K*7Pym zvPH_Wx^VJnL623cu%n&RPBfW{Ih=XNmyxU<1oZYY`&huS3Fym0w23e4$AADJ<*wWl za)Gp+njouC(>h@EX)Xa$pF>;AhQi>g&(n!jvOBv%_ff&q_%rP1uh#n7NG# zGW(UHLeoM6)`}OawpM^f2QR%}Gbkbq0IJF;?zrOb-iNtdb^gOCMPG0^uw7rb-Hk_j z+~K)kx$8begcmK@H2H{pkOcZSa*5WoL(tn&g^*9WcAJ6^AJ+Q!rtuj!d~3Slj@XsjG4c4k4&Pqp#mRwRSzWd<3ul!8pB*%>hyl z3vr+*n)gFXbweWd7@{sich$z^rr-ho{)XA*K_2ZFX|*FyxN(^lV)Tf`an>>+zsIW6lj%VO!g zPEDC(v>%Io*13_6hAFUU*?Otv#IoZu$K{J^xk(WxXg9B-lN_-Ws}xarV&16vM)N9M zic;$iZIO)&~>=aU{TOc_Jhu9?GE)K0p(HsirUqcmypS?a;5qLino zM;WWPhXXLxIG$i46F`kH;djU=7MWy!vDBzvOQyi~j`mB57o}Ze*9l`O56Iq6vOG~D zJ({5nF&%9Na!%^E)Dr)6DWsb79P0I;wmWboj;|?v$3rN*Tj6KlK*VE6O>tPNXkjp0 z?3t!V3P9@Rql%C_3I(=XvDd2DX!oYN{?eU3g}eY2XW$`ldXvB>bg!2xrW`HHsp zZUMa?B|F?c4t%&{7 zXD4T&yq`oehE-T107B;j2s%sB9T7|9^AQ5W5K;pW4J92RAvTQ5PUs(3jqdEzZ^o1M!BCQlc8^CN$tE+KFvr zGhtX`oBH8t#}Z4VNRyaY01hegkF#x%>9Cn2$4MD-S%CzK_wH+PT4OTD-nnY>(4&PE z=ZLb49^(|EJj7NQQHn~68+gz;-K+x@shNW%qk|ghp$uqM!18a-7~as(siXbm>nj0` zE7&29L=Q0bN2m zx|!fxa$Iu$IY>S#xXlCixgBJZM}Rb}6kU@boSeg_JlzSh3U9p5K#&rIlVSS9AlSlU zka`#)WM=4EIwsWCDj_w08ag;V!Vn%8B}1YG{im95$z3UP1Lfsq4fk`#C3Z>^ZQHV@ zcH%GFVVRhsGYucrpDJlh^C9We`gf}}E(ic)E^#^c$e-7^VP(4C){P ztvmsor4HyphbbtfDBXFmB|424odB|%zh-%>khYvly_A@z7O%cB~rwqRwPj0ynk(!KtfB3>YcXO3W|6B^c_$wRynGw@hnCn(D2`G zK6c|VFAzTi2vfqX50Q(KBP(C0Iwl|a|Jgz>lzSjdk2#3L5a|RU0fZCIIsf2jKaj#d zQ}~l#8C_x+APhY$Dd^wd9l6;TE=KEkw3B3vX!17=Ej!VPs`PQ);^eG*Q$C_&2}4<& zbL4Ghl@(!|(KTe*wc=%4G}UGSD3pOitxdxU=A3;LsI^XNY#}=SPn!(@v~md8FvrPa zO_ftz&RD9%!28t0R-o920 z1wfTqzVpWY{OFGdH9_ww{QpiBBe{haBL`#6XKj9^+sR~jv$#E^6749<0Twu^J3=3Y z7FW2Tu)C_%5r!coLeoH$L~t#eM%GCYSbbdj;SUF!!jVb#Jo`BbjwtFAk18^p6bVYG zDg#j!p5Px5CQ6QcMxbZg(g45^t7ZZq2rxXvth3hUQeL!PX#>G$G3FE}rRhE^bh!vuCjG_Q!#4h*w z%>DL}*b}Iwg`qF~$c!aN(50y?wEmT2Au|zeuwU$lh$eyD65-14$5z-|RZ58vAVgS) zXp?KWlKzpKNu2YQ;R*WXE5FXDmYZ#5w{hmEIFzAjAaw}^R;PSux4t@_vNDiq;|K(* z5+zdxjNh69LD2(uQn_f{gE~;QwF*>v0@@y?va)G-ohSA6n^{-R?Z$SyBfcY;mJv2y zx}69mKtvnZV&!P0L;wAs!-(R>2@3ff|0uMlW z-%Jr#%#Cqcb{Yr|$Z%qvL_|BNYC2fNWW)dsbepLH$XY-)AoZGC8Aa+*Qt3~{4OAc} z$VCi#(4n&!RRDO!b|ffa=f$BEO{JW$>{IUZjb+|6EC>+2(oxik(GjsCfh-O97C)sU z0Z3@F-~3p`fB)jA&qj_u62R(-`_A+B(N{A7QYXJmVIYMEKlV#CpA;P@w*`+3I+6#) zoQNUzL){0>8yagRBNnKHxU6$N@`hGbxOD<_i4_rnfu>{B6yj1_DMgBm<>L&20FWug zdJK+Xig>gvxw1GFdNZe6w5Wt9NXn{2Q(sxNbit@1fV35i3&18_)xu||`fxb*dV z&Ds;1^Ej43nBfS%{-0enr84D5A6N4DezJq#V7~Vr@_huue(hIc3?jqbD*s=vjQ89B zoA9^)Rq(H8>;|#~Vd;MKLreejAL;#%-|(DwF(4^-`Sy+b?f(hq4FCw`n+u0FXYgdS zdcRJ-|BInZG6}sThD@U`KvC#_JRXq#zVek%YaNECICV^*vBYx|hevm^Vvip*LME=6A`)|S-^Mm*@WIkn z&rk{Ae;0+3C~4Yz66w=-HqcLP)q+A&?2x}^F1|xgZaqla$H&0RVSb(Jx}HT_V?r*$UhF24q}~B-|EfE z1c<;F*!X`^xJM`n%DjPK? zi7qQK}tYGsvy#;Bo?zk20&{H8}U(6T}}BCX(C0gM=vOs0J*I_eav86SxK5k zMAurI9m*77n7ZbKf1GJ*7d}orWZz^|oG}q;(x|%;S+hjVxkVrQ`T0Ma?#KTq_Wgwl zkoe1gRYOwk^@yMYj9-j-aW2EM4wmDJCIFD{d{5c&XyAN{EhtRM#FW*3|`mg zK8&eHA|Z9Ve!l-JM-z1eE)<9M^!8K-8BKRkTnW5hx4flS*CZtsxh1+@zFD30WXMWQ z5@FPWo@A;EdwHZp`uocM@g)KfPANeQJGAn;P9gzn&e2f3M<3G-65d};`u)Fgf&v%Tj$f%dvdw_pG$-GY7Y(+TaA6W;u9RjQQz+2w#^OLlbI;Im4oC^{(pqXP0+}*k zz)%f$t%!kJM9H?o1>ZAD6v-l1)(i^;#e|i;($LAQVOba48p{me;(LGk1C~PAf$JF!m$?$jR-a;GHGoI%}%?9 z3fNvNFN;6im87OaZjBa{$udF_L)c8R(-(^MdqQK$_P@aaNthr{b8tbh* z9uT+`NW>1KMs#pKpo|tH&LhGCA^inyn#4_cirGwug2;uNn`|&8pIXC?A>(A^5gatW-u?938^cc zNxvH5CDVvlGMUVxI_T$lsG3teJYg!muM4bt-gBbsAcUrInbVjCO_iEetj34TD!PO< zdIe-4+(~SvWRD6(T*z>S=s;~uSVKj%rnQl)1OxbE5YYvNVqE$r=4H_Yv-t=20~DAg zaZYn{M!A6WkYzbibRP`}(-bZs5niK$QEVMsA25*e1{pP!c9|--N+|)10*p>q;G6Ls zJM_?qwjOb8$L7%~^8objempxvC-TR%(R<8EyugjxQ?BtMS8X`Obil0tFojpP*;d3Wa~e;s zuhJ@K#D9E;X&!|Z2?q?TXcDN}wkF0o&1SM{Z!>%JnHp_iikdzV;R4V|W5f*phBDFI zsfB<{CX?&{)W+$RrQP%*glSei_6Q*^6!&cPf(arxdpX!nXXrplrJZldd5QB4uv4$L z^|PMh;Q`s}72=jpv#OL5w6G*aiUj&fr=bAK?FMJ1`GCHHEN5J%T&q=-;I6a{4en>! zW>Qa*`QR0sg{2dQ5zsu`Z>BLK7BLGeGo7YjBr+UNJd&LCKKRPJ0%cX6BB~xN!5G<# z!#Ph?BP#Z&aEA?YR~4!*3lpgEMSj5wgd1xIw6$`gTtaLdxL1S*WM-eTDSh&sa`F(Q zcO!+1d%fEfN*e8a3lQyz4D!R+alYo10~1a-yjETm?!3$<`qly&&V(c^>(Mp~SK`S- zs^BZ|Tro||>I7rBgFS;+{^C0t96i6 zrk32zmU{AW8meUtNhZ#SY?+ss9!apmsK_;iE7mG-O~hKe2|-boEk%Q{K!gV9xs35t z*97`fl_(sv^VlN(xe$DIMZW<{=cb|OnN3d5a;{I7UF$2CvT5XYlyx+VBu`z zO(bAPlLo|&6Gfz^gVIoqs<0NN=;_vNY!c~7O@!>`lNeJs@c_z$X`7`|;#Zbz#Qgb57C}0(ol`SO%(r`k0M%W0z4;mWe$zB3nu++v61z zAOPg}jOcr|4$>r5fw1e+}9Z$xP$x9wom6fGz4)F+o4eBf`McdTsppbn;kr@uMr8CzMG!pM}hz zBr@)Y`m7JIPjVWls0^LSc)1m^cyc=G2ex}1VFb(j#Z_j@(Ja$e+xs&33=hrvKn68@evg+ zhq!4_q3J2a8^qK9LJqPeiGc8WfrGvKbFjIUL`sYnCQ7Dgb^v3LHGH@po+-NcGAju;3@8 z8J-+_{#V$N&_iifGM#w(_oaUq>9p7OON?1}3x^v!I15X3Noj3l>e!(yH%6)y2R9ui z?AxJb*}x=6t8rg;YYN+klrl4#GR6deqRas&9u<%Gea59D+l-+MGUWy4-4sQV&>G!( zt5H&PMkjMpd^_LHh9<%^U5umz9%V*mOILz0hIT9Fzu29L&^dPkX0i-S3U0|nnAZ2> zevyJ_crv7rH~!HTE)fb{z(Gb4sl>ns?L?UyFY5EU26|Jh-<2NC!Kr2k0`l|Y%s!f_ zJ$uB3>BHSIQRUtzE6We2%PjX`ScWjMmCSomJAO?fA!rpN%84mwtcY9wX{U>J%raJ) z14~4vZVuG!zxjz3|XTx_|N^a(H#v%iNzAyw~`^|Hl`Zo!X4y|2;Ru+o2zU zwZ?+p%Mb7}4h}R40wnw1Q@Gb2|JAkzP1aH*(hQY!*-~ziA!$gB>kkdF2Qf%CmO42b8I;V zTftZe`U;=Im;QRf=BO|$OfO8Cc?E^T;~qQY-Pyuk8l?kiWoeK9?!Jks$b&K-iuwO2 z7IZA9(9e4`8%;w1<*w&J211%Hr4TF#_3##HrLJ!Mp>`8MT^O~!jV&@owlvQkhokfs zGB}UZ?pV**p`ZsaB{XC(QvlxIs`wPG8uE@+v?_13x8nlhH1*5v1KXetL8+*}xYgyw z#(ij}b_o7ZSryOjc-#{}H0$OZSeTO;J25}eoRloa1Jh%v-*N_Lw?Hh|z``r{XJgT% z0R1M80M+&I`d3e1n$jb9c8N=00HY+*7>Pv7(#euMbg`(>UJ4G6czpyAFr!%qz^!r| z#YM7UQ+bD+C}+cd8{7zSiujSewYJCAj-YXQbho=@X>PfDxI+-U>kTPv6t3S4VmQ~D ziwP_b@ZVlMJS%lF>Vaq$##HhrHzHy|_Yn7IXC0P8fEFl#4A@8Te$So0)9u`=_tTuz z1wt57myEEQbO-RsBOWmqplLRD-)5i=4)orQF^kGSU=J)48%b!jJoM1;j%|Hty zat`D!=qcM${tBDotND3_qMQELRx}~FDvi8TYf|4q(+lO)!qyyKSJ->uVemOxG9@ry z<3F9na^+blQH*y)Z$?RFNaO67EXck5DA#vzE2s+tY%(T@oTYyGtY(5gIP}^!6ApLZ z)ge+%eI}PcfF1|e?mjgDltV7VU*8^BQP;J}ekj2C(6IY%1Xo1x^#Vyj6hx z;9uwAw-)$=Q}g={7U}~zFKA;Bs-(nUqS5D3fZ2?UcBIRA-OJ7j&+P~yE2SAzJd2(D zzo#=tlV9h@xiexKdK#;aEcgE(Ahe)@7rs9`8_g>O+QuMLl>({jvdA-P{^es985Nbk z$L>$RtGzm?YMGjgA+53i?+L8jfPV{6{Fj%9ygcRf@A-bz!hA?7ycVi9LGG*+emdj(12l74;mGB>dg9PRixC;PZ z;NIl&H6`M!Yx;Fia(FNGw5M0iZPD*)4cpD=`8-k5kJlw zA@)JHai5)s6smVYwxh!C`^_YE0~}`Oj@Q#-RChdPb5bFr5oZo>oYdhkFip<%gED^j zhQJyEYkyD+FjEWeO=$j6CIz-rP--zCVR+h9equ({)rF)KQf0-b-eH8$<(@xt9Lv}g zhK|g`M*i=bF}_J!BH>_Vp|Ie-20zmMecQJ(1P-a+nABpBKIU+il%nvxr^kld!4++% z)*n(agar3r;xitGVX8-&aFb!ek8$zHVH*NwgxQV)|4AX+* zXJH7w>gLgGGATVA%*=|zGVGt}jj?>$C;VG3v!L>_jly$ToM}QJM}=(5kyYk8<`G>O zfjBe<^7Zf?|Dytj2+TUu!ZY_D zT-Sh4W~692^tqh5h7PpW_EB55yaBJW7rrO3iNLaFLg3$S89ew3NmG51|M+4t|FUVS zr{=P6iORvRL0~3%}zw<3% zpEL(=R`_MlQ5C0QuE#eOWRK?!t}O0%HlxC2*X;uYf@&gZT|1Bzv}| zOo5)qiX$tS83(6)*sqs98QTtiww0fGg9XzyxIYKGSu9e(J}X)d+R7ZVvI5vH`b}4V5;#m?7J)GY zcAi+k)M}C9^Nz%uf~TTqftBb;Ub(_d$4ei9dJx99Kx@erJHOh(x8GpT1rJzw`TE~> zSa77(YLty#AY=L=(wd$L`|iS7B)H0LdLevgHp=3r;Rq;POt8+XDI>KEC` zEr*E)89zjNuc!O|cw*Vj(=={E?ZnC<70KZ`?!AH0XkpzWj;=nQry_VlhyYX~fArH* zBAJ)La-0f-S@6z@ulg1#cSeonoeqA7g?Df1BMWC|bZ|>I>lxJ;8DwZV_LjO7y?%e9 zOqkQ82_t)(H3quggxk)p!=kCS@PZ3+5kV+P@cmCsli?ca5EX{d4uN|hCSiIrn3_;{ z_j4*d;T!L*#-7p6i|5OY9pGp=Ek-Ghfk59+XENwNzmRz~;R;RGE!R2GXl94-gb|1) zF^@@4B_=2BWEycEA*7LtpYTw40ONA+L*X@%UjPd)yv#8%m8cs=JhUJv0ukLude77M z`QMDHXSX)vK%p4XY$YgDpeK=&kx}$?WYPQ@(pcr4(cTt$M5d5~SSRBnh1*tc*f`N+ zNb8uoss$P4sm?12!wE8(@Ik*pWg$;9%P9g|3Fz^}6o@A>DH-&j6qs@J*;x+B@Eh%T z-w%s#z5D=Yv~#GN(IbDumP4)_WeSW)AL&gi(+_2y3c^Hl0$j=jPm@!U;7=npiTGsG zGhZ={f%{YVt|#^nSlL*(akH@K>YQsaf};!~qOa3s=FENmc$fsK3tJ2$fXAZAD1V78 z(tjTGZU-hOp?9DT`~eg`sPGdznvaG>@uG!SpG8KS?4j8fBg5Ielw27it@h5E`#@~l zwH5<1QQp{!VN#lSfp1LcZ7>~PKAp8wW9h`(;HGBt` zdvQPu5iX9}D8)32eWY)-e81SnMOscHA^vkyQ+`V=5;3}^lXH=`vU1D8hhBySw}m?v zo>sUW76ThU;f*asu|9?fO_;Ff^^qrfv2HEGSRfhs43jW?OPXn#xhZ5v0tc@=?2dT- z6k65F^&jbFLj&&6QHz#AFOCvKL@S=aw9GS;-S{-qBKBH}V9zMZajua?zKHq7>;4lc z?7uJz?g&}D@IZEEZ6N<&{}ZpUMbMt!z=#xU6L>w5L6)b{f=Ut*GK)YDh9k}B@1|+& zId>+spwfxrWeZ<&a2(F})bIGa>wB~aY2q+~h|#1^knx@=-QXhMnSgMhrBXs$-{?G% z+~VS4o2<%$+dCoiD%_4@aIt=fEil0w^#RgJ!BxJO)#Q5-$f}7N32}X$s>-l*3F&lq;VR$($ ztYCIvn3zlQFkYhn%zt1cDg&+B`qp3AtU|q&;GL{AXS6gjhLs(eFvwAopL}!y? z!44qDH?A`aDqb)_RNB~*%H2Pj&;6Jx#Jf1aTc)w@wf{&k1*l1&x)-vW@ zP3NmwbP_*8AdopAkPOd{M8aVq5Xde|fJDktYXqBg%o0O4T-@NVXrOXh9dTORB2rmW zD17ZRQ1K~_W8z&Xc*lF#IMS?JrYE}I!OMQ$%)QKYvrBuVNjVlH1V}do5-CO0Xc28< znm4UC?Uy+*-_k<^A&^~&04b5x+w>XI#%y&+9~l8=i7+b6F)?8{=EQYfEe|;EGY|6u z46j-f#UT3BysF_H%R*qGfu#-(G*Ox|D(=EmTyyTtobn9w-dr;Uel35n5J)E>?V$`J z6^l+hderr13va|*7F}_KD_qa$6T0aESVz38bW|X)SPG%Gi8~|Olc;Mf6;@* z?J=v-GNj|?f$x9z&2Kh0MlPWVD-g&W5FkOy6=k)Vo7*f};)atompJJpk12L#y>_5Yn%N3@0M;AZ{UAIw6eQ@-}sksD5nmXuc1=Jc_fj9u^< zZO{I{Sgu+-l=J)ge2uG#tog;twN7K?lJhQSIpQ)uMqb~KZ|_!SikLR0HOt;`^=2cg zQA!^9c?c{Udl}zj)7PF&Wcaso99ocOFd@Yn}8$ zNl2h!VPK&^pE!$CU5M))(z)y;jkG&H5m|kh4Az~kot*3ar^2H+&CFCWl{rT|qD!@9 zNZc0EHd14!d5_s+jxpD<*vW%-2w?>vkrIgzhEdUHhZF6wN6Tn!T49f?Kji3=MvH(% zN6xbxYUi?uNQuBXfBk_OFQ|^nk?S#9VBP0scwWkt8>|##Op#GE4S6{`PeyZo!3T8& z8~-3$Nu+qDn*~DR1CR*TSR_1NQvwl(2#%s`$U%XvWNgkh|2WJ2e~XXWZqxGuyCo@YZKq2(TL{?EM1A5)o!w<{DZAml8o~HAs+x9F?N9 zT88V|%G_hl&1}xxH_4E3kuX}6mdzeRPSmH*)%(P6Vh|OB>xBX&5(MhYPJE5SjV}sD zt}DjO_;fGmq6N0d*DziZS(G0(mLa5RcF5+`15@@-zIz+*XwFE;cY5AOdsz`--tzl> zU%>`f&Yl1WI;Ru}X+xSMn~$~=P4TFB$T$?v;-rx-934o|-a z+W*$hEh}I82zdQxVgD)Z+zdD5W{ek1DUK-Z9GXpP%^X1ry2Ml*X3RRkC^1|#pr869 zFA~nqrNvc8;?_6hHxY5P2h1c!-61YhXFECc5f=wESI?0yQ?wn2bvg<%w?w#j$Q_aYeDj)G%M(H%c#+2nJ@N_lX)!%| z931yd9-L(k>Mvm7BMzQtq0npL*(d(VWt`z$FWp&6lj9xk%y_(sH@9a7El9@P_WnWB$X7Wx`!P+DZ^ zJ>3%?r>5s^9-dtuA(|zXVq^KzujPHLg@jm+huV2DD01tL(yy~1`#MYnPAw=x}WQ+%>ydMEO;j8!vuGpIYg?6ECe{YZZ`N{buU^5nSz)GTzX!5C;HDGVxjbf zpV+}24dpQgWh@lQBaYX$HhHo_IAxI!aK0F>TKKraU00<=_5#RE(r?6&U+4MTpy_1) z{uKJlvk>ZKlh^vsueB{{hL(k^PrjTEPn>BKeuNl*NX-k*hgPRNmPfsOR@krOEUBKD{|Svy)s;u^yi zQoJbK{(=6S4i2o7yZ>n~Z{^NxLq{fVjm*wzy6f9X@uzJJL$63-WX7zcfJpACKH+11 zErs3B{CO>$`*&W0BjxfI8T2$NkrCfcq;d{2ndRxf$d$$}l)$iuRruGR#?G;rZRMY4 z=j+><5whsNaTd!R??MY3eR~T3{QLPqLUWF<@6Mm< zJ`Q^6C}EfwG4k!+c{^XUd#Bk=baTq$MLr_&!SDDG{~sUcjxk;kB27;H@t?7+nXGus z41B;}?;|OEcI@#u(jEeAWRsoZZB5x9B_2()qb>6VDynv1UU-V0#{(rO_A@7m0kQX>+CL^DIT8ehERpy{AKwse_CsN`# zw3 z7_WNO27=oP|ES~Ae~!`eZ=Fv23C1Ro(=eQD(@P(b*5jeRrxuhG>I*&4E3^n{@mZ0% z#%1BMzTm+xQC#&|;a?&2qdf27k6DBgWdlNAZtUavWfpRU;rY@ipJVYUiFnG%+F}lJ zKKgwbE$DI7Jy}SOgs6~Q+xb1!e?D?~A9YzDw)4f4zdN{n9v6B~Vu;ML%d9su$Pq8m zofwY?K*Gxi|K1SU6$A=-%MUy7zqN0MT^8GA4*I|U&D0!^I>Mp zurogtDe)kXxEb16;m3u+3|AQ5*uu)edMe_Ab79G%m+eRiedH*r#7k%)3apSS_s$*L zdp`B3%k?`u?u!Z6zGyKS3iZyFr-XT_%`W}&GfD?1aj_Z@QsUYh8awneDC~D}1!Bni zn$t0a7aQ4u_Sjj}*Dv`hf)L)&LKRT1qRarkT(e_|8>NZj-e9J|#IbSAD~T=zU}D3ejnwdu%@*n&DRhW5QakH9&!&;{j6 zs&{UC?R?$YM_slL``vS=Z|=g}&STQZl@gHy5+TGA^Ol*9;qQM;oUp8rxbGdf_$fd3 zUWBe-VC>`!x4rZ#^U~4~%j!6jl5q?moEFN>3YG3ub@|FVGwXbmS}eZezRexJx$~ae zjVYIAjg(SkLkc1E9&^Z(&3ehWXOC??2z1={4&3DX*>Foj!>(Z1x?~#4h;xnnVmBQ) z4a;3oTN4P56c&m@sjdm)6U_iE%rtS3xYOpqJ<}nfv5IsUWvO-{g%GlMzVT#-SnhSi zj%KC+1XAL*LWV*wtnl3m&kZCrj4KdBj7=h@U^?}t3y>Y?QA}U<_Q(TM;|O`A0m|J% zrPww>;n6Lxwp?iRNe}S2!{+vz{h&>AVT;+-F;s++zeW4ysSb^A;SiTsZ}cEQC%d6x zPx&~D177Zp81l02l+@f)x5sx{x8>w)4oLh)Jpg$m!L*zfN)?6Qpzu?AvaTd5vB$p5 z0pcLd0h-gcDx-x&;9up-9R4`C{EV|4=kiNoNGZv_!oexOlgA+B<=%{24&^~0p=J}^?CNa^Ya*k!D za@gZA%j{zwd9XZ$kdmBy8HN9Q#t@-l+?%oI)2%wJ4bhTel_ksPCHMME?w2wN!w6l# zx<@h~^oU3dC&h*cK$7XOWD-{X#X68j zq@R4<+o5$}%I66~0HdW0g%(%Xe;|cxueIvYAM_D>hJ++$X*upEVhD0t5Rd0yOuiu*Z+i%()ZD|Wow)`th%`hWDo{(5=F@Vsp zE1mK6&iN<`-*CAQ6qK~?*~28K1r7Uu{H{8`pFZAPiOA>a`E)O#@b?t{s=_aNF$m#3 zQWx?*;=4a~EN6e|+{G&AqB|&|X<4F~F60QqFs3C9;a%rJKl*!qjIpR%8bQtqAu68# zE#kM|{7&Od#BW3HtRM+>{m~VE#ot%qPb+-eV|WSSJ<{gw`6xGDw*{w@GSr>A1O15P zR~$UauqhD><0PegOw#v7luY#*N?0Ke)TXH=)`Z`;k=ak~2aeRy#1>4DMni zjpSv0l%`swZ4NOGV-Qd?xoO=Poau9&{c<~ZKFkN|bkFy;NA}53tEpa>XX7Q$R zKqTO@N8GeEwgz~~chYPsWMqfLJ+aZMNeH~&5MG6w5A=}~t{zR{;G9Q0=i(3oZDFqS zUKH;9G?P%9Q#Ktr4}AeDKlPUB5YmMZqF@9+2P;pe?hoY!Zzu$YOlEg($Ab#218o_LG~3KoJ6sil+}=v4ft38Ts>ph*qEdQLc$Ow;91I- zKm2eSU>m}vc?a0nVvqilmtAmEK*{s}R`4IY6ST$_#ZsuGAw?WJ)_7av?calp!z9t% z;9Pj3L0HZ6P4dW)lqE${WxNE-q@xgm!Xlygh|gGfbo@|JX$kBpg-gV9G6hrdVm)T3 zx1fj%Ef+K-5Qe-s7jzLhG(EZq00K9s!YOvucbinYwQ5`lXq+zIeEfd#C&pyMHi|VN zP(6)bdDF4^hBjeC9A|Z*BH|zM8%SvO*>nqUHqTDGMHdohK@4<@aN=;Ga9d$G4WcTu-_gVk@-^~$*{)#s&1fo5TqA_BANu_`KN`w8Pu$pT>Ve>;hUtsy5tI9*W(WzZ}a8gFNb;ghF`vZ`K$a@ zaGmE^A{7H>4=jcqj$>}IK)GhyWdT`bf#uiPNi^Tnu7fb!-~gU;q&fXh7hOuChC|Y# z$Lo5Fk3BrFBYyEn;eW!vx`J&;?u>;t6}fMQMCfzS4oRjllr-!qg@6!1RfFpMAMvRb zey+lkJ@MjNDua=31VC(QxP{<~AMsLWKweXOi|F-lUWv5oUeN0!H>A7)aIN%y)|bW$ z4pCH0lq;Mx(F;0LK$d*4n*6NTLKBK9(1RU^X?f?Oy7-5`(LHyxule4`p_Z_a_0~<~ zTFXznxkGdNJ#B!h*ULJu@CzR^4GXaLlN!-1`=RcGh;$+kLz|T{@KeN6_r%%7a4L!g z(J~)K;XR*7;XK|Du0`P`q*9gw*!jAlA2hksBST0FWcu}_*Cq5%+TP9e!5gT1r@v2u zyi{7+f*6V;Q0))Ckf{qGLrJJ9NNQRd!@lV*1qDzb!w$1kKiV{RzUR(18y`w8gOng? zTCM-A`*?cJ_ z#EZL?kdo5 z)rUTsYD6U{H*Z=+Op$?1k+@V!@}Ut)G6yjGF_w`Tfl(QoU}mucE8597*kAk!`in!A z{1u%bghE;*lsnL%s**Qm)%Quf>zbyS=rfTIb>(PMxCp`FLJ%Z);A#%$o}rLCWl<&) zTUwU`(6kiff&q8#h_j09pLm2Zo5=MC)taV{HalJz4G}^=YiZk5(d4<5_KY7Bz~Qbo z#D`|v;5vGfGCBz$`b@r=x|!NcF3mTar^q!IFsaKSop&rpK(TZZC;l`=?AvHG3R^-k$7vh8V&Xgdxs>1(D;`mD{`*Zuf1H&5cfy0ABV@r?#?lMLL&~ zFeKCxt-?9Tu{oQ+MICR_6-Lgcq8m$M5Gn{aHFeOw`2J)F@v|nG=q8VhSltbA{R)XM z0AkU7jD0uL?@7dLoqKTZMeeE0YXpD*o^8W~#u|cHZk^y`fdoqxa)Q?$9FQ_ZifFpz z${(5Rni0ImO4*8XEAiVVtD0~n>gz|&eYA7RnE(K{@@6XoCP|_al;p6eV4lD zK!D21PO^HtgBaa;PjB8A%ZpNtNLTCyKNb>Zec(Z*QeR(lp=HYY_p2!b1QH-ACL8{f z9U5&VETsYg(Pp$b(T%2T9-#+P6+sioB!~ZY+~K=b{5Lz<1OVilt~V6|FvBhaMHDTX+q0(MWKF+H=C_-G zBq0sVC?$DnjjjYBVJv7>l#2Eb?|KpdILM%6yd*pn=lp&{Gj3Mb0F1aMFIXf|4Fd=Q z(~dX4ueZ2qwHV7k+irIbK~t$95;VsA@^5*a*qRW$Y8-h&BnY7vhTzPiC}2W8Kfr%R z;gX^|_HCo1UT>^my*Yc4V}rBw(r;M$T<46O0-#>G4|~d5e%+4WUG|31f?q-g*n}2| zv|jL8ihk#Dw^a)|R29uLH3k4K%%9{WX$bf-Bu%H3OHuhib#=jK0JmJ@Q zRkq&RYamq!iM614E`|3i9O2E1%n4NWn>1w{+XZleb;9+g>$HE1!Pt1!X_R+|+Wh^Y ztD)-=nq*WtVt9%1m8wnDA`lNZJata0>PKca*Z+MM0pJ{hnqI#0(j-|P3vV@UgfS{?d_7R;NE5gX z^2fD*_9*hENZ1fE7$yV)gj-RdguDv(fASFCf#r@SPbE{*#)u_!gc@S~>CH=XEwMOl z#c7y&gs$WH6xT-_pKyJ6hFYpblG&@dtMMh8XC`VefA-jY84o#Oj^_(Vz)ARgl0u84apLeKxxrPA!F=8_6T-RjZ?SQ+y$A$qa zf?o+5OO-31_|eU=&~xCqgt2uNsiTlGgaF~>05uDekXPZN!h0Xu>m69DEE=kMSeFbc z5o#x4jf}1;DbCT|J=CZ9f`JEu_i_*VALX7-4Xxrzbv1<_QhO&|jYT1ilORhb{l_K> z00Ox1)%=s*RwLKHOo9=eO6JXW0JTd$SPVuB)YFl&WCB&O!4>0ikj)eW3WOj{<|@eu zA7ooYhBtE;Al;e^m?6{>j2vsMsj8u@(C(luNs?sXiM;<@>l*>EGBbvGJs=ZN z_O7^;rw033((SxUxTA>Rc7TX!E*xhJfy-b=Cu4)EXl~k=M5JNT%|EOLJU&RqT+Rdc zeA{=fKkOXFU{v}lK_aM74{876DEZsJ_18U_gb*PRLM^T!Y6R$BA6((htKvQ35WCqb z&xNPG1l-E%mC$H-v3wMU23$}^U(f(<=Xz({C`VA zl3@x1Ln6y`MU>s){R)D-TvywJ%?*ZyK#FZgByJi^T!&ZsGWjZ{H8*S-gNiS|@3@2k zLSU1&&SNTg;=kx`*6_xgd6Ga!YdJuG&NaNuo0dNlhsQzD11SM-Hoz<}LZMgqFlWa5 zJfot`l3U@tMgs|TP<1k4yYt)S9=5;E- zGORHMm-UMj7rpe1{h`WT_1(5`$EhmQ!mTa&-*LQSD)k*9ql?tuU*27Nkpqwp_xF#( znN$cTn_ous0L=K!3jb=KC!86B4czWKPDeEw4O`)Sy4X0Z98A*02c$aJySws&oArw{ zZ_NCS$IB3lE8M=)2(&d8tzJ4Lh@T1w$*~QnZP44GOzp$}y7Q9D0bYbqA;dW|3kr68 zVTA)PY#b!fv_Y*(WcfaECSqDdgU#dCNh>%6#uwZe#UQ*}ahdh;{f4C#m#2+b{h zt^0$ZzQH+kk)Fw5_V{|nM>!ZE3<01!`V}oo09~zqEPLT7L7pTX(yj4nn=q=zvptwk z#fV4n?wxO3hY1Uqc{_*eq)94LBY(H|7&Y?7Pf*0mstS8U`EiZVE0lyn%1`8kxZpHk z=yoX6WL9zpq8L>vRN|Wj#6}7SHyevr&y+Bu8vsN}pQ|^I9g^ZAEj{tb*HFK}-Nk;e zzRUXOsGc?Kf6{+cv8|%QY$$4|DtF*`r{^BTk17S$9P{8($KAn>a`WL(kvMBn{)Gt` zLYMt3CZdhY40p=YoFJ;AS=0#BW5(#&kamXwX}ceeX!`iaeqSn>?%)vOze%?(<3;q z@4Ao#YJlB_m6w7YMbqq}iIaX4RLdOw=v@t%dBZUtEOrkJU0HWS%P{3C!n7J(8*!p| z?&ak$9ox{~+kDPZ$0N?&!)7AQUk1_do9G8r>hMRfz&8J;8u7UaqKlVa<5fn}M&+XE zxa-0YXMhEPY2QO^1cC5PHvSefMFOWyh=eBkrE45cYbZq#At!j8B>5e@^5OQ>xy@{zSf&zyn2YKD1L2hEe0Sgp;yCFHNEkq zN#@3tClg@+ff$rAR(4grRZY9)?wq+w8ot{B63}02L}2L(BM`odBt#waBdEx`>d5a@ z{YD@_N?5)+I`vo)f!GtIG=xf+4~aDbP!JX7W^IC3j#^#6)UJRbc4&ibmo>Js4#1Ov z3!-iWxPwoaOlovKQ2f3~9zvL33C;TM7n1xTc88>N)?tTOCd#s#btgMh5EaedueAhJ z8@+k~)%|x9Xq}vmU6kKe0z&Tb9+J$2_4~P?Hntdtcka25XV@hy1P}mMK&Zb?G3OS? ze`R03_6Sv|)-fmY>hIN6gF%<>Cp6U~9qBe2%i+aY%@Nlk^PiDkGeiiRS$TY~UQpVg zuhs0KOHpYJ#{($OSb{E$fhry7fGg4@{6tpmwEIR4FH#q{to?1=9~4H<0hy=ta*M9y zQoct32~T~cWofGtw)hb>fUZUr&MPzYMhUy3f1EkS zJvaw-c9N*}U1@^R+zhgaas-0`&^jwM*tH6QXe>Qsx$8(|(2z3Zl_7*$7*mIU1pt-d zZUvic(apaG^|8%q`y}jH>gov%7=uf}r*|uIp{80GdBvEVz zt`y$s2gdS=YN(06W&FaXG|3hj9Q6w4D*Jw{RSy_4ph96Y>B=JAZmVV=b~y3)cj4Lp zo`c*xpFUJ~Wjv%g7Y^2`L|q=EPR4BBqnWq4e>_;ZUYF{)Qr_+-6$pavIzw1xY19<@ zEl>^NIwTkcv6SEm{jAq z^(I}VdpQX9(Y%R0pDy=7_G!r6V>hnItq}8?#U`ksr6L`~#lN~fUrS$Zi855j#ZkB% z9|V-wFSZLbzE7192o*;X9`-t;~HFjFR)=|*#8^pPoUSk34`qvnzJkZSk` zgfCi?YaO!tXMQvw`1MS*qW*(im(W(dX)4i)#Y-rJ7YyM<2snt$Zv~+uxG9(v^lvpy zBn@5E&FXX*%T_a}m5DRtSK2%35J*=(9AwY$yZ> zAp`<`>b1vqrO(`IMQO$f^r>xWjehC2xE~&+%aN` z37<3#I+SgW;M;hAL!`i%3?G6mj_QVpGiUU)#i>h#3S}vh=CIZA4YG%h+5jsHPmIo4 z0FY}JlGuojNT+!r6ha78LkIygU#X@SbpQ``EBl7!r)^FI>G(e9IkGm7z0*pI2r!}s zpl_j5Dg=N9Ysj(s3}|b3IaJ2+p(5ob+~bqflBAA3U&W~#V{i7SI*#PY{c6cKN(2S6 zL=eI@zqSF40*SkMnhwKHa=);#eE_S>3BLfDWcJlGXns3f5fx{R1m~7MhEyS#>bc37 z_ZYVkjG1v9P#iz25Co~JkYZpOsLRk#SWCjhqfKVX}aroS*40ou(T}D1+sopIq zM*GmOIrkD2J^&$h1-fSjzFH(;MxmwGA!BPyU;L6dwzsWGf+TUOeSc(dR5WVt;1~WU zN@PGFJ*2J_!`^H<&0qbI^8@b3Fry>_4I~pjD&jV> zXYTw@-TV-wssQe%nOz@qxC9;hVSq5CbSvCfBMPtBXOQN%MLAeKz3+3tq55bK0roQF zAJ)>yEk?OP?`CBXxywh18sP!2M9B^tAxF=6Re%cqtRns|OcN#%)J_B#)&GS`2K;BWab}+W}0JrCPfd3NlFZVFkW7#-; z1OjEk%LqI?NUOceqQ7L%A2o97GU}iXo#GyZ_5f-U8UysYp|~4Nk#u03c7r3Ah@rt< zVG+A2^YrnrT4TFWsR3Y3+kpxv-%o{hh>S>PHL`Oh_ML2#r-ZP`I^tXu)O$ z6D|nCuRV%oPn6gY=ZG7E;p1T^IKeQy3?E-EQC=GTjF~8aMY<1H(dBgoGN@r%O#q0C zN8Q}*Jxs?ku`UD>E90FD-{&K;8(ZL~UHIpv2T0byqkdejXQ~BQvFK@mEz*YWPUe!b ztUR1pG&hcA<+XkGd!C>>3?IelT@LL$xj-=K=74*eLtZ@Wj%a?^4xJHa6e^I0Cblmz zp};SJ#TE97hb`#P(^`po1rviX42cba8>pK3B{Xc4D=iMl?zWA`XT7N!3L?q?$Wuxc zL|2eOy}HIC8nCBHB@b#2;ZPZ(CJ077x##^Cv86{leNTG*Sm=U8z)yeMzI>l^NW|iB zA`|qw%z~TY)aHT`Gp;eUacK^V1SN>^dQ4%4&Jjg|EIEMrbcE9#=>}c3wK1DZt_v+q z{6tHC1AYCAOT28P@amPkK7+E5UxU)b5JJEi_{Qtqap#Q)!RC5Ek%{$4z^nq;yq`+# zZU$)Mb<1LUBmw~2BC%F29*l^DFvI=+i@5S(G|w=+0>Cx63SCUIvt!cTNoY0z{7t$W z{a!bH=>=OY&9c&A%8?SIx8A+Cd9uTI(nSPd3Ui>%((>YAcR=5mNJB)8a3^Con7IO( z{t^UGIJ@O0f~dc&eE4{*G3SVXzTxMwUc8XM2>41-t*>>`vqCyWN!%j9e#sE18;7q_ z014j)O^jCK!60^c?+@(=honOa89TpyBRfVj0CkRJNFmraON_^Lc~g@Fb3`rGy-*b; zB6!h~@C?|+q7oRoS=dRg-Vd;r*ysucT6dfy&9N=u-I&esS#zpI&|#x(Iq6@J@+Ch+ zmSm>{61FxCE^wZVC$;$zz38{{>ea4-X`A%`bM*F5P^xB?-cb)d9M$C39ePPd0dU&= znJ>qLj2-C~+iB9Mh&BZ(=vSFQy>`LiuHmfVFyI~5J)Bd2wI05O*i(Tx`JT|-05dZm zkm(hc^dyAztkDZbU)glZdx_MszI4KIqXE6Q5+F5Ar6CC>p4pSap0Fw142Z{@S(ow4 zs&4@Bq&zZhBb(g8NL1PrZ!{p77CJ6%GR_Z(xQG#;vQn-03cGuT4(`tkm;+S+@k^U1 z(9;oik1`#zBBF*I8m3DB7K7chHlqR%qO}5QJ}Mu0V2l!*g)lz=4lq1#WIBaN4KFMr zl?I5%qC!IXGp2}NA`Ah$t|t*oT^Fbd>Q17?_;|bH5WH_eD{3iL9D%o+WvZ{v-hv3G zxj>O0}Ka9`=3?57iLMwn`7SJALY-gc+#7c2lMvYMhh1UrkKSzAPm7mf7CjK zCR4z%(enWDIy(ptm)h*Ien~7YaZ&@yyL%836Rikyg#Bz!@*PkC=e2TI2X1jgfx zB?azQOErFy6>CF7p!L|RcXO>2ls6(!B=ZV;JTw~}# z;fLIeFKGb7SXQn316~^-ZqvM(h-zj3S|C3>fkg57Driu@`G zXlZ4MzU!?xzPkh?$vpgh)CeFT%EN5m+v$`+mD&VTXg{L;*Qqp1t_acqkSarw=&7_%Z;ab`6!HacSZK3O9%XE+cCJl;1=QGVHka;FyJ( zJF_^Kx?nPNa@!ytg!{^DP(GY!(@Y|2=$X(Y1(?>-&t`5CqjW76GQ!$Ud}-wamo?%5 z!Vn1Yx>B9i7AdT1*dYPUzkX2DRu4l)K0+MK|LFlz<3WzagwL$6cRAbnTu;P zR{;98b+eHB9UjvdBM(!avD?*wA;+wh#Y3|r*Vb9O$y7rIyMrWmd%MZTV5)RZC_tancG8h>g=DyxsV$8%=^m;>?YvM{8pOLV!`Qx@=SeD8Kk) zse}(DKTcYVD51)H(G&pCuIKj@&{R8mRb!VUiSz@!QonOZvvT_Jh9s!32gvt#TI>T5 zqvJxjA^MvD;qF#!CAzO3*@_=*4(A!eKyDkvJ7jf=^=u#)sUl9|V5p&=cyo~37Y^Ph zoJy=&O;~;G`V8iSq0Zmu%uLgvM}wp@XQ0n2eeXrSMJLS#812(Vo`a3`!WqO zCJxF8fCO|E!1(Kj0ZKO59(Q|3M**O(PL!C^UvLWM!C|C_2cXX+9y4!!e|A96vr2PM zi3`G-0MUEm9Y(-4!x&Jet=?M2^JBl`$o`jrUfB51%U%lSA7hyiATC?622fe5j}Pk- z%!X0%Fe9i+Nxo7h?rOU!6@bm@D^;9{jfmek^p=)$z!554+xxYD3Z!@z{SPOdrL!bs zhB(YY<^BO`$AD-VtxePb!zwsyMR5kVJ)NA6!zpW{H|8>4+bWWYL&w}>h9yk|kcyLQ zES;MzH*v+SuW!2OC6?+9vRm@f*LaT=!U;k*zV&m>7R1b3aQnOc&1D#|Edb}S5IrA5 z;nJ2kS4LIrW&PYY}roD~cgV+{mKT1-B?Os|;17BHlCeIBXww z2%yvy0hAKowC*_t(Z&E6KB1iK%G6N_^wTIbxvhLT^UYp#XrK;bRICxl(Sn5W=djvO9D8MYxi#>Mfd={h$!Q^@ND z#d4Va)wb3;$b4whyW3(}Fl!P`pIlt}Pdy`EI|yJA({55O-9TP2tGE|heI}Y0S9ONF zHviurfeXpxl`jk`c5RxMNrfnUwRt*+!WIoN8(CR`n+g^EGAkiUtWLI=G{1gn(-oC_$C+C2TsuWFOl|WwSKLZCdB+OR7d|Jv zWIg7s^YgK=Eg+i(=K%FYX44}sGcXh)q^SIm)+r$+?3?+=te5teBFE?jks*nQgFs#1 zX*QV!?NMfh083+SjJ&kCtYmn`=pRjQd(l&_*-K`!%2)=Kr(^3 zmDOa6r!m|*8cpGXf|3iHz$v%L+9`-M_rwhY=UyQvd{}tROuXFzI!2UP;C#Tm(Ej{{ z>~(M!QH0fkQi~`~uw!YG(0_-Ph{v|L49+Vvn>mph^%eaE!l*JBKTc!g6H7NLMtb3e ze*NS9{MPrE84!MpB!9m<+s~{oY0dxS<$06UV+04WM1*+VW;P=K42xuYXM{>Iuhu6v)yH=VFEgm((B zU2L8j3vd{Lb9mMk3ww?&4)g-`mWL3=wFZf0rNnGVLXs)*p>9XhQ_YMewV1Jdd_))U zS&zY{$S)p>&0GaHTVcY=t_ivN<{h6}1(<1HwjlF@j^#@p;PNqh4!@bbluY`P(Ae*> z4?xrkpjl}Xuk0kd>p8+wy@9aVtPe#Y9>XTfI+X#U+m{i5v~6^9w)a|2S9!&YG&lA7iP^2U>^7Jq|UFjRsy8-9~=AuXFluNWn`)Qd+H7ilqAKK@Z*dHa2WICCne0+=j3gDd}z;GZ89i?WBo`Pr9wqJg8daU##0qm6{aIMv~_)o8RuZ z15e_j2peZSu4`IRc-a9!Gq-yvA)+3l_Znr0SA~R-?L`fggvCNwCH9`uqWai96NlSP z{|!f-0@p=#uTjjzxY8oJMFe?8lDu+JGKez27A|w6b`MQL+^g}=P;K(cf941O>-i)c zU2&QIc+i)XKJBD$Dp+K^1jNK@tV=@$fWEPEkkf?*&}pPB#+Bn=(88i*eVJe;kz5t( zMoysiWrPVpSuD$nHWSu8AjO(r^3FDIbkCdH^Jeau-dD@ZR+ZF#yjR2*Eq~NsJP%VL zA@pv=JXAMT=bSf$#v_EJpfM<&IMIlHDP)`bY-B>}7$FQ?%Bu``z%sTuMZzX-Pdy+d z;GyKg!eKHI%#=mkXxI>+*it)@&Wvx*_JZNu>`Y`|-e3yNB}?JsCYi~b27zM}2B^1g z;P|g&0K>y}kmI$D!0O4!=v=a!we$<-4Jr;t;Wj(?RP>!jc*M4gJ0}9995teDg6Q@o z|Ko4ka~FH|?U@WiEMnQ|_;_ut>lgdmnTUJ2ac>tF4?V!**?8WL3fXv;97AwUY9)48 zi>Gq$m|~Dy(^cNQJ>Gv9m*Eiu(j;I+o2cm8dklasAwNK*!fIr2)c8CXf{Gm~FToS9 zIIO3?))Urdte6opsoB29bxZQqCV#w+P_V{!8Sgl4Q(0Obj57eX&3fd#ui{~}QH7f+hZ?Q3MDiXLbbGRi|kawM)zJ+YYE2hwgJ@vJb zxE6NbL1_NI#g2QN>L*tFy9uCZyzC66OPPRwB`ppk=suo)8GAJIm}{ac2P7BC0TbpY z0xS!5Q@3&Ao1~?tvKP)j>s#()P7!~*$r=;LZ$I1`$Yk*N-+>u)(14I+)AdKCF}UGt zJu$hXMWFT}W5bh)tvYO4o2mEYN+|C!J05tb$0}<@y5d>}K(42mahpaqzTj(hsI}eg{f|m5!avh_yrE@;{!i}Q)y|xwT0^j|*O=zYK2!+L=9DTQ>#g|snk2^5Z(bC*oOnT5K=AwU zepr+a2$NUoCe}G6hF^O-kXo-&W2+4tXl_2;dzfm^D}@o4EEKps96)TJU(i^ouiVcK zvnG7%WQj)~?o%J3i^5|zF`*)D=`f}#zg@ZG5`!rqRr+2g2*lx>M(6Pzr8gi`WPF@y zDv-g^rMh3MOv0LK=zTT7qbw`t1oeZq6}dCWO2VnJw-5bNKDf(gKL8Y#ba~F0K?e;8 znyj=?ikbYA-6~Jl90sI4@R@OVzYi%Te1-c$7$pYodkO&G3jK^mtH_}4M#U#K7ukG0 zDJnKkg%qdSmnpz=)y2~fX{9dfG(NH-GXRNV##I_~r^`fF(- zjomV_1rtW>I(ZxrE4}UUIH+dqRENQA70dVPT$K?682{*^W-GL2O@wm4#tzF1H6eB2 zi}nhvm=mzxxNFYW(LvHX0uECJ+M9m(Rj92KT*0z}w*b3_BP98`)&juDi*vL*Sqgc} z1}dY*yJ~eKdckFW?4YRK%__K`*DDXm>xv#DyCHGYv)ZCnl@Hcr8o{d|9A0$* zJ^%0v;3zR3AJTG^()WR+15EcUo8j^9pzd5q(v|eA92(9$dPfKgr2zR75ox_iC@hQC zHm-@dWT7t`)loOH9K;yizA*-sqH2yd-~qpmKDc~F^8MRZ}9uM_F`c)r`m z+ZthzDZt~Gm2cpm* zn?~=mYk+c-hW1Xu%Jph3JRhtCPP~BAB*v$L6^v`!gzM@90%Etq?pe#M$8V*N-%fce z$J<6@X)m0k%?E1CeJE)+P6h7DsjcnUI{c1{yU zL}Ujee>mtVCG`fbFIB`tE^mVN;C;vRP20hk=+`mqrU#X4ZqQ-pUw!!I?mchZdE+lF z%N%12&h-~L=2qL;I&}7e!b<^}C3#srF5)%@(eKn)H{^{E6RByGuBbEsscAA>!%sqr z86W|p77+SU6`)a0cua`l{n5dSiU*f0!MTv<`q<^W6{`4xt<6Mwkr^NL#KMe_ZM_uG zZ>oFHU2J0!B|xsO`O-|sAhON5b;Pw(I#_oaR;zy0Hh6pH_J-BTJiZh_SCKd-YfhV| zIX0b-ZF&Q&bhh$Ajk?j?(+InIb*xf|n<5hN34!dVXD4uVmPqbsfEWx)c$(UeEdVy0 zT=iH7ZgN;FD3-K!LJ=DSx9qk>ZZk2Q$`T_H$WotHhcT!id&2>wj=R>ENxB%}r<~iFtPXk^bM%_zFm%Pm*WU>j=I3u3bR=x8jtEWT(z3%oHwrMgc`f zmH4!v?gC@!Z37a9@0uM}=H_S90R&h#MIAO3fR)cK;qBf#+;o!}c7ik@V98ptIp@Y? zL)I@gnm5gjuUZgkvw2YjMQLcFe)r03$#O+JxD>)kG>*vwvp^qw;?#wsY?E1}@Dv}F zsAkaKZJMc@B`Z2Q4ui9J{K+r~^l)AmAWQ-1E2l4F=}vt}Gw!7p@-!Vbe~sk0xl|KI zg88oc0KH^(ijA~LewiR3Fa|_Z`<*bTjTcS|VUN*Acnmhf4oA|Jj+6T!3*q8L`oB)i z#A-(0rbHj{xHFd{NIPMh-eg-}dkij1w^1_%5Qm6oOj_sWSUbJ^68x)k-9}HORpXzw zCv_jmBSj=Y*RH_kHbWO!+6zExm#Q8#Ztc?1{ek>TN$CFI?VKev6*>B+cw?UZjb;Nt zk!-9l*6(y^fGCAt9gh)!6&_E{Og+|tFs?Xl-` zgZFVyeH?UovXw9^vt?T{@da^RAKg@{l&t|G8b|46#o7)-W7MHZL0_G{BSIRd-EfM& z=H7?E*|Gq14}FD$|1{S2@z>dxt@$uoqp&BRs}-&Tmx=V?|j zb~!}nV4ay{(?`z~JA|o7HsozzqO96g!EQALPF-t_S}3{Xilq~D;$(%hGkERi(0tL2 z0jwyj4$`Th9?-+(^0swnOWCB3v}65#`8k)L6%vqoRi4nAhSwi|Z-8Yz4hPVSHw*fj zn+LheJ^!fN9Yf5xW{*8g*nV5X4O15s`vD~?OXc{W#2X1U;Xy%T>Mc5e8Frw_Qv^>K z=`e*rhMZVJ$>{n4Uw$?xMWkT}4_zzW(}%8SX>ilGd|biVD$zH&$FE-_&Qs`fH2!i% z7ubS{XMB2T6HMYtP;1wFX1o+xNF2oqe^9c{Y5W7acRR?`@}jWRYeF(XFbYH zSTX1?-~8gJt}R$G94tc_Qlt(=%OK|8>1DAX=Mua!xG9wsk)`t_SSxweleUw1ym9<) zInXf>0TeU?Lw%q52y+-#Jr0ieq~AE!J?Ki}vQ z7ho-eVm&7GNiq&&Gb$S#c+Y-4R>%_v)oRu}g@Nr+ys_Y#M~osMw79~DRvX^82yhO- z#c?Q>G({K}UhyV`iI}dr-R-z~Nh;Ehe4KkL5_8XoD-pzM{+*TT|;h+#8h^x$5V>)tqN@N_P8JQZ$9?pXz_jMgdA`vk2*BF>=2uKdAd#}aQnweszPGI} z&NcE;h010H(8ki^PlJ4Sg@lQYySWsGo=8r43+OE@+b869y01`iTaUSxlJ77YNDOjX)I$WdWH zY!GL#Ys1t7qzxEcav<({L67Y+^TU z#iw-M?VaHk3ZyQEytF1PQk^qGh*BqAhic?wPvFUqU+oUn6UNIVbElqZ8sU_$KVJm< z=BUfU=;fmf0<(8`^|t!z+uwck5IV9|0AoM5!v8w2FU$a?=?YO&G$TZW)Ly#_YkP@} zeBxFmF-C|r>@O2K-JI>_<0phQ%??S|xJ`xB%}CAtB$++xQUMfL<(0qOZA>U!{V#14 zz!;&1NmX?X^)_sm>+gonpAVh>{1o>`s4~fhw!0ITC=!s*5=B&mcN@PG88W5Bz)
  • eUKu@XdxuD$+ybgGd+S-&=2Ont=dzvqEenKRP2s;NTvO=2Ajad-dLgsl>@H$O zNm8_F)-*t#I7Plrck+kpN41;svLc%a7|SjaX%$m$l920fk05v~X22X}mgR_LW2|QR z9iG%1191Os$4^XQ+?K7Y^KII0OYwLO&*Y&JA1CU+%|8G^iR;o8{731^gH8toZ}{e# zH(MH1#t1k&OV^+Mu;Z%?Z>k4w(hpMI<_|P6uEA1bVZlRsnF^X(bTigxOsjcK2i_-lA|pdQsT>Pkx4-@ukJ6YnE9OtSThW z5yEK9S@F2xaY_W}X_7LEb)5BbeOZS%ntl_)VOf%7CPho^Gyn+5#qQNPcxRsBp=ysf z{DW{6Alv8DF+X(UojTsiLR0Ujq}sIY9|Puk1BFESx*YBsQ=lzTtoyFjQWoor^O7^jT;;@hjBXKT zWpx+;?CWVeJ~d;_<5OL$wA#9p-TmN998tmhjT`0vcvp559UtG$nSb~{{pRj(Rtk>C zxlCXWUG{#+NRSb;7y}(q5U0xTIkCxPoPsC%s^0c18seoV1AQH_u#zR zlzVdFJq{TJ=>Dun-`BptQQIR#Xz}kv;a`2BVJt`u8W6%J#Z6pUm=+4%CWt|PhvA~d zCw+_KUle5KrlM{FZcDA#MTLHnCJnKq-Kd1m^$aV)@psF=lw=hECC;#{4qIQY$mly1 zy&1MjV_1fV4&jQhYouhgJ zI;9ii%m%$(d8Cx?MQ>_V&~}R&I|QH9A}7uSc=}}y|EREZLB=M`em4J;I5;&o(;%UN zvWp7z>wnQBUOHTC$Hg^3A$hI;{pVKLupl)9Gz^<#Bs?vQPsthFw5A+ zcP5oN8{Uoz$K|*NzgVBcjJIs=c7$OYh2tz4)(Jfy;t7)&xmRa zlFW#3u^m36z(wMjC>fEpbsat%DSVyky2iS?@r|~=mHhcr{?a21YD&F%w`in#$JQpq zG(FRK*4)*nvi4wf9Y&pGtEAB;nwv3ZttoK5>&g`ssT;p^N0jt-LhoZWF%sYOHskP+ zjXr>UEtrN21~m!D^)nrQzWwhj7Z9KAg=$!T0q2LA{qhVSe9&Z%X(O=+wWoNl5DQiV z&}O)VF)R})mf!AT!iZu!$2Kok0R%6big17&mF4HQEq2q_#pHNj{lOx}8bqtgwABez zBuPw-nZ_%9d(+m_3Fc_4f8Tx1@cJxhO0ub*E0@O;SB4Rf$=(c0LV*fnDA&Q$apxpc zkA3&d-bbtE;zHu)UdNrpLD&*M$K=hJ@LT(xKVOvm#sSTG#DInE`Lqw#|V$bBlbH>Mfc0l91 zRl3@-l;d6TthLxGASsaPpgI!QL>pAa+CGPo05U1=WO
    )f*syNN13H>#?D;L5rS z86H=s36&aC%FJ>75i4s^;}c)K5dy-XrBw>@# z#7nbgkX2fg7L5Qx3VDO~{82&+8bBF${k&@=ButRN1~o(7C}i?L53!T$jq^82I%ArA za2Lk5$9TRLf?-+$P>oms(a-Yn#V&87d%rMt)&ZQGeVmI=-L9s}F`hMos0uPXKUFo* zxwUhjuaX=y1XJWB0k!JD*>xw%YhLck#qDLy`>b@ODo?Y%qo~NfkC`&gzrJ*mMsP$> z4?jVQ^O&8+BC#@LDOgqj=>7{n8MM23mPJ!n)Ix-6YhyX-irW|6Xh z5ExM#)Z>RB_Hs@&8Z_D=c4sVl)26oe&I?TyWeA^Fl(GG&A2-0`J6YyfSx%Hmhb39& zy&Unu0~pa|ZCz*d z`F6j=?TjHhY}V5yy5+=inD_5rv3DJfFa20H$8voP=(81$NXsT@M7hbR$nq6M1R%-7 zF`xYq?NJNzSxCu>#*8V0P+xsLSOhTpJkhrLbkXr5`QLu^ST{_GivmDu{!HkUpFMpk zxhwM~H(%l|o0&Fq_i-r@5-10~ZQ0MB!!JMU+(v)jv3t4-RIRv7$CwN4@ip&Y07jRv z?O5{(y)eh>$1%v1BEXGw@+4i1%Rb4YNv?e}LAa1tY0@=~%;*us69B|luFeXbm6xyf z^lGRQJJUE+j%_zybZhNLpvNRx)i*XQ}DgZlz#l=nWx{h^STY7lEpR`CZG_L|fh%q{{vMZEYCg6PD(b!JLuA86#*L zD*J6a#8G-k-amCWBqMiFy;hQ3fF7(1?=bIjPbF!yL!!LL+~DtYe;h{sx2NtX8p2$D zD}!t{h`W9E6R&!a5Tlu+PU=#BRAtw4svOrcrN{s&X^@PH$O4%73bVI#B-!&xl>>K! zr=HJ*L5{n))l>peVoJwNzOiTta&?;EekrIRJJVyZ$FlCyJ#UvHBiFLMd)EIBm}mVZ z70p9tHE+zLz?F3cy9}1EWA*YzLyjj*Qeahsk!@J4AlXH>jc~&# zF^ezb2ehkD0Mr_u@NiL43ywWWD3uQW_#Y4B{jMesPM5UMvJA1K*U`iiemebXbQoQY zU1Pr2i@!Q}yoT2Q6&xQf`iB{*6w>h$(d8#SDF*dMZ1{`GuMoUoAY07Xq4UM7lG<{akR=%d|8 zM(&8M#NcXj@X#3#e=*~=iU4SvTf)ya)q%c>QY&RFW@5HJs?Gp7+D#(q;o-PhaX|AW zr7ne_>StJeZNM5v`S?rqT4|+4D1Wz&_v^qyDJb*OOj!A}1+s;HbJo8e3Y%Gs|J#S5 zB&(GL`Ib}Js$c`+%-k-9ciR5>1!RtKpN?(*ys}}LW#(G2QoiDZDOZ8SG{gF&p9{uK1`XC!gRsm+Q!0|3LsjI)%-`YF{y6S60@jt1AMm{-{;+R=|q-kUg5@ zYu$xAxd+_*-98=F0Vv4(bru2NV9V0ozsR!hdj6snEHV|xCxoETh$|nn1u7w>CQ0V? zE_uvXr<~)X&9CjrcX`PGv<%)?V0~eFS~_f>n!0{wUxd`rKl4o?(q{sUj(Io7 z_r1seDCk&6v-Wc5muw22`Jvb!F%i8r$LKblhPpzNC1`5mQw)Qm~GtX^s|o zeXNO=)Ctx^r;|Ek+!6v+k68Zd%{JEJaX@B?%n^1pp39|R{y+$D%zlyjqStU?2K#_T z78$X!c!ds_^kAck`atrfR*t*T(z4v1=Pm8|SyuE(tR~tx0#KZ;o=gly6oi-cb-g7x z#k25{_;k8@4)>B$D0TT`-ruJqs)E~QEwkmLu{Kx@^;6j_mv#D4<$o6EXWou~#yWpS zvr*KA6Aae!$kMfrA2Y^(6!ipRQM{S`$XR5`-kj*M&!FmP>vZUK-c$Q+QwF})pRr6S zL+}vX9lEc1#5Bg&*J>B@a|p0T=@8xuM`dcIJEkF3kPrFAM$0@$Y|%mPw=_rUhg;oc z{!f&T5n6<^gPGA~z z9Q~wiyhg;xcqv?mw7RSDGjE;Yc?{3F$!l)*I;q*+*->s;2Nr>KHvbrJdy39JgB~07 zaT27P6---w<0qnqx~Zk1DN< zJQ$sKUF?reY3iohdyOcH48R&n5x1c+*$dKU%5l4Yt`NQQ!MY@l-E;|x_#7j>Odz+} zSksVMoBs$F=Ws$R6(wRs_Bi6i)>1?(m+7=ViAV3H$NEzcUU45|Sr2cIusKyxM7IJF zxFCQ0!}}xa=!ZY_ECzNg>THhXbMj4$(BC$`?c)26=`;8?K2yBS5FW!O zA>TdE&jo_z`k(7%f-H@ng*d#mm5hsHaR&#~NZ)iAMJB9BXYA>z0}v!SX1B-}BaGa{ zP}C^931%rG_ON+VV-7oPB3>*XFWiff{$!OpDMZ5N9Hx^;`p4-;A|^2{Ho_x;@9(p( zh9;yK`NrnIq!X?}q}gZ`#39cBfb{dLrt6We<0QW9&!>4oL|~!=mzj`|?U{A;&kpsa zX-YmFIk+RzkYi#ODm12p+*3j>D5KhLKc;Hh$kO$2wP~vv%am33c;q_Px*gB#K1=5R zt|Rfn>=RZvWPK6Ncj3d$@)PaD(;~nULgZYyT?hfz3K=2niz5O?>>94ruUaM|cD@J+ zKzLR@#FJr(`y=O;bPQjavOY(-y0X{<$jcln)nO!=X<|)KN|-@b{1_4irlK~!4Uef2 z39(hl>hm+^S~0c?l+mbq$g?v<31X!z5vcs-r+x|(FyGTO#n#&IO!5r6lL0Vh zdgn5J#R}7HqtmXsmKrBvAKJU$<9pDnsm#LjZK%nu=58^c<}|s;QCgIS%Y!pb9t*CPZuf1`mLfg!|%&bgTPI>)tExO!a_0jz2`%qMn)*e1-!le%qV zk!)P^ZaOpU6mLx7ByW<6xobZlzay^MM9GjHVn9KuXgAsRzXVOkG_um&t^V7ta(m7M-@4+B4~6`IQ_{39pnHC6k-`3e(_Y65oSL@#Q0Xl)Wq zCEMp#(y9zJF$X_dX^146o8B0asxlZm9%Us&l2r|1o`ivWFy{`t5P;0Wqz(JCf8C5d zJO$}m$>Q`$xtb-9WSl2u^rBI5=?InWeM~=|OZ(oHvx{f zT*GAV^ghzDR}eZ78u(EZ-mTC8N<{&x&+^Ls>C8TJtCIZl*-YPVm5O8|_WKo=%dZ(Y}jmo@z)^9@_91k9$dpSaN(F0DSN_#;p zVjz5I(|X?Q=1ut{$p9k`fxp^!EwLmeh|0pRtd1fhA7wNCj!G_kjGGM>j=Hlxw|(v5 zF1|9ZeF@nPji`7YLv6*jW4@8P(KfrRbOK}0>2_-rouR9fLWZca+jJv_Z{$ECfatB8wM1Hu#qWQwvg z)woma!+^-ZU-27s9#vF%C=X-V#d!^mb1OrET7}MBmYXX;h>Xa?eS@f|d9QE6{CloTZJA=EO>zObc_ci)GfrD&?nM&<0-anh zd1!vlR<5WgE@b<|L~ndM%2?c?q&QhasxSsXmP?Rj)#r>CAx4*IKlG39&pPSdb%NjN zt&Tr4n{L(hLn?ebJah16%H#1v=-kwiqShKytO`+TAHy-@V=Faf^bN)#Km8cDs~leL z!C9DF#qGJIHA-`a-d)E7q;58+3IegB_dyk20}v7QK2+D}CF$HzGROzWI@{uLPYCuN zUDet=_a!~s_zLp%Mj&&UOGb8(PqN*{BQCB>0Xxo3rz1y&tmI%$csK1qEsc+6B{$WI zBrex3C;%Krg5y9`)>0Z%5}MOmf%ooPO|xnjkW&ew0-ed6yP<+c7Jee!vKnxP1tN@o|=*)S>AnQ^9WMZ=@AsYsTaZ#x?+04YXghyF46R4X}+F}Xav^*S* zKmsccX3s2>E;2c+9r|SqFvg#Jlpv>NNLTY>0J=BnVl=?IataS5mAPBD5vYKfw$_U5Pcm4?1(TlY}p22!|te1L!dWdPE*Sc6sj}oaOZsueWb7gE{b0T7DlpT`28r zH-MD{n|p4v)>20(*K{f^MJZSo=`ct}z9V^p%}pWmsomg47?n24KyRu7SdkOW>@l`d z>AL&zt2!~Ytdo6t4mqCQ&KN+Tzs@v-J@VaVKs9-yMI@qLO=}2tb#j(cE@IpC+qnC# z{Sbw@TbV|7Eb@Q?!050z$p*VJR|xea1Z*{A(2KhukIvo8x|jl}_tzQO5T?PDfQ*cMF4q(&i~`kq6q+_v-uCD@o9gnKai+=uzYF-nv0F-DprRY^e%=yH0Lq4 z9x+9ux}u{Ep7>59ki8Va(ikO4O^q70k1*Pmvm|h-jW@S%Cg^hTprxW4Q@G_b4JT4I z2a~QBNBkH(?WO^*gFyg@7?^#tjC2wc$I!Wze*H3o41lhi4JW$>;$z;!J}y5X)$quM zWkG6AhurzozrQ%kiF)Ja%1c*X?=Q>DDyzlBt#-YWyCpB{s3wi;&MNa^V*xPOdI+l& zAoFnki~fQ$JCXo^2Bu<+CcX8Ndjq$+%@aD=*Q}_T_BPplCNm8(1@kfB>6w3=RrFj_ zI!$`Mvv>kZODVHP*I<&zP@`GAT35H!Wsz<--M5n$jVgtv;RanzAwwAMXCaepaC$;~ z!cq%`P+d7$GSUBRn#3Z7CY@XHV_EBd7yzQ{5@p%a!eq)};;r}bPC9dR7~H#>yt6wU zX8F_ki$gls#qDz#P8Vc5LPmP(kM$!8NpJc*j{bbwfR)nC3p$PY?$|~k13(NK)_&Bp z=y;p}YW$%rB`^r|3i=BLtk&|0qCC<&dldJQ(}yUC{b=^nW7zeueM~LGh~~*%@w zp+~sPbx9VRi5%bPY!DGnW*OO*nFvby9#-yN=36MM66l*-79cgwRfqePOQFwQi2nV1 z;D~;sasQrJ>5Dl4Le; zQ9J7RIp?;hHzT7?F%$u@%^_rpNUU=2``**W46^mikJ*<%^7zJQxoo;bcV%=gVGW$k zC_n5VCyi0Ji3B7Y4=qPIhUXA|`Qk`%7Yz$gZMaQ^FeEwI!;Pv!$?cEt zXa7UE1Eg<+B^vQ*J=Oo8rFZuW+Op>%n%y9K!z`LA$FbB;J3|V zgI0S?HJY0f8J$ZQX5%Fzjgd4Q9{{486-;e`L`Y$7cJ4_!`@OHJOXVH!x%W&-S=wWP zNJd}1v&eEK3?~t>^kdgN_k017F!~75=hICJ6KqRIxr*F;^PH;r+Uu)$vI{o59;*Ad z0zup@t+s}N%*SfzWqUL$`yP*HVp-e)MNEMtlD}ZG;QzPBK2hQ1z!U2k_J*^2n1Yir zJn6skYOqZN&w)0-%lqTEu|M{YIOmj`wIA)4lrlkfjy!?08L{sd*|dr@rY{E=H8MBR zyv`Jepm$j2+v$6O3*=NC{^iC7L6BK)TTBn%7(AL(qpGBO~rk2o?l6LstAzM4zo(=@G}r>C+#uuQ+(a~<9Foi zO_|9<1UruRzf)S#bIvZPSR$hIL(fL7EYF?R^UcNrE2T2_X1G%%QK3t|?r0`#Hjjj=b5&4WzrN#gtG!bQm5GP@BBAf}?BoNaKn znJ^ehn{%qM+mxOLf2Qb*EGwOapt=+hDI8=D?rj(XU3;mMG}WyiEEw)6sJ2&zm`V`V zqz+PAG! ztAqhhFNbH5Bp^WIerdiH4ezm+G-}aaR}*E5^eU3>8K#f~3Mih#dG%KrF+?UKE0UTi zqZMG3!;}~h7;fz;;Iy$fDWa+PCc~5;qHflk5Z3kK_>^J{-oBn*wb4>rTY!+-#_#=Z zztyYw%*Ql5Os0vwLQE*7J!XK#xEQJHQX}8r@;JblcIg%ogj38?dYhOU7aNRY(Y4Fx zj7)PXbSDwN+11QORK%15;?QDv!=hHmCJh*4@dQ>(h9uk7V8%dT7)FZRYncr}dw_p^ z>6S1BfJ8s_%;h^2JH(-5XQ!nvktC5+WF3xo;!LywpTqHBwrDPxCMq;H)4fRo%i23t zIse%|C9YPczssdpQx&-pBIm5%Z|DNCEg?5Nu1mQs)N0cQ_q+BvpCoZfFd0jhDHF)B4zOY#o|nV%6$t%c z%UjvUziGZMHG5^E`ZnXMC1N5TDP;~EbwsA%yg{3un8?QR=jd%8EWh;4!#2|a zO?nYPX)n4+;d4i3LSvL)XX8V>^Y;3S*+dcKRko1Aoo!aa*bx4*Z#F8HIr>xpcbE=`bjz(rfk04ePeg3s_6lNf3hv^1Z z*}a=ola@VP|NrwXr^o0YbpK{wX1``W&msG;Z&vSr&diMlGAk@ce_gHXRA!3Cbm1vl zedPz-?D{viEe?a5Y5;;x3*{-opio@cHHa?-!!;(5j-~(+8I&2X{?44Y;oNQ6$xJW} zrYO*#;B2;dfg}@W@Z<%)Xm;!-EwVPtI&Jk`^>$D6Ns35OIj?;;&VyG{d_?DZVF45r z(79t{vUtVT#;{5sQ^i?yT>~J}67i6kumiJek@N-Js5F(pbpRfBw(-&8 z9%9ifF4$K}Ep<6tfps%Rjl||^YdT5Yzw%3^qUj}yBrXL31B4*mH~w5w#aXWX(??ptyZ!rP}ynB6?vt+zT8v{T+$(ZqvMZ z?ueS#DbAduMh=JIbrzFCoMy3+07{g0uI6Sk^A9(p3NqGHtFi_VC|?8t;+QWqM1YN}5EbFw%` z;pS52S4C8m@PVhFtewJ4YLK~;;qf*!q^8lUzdK`U2Ml!wkf%P^^S->|;eJlnaWmi{ zAN}7e03t?EIQ4Qmz_0ZbKtn#D9d-&}Nx z_e{}Oe9v_Wp8N+qd3ij#MJx-lAPKEKl^Q=ekNJ`e46pcuzMj~94TFd!y zUka{r@XnEmja#(G{L8o%>&XN29MhrX&|`t3QX1P-1vQCFZwTP@S9+N<9=`YC;}^A7 z@V61yjmgH75-80hcY{97-&b#gR6O%8=N>(zq?*VpekJqj8j6UCF2uEx3{u6uu^s<- zJ7DqC4|75Ak*=C?S+8K9xQjOr0{u6f8c7g1SJN3A_n53XkwLF~9WaGc0c#+2&kDDh zVvhkBRucf~<4m)#FPfCH7o{K?QKG{MLnxr?o{26;fqT8X&IMem_=co7nJ zy+8=q@yy#i`xknxSKD|_YpMW-`bt5|u<^2RXb4EDqi(x&D~-qAT?OIG%wKN)1>-lP z%|XB7?eAIh=E;%aPSaPc-o1H~;>37{W&^X^O-4OniU2}_Xl-iR<7C_RI5^sh0@q#$0gK=4X%t?3 z;-~ze3OA0XaIn!ZFi?DMpmhYe9pNR9aX3o}zm9R#I#NO=948((!3?XgAw&RTeT0)wYOC z36~{|Cy{vc3sjw5I$?CRcIqillR7!)g zsMAWGdVijp!#eLsjvx|X$EQ^I+y{NF6|>s9EF zrtlLAZwz@!f~E6~H!pX*ncM&y)C6umK|c5Z9nf?vOZDb55%o!c%JWaS|bp{}t zrE$ZAOqtJ_`%Vwd1=gjqQYg#DnKABgeH^BfCYeYx8L*kPm&I&WVnP5oHk;cd0E;Ue zJj5o$P{@Z+_z{KADqJSC=<5{D@y;A&>dj9X56NZbFQaZ-;J_}g{^ULb2~fUb0t(+# zn}^<4kMufQ)A}1PvPLh!h^To$)98CpAK&gxpkT3cY54H0?GaLDzSuTtJDt$!(&^>m zK|qjgWBEi`UK=qW9pOOX4oMQXuX+2pm+>z@{OD8wg$$in;lC>U4~46zXQ9#*#Yz#G zwTCGDT!r^O=s=vMlpsI=!bC*$%NW-x* zpbRV=_~w~N2oVFXI%j~PW5k?@k2k%enUsx6J@lzMhVA|B*;)hF*TZXyc8Vb%teMS{ny zbn>l@XZQs~u8WyXKZDL)?NJK8&fv=9MAopHf+e08BvlQnwvPJ!Y`xC z^2SX*>HOpSd%;Jq^f13(V#csAyiSN>1Z1>yztw|-f}KgFNL9ca3IRs0baE+ymUz>m z-Qze+(;mg^k4xR@xYI#~inXb>n1WKUnTLOg)yr4;!td|To7OW!XQfveZ9P)L{*Jss zVf596@hWlk+#@fy2~n0Uy%I|iiqOHlW9O#8t30agHW|9!a={@^vkg{e9vtbzp0*%r(<*845yge>C z{vpp_7u5B-2NT&aijq7HHraHJ@w^N45p6suBBU2Hp?uoebCzZZOl>>lSYkC!B%~~f zM~^TP2@(V#oTS|h{$#(M$6GaT<)+dD0$~a;Vi0ExlFgT#bW^uF9XmG9?cUdvWyWS6 zc}#~YD(MW3r#2k>6%@W@pjWX7H)SpJjDumosiyW+NkrtxYu(3)K(s_Wh`ciQ zMxXXU_K1`1*NSj?88sIDB6m8PjdCe-3q1%QqrdvTHutfp8BBIM zMCx*L9pRIi&JZ&jHnZjrHS+Ldr;(Qgfs}+8KJD>rSRY}g0Uqs_ttky#U9uV?xIH-PfGw&Nb-9e4Wf%RF9r7;0-v63pHdegYqsW;^@hR-)%v zSLh>*4KEQTlIm&{qed@~m5olGUIcVGXoKcvGBkg9KoLVAEW($2^UXPz=+JrTmD1j^ z4_^UD3KBLSBu2_A-3q+GVvA*!f@(kl!_KVm*~c?yYz7d7pk!Mw#1tb02NYA2a_;si zcY$f~4Fi`#MWTn1yF5-B*3UFo_^rre{<{%?SbE*wlSXUlR)6`nGSg!J%z-@#dzRFU z9vx%@k5|F5U;H{NY3@2t@nRw1G4HW+*FK7Vz8i5GLuR5$qLW*w?6CGx!)}PyW*_n^ z)qrSjUhW*AEJy7tU91SwB8C&CLJ!N_24QSN5k3QSoz?H$jOwryZzlzE#rjA|{1`Gx zb9?69eTV|Lc)`OMOGnv*OYgHQeDD3O&k(R}#}rY+0U?6hz=ijoWp9?(9GJ3NDl`>c z3h5*aAp~N?p>US{$x)e9W*P5j^Bh6~Q6;HqW8$OHx1wXb#5HFe*E-0a*l4TlNX}R} zw~9pp3U~ej3Qq}3F+rLUI+Mbq*BJ&p$;gI(>S>uz1U=4@j9?Mc9*dCPxvU!^X&h@3 z6ao~)nF;}V8ZyKMAS>0j+w7%Ngxm&U^+YYy)fH43P8Iu$FE@N55;3CrvcV~z`-Bi|x^U8I>jyuq|mz zSk2=>7N}hNi_UqOa~}hk7&SzhLY7Sq(s{jk zcKVpPGb$V4k*Iq^M;~@hP=a;qSTy2&fDiQIV*le(hsWG_i;ubmk9{uR!xP%^w3-f* z;sFvVC4f*t2qYs9f%zbi{%?4E!;6NqW%&!nhY4Ig4jmtFI9r!3ZH^zEUMpn^!;bd3 z6?Sio6=;6wg%v*hdQYP;BQ9}3Pa;-240J@6Z2HU^9prk&++?U!6V1kuAttI0NyT#j zNPl0cLIEDDQK_42AJ=Sx$DC0vQ@=Kuve>NVG9Uz1`<2gbd5K#R#!0rC(7s7sX6?)? z7wz=U%4u>iIfAUBXUEMDPw{k5SuuiDgm@c-?p}*`cCm1Ya8EDpuCa|8E@N9hEUo%* zcW0MuFuH$VVe|p*5!MADog_ebCVXEbbfe&>f6L_AFnf6wFV&bmNDgQ8hk; zVjYD=;re%Svvoj8ip8(dcKK4_n-2$s z@aS~L>pa)S!^Az`X;4%R;5}|rY}5EXE*dTY_cqqOxSosOOMg`N<~q!Fj}Zr7-f?K? ztCX0+tgF)n5`pR}_llV|xA)llTnF8JgX7Q!;iSY@ykSGF^;jfYy*Xz#vV+d0vVv7# z?Q^d>kdT*zhC*Y9eJF)D_KYJFG4c>{SRjWSU_AF8P>S1KbK_Bgy1$3+i~I#^;iw~u zC92YAHBOV2x47rGzOVno4itQ;cjV))`->68n;{mDUnjwAXm#{2*(x40MPBMLZQ?M1 z0ErCH8NFM+m(w2?Q-?KzrjgV>U4pVyh#8X)9rRp?#=B4Wl0(K=z+CT+A8)idfic975JDvrGvID<;5cIZ$;P2^u7jD8LINx`iLci0`6;4J##*P@%?zz$ zbf1Nbl4C#Rx3^3Pyd>D`{rn1lP~rES$wG$aHvi*Y%#z>MzJ8|P-oAd@du|VAFSo?* z=Ud)XlXVq{!sez~bcIu{oGEIEZ3X1s`M&Pb+()hsv@^fj2wKSZ^2jDwB@T^Rx5jZn zTnf?EtjQJGE9=%&H^2!L9$#nAGSP*xh1lhA`v^+6OQ^==9XM!c9F{-r)J3aX?1%X6 z#XZMtqlXmQO!!}2;Z%$HBS`7QlJ5Y0=E7V1;=tGszF~9d4Nk&$^+}p|OGn*Fxjo-@ z^{o0P3zxj!W8e2@KDt8CSsz8=?<)M>8{;6-kRnC+M;J$rsi0oHQb zTr~zYD>Xt*>v3+%wvCFKnpzl@Idm0|5CTpz{;l0Br#(<$6@oG@3qkR^8Vtet$H5-V?q3J5_g zL|SA1`%%NjkoeN*^VQ#6Bx9y=Pv&mN_q7Y!F5gWgLPN30gi82Ak^`4N%*$QA{5jsy zC>P-CEv(XNvRU1lzt4}hJKIruuVuTZKp{7IafMGSTncrjkFM}9E&R$@YMc>*@Aq## z=`yqPgUz##z&HC%PHW(FQ;sAfRE${Zwm0hjWU&Kd5XMRFa||-8NKgU-2q9P@24dH= zCR5ns3f(9mAa*!rELgk5bb{Kw4Znslm6`NSM4aP>t=^b!753SqB-1nU+HcPa>^>MYDOeGp zR!GvuPIjYgI!R_&Bo4>CQ8yo9tsvS|lE3ucfKk$1KJi&?=6RdA)Rd1Y-|Q~wI%EUk zs^X;2A8AUKR|y)UGtE!{g&g?qhlI)Wj;au((T#gLEj=-x>~Aq=+~asB=0|M1P^z`Z zDpIHju96%lZ5!e3;^GiXodAb_fOP-R!T&ku@V_4y>S$5$M|Y5H2b03(^P59jNd;Y7 zl`Vpvj`B&`N{eIPp66S#N3es8P{c{ZAb$A-Ypdx!`XV9%L^Yt>$Fj-*JP3iWQ#{UQ zfiyX)Z(B3T6zw8=Y?fe-EEsC_l-Lnj?MC~?zRk4qd`T#QU9Zwl0;4Yx4;3>JSNI4Y z;Z&m{J}{2l4RwVp%gM!QM=2>>>PZMpkIbG#WZ-0Xzj+7Js+dCR5>>-s^Z6nZ)O@^o z4uK+@q^%PMArTvE+m}(<|J-Y$l@%8D7_zBv=2aolM%28A;>nSth8ZB6>$@ zRN~CzH=^$EXzT`S^cFxMABNkcS3M9VrXeVx-J@^cWZbV|5r+|;Od%cfqbLd8=yCFR zPeH@$Jjh9R7-3d4H^3JC0L-MGq&J3BpD(#j&tztK6K7d*RzvME$m>EJ#1NtikFEof zSvH5-q#=8%O^@^YdwJ7w8`Pz=%I=0JMn-P4;-OFsyzno2CWXfbQmCX0B>()6a=A$V zk{Y4U=2-gw_O&@}+`bkt`lX)vzjR8Y5iW89*%T`Xr;fw|@BRh<6 z3b72iYjD=yr|SuD&*q)TN+M_Ak1T(L$4`m?1fJ-gn8pAQB*Z1=!b}hfsSwBgjmLiU zi)p#6XwrJF{azFexw(-RVzSswouBqsoO)@|*MwQ*Zac55^dNOqV>S=AH0tF&im7fi zoE#lM@z|SuNkJ59Ov54|jwo-Zye(%&r`#|m=$-U2ON-0}qOLVmyHKp~y5IG^Y9 z2-G9@(V{stRuQ3%UR>eotuIyrBkA5{zQlw2V#$b6Xc9ckKHB!RFEe#dOANSIXYQpp zu0>4QAmYNGEE=^D;p71Vmv;at*RYBJxyw_XJd8f7F$Nzgp=PH4xsBe8x1jl ztZ|iq?oYk6-)Xm`LON~HX)NM~j6;Gk5P}eEpRNgU4p{eb6h4m^I4J&@pD@nPb+MeHM1IW*ly2`OCieg=ilK1~%R=^+$$zQp+h znS@`Tpu>|NvOGhaiE`3VQHGn9k6$CyWSU7eu!4yz90mb)lZ;GM3P2*j-_D5g2>Fx7 z9W-C9YOdpuFY`E6zCd}oiWpG?RcTU}ye#0fM~_sT*ct-RQ4BVj4J0ke6Ad1WtP=H);Nu(}_&$D`w}QZ)VzuBIq_# z?j$42L*V@HKN%};EU_%nixVlO?+0{4#G_e3A^;oYyX+i*!YzfT9s*|}i|1YLb$M&! zPqOEad^7E1|I7ZywDGq~k`f`DB*CfT&gJS7Vjc++CkAec@Q0uAaQyW@i$V$YRJf$D zzu}q93-nZYQsHq3p6h{|0%Cd5G@(gGW<#H@uS=tLo{9QI6rwqSMe)3d0@DX2RMG zFNgXK8ib4Dm0*QIrS4Qo02%lYdkm?F6t(g+LWv$0@->$~#LnTQlQg!8_jka>^5)Px zNL{KJ&7=fuVk@W`Dw&dsDmP@b3|Wdmfe4Wd?p}5jQ|J%$rB5HiSxQNPkRW!y`u8!- zm?Bysv1u*u>Dgu?#PN_aj`5^4nQ)*WiRgUu0x5HR+<3cHJYL*edcQn)Dkw1!dK z6o>>1!z)S5T3ruFBRBurlIZ2b#2u*Xn~g(6@2SN(FV873yc)oh`|0*)ZuB7g#wARA zMHRbbg2{$9Vx>=#BFRWH`}ItF%>Jk=*VN?b8nDAAz0{(bQlM(3QEpJ%Cl1H}0DG4y z;UtQ};a}k4@H#pBaF#$Mx1^y@^Co#Y84S95;@C~#rc4?4jJG#dK>({h@ry5xH*Wn3 z>lld^FSMGFMEZ{i3WNkC>>kjd{jR4r+jK%Ke;4C=s~Ze!O$MqYVfNr&svEcmEJ{q3b;8(b@J|g`&6Df1l=(gT9{b(%0}rx~`F-4-^B=T& zJko{$s+FVn2Kyd0YIk=EucW(yan>3F0Sh1?PGe1c1n2N_vlrh6FVHOBMEoA(_Zffw z-+MV*-A(F}M|-r5jw4M{o1-kL3EAh0ts*9H%ig@R<{b|NfcNt%{FkE<>LNlMPvOzy zfy5K`7$xCx08O`wv^H_3oUCHmKyHGGxX_+F6Ijh4!#x=YSO$1p_`op44ntGnzZW_2 zZ+N5Di+-hz+wjhYM@Xk*D|}GlDj{zd z0Sf2$ScgoDO_L>4nxt9Sq&Zbpv`7CUCMp-jLDVd7s0E5EG_1?+!aec89o~DNU@br~tA=x`;FJ9vH4kwcY|C-82bz`X?fS0AMUq!*vwy?}IKL z@sut6mwX@Gb9SRh)yx0;8@BK=hd!t&PB0iJET0g@3>VqL#gd z3#y&yg|oz22p@9ft8W@c>{ekKf+1JcZi^V zhS1xlzCp08(5zt!*A<>~>YHXH(k-bpY0D4t$2BvIx$uV{zpLZz89xxfa*+;$n~ykz zsW;B_B^JjU%58~7(=e|DYr`pGf?-g2!yBz;HBM2RtJk0|>rw@*k4ADWGL6)6LZnhr@25}#$sWAAz<*bPP%c4)XX z`$Ul4r3&VtQotrDMiXuX`tJ~N0)&*XeHzn!f-245@zoS=0df=Ia|HP8YjemjYMD1tq*GTzMvi1EMVsG@AFvJNNN831gD-Li^m@ z>W6~@v#=VUM-~JCW6c_&<}ghu0!DA8xYBhAl$NS^R7611|Co=L1cBHa3Q9>wTgNX< zq)l8|q&aFp)6}dcQV)1WWJ0=uIBSiHF(~8~6QH5Rk9#yAd=EWuWphX@Hk(P7b6?&T z+KQR7e#V=AYwukjb$J)x=M;bo{XsUrm(4+&_+~dexY@B;Xz&Q6_Rz!la#wiu89Jv< zla`)oJ;yrcua*i?AJYs5fwLfzh!{vUeLyi{&~@`%^(z7>AfPNjKtcvCUDo|2m1Q(%1GQ5yzyAU6C6_ov2{y} z#tx1$(mKhQzr=YSWUBHUm*Fdyh&%^2>nOVL01bTv>cJEfM#KyQ*F~BWy(k5$)U>Kf zfnk7e4X|zo7s#eJeBL@d8mak?pFUKPi{OG3pv4NdT?-pUnWkH&asat+e+St$HTe^iBrRQd{kj zjW4-mIDj;U)ZnryMI^O@aII&Cu7U@UsE^XiSGkN9_FxeKrIu2SFStu1(r%m4FLrNMLgpRGSdnLRezk{#w z#^Mn!BxPQ8UVeU_1WC?XdD#Ti8_7(9H`HSWdD;E;{4C8&QQC1>ndzM?u4qP^0>Emj zM$RWeXzocc!bK)l$};#O*L5W)*fzK=Rdm0OzRFXzM?eT4;6t>*w5E>$w<`JwY(}cl zyAj}39$Y#JwaB95;+P5vAv==*9riT0Bm^aQ_4qx?@1y*P@7!EBp~)5H=N?fP%v!F} zH+7TpNJJ!if>_6zUOYCjiJabVHygV}J*rB7lJ0Ddq7J3~0I=W}gVU=EAt70fcwT z1YqRWsu)8aFb>#WyI6p5v#0SQxQ{p4+*$m~{_!)Ra1z9d(1Wki6g;ZG=~cS@Zsm5O zK3gEnEy{R=aC@On2!aRe%yujq-=sM2E!rra>fYNL0gtC()D@n(P_Xo~nJ)AZ<5;_~ z5q7WG)=3Xbw*mnV=&QWpgCk?gm=+s}59j(ySynhE2@uxY5PfP09961`!dieH0|0rc z;VPo$RfX{o9HFm0NOpdj#ep_uA4^5Q0x1ju3UcFNxCr(bO8wpjyxfo@TLkjDPr!ZYLnh-w z4;;3}^yba%`Fi_$i=G3Uit?dBKnQ7*@<@fj1iNu(bT?#pxEe=^_<%H%EJXqtUPMJk zUe&&F3?Xur)l3fxFQ?yT7+&JXSuIOI01^;Db*VIdpXGNieX^s`nJ+|$dPBIo|7Q>a z5eY96)@vnHM#7+M^1v#6lEfrZh|9iD?l2gG1Y)aZO}C{XKYS_oq;xpG;5<%Sk;VbX z*X4P$o4YvPc+c0nKmM9ETXY(k9R-L2X)|Ra1}54BH;9roO*GBL#E3^Kp#XLT)b8 z1H(HEmu^&-%HR{EG$RMJSz01HlxLOjrdD_DMuFAtV$avJ`EBg$x3cF)whD@f-0Onn zaF~Ls%M49IuE2*>3qQG^!GjEl43ZNg0-M-^Ym|EFKCD=GP0>pB_7r$f z_YaVK%80-yi7JStOsVyA)vK426ohr+FztK#h-8`lap=wwB={f?Lic{9!pEyT)mefj z6S|eVQCb++EG@Ij<}PXr4M0ye>A>CaBI0`SVE^0oYG8Q1PESy0ZxDIa1Zv6w$})uJ9-eNGSp8qlQ(Ins~^SW_5n5Za1Wttw;)x1D@(p!^kwT88@mU z&Bpe5_Dy#e6q*1l_0ZknVLs)z9LMOt%4&iG=LcWXz8G@F%%-lbdES>lERJC28gm0c z&?_%HvxMQ!2=zqouC2rlnF4XZKb!NH0VAd{0lil#lCXxb8=+RVlAr2`!5W2I0cK&p zFz&7h1Q0PWNjGyL_&KNFle94-+xJ=oWB?(A;a{Z~PBY34X*M@8rK^3o(RGlMKN$sX z^<1<#I1Xw;kI)eXhWdQV;bNrTcxMu$4r6mFhLbNzyAMbjUI~xgw7b3V- zJi2yu3PX^vnbbsRoC!S;=EDfkGe#!}Lq zJgNbS#WWn5qaNJ(JTcfe4uqfYKieW^A1@A38(--~$sLmjse?c0bA?gy&)BV3Sa%UM za%%xOvYT7s170tT12cub<$)q;+uZe*_qg064(U1Aa+u4U%`4?0gpL{6ZIWfuW-?3? z9V_p87pE3d#j6k}Q25N*k>OFn+EgWO%f~qk?FXE#gkexrfXo~YfMa?obZWwS-&0osH65z)pP5EIca z0C~Uo+PGZ+1R!$5B!eCI;^S>Nf4-TVneaDzD?WZW-6%0B5SHRFQJ!O-XF~|5LAoI? z8G{v!30j_u6(Rx%jtsivdY=5l!~u3aWG5PRdN2%I+({uiP29t{2LP1D#rJWEsj<)H zM$^S}4_Q7&7FZTY#E)k?oY7S{ufhiucGtlQ-Y{maO<^$N{Ka6ET zW{Mzpzve~n!8u~7IOaa~JYI77IwzlS4k%6*9g9Q^jMHu7RGub%-SM!Zn&@-dcyN<@ zalU@%PviV)`m47s&p_AXHw&x5S5LWSBx2D@WRvCwW(;a;?J-`usLZVdc-Nb`!wql$ z`Gs+e*}{&k1mxJ$FAiWM{4ls{5)SaV-Elyfrul%Yoi<`hsbd^#KQZU!Rzkush3g7G zp|C#?E8tD7?w=y|n78lwp0*7iahb!BLR_mW(65XgrrpoV!j=52S5uSE2TUuSjtmX5RP> z{GuTG&02sE5<4t=Vx1(D?iu-vXG_>@c+u1-w;LHuhK7i41jfsmPQxEN4Y(Qb^zz^= zfZR56n_4M}ltc`iOJTFwobRE70sO`8(0^}h)DPFB3kpquWJz({fuHT#`8epbn=U{D z!K-llW-8{t>UR=-Sliy*DboXHVrlUP+ z&TKoUMj8)O31CP$vV9*@?rW;}L6b+PCfZaisT7Y-$WF2u7!iRP1L0(kXUrV#&}&&h zR-tP4w+JYapO3p)=5e1{1FgvpH^knN?YGy1u0$l_RQwq=x4z;B-8UXQ{X4c13@@Yb zoKtDttmgMB&#f!X+DL@ZgUOh?nf>z9&sXf5h-m=qIE*fO>*@;NdhQvX&y=5WrcQgI zAW~Qgi0J0>TFP>GGvt7Ke$z#x_SM1p9uMOrmb@sbt?J=tOeA^(xrI1~UsrQ059feX zkp%|GJY4nykYOF6rwMLKqtG-7ukC`a(Z*5$*&e5H>)|gdeztjytbY!(gMmj=`0zF% zFV))2;}2MFH>3a|)1%{`B*ENNMI*TVAC)v1HHUK{u$n>> z=iMtOWX8-gvzgAb-#t%lbxwFsj(iVgYib$NBg`6&6EXUmPWkIMk{ zA>oF1==tuRFKS5n9Dd;n<37z5>h%e(MD$}DfagdS=?)Kb@jaeZ91|pSyZxeIxRS#6 zDEuFV-Lb%uzn}6ZLkJm6#(ZNY92SQi7i>RX3Pi6wHN14m?F;&d{kJdT2hBoX@~|?G z1GO=*EGjEROTTdVXPjwIL%d`(J2ey(B$$R(HcJ6?jVglL{=#W^)5_WCg^F|%h7XVq zQPCf}NuRji@%R3%d46kqe%t$cqn<>t(vo2}L`f8)ntGdLigdwsmvS0<@~~TXe)10z z2N2qX+)Abg!LWz@n<)IdTjHf%^LvrsrbI{Mdw-no@Nmr$#!F^GB9JlaDox$_3o9~@dADUtiK-${ZKhpg6LK6pF4%9Br^EMj8a#D<}A70;Vx zgqFcRfO9T}@Bm<0%Z*djD2;~O-}87cc!cGMqvb@=&=~F zlZZDT2=sEYJN@AOevv4dv2*awy><@i%qPdZz2#TZM~?Hkz>Jmc%~I{C(gkK=HK2dS zzU~lh5|-wpS|x-9nyBFzI>T1sBf{Id^!)GU@McAPWfFYm94#phnnRsB+C?|L$$+*MibbpeuPfOMy< zc@zI)T~r|HUMAnd8LPr;gwL;63lA5R<64UI-uVl@SGaGu7lQ4n<7w~ZZvH4CFQp{n zD?R>YUh;9ff%&9{3&%|nhsyj-5pVqFmly^EgB=n&Jew1 z;Y-g!4WZ-GV2>+Y;e&vOej{JydDpK)yv2)sfLjxSiEB+0@)_oOXJil&i7L2UFAvNH z|5cCxvaco)g<_5SyoGR*ue35E>l(=e`O8*2nQ+Y`NbtG8*gnTp=0S32bLI_%;d7Oj zn;W&qpkFx81!hD5`emBjA$ljtG^hy=zSb5Ta=q|I;azJ%q8dfU61h^`4t`ScDB%;k zYCgo{dp*kMyRjE~#hD-T%e8l&q5WonL|nMmg|r=(HwBDXdYsLmYDb!>g4(sjS{n?) z*|Aw-i*PbQ+@wZE7(kxPbGooeGVZZ+=+3g!Z@%%iAfAd{$j)-{c)7&$J) zfqCl&3U7P`oLe0iiSe9z{*o+BU@j$G^vf(DE?imXfLb_B48&Tdh>18ORI)m0$BN;M z%B-TPVF<_o&P(kk%XE}Fr4TYbFMKK^yz@mu$C@S@={1a4NJF4~v^Z9<+aBf1!X99bt^^|_D9V~Xb2 z^nnCGa+$nu3Wto^=X!fy?#14R!fW=zyQf47K?o3fYn>ncgKy~tYA&+qE+>ET6oJbA zh6}k~KPVYd7gp1cQN|j^TEdKhq1N=N2sajF(uz24Y90tk6(aE{@yQpwyPbFFyt9}o zGzj=Lci3vHS_2u})m43=wE)y5Lvt~B@=cOyxtU@~+NlBr08sgh5#wX%41hv|8>|C( zLkJ{5h(kRT;`|?7;R+$3jhQ}r-Q>xWO)*3U2^amYZ3m*c5d%;Uk29dRNn{YJ+V!(c zwyK;ICk#U%FHcS6uGuVV$K;0#BGCpYo*>*g-6>21!eLiL$x;H)+KFGN$oQBdY93|^ zJatS#ohfzKvcMq?82A*&TNQUh0P~P{pu*#y>jnVk3w^bY%L2}3$&Sv%K~=ciT!Y%C zOeuDeCK`;{y|VIJriu*K4bPz!#C7vWKnP0XQ9~^K_`4kg(paJ$aWkPX=)e(a<~h8y=xLo zVk9#>E6fZC&b!3^>aB)d!!;6nLw-+DRrTbD#BM&_9{{>*w-XrMmN>b zW_MKkr6HU>y&hoFibnENAs}5ry%~v^VjBZ&rmu9*+YIJ%O9?SW1%LmXc2`R@uUXOK$;UxdlPg@v@C1l7q(W0GKMhbHG1j=Sp&~Oz+9I=; zPRBrlBM$ix@+8@|G__Dwtoz)MX2}^1kX!8Psx;a}J)Ha{JY9u5gjRq6Q_2o`?&* zE=52@DzQdyRQ+`_2NV(e0F#Ix-U#68&7-S;@VPziTx!s-v`rbv%%Z!ZceDsVYbQ4I zV@$Q=q8^VaaKpGBfDn|UZn_gq>c7%Wg?El%TM}(D%47^TYLK|=obwP|vfjt>0Ib-D z=d%y)B$rt!j9AOSWxv%WH1!d#2Al@WMnyP^sZyRMeaS&z^*mr|BjiJ1g=?0u7C`G3 za3}v^K0)unfaXrun8t|*FZo^)3@*)+PA;!liHk9|3cG|P(|u;PoA8!8o^~9lEE<*fXkrqsCh^a8LhfotBaP{EutjI2v6z;|OJ}%PVCL=}` zGiLYRxRhC;Lv9OcbRmy10(^xAwYh4UGS0rqfl`6&h@sJZ9>}_8`L+=t&mDGekhuaN z?IYj{Ggko26PLNXa6ufVSZ)*h5P>5E5S%M5#otC9tAv+sOZJlJd!Vs7bsG3*M6nB1 zPjRqk*YN`8^qc=kt=*)=Wi(0$nXbx5*#eppjBufiD25ew7Z}mSaFWHvxJVT{_{wc?IR=Gk~DA*_UY%fudwd1sH{fE8RBoFrKZ(Rk%kc zpm$e@mRjkw-2?h_f-)vGDZEk4#B8(h8Dk*RF=F5jxe)_E)7>C42p}2Dy$j(2hD^Df zV;tOM-h6;#g-az{(THhP=ozP3p5*8405^9dnftd&F3^DeGfGIcAnushu zc^VMWCVIhTAiN&rCKyw?C>{W!(Zq-e6Xz9A(k~}`KBfXI8X=qyFtK@MRw)ICdB4XL z9ycB)QfUI4yJbcU5X`vDyHvT7=lg2!=^~J4g}Wgb{le}OrsJ=|Hk9X%r1w5(YQ|DG zGVHa`A%qaP^6cQ$831z4eU~d&$__D4$pl0d>%*1Z1RVn!&T62pr^q-kA_C(SLM3z4 zBy&Otnpr0f047gvp3fQupyz(s1QT#0@(Hfn6&QYYcf=(PfXAH`nLDm9Ki-t)?ivH& zP7gsjO2}5#S8yQ~>Z$$kJCQytJ&oR!LWv<;aB5`8{T=_^XansEk~nMg5VFe4Dj#aSQMmz*p!3Z^zKp9kEe=22M*;f`gsAFo7N zT!~K*sk97`8%sCXeGo{I7Kd{_svCNrcfIOc4ykvL2V?7vg(TDcMfdtk)AJMla&7Qf zf5yp(cxLZF5Gpu48*C;>jZE+PI0mVm**aeVv2AZ$$_YhKk|4RR{3}UBq!udcRW?o& zEk}g#T|H(}BVhX*EFOQ?!%@;{)6+{nOB`E6#A9XAaP3?iOO`NcoAfo!3p{^IpntT_ z>PLw|R&iBs+vsrNH4PVfDvkm5y%h&EO(koS20L=5HZV12Y9sS+1h|QbSQ_!GkWNHXV`;_7xydpyE8c&_0H z17N{z`hC`bDm+VttFyD2i##CxRAD={Ih~F~1`R+sm&K#9K;kq6aLj#e8puEStl}3U zQsqj|gbp=pR=J?AlfdAm44|>nY5X&8o+AZjq_k<|Ljc)G07il281p+reIgOh{?FgX z=IRFYGD>PIeIT_J-C8OFkSt%b&J8YB{HS*yzU5Uo-US$g&vgIk(|u)(placxDeN7J z(wh0esCcY6Y82Utl1jJJaUSEc9&tA#uz<)5O<7DC{!;TeU^EI>+f9%deHw77rARRt z+X|Ry4hCd;IYwTNRQI+zq8Z@3NH>3h*>Jhy9ZZ_m1|QM0=dYu4&o z26E$F-NB5309fTqxgme>w{TB;T+FyL?he~*+z8;9+jKJBPgv1Hf38fnry+lcOk@$S zYNKUQtaM|!=RY87a1M_O_9nq2cF1?#dJm+QAG+a^uhxcHw_;4a{0# zds7L(F}h_e*k3woXK7Y*@OXGofVk#oHSb8%ln%72o z_%qc2I8WF)>xBRVV+!;BDtZMjGw0#=iN;!2dcQJgs2!mR6`6+3Ks5FSjNSn2rQH+G zA+xveIJx#2z~mJ!0rduOwgCYFVD{PVyS^QBd!8@-Le_BF&OO$068^(ur)pQS;k~vt z2^)jUFVaB`-VSAhUESj~#mYqi()JwFY1Ru*v+Q>)BAk!(+6KdY<-K3~NoSA;} zd_o!Fc{lSG3XGVIa5cOLjONCMVu`99n-#<0MgdfrPQgwhb4Cfntm@_Db0Mq-n0R#( zD9U^ulFLZDL0yS~1%_+xJjB480kC49G&?KMApKk1Db%` ziekS|%fy3+;R{ANK!G_JD1U-ta#nQRzANsFDq!l0gjALWNHz;}G@%B_+>h7%Vu^Zi zY-}UnEsMm+HXu3qZ&2)p++&I*$u#S%jUCb~1@;p9j);85SO*W-cxYG>v6}V(SJR$0 zioQR}0f`!%BaBg!sx=`kM2Q`k+Vet&l%M4O*GEJQH;M$*m~}epeOHnQvnx>9C;&YT znUYh3tG2InOA1p!IC(`POr=2I&uBB%(iKKaS=71!z4YO3Q9B5z&Wu&siEzc~cDvyx zjtb;28ohA5&HQFAl7_0x*|;y{!N2tyZR$)SB$!He@_>}%87 z2%-JsAC)z_4ic`kUGuP_rYPN@u04kzL}4XR-`mM9*!LkUagQceLigaB4KF%rNE z6M?Jt&BNUt?!6X3*WKGbw<}m~IN76WZg88)uxM<+*)7r)LR5v^e$)LG8vAn|J)OI< z$OOu2;sLI<+y(YQ9*9ySKu8#q} zPO*j?&BuML)~5_zix>d=U#XqxzG6oUlb!oMWTX|*$G`Q~A3urQH_?nBBo77%l9aCf zK@G;;Tk(Au$em_;=iHPwuHZ^vq!cRFdO%%G7H_6Arpg2`tO3ZO!JHC?h+4Wj1zcbX zpdqYCM5O^NnJfr56sh=labW=Z+1H;l<|CTVtv^?nKg zeqi*mZwBCO#9~cfF_ab#cG~??PJS(?CQcl)!gaGz=JX0(A_i9q7};S{j+@fF_r&27 zAZ;Pt6MI(yy!Tl*VK+n~rd$?n5NLX#05u_Vm7Qo-e|g7RxNPG}8u`dAi6IXVmZ_9s zMIm7r$4F*$!dx&2FDZ7|BO>v?VEX})>*7-CrO;=ZJxcQ$S@)FZ8%tf}0DBIwSu+fk zy(a=?y)6OgnVTFNJa`Rj^mcNy(g!#(5;0~40sgOGH|}7ZW7HTxYS|eSaoXyeU&#$w zG38Bb)8bK!oDd~l!I*s;!C|_u*wVpk72c4>c&rN+#SnglevKaS^v}-`FS&!8gn86p z;F5b>6&NsUC#AsdwQkrp7J>KspITOlF}-|wo`2T<%^taaFz*{cY%2h5sLZL#daN5$ z06te`1;C_)_-d;m+*bU;4JodjWTK4#`elP{3Izx|X6|F|;Ra&EOI-UtA?z?q0h&4F zq%QT>iN-83@HeB@XsCX1j?cs;na0^z?WIZ=UA;3l$w`<1asD)M+MX5bDs+je_=HYOTO{|yog$7hizwCc(SSwY0fO90Wva1JH>aa*RkdX}^UkH#| zc8r*)1i_CzSFsy6D4GI^kGOXP-St>w0POaX`yP%xc5!;p`o*=UdSF=0Fw>UGG* zY?vI)2+mTC32&eON>-qMg(EItoC4Rn&KPrwlDX%ax|)9Szpm!w~FR-1Cey|k$VFk`zAjdBC;(=PCo0ACc=%F z^3}fF)lGVB(fc@Hv_FSqr{lZxq|vmGlL+&C*LW;gj~cxrdQ8?Ohw6SEs6o%QcZ6{( z0u$!yJTR;FIF;5qtsQijoT73KgjEIu7HKyA9S3S| z*Yp4X@pp(b+Zw<=6BFVyg(S^fGl*MPPcku!Wr4uPG8=3g5g>|Zejn`wH>1XTI_VCv z0byb-Zve2%^Xt{=z5zmjgP|?;;IzY&iMT`RKB(VQ7BMd+joC(q>Aay^zmHoJ0!Hr< zgN)7f9edKv{U-wvv&RZt+F{!`Hsx$M-M(^lHF28Hx)T@?;Uu;dz?i47B2hw&0Z|X4 zQkY5OE8VWIgO~$ve#4)(h7egyPDnwOz&hl-kroB+$hgw_QCJP=dUh%c1xW7y18Hs$ zk01CP%Ny7vLs7C#Nz80v=W6^uY*;3BHrhdHZSnB?V@M=_giMBXdKO(nbe6ro#0R*s z7Z81xCqsHa`F{d??K?+o5{0oTPyQ&tQ{pFjRwV9ALW&4pY4Pf<^mf~~KjP?(B z`MJo0(Jnm=F)hPqv(nz}Hd(Zgx3efbs_=G&ON7AJZBY|_r*qBmPI5q_iOcfqrw)72 z2K(3(aTR>vT|ivYP_Zsi18^Jfk}&a;C`BS_!P2wzig`FoV`*TYNr|a9e3E2bQ*%os zlvbNs0S=?(Wv4P4)&Rk)-+$Ph=40}*VGGk0nR(gP*e)7O+pe-p#%BZLnf~@COs34p zd?>Qp?NBD6#?Ty;2gqV^kfF|TIfd8VdrttXjA{-bHD)R=m3bf{hAX>CS$4%D(|RV0 zHXEttOObCOtw2{3Rm+=+PH*P9Caik!7_cmcpiJcFtBBnjfx3sMk(j|<1r*QQgoQhD zNGpjd)ex}l*h_X;$^=R3GNZGSaAV?ongWk-pK#*(7(1Zf6Tq?0L9l&B6g833oV?Qf z$m*wqo zZVjSGty+}<9KCaJ2`d$OAPPK)OQ9}}-GRvsjl@t}kKmUGBHd{=S~V}aHc(WQEi+eu z*!7z~mvlou{>y#ZiNA`*#zKsq&xh=xw;t!*-`SZ_4<#D_s>oMoIx|tR>V`8;p%f5TMs(HbA}$VfK!hNMen_ zNal}rB859vwB95%wLY*%S+)uy5s+fDBXoAcP4V$2N6UzdwHYZ!VqMtuwpNWW7uP0M@n1fcbSQUP^Y29uw+m=k{=KhGKb{36yEt_gn;ILhF^*tG~RVSBfR=L@Kod^TEkg z&c09Li5yJJgmSF*5fvWAdBmbI;sI>tIWmC}5x6WLUoMTQ_dH)^KqcJKDVT3b1`LjL zRTEVLCXU+3CQcX>kCWAku&i|9GfU8o+d#-~q1YY4`8FH@pbgI!W^@5?Y<{(5 zaRd4I@3mDdZxJ>={vA-imx7jVDzr!bLf$l<_-tqHM4yNLF29RAWO$fiA#yr7`4Nvt z2t53xz23p@Ub;JMxnfTC;djCCaW!6!Q*xgifykHpxF!?S=C$5we_YL?;1@;}? z1yzIcz#S$hsJKh~WK~JN0qJ4sQ8AZ8cY7+A>a@gJcjn~1sxmh&gWXG#y z0MWP&E@fE9oGvb5>gE0(-|bwoOJCU@53J*}7DKI6O28f8u#vd>U00p}N+WO>yAeXo z+Em;cc!d)aWHgEuNs;+FQn(|&jXk0YuxxjkEmqjO8pMR(po6#-hbb{h#J}fPVU*aB z(6%kKea+?o6FPR^i6+0ON)f)k{?B zai)imNhDa9!qEu-m-6HGY1=eQ2?%VL1KY$jCcqr!OG$TVgZG+b#);rhu3ya;-l|fI z0PBU_!WyRgNJ#%;_j`xLH1tjk8MF?xLu24qYsIp)g&dm`gk(N-gmcNLLJ7#BogguK z<1(*%88oDq*9q2*`|pJ%r4+r&tAkadM7S^nP!CViC5}u93lIeq72(pll=J{AR!Ac; zzHJ1sSSo~DCExG00PIH&5V>!scFXKLLAT<^eQfwG&*xR`n8piv4cjwQ1}*J%%1&7L z+4FCG^>b>^&!2Vcb?ubNiD`+gU%*0Fcv|7R6`l=cD^%lE=(rR(arLWI_UDV1$k^qYbXQIz2%WewG{gkOitQ%C5F>RiC?!0NkXfkr<4w zz@{AqcV*;OaUy)Mhz&Vl#%`+~J7d=I-tKs2Z zMEcZkEK!%mbwHzVWi=M5hU_g9x8k6U4k)N*^CDMVcpNavk>IY|0PUQ%BHh7k`6j_w z9s$scazI2sdIP-S{ENf5A=}0Wy8MZDgY`4rPD50Vyx>*Xe$QVbq`s(IC%@I7M|7lr z)~lT-gYxd$5YhB>$}okmo|o)evOf0!A)sPZ#7So2RWz((3Rgu%lIAACn7G#KhJw)> zmp@dN;LOuZvZQfPLxqwDjBg@W?91>5^q|MsEq*GU1kq+ zkU;X@zVS@B(jV>c&I5CjcoQyX28=#y3Ma0T1}TgPE~U-b1f#igWW$Z{h%nS{D_kfds(~l@ zV2NWQaZAzc#zikG#sTh%i4wi*A^ZdS$G9Vp{GOr~Ko;eMk!t|y&2KP5sA==c*PNqV z#ky0mLnFL^!!E?zY_($uaUF&CjPsE#zYf~}&xx7onUr;}aixYmo+X9J!uT{l7j6qk z``o)ojf|?nS$1;LgzDa1T`8k`6_G?woRMw}O%VyEflDE9$|hk|oa!-boaw_wsfbzj z#c>ChD7LX0d@OcZJZ{k3v^HxApiIvJvD8`sbB-^iOAvun%(`>vax#BFMEb;q60D!W zPP48?ucNWx?fLnBg*N}l_93RT%tU_yUNw`@&lO8{AZ~2sNMX-CSSnv31p?y2JD4ik z2tR`xg{$qdL=uM~2Cijs8lb*+r5p6igZhm-B!N{il+r!3>7@q!-#+j(>V->Gt+f!K z{a8R`fg93Xtq*{H_8cIp>2E2(H7}$Y$WE9Whb@PGymqDlyEiK>Vla9qH$=4y&D+r? z5aK}<-anh^ez7rVUScMqNuj*{a-Z-FLpqVEY=zFdky|9I7iPc!@rl<&HPbZdh;7|i zTf;~&N5)P47=GA(cj1Q2#O4ID50<#P#wud1O95Iq&sB8!I`hCQB+*L8EQOS^SUGNv z5f@1^LO{74IU)MT>;XDGW^t0E_zOSk!ycl{=#10>EE2c5_Exa6eJ-|m;(3OFcbSjA z%Nxgsy#OS1y%~^BUUj+1haB*%Pt=}zV=D&=2kr+iYMKvlhoGYQcln* z9Ma#N@CY5OV&Zy@Wy3{y4!e5drcRBcgg`qbuJ8LHLvZyWVU^oIGBkauEaT1^a*w3N z2iT>kR}K(~DFVxqH^(^ieas+-jDvT6u=(H*pnBhZmM9ZBbrMNj>6+(OzA=j_d zy;nEoTv#HNlu!H1dD|26vz;`Z9k0U8VWEjQp$a)wq&7E+5Gv)zNC#qf!&Ujlk~n9G z;ZCqlA{x880c&_De?5~EM?3_Y%_Ch^{r3P9U7|#9>j4v<`O!zB39ux3vK0GHx zZf_h7^Ok#gIgGselKucL>rZ>4Ga^$7>vpk4y46kq6fRz6H^a9sPJJli1)|9;;;;Am zX_OBWPuR$I49h4SZsG=ti!;Ii=8$Ga&4x6DnHcpl*p=PbHquzLLAW7{yMZw4-B`rl zv2+BUTiziF|Hu58YADa_!;RYQLI}8oQPmaUS@J_y3wPp{|9ae`7oc4}Cx|Qs6hH23 zXt-OtRKkcY&@Ich6Sh?hhhxDT+GY2u`lh>Zf_x4??njM2eFWW8d}?f6h_AJx6M)%5 zb|(In&|=@sUnri`ZB+frkMsf!nY3h9$Fp#-2`028P7Wb}h({koEm$W-6t+QC22;^j z`bM{qD%{lSYzDDblvKO1Y}QEI1RWt?4~btDo)v>4I84^%?5-@btr2sRD<({ABcS70 zU`XMPXcc`BF#PN};)`wyfw~dWJyFqe&nd|7G?aERF;lc1dkJ}KhX|cD?~N5xF819F zcz0LMB(A!ymGbnVFaGznbHT!VGoGNhxdH}YB$&~t>cts`>fT*l41L}8b*l`i@wgM- ztQ<_M!Ckp}aX)!b5;#4KDJ>;%zl#W|R{0uYR%8=aRx2RA{Mbu++!?%RqQ?hFP38n< zNiE!DfaV^N6EzPwcg8lxZx@@}yb-`*LT;@0R`z1wO^;@Tc`Q4zwP7RDi8vyI-ihgQ z77j6Cmz)Kp=001*MN=jiYzj3!tV;@a=#QJS_}oy|DBMD(m9!=NT$2#apBzKAaF|r| zEfs2G-tv4Pd&PwLOhJL1xpS~S=5(G>3N=amSgp|mvWOfNTMdGu0l{nxKFNs;CTte{ zoKHynlOV)2Vf(Ice7e{A3esZlvOP*(()&o#Lbp(!ez`cZBh|r$tBs{0DYAPZf&l2& z!U(l+icFxk5%uByKs1xH3b#7RP_P=SWP|ZNdWAs`xj8}zdX)|w z0JsKYa-!(k6%Pw6N05KeVV5JyN<|1~Uv3*|wgdppvE&Hm`3x9$nrskLT8`1k%^Wke zoO7|9jRiPH$WGJg9$VRqovl405qYz#4vXBh_zRpajjb~+B5iSh-vxkhhd7{KJWh(P zrdpn^gE6E5ceT1O)Yg(s=}(d4lW$Rchv*z$9<^=h@r+FwOOwC3DM5g)=Zx5DD}jGpc{a95Fhi^xGB)X3 zG6(=Ucyp$7TEJ7xNda%9B8Apgi;h^ST%)OdN3u9t# z;u0pa4D@1~6v*y%OTOU0d6j?OlO4YEu|D)E&Iri$@^VJRH2sA>E}WgU65|sKeY317 z@wN4jR?@*(EbLf|zjYmW&I^2FBx63tDan?E&{fC⪙x#soexif&9gcIJoeqLdS?U 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%0Dcb5CccZmOG^u5^t`dY#5<4Gju- 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

    Yumkiw!3fB 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 o&eY

    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

  • @@ -86,63 +85,73 @@
    +

    Gestion de l'utilsateur

    +

    Changer le statut ou supprimer un utilisateur

    -
    +
    -
    - -
    -
    - -
    +
    +
    + + +
    +
    + + +
    +
    - +
    -
    +

    Gestion des catégories

    - -
    - -
    -
    + +

    Modifier une catégorie existante

    + +
    +
    + + +
    -
    -
    - -
    + +


    -
    - -
    - - -
    -
    -
    - +
    +

    Créer une nouvelle catégorie

    +
    + + +
    +
    + +
    +
    @@ -152,4 +161,5 @@
    + {/block} \ No newline at end of file diff --git a/views/home.tpl b/views/home.tpl index 7236cc4..49c9c0f 100644 --- a/views/home.tpl +++ b/views/home.tpl @@ -9,6 +9,19 @@ directement en contact avec les entreprises.

    +
    + +
    +

    Les 4 derniers articles

    diff --git a/views/project.tpl b/views/project.tpl index 838e494..1e88fab 100644 --- a/views/project.tpl +++ b/views/project.tpl @@ -14,7 +14,8 @@ {* Affichage d'un formulaire en cas d'appuie sur le bouton "+" *} {if isset($smarty.post.showForm) || isset($smarty.post.showFormContinue)} -
    + {if isset($smarty.session.user)} +
    @@ -28,11 +29,23 @@
    +

    Image thumbnail

    + +
    +
    +

    Image du projet

    - - +
    + + +
    + {else} +
    +

    Vous devez vous connecter pour accéder à cette fonctionnalité

    +
    + {/if} {/if}
    From 028c106e7322c78995f9189b0557cd930916f068 Mon Sep 17 00:00:00 2001 From: Yass <102179445+Yasder5@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:11:43 +0100 Subject: [PATCH 17/45] Update navbar brand link to point to index.php --- views/_partial/header.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/_partial/header.tpl b/views/_partial/header.tpl index d7da06d..628dafc 100644 --- a/views/_partial/header.tpl +++ b/views/_partial/header.tpl @@ -13,7 +13,7 @@ - \ No newline at end of file + From a8d3762b1956bcb0ab7bf1d6c5f038394f2ef6a6 Mon Sep 17 00:00:00 2001 From: Yass <102179445+Yasder5@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:14:14 +0100 Subject: [PATCH 18/45] Rename Logo.png to logo.png --- assests/img/{Logo.png => logo.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename assests/img/{Logo.png => logo.png} (100%) diff --git a/assests/img/Logo.png b/assests/img/logo.png similarity index 100% rename from assests/img/Logo.png rename to assests/img/logo.png From d319e5ef986b68c46e9b0b21ff25758bb31be917 Mon Sep 17 00:00:00 2001 From: Yass <102179445+Yasder5@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:20:57 +0100 Subject: [PATCH 19/45] Fix image tag indentation in preview template --- views/_partial/preview.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/_partial/preview.tpl b/views/_partial/preview.tpl index 3ed2470..2358163 100644 --- a/views/_partial/preview.tpl +++ b/views/_partial/preview.tpl @@ -15,7 +15,7 @@
    {* PHOTO DE PROFIL *} - Photo de profil @@ -50,4 +50,4 @@ {elseif $projectStatus eq "refusé"}

    Portfolio refusé

    {/if} - \ No newline at end of file + From 395772e2a9e32e9678f641135fe8469a60a27d61 Mon Sep 17 00:00:00 2001 From: Yass <102179445+Yasder5@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:21:24 +0100 Subject: [PATCH 20/45] Fix image source syntax in header template --- views/_partial/header.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/_partial/header.tpl b/views/_partial/header.tpl index 628dafc..a333052 100644 --- a/views/_partial/header.tpl +++ b/views/_partial/header.tpl @@ -71,7 +71,7 @@
    +
    + + +
    {* IMAGE (80%) *} From 4a96b41d039e810460c82c2c9b95d0880f8d477c Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Wed, 11 Feb 2026 17:46:01 +0100 Subject: [PATCH 22/45] correction bug d'affichage --- ...94486bfa02ee91c2c5fe68_0.file_home.tpl.php | 25 +- ...5df178eaf9a1be4_0.file_inscription.tpl.php | 218 ++++++++++++++++++ ...82584009ce981aa35e0b_0.file_layout.tpl.php | 12 +- ...56e3cf6837f9df55d7fb_0.file_footer.tpl.php | 8 +- ...a455c22b1bd_0.file_project_display.tpl.php | 129 +++++++++++ ...2993687bad91a1cf0f6_0.file_preview.tpl.php | 70 ++++-- ...db1687a6d7b7b3c501bb_0.file_search.tpl.php | 12 +- ...947735d13c8d176ec944_0.file_header.tpl.php | 15 +- ...b3bc83bc530b255f98de05_0.file_user.tpl.php | 98 ++++++++ ...bbeae871506874cefd9d6_0.file_login.tpl.php | 12 +- views/_partial/preview.tpl | 12 +- views/project_display.tpl | 2 +- views/user.tpl | 4 +- 13 files changed, 552 insertions(+), 65 deletions(-) create mode 100644 templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php create mode 100644 templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php create mode 100644 templates_c/ac38676c030d472426b3bc83bc530b255f98de05_0.file_user.tpl.php diff --git a/templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php b/templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php index 76d88b5..706a07d 100644 --- a/templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php +++ b/templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989b403135214_06797903', + 'unifunc' => 'content_698cb226808f21_86889286', 'has_nocache_code' => false, 'file_dependency' => array ( '0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68' => array ( 0 => 'views/home.tpl', - 1 => 1770579251, + 1 => 1770721453, 2 => 'file', ), ), @@ -21,20 +21,20 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989b403135214_06797903 (\Smarty\Template $_smarty_tpl) { +function content_698cb226808f21_86889286 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_8519413186989b403131000_39935260', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_702794187698cb226804e46_22039504', "content"); ?> getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_8519413186989b403131000_39935260 extends \Smarty\Runtime\Block +class Block_702794187698cb226804e46_22039504 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; @@ -48,6 +48,19 @@ $_smarty_current_dir = 'D:\\projetphp\\views'; directement en contact avec les entreprises.

    +
    +
    +
    + + + + + + Tout +
    +
    +
    +

    Les 4 derniers articles

    diff --git a/templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php b/templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php new file mode 100644 index 0000000..b0fbf5b --- /dev/null +++ b/templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php @@ -0,0 +1,218 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698cb0f3a8c260_72571411', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '184f81453f2b8e9c87b8f61bf5df178eaf9a1be4' => + array ( + 0 => 'views/inscription.tpl', + 1 => 1770649781, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698cb0f3a8c260_72571411 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'D:\\projetphp\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_268185928698cb0f3a8a4d2_62245512', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_268185928698cb0f3a8a4d2_62245512 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'D:\\projetphp\\views'; +?> + + + + +
    + + +
    +
    + + +
    + + +

    Inscription

    + + +

    + Créez votre compte utilisateur. +

    + + + +
    + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + +
    + @ + +
    +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + + +
    + +
    + + +
    + + Déjà un compte ? + Se connecter + +
    + + +
    + + +
    + +
    +
    +
    +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989b41646f355_64257736', + 'unifunc' => 'content_698cb22c0fba06_93938818', 'has_nocache_code' => false, 'file_dependency' => array ( '1c51ad9f5c349145220f82584009ce981aa35e0b' => array ( 0 => 'views/layout.tpl', - 1 => 1770579251, + 1 => 1770649781, 2 => 'file', ), ), @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_6989b41646f355_64257736 (\Smarty\Template $_smarty_tpl) { +function content_698cb22c0fba06_93938818 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_12018663056989b41646d2e0_34201164', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_335426824698cb22c0fa1f5_59224788', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_12018663056989b41646d2e0_34201164 extends \Smarty\Runtime\Block +class Block_335426824698cb22c0fa1f5_59224788 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; diff --git a/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php b/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php index 54f0ed8..3ef3f9b 100644 --- a/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php +++ b/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989b416601ef8_77236186', + 'unifunc' => 'content_698cb22c31f069_74633644', 'has_nocache_code' => false, 'file_dependency' => array ( '264314e384c04e79c5fa56e3cf6837f9df55d7fb' => array ( 0 => 'views/_partial/footer.tpl', - 1 => 1770579251, + 1 => 1770649781, 2 => 'file', ), ), @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989b416601ef8_77236186 (\Smarty\Template $_smarty_tpl) { +function content_698cb22c31f069_74633644 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views\\_partial'; ?>
    diff --git a/templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php b/templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php new file mode 100644 index 0000000..736f77b --- /dev/null +++ b/templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php @@ -0,0 +1,129 @@ +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698cb22434fee2_91445718', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + '4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd' => + array ( + 0 => 'views/project_display.tpl', + 1 => 1770828198, + 2 => 'file', + ), + ), + 'includes' => + array ( + ), +))) { +function content_698cb22434fee2_91445718 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'D:\\projetphp\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_1025150471698cb224342408_37694456', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_1025150471698cb224342408_37694456 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'D:\\projetphp\\views'; +?> + +
    + + + +
    Email envoyé avec succès.
    + +
    Erreur lors de l'envoi de l'email.
    + + +
    + + +
    + +

    getValue('objProject')->getTitle();?> +

    + +

    + getValue('arrProject')['category_name'] ?? 'Général';?> + +

    + +
    + +
    + +
    +

    Description

    +

    getValue('objProject')->getDescription();?> +

    + +
    + getValue('objProject')->getContent();?> + +
    +
    + + +
    +
    + + + + + + + +
    +
    + +
    + + +
    +
    + + + +
    getValue('objProject')->getCreatorName();?> +
    + +

    + Publié le getValue('objProject')->getCreation_date();?> + +

    + + + +
    +
    + +
    +
    +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989b416566583_15954947', + 'unifunc' => 'content_698cb22c205107_49895293', 'has_nocache_code' => false, 'file_dependency' => array ( '67e1ae3a210fc2d1bf8782993687bad91a1cf0f6' => array ( 0 => 'views/_partial/preview.tpl', - 1 => 1770629075, + 1 => 1770828147, 2 => 'file', ), ), @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989b416566583_15954947 (\Smarty\Template $_smarty_tpl) { +function content_698cb22c205107_49895293 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views\\_partial'; ?> @@ -38,32 +38,60 @@ $_smarty_current_dir = 'D:\\projetphp\\views\\_partial';
    - getValue('objProject')->getUser_image();?> " - class="rounded-circle flex-shrink-0 mt-2 ml-5" - style="width: 48px; height: 48px; object-fit: cover;" - alt="Photo de profil"> + class="rounded-circle flex-shrink-0 mt-2 ml-5" + style="width: 48px; height: 48px; object-fit: cover;" + alt="Photo de profil"> -
    -

    getValue('objProject')->getTitle();?> +
    +

    getValue('objProject')->getTitle();?>

    - - - getValue('objProject')->getId();?> " - class="stretched-link small"> - Lire la suite → - -
    + class="stretched-link small"> + Lire la suite → + + + getValue('objProject')->getUser()) {?> + + Editer + + + +

    -
    +
    -getValue('objProject')->getStatus() == "en_attente") {?> + + getValue('projectStatus') == "refusé") {?> +

    Portfolio refusé

    + + +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989b4162cc7a7_31054147', + 'unifunc' => 'content_698b1fd2698769_42709444', 'has_nocache_code' => false, 'file_dependency' => array ( '72e5e5c0ee2729980deadb1687a6d7b7b3c501bb' => array ( 0 => 'views/search.tpl', - 1 => 1770580115, + 1 => 1770649781, 2 => 'file', ), ), @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989b4162cc7a7_31054147 (\Smarty\Template $_smarty_tpl) { +function content_698b1fd2698769_42709444 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_1139012436989b4162bac57_95455595', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1250328584698b1fd263a267_71319682', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_1139012436989b4162bac57_95455595 extends \Smarty\Runtime\Block +class Block_1250328584698b1fd263a267_71319682 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; diff --git a/templates_c/8056b95e7f6b28be5e36947735d13c8d176ec944_0.file_header.tpl.php b/templates_c/8056b95e7f6b28be5e36947735d13c8d176ec944_0.file_header.tpl.php index bdde77a..478541c 100644 --- a/templates_c/8056b95e7f6b28be5e36947735d13c8d176ec944_0.file_header.tpl.php +++ b/templates_c/8056b95e7f6b28be5e36947735d13c8d176ec944_0.file_header.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989b4164decf6_40046278', + 'unifunc' => 'content_698cb22c174be6_98238317', 'has_nocache_code' => false, 'file_dependency' => array ( '8056b95e7f6b28be5e36947735d13c8d176ec944' => array ( 0 => 'views/_partial/header.tpl', - 1 => 1770631509, + 1 => 1770827564, 2 => 'file', ), ), @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989b4164decf6_40046278 (\Smarty\Template $_smarty_tpl) { +function content_698cb22c174be6_98238317 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views\\_partial'; ?> @@ -38,7 +38,7 @@ $_smarty_current_dir = 'D:\\projetphp\\views\\_partial'; - +getCompiled()->isFresh($_smarty_tpl, array ( + 'version' => '5.7.0', + 'unifunc' => 'content_698cb22bf10520_97303160', + 'has_nocache_code' => false, + 'file_dependency' => + array ( + 'ac38676c030d472426b3bc83bc530b255f98de05' => + array ( + 0 => 'views/user.tpl', + 1 => 1770828319, + 2 => 'file', + ), + ), + 'includes' => + array ( + 'file:views/_partial/preview.tpl' => 1, + ), +))) { +function content_698cb22bf10520_97303160 (\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'D:\\projetphp\\views'; +$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); +?> + + +getInheritance()->instanceBlock($_smarty_tpl, 'Block_1767111791698cb22bf02113_69556474', "content"); +$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); +} +/* {block "content"} */ +class Block_1767111791698cb22bf02113_69556474 extends \Smarty\Runtime\Block +{ +public function callBlock(\Smarty\Template $_smarty_tpl) { +$_smarty_current_dir = 'D:\\projetphp\\views'; +?> + + + + +
    +

    Les projets de getValue('user')->getPseudo();?> +

    + +
    + getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProjectToDisplay')) > 0) {?> + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { +$foreach0DoElse = false; +?> + renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); +?> + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> + +

    Cet utilisateur n'a pas encore publié de projets.

    + +
    +
    + +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989b40d157c69_73022561', + 'unifunc' => 'content_698cb184850a13_72728685', 'has_nocache_code' => false, 'file_dependency' => array ( 'b44ab733c93381dbf5dbbeae871506874cefd9d6' => array ( 0 => 'views/login.tpl', - 1 => 1770632188, + 1 => 1770649781, 2 => 'file', ), ), @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989b40d157c69_73022561 (\Smarty\Template $_smarty_tpl) { +function content_698cb184850a13_72728685 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_3583856956989b40d14e663_91083378', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1715533627698cb184847324_20686696', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_3583856956989b40d14e663_91083378 extends \Smarty\Runtime\Block +class Block_1715533627698cb184847324_20686696 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; diff --git a/views/_partial/preview.tpl b/views/_partial/preview.tpl index d0dbe2f..7ce59f0 100644 --- a/views/_partial/preview.tpl +++ b/views/_partial/preview.tpl @@ -38,11 +38,13 @@ class="stretched-link small"> Lire la suite →
    - {if $smarty.session.user.user_id == $objProject->getUser()} - - Editer - + {if isset($smarty.session.user)} + {if $smarty.session.user.user_id == $objProject->getUser()} + + Editer + + {/if} {/if}
    diff --git a/views/project_display.tpl b/views/project_display.tpl index 181802c..9500283 100644 --- a/views/project_display.tpl +++ b/views/project_display.tpl @@ -59,7 +59,7 @@
    - diff --git a/views/user.tpl b/views/user.tpl index f295280..1a6ba54 100644 --- a/views/user.tpl +++ b/views/user.tpl @@ -5,7 +5,7 @@ + Date: Wed, 11 Feb 2026 18:21:19 +0100 Subject: [PATCH 24/45] ajouter affichage erreur inscription --- controllers/user_controller.php | 2 +- ...5df178eaf9a1be4_0.file_inscription.tpl.php | 43 +++++++++++++++---- ...82584009ce981aa35e0b_0.file_layout.tpl.php | 10 ++--- ...56e3cf6837f9df55d7fb_0.file_footer.tpl.php | 6 +-- ...2993687bad91a1cf0f6_0.file_preview.tpl.php | 6 +-- ...db1687a6d7b7b3c501bb_0.file_search.tpl.php | 10 ++--- ...947735d13c8d176ec944_0.file_header.tpl.php | 6 +-- ...bbeae871506874cefd9d6_0.file_login.tpl.php | 10 ++--- views/inscription.tpl | 23 +++++++++- 9 files changed, 81 insertions(+), 35 deletions(-) diff --git a/controllers/user_controller.php b/controllers/user_controller.php index 0d760eb..24b8c11 100644 --- a/controllers/user_controller.php +++ b/controllers/user_controller.php @@ -127,7 +127,6 @@ class UserCtrl extends MotherCtrl { // Si pas d'erreurs => insertion if (count($arrError) === 0) { $objUserModel = new UserModel(); - $boolInsert = $objUserModel->insert($objUser); if ($objUserModel->mailExists($objUser->getMail())) { @@ -147,6 +146,7 @@ class UserCtrl extends MotherCtrl { } // Affichage de la vue inscription + var_dump($arrError); $this->_arrData["arrError"] = $arrError; $this->_display("inscription"); } diff --git a/templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php b/templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php index b0fbf5b..89d19a3 100644 --- a/templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php +++ b/templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698cb0f3a8c260_72571411', + 'unifunc' => 'content_698cba62a72df8_61715147', 'has_nocache_code' => false, 'file_dependency' => array ( '184f81453f2b8e9c87b8f61bf5df178eaf9a1be4' => array ( 0 => 'views/inscription.tpl', - 1 => 1770649781, + 1 => 1770830431, 2 => 'file', ), ), @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_698cb0f3a8c260_72571411 (\Smarty\Template $_smarty_tpl) { +function content_698cba62a72df8_61715147 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_268185928698cb0f3a8a4d2_62245512', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1012653795698cba62a6b7c0_71138616', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_268185928698cb0f3a8a4d2_62245512 extends \Smarty\Runtime\Block +class Block_1012653795698cba62a6b7c0_71138616 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; @@ -43,7 +43,7 @@ $_smarty_current_dir = 'D:\\projetphp\\views';
    -
    +
    @@ -56,7 +56,21 @@ $_smarty_current_dir = 'D:\\projetphp\\views';

    Créez votre compte utilisateur.

    - + hasVariable('arrError') && null !== ($_smarty_tpl->getValue('arrError') ?? null))) && $_smarty_tpl->getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrError')) > 0)) {?> +
    + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrError'), 'strError'); +$foreach0DoElse = true; +foreach ($_from ?? [] as $_smarty_tpl->getVariable('strError')->value) { +$foreach0DoElse = false; +?> +

    getValue('strError');?> +

    + getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
    +
    @@ -134,6 +148,19 @@ $_smarty_current_dir = 'D:\\projetphp\\views'; required >
    + +
    + + +
    diff --git a/templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php b/templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php index f9e8c93..b2af63a 100644 --- a/templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php +++ b/templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698cb4496b9cb3_04936871', + 'unifunc' => 'content_698cba62b4e137_64473486', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_698cb4496b9cb3_04936871 (\Smarty\Template $_smarty_tpl) { +function content_698cba62b4e137_64473486 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_382193566698cb4496b8402_05526599', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1102964570698cba62b4c8c6_53649331', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_382193566698cb4496b8402_05526599 extends \Smarty\Runtime\Block +class Block_1102964570698cba62b4c8c6_53649331 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; diff --git a/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php b/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php index 010a944..1eabb22 100644 --- a/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php +++ b/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698cb4497a9957_69792336', + 'unifunc' => 'content_698cba62c7aed8_62552440', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_698cb4497a9957_69792336 (\Smarty\Template $_smarty_tpl) { +function content_698cba62c7aed8_62552440 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views\\_partial'; ?>
    -
    -
    -
    Connecté avec le compte : - - - - +
    {*Controle de l'utilisateur ainsi que du status du projet*} - {if isset($smarty.session.user) - and $smarty.session.user.user_status == 2 - and $objProject->getStatus() eq "en_attente"} + {if isset($smarty.session.user) and $smarty.session.user.user_status == 2}
    + Supprimer + {/if} + {if isset($smarty.session.user) and $objProject->getStatus() eq "en_attente" and $smarty.session.user.user_status == 2} Accepter Refuser - Supprimer
    {elseif $projectStatus eq "refusé"}

    Portfolio refusé

    diff --git a/views/project_display.tpl b/views/project_display.tpl index 9500283..3f69070 100644 --- a/views/project_display.tpl +++ b/views/project_display.tpl @@ -58,7 +58,7 @@
    + {*Controle de l'utilisateur ainsi que du status du projet + Suppression disponible pour l'utilisateur possédant le projet*} + {if isset($smarty.session.user) and $smarty.session.user.user_status == 2 or $smarty.session.user.user_id == $objProject->getUser_id()} +
    + Supprimer le projet + Modifier le projet + {/if} + + {*Conditions permettant au Modérateur de modifier le status d'un projet*} + {if isset($smarty.session.user) and $smarty.session.user.user_status == 2 and $objProject->getStatus() eq "en_attente"} + Accepter + Refuser +
    + {elseif $projectStatus eq "refusé"} +

    Portfolio refusé

    + {/if} +
    - + +
    {/block} \ No newline at end of file From e9857c44e3a7e144cbf054291191577d78a2db21 Mon Sep 17 00:00:00 2001 From: GuillaumeH-Cci Date: Fri, 13 Feb 2026 15:46:24 +0100 Subject: [PATCH 30/45] Correction de bug pour le projet_preview --- views/project_display.tpl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/project_display.tpl b/views/project_display.tpl index 3f69070..9ef71ba 100644 --- a/views/project_display.tpl +++ b/views/project_display.tpl @@ -77,9 +77,10 @@ {if isset($smarty.session.user) and $smarty.session.user.user_status == 2 or $smarty.session.user.user_id == $objProject->getUser_id()}
    Supprimer le projet + {/if} + {if isset($smarty.session.user) and $smarty.session.user.user_id == $objProject->getUser_id()} Modifier le projet {/if} - {*Conditions permettant au Modérateur de modifier le status d'un projet*} {if isset($smarty.session.user) and $smarty.session.user.user_status == 2 and $objProject->getStatus() eq "en_attente"} Accepter From ea3892886993812ca42db7f03050df59d2c2163c Mon Sep 17 00:00:00 2001 From: "laura.chevillet" Date: Sat, 14 Feb 2026 10:03:15 +0100 Subject: [PATCH 31/45] =?UTF-8?q?Plusieurs=20bug=20de=20fixed=20important?= =?UTF-8?q?=20(!),=20mise=20en=20place=20env,=20mise=20en=20place=20img=20?= =?UTF-8?q?user=20par=20d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- assests/img/default_avatar.jpg | Bin 0 -> 8273 bytes composer.json | 3 +- composer.lock | 390 +++++++++++++++- entities/authorisation_entity.php | 4 + entities/user_entity.php | 12 +- env | 7 + index.php | 5 + models/project_model.php | 9 +- vendor/composer/autoload_classmap.php | 5 + vendor/composer/autoload_files.php | 2 + vendor/composer/autoload_psr4.php | 5 + vendor/composer/autoload_static.php | 38 ++ vendor/composer/installed.json | 403 ++++++++++++++++ vendor/composer/installed.php | 49 +- vendor/composer/platform_check.php | 4 +- vendor/graham-campbell/result-type/LICENSE | 21 + .../graham-campbell/result-type/composer.json | 33 ++ .../graham-campbell/result-type/src/Error.php | 121 +++++ .../result-type/src/Result.php | 69 +++ .../result-type/src/Success.php | 120 +++++ vendor/phpoption/phpoption/LICENSE | 201 ++++++++ vendor/phpoption/phpoption/composer.json | 50 ++ .../phpoption/src/PhpOption/LazyOption.php | 175 +++++++ .../phpoption/src/PhpOption/None.php | 136 ++++++ .../phpoption/src/PhpOption/Option.php | 434 ++++++++++++++++++ .../phpoption/src/PhpOption/Some.php | 169 +++++++ vendor/symfony/polyfill-ctype/Ctype.php | 232 ++++++++++ vendor/symfony/polyfill-ctype/LICENSE | 19 + vendor/symfony/polyfill-ctype/README.md | 12 + vendor/symfony/polyfill-ctype/bootstrap.php | 50 ++ vendor/symfony/polyfill-ctype/bootstrap80.php | 46 ++ vendor/symfony/polyfill-ctype/composer.json | 38 ++ vendor/symfony/polyfill-php80/LICENSE | 19 + vendor/symfony/polyfill-php80/Php80.php | 115 +++++ vendor/symfony/polyfill-php80/PhpToken.php | 106 +++++ vendor/symfony/polyfill-php80/README.md | 25 + .../Resources/stubs/Attribute.php | 31 ++ .../Resources/stubs/PhpToken.php | 16 + .../Resources/stubs/Stringable.php | 20 + .../Resources/stubs/UnhandledMatchError.php | 16 + .../Resources/stubs/ValueError.php | 16 + vendor/symfony/polyfill-php80/bootstrap.php | 42 ++ vendor/symfony/polyfill-php80/composer.json | 37 ++ vendor/vlucas/phpdotenv/LICENSE | 30 ++ vendor/vlucas/phpdotenv/composer.json | 60 +++ vendor/vlucas/phpdotenv/src/Dotenv.php | 267 +++++++++++ .../src/Exception/ExceptionInterface.php | 12 + .../Exception/InvalidEncodingException.php | 12 + .../src/Exception/InvalidFileException.php | 12 + .../src/Exception/InvalidPathException.php | 12 + .../src/Exception/ValidationException.php | 12 + vendor/vlucas/phpdotenv/src/Loader/Loader.php | 48 ++ .../phpdotenv/src/Loader/LoaderInterface.php | 20 + .../vlucas/phpdotenv/src/Loader/Resolver.php | 65 +++ vendor/vlucas/phpdotenv/src/Parser/Entry.php | 59 +++ .../phpdotenv/src/Parser/EntryParser.php | 299 ++++++++++++ vendor/vlucas/phpdotenv/src/Parser/Lexer.php | 58 +++ vendor/vlucas/phpdotenv/src/Parser/Lines.php | 127 +++++ vendor/vlucas/phpdotenv/src/Parser/Parser.php | 53 +++ .../phpdotenv/src/Parser/ParserInterface.php | 19 + vendor/vlucas/phpdotenv/src/Parser/Value.php | 88 ++++ .../Repository/Adapter/AdapterInterface.php | 15 + .../src/Repository/Adapter/ApacheAdapter.php | 89 ++++ .../src/Repository/Adapter/ArrayAdapter.php | 80 ++++ .../Repository/Adapter/EnvConstAdapter.php | 88 ++++ .../src/Repository/Adapter/GuardedWriter.php | 85 ++++ .../Repository/Adapter/ImmutableWriter.php | 110 +++++ .../src/Repository/Adapter/MultiReader.php | 48 ++ .../src/Repository/Adapter/MultiWriter.php | 64 +++ .../src/Repository/Adapter/PutenvAdapter.php | 91 ++++ .../Repository/Adapter/ReaderInterface.php | 17 + .../Repository/Adapter/ReplacingWriter.php | 104 +++++ .../Repository/Adapter/ServerConstAdapter.php | 88 ++++ .../Repository/Adapter/WriterInterface.php | 27 ++ .../src/Repository/AdapterRepository.php | 107 +++++ .../src/Repository/RepositoryBuilder.php | 272 +++++++++++ .../src/Repository/RepositoryInterface.php | 51 ++ .../vlucas/phpdotenv/src/Store/File/Paths.php | 44 ++ .../phpdotenv/src/Store/File/Reader.php | 81 ++++ .../vlucas/phpdotenv/src/Store/FileStore.php | 72 +++ .../phpdotenv/src/Store/StoreBuilder.php | 141 ++++++ .../phpdotenv/src/Store/StoreInterface.php | 17 + .../phpdotenv/src/Store/StringStore.php | 37 ++ vendor/vlucas/phpdotenv/src/Util/Regex.php | 112 +++++ vendor/vlucas/phpdotenv/src/Util/Str.php | 108 +++++ vendor/vlucas/phpdotenv/src/Validator.php | 207 +++++++++ views/_partial/header.tpl | 2 +- views/_partial/preview.tpl | 5 +- views/search.tpl | 10 +- views/user.tpl | 2 +- 91 files changed, 6711 insertions(+), 24 deletions(-) create mode 100644 assests/img/default_avatar.jpg create mode 100644 env create mode 100644 vendor/graham-campbell/result-type/LICENSE create mode 100644 vendor/graham-campbell/result-type/composer.json create mode 100644 vendor/graham-campbell/result-type/src/Error.php create mode 100644 vendor/graham-campbell/result-type/src/Result.php create mode 100644 vendor/graham-campbell/result-type/src/Success.php create mode 100644 vendor/phpoption/phpoption/LICENSE create mode 100644 vendor/phpoption/phpoption/composer.json create mode 100644 vendor/phpoption/phpoption/src/PhpOption/LazyOption.php create mode 100644 vendor/phpoption/phpoption/src/PhpOption/None.php create mode 100644 vendor/phpoption/phpoption/src/PhpOption/Option.php create mode 100644 vendor/phpoption/phpoption/src/PhpOption/Some.php create mode 100644 vendor/symfony/polyfill-ctype/Ctype.php create mode 100644 vendor/symfony/polyfill-ctype/LICENSE create mode 100644 vendor/symfony/polyfill-ctype/README.md create mode 100644 vendor/symfony/polyfill-ctype/bootstrap.php create mode 100644 vendor/symfony/polyfill-ctype/bootstrap80.php create mode 100644 vendor/symfony/polyfill-ctype/composer.json create mode 100644 vendor/symfony/polyfill-php80/LICENSE create mode 100644 vendor/symfony/polyfill-php80/Php80.php create mode 100644 vendor/symfony/polyfill-php80/PhpToken.php create mode 100644 vendor/symfony/polyfill-php80/README.md create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php create mode 100644 vendor/symfony/polyfill-php80/bootstrap.php create mode 100644 vendor/symfony/polyfill-php80/composer.json create mode 100644 vendor/vlucas/phpdotenv/LICENSE create mode 100644 vendor/vlucas/phpdotenv/composer.json create mode 100644 vendor/vlucas/phpdotenv/src/Dotenv.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/ValidationException.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/Loader.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/Resolver.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Entry.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/EntryParser.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Lexer.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Lines.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Parser.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Value.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/File/Paths.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/File/Reader.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/FileStore.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StoreInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StringStore.php create mode 100644 vendor/vlucas/phpdotenv/src/Util/Regex.php create mode 100644 vendor/vlucas/phpdotenv/src/Util/Str.php create mode 100644 vendor/vlucas/phpdotenv/src/Validator.php diff --git a/.gitignore b/.gitignore index 2196147..68b4719 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /templates_c/ -/templates_c/** \ No newline at end of file +/templates_c/** +.env \ No newline at end of file diff --git a/assests/img/default_avatar.jpg b/assests/img/default_avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10cfb2f0b772c7ff0a19ec07c61ffe299eec80d3 GIT binary patch literal 8273 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 CcXm(! literal 0 HcmV?d00001 diff --git a/composer.json b/composer.json index 60ba30e..6354a55 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,8 @@ "description": "le projet php de ces mort", "require": { "smarty/smarty": "^5.7", - "phpmailer/phpmailer": "^7.0" + "phpmailer/phpmailer": "^7.0", + "vlucas/phpdotenv": "^5.6" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 5dad180..24506a7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,70 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "97f3233a5e69021ef84a92c5454bdb64", + "content-hash": "d2f573a5d0618ae6d7627bef30d78eb9", "packages": [ + { + "name": "graham-campbell/result-type", + "version": "v1.1.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:43:20+00:00" + }, { "name": "phpmailer/phpmailer", "version": "v7.0.2", @@ -88,6 +150,81 @@ ], "time": "2026-01-09T18:02:33+00:00" }, + { + "name": "phpoption/phpoption", + "version": "1.9.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:41:33+00:00" + }, { "name": "smarty/smarty", "version": "v5.7.0", @@ -164,6 +301,89 @@ ], "time": "2025-11-19T21:36:38+00:00" }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.33.0", @@ -248,6 +468,174 @@ } ], "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:49:13+00:00" } ], "packages-dev": [], diff --git a/entities/authorisation_entity.php b/entities/authorisation_entity.php index 1cb600b..d072d01 100644 --- a/entities/authorisation_entity.php +++ b/entities/authorisation_entity.php @@ -21,4 +21,8 @@ return $this->_name; } + public function setName(string $name){ + $this->_name = $name; + } + } \ No newline at end of file diff --git a/entities/user_entity.php b/entities/user_entity.php index 0d4a9e8..a034835 100644 --- a/entities/user_entity.php +++ b/entities/user_entity.php @@ -6,12 +6,12 @@ private string $_name = ''; private string $_firstname = ''; private string $_pseudo = ''; - private string $_image = ''; + private ?string $_image = null; private string $_mail = ''; private string $_pwd; private string $_phone = ''; private string $_work = ''; - private string $_birth = ''; + private ?string $_birth = null; private string $_location = ''; private string $_description = ''; private string $_account_creation = ''; @@ -49,10 +49,10 @@ $this->_pseudo = $pseudo; } - public function getImage():string{ + public function getImage():?string{ return $this->_image; } - public function setImage(string $image){ + public function setImage(?string $image){ $this->_image = $image; } @@ -87,10 +87,10 @@ $this->_work = $work; } - public function getBirth():string{ + public function getBirth():?string{ return $this->_birth; } - public function setBirth(string $birth){ + public function setBirth(?string $birth){ $this->_birth = $birth; } diff --git a/env b/env new file mode 100644 index 0000000..af95f41 --- /dev/null +++ b/env @@ -0,0 +1,7 @@ +# config BDD + +DB_CONNECTION=mysql +DB_HOSTNAME=boulayoune.com +DB_DATABASE=projet_folliow +DB_USERNAME= +DB_PASSWORD= \ No newline at end of file diff --git a/index.php b/index.php index f7890b4..090bef2 100644 --- a/index.php +++ b/index.php @@ -2,6 +2,11 @@ session_start(); require("./vendor/autoload.php"); + + //environnement + $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); + $dotenv->safeLoad(); + $strCtrl = $_GET['ctrl']??'project'; $strMethod = $_GET['action']??'home'; $intId = $_GET['id']??null; diff --git a/models/project_model.php b/models/project_model.php index 9ca240f..56b88d2 100644 --- a/models/project_model.php +++ b/models/project_model.php @@ -27,10 +27,13 @@ $strWhere = " WHERE "; - // Recherche par mot clé + // Recherche par mot clé avec quote pour éviter bug du ' if ($strKeywords != '') { - $strRq .= " WHERE (project_title LIKE '%".$strKeywords."%' - OR project_content LIKE '%".$strKeywords."%') "; + + $strSafeKeywords = $this->_db->quote("%" . $strKeywords . "%"); + + $strRq .= " WHERE (project_title LIKE ".$strSafeKeywords." + OR project_content LIKE ".$strSafeKeywords.") "; //$boolWhere = true; $strWhere = " AND "; diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 0fb0a2c..5490b88 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -6,5 +6,10 @@ $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( + 'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', + 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', + 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', ); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index cc0e3f7..333e390 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -7,5 +7,7 @@ $baseDir = dirname($vendorDir); return array( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', 'c15d4a1253e33e055d05e547c61dcb71' => $vendorDir . '/smarty/smarty/src/functions.php', ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 9010687..72ffe23 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -7,7 +7,12 @@ $baseDir = dirname($vendorDir); return array( 'Yasse\\Projetphp\\' => array($baseDir . '/src'), + 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), + 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Smarty\\' => array($vendorDir . '/smarty/smarty/src'), + 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), 'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'), + 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), + 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index a3a36a4..c6819f4 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -8,6 +8,8 @@ class ComposerStaticInit68f8d029d347b4c0c8cdbe33eeb96101 { public static $files = array ( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', 'c15d4a1253e33e055d05e547c61dcb71' => __DIR__ . '/..' . '/smarty/smarty/src/functions.php', ); @@ -18,13 +20,24 @@ class ComposerStaticInit68f8d029d347b4c0c8cdbe33eeb96101 ), 'S' => array ( + 'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Mbstring\\' => 26, + 'Symfony\\Polyfill\\Ctype\\' => 23, 'Smarty\\' => 7, ), 'P' => array ( + 'PhpOption\\' => 10, 'PHPMailer\\PHPMailer\\' => 20, ), + 'G' => + array ( + 'GrahamCampbell\\ResultType\\' => 26, + ), + 'D' => + array ( + 'Dotenv\\' => 7, + ), ); public static $prefixDirsPsr4 = array ( @@ -32,22 +45,47 @@ class ComposerStaticInit68f8d029d347b4c0c8cdbe33eeb96101 array ( 0 => __DIR__ . '/../..' . '/src', ), + 'Symfony\\Polyfill\\Php80\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', + ), 'Symfony\\Polyfill\\Mbstring\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', ), + 'Symfony\\Polyfill\\Ctype\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', + ), 'Smarty\\' => array ( 0 => __DIR__ . '/..' . '/smarty/smarty/src', ), + 'PhpOption\\' => + array ( + 0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption', + ), 'PHPMailer\\PHPMailer\\' => array ( 0 => __DIR__ . '/..' . '/phpmailer/phpmailer/src', ), + 'GrahamCampbell\\ResultType\\' => + array ( + 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src', + ), + 'Dotenv\\' => + array ( + 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', + ), ); public static $classMap = array ( + 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', + 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', ); public static function getInitializer(ClassLoader $loader) diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 58ba902..ae3a4b2 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,5 +1,70 @@ { "packages": [ + { + "name": "graham-campbell/result-type", + "version": "v1.1.4", + "version_normalized": "1.1.4.0", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "time": "2025-12-27T19:43:20+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "install-path": "../graham-campbell/result-type" + }, { "name": "phpmailer/phpmailer", "version": "v7.0.2", @@ -85,6 +150,84 @@ ], "install-path": "../phpmailer/phpmailer" }, + { + "name": "phpoption/phpoption", + "version": "1.9.5", + "version_normalized": "1.9.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "time": "2025-12-27T19:41:33+00:00", + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "install-path": "../phpoption/phpoption" + }, { "name": "smarty/smarty", "version": "v5.7.0", @@ -164,6 +307,92 @@ ], "install-path": "../smarty/smarty" }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "version_normalized": "1.33.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "time": "2024-09-09T11:45:10+00:00", + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-ctype" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.33.0", @@ -251,6 +480,180 @@ } ], "install-path": "../symfony/polyfill-mbstring" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "version_normalized": "1.33.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "time": "2025-01-02T08:10:11+00:00", + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-php80" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "version_normalized": "5.6.3.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "time": "2025-12-27T19:49:13+00:00", + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "install-path": "../vlucas/phpdotenv" } ], "dev": true, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 7bf500c..624a8d2 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,13 +3,22 @@ 'name' => 'yasse/projetphp', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'a7742055942c52c549ab170af519a23b7ca43baf', + 'reference' => '84dbe145b3456d5e963ce4b83741442ea4a5b2d7', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => true, ), 'versions' => array( + 'graham-campbell/result-type' => array( + 'pretty_version' => 'v1.1.4', + 'version' => '1.1.4.0', + 'reference' => 'e01f4a821471308ba86aa202fed6698b6b695e3b', + 'type' => 'library', + 'install_path' => __DIR__ . '/../graham-campbell/result-type', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'phpmailer/phpmailer' => array( 'pretty_version' => 'v7.0.2', 'version' => '7.0.2.0', @@ -19,6 +28,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'phpoption/phpoption' => array( + 'pretty_version' => '1.9.5', + 'version' => '1.9.5.0', + 'reference' => '75365b91986c2405cf5e1e012c5595cd487a98be', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpoption/phpoption', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'smarty/smarty' => array( 'pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', @@ -28,6 +46,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'symfony/polyfill-ctype' => array( + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/polyfill-mbstring' => array( 'pretty_version' => 'v1.33.0', 'version' => '1.33.0.0', @@ -37,10 +64,28 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'symfony/polyfill-php80' => array( + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => '0cc9dd0f17f61d8131e7df6b84bd344899fe2608', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php80', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'vlucas/phpdotenv' => array( + 'pretty_version' => 'v5.6.3', + 'version' => '5.6.3.0', + 'reference' => '955e7815d677a3eaa7075231212f2110983adecc', + 'type' => 'library', + 'install_path' => __DIR__ . '/../vlucas/phpdotenv', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'yasse/projetphp' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'a7742055942c52c549ab170af519a23b7ca43baf', + 'reference' => '84dbe145b3456d5e963ce4b83741442ea4a5b2d7', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index 6cd6b53..2a9ec55 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -4,8 +4,8 @@ $issues = array(); -if (!(PHP_VERSION_ID >= 70200)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; +if (!(PHP_VERSION_ID >= 70205)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.'; } if ($issues) { diff --git a/vendor/graham-campbell/result-type/LICENSE b/vendor/graham-campbell/result-type/LICENSE new file mode 100644 index 0000000..8e7c898 --- /dev/null +++ b/vendor/graham-campbell/result-type/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020-2024 Graham Campbell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/graham-campbell/result-type/composer.json b/vendor/graham-campbell/result-type/composer.json new file mode 100644 index 0000000..441412f --- /dev/null +++ b/vendor/graham-campbell/result-type/composer.json @@ -0,0 +1,33 @@ +{ + "name": "graham-campbell/result-type", + "description": "An Implementation Of The Result Type", + "keywords": ["result", "result-type", "Result", "Result Type", "Result-Type", "Graham Campbell", "GrahamCampbell"], + "license": "MIT", + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "GrahamCampbell\\Tests\\ResultType\\": "tests/" + } + }, + "config": { + "preferred-install": "dist" + } +} diff --git a/vendor/graham-campbell/result-type/src/Error.php b/vendor/graham-campbell/result-type/src/Error.php new file mode 100644 index 0000000..2c37c3e --- /dev/null +++ b/vendor/graham-campbell/result-type/src/Error.php @@ -0,0 +1,121 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace GrahamCampbell\ResultType; + +use PhpOption\None; +use PhpOption\Some; + +/** + * @template T + * @template E + * + * @extends \GrahamCampbell\ResultType\Result + */ +final class Error extends Result +{ + /** + * @var E + */ + private $value; + + /** + * Internal constructor for an error value. + * + * @param E $value + * + * @return void + */ + private function __construct($value) + { + $this->value = $value; + } + + /** + * Create a new error value. + * + * @template F + * + * @param F $value + * + * @return \GrahamCampbell\ResultType\Result + */ + public static function create($value) + { + return new self($value); + } + + /** + * Get the success option value. + * + * @return \PhpOption\Option + */ + public function success() + { + return None::create(); + } + + /** + * Map over the success value. + * + * @template S + * + * @param callable(T):S $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function map(callable $f) + { + return self::create($this->value); + } + + /** + * Flat map over the success value. + * + * @template S + * @template F + * + * @param callable(T):\GrahamCampbell\ResultType\Result $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function flatMap(callable $f) + { + /** @var \GrahamCampbell\ResultType\Result */ + return self::create($this->value); + } + + /** + * Get the error option value. + * + * @return \PhpOption\Option + */ + public function error() + { + return Some::create($this->value); + } + + /** + * Map over the error value. + * + * @template F + * + * @param callable(E):F $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function mapError(callable $f) + { + return self::create($f($this->value)); + } +} diff --git a/vendor/graham-campbell/result-type/src/Result.php b/vendor/graham-campbell/result-type/src/Result.php new file mode 100644 index 0000000..8c67bcd --- /dev/null +++ b/vendor/graham-campbell/result-type/src/Result.php @@ -0,0 +1,69 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace GrahamCampbell\ResultType; + +/** + * @template T + * @template E + */ +abstract class Result +{ + /** + * Get the success option value. + * + * @return \PhpOption\Option + */ + abstract public function success(); + + /** + * Map over the success value. + * + * @template S + * + * @param callable(T):S $f + * + * @return \GrahamCampbell\ResultType\Result + */ + abstract public function map(callable $f); + + /** + * Flat map over the success value. + * + * @template S + * @template F + * + * @param callable(T):\GrahamCampbell\ResultType\Result $f + * + * @return \GrahamCampbell\ResultType\Result + */ + abstract public function flatMap(callable $f); + + /** + * Get the error option value. + * + * @return \PhpOption\Option + */ + abstract public function error(); + + /** + * Map over the error value. + * + * @template F + * + * @param callable(E):F $f + * + * @return \GrahamCampbell\ResultType\Result + */ + abstract public function mapError(callable $f); +} diff --git a/vendor/graham-campbell/result-type/src/Success.php b/vendor/graham-campbell/result-type/src/Success.php new file mode 100644 index 0000000..27cd85e --- /dev/null +++ b/vendor/graham-campbell/result-type/src/Success.php @@ -0,0 +1,120 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace GrahamCampbell\ResultType; + +use PhpOption\None; +use PhpOption\Some; + +/** + * @template T + * @template E + * + * @extends \GrahamCampbell\ResultType\Result + */ +final class Success extends Result +{ + /** + * @var T + */ + private $value; + + /** + * Internal constructor for a success value. + * + * @param T $value + * + * @return void + */ + private function __construct($value) + { + $this->value = $value; + } + + /** + * Create a new error value. + * + * @template S + * + * @param S $value + * + * @return \GrahamCampbell\ResultType\Result + */ + public static function create($value) + { + return new self($value); + } + + /** + * Get the success option value. + * + * @return \PhpOption\Option + */ + public function success() + { + return Some::create($this->value); + } + + /** + * Map over the success value. + * + * @template S + * + * @param callable(T):S $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function map(callable $f) + { + return self::create($f($this->value)); + } + + /** + * Flat map over the success value. + * + * @template S + * @template F + * + * @param callable(T):\GrahamCampbell\ResultType\Result $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function flatMap(callable $f) + { + return $f($this->value); + } + + /** + * Get the error option value. + * + * @return \PhpOption\Option + */ + public function error() + { + return None::create(); + } + + /** + * Map over the error value. + * + * @template F + * + * @param callable(E):F $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function mapError(callable $f) + { + return self::create($this->value); + } +} diff --git a/vendor/phpoption/phpoption/LICENSE b/vendor/phpoption/phpoption/LICENSE new file mode 100644 index 0000000..f49a4e1 --- /dev/null +++ b/vendor/phpoption/phpoption/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/vendor/phpoption/phpoption/composer.json b/vendor/phpoption/phpoption/composer.json new file mode 100644 index 0000000..c077040 --- /dev/null +++ b/vendor/phpoption/phpoption/composer.json @@ -0,0 +1,50 @@ +{ + "name": "phpoption/phpoption", + "description": "Option Type for PHP", + "keywords": ["php", "option", "language", "type"], + "license": "Apache-2.0", + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "autoload-dev": { + "psr-4": { + "PhpOption\\Tests\\": "tests/PhpOption/Tests/" + } + }, + "config": { + "allow-plugins": { + "bamarni/composer-bin-plugin": true + }, + "preferred-install": "dist" + }, + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + } +} diff --git a/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php b/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php new file mode 100644 index 0000000..9cb77c8 --- /dev/null +++ b/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php @@ -0,0 +1,175 @@ + + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +namespace PhpOption; + +use Traversable; + +/** + * @template T + * + * @extends Option + */ +final class LazyOption extends Option +{ + /** @var callable(mixed...):(Option) */ + private $callback; + + /** @var array */ + private $arguments; + + /** @var Option|null */ + private $option; + + /** + * @template S + * @param callable(mixed...):(Option) $callback + * @param array $arguments + * + * @return LazyOption + */ + public static function create($callback, array $arguments = []): self + { + return new self($callback, $arguments); + } + + /** + * @param callable(mixed...):(Option) $callback + * @param array $arguments + */ + public function __construct($callback, array $arguments = []) + { + if (!is_callable($callback)) { + throw new \InvalidArgumentException('Invalid callback given'); + } + + $this->callback = $callback; + $this->arguments = $arguments; + } + + public function isDefined(): bool + { + return $this->option()->isDefined(); + } + + public function isEmpty(): bool + { + return $this->option()->isEmpty(); + } + + public function get() + { + return $this->option()->get(); + } + + public function getOrElse($default) + { + return $this->option()->getOrElse($default); + } + + public function getOrCall($callable) + { + return $this->option()->getOrCall($callable); + } + + public function getOrThrow(\Exception $ex) + { + return $this->option()->getOrThrow($ex); + } + + public function orElse(Option $else) + { + return $this->option()->orElse($else); + } + + public function ifDefined($callable) + { + $this->option()->forAll($callable); + } + + public function forAll($callable) + { + return $this->option()->forAll($callable); + } + + public function map($callable) + { + return $this->option()->map($callable); + } + + public function flatMap($callable) + { + return $this->option()->flatMap($callable); + } + + public function filter($callable) + { + return $this->option()->filter($callable); + } + + public function filterNot($callable) + { + return $this->option()->filterNot($callable); + } + + public function select($value) + { + return $this->option()->select($value); + } + + public function reject($value) + { + return $this->option()->reject($value); + } + + /** + * @return Traversable + */ + public function getIterator(): Traversable + { + return $this->option()->getIterator(); + } + + public function foldLeft($initialValue, $callable) + { + return $this->option()->foldLeft($initialValue, $callable); + } + + public function foldRight($initialValue, $callable) + { + return $this->option()->foldRight($initialValue, $callable); + } + + /** + * @return Option + */ + private function option(): Option + { + if (null === $this->option) { + /** @var mixed */ + $option = call_user_func_array($this->callback, $this->arguments); + if ($option instanceof Option) { + $this->option = $option; + } else { + throw new \RuntimeException(sprintf('Expected instance of %s', Option::class)); + } + } + + return $this->option; + } +} diff --git a/vendor/phpoption/phpoption/src/PhpOption/None.php b/vendor/phpoption/phpoption/src/PhpOption/None.php new file mode 100644 index 0000000..4b85d22 --- /dev/null +++ b/vendor/phpoption/phpoption/src/PhpOption/None.php @@ -0,0 +1,136 @@ + + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +namespace PhpOption; + +use EmptyIterator; + +/** + * @extends Option + */ +final class None extends Option +{ + /** @var None|null */ + private static $instance; + + /** + * @return None + */ + public static function create(): self + { + if (null === self::$instance) { + self::$instance = new self(); + } + + return self::$instance; + } + + public function get() + { + throw new \RuntimeException('None has no value.'); + } + + public function getOrCall($callable) + { + return $callable(); + } + + public function getOrElse($default) + { + return $default; + } + + public function getOrThrow(\Exception $ex) + { + throw $ex; + } + + public function isEmpty(): bool + { + return true; + } + + public function isDefined(): bool + { + return false; + } + + public function orElse(Option $else) + { + return $else; + } + + public function ifDefined($callable) + { + // Just do nothing in that case. + } + + public function forAll($callable) + { + return $this; + } + + public function map($callable) + { + return $this; + } + + public function flatMap($callable) + { + return $this; + } + + public function filter($callable) + { + return $this; + } + + public function filterNot($callable) + { + return $this; + } + + public function select($value) + { + return $this; + } + + public function reject($value) + { + return $this; + } + + public function getIterator(): EmptyIterator + { + return new EmptyIterator(); + } + + public function foldLeft($initialValue, $callable) + { + return $initialValue; + } + + public function foldRight($initialValue, $callable) + { + return $initialValue; + } + + private function __construct() + { + } +} diff --git a/vendor/phpoption/phpoption/src/PhpOption/Option.php b/vendor/phpoption/phpoption/src/PhpOption/Option.php new file mode 100644 index 0000000..91fab9c --- /dev/null +++ b/vendor/phpoption/phpoption/src/PhpOption/Option.php @@ -0,0 +1,434 @@ + + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +namespace PhpOption; + +use ArrayAccess; +use IteratorAggregate; + +/** + * @template T + * + * @implements IteratorAggregate + */ +abstract class Option implements IteratorAggregate +{ + /** + * Creates an option given a return value. + * + * This is intended for consuming existing APIs and allows you to easily + * convert them to an option. By default, we treat ``null`` as the None + * case, and everything else as Some. + * + * @template S + * + * @param S $value The actual return value. + * @param S $noneValue The value which should be considered "None"; null by + * default. + * + * @return Option + */ + public static function fromValue($value, $noneValue = null) + { + if ($value === $noneValue) { + return None::create(); + } + + return new Some($value); + } + + /** + * Creates an option from an array's value. + * + * If the key does not exist in the array, the array is not actually an + * array, or the array's value at the given key is null, None is returned. + * Otherwise, Some is returned wrapping the value at the given key. + * + * @template S + * + * @param array|ArrayAccess|null $array A potential array or \ArrayAccess value. + * @param string|int|null $key The key to check. + * + * @return Option + */ + public static function fromArraysValue($array, $key) + { + if ($key === null || !(is_array($array) || $array instanceof ArrayAccess) || !isset($array[$key])) { + return None::create(); + } + + return new Some($array[$key]); + } + + /** + * Creates a lazy-option with the given callback. + * + * This is also a helper constructor for lazy-consuming existing APIs where + * the return value is not yet an option. By default, we treat ``null`` as + * None case, and everything else as Some. + * + * @template S + * + * @param callable $callback The callback to evaluate. + * @param array $arguments The arguments for the callback. + * @param S $noneValue The value which should be considered "None"; + * null by default. + * + * @return LazyOption + */ + public static function fromReturn($callback, array $arguments = [], $noneValue = null) + { + return new LazyOption(static function () use ($callback, $arguments, $noneValue) { + /** @var mixed */ + $return = call_user_func_array($callback, $arguments); + + if ($return === $noneValue) { + return None::create(); + } + + return new Some($return); + }); + } + + /** + * Option factory, which creates new option based on passed value. + * + * If value is already an option, it simply returns. If value is callable, + * LazyOption with passed callback created and returned. If Option + * returned from callback, it returns directly. On other case value passed + * to Option::fromValue() method. + * + * @template S + * + * @param Option|callable|S $value + * @param S $noneValue Used when $value is mixed or + * callable, for None-check. + * + * @return Option|LazyOption + */ + public static function ensure($value, $noneValue = null) + { + if ($value instanceof self) { + return $value; + } elseif (is_callable($value)) { + return new LazyOption(static function () use ($value, $noneValue) { + /** @var mixed */ + $return = $value(); + + if ($return instanceof self) { + return $return; + } else { + return self::fromValue($return, $noneValue); + } + }); + } else { + return self::fromValue($value, $noneValue); + } + } + + /** + * Lift a function so that it accepts Option as parameters. + * + * We return a new closure that wraps the original callback. If any of the + * parameters passed to the lifted function is empty, the function will + * return a value of None. Otherwise, we will pass all parameters to the + * original callback and return the value inside a new Option, unless an + * Option is returned from the function, in which case, we use that. + * + * @template S + * + * @param callable $callback + * @param mixed $noneValue + * + * @return callable + */ + public static function lift($callback, $noneValue = null) + { + return static function () use ($callback, $noneValue) { + /** @var array */ + $args = func_get_args(); + + $reduced_args = array_reduce( + $args, + /** @param bool $status */ + static function ($status, self $o) { + return $o->isEmpty() ? true : $status; + }, + false + ); + // if at least one parameter is empty, return None + if ($reduced_args) { + return None::create(); + } + + $args = array_map( + /** @return T */ + static function (self $o) { + // it is safe to do so because the fold above checked + // that all arguments are of type Some + /** @var T */ + return $o->get(); + }, + $args + ); + + return self::ensure(call_user_func_array($callback, $args), $noneValue); + }; + } + + /** + * Returns the value if available, or throws an exception otherwise. + * + * @throws \RuntimeException If value is not available. + * + * @return T + */ + abstract public function get(); + + /** + * Returns the value if available, or the default value if not. + * + * @template S + * + * @param S $default + * + * @return T|S + */ + abstract public function getOrElse($default); + + /** + * Returns the value if available, or the results of the callable. + * + * This is preferable over ``getOrElse`` if the computation of the default + * value is expensive. + * + * @template S + * + * @param callable():S $callable + * + * @return T|S + */ + abstract public function getOrCall($callable); + + /** + * Returns the value if available, or throws the passed exception. + * + * @param \Exception $ex + * + * @return T + */ + abstract public function getOrThrow(\Exception $ex); + + /** + * Returns true if no value is available, false otherwise. + * + * @return bool + */ + abstract public function isEmpty(); + + /** + * Returns true if a value is available, false otherwise. + * + * @return bool + */ + abstract public function isDefined(); + + /** + * Returns this option if non-empty, or the passed option otherwise. + * + * This can be used to try multiple alternatives, and is especially useful + * with lazy evaluating options: + * + * ```php + * $repo->findSomething() + * ->orElse(new LazyOption(array($repo, 'findSomethingElse'))) + * ->orElse(new LazyOption(array($repo, 'createSomething'))); + * ``` + * + * @param Option $else + * + * @return Option + */ + abstract public function orElse(self $else); + + /** + * This is similar to map() below except that the return value has no meaning; + * the passed callable is simply executed if the option is non-empty, and + * ignored if the option is empty. + * + * In all cases, the return value of the callable is discarded. + * + * ```php + * $comment->getMaybeFile()->ifDefined(function($file) { + * // Do something with $file here. + * }); + * ``` + * + * If you're looking for something like ``ifEmpty``, you can use ``getOrCall`` + * and ``getOrElse`` in these cases. + * + * @deprecated Use forAll() instead. + * + * @param callable(T):mixed $callable + * + * @return void + */ + abstract public function ifDefined($callable); + + /** + * This is similar to map() except that the return value of the callable has no meaning. + * + * The passed callable is simply executed if the option is non-empty, and ignored if the + * option is empty. This method is preferred for callables with side-effects, while map() + * is intended for callables without side-effects. + * + * @param callable(T):mixed $callable + * + * @return Option + */ + abstract public function forAll($callable); + + /** + * Applies the callable to the value of the option if it is non-empty, + * and returns the return value of the callable wrapped in Some(). + * + * If the option is empty, then the callable is not applied. + * + * ```php + * (new Some("foo"))->map('strtoupper')->get(); // "FOO" + * ``` + * + * @template S + * + * @param callable(T):S $callable + * + * @return Option + */ + abstract public function map($callable); + + /** + * Applies the callable to the value of the option if it is non-empty, and + * returns the return value of the callable directly. + * + * In contrast to ``map``, the return value of the callable is expected to + * be an Option itself; it is not automatically wrapped in Some(). + * + * @template S + * + * @param callable(T):Option $callable must return an Option + * + * @return Option + */ + abstract public function flatMap($callable); + + /** + * If the option is empty, it is returned immediately without applying the callable. + * + * If the option is non-empty, the callable is applied, and if it returns true, + * the option itself is returned; otherwise, None is returned. + * + * @param callable(T):bool $callable + * + * @return Option + */ + abstract public function filter($callable); + + /** + * If the option is empty, it is returned immediately without applying the callable. + * + * If the option is non-empty, the callable is applied, and if it returns false, + * the option itself is returned; otherwise, None is returned. + * + * @param callable(T):bool $callable + * + * @return Option + */ + abstract public function filterNot($callable); + + /** + * If the option is empty, it is returned immediately. + * + * If the option is non-empty, and its value does not equal the passed value + * (via a shallow comparison ===), then None is returned. Otherwise, the + * Option is returned. + * + * In other words, this will filter all but the passed value. + * + * @param T $value + * + * @return Option + */ + abstract public function select($value); + + /** + * If the option is empty, it is returned immediately. + * + * If the option is non-empty, and its value does equal the passed value (via + * a shallow comparison ===), then None is returned; otherwise, the Option is + * returned. + * + * In other words, this will let all values through except the passed value. + * + * @param T $value + * + * @return Option + */ + abstract public function reject($value); + + /** + * Binary operator for the initial value and the option's value. + * + * If empty, the initial value is returned. If non-empty, the callable + * receives the initial value and the option's value as arguments. + * + * ```php + * + * $some = new Some(5); + * $none = None::create(); + * $result = $some->foldLeft(1, function($a, $b) { return $a + $b; }); // int(6) + * $result = $none->foldLeft(1, function($a, $b) { return $a + $b; }); // int(1) + * + * // This can be used instead of something like the following: + * $option = Option::fromValue($integerOrNull); + * $result = 1; + * if ( ! $option->isEmpty()) { + * $result += $option->get(); + * } + * ``` + * + * @template S + * + * @param S $initialValue + * @param callable(S, T):S $callable + * + * @return S + */ + abstract public function foldLeft($initialValue, $callable); + + /** + * foldLeft() but with reversed arguments for the callable. + * + * @template S + * + * @param S $initialValue + * @param callable(T, S):S $callable + * + * @return S + */ + abstract public function foldRight($initialValue, $callable); +} diff --git a/vendor/phpoption/phpoption/src/PhpOption/Some.php b/vendor/phpoption/phpoption/src/PhpOption/Some.php new file mode 100644 index 0000000..032632e --- /dev/null +++ b/vendor/phpoption/phpoption/src/PhpOption/Some.php @@ -0,0 +1,169 @@ + + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +namespace PhpOption; + +use ArrayIterator; + +/** + * @template T + * + * @extends Option + */ +final class Some extends Option +{ + /** @var T */ + private $value; + + /** + * @param T $value + */ + public function __construct($value) + { + $this->value = $value; + } + + /** + * @template U + * + * @param U $value + * + * @return Some + */ + public static function create($value): self + { + return new self($value); + } + + public function isDefined(): bool + { + return true; + } + + public function isEmpty(): bool + { + return false; + } + + public function get() + { + return $this->value; + } + + public function getOrElse($default) + { + return $this->value; + } + + public function getOrCall($callable) + { + return $this->value; + } + + public function getOrThrow(\Exception $ex) + { + return $this->value; + } + + public function orElse(Option $else) + { + return $this; + } + + public function ifDefined($callable) + { + $this->forAll($callable); + } + + public function forAll($callable) + { + $callable($this->value); + + return $this; + } + + public function map($callable) + { + return new self($callable($this->value)); + } + + public function flatMap($callable) + { + /** @var mixed */ + $rs = $callable($this->value); + if (!$rs instanceof Option) { + throw new \RuntimeException('Callables passed to flatMap() must return an Option. Maybe you should use map() instead?'); + } + + return $rs; + } + + public function filter($callable) + { + if (true === $callable($this->value)) { + return $this; + } + + return None::create(); + } + + public function filterNot($callable) + { + if (false === $callable($this->value)) { + return $this; + } + + return None::create(); + } + + public function select($value) + { + if ($this->value === $value) { + return $this; + } + + return None::create(); + } + + public function reject($value) + { + if ($this->value === $value) { + return None::create(); + } + + return $this; + } + + /** + * @return ArrayIterator + */ + public function getIterator(): ArrayIterator + { + return new ArrayIterator([$this->value]); + } + + public function foldLeft($initialValue, $callable) + { + return $callable($initialValue, $this->value); + } + + public function foldRight($initialValue, $callable) + { + return $callable($this->value, $initialValue); + } +} diff --git a/vendor/symfony/polyfill-ctype/Ctype.php b/vendor/symfony/polyfill-ctype/Ctype.php new file mode 100644 index 0000000..ba75a2c --- /dev/null +++ b/vendor/symfony/polyfill-ctype/Ctype.php @@ -0,0 +1,232 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Ctype; + +/** + * Ctype implementation through regex. + * + * @internal + * + * @author Gert de Pagter + */ +final class Ctype +{ + /** + * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. + * + * @see https://php.net/ctype-alnum + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_alnum($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is a letter, FALSE otherwise. + * + * @see https://php.net/ctype-alpha + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_alpha($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text); + } + + /** + * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise. + * + * @see https://php.net/ctype-cntrl + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_cntrl($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text); + } + + /** + * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise. + * + * @see https://php.net/ctype-digit + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_digit($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise. + * + * @see https://php.net/ctype-graph + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_graph($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text); + } + + /** + * Returns TRUE if every character in text is a lowercase letter. + * + * @see https://php.net/ctype-lower + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_lower($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text); + } + + /** + * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all. + * + * @see https://php.net/ctype-print + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_print($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text); + } + + /** + * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise. + * + * @see https://php.net/ctype-punct + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_punct($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text); + } + + /** + * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters. + * + * @see https://php.net/ctype-space + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_space($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text); + } + + /** + * Returns TRUE if every character in text is an uppercase letter. + * + * @see https://php.net/ctype-upper + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_upper($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text); + } + + /** + * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise. + * + * @see https://php.net/ctype-xdigit + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_xdigit($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text); + } + + /** + * Converts integers to their char versions according to normal ctype behaviour, if needed. + * + * If an integer between -128 and 255 inclusive is provided, + * it is interpreted as the ASCII value of a single character + * (negative values have 256 added in order to allow characters in the Extended ASCII range). + * Any other integer is interpreted as a string containing the decimal digits of the integer. + * + * @param mixed $int + * @param string $function + * + * @return mixed + */ + private static function convert_int_to_char_for_ctype($int, $function) + { + if (!\is_int($int)) { + return $int; + } + + if ($int < -128 || $int > 255) { + return (string) $int; + } + + if (\PHP_VERSION_ID >= 80100) { + @trigger_error($function.'(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED); + } + + if ($int < 0) { + $int += 256; + } + + return \chr($int); + } +} diff --git a/vendor/symfony/polyfill-ctype/LICENSE b/vendor/symfony/polyfill-ctype/LICENSE new file mode 100644 index 0000000..7536cae --- /dev/null +++ b/vendor/symfony/polyfill-ctype/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2018-present Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/symfony/polyfill-ctype/README.md b/vendor/symfony/polyfill-ctype/README.md new file mode 100644 index 0000000..b144d03 --- /dev/null +++ b/vendor/symfony/polyfill-ctype/README.md @@ -0,0 +1,12 @@ +Symfony Polyfill / Ctype +======================== + +This component provides `ctype_*` functions to users who run php versions without the ctype extension. + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-ctype/bootstrap.php b/vendor/symfony/polyfill-ctype/bootstrap.php new file mode 100644 index 0000000..d54524b --- /dev/null +++ b/vendor/symfony/polyfill-ctype/bootstrap.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Ctype as p; + +if (\PHP_VERSION_ID >= 80000) { + return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('ctype_alnum')) { + function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { + function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { + function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { + function ctype_digit($text) { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { + function ctype_graph($text) { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { + function ctype_lower($text) { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { + function ctype_print($text) { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { + function ctype_punct($text) { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { + function ctype_space($text) { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { + function ctype_upper($text) { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { + function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } +} diff --git a/vendor/symfony/polyfill-ctype/bootstrap80.php b/vendor/symfony/polyfill-ctype/bootstrap80.php new file mode 100644 index 0000000..ab2f861 --- /dev/null +++ b/vendor/symfony/polyfill-ctype/bootstrap80.php @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Ctype as p; + +if (!function_exists('ctype_alnum')) { + function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { + function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { + function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { + function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { + function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { + function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { + function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { + function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { + function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { + function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { + function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); } +} diff --git a/vendor/symfony/polyfill-ctype/composer.json b/vendor/symfony/polyfill-ctype/composer.json new file mode 100644 index 0000000..131ca7a --- /dev/null +++ b/vendor/symfony/polyfill-ctype/composer.json @@ -0,0 +1,38 @@ +{ + "name": "symfony/polyfill-ctype", + "type": "library", + "description": "Symfony polyfill for ctype functions", + "keywords": ["polyfill", "compatibility", "portable", "ctype"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/vendor/symfony/polyfill-php80/LICENSE b/vendor/symfony/polyfill-php80/LICENSE new file mode 100644 index 0000000..0ed3a24 --- /dev/null +++ b/vendor/symfony/polyfill-php80/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2020-present Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/symfony/polyfill-php80/Php80.php b/vendor/symfony/polyfill-php80/Php80.php new file mode 100644 index 0000000..362dd1a --- /dev/null +++ b/vendor/symfony/polyfill-php80/Php80.php @@ -0,0 +1,115 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Php80; + +/** + * @author Ion Bazan + * @author Nico Oelgart + * @author Nicolas Grekas + * + * @internal + */ +final class Php80 +{ + public static function fdiv(float $dividend, float $divisor): float + { + return @($dividend / $divisor); + } + + public static function get_debug_type($value): string + { + switch (true) { + case null === $value: return 'null'; + case \is_bool($value): return 'bool'; + case \is_string($value): return 'string'; + case \is_array($value): return 'array'; + case \is_int($value): return 'int'; + case \is_float($value): return 'float'; + case \is_object($value): break; + case $value instanceof \__PHP_Incomplete_Class: return '__PHP_Incomplete_Class'; + default: + if (null === $type = @get_resource_type($value)) { + return 'unknown'; + } + + if ('Unknown' === $type) { + $type = 'closed'; + } + + return "resource ($type)"; + } + + $class = \get_class($value); + + if (false === strpos($class, '@')) { + return $class; + } + + return (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous'; + } + + public static function get_resource_id($res): int + { + if (!\is_resource($res) && null === @get_resource_type($res)) { + throw new \TypeError(sprintf('Argument 1 passed to get_resource_id() must be of the type resource, %s given', get_debug_type($res))); + } + + return (int) $res; + } + + public static function preg_last_error_msg(): string + { + switch (preg_last_error()) { + case \PREG_INTERNAL_ERROR: + return 'Internal error'; + case \PREG_BAD_UTF8_ERROR: + return 'Malformed UTF-8 characters, possibly incorrectly encoded'; + case \PREG_BAD_UTF8_OFFSET_ERROR: + return 'The offset did not correspond to the beginning of a valid UTF-8 code point'; + case \PREG_BACKTRACK_LIMIT_ERROR: + return 'Backtrack limit exhausted'; + case \PREG_RECURSION_LIMIT_ERROR: + return 'Recursion limit exhausted'; + case \PREG_JIT_STACKLIMIT_ERROR: + return 'JIT stack limit exhausted'; + case \PREG_NO_ERROR: + return 'No error'; + default: + return 'Unknown error'; + } + } + + public static function str_contains(string $haystack, string $needle): bool + { + return '' === $needle || false !== strpos($haystack, $needle); + } + + public static function str_starts_with(string $haystack, string $needle): bool + { + return 0 === strncmp($haystack, $needle, \strlen($needle)); + } + + public static function str_ends_with(string $haystack, string $needle): bool + { + if ('' === $needle || $needle === $haystack) { + return true; + } + + if ('' === $haystack) { + return false; + } + + $needleLength = \strlen($needle); + + return $needleLength <= \strlen($haystack) && 0 === substr_compare($haystack, $needle, -$needleLength); + } +} diff --git a/vendor/symfony/polyfill-php80/PhpToken.php b/vendor/symfony/polyfill-php80/PhpToken.php new file mode 100644 index 0000000..cd78c4c --- /dev/null +++ b/vendor/symfony/polyfill-php80/PhpToken.php @@ -0,0 +1,106 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Php80; + +/** + * @author Fedonyuk Anton + * + * @internal + */ +class PhpToken implements \Stringable +{ + /** + * @var int + */ + public $id; + + /** + * @var string + */ + public $text; + + /** + * @var -1|positive-int + */ + public $line; + + /** + * @var int + */ + public $pos; + + /** + * @param -1|positive-int $line + */ + public function __construct(int $id, string $text, int $line = -1, int $position = -1) + { + $this->id = $id; + $this->text = $text; + $this->line = $line; + $this->pos = $position; + } + + public function getTokenName(): ?string + { + if ('UNKNOWN' === $name = token_name($this->id)) { + $name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text; + } + + return $name; + } + + /** + * @param int|string|array $kind + */ + public function is($kind): bool + { + foreach ((array) $kind as $value) { + if (\in_array($value, [$this->id, $this->text], true)) { + return true; + } + } + + return false; + } + + public function isIgnorable(): bool + { + return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true); + } + + public function __toString(): string + { + return (string) $this->text; + } + + /** + * @return list + */ + public static function tokenize(string $code, int $flags = 0): array + { + $line = 1; + $position = 0; + $tokens = token_get_all($code, $flags); + foreach ($tokens as $index => $token) { + if (\is_string($token)) { + $id = \ord($token); + $text = $token; + } else { + [$id, $text, $line] = $token; + } + $tokens[$index] = new static($id, $text, $line, $position); + $position += \strlen($text); + } + + return $tokens; + } +} diff --git a/vendor/symfony/polyfill-php80/README.md b/vendor/symfony/polyfill-php80/README.md new file mode 100644 index 0000000..3816c55 --- /dev/null +++ b/vendor/symfony/polyfill-php80/README.md @@ -0,0 +1,25 @@ +Symfony Polyfill / Php80 +======================== + +This component provides features added to PHP 8.0 core: + +- [`Stringable`](https://php.net/stringable) interface +- [`fdiv`](https://php.net/fdiv) +- [`ValueError`](https://php.net/valueerror) class +- [`UnhandledMatchError`](https://php.net/unhandledmatcherror) class +- `FILTER_VALIDATE_BOOL` constant +- [`get_debug_type`](https://php.net/get_debug_type) +- [`PhpToken`](https://php.net/phptoken) class +- [`preg_last_error_msg`](https://php.net/preg_last_error_msg) +- [`str_contains`](https://php.net/str_contains) +- [`str_starts_with`](https://php.net/str_starts_with) +- [`str_ends_with`](https://php.net/str_ends_with) +- [`get_resource_id`](https://php.net/get_resource_id) + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php b/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php new file mode 100644 index 0000000..2b95542 --- /dev/null +++ b/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#[Attribute(Attribute::TARGET_CLASS)] +final class Attribute +{ + public const TARGET_CLASS = 1; + public const TARGET_FUNCTION = 2; + public const TARGET_METHOD = 4; + public const TARGET_PROPERTY = 8; + public const TARGET_CLASS_CONSTANT = 16; + public const TARGET_PARAMETER = 32; + public const TARGET_ALL = 63; + public const IS_REPEATABLE = 64; + + /** @var int */ + public $flags; + + public function __construct(int $flags = self::TARGET_ALL) + { + $this->flags = $flags; + } +} diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php b/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php new file mode 100644 index 0000000..bd1212f --- /dev/null +++ b/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if (\PHP_VERSION_ID < 80000 && extension_loaded('tokenizer')) { + class PhpToken extends Symfony\Polyfill\Php80\PhpToken + { + } +} diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php b/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php new file mode 100644 index 0000000..7c62d75 --- /dev/null +++ b/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if (\PHP_VERSION_ID < 80000) { + interface Stringable + { + /** + * @return string + */ + public function __toString(); + } +} diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php b/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php new file mode 100644 index 0000000..01c6c6c --- /dev/null +++ b/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if (\PHP_VERSION_ID < 80000) { + class UnhandledMatchError extends Error + { + } +} diff --git a/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php b/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php new file mode 100644 index 0000000..783dbc2 --- /dev/null +++ b/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if (\PHP_VERSION_ID < 80000) { + class ValueError extends Error + { + } +} diff --git a/vendor/symfony/polyfill-php80/bootstrap.php b/vendor/symfony/polyfill-php80/bootstrap.php new file mode 100644 index 0000000..e5f7dbc --- /dev/null +++ b/vendor/symfony/polyfill-php80/bootstrap.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Php80 as p; + +if (\PHP_VERSION_ID >= 80000) { + return; +} + +if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) { + define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN); +} + +if (!function_exists('fdiv')) { + function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); } +} +if (!function_exists('preg_last_error_msg')) { + function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); } +} +if (!function_exists('str_contains')) { + function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('str_starts_with')) { + function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('str_ends_with')) { + function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('get_debug_type')) { + function get_debug_type($value): string { return p\Php80::get_debug_type($value); } +} +if (!function_exists('get_resource_id')) { + function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); } +} diff --git a/vendor/symfony/polyfill-php80/composer.json b/vendor/symfony/polyfill-php80/composer.json new file mode 100644 index 0000000..a503b03 --- /dev/null +++ b/vendor/symfony/polyfill-php80/composer.json @@ -0,0 +1,37 @@ +{ + "name": "symfony/polyfill-php80", + "type": "library", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "keywords": ["polyfill", "shim", "compatibility", "portable"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.2" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, + "files": [ "bootstrap.php" ], + "classmap": [ "Resources/stubs" ] + }, + "minimum-stability": "dev", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/vendor/vlucas/phpdotenv/LICENSE b/vendor/vlucas/phpdotenv/LICENSE new file mode 100644 index 0000000..922c552 --- /dev/null +++ b/vendor/vlucas/phpdotenv/LICENSE @@ -0,0 +1,30 @@ +BSD 3-Clause License + +Copyright (c) 2014, Graham Campbell. +Copyright (c) 2013, Vance Lucas. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/vlucas/phpdotenv/composer.json b/vendor/vlucas/phpdotenv/composer.json new file mode 100644 index 0000000..dbe9794 --- /dev/null +++ b/vendor/vlucas/phpdotenv/composer.json @@ -0,0 +1,60 @@ +{ + "name": "vlucas/phpdotenv", + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": ["env", "dotenv", "environment"], + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "require": { + "php": "^7.2.5 || ^8.0", + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "ext-filter": "*", + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit":"^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Dotenv\\Tests\\": "tests/Dotenv/" + } + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "config": { + "allow-plugins": { + "bamarni/composer-bin-plugin": true + }, + "preferred-install": "dist" + }, + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + } +} diff --git a/vendor/vlucas/phpdotenv/src/Dotenv.php b/vendor/vlucas/phpdotenv/src/Dotenv.php new file mode 100644 index 0000000..34ca850 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Dotenv.php @@ -0,0 +1,267 @@ +store = $store; + $this->parser = $parser; + $this->loader = $loader; + $this->repository = $repository; + } + + /** + * Create a new dotenv instance. + * + * @param \Dotenv\Repository\RepositoryInterface $repository + * @param string|string[] $paths + * @param string|string[]|null $names + * @param bool $shortCircuit + * @param string|null $fileEncoding + * + * @return \Dotenv\Dotenv + */ + public static function create(RepositoryInterface $repository, $paths, $names = null, bool $shortCircuit = true, ?string $fileEncoding = null) + { + $builder = $names === null ? StoreBuilder::createWithDefaultName() : StoreBuilder::createWithNoNames(); + + foreach ((array) $paths as $path) { + $builder = $builder->addPath($path); + } + + foreach ((array) $names as $name) { + $builder = $builder->addName($name); + } + + if ($shortCircuit) { + $builder = $builder->shortCircuit(); + } + + return new self($builder->fileEncoding($fileEncoding)->make(), new Parser(), new Loader(), $repository); + } + + /** + * Create a new mutable dotenv instance with default repository. + * + * @param string|string[] $paths + * @param string|string[]|null $names + * @param bool $shortCircuit + * @param string|null $fileEncoding + * + * @return \Dotenv\Dotenv + */ + public static function createMutable($paths, $names = null, bool $shortCircuit = true, ?string $fileEncoding = null) + { + $repository = RepositoryBuilder::createWithDefaultAdapters()->make(); + + return self::create($repository, $paths, $names, $shortCircuit, $fileEncoding); + } + + /** + * Create a new mutable dotenv instance with default repository with the putenv adapter. + * + * @param string|string[] $paths + * @param string|string[]|null $names + * @param bool $shortCircuit + * @param string|null $fileEncoding + * + * @return \Dotenv\Dotenv + */ + public static function createUnsafeMutable($paths, $names = null, bool $shortCircuit = true, ?string $fileEncoding = null) + { + $repository = RepositoryBuilder::createWithDefaultAdapters() + ->addAdapter(PutenvAdapter::class) + ->make(); + + return self::create($repository, $paths, $names, $shortCircuit, $fileEncoding); + } + + /** + * Create a new immutable dotenv instance with default repository. + * + * @param string|string[] $paths + * @param string|string[]|null $names + * @param bool $shortCircuit + * @param string|null $fileEncoding + * + * @return \Dotenv\Dotenv + */ + public static function createImmutable($paths, $names = null, bool $shortCircuit = true, ?string $fileEncoding = null) + { + $repository = RepositoryBuilder::createWithDefaultAdapters()->immutable()->make(); + + return self::create($repository, $paths, $names, $shortCircuit, $fileEncoding); + } + + /** + * Create a new immutable dotenv instance with default repository with the putenv adapter. + * + * @param string|string[] $paths + * @param string|string[]|null $names + * @param bool $shortCircuit + * @param string|null $fileEncoding + * + * @return \Dotenv\Dotenv + */ + public static function createUnsafeImmutable($paths, $names = null, bool $shortCircuit = true, ?string $fileEncoding = null) + { + $repository = RepositoryBuilder::createWithDefaultAdapters() + ->addAdapter(PutenvAdapter::class) + ->immutable() + ->make(); + + return self::create($repository, $paths, $names, $shortCircuit, $fileEncoding); + } + + /** + * Create a new dotenv instance with an array backed repository. + * + * @param string|string[] $paths + * @param string|string[]|null $names + * @param bool $shortCircuit + * @param string|null $fileEncoding + * + * @return \Dotenv\Dotenv + */ + public static function createArrayBacked($paths, $names = null, bool $shortCircuit = true, ?string $fileEncoding = null) + { + $repository = RepositoryBuilder::createWithNoAdapters()->addAdapter(ArrayAdapter::class)->make(); + + return self::create($repository, $paths, $names, $shortCircuit, $fileEncoding); + } + + /** + * Parse the given content and resolve nested variables. + * + * This method behaves just like load(), only without mutating your actual + * environment. We do this by using an array backed repository. + * + * @param string $content + * + * @throws \Dotenv\Exception\InvalidFileException + * + * @return array + */ + public static function parse(string $content) + { + $repository = RepositoryBuilder::createWithNoAdapters()->addAdapter(ArrayAdapter::class)->make(); + + $phpdotenv = new self(new StringStore($content), new Parser(), new Loader(), $repository); + + return $phpdotenv->load(); + } + + /** + * Read and load environment file(s). + * + * @throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidEncodingException|\Dotenv\Exception\InvalidFileException + * + * @return array + */ + public function load() + { + $entries = $this->parser->parse($this->store->read()); + + return $this->loader->load($this->repository, $entries); + } + + /** + * Read and load environment file(s), silently failing if no files can be read. + * + * @throws \Dotenv\Exception\InvalidEncodingException|\Dotenv\Exception\InvalidFileException + * + * @return array + */ + public function safeLoad() + { + try { + return $this->load(); + } catch (InvalidPathException $e) { + // suppressing exception + return []; + } + } + + /** + * Required ensures that the specified variables exist, and returns a new validator object. + * + * @param string|string[] $variables + * + * @return \Dotenv\Validator + */ + public function required($variables) + { + return (new Validator($this->repository, (array) $variables))->required(); + } + + /** + * Returns a new validator object that won't check if the specified variables exist. + * + * @param string|string[] $variables + * + * @return \Dotenv\Validator + */ + public function ifPresent($variables) + { + return new Validator($this->repository, (array) $variables); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php b/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php new file mode 100644 index 0000000..1e80f53 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php @@ -0,0 +1,12 @@ + + */ + public function load(RepositoryInterface $repository, array $entries) + { + /** @var array */ + return \array_reduce($entries, static function (array $vars, Entry $entry) use ($repository) { + $name = $entry->getName(); + + $value = $entry->getValue()->map(static function (Value $value) use ($repository) { + return Resolver::resolve($repository, $value); + }); + + if ($value->isDefined()) { + $inner = $value->get(); + if ($repository->set($name, $inner)) { + return \array_merge($vars, [$name => $inner]); + } + } else { + if ($repository->clear($name)) { + return \array_merge($vars, [$name => null]); + } + } + + return $vars; + }, []); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php b/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php new file mode 100644 index 0000000..f40d6ad --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php @@ -0,0 +1,20 @@ + + */ + public function load(RepositoryInterface $repository, array $entries); +} diff --git a/vendor/vlucas/phpdotenv/src/Loader/Resolver.php b/vendor/vlucas/phpdotenv/src/Loader/Resolver.php new file mode 100644 index 0000000..ab5adf8 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Loader/Resolver.php @@ -0,0 +1,65 @@ +getVars(), static function (string $s, int $i) use ($repository) { + return Str::substr($s, 0, $i).self::resolveVariable($repository, Str::substr($s, $i)); + }, $value->getChars()); + } + + /** + * Resolve a single nested variable. + * + * @param \Dotenv\Repository\RepositoryInterface $repository + * @param string $str + * + * @return string + */ + private static function resolveVariable(RepositoryInterface $repository, string $str) + { + return Regex::replaceCallback( + '/\A\${([a-zA-Z0-9_.]+)}/', + static function (array $matches) use ($repository) { + /** @var string */ + return Option::fromValue($repository->get($matches[1]))->getOrElse($matches[0]); + }, + $str, + 1 + )->success()->getOrElse($str); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Parser/Entry.php b/vendor/vlucas/phpdotenv/src/Parser/Entry.php new file mode 100644 index 0000000..716f422 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Parser/Entry.php @@ -0,0 +1,59 @@ +name = $name; + $this->value = $value; + } + + /** + * Get the entry name. + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Get the entry value. + * + * @return \PhpOption\Option<\Dotenv\Parser\Value> + */ + public function getValue() + { + /** @var \PhpOption\Option<\Dotenv\Parser\Value> */ + return Option::fromValue($this->value); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php b/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php new file mode 100644 index 0000000..d2bd7b4 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php @@ -0,0 +1,299 @@ + + */ + public static function parse(string $entry) + { + return self::splitStringIntoParts($entry)->flatMap(static function (array $parts) { + [$name, $value] = $parts; + + return self::parseName($name)->flatMap(static function (string $name) use ($value) { + /** @var Result */ + $parsedValue = $value === null ? Success::create(null) : self::parseValue($value); + + return $parsedValue->map(static function (?Value $value) use ($name) { + return new Entry($name, $value); + }); + }); + }); + } + + /** + * Split the compound string into parts. + * + * @param string $line + * + * @return \GrahamCampbell\ResultType\Result + */ + private static function splitStringIntoParts(string $line) + { + /** @var array{string, string|null} */ + $result = Str::pos($line, '=')->map(static function () use ($line) { + return \array_map('trim', \explode('=', $line, 2)); + })->getOrElse([$line, null]); + + if ($result[0] === '') { + /** @var \GrahamCampbell\ResultType\Result */ + return Error::create(self::getErrorMessage('an unexpected equals', $line)); + } + + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create($result); + } + + /** + * Parse the given variable name. + * + * That is, strip the optional quotes and leading "export" from the + * variable name. We wrap the answer in a result type. + * + * @param string $name + * + * @return \GrahamCampbell\ResultType\Result + */ + private static function parseName(string $name) + { + if (Str::len($name) > 8 && Str::substr($name, 0, 6) === 'export' && \ctype_space(Str::substr($name, 6, 1))) { + $name = \ltrim(Str::substr($name, 6)); + } + + if (self::isQuotedName($name)) { + $name = Str::substr($name, 1, -1); + } + + if (!self::isValidName($name)) { + /** @var \GrahamCampbell\ResultType\Result */ + return Error::create(self::getErrorMessage('an invalid name', $name)); + } + + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create($name); + } + + /** + * Is the given variable name quoted? + * + * @param string $name + * + * @return bool + */ + private static function isQuotedName(string $name) + { + if (Str::len($name) < 3) { + return false; + } + + $first = Str::substr($name, 0, 1); + $last = Str::substr($name, -1, 1); + + return ($first === '"' && $last === '"') || ($first === '\'' && $last === '\''); + } + + /** + * Is the given variable name valid? + * + * @param string $name + * + * @return bool + */ + private static function isValidName(string $name) + { + return Regex::matches('~(*UTF8)\A[\p{Ll}\p{Lu}\p{M}\p{N}_.]+\z~', $name)->success()->getOrElse(false); + } + + /** + * Parse the given variable value. + * + * This has the effect of stripping quotes and comments, dealing with + * special characters, and locating nested variables, but not resolving + * them. Formally, we run a finite state automaton with an output tape: a + * transducer. We wrap the answer in a result type. + * + * @param string $value + * + * @return \GrahamCampbell\ResultType\Result<\Dotenv\Parser\Value, string> + */ + private static function parseValue(string $value) + { + if (\trim($value) === '') { + /** @var \GrahamCampbell\ResultType\Result<\Dotenv\Parser\Value, string> */ + return Success::create(Value::blank()); + } + + return \array_reduce(\iterator_to_array(Lexer::lex($value)), static function (Result $data, string $token) { + return $data->flatMap(static function (array $data) use ($token) { + return self::processToken($data[1], $token)->map(static function (array $val) use ($data) { + return [$data[0]->append($val[0], $val[1]), $val[2]]; + }); + }); + }, Success::create([Value::blank(), self::INITIAL_STATE]))->flatMap(static function (array $result) { + if (in_array($result[1], self::REJECT_STATES, true)) { + /** @var \GrahamCampbell\ResultType\Result<\Dotenv\Parser\Value, string> */ + return Error::create('a missing closing quote'); + } + + /** @var \GrahamCampbell\ResultType\Result<\Dotenv\Parser\Value, string> */ + return Success::create($result[0]); + })->mapError(static function (string $err) use ($value) { + return self::getErrorMessage($err, $value); + }); + } + + /** + * Process the given token. + * + * @param int $state + * @param string $token + * + * @return \GrahamCampbell\ResultType\Result + */ + private static function processToken(int $state, string $token) + { + switch ($state) { + case self::INITIAL_STATE: + if ($token === '\'') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::SINGLE_QUOTED_STATE]); + } elseif ($token === '"') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::DOUBLE_QUOTED_STATE]); + } elseif ($token === '#') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::COMMENT_STATE]); + } elseif ($token === '$') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, true, self::UNQUOTED_STATE]); + } else { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, false, self::UNQUOTED_STATE]); + } + case self::UNQUOTED_STATE: + if ($token === '#') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::COMMENT_STATE]); + } elseif (\ctype_space($token)) { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::WHITESPACE_STATE]); + } elseif ($token === '$') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, true, self::UNQUOTED_STATE]); + } else { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, false, self::UNQUOTED_STATE]); + } + case self::SINGLE_QUOTED_STATE: + if ($token === '\'') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::WHITESPACE_STATE]); + } else { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, false, self::SINGLE_QUOTED_STATE]); + } + case self::DOUBLE_QUOTED_STATE: + if ($token === '"') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::WHITESPACE_STATE]); + } elseif ($token === '\\') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::ESCAPE_SEQUENCE_STATE]); + } elseif ($token === '$') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, true, self::DOUBLE_QUOTED_STATE]); + } else { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, false, self::DOUBLE_QUOTED_STATE]); + } + case self::ESCAPE_SEQUENCE_STATE: + if ($token === '"' || $token === '\\') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, false, self::DOUBLE_QUOTED_STATE]); + } elseif ($token === '$') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([$token, false, self::DOUBLE_QUOTED_STATE]); + } else { + $first = Str::substr($token, 0, 1); + if (\in_array($first, ['f', 'n', 'r', 't', 'v'], true)) { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create([\stripcslashes('\\'.$first).Str::substr($token, 1), false, self::DOUBLE_QUOTED_STATE]); + } else { + /** @var \GrahamCampbell\ResultType\Result */ + return Error::create('an unexpected escape sequence'); + } + } + case self::WHITESPACE_STATE: + if ($token === '#') { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::COMMENT_STATE]); + } elseif (!\ctype_space($token)) { + /** @var \GrahamCampbell\ResultType\Result */ + return Error::create('unexpected whitespace'); + } else { + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::WHITESPACE_STATE]); + } + case self::COMMENT_STATE: + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create(['', false, self::COMMENT_STATE]); + default: + throw new \Error('Parser entered invalid state.'); + } + } + + /** + * Generate a friendly error message. + * + * @param string $cause + * @param string $subject + * + * @return string + */ + private static function getErrorMessage(string $cause, string $subject) + { + return \sprintf( + 'Encountered %s at [%s].', + $cause, + \strtok($subject, "\n") + ); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Parser/Lexer.php b/vendor/vlucas/phpdotenv/src/Parser/Lexer.php new file mode 100644 index 0000000..981af24 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Parser/Lexer.php @@ -0,0 +1,58 @@ + + */ + public static function lex(string $content) + { + static $regex; + + if ($regex === null) { + $regex = '(('.\implode(')|(', self::PATTERNS).'))A'; + } + + $offset = 0; + + while (isset($content[$offset])) { + if (!\preg_match($regex, $content, $matches, 0, $offset)) { + throw new \Error(\sprintf('Lexer encountered unexpected character [%s].', $content[$offset])); + } + + $offset += \strlen($matches[0]); + + yield $matches[0]; + } + } +} diff --git a/vendor/vlucas/phpdotenv/src/Parser/Lines.php b/vendor/vlucas/phpdotenv/src/Parser/Lines.php new file mode 100644 index 0000000..b3af160 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Parser/Lines.php @@ -0,0 +1,127 @@ +map(static function () use ($line) { + return self::looksLikeMultilineStop($line, true) === false; + })->getOrElse(false); + } + + /** + * Determine if the given line can be the start of a multiline variable. + * + * @param string $line + * @param bool $started + * + * @return bool + */ + private static function looksLikeMultilineStop(string $line, bool $started) + { + if ($line === '"') { + return true; + } + + return Regex::occurrences('/(?=([^\\\\]"))/', \str_replace('\\\\', '', $line))->map(static function (int $count) use ($started) { + return $started ? $count > 1 : $count >= 1; + })->success()->getOrElse(false); + } + + /** + * Determine if the line in the file is a comment or whitespace. + * + * @param string $line + * + * @return bool + */ + private static function isCommentOrWhitespace(string $line) + { + $line = \trim($line); + + return $line === '' || (isset($line[0]) && $line[0] === '#'); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Parser/Parser.php b/vendor/vlucas/phpdotenv/src/Parser/Parser.php new file mode 100644 index 0000000..bca8ec5 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Parser/Parser.php @@ -0,0 +1,53 @@ +mapError(static function () { + return 'Could not split into separate lines.'; + })->flatMap(static function (array $lines) { + return self::process(Lines::process($lines)); + })->mapError(static function (string $error) { + throw new InvalidFileException(\sprintf('Failed to parse dotenv file. %s', $error)); + })->success()->get(); + } + + /** + * Convert the raw entries into proper entries. + * + * @param string[] $entries + * + * @return \GrahamCampbell\ResultType\Result<\Dotenv\Parser\Entry[], string> + */ + private static function process(array $entries) + { + /** @var \GrahamCampbell\ResultType\Result<\Dotenv\Parser\Entry[], string> */ + return \array_reduce($entries, static function (Result $result, string $raw) { + return $result->flatMap(static function (array $entries) use ($raw) { + return EntryParser::parse($raw)->map(static function (Entry $entry) use ($entries) { + /** @var \Dotenv\Parser\Entry[] */ + return \array_merge($entries, [$entry]); + }); + }); + }, Success::create([])); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php b/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php new file mode 100644 index 0000000..17cc42a --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php @@ -0,0 +1,19 @@ +chars = $chars; + $this->vars = $vars; + } + + /** + * Create an empty value instance. + * + * @return \Dotenv\Parser\Value + */ + public static function blank() + { + return new self('', []); + } + + /** + * Create a new value instance, appending the characters. + * + * @param string $chars + * @param bool $var + * + * @return \Dotenv\Parser\Value + */ + public function append(string $chars, bool $var) + { + return new self( + $this->chars.$chars, + $var ? \array_merge($this->vars, [Str::len($this->chars)]) : $this->vars + ); + } + + /** + * Get the string representation of the parsed value. + * + * @return string + */ + public function getChars() + { + return $this->chars; + } + + /** + * Get the locations of the variables in the value. + * + * @return int[] + */ + public function getVars() + { + $vars = $this->vars; + + \rsort($vars); + + return $vars; + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php new file mode 100644 index 0000000..5604398 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php @@ -0,0 +1,15 @@ + + */ + public static function create(); +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php new file mode 100644 index 0000000..af0aae1 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php @@ -0,0 +1,89 @@ + + */ + public static function create() + { + if (self::isSupported()) { + /** @var \PhpOption\Option */ + return Some::create(new self()); + } + + return None::create(); + } + + /** + * Determines if the adapter is supported. + * + * This happens if PHP is running as an Apache module. + * + * @return bool + */ + private static function isSupported() + { + return \function_exists('apache_getenv') && \function_exists('apache_setenv'); + } + + /** + * Read an environment variable, if it exists. + * + * @param non-empty-string $name + * + * @return \PhpOption\Option + */ + public function read(string $name) + { + /** @var \PhpOption\Option */ + return Option::fromValue(apache_getenv($name))->filter(static function ($value) { + return \is_string($value) && $value !== ''; + }); + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + return apache_setenv($name, $value); + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + return apache_setenv($name, ''); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php new file mode 100644 index 0000000..7c3740d --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php @@ -0,0 +1,80 @@ + + */ + private $variables; + + /** + * Create a new array adapter instance. + * + * @return void + */ + private function __construct() + { + $this->variables = []; + } + + /** + * Create a new instance of the adapter, if it is available. + * + * @return \PhpOption\Option<\Dotenv\Repository\Adapter\AdapterInterface> + */ + public static function create() + { + /** @var \PhpOption\Option */ + return Some::create(new self()); + } + + /** + * Read an environment variable, if it exists. + * + * @param non-empty-string $name + * + * @return \PhpOption\Option + */ + public function read(string $name) + { + return Option::fromArraysValue($this->variables, $name); + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + $this->variables[$name] = $value; + + return true; + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + unset($this->variables[$name]); + + return true; + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php new file mode 100644 index 0000000..6775282 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php @@ -0,0 +1,88 @@ + + */ + public static function create() + { + /** @var \PhpOption\Option */ + return Some::create(new self()); + } + + /** + * Read an environment variable, if it exists. + * + * @param non-empty-string $name + * + * @return \PhpOption\Option + */ + public function read(string $name) + { + /** @var \PhpOption\Option */ + return Option::fromArraysValue($_ENV, $name) + ->filter(static function ($value) { + return \is_scalar($value); + }) + ->map(static function ($value) { + if ($value === false) { + return 'false'; + } + + if ($value === true) { + return 'true'; + } + + return (string) $value; + }); + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + $_ENV[$name] = $value; + + return true; + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + unset($_ENV[$name]); + + return true; + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php new file mode 100644 index 0000000..fed8b9b --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php @@ -0,0 +1,85 @@ +writer = $writer; + $this->allowList = $allowList; + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + // Don't set non-allowed variables + if (!$this->isAllowed($name)) { + return false; + } + + // Set the value on the inner writer + return $this->writer->write($name, $value); + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + // Don't clear non-allowed variables + if (!$this->isAllowed($name)) { + return false; + } + + // Set the value on the inner writer + return $this->writer->delete($name); + } + + /** + * Determine if the given variable is allowed. + * + * @param non-empty-string $name + * + * @return bool + */ + private function isAllowed(string $name) + { + return \in_array($name, $this->allowList, true); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php new file mode 100644 index 0000000..3b279b8 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php @@ -0,0 +1,110 @@ + + */ + private $loaded; + + /** + * Create a new immutable writer instance. + * + * @param \Dotenv\Repository\Adapter\WriterInterface $writer + * @param \Dotenv\Repository\Adapter\ReaderInterface $reader + * + * @return void + */ + public function __construct(WriterInterface $writer, ReaderInterface $reader) + { + $this->writer = $writer; + $this->reader = $reader; + $this->loaded = []; + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + // Don't overwrite existing environment variables + // Ruby's dotenv does this with `ENV[key] ||= value` + if ($this->isExternallyDefined($name)) { + return false; + } + + // Set the value on the inner writer + if (!$this->writer->write($name, $value)) { + return false; + } + + // Record that we have loaded the variable + $this->loaded[$name] = ''; + + return true; + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + // Don't clear existing environment variables + if ($this->isExternallyDefined($name)) { + return false; + } + + // Clear the value on the inner writer + if (!$this->writer->delete($name)) { + return false; + } + + // Leave the variable as fair game + unset($this->loaded[$name]); + + return true; + } + + /** + * Determine if the given variable is externally defined. + * + * That is, is it an "existing" variable. + * + * @param non-empty-string $name + * + * @return bool + */ + private function isExternallyDefined(string $name) + { + return $this->reader->read($name)->isDefined() && !isset($this->loaded[$name]); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php new file mode 100644 index 0000000..0cfda6f --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php @@ -0,0 +1,48 @@ +readers = $readers; + } + + /** + * Read an environment variable, if it exists. + * + * @param non-empty-string $name + * + * @return \PhpOption\Option + */ + public function read(string $name) + { + foreach ($this->readers as $reader) { + $result = $reader->read($name); + if ($result->isDefined()) { + return $result; + } + } + + return None::create(); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php new file mode 100644 index 0000000..15a9d8f --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php @@ -0,0 +1,64 @@ +writers = $writers; + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + foreach ($this->writers as $writers) { + if (!$writers->write($name, $value)) { + return false; + } + } + + return true; + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + foreach ($this->writers as $writers) { + if (!$writers->delete($name)) { + return false; + } + } + + return true; + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php new file mode 100644 index 0000000..6d017cd --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php @@ -0,0 +1,91 @@ + + */ + public static function create() + { + if (self::isSupported()) { + /** @var \PhpOption\Option */ + return Some::create(new self()); + } + + return None::create(); + } + + /** + * Determines if the adapter is supported. + * + * @return bool + */ + private static function isSupported() + { + return \function_exists('getenv') && \function_exists('putenv'); + } + + /** + * Read an environment variable, if it exists. + * + * @param non-empty-string $name + * + * @return \PhpOption\Option + */ + public function read(string $name) + { + /** @var \PhpOption\Option */ + return Option::fromValue(\getenv($name), false)->filter(static function ($value) { + return \is_string($value); + }); + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + \putenv("$name=$value"); + + return true; + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + \putenv($name); + + return true; + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php new file mode 100644 index 0000000..306a63f --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php @@ -0,0 +1,17 @@ + + */ + public function read(string $name); +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php new file mode 100644 index 0000000..4c92a4f --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php @@ -0,0 +1,104 @@ + + */ + private $seen; + + /** + * Create a new replacement writer instance. + * + * @param \Dotenv\Repository\Adapter\WriterInterface $writer + * @param \Dotenv\Repository\Adapter\ReaderInterface $reader + * + * @return void + */ + public function __construct(WriterInterface $writer, ReaderInterface $reader) + { + $this->writer = $writer; + $this->reader = $reader; + $this->seen = []; + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + if ($this->exists($name)) { + return $this->writer->write($name, $value); + } + + // succeed if nothing to do + return true; + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + if ($this->exists($name)) { + return $this->writer->delete($name); + } + + // succeed if nothing to do + return true; + } + + /** + * Does the given environment variable exist. + * + * Returns true if it currently exists, or existed at any point in the past + * that we are aware of. + * + * @param non-empty-string $name + * + * @return bool + */ + private function exists(string $name) + { + if (isset($this->seen[$name])) { + return true; + } + + if ($this->reader->read($name)->isDefined()) { + $this->seen[$name] = ''; + + return true; + } + + return false; + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php new file mode 100644 index 0000000..8fc1d4b --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php @@ -0,0 +1,88 @@ + + */ + public static function create() + { + /** @var \PhpOption\Option */ + return Some::create(new self()); + } + + /** + * Read an environment variable, if it exists. + * + * @param non-empty-string $name + * + * @return \PhpOption\Option + */ + public function read(string $name) + { + /** @var \PhpOption\Option */ + return Option::fromArraysValue($_SERVER, $name) + ->filter(static function ($value) { + return \is_scalar($value); + }) + ->map(static function ($value) { + if ($value === false) { + return 'false'; + } + + if ($value === true) { + return 'true'; + } + + return (string) $value; + }); + } + + /** + * Write to an environment variable, if possible. + * + * @param non-empty-string $name + * @param string $value + * + * @return bool + */ + public function write(string $name, string $value) + { + $_SERVER[$name] = $value; + + return true; + } + + /** + * Delete an environment variable, if possible. + * + * @param non-empty-string $name + * + * @return bool + */ + public function delete(string $name) + { + unset($_SERVER[$name]); + + return true; + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php b/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php new file mode 100644 index 0000000..4cb3d61 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php @@ -0,0 +1,27 @@ +reader = $reader; + $this->writer = $writer; + } + + /** + * Determine if the given environment variable is defined. + * + * @param string $name + * + * @return bool + */ + public function has(string $name) + { + return '' !== $name && $this->reader->read($name)->isDefined(); + } + + /** + * Get an environment variable. + * + * @param string $name + * + * @throws \InvalidArgumentException + * + * @return string|null + */ + public function get(string $name) + { + if ('' === $name) { + throw new InvalidArgumentException('Expected name to be a non-empty string.'); + } + + return $this->reader->read($name)->getOrElse(null); + } + + /** + * Set an environment variable. + * + * @param string $name + * @param string $value + * + * @throws \InvalidArgumentException + * + * @return bool + */ + public function set(string $name, string $value) + { + if ('' === $name) { + throw new InvalidArgumentException('Expected name to be a non-empty string.'); + } + + return $this->writer->write($name, $value); + } + + /** + * Clear an environment variable. + * + * @param string $name + * + * @throws \InvalidArgumentException + * + * @return bool + */ + public function clear(string $name) + { + if ('' === $name) { + throw new InvalidArgumentException('Expected name to be a non-empty string.'); + } + + return $this->writer->delete($name); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php b/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php new file mode 100644 index 0000000..7607924 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php @@ -0,0 +1,272 @@ +readers = $readers; + $this->writers = $writers; + $this->immutable = $immutable; + $this->allowList = $allowList; + } + + /** + * Create a new repository builder instance with no adapters added. + * + * @return \Dotenv\Repository\RepositoryBuilder + */ + public static function createWithNoAdapters() + { + return new self(); + } + + /** + * Create a new repository builder instance with the default adapters added. + * + * @return \Dotenv\Repository\RepositoryBuilder + */ + public static function createWithDefaultAdapters() + { + $adapters = \iterator_to_array(self::defaultAdapters()); + + return new self($adapters, $adapters); + } + + /** + * Return the array of default adapters. + * + * @return \Generator<\Dotenv\Repository\Adapter\AdapterInterface> + */ + private static function defaultAdapters() + { + foreach (self::DEFAULT_ADAPTERS as $adapter) { + $instance = $adapter::create(); + if ($instance->isDefined()) { + yield $instance->get(); + } + } + } + + /** + * Determine if the given name if of an adapterclass. + * + * @param string $name + * + * @return bool + */ + private static function isAnAdapterClass(string $name) + { + if (!\class_exists($name)) { + return false; + } + + return (new ReflectionClass($name))->implementsInterface(AdapterInterface::class); + } + + /** + * Creates a repository builder with the given reader added. + * + * Accepts either a reader instance, or a class-string for an adapter. If + * the adapter is not supported, then we silently skip adding it. + * + * @param \Dotenv\Repository\Adapter\ReaderInterface|string $reader + * + * @throws \InvalidArgumentException + * + * @return \Dotenv\Repository\RepositoryBuilder + */ + public function addReader($reader) + { + if (!(\is_string($reader) && self::isAnAdapterClass($reader)) && !($reader instanceof ReaderInterface)) { + throw new InvalidArgumentException( + \sprintf( + 'Expected either an instance of %s or a class-string implementing %s', + ReaderInterface::class, + AdapterInterface::class + ) + ); + } + + $optional = Some::create($reader)->flatMap(static function ($reader) { + return \is_string($reader) ? $reader::create() : Some::create($reader); + }); + + $readers = \array_merge($this->readers, \iterator_to_array($optional)); + + return new self($readers, $this->writers, $this->immutable, $this->allowList); + } + + /** + * Creates a repository builder with the given writer added. + * + * Accepts either a writer instance, or a class-string for an adapter. If + * the adapter is not supported, then we silently skip adding it. + * + * @param \Dotenv\Repository\Adapter\WriterInterface|string $writer + * + * @throws \InvalidArgumentException + * + * @return \Dotenv\Repository\RepositoryBuilder + */ + public function addWriter($writer) + { + if (!(\is_string($writer) && self::isAnAdapterClass($writer)) && !($writer instanceof WriterInterface)) { + throw new InvalidArgumentException( + \sprintf( + 'Expected either an instance of %s or a class-string implementing %s', + WriterInterface::class, + AdapterInterface::class + ) + ); + } + + $optional = Some::create($writer)->flatMap(static function ($writer) { + return \is_string($writer) ? $writer::create() : Some::create($writer); + }); + + $writers = \array_merge($this->writers, \iterator_to_array($optional)); + + return new self($this->readers, $writers, $this->immutable, $this->allowList); + } + + /** + * Creates a repository builder with the given adapter added. + * + * Accepts either an adapter instance, or a class-string for an adapter. If + * the adapter is not supported, then we silently skip adding it. We will + * add the adapter as both a reader and a writer. + * + * @param \Dotenv\Repository\Adapter\WriterInterface|string $adapter + * + * @throws \InvalidArgumentException + * + * @return \Dotenv\Repository\RepositoryBuilder + */ + public function addAdapter($adapter) + { + if (!(\is_string($adapter) && self::isAnAdapterClass($adapter)) && !($adapter instanceof AdapterInterface)) { + throw new InvalidArgumentException( + \sprintf( + 'Expected either an instance of %s or a class-string implementing %s', + WriterInterface::class, + AdapterInterface::class + ) + ); + } + + $optional = Some::create($adapter)->flatMap(static function ($adapter) { + return \is_string($adapter) ? $adapter::create() : Some::create($adapter); + }); + + $readers = \array_merge($this->readers, \iterator_to_array($optional)); + $writers = \array_merge($this->writers, \iterator_to_array($optional)); + + return new self($readers, $writers, $this->immutable, $this->allowList); + } + + /** + * Creates a repository builder with mutability enabled. + * + * @return \Dotenv\Repository\RepositoryBuilder + */ + public function immutable() + { + return new self($this->readers, $this->writers, true, $this->allowList); + } + + /** + * Creates a repository builder with the given allow list. + * + * @param string[]|null $allowList + * + * @return \Dotenv\Repository\RepositoryBuilder + */ + public function allowList(?array $allowList = null) + { + return new self($this->readers, $this->writers, $this->immutable, $allowList); + } + + /** + * Creates a new repository instance. + * + * @return \Dotenv\Repository\RepositoryInterface + */ + public function make() + { + $reader = new MultiReader($this->readers); + $writer = new MultiWriter($this->writers); + + if ($this->immutable) { + $writer = new ImmutableWriter($writer, $reader); + } + + if ($this->allowList !== null) { + $writer = new GuardedWriter($writer, $this->allowList); + } + + return new AdapterRepository($reader, $writer); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php b/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php new file mode 100644 index 0000000..d9b18a4 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php @@ -0,0 +1,51 @@ + + */ + public static function read(array $filePaths, bool $shortCircuit = true, ?string $fileEncoding = null) + { + $output = []; + + foreach ($filePaths as $filePath) { + $content = self::readFromFile($filePath, $fileEncoding); + if ($content->isDefined()) { + $output[$filePath] = $content->get(); + if ($shortCircuit) { + break; + } + } + } + + return $output; + } + + /** + * Read the given file. + * + * @param string $path + * @param string|null $encoding + * + * @throws \Dotenv\Exception\InvalidEncodingException + * + * @return \PhpOption\Option + */ + private static function readFromFile(string $path, ?string $encoding = null) + { + /** @var Option */ + $content = Option::fromValue(@\file_get_contents($path), false); + + return $content->flatMap(static function (string $content) use ($encoding) { + return Str::utf8($content, $encoding)->mapError(static function (string $error) { + throw new InvalidEncodingException($error); + })->success(); + }); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Store/FileStore.php b/vendor/vlucas/phpdotenv/src/Store/FileStore.php new file mode 100644 index 0000000..e7a4d3f --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Store/FileStore.php @@ -0,0 +1,72 @@ +filePaths = $filePaths; + $this->shortCircuit = $shortCircuit; + $this->fileEncoding = $fileEncoding; + } + + /** + * Read the content of the environment file(s). + * + * @throws \Dotenv\Exception\InvalidEncodingException|\Dotenv\Exception\InvalidPathException + * + * @return string + */ + public function read() + { + if ($this->filePaths === []) { + throw new InvalidPathException('At least one environment file path must be provided.'); + } + + $contents = Reader::read($this->filePaths, $this->shortCircuit, $this->fileEncoding); + + if (\count($contents) > 0) { + return \implode("\n", $contents); + } + + throw new InvalidPathException( + \sprintf('Unable to read any of the environment file(s) at [%s].', \implode(', ', $this->filePaths)) + ); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php b/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php new file mode 100644 index 0000000..2ce0851 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php @@ -0,0 +1,141 @@ +paths = $paths; + $this->names = $names; + $this->shortCircuit = $shortCircuit; + $this->fileEncoding = $fileEncoding; + } + + /** + * Create a new store builder instance with no names. + * + * @return \Dotenv\Store\StoreBuilder + */ + public static function createWithNoNames() + { + return new self(); + } + + /** + * Create a new store builder instance with the default name. + * + * @return \Dotenv\Store\StoreBuilder + */ + public static function createWithDefaultName() + { + return new self([], [self::DEFAULT_NAME]); + } + + /** + * Creates a store builder with the given path added. + * + * @param string $path + * + * @return \Dotenv\Store\StoreBuilder + */ + public function addPath(string $path) + { + return new self(\array_merge($this->paths, [$path]), $this->names, $this->shortCircuit, $this->fileEncoding); + } + + /** + * Creates a store builder with the given name added. + * + * @param string $name + * + * @return \Dotenv\Store\StoreBuilder + */ + public function addName(string $name) + { + return new self($this->paths, \array_merge($this->names, [$name]), $this->shortCircuit, $this->fileEncoding); + } + + /** + * Creates a store builder with short circuit mode enabled. + * + * @return \Dotenv\Store\StoreBuilder + */ + public function shortCircuit() + { + return new self($this->paths, $this->names, true, $this->fileEncoding); + } + + /** + * Creates a store builder with the specified file encoding. + * + * @param string|null $fileEncoding + * + * @return \Dotenv\Store\StoreBuilder + */ + public function fileEncoding(?string $fileEncoding = null) + { + return new self($this->paths, $this->names, $this->shortCircuit, $fileEncoding); + } + + /** + * Creates a new store instance. + * + * @return \Dotenv\Store\StoreInterface + */ + public function make() + { + return new FileStore( + Paths::filePaths($this->paths, $this->names), + $this->shortCircuit, + $this->fileEncoding + ); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php b/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php new file mode 100644 index 0000000..6f5b986 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php @@ -0,0 +1,17 @@ +content = $content; + } + + /** + * Read the content of the environment file(s). + * + * @return string + */ + public function read() + { + return $this->content; + } +} diff --git a/vendor/vlucas/phpdotenv/src/Util/Regex.php b/vendor/vlucas/phpdotenv/src/Util/Regex.php new file mode 100644 index 0000000..599f09c --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Util/Regex.php @@ -0,0 +1,112 @@ + + */ + public static function matches(string $pattern, string $subject) + { + return self::pregAndWrap(static function (string $subject) use ($pattern) { + return @\preg_match($pattern, $subject) === 1; + }, $subject); + } + + /** + * Perform a preg match all, wrapping up the result. + * + * @param string $pattern + * @param string $subject + * + * @return \GrahamCampbell\ResultType\Result + */ + public static function occurrences(string $pattern, string $subject) + { + return self::pregAndWrap(static function (string $subject) use ($pattern) { + return (int) @\preg_match_all($pattern, $subject); + }, $subject); + } + + /** + * Perform a preg replace callback, wrapping up the result. + * + * @param string $pattern + * @param callable(string[]): string $callback + * @param string $subject + * @param int|null $limit + * + * @return \GrahamCampbell\ResultType\Result + */ + public static function replaceCallback(string $pattern, callable $callback, string $subject, ?int $limit = null) + { + return self::pregAndWrap(static function (string $subject) use ($pattern, $callback, $limit) { + return (string) @\preg_replace_callback($pattern, $callback, $subject, $limit ?? -1); + }, $subject); + } + + /** + * Perform a preg split, wrapping up the result. + * + * @param string $pattern + * @param string $subject + * + * @return \GrahamCampbell\ResultType\Result + */ + public static function split(string $pattern, string $subject) + { + return self::pregAndWrap(static function (string $subject) use ($pattern) { + /** @var string[] */ + return (array) @\preg_split($pattern, $subject); + }, $subject); + } + + /** + * Perform a preg operation, wrapping up the result. + * + * @template V + * + * @param callable(string): V $operation + * @param string $subject + * + * @return \GrahamCampbell\ResultType\Result + */ + private static function pregAndWrap(callable $operation, string $subject) + { + $result = $operation($subject); + + if (\preg_last_error() !== \PREG_NO_ERROR) { + /** @var \GrahamCampbell\ResultType\Result */ + return Error::create(\preg_last_error_msg()); + } + + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create($result); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Util/Str.php b/vendor/vlucas/phpdotenv/src/Util/Str.php new file mode 100644 index 0000000..b113d78 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Util/Str.php @@ -0,0 +1,108 @@ + + */ + public static function utf8(string $input, ?string $encoding = null) + { + if ($encoding !== null && !\in_array($encoding, \mb_list_encodings(), true)) { + /** @var \GrahamCampbell\ResultType\Result */ + return Error::create( + \sprintf('Illegal character encoding [%s] specified.', $encoding) + ); + } + + $converted = $encoding === null ? + @\mb_convert_encoding($input, 'UTF-8') : + @\mb_convert_encoding($input, 'UTF-8', $encoding); + + if (!is_string($converted)) { + /** @var \GrahamCampbell\ResultType\Result */ + return Error::create( + \sprintf('Conversion from encoding [%s] failed.', $encoding ?? 'NULL') + ); + } + + /** + * this is for support UTF-8 with BOM encoding + * @see https://en.wikipedia.org/wiki/Byte_order_mark + * @see https://github.com/vlucas/phpdotenv/issues/500 + */ + if (\substr($converted, 0, 3) == "\xEF\xBB\xBF") { + $converted = \substr($converted, 3); + } + + /** @var \GrahamCampbell\ResultType\Result */ + return Success::create($converted); + } + + /** + * Search for a given substring of the input. + * + * @param string $haystack + * @param string $needle + * + * @return \PhpOption\Option + */ + public static function pos(string $haystack, string $needle) + { + /** @var \PhpOption\Option */ + return Option::fromValue(\mb_strpos($haystack, $needle, 0, 'UTF-8'), false); + } + + /** + * Grab the specified substring of the input. + * + * @param string $input + * @param int $start + * @param int|null $length + * + * @return string + */ + public static function substr(string $input, int $start, ?int $length = null) + { + return \mb_substr($input, $start, $length, 'UTF-8'); + } + + /** + * Compute the length of the given string. + * + * @param string $input + * + * @return int + */ + public static function len(string $input) + { + return \mb_strlen($input, 'UTF-8'); + } +} diff --git a/vendor/vlucas/phpdotenv/src/Validator.php b/vendor/vlucas/phpdotenv/src/Validator.php new file mode 100644 index 0000000..d5580c7 --- /dev/null +++ b/vendor/vlucas/phpdotenv/src/Validator.php @@ -0,0 +1,207 @@ +repository = $repository; + $this->variables = $variables; + } + + /** + * Assert that each variable is present. + * + * @throws \Dotenv\Exception\ValidationException + * + * @return \Dotenv\Validator + */ + public function required() + { + return $this->assert( + static function (?string $value) { + return $value !== null; + }, + 'is missing' + ); + } + + /** + * Assert that each variable is not empty. + * + * @throws \Dotenv\Exception\ValidationException + * + * @return \Dotenv\Validator + */ + public function notEmpty() + { + return $this->assertNullable( + static function (string $value) { + return Str::len(\trim($value)) > 0; + }, + 'is empty' + ); + } + + /** + * Assert that each specified variable is an integer. + * + * @throws \Dotenv\Exception\ValidationException + * + * @return \Dotenv\Validator + */ + public function isInteger() + { + return $this->assertNullable( + static function (string $value) { + return \ctype_digit($value); + }, + 'is not an integer' + ); + } + + /** + * Assert that each specified variable is a boolean. + * + * @throws \Dotenv\Exception\ValidationException + * + * @return \Dotenv\Validator + */ + public function isBoolean() + { + return $this->assertNullable( + static function (string $value) { + if ($value === '') { + return false; + } + + return \filter_var($value, \FILTER_VALIDATE_BOOLEAN, \FILTER_NULL_ON_FAILURE) !== null; + }, + 'is not a boolean' + ); + } + + /** + * Assert that each variable is amongst the given choices. + * + * @param string[] $choices + * + * @throws \Dotenv\Exception\ValidationException + * + * @return \Dotenv\Validator + */ + public function allowedValues(array $choices) + { + return $this->assertNullable( + static function (string $value) use ($choices) { + return \in_array($value, $choices, true); + }, + \sprintf('is not one of [%s]', \implode(', ', $choices)) + ); + } + + /** + * Assert that each variable matches the given regular expression. + * + * @param string $regex + * + * @throws \Dotenv\Exception\ValidationException + * + * @return \Dotenv\Validator + */ + public function allowedRegexValues(string $regex) + { + return $this->assertNullable( + static function (string $value) use ($regex) { + return Regex::matches($regex, $value)->success()->getOrElse(false); + }, + \sprintf('does not match "%s"', $regex) + ); + } + + /** + * Assert that the callback returns true for each variable. + * + * @param callable(?string):bool $callback + * @param string $message + * + * @throws \Dotenv\Exception\ValidationException + * + * @return \Dotenv\Validator + */ + public function assert(callable $callback, string $message) + { + $failing = []; + + foreach ($this->variables as $variable) { + if ($callback($this->repository->get($variable)) === false) { + $failing[] = \sprintf('%s %s', $variable, $message); + } + } + + if (\count($failing) > 0) { + throw new ValidationException(\sprintf( + 'One or more environment variables failed assertions: %s.', + \implode(', ', $failing) + )); + } + + return $this; + } + + /** + * Assert that the callback returns true for each variable. + * + * Skip checking null variable values. + * + * @param callable(string):bool $callback + * @param string $message + * + * @throws \Dotenv\Exception\ValidationException + * + * @return \Dotenv\Validator + */ + public function assertNullable(callable $callback, string $message) + { + return $this->assert( + static function (?string $value) use ($callback) { + if ($value === null) { + return true; + } + + return $callback($value); + }, + $message + ); + } +} diff --git a/views/_partial/header.tpl b/views/_partial/header.tpl index 337c21a..17898e0 100644 --- a/views/_partial/header.tpl +++ b/views/_partial/header.tpl @@ -75,7 +75,7 @@ diff --git a/views/_partial/preview.tpl b/views/_partial/preview.tpl index 7a8e4bf..026293b 100644 --- a/views/_partial/preview.tpl +++ b/views/_partial/preview.tpl @@ -15,10 +15,13 @@
    {* PHOTO DE PROFIL *} - + Photo de profil + {* INFOS *}
    diff --git a/views/search.tpl b/views/search.tpl index 500940a..0ea9964 100644 --- a/views/search.tpl +++ b/views/search.tpl @@ -20,7 +20,7 @@ class="form-control" id="keywords" name="keywords" - placeholder="Ex: JavaScript, CSS..." + placeholder="Design, IA, back-end" aria-describedby="keywords-help"> Recherchez dans les titres et contenus @@ -44,7 +44,7 @@
    - Type de recherche par date + Recherche par date
    - Type de recherche par catégories + Recherche par catégories
    +
    +
    + Type de recherche par catégories +
    + + +
    +
    +

    Image thumbnail

    @@ -73,7 +100,7 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views';
    - +
    @@ -102,9 +129,9 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views';
    getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach0DoElse = true; +$foreach1DoElse = true; foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach0DoElse = false; +$foreach1DoElse = false; ?> renderSubTemplate("file:../app/views/partials/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> diff --git a/uploads/projects/Capture d'écran 2025-11-03 084423.png b/uploads/projects/Capture d'écran 2025-11-03 084423.png new file mode 100644 index 0000000000000000000000000000000000000000..250b86d5b6d9ad0fac749d61be51e7842193657f GIT binary patch literal 16081 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 Portfolio
    +
    +
    + Type de recherche par catégories +
    + + +
    +
    +

    Image thumbnail

    @@ -37,7 +55,7 @@
    - +
    From d670465aaac6b124862bf0fc4774866466743804 Mon Sep 17 00:00:00 2001 From: Yasder5 <102179445+Yasder5@users.noreply.github.com> Date: Mon, 16 Feb 2026 20:16:27 +0100 Subject: [PATCH 35/45] css/bootstrap --- assests/css/style.css | 5 +- ...94486bfa02ee91c2c5fe68_0.file_home.tpl.php | 14 +- ...82584009ce981aa35e0b_0.file_layout.tpl.php | 10 +- ...56e3cf6837f9df55d7fb_0.file_footer.tpl.php | 10 +- ...a455c22b1bd_0.file_project_display.tpl.php | 129 ---------------- ...2993687bad91a1cf0f6_0.file_preview.tpl.php | 146 ++++++++++-------- ...db1687a6d7b7b3c501bb_0.file_search.tpl.php | 10 +- ...947735d13c8d176ec944_0.file_header.tpl.php | 10 +- ...b3bc83bc530b255f98de05_0.file_user.tpl.php | 98 ------------ views/_partial/footer.tpl | 2 +- views/_partial/header.tpl | 2 +- views/_partial/preview.tpl | 140 +++++++++-------- views/home.tpl | 2 +- views/user.tpl | 34 ++-- 14 files changed, 213 insertions(+), 399 deletions(-) delete mode 100644 templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php delete mode 100644 templates_c/ac38676c030d472426b3bc83bc530b255f98de05_0.file_user.tpl.php diff --git a/assests/css/style.css b/assests/css/style.css index c1209cd..6a8f455 100644 --- a/assests/css/style.css +++ b/assests/css/style.css @@ -1,6 +1,9 @@ +*{ + margin: 0; + padding: 0; +} body { background-color: #f5f5f5; - padding: 2px; } .navbar { diff --git a/templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php b/templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php index ed1df75..55fa0ec 100644 --- a/templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php +++ b/templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698ce8475ca6c5_70769879', + 'unifunc' => 'content_6990b269ccba39_37501247', 'has_nocache_code' => false, 'file_dependency' => array ( '0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68' => array ( 0 => 'views/home.tpl', - 1 => 1770721453, + 1 => 1771010187, 2 => 'file', ), ), @@ -21,20 +21,20 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_698ce8475ca6c5_70769879 (\Smarty\Template $_smarty_tpl) { +function content_6990b269ccba39_37501247 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_1240817329698ce8475c5f82_37934128', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_11076089026990b269cc7970_84790211', "content"); ?> getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_1240817329698ce8475c5f82_37934128 extends \Smarty\Runtime\Block +class Block_11076089026990b269cc7970_84790211 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; @@ -61,7 +61,7 @@ $_smarty_current_dir = 'D:\\projetphp\\views';
    -
    +

    Les 4 derniers articles

    diff --git a/templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php b/templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php index 5225d20..b72d93d 100644 --- a/templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php +++ b/templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698ce84e84dcc1_11117501', + 'unifunc' => 'content_6990b26c1e79e7_73815255', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_698ce84e84dcc1_11117501 (\Smarty\Template $_smarty_tpl) { +function content_6990b26c1e79e7_73815255 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_2114043754698ce84e84c177_54195501', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_2132004286990b26c1e59d6_94176803', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_2114043754698ce84e84c177_54195501 extends \Smarty\Runtime\Block +class Block_2132004286990b26c1e59d6_94176803 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views'; diff --git a/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php b/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php index edc0f04..b5d14ba 100644 --- a/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php +++ b/templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698ce84e9b1e51_40033913', + 'unifunc' => 'content_6990b26c437982_38235756', 'has_nocache_code' => false, 'file_dependency' => array ( '264314e384c04e79c5fa56e3cf6837f9df55d7fb' => array ( 0 => 'views/_partial/footer.tpl', - 1 => 1770649781, + 1 => 1771090184, 2 => 'file', ), ), @@ -20,10 +20,10 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_698ce84e9b1e51_40033913 (\Smarty\Template $_smarty_tpl) { +function content_6990b26c437982_38235756 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'D:\\projetphp\\views\\_partial'; ?> -
    -
    +

    Les 4 derniers articles

    diff --git a/views/user.tpl b/views/user.tpl index 1a6ba54..5b66eb5 100644 --- a/views/user.tpl +++ b/views/user.tpl @@ -2,24 +2,28 @@ {block name="content"} - getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6993373fd8c653_70022249', + 'unifunc' => 'content_6994875217b403_02249466', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:../app/views/partials/preview.tpl' => 1, ), ))) { -function content_6993373fd8c653_70022249 (\Smarty\Template $_smarty_tpl) { +function content_6994875217b403_02249466 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_19229320646993373fd04ed7_75753900', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_261778149699487520f5087_45577844', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_19229320646993373fd04ed7_75753900 extends \Smarty\Runtime\Block +class Block_261778149699487520f5087_45577844 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; diff --git a/views/_partial/header.tpl b/views/_partial/header.tpl index 337c21a..099c150 100644 --- a/views/_partial/header.tpl +++ b/views/_partial/header.tpl @@ -35,7 +35,7 @@ {if isset($smarty.session.user)} {if $smarty.session.user.authorisation_name == "Administrateur"}
    {*Controle de l'utilisateur ainsi que du status du projet + Suppression disponible pour l'utilisateur possédant le projet*} - {if isset($smarty.session.user) and $smarty.session.user.user_status == 2 or $smarty.session.user.user_id == $objProject->getUser_id()} -
    - Supprimer le projet + {if isset($smarty.session.user) and $smarty.session.user.user_status eq 2 or $smarty.session.user.user_id eq $objProject->getUser_id()} +
    + Supprimer le projet {/if} - {if isset($smarty.session.user) and $smarty.session.user.user_id == $objProject->getUser_id()} + + + {if isset($smarty.session.user) and $smarty.session.user.user_id eq $objProject->getUser_id()} Modifier le projet {/if} + {*Conditions permettant au Modérateur de modifier le status d'un projet*} - {if isset($smarty.session.user) and $smarty.session.user.user_status == 2 and $objProject->getStatus() eq "en_attente"} + {if isset($smarty.session.user) and $smarty.session.user.user_status eq 2 and $objProject->getStatus() eq "en_attente"} Accepter Refuser
    From c91eb6cf89f25a1e04a35bb55de04247914afc01 Mon Sep 17 00:00:00 2001 From: GuillaumeH-Cci Date: Tue, 17 Feb 2026 17:53:41 +0100 Subject: [PATCH 37/45] =?UTF-8?q?D=C3=A9bug=20de=20l'affichage=20des=20pro?= =?UTF-8?q?jet=20hors=20connexion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...519973f0177a783a4561_0.file_header.tpl.php | 28 +++---- ...803dc4119c46e490c52_0.file_preview.tpl.php | 44 ++++++++--- ...8ed73fcd1924b1bda41b_0.file_layout.tpl.php | 10 +-- ...f5b7b444b7670474263f88_0.file_home.tpl.php | 57 +++++++------ ...0dc5baa93ac9d38bfe874_0.file_login.tpl.php | 10 +-- ...9dcacc6c7b4e161e98a2_0.file_footer.tpl.php | 6 +- ...c0e3f74733796438d51_0.file_project.tpl.php | 45 ++++++++--- views/project_display.tpl | 36 +++++---- views/projet_display.tpl | 79 +++++++++++++++++++ 9 files changed, 225 insertions(+), 90 deletions(-) create mode 100644 views/projet_display.tpl diff --git a/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php b/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php index ab2a5b4..f1acd5a 100644 --- a/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php +++ b/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f726978651_30802796', + 'unifunc' => 'content_69949cd5a907e4_36611222', 'has_nocache_code' => false, 'file_dependency' => array ( '20a11b6ecdc7e0959bdb519973f0177a783a4561' => array ( 0 => 'views/_partial/header.tpl', - 1 => 1770639154, + 1 => 1771345389, 2 => 'file', ), ), @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f726978651_30802796 (\Smarty\Template $_smarty_tpl) { +function content_69949cd5a907e4_36611222 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?> @@ -38,7 +38,7 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_ - +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f7269f97f7_68511256', + 'unifunc' => 'content_69949cca585988_04307644', 'has_nocache_code' => false, 'file_dependency' => array ( '3848b4db17319a951391d803dc4119c46e490c52' => array ( 0 => 'views/_partial/preview.tpl', - 1 => 1770646177, + 1 => 1770991201, 2 => 'file', ), ), @@ -20,12 +20,12 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f7269f97f7_68511256 (\Smarty\Template $_smarty_tpl) { +function content_69949cca585988_04307644 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?> -
    +
    - getValue('objProject')->getStatus() == "en_attente") {?> +
    + Supprimer + + getValue('objProject')->getStatus() == "en_attente" && $_SESSION['user']['user_status'] == 2) {?> Accepter Refuser - Supprimer
    getValue('projectStatus') == "refusé") {?>

    Portfolio refusé

    -
    +getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f726914163_83904848', + 'unifunc' => 'content_69949cd5a22020_02990218', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_6989f726914163_83904848 (\Smarty\Template $_smarty_tpl) { +function content_69949cd5a22020_02990218 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_14089017836989f726912e95_86271581', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_38239549469949cd5a20c56_48859268', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_14089017836989f726912e95_86271581 extends \Smarty\Runtime\Block +class Block_38239549469949cd5a20c56_48859268 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; diff --git a/templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php b/templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php index 96a1596..68282d7 100644 --- a/templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php +++ b/templates_c/7e6dbbb1e41ad859e7f5b7b444b7670474263f88_0.file_home.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f72687e0c8_78461032', + 'unifunc' => 'content_69949cca3eb5d3_41418023', 'has_nocache_code' => false, 'file_dependency' => array ( '7e6dbbb1e41ad859e7f5b7b444b7670474263f88' => array ( 0 => 'views/home.tpl', - 1 => 1770639154, + 1 => 1771345389, 2 => 'file', ), ), @@ -21,49 +21,62 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_6989f72687e0c8_78461032 (\Smarty\Template $_smarty_tpl) { +function content_69949cca3eb5d3_41418023 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_15962470546989f72687a521_39502617', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_170960686969949cca3e7560_93553609', "content"); ?> getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_15962470546989f72687a521_39502617 extends \Smarty\Runtime\Block +class Block_170960686969949cca3e7560_93553609 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; ?> -
    -

    Folliow

    -

    Là où les talents rencontrent leur avenir

    -

    Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. - Créer un portfolio réellement pertinent aux exigences du marché et rentrez - directement en contact avec les entreprises.

    -
    +
    +

    Folliow

    +

    Là où les talents rencontrent leur avenir

    +

    Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. + Créer un portfolio réellement pertinent aux exigences du marché et rentrez + directement en contact avec les entreprises.

    +
    -
    -

    Les 4 derniers articles

    -
    - - +
    +
    + + + + + + Tout +
    +
    +
    + +
    +

    Les 4 derniers articles

    +
    + + getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); $foreach0DoElse = true; foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { $foreach0DoElse = false; ?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); + renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    +$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> +
    getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f71c761896_25894348', + 'unifunc' => 'content_69949cc31946f2_99570077', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f71c761896_25894348 (\Smarty\Template $_smarty_tpl) { +function content_69949cc31946f2_99570077 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_19992775976989f71c758fc2_34188356', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_48413822169949cc30e4725_27989269', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_19992775976989f71c758fc2_34188356 extends \Smarty\Runtime\Block +class Block_48413822169949cc30e4725_27989269 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; diff --git a/templates_c/cef94db5b9dde613f0f79dcacc6c7b4e161e98a2_0.file_footer.tpl.php b/templates_c/cef94db5b9dde613f0f79dcacc6c7b4e161e98a2_0.file_footer.tpl.php index 3a5773c..e62caed 100644 --- a/templates_c/cef94db5b9dde613f0f79dcacc6c7b4e161e98a2_0.file_footer.tpl.php +++ b/templates_c/cef94db5b9dde613f0f79dcacc6c7b4e161e98a2_0.file_footer.tpl.php @@ -1,11 +1,11 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_6989f726ac4850_67307943', + 'unifunc' => 'content_69949cd5b10bc9_79471252', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_6989f726ac4850_67307943 (\Smarty\Template $_smarty_tpl) { +function content_69949cd5b10bc9_79471252 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?>
    diff --git a/templates_c/e3f999d4206c004969123c0e3f74733796438d51_0.file_project.tpl.php b/templates_c/e3f999d4206c004969123c0e3f74733796438d51_0.file_project.tpl.php index a078cde..b00c266 100644 --- a/templates_c/e3f999d4206c004969123c0e3f74733796438d51_0.file_project.tpl.php +++ b/templates_c/e3f999d4206c004969123c0e3f74733796438d51_0.file_project.tpl.php @@ -1,18 +1,18 @@ getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_698b49a6958128_21190238', + 'unifunc' => 'content_69949c5bba2e78_15118675', 'has_nocache_code' => false, 'file_dependency' => array ( 'e3f999d4206c004969123c0e3f74733796438d51' => array ( 0 => 'views/project.tpl', - 1 => 1770734029, + 1 => 1771345389, 2 => 'file', ), ), @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:../app/views/partials/preview.tpl' => 1, ), ))) { -function content_698b49a6958128_21190238 (\Smarty\Template $_smarty_tpl) { +function content_69949c5bba2e78_15118675 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_733012504698b49a694f3a4_14549542', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_168273369269949c5bb97b88_70245840', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_733012504698b49a694f3a4_14549542 extends \Smarty\Runtime\Block +class Block_168273369269949c5bb97b88_70245840 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; @@ -64,6 +64,33 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
    +
    +
    + Type de recherche par catégories +
    + + +
    +
    +

    Image thumbnail

    @@ -73,7 +100,7 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
    - +
    @@ -102,9 +129,9 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
    getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach0DoElse = true; +$foreach1DoElse = true; foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach0DoElse = false; +$foreach1DoElse = false; ?> renderSubTemplate("file:../app/views/partials/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> diff --git a/views/project_display.tpl b/views/project_display.tpl index bd386e2..e0434a6 100644 --- a/views/project_display.tpl +++ b/views/project_display.tpl @@ -74,23 +74,25 @@
    {*Controle de l'utilisateur ainsi que du status du projet + Suppression disponible pour l'utilisateur possédant le projet*} - {if isset($smarty.session.user) and $smarty.session.user.user_status eq 2 or $smarty.session.user.user_id eq $objProject->getUser_id()} -
    - Supprimer le projet - {/if} - - - {if isset($smarty.session.user) and $smarty.session.user.user_id eq $objProject->getUser_id()} - Modifier le projet - {/if} - - {*Conditions permettant au Modérateur de modifier le status d'un projet*} - {if isset($smarty.session.user) and $smarty.session.user.user_status eq 2 and $objProject->getStatus() eq "en_attente"} - Accepter - Refuser -
    - {elseif $projectStatus eq "refusé"} -

    Portfolio refusé

    + {if isset($smarty.session.user)} + {if ($smarty.session.user.user_status == 2 || $smarty.session.user.user_id == $objProject->getUser_id())} +
    + Supprimer le projet + {/if} + + + {if $smarty.session.user.user_id == $objProject->getUser_id()} + Modifier le projet + {/if} + + {*Conditions permettant au Modérateur de modifier le status d'un projet*} + {if $smarty.session.user.user_status == 2 && $objProject->getStatus() == "en_attente"} + Accepter + Refuser +
    + {elseif $projectStatus == "refusé"} +

    Portfolio refusé

    + {/if} {/if}
    diff --git a/views/projet_display.tpl b/views/projet_display.tpl new file mode 100644 index 0000000..21301dc --- /dev/null +++ b/views/projet_display.tpl @@ -0,0 +1,79 @@ +{extends file="views/layout.tpl"} + +{block name="content"} +
    + + + {if isset($smarty.get.mail) && $smarty.get.mail === 'ok'} +
    Email envoyé avec succès.
    + {elseif isset($smarty.get.mail) && $smarty.get.mail === 'fail'} +
    Erreur lors de l'envoi de l'email.
    + {/if} + +
    + + +
    + +

    {$objProject->getTitle()}

    + +

    + {$arrProject.category_name ?? 'Général'} +

    + +
    + +
    + +
    +

    Description

    +

    {$objProject->getDescription()}

    + +
    + {$objProject->getContent()} +
    +
    + + +
    +
    + + + + + + + +
    +
    + +
    + + +
    +
    + + + +
    {$objProject->getCreatorName()}
    + +

    + Publié le {$objProject->getCreation_date()} +

    + + + +
    +
    + +
    +
    +{/block} \ No newline at end of file From b6ca8980696f78f6df2449b99e5cb38d0b277258 Mon Sep 17 00:00:00 2001 From: GuillaumeH-Cci Date: Tue, 17 Feb 2026 19:07:16 +0100 Subject: [PATCH 38/45] =?UTF-8?q?D=C3=A9bug,=20acc=C3=A8s=20de=20la=20view?= =?UTF-8?q?=20addedit=5Fproject=20via=20le=20header=20et=20formulaire=20pr?= =?UTF-8?q?=C3=AAt=20=C3=A0=20l'emplois?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/project_controller.php | 36 ++- controllers/user_controller.php | 18 +- ...149077158460_0.file_projet_display.tpl.php | 128 --------- ...94486bfa02ee91c2c5fe68_0.file_home.tpl.php | 84 ------ ...263fe8f31fee7c6055e56_0.file_login.tpl.php | 164 ----------- ...5df178eaf9a1be4_0.file_inscription.tpl.php | 245 ---------------- ...82584009ce981aa35e0b_0.file_layout.tpl.php | 50 ---- ...519973f0177a783a4561_0.file_header.tpl.php | 10 +- ...26123a0c3ef155eae59b_0.file_footer.tpl.php | 63 ----- ...56e3cf6837f9df55d7fb_0.file_footer.tpl.php | 63 ----- ...16434b0dddc13d6ee22b4c_0.file_user.tpl.php | 99 ------- ...69c67d6dd307aa06ae3_0.file_project.tpl.php | 110 -------- ...803dc4119c46e490c52_0.file_preview.tpl.php | 6 +- ...a455c22b1bd_0.file_project_display.tpl.php | 129 --------- ...dd21546b63477a6bc296_0.file_layout.tpl.php | 50 ---- ...ce4a78a4dbca_0.file_projet_display.tpl.php | 128 --------- ...429efee0d6437582d377e_0.file_login.tpl.php | 164 ----------- ...12628e44c1dff2d9365b_0.file_search.tpl.php | 261 ------------------ ...2993687bad91a1cf0f6_0.file_preview.tpl.php | 97 ------- ...da665dc59ccdf89588f2_0.file_search.tpl.php | 261 ------------------ ...8ed73fcd1924b1bda41b_0.file_layout.tpl.php | 10 +- ...db1687a6d7b7b3c501bb_0.file_search.tpl.php | 261 ------------------ ...f5b7b444b7670474263f88_0.file_home.tpl.php | 10 +- ...947735d13c8d176ec944_0.file_header.tpl.php | 111 -------- ...67988eba5ded_0.file_projet_display.tpl.php | 128 --------- ...af2d8a8255035d91b950_0.file_layout.tpl.php | 50 ---- ...b3bc83bc530b255f98de05_0.file_user.tpl.php | 98 ------- ...3f0963ead4008a7bda8fb_0.file_admin.tpl.php | 235 ---------------- ...809f87f59bd19d86da99_0.file_footer.tpl.php | 63 ----- ...531347290b4e4994470b_0.file_header.tpl.php | 115 -------- ...bbeae871506874cefd9d6_0.file_login.tpl.php | 164 ----------- ...7634a5658ae38c7b520_0.file_preview.tpl.php | 69 ----- ...b03b8d137ec1edb99bdd92_0.file_home.tpl.php | 84 ------ ...6938ec13f0fa_0.file_projet_display.tpl.php | 128 --------- ...9dcacc6c7b4e161e98a2_0.file_footer.tpl.php | 6 +- ...533821a89d7d735c5727_0.file_header.tpl.php | 111 -------- ...22152a4d410b20abede_0.file_preview.tpl.php | 99 ------- ...f203d582a8cc367e0bd265_0.file_home.tpl.php | 84 ------ ...c0e3f74733796438d51_0.file_project.tpl.php | 10 +- ...f497c64277110a78bc40_0.file_search.tpl.php | 261 ------------------ ...6d4c74f4917d3685101_0.file_project.tpl.php | 150 ---------- ...66afa34a71b920e_0.file_inscription.tpl.php | 218 --------------- ...ad4f73c431db5dba4722b_0.file_admin.tpl.php | 214 -------------- views/addedit_project.tpl | 79 ++++-- views/project.tpl | 2 +- views/projet_display.tpl | 79 ------ 46 files changed, 109 insertions(+), 4896 deletions(-) delete mode 100644 templates_c/061ec8f4caa90f6cac9dd0d1f101149077158460_0.file_projet_display.tpl.php delete mode 100644 templates_c/0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68_0.file_home.tpl.php delete mode 100644 templates_c/10875d611111c4d51c8263fe8f31fee7c6055e56_0.file_login.tpl.php delete mode 100644 templates_c/184f81453f2b8e9c87b8f61bf5df178eaf9a1be4_0.file_inscription.tpl.php delete mode 100644 templates_c/1c51ad9f5c349145220f82584009ce981aa35e0b_0.file_layout.tpl.php delete mode 100644 templates_c/233722999fd7fbe3307e26123a0c3ef155eae59b_0.file_footer.tpl.php delete mode 100644 templates_c/264314e384c04e79c5fa56e3cf6837f9df55d7fb_0.file_footer.tpl.php delete mode 100644 templates_c/32d027bc6f198a0e3016434b0dddc13d6ee22b4c_0.file_user.tpl.php delete mode 100644 templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php delete mode 100644 templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php delete mode 100644 templates_c/50db0f04b5a0bd45d280dd21546b63477a6bc296_0.file_layout.tpl.php delete mode 100644 templates_c/52c011ce77c5dc743b6591550c55ce4a78a4dbca_0.file_projet_display.tpl.php delete mode 100644 templates_c/5375cd75c92fd8c801b429efee0d6437582d377e_0.file_login.tpl.php delete mode 100644 templates_c/55cbb497c7dde2dae3a712628e44c1dff2d9365b_0.file_search.tpl.php delete mode 100644 templates_c/67e1ae3a210fc2d1bf8782993687bad91a1cf0f6_0.file_preview.tpl.php delete mode 100644 templates_c/6d89f62fd107a769c92bda665dc59ccdf89588f2_0.file_search.tpl.php delete mode 100644 templates_c/72e5e5c0ee2729980deadb1687a6d7b7b3c501bb_0.file_search.tpl.php delete mode 100644 templates_c/8056b95e7f6b28be5e36947735d13c8d176ec944_0.file_header.tpl.php delete mode 100644 templates_c/858273afeea443d46db5cb9b3c1c67988eba5ded_0.file_projet_display.tpl.php delete mode 100644 templates_c/947d9aa54bf412a952e2af2d8a8255035d91b950_0.file_layout.tpl.php delete mode 100644 templates_c/ac38676c030d472426b3bc83bc530b255f98de05_0.file_user.tpl.php delete mode 100644 templates_c/ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb_0.file_admin.tpl.php delete mode 100644 templates_c/b1b065356827f03a32a2809f87f59bd19d86da99_0.file_footer.tpl.php delete mode 100644 templates_c/b3c0a235f975d8741b25531347290b4e4994470b_0.file_header.tpl.php delete mode 100644 templates_c/b44ab733c93381dbf5dbbeae871506874cefd9d6_0.file_login.tpl.php delete mode 100644 templates_c/b70ee0d22061ca6100f647634a5658ae38c7b520_0.file_preview.tpl.php delete mode 100644 templates_c/ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92_0.file_home.tpl.php delete mode 100644 templates_c/ccb74eb5d50d5c45223723021f206938ec13f0fa_0.file_projet_display.tpl.php delete mode 100644 templates_c/d1ce76cd275b7aacbc06533821a89d7d735c5727_0.file_header.tpl.php delete mode 100644 templates_c/d60fb02b58bc4794052e022152a4d410b20abede_0.file_preview.tpl.php delete mode 100644 templates_c/dec070599de91da0c8f203d582a8cc367e0bd265_0.file_home.tpl.php delete mode 100644 templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php delete mode 100644 templates_c/eda0e4559a4ddfacbd33a6d4c74f4917d3685101_0.file_project.tpl.php delete mode 100644 templates_c/ee86afd5d4dff200944f3436866afa34a71b920e_0.file_inscription.tpl.php delete mode 100644 templates_c/f80694cc4829becd656ad4f73c431db5dba4722b_0.file_admin.tpl.php delete mode 100644 views/projet_display.tpl diff --git a/controllers/project_controller.php b/controllers/project_controller.php index 6d57fd3..5dd98dc 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -88,9 +88,6 @@ $this->_arrData['arrProject'] = $arrProject; $this->_arrData['arrUser'] = $arrUser; - - - $this->_display("search"); } @@ -154,12 +151,17 @@ $objProject->hydrate($_SESSION); $objProject->setThumbnail($strDest); $objProjectModel->insert($objProject); + header("Location: index.php"); + exit; + } - } else if (isset($_POST['toContinue'])) { - $objProject->hydrate($_SESSION); - $objProject->setThumbnail($strDest); + // } else if (isset($_POST['toContinue'])) { + // $objProject->hydrate($_SESSION); + // $objProject->setThumbnail($strDest); //$objProjectModel->insert($objProject); - } + // header("Location: index.php"); + // exit; + // } var_dump($_SESSION); var_dump($objProject); @@ -168,10 +170,8 @@ $this->_arrData['arrProjectToDiplay'] = $arrProjectToDisplay; $this->_arrData['arrImageToDiplay'] = $arrImageToDisplay; - $this->_display("project"); - - header("Location: index.php"); - exit; + $this->_display("project"); // _display('addedit_project'); // findAllCategory(); + + $_SESSION['category']= $_POST['category']??0; + + $this->_arrData['arrCategory'] = $arrCategory; + + $this->_display('addedit_project'); + } + } \ No newline at end of file diff --git a/controllers/user_controller.php b/controllers/user_controller.php index e2cebfa..ccba625 100644 --- a/controllers/user_controller.php +++ b/controllers/user_controller.php @@ -154,7 +154,7 @@ class UserCtrl extends MotherCtrl { $intId = isset($_GET['id']) ? (int)$_GET['id'] : 0; if ($intId <= 0) { - header("Location: index.php"); + header("Location:index.php"); exit; } @@ -163,7 +163,7 @@ class UserCtrl extends MotherCtrl { $arrUserData = $objUserModel->findUserById($intId); if ($arrUserData === false) { - header("Location: index.php"); + header("Location:index.php"); exit; } $objUser = new User; @@ -184,19 +184,5 @@ class UserCtrl extends MotherCtrl { $this->_arrData['arrProjectToDisplay'] = $arrProjectToDisplay; $this->_display("user"); } - - public function addedit_project(){ - - // Voir si l'utilisateur est connecté ? Retour sur l'index sinon - $intId = isset($_GET['id']) ? (int)$_GET['id'] : 0; - - if ($intId <= 0){ - header("Location: index.php"); - exit; - } - - header("Location: index.php?ctrl=project&action=addedit_project"); - exit; - } } diff --git a/templates_c/061ec8f4caa90f6cac9dd0d1f101149077158460_0.file_projet_display.tpl.php b/templates_c/061ec8f4caa90f6cac9dd0d1f101149077158460_0.file_projet_display.tpl.php deleted file mode 100644 index 825c29f..0000000 --- a/templates_c/061ec8f4caa90f6cac9dd0d1f101149077158460_0.file_projet_display.tpl.php +++ /dev/null @@ -1,128 +0,0 @@ -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6989e58c411304_60305191', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '061ec8f4caa90f6cac9dd0d1f101149077158460' => - array ( - 0 => 'views/projet_display.tpl', - 1 => 1770639154, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_6989e58c411304_60305191 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_13978244256989e58c406518_61332798', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_13978244256989e58c406518_61332798 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; -?> - -
    - - - -
    Email envoyé avec succès.
    - -
    Erreur lors de l'envoi de l'email.
    - - -
    - - -
    - -

    getValue('objProject')->getTitle();?> -

    - -

    - getValue('arrProject')['category_name'] ?? 'Général';?> - -

    - -
    - -
    - -
    -

    Description

    -

    getValue('objProject')->getDescription();?> -

    - -
    - getValue('objProject')->getContent();?> - -
    -
    - - -
    -
    - - - - - - - -
    -
    - -
    - - -
    -
    - - - -
    getValue('objProject')->getCreatorName();?> -
    - -

    - Publié le getValue('objProject')->getCreation_date();?> - -

    - - - -
    -
    - -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ce8475ca6c5_70769879', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '0f54e8b5c9bcafd01d94486bfa02ee91c2c5fe68' => - array ( - 0 => 'views/home.tpl', - 1 => 1770721453, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_698ce8475ca6c5_70769879 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_1240817329698ce8475c5f82_37934128', "content"); -?> - -getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_1240817329698ce8475c5f82_37934128 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - -
    -

    Folliow

    -

    Là où les talents rencontrent leur avenir

    -

    Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. - Créer un portfolio réellement pertinent aux exigences du marché et rentrez - directement en contact avec les entreprises.

    -
    - -
    - -
    - -
    -

    Les 4 derniers articles

    -
    - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach0DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_699485bdc8dc40_80399906', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '10875d611111c4d51c8263fe8f31fee7c6055e56' => - array ( - 0 => 'views/login.tpl', - 1 => 1770795606, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_699485bdc8dc40_80399906 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_1446317869699485bdc3a914_83043646', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_1446317869699485bdc3a914_83043646 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -?> - -
    - getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrError')) > 0) {?> -
    - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrError'), 'strError'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('strError')->value) { -$foreach0DoElse = false; -?> -

    getValue('strError');?> -

    - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    - - -
    - - -
    - -
    - - -
    -
    - - -
    - - -

    Connexion

    - - -

    - Connectez-vous à votre compte. -

    - - - -
    - -
    - - -
    - - -
    - - -
    - - -
    - - -
    -
    - - -
    -
    - - -
    - -
    - - -
    - - Pas encore de compte ? - Créer un compte - -
    - - - - -
    -
    - -
    - -
    -
    -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698cba62a72df8_61715147', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '184f81453f2b8e9c87b8f61bf5df178eaf9a1be4' => - array ( - 0 => 'views/inscription.tpl', - 1 => 1770830431, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698cba62a72df8_61715147 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_1012653795698cba62a6b7c0_71138616', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_1012653795698cba62a6b7c0_71138616 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - - - - -
    - - -
    -
    - - -
    - - -

    Inscription

    - - -

    - Créez votre compte utilisateur. -

    - hasVariable('arrError') && null !== ($_smarty_tpl->getValue('arrError') ?? null))) && $_smarty_tpl->getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrError')) > 0)) {?> -
    - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrError'), 'strError'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('strError')->value) { -$foreach0DoElse = false; -?> -

    getValue('strError');?> -

    - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    - - - -
    - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - -
    - @ - -
    -
    - - -
    - - -
    - - -
    - - -
    - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - -
    - - -
    - - Déjà un compte ? - Se connecter - -
    - - -
    - - -
    - -
    -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ce84e84dcc1_11117501', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '1c51ad9f5c349145220f82584009ce981aa35e0b' => - array ( - 0 => 'views/layout.tpl', - 1 => 1770649781, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/header.tpl' => 1, - 'file:views/_partial/footer.tpl' => 1, - ), -))) { -function content_698ce84e84dcc1_11117501 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, false); -$_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_2114043754698ce84e84c177_54195501', "content"); -?> - - -renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -} -/* {block "content"} */ -class Block_2114043754698ce84e84c177_54195501 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - - -getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_69949cd5a907e4_36611222', + 'unifunc' => 'content_69949df5dbc684_52022028', 'has_nocache_code' => false, 'file_dependency' => array ( '20a11b6ecdc7e0959bdb519973f0177a783a4561' => array ( 0 => 'views/_partial/header.tpl', - 1 => 1771345389, + 1 => 1771347290, 2 => 'file', ), ), @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_69949cd5a907e4_36611222 (\Smarty\Template $_smarty_tpl) { +function content_69949df5dbc684_52022028 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?> @@ -58,7 +58,7 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_
    -
    - -getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_69949cca585988_04307644', + 'unifunc' => 'content_69949df5e59d56_57375630', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_69949cca585988_04307644 (\Smarty\Template $_smarty_tpl) { +function content_69949df5e59d56_57375630 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?> diff --git a/templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php b/templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php deleted file mode 100644 index 12780e8..0000000 --- a/templates_c/4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd_0.file_project_display.tpl.php +++ /dev/null @@ -1,129 +0,0 @@ -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ce812246388_58459261', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '4c2b74d2d77abca5363ffd92e8bc3a455c22b1bd' => - array ( - 0 => 'views/project_display.tpl', - 1 => 1770842115, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698ce812246388_58459261 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_1262370430698ce812236879_45885506', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_1262370430698ce812236879_45885506 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - -
    - - - -
    Email envoyé avec succès.
    - -
    Erreur lors de l'envoi de l'email.
    - - -
    - - -
    - -

    getValue('objProject')->getTitle();?> -

    - -

    - getValue('arrProject')['category_name'] ?? 'Général';?> - -

    - -
    - -
    - -
    -

    Description

    -

    getValue('objProject')->getDescription();?> -

    - -
    - getValue('objProject')->getContent();?> - -
    -
    - - -
    -
    - - - - - - - -
    -
    - -
    - - -
    -
    - - - -
    getValue('objProject')->getCreatorName();?> -
    - -

    - Publié le getValue('objProject')->getCreation_date();?> - -

    - - - -
    -
    - -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_699487a3a68439_17737729', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '50db0f04b5a0bd45d280dd21546b63477a6bc296' => - array ( - 0 => 'views/layout.tpl', - 1 => 1770795606, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/header.tpl' => 1, - 'file:views/_partial/footer.tpl' => 1, - ), -))) { -function content_699487a3a68439_17737729 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, false); -$_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_538806849699487a3a5cad4_69670426', "content"); -?> - - -renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -} -/* {block "content"} */ -class Block_538806849699487a3a5cad4_69670426 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -?> - - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ae9506da109_21542800', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '52c011ce77c5dc743b6591550c55ce4a78a4dbca' => - array ( - 0 => 'views/projet_display.tpl', - 1 => 1770634036, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698ae9506da109_21542800 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_919254056698ae95061e435_82964089', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_919254056698ae95061e435_82964089 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -?> - -
    - - - -
    Email envoyé avec succès.
    - -
    Erreur lors de l'envoi de l'email.
    - - -
    - - -
    - -

    getValue('objProject')->getTitle();?> -

    - -

    - getValue('arrProject')['category_name'] ?? 'Général';?> - -

    - -
    - -
    - -
    -

    Description

    -

    getValue('objProject')->getDescription();?> -

    - -
    - getValue('objProject')->getContent();?> - -
    -
    - - -
    -
    - - - - - - - -
    -
    - -
    - - -
    -
    - - - -
    getValue('objProject')->getCreatorName();?> -
    - -

    - Publié le getValue('objProject')->getCreation_date();?> - -

    - - - -
    -
    - -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ae969a7db02_27363144', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '5375cd75c92fd8c801b429efee0d6437582d377e' => - array ( - 0 => 'views/login.tpl', - 1 => 1770634036, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698ae969a7db02_27363144 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_342031104698ae969942f96_18698715', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_342031104698ae969942f96_18698715 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -?> - -
    - getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrError')) > 0) {?> -
    - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrError'), 'strError'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('strError')->value) { -$foreach0DoElse = false; -?> -

    getValue('strError');?> -

    - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    - - -
    - - -
    - -
    - - -
    -
    - - -
    - - -

    Connexion

    - - -

    - Connectez-vous à votre compte. -

    - - - -
    - -
    - - -
    - - -
    - - -
    - - -
    - - -
    -
    - - -
    -
    - - -
    - -
    - - -
    - - Pas encore de compte ? - Créer un compte - -
    - - - - -
    -
    - -
    - -
    -
    -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6989e5b1383d99_95399806', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '55cbb497c7dde2dae3a712628e44c1dff2d9365b' => - array ( - 0 => 'views/search.tpl', - 1 => 1770639154, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_6989e5b1383d99_95399806 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_10517171146989e5b1375aa5_10994726', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_10517171146989e5b1375aa5_10994726 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; -?> - -
    -

    Rechercher parmi les articles

    -
    -
    -
    -

    - - Rechercher des articles -

    - -
    -
    - - - - Recherchez dans les titres et contenus - -
    - -
    - - -
    - - -
    -
    - Type de recherche par date -
    - getValue('intPeriod') == 0) {?>checked - aria-controls="date-exact date-range"> - -
    -
    - getValue('intPeriod') == 1) {?>checked - aria-controls="date-exact date-range"> - -
    -
    -
    - -
    -
    - Type de recherche par catégories -
    - - -
    -
    -
    - -
    - - - - Format: JJ/MM/AAAA - -
    - - - -
    - - -
    -
    -
    -
    - - -
    -

    Liste des projets

    -
    - getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProject')) == 0) {?> -
    -

    Pas de résultats

    -
    - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach2DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach2DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -
    -
    -
    - -> - // Gestion de l'affichage des champs de date - const periodRadios = document.querySelectorAll('input[name="period"]'); - const dateExact = document.getElementById('date-exact'); - const dateRange = document.getElementById('date-range'); - - function toggleDateFields() { - const selectedPeriod = document.querySelector('input[name="period"]:checked').value; - - if (selectedPeriod === '0') { - dateExact.style.display = 'block'; - dateRange.style.display = 'none'; - } else { - dateExact.style.display = 'none'; - dateRange.style.display = 'block'; - } - } - - periodRadios.forEach(radio => { - radio.addEventListener('change', toggleDateFields); - }); - - // Initialisation au chargement - toggleDateFields(); - -> -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ce8478dbef1_65073741', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '67e1ae3a210fc2d1bf8782993687bad91a1cf0f6' => - array ( - 0 => 'views/_partial/preview.tpl', - 1 => 1770841277, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698ce8478dbef1_65073741 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views\\_partial'; -?> - - - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6994820629a465_76682739', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '6d89f62fd107a769c92bda665dc59ccdf89588f2' => - array ( - 0 => 'views/search.tpl', - 1 => 1770795607, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_6994820629a465_76682739 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_146634734699482061db225_27427171', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_146634734699482061db225_27427171 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -?> - -
    -

    Rechercher parmi les articles

    -
    -
    -
    -

    - - Rechercher des articles -

    - -
    -
    - - - - Recherchez dans les titres et contenus - -
    - -
    - - -
    - - -
    -
    - Type de recherche par date -
    - getValue('intPeriod') == 0) {?>checked - aria-controls="date-exact date-range"> - -
    -
    - getValue('intPeriod') == 1) {?>checked - aria-controls="date-exact date-range"> - -
    -
    -
    - -
    -
    - Type de recherche par catégories -
    - - -
    -
    -
    - -
    - - - - Format: JJ/MM/AAAA - -
    - - - -
    - - -
    -
    -
    -
    - - -
    -

    Liste des projets

    -
    - getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProject')) == 0) {?> -
    -

    Pas de résultats

    -
    - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach2DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach2DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -
    -
    -
    - -> - // Gestion de l'affichage des champs de date - const periodRadios = document.querySelectorAll('input[name="period"]'); - const dateExact = document.getElementById('date-exact'); - const dateRange = document.getElementById('date-range'); - - function toggleDateFields() { - const selectedPeriod = document.querySelector('input[name="period"]:checked').value; - - if (selectedPeriod === '0') { - dateExact.style.display = 'block'; - dateRange.style.display = 'none'; - } else { - dateExact.style.display = 'none'; - dateRange.style.display = 'block'; - } - } - - periodRadios.forEach(radio => { - radio.addEventListener('change', toggleDateFields); - }); - - // Initialisation au chargement - toggleDateFields(); - -> -getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_69949cd5a22020_02990218', + 'unifunc' => 'content_69949df5d40730_45325062', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/footer.tpl' => 1, ), ))) { -function content_69949cd5a22020_02990218 (\Smarty\Template $_smarty_tpl) { +function content_69949df5d40730_45325062 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, false); $_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_38239549469949cd5a20c56_48859268', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_49234393269949df5d3f4f3_15477307', "content"); ?> renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); } /* {block "content"} */ -class Block_38239549469949cd5a20c56_48859268 extends \Smarty\Runtime\Block +class Block_49234393269949df5d3f4f3_15477307 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; diff --git a/templates_c/72e5e5c0ee2729980deadb1687a6d7b7b3c501bb_0.file_search.tpl.php b/templates_c/72e5e5c0ee2729980deadb1687a6d7b7b3c501bb_0.file_search.tpl.php deleted file mode 100644 index c811f8e..0000000 --- a/templates_c/72e5e5c0ee2729980deadb1687a6d7b7b3c501bb_0.file_search.tpl.php +++ /dev/null @@ -1,261 +0,0 @@ -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ce80be447b2_73034229', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '72e5e5c0ee2729980deadb1687a6d7b7b3c501bb' => - array ( - 0 => 'views/search.tpl', - 1 => 1770649781, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_698ce80be447b2_73034229 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_977268380698ce80be327a4_02425845', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_977268380698ce80be327a4_02425845 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - -
    -

    Rechercher parmi les articles

    -
    -
    -
    -

    - - Rechercher des articles -

    - -
    -
    - - - - Recherchez dans les titres et contenus - -
    - -
    - - -
    - - -
    -
    - Type de recherche par date -
    - getValue('intPeriod') == 0) {?>checked - aria-controls="date-exact date-range"> - -
    -
    - getValue('intPeriod') == 1) {?>checked - aria-controls="date-exact date-range"> - -
    -
    -
    - -
    -
    - Type de recherche par catégories -
    - - -
    -
    -
    - -
    - - - - Format: JJ/MM/AAAA - -
    - - - -
    - - -
    -
    -
    -
    - - -
    -

    Liste des projets

    -
    - getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProject')) == 0) {?> -
    -

    Pas de résultats

    -
    - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach2DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach2DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -
    -
    -
    - -> - // Gestion de l'affichage des champs de date - const periodRadios = document.querySelectorAll('input[name="period"]'); - const dateExact = document.getElementById('date-exact'); - const dateRange = document.getElementById('date-range'); - - function toggleDateFields() { - const selectedPeriod = document.querySelector('input[name="period"]:checked').value; - - if (selectedPeriod === '0') { - dateExact.style.display = 'block'; - dateRange.style.display = 'none'; - } else { - dateExact.style.display = 'none'; - dateRange.style.display = 'block'; - } - } - - periodRadios.forEach(radio => { - radio.addEventListener('change', toggleDateFields); - }); - - // Initialisation au chargement - toggleDateFields(); - -> -getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_69949cca3eb5d3_41418023', + 'unifunc' => 'content_69949df5c90b90_90775431', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,20 +21,20 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:views/_partial/preview.tpl' => 1, ), ))) { -function content_69949cca3eb5d3_41418023 (\Smarty\Template $_smarty_tpl) { +function content_69949df5c90b90_90775431 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_170960686969949cca3e7560_93553609', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_92967313769949df5c8d018_01341913', "content"); ?> getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_170960686969949cca3e7560_93553609 extends \Smarty\Runtime\Block +class Block_92967313769949df5c8d018_01341913 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; diff --git a/templates_c/8056b95e7f6b28be5e36947735d13c8d176ec944_0.file_header.tpl.php b/templates_c/8056b95e7f6b28be5e36947735d13c8d176ec944_0.file_header.tpl.php deleted file mode 100644 index 837f360..0000000 --- a/templates_c/8056b95e7f6b28be5e36947735d13c8d176ec944_0.file_header.tpl.php +++ /dev/null @@ -1,111 +0,0 @@ -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ce84e8f9ec8_97257315', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '8056b95e7f6b28be5e36947735d13c8d176ec944' => - array ( - 0 => 'views/_partial/header.tpl', - 1 => 1770842181, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698ce84e8f9ec8_97257315 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views\\_partial'; -?> - - - - - - - - - src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"> -> - Folliow - - - - - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6989aef59222c5_05723018', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '858273afeea443d46db5cb9b3c1c67988eba5ded' => - array ( - 0 => 'views/projet_display.tpl', - 1 => 1770628836, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_6989aef59222c5_05723018 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_9176586226989aef5913c31_97339576', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_9176586226989aef5913c31_97339576 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - -
    - - - -
    Email envoyé avec succès.
    - -
    Erreur lors de l'envoi de l'email.
    - - -
    - - -
    - -

    getValue('objProject')->getTitle();?> -

    - -

    - getValue('arrProject')['category_name'] ?? 'Général';?> - -

    - -
    - -
    - -
    -

    Description

    -

    getValue('objProject')->getDescription();?> -

    - -
    - getValue('objProject')->getContent(), (bool) 1);?> - -
    -
    - - -
    -
    - - - - - - - -
    -
    - -
    - - -
    -
    - - - -
    getValue('objProject')->getCreatorName();?> -
    - -

    - Publié le getValue('objProject')->getCreation_date();?> - -

    - - - -
    -
    - -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698aed2fd402f7_78850375', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '947d9aa54bf412a952e2af2d8a8255035d91b950' => - array ( - 0 => 'views/layout.tpl', - 1 => 1770634036, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/header.tpl' => 1, - 'file:views/_partial/footer.tpl' => 1, - ), -))) { -function content_698aed2fd402f7_78850375 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, false); -$_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_691069574698aed2fd3d8f8_28027733', "content"); -?> - - -renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -} -/* {block "content"} */ -class Block_691069574698aed2fd3d8f8_28027733 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -?> - - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ce81087b505_07608517', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'ac38676c030d472426b3bc83bc530b255f98de05' => - array ( - 0 => 'views/user.tpl', - 1 => 1770828319, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_698ce81087b505_07608517 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_323782649698ce81086ce17_81897685', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_323782649698ce81086ce17_81897685 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - - - - -
    -

    Les projets de getValue('user')->getPseudo();?> -

    - -
    - getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProjectToDisplay')) > 0) {?> - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach0DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> - -

    Cet utilisateur n'a pas encore publié de projets.

    - -
    -
    - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698aed2fac7079_66630300', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb' => - array ( - 0 => 'views/admin.tpl', - 1 => 1770712365, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698aed2fac7079_66630300 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_701047722698aed2faa98f9_91663021', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_701047722698aed2faa98f9_91663021 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -?> - - -
    - - - -
    -
    - -
    - -
    -
    -
    -

    Dashboard

    -
    - -
    -
    -

    Gestion de l'utilsateur

    -

    Changer le statut ou supprimer un utilisateur

    -
    -
    - -
    -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    - -
    -
    -

    Gestion des catégories

    -
    -
    -
    -

    Modifier une catégorie existante

    - -
    -
    - - -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Créer une nouvelle catégorie

    -
    - - -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698aed2fea7fd1_77495932', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'b1b065356827f03a32a2809f87f59bd19d86da99' => - array ( - 0 => 'views/_partial/footer.tpl', - 1 => 1770634036, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698aed2fea7fd1_77495932 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; -?> - - - src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"> -> - - src="js/scripts.js"> -> - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698aed2fe0e338_92194390', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'b3c0a235f975d8741b25531347290b4e4994470b' => - array ( - 0 => 'views/_partial/header.tpl', - 1 => 1770634036, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698aed2fe0e338_92194390 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; -?> - - - - - - - - - src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"> -> - Folliow - - - - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6989b40d157c69_73022561', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'b44ab733c93381dbf5dbbeae871506874cefd9d6' => - array ( - 0 => 'views/login.tpl', - 1 => 1770632188, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_6989b40d157c69_73022561 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_3583856956989b40d14e663_91083378', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_3583856956989b40d14e663_91083378 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - -
    - getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrError')) > 0) {?> -
    - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrError'), 'strError'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('strError')->value) { -$foreach0DoElse = false; -?> -

    getValue('strError');?> -

    - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    - - -
    - - -
    - -
    - - -
    -
    - - -
    - - -

    Connexion

    - - -

    - Connectez-vous à votre compte. -

    - - - -
    - -
    - - -
    - - -
    - - -
    - - -
    - - -
    -
    - - -
    -
    - - -
    - -
    - - -
    - - Pas encore de compte ? - Créer un compte - -
    - - - - -
    -
    - -
    - -
    -
    -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ae96d52fa95_22666517', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'b70ee0d22061ca6100f647634a5658ae38c7b520' => - array ( - 0 => 'views/_partial/preview.tpl', - 1 => 1770634036, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698ae96d52fa95_22666517 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial'; -?> - - -
    -
    - -
    - -
    - -
    - - Photo de profil - -
    -

    getValue('objProject')->getTitle();?> -

    - - - - – getValue('objProject')->getCreatorname();?> - - - - - Lire la suite → - -
    - -
    - -
    -
    getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ae96d2e58d9_91616548', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92' => - array ( - 0 => 'views/home.tpl', - 1 => 1770711346, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_698ae96d2e58d9_91616548 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_826938963698ae96d2e14b1_12340515', "content"); -?> - -getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_826938963698ae96d2e14b1_12340515 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -?> - -
    -

    Folliow

    -

    Là où les talents rencontrent leur avenir

    -

    Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. - Créer un portfolio réellement pertinent aux exigences du marché et rentrez - directement en contact avec les entreprises.

    -
    - -
    -
    -
    - - - - - - Tout -
    -
    -
    - -
    -

    Les 4 derniers articles

    -
    - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach0DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698c977e85f0c3_21491266', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'ccb74eb5d50d5c45223723021f206938ec13f0fa' => - array ( - 0 => 'views/projet_display.tpl', - 1 => 1770795607, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_698c977e85f0c3_21491266 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_377944550698c977e7c9731_58670975', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_377944550698c977e7c9731_58670975 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -?> - -
    - - - -
    Email envoyé avec succès.
    - -
    Erreur lors de l'envoi de l'email.
    - - -
    - - -
    - -

    getValue('objProject')->getTitle();?> -

    - -

    - getValue('arrProject')['category_name'] ?? 'Général';?> - -

    - -
    - -
    - -
    -

    Description

    -

    getValue('objProject')->getDescription();?> -

    - -
    - getValue('objProject')->getContent();?> - -
    -
    - - -
    -
    - - - - - - - -
    -
    - -
    - - -
    -
    - - - -
    getValue('objProject')->getCreatorName();?> -
    - -

    - Publié le getValue('objProject')->getCreation_date();?> - -

    - - - -
    -
    - -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_69949cd5b10bc9_79471252', + 'unifunc' => 'content_69949df6036d29_81013837', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( array ( ), ))) { -function content_69949cd5b10bc9_79471252 (\Smarty\Template $_smarty_tpl) { +function content_69949df6036d29_81013837 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial'; ?>
    diff --git a/templates_c/d1ce76cd275b7aacbc06533821a89d7d735c5727_0.file_header.tpl.php b/templates_c/d1ce76cd275b7aacbc06533821a89d7d735c5727_0.file_header.tpl.php deleted file mode 100644 index 5601ea4..0000000 --- a/templates_c/d1ce76cd275b7aacbc06533821a89d7d735c5727_0.file_header.tpl.php +++ /dev/null @@ -1,111 +0,0 @@ -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_699487a3bfa552_65946637', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'd1ce76cd275b7aacbc06533821a89d7d735c5727' => - array ( - 0 => 'views/_partial/header.tpl', - 1 => 1771340938, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_699487a3bfa552_65946637 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views\\_partial'; -?> - - - - - - - - - src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"> -> - Folliow - - - - - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_699487a3e78223_34934520', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'd60fb02b58bc4794052e022152a4d410b20abede' => - array ( - 0 => 'views/_partial/preview.tpl', - 1 => 1771253012, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_699487a3e78223_34934520 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views\\_partial'; -?> - - - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_699487a3810e29_87040457', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'dec070599de91da0c8f203d582a8cc367e0bd265' => - array ( - 0 => 'views/home.tpl', - 1 => 1771341728, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_699487a3810e29_87040457 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_1641473295699487a37f03f7_95408363', "content"); -?> - -getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_1641473295699487a37f03f7_95408363 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -?> - -
    -

    Folliow

    -

    Là où les talents rencontrent leur avenir

    -

    Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. - Créer un portfolio réellement pertinent aux exigences du marché et rentrez - directement en contact avec les entreprises.

    -
    - -
    -
    -
    - - - - - - Tout -
    -
    -
    - -
    -

    Les 4 derniers articles

    -
    - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach0DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -getCompiled()->isFresh($_smarty_tpl, array ( 'version' => '5.7.0', - 'unifunc' => 'content_69949c5bba2e78_15118675', + 'unifunc' => 'content_69949dc5298d55_91076515', 'has_nocache_code' => false, 'file_dependency' => array ( @@ -21,18 +21,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array ( 'file:../app/views/partials/preview.tpl' => 1, ), ))) { -function content_69949c5bba2e78_15118675 (\Smarty\Template $_smarty_tpl) { +function content_69949dc5298d55_91076515 (\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; $_smarty_tpl->getInheritance()->init($_smarty_tpl, true); ?> getInheritance()->instanceBlock($_smarty_tpl, 'Block_168273369269949c5bb97b88_70245840', "content"); +$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_167842904269949dc528e6e6_33223976', "content"); $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); } /* {block "content"} */ -class Block_168273369269949c5bb97b88_70245840 extends \Smarty\Runtime\Block +class Block_167842904269949dc528e6e6_33223976 extends \Smarty\Runtime\Block { public function callBlock(\Smarty\Template $_smarty_tpl) { $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views'; diff --git a/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php b/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php deleted file mode 100644 index fa5dbc1..0000000 --- a/templates_c/ebfd968608976813e893f497c64277110a78bc40_0.file_search.tpl.php +++ /dev/null @@ -1,261 +0,0 @@ -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_698ada80e47fc8_23614044', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'ebfd968608976813e893f497c64277110a78bc40' => - array ( - 0 => 'views/search.tpl', - 1 => 1770634036, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_698ada80e47fc8_23614044 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_1614324265698ada80a61e02_00521357', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_1614324265698ada80a61e02_00521357 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -?> - -
    -

    Rechercher parmi les articles

    -
    -
    -
    -

    - - Rechercher des articles -

    - -
    -
    - - - - Recherchez dans les titres et contenus - -
    - -
    - - -
    - - -
    -
    - Type de recherche par date -
    - getValue('intPeriod') == 0) {?>checked - aria-controls="date-exact date-range"> - -
    -
    - getValue('intPeriod') == 1) {?>checked - aria-controls="date-exact date-range"> - -
    -
    -
    - -
    -
    - Type de recherche par catégories -
    - - -
    -
    -
    - -
    - - - - Format: JJ/MM/AAAA - -
    - - - -
    - - -
    -
    -
    -
    - - -
    -

    Liste des projets

    -
    - getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProject')) == 0) {?> -
    -

    Pas de résultats

    -
    - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach2DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach2DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -
    -
    -
    - -> - // Gestion de l'affichage des champs de date - const periodRadios = document.querySelectorAll('input[name="period"]'); - const dateExact = document.getElementById('date-exact'); - const dateRange = document.getElementById('date-range'); - - function toggleDateFields() { - const selectedPeriod = document.querySelector('input[name="period"]:checked').value; - - if (selectedPeriod === '0') { - dateExact.style.display = 'block'; - dateRange.style.display = 'none'; - } else { - dateExact.style.display = 'none'; - dateRange.style.display = 'block'; - } - } - - periodRadios.forEach(radio => { - radio.addEventListener('change', toggleDateFields); - }); - - // Initialisation au chargement - toggleDateFields(); - -> -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6994875217b403_02249466', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'eda0e4559a4ddfacbd33a6d4c74f4917d3685101' => - array ( - 0 => 'views/project.tpl', - 1 => 1771255302, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:../app/views/partials/preview.tpl' => 1, - ), -))) { -function content_6994875217b403_02249466 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_261778149699487520f5087_45577844', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_261778149699487520f5087_45577844 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\views'; -?> - - -
    -
    -

    Alimenter votre projet

    -
    - - - - -
    - - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - Type de recherche par catégories -
    - - -
    -
    -
    -
    -

    Image thumbnail

    - -
    -
    -

    Image du projet

    - -
    -
    - - -
    -
    - -
    -

    Vous devez vous connecter pour accéder à cette fonctionnalité

    -
    - - - -
    -
    -

    Description

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. - Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    -
    -
    -

    Photos behind the scene

    -
    - -
    -
    -
    -

    Other projects

    -
    - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach1DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach1DoElse = false; -?> - renderSubTemplate("file:../app/views/partials/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -
    -
    -
    - -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6989f3e29dbce4_20550543', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'ee86afd5d4dff200944f3436866afa34a71b920e' => - array ( - 0 => 'views/inscription.tpl', - 1 => 1770634036, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_6989f3e29dbce4_20550543 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_18645663486989f3e29da446_83083224', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_18645663486989f3e29da446_83083224 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views'; -?> - - - - -
    - - -
    -
    - - -
    - - -

    Inscription

    - - -

    - Créez votre compte utilisateur. -

    - - - -
    - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - -
    - @ - -
    -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - - -
    - -
    - - -
    - - Déjà un compte ? - Se connecter - -
    - - -
    - - -
    - -
    -
    -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6989b189902285_60575184', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'f80694cc4829becd656ad4f73c431db5dba4722b' => - array ( - 0 => 'views/admin.tpl', - 1 => 1770630804, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_6989b189902285_60575184 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, true); -?> - - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_13716580806989b1898f9564_82803825', "content"); -$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir); -} -/* {block "content"} */ -class Block_13716580806989b1898f9564_82803825 extends \Smarty\Runtime\Block -{ -public function callBlock(\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'D:\\projetphp\\views'; -?> - - -
    - - - -
    -
    - -
    - -
    -
    -
    -

    Dashboard

    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - -
    - -
    - - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -

    - - -

    -

    - - -

    -

    - - {if (!$objArticle->getId()|is_null)} - - {/if} - -

    -

    - -

    -
    -
    +
    + {if isset($smarty.session.user)} +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    +
    + Catégorie + +
    +
    + +
    + + +
    + +
    + + +
    + +
    + + {* *} +
    +
    + {else} +
    +

    Vous devez vous connecter pour accéder à cette fonctionnalité

    +
    + {/if} +
    {/block} \ No newline at end of file diff --git a/views/project.tpl b/views/project.tpl index c3e33f5..9663eb5 100644 --- a/views/project.tpl +++ b/views/project.tpl @@ -15,7 +15,7 @@ {* Affichage d'un formulaire en cas d'appuie sur le bouton "+" *} {if isset($smarty.post.showForm) || isset($smarty.post.showFormContinue)} {if isset($smarty.session.user)} -
    +
    diff --git a/views/projet_display.tpl b/views/projet_display.tpl deleted file mode 100644 index 21301dc..0000000 --- a/views/projet_display.tpl +++ /dev/null @@ -1,79 +0,0 @@ -{extends file="views/layout.tpl"} - -{block name="content"} -
    - - - {if isset($smarty.get.mail) && $smarty.get.mail === 'ok'} -
    Email envoyé avec succès.
    - {elseif isset($smarty.get.mail) && $smarty.get.mail === 'fail'} -
    Erreur lors de l'envoi de l'email.
    - {/if} - -
    - - -
    - -

    {$objProject->getTitle()}

    - -

    - {$arrProject.category_name ?? 'Général'} -

    - -
    - -
    - -
    -

    Description

    -

    {$objProject->getDescription()}

    - -
    - {$objProject->getContent()} -
    -
    - - -
    - - - - - - - - - -
    - -
    - - -
    -
    - - - -
    {$objProject->getCreatorName()}
    - -

    - Publié le {$objProject->getCreation_date()} -

    - - - -
    -
    - -
    -
    -{/block} \ No newline at end of file From 747bc76de20acad628a1d6bbdc2631105606681c Mon Sep 17 00:00:00 2001 From: GuillaumeH-Cci Date: Wed, 18 Feb 2026 18:56:50 +0100 Subject: [PATCH 39/45] =?UTF-8?q?D=C3=A9bug=20(non=20finin)=20et=20d=C3=A9?= =?UTF-8?q?but=20controller=20addedit=5Fproject?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/project_controller.php | 21 +++++++++--------- entities/project_entity.php | 1 - models/project_model.php | 21 +++++++++++++++++- ...d_Researcher_of_the_Ring__Idle_Sprite.webp | Bin 112174 -> 0 bytes ...ant_To_Get_Beat__Hurtily__Idle_Sprite.webp | Bin 241396 -> 0 bytes .../Capture d'écran 2025-11-03 084423.png | Bin 16081 -> 0 bytes .../Capture d'écran 2025-11-06 140822.png | Bin 239 -> 0 bytes .../Capture d'écran 2025-11-06 144916.png | Bin 54536 -> 0 bytes .../Capture d'écran 2025-11-06 161706.png | Bin 36193 -> 0 bytes .../Capture d'écran 2026-01-15 144610.png | Bin 725348 -> 0 bytes .../Capture d'écran 2026-01-20 140950.png | Bin 77090 -> 0 bytes views/addedit_project.tpl | 10 ++++----- 12 files changed, 35 insertions(+), 18 deletions(-) delete mode 100644 uploads/projects/320px-Mad_Researcher_of_the_Ring__Idle_Sprite.webp delete mode 100644 uploads/projects/800px-You_Want_To_Get_Beat__Hurtily__Idle_Sprite.webp delete mode 100644 uploads/projects/Capture d'écran 2025-11-03 084423.png delete mode 100644 uploads/projects/Capture d'écran 2025-11-06 140822.png delete mode 100644 uploads/projects/Capture d'écran 2025-11-06 144916.png delete mode 100644 uploads/projects/Capture d'écran 2025-11-06 161706.png delete mode 100644 uploads/projects/Capture d'écran 2026-01-15 144610.png delete mode 100644 uploads/projects/Capture d'écran 2026-01-20 140950.png diff --git a/controllers/project_controller.php b/controllers/project_controller.php index 5dd98dc..95267e4 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -120,10 +120,12 @@ $_SESSION['title'] = $_POST['titleProject']??""; $_SESSION['description'] = $_POST['descProject']??""; $_SESSION['content'] = $_POST['textProject']??""; + $_SESSION['category']= $_POST['category']??0; $_SESSION['thumbnail'] = $_FILES['imageThumbnail']['name']??""; + $_SESSION['images'] = $_FILES['imageProject']['name']??""; $_SESSION['status'] = 'en_attente'; $_SESSION['user_id'] = $_SESSION['user']['user_id']??null; - $_SESSION['category']= $_POST['category']??0; + $objProject = new Project(); @@ -137,7 +139,7 @@ if (($_SESSION['thumbnail'] != null)){ $strDest = ""; if ((count($_FILES) > 0) && ($_FILES['imageProject']['error'] != 4)){ - $strDest = 'uploads/projects/'.$_FILES['imageProject']['name']; + $strDest = 'uploads/projects/' . $_FILES['imageProject']['name']; move_uploaded_file($_FILES['imageProject']['tmp_name'], $strDest); } } @@ -148,11 +150,13 @@ * 3. Envoie des données à la BDD */ if (isset($_POST['sendProject'])) { - $objProject->hydrate($_SESSION); - $objProject->setThumbnail($strDest); + $objProject->hydrate($_SESSION); + $objProject->setThumbnail($strDest); $objProjectModel->insert($objProject); - header("Location: index.php"); - exit; + // header("Location:index.php"); + // exit; + var_dump($_SESSION); + var_dump($objProject); } // } else if (isset($_POST['toContinue'])) { @@ -163,13 +167,10 @@ // exit; // } - var_dump($_SESSION); - var_dump($objProject); - $this->_arrData['arrCategory'] = $arrCategory; $this->_arrData['arrProjectToDiplay'] = $arrProjectToDisplay; $this->_arrData['arrImageToDiplay'] = $arrImageToDisplay; - + $this->_display("project"); // _display('addedit_project'); // _content = $content; } - /** * Récupération de la date de création * @param string lang de formatage de la date (par défaut = "fr_FR") diff --git a/models/project_model.php b/models/project_model.php index 7e91fb5..8a35102 100644 --- a/models/project_model.php +++ b/models/project_model.php @@ -125,6 +125,12 @@ return $rqPrep->fetch(); } + /** + * Fonction de changement de status (accepter) d'un projet en BDD + * @author Guillaume + * @param int $id l'id du projet + * @return bool Est-ce que la requête s'est bien passée + */ public function accept(int $id){ //SQL pour changer le status en accept @@ -136,6 +142,12 @@ return $this->_db->query($strRq); } + /** + * Fonction de changement de status (refusé) d'un projet en BDD + * @author Guillaume + * @param int $id l'id du projet + * @return bool Est-ce que la requête s'est bien passée + */ public function refuse(int $id){ $strRq = "UPDATE project @@ -144,7 +156,13 @@ return $this->_db->query($strRq); } - + + /** + * Fonction de suppression d'un projet en BDD + * @author Guillaume + * @param int $id l'id du projet + * @return bool Est-ce que la requête s'est bien passée + */ public function delete(int $id){ $strRq = "DELETE FROM project @@ -155,6 +173,7 @@ /** * Fonction de mise à jour d'un projet en BDD + * @author Guillaume * @param object $objProject L'objet utilisateur * @return bool Est-ce que la requête s'est bien passée */ diff --git a/uploads/projects/320px-Mad_Researcher_of_the_Ring__Idle_Sprite.webp b/uploads/projects/320px-Mad_Researcher_of_the_Ring__Idle_Sprite.webp deleted file mode 100644 index 13d2019eca6a6c22ff0ddb66fccbbe2e80c96af2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112174 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ⅈ}82%qh_?|_yzXN}1i4d8g>Xyw){ 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
  • eUKu@XdxuD$+ybgGd+S-&=2Ont=dzvqEenKRP2s;NTvO=2Ajad-dLgsl>@H$O zNm8_F)-*t#I7Plrck+kpN41;svLc%a7|SjaX%$m$l920fk05v~X22X}mgR_LW2|QR z9iG%1191Os$4^XQ+?K7Y^KII0OYwLO&*Y&JA1CU+%|8G^iR;o8{731^gH8toZ}{e# zH(MH1#t1k&OV^+Mu;Z%?Z>k4w(hpMI<_|P6uEA1bVZlRsnF^X(bTigxOsjcK2i_-lA|pdQsT>Pkx4-@ukJ6YnE9OtSThW z5yEK9S@F2xaY_W}X_7LEb)5BbeOZS%ntl_)VOf%7CPho^Gyn+5#qQNPcxRsBp=ysf z{DW{6Alv8DF+X(UojTsiLR0Ujq}sIY9|Puk1BFESx*YBsQ=lzTtoyFjQWoor^O7^jT;;@hjBXKT zWpx+;?CWVeJ~d;_<5OL$wA#9p-TmN998tmhjT`0vcvp559UtG$nSb~{{pRj(Rtk>C zxlCXWUG{#+NRSb;7y}(q5U0xTIkCxPoPsC%s^0c18seoV1AQH_u#zR zlzVdFJq{TJ=>Dun-`BptQQIR#Xz}kv;a`2BVJt`u8W6%J#Z6pUm=+4%CWt|PhvA~d zCw+_KUle5KrlM{FZcDA#MTLHnCJnKq-Kd1m^$aV)@psF=lw=hECC;#{4qIQY$mly1 zy&1MjV_1fV4&jQhYouhgJ zI;9ii%m%$(d8Cx?MQ>_V&~}R&I|QH9A}7uSc=}}y|EREZLB=M`em4J;I5;&o(;%UN zvWp7z>wnQBUOHTC$Hg^3A$hI;{pVKLupl)9Gz^<#Bs?vQPsthFw5A+ zcP5oN8{Uoz$K|*NzgVBcjJIs=c7$OYh2tz4)(Jfy;t7)&xmRa zlFW#3u^m36z(wMjC>fEpbsat%DSVyky2iS?@r|~=mHhcr{?a21YD&F%w`in#$JQpq zG(FRK*4)*nvi4wf9Y&pGtEAB;nwv3ZttoK5>&g`ssT;p^N0jt-LhoZWF%sYOHskP+ zjXr>UEtrN21~m!D^)nrQzWwhj7Z9KAg=$!T0q2LA{qhVSe9&Z%X(O=+wWoNl5DQiV z&}O)VF)R})mf!AT!iZu!$2Kok0R%6big17&mF4HQEq2q_#pHNj{lOx}8bqtgwABez zBuPw-nZ_%9d(+m_3Fc_4f8Tx1@cJxhO0ub*E0@O;SB4Rf$=(c0LV*fnDA&Q$apxpc zkA3&d-bbtE;zHu)UdNrpLD&*M$K=hJ@LT(xKVOvm#sSTG#DInE`Lqw#|V$bBlbH>Mfc0l91 zRl3@-l;d6TthLxGASsaPpgI!QL>pAa+CGPo05U1=WO
    )f*syNN13H>#?D;L5rS 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⪙x#soexif&9gcIJoeqLdS?U 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%0Dcb5CccZmOG^u5^t`dY#5<4Gju- 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

    Yumkiw!3fB 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 o&eYYl^!&6et8KR=hYAcXucnio3hJ6N*oGp7))( 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 diff --git a/uploads/projects/Capture d'écran 2025-11-06 144916.png b/uploads/projects/Capture d'écran 2025-11-06 144916.png deleted file mode 100644 index 84a924e41b299b1e9e85aa211f018ae7314795c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54536 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

    ;`%9JRO_Kz_UoDj6NqT`a-De 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 P;FsuoDdD1bI^X^eG&{c6 diff --git a/uploads/projects/Capture d'écran 2026-01-15 144610.png b/uploads/projects/Capture d'écran 2026-01-15 144610.png deleted file mode 100644 index cd2ab68faf4477fe3c7f03472860515879e7bfd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725348 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

  • - {$success_message|vardump} - {include file="views/_partial/messages.tpl"} \ No newline at end of file + {include file="views/_partial/messages.tpl"} From e6c64912c3ae0f53cbfa2c6df76c4c9448ad888a Mon Sep 17 00:00:00 2001 From: GuillaumeH-Cci Date: Fri, 20 Feb 2026 11:14:45 +0100 Subject: [PATCH 42/45] Prblm --- controllers/project_controller.php | 279 ++++++++++++------ ...23bf5795a2721f507c3fc6_0.file_home.tpl.php | 69 ----- ...2de6dcd14dc34a20b16_0.file_preview.tpl.php | 66 ----- entities/image_entity.php | 8 +- entities/project_entity.php | 10 +- models/project_model.php | 3 +- views/addedit_project.tpl | 9 +- views/project.tpl | 93 ------ 8 files changed, 203 insertions(+), 334 deletions(-) delete mode 100644 controllers/templates_c/299f75d7692a19207f23bf5795a2721f507c3fc6_0.file_home.tpl.php delete mode 100644 controllers/templates_c/c724044e55872f26030b02de6dcd14dc34a20b16_0.file_preview.tpl.php delete mode 100644 views/project.tpl diff --git a/controllers/project_controller.php b/controllers/project_controller.php index 95267e4..3c060df 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -25,7 +25,7 @@ public function home(){ - $intCategory = 0; + $intCategory = 0; if (!empty($_GET['filter_cat'])) { $intCategory = (int) $_GET['filter_cat']; } @@ -93,87 +93,196 @@ /** * Fonction d'affichage de la page projet + * @author Christel adapter par Guillaume */ - public function project (){ - - $objCategoryModel = new CategoryModel; - $arrCategory = $objCategoryModel->findAllCategory(); - - $objProjectModel = new ProjectModel; - $arrProject = $objProjectModel->findAll(4); - $arrProjectToDisplay = array(); - foreach($arrProject as $arrDetProject){ - $objProject = new Project; - $objProject->hydrate($arrDetProject); - $arrProjectToDisplay[] = $objProject; - } - - $objImageModel = new ImageModel; - $arrImage = $objImageModel->findAllImage(4); - $arrImageToDisplay = array(); - foreach($arrImage as $arrDetImage){ - $objImage = new Image; - $objImage->hydrate($arrDetImage); - $arrImageToDisplay[] = $objImage; - } - //Variable data - $_SESSION['title'] = $_POST['titleProject']??""; - $_SESSION['description'] = $_POST['descProject']??""; - $_SESSION['content'] = $_POST['textProject']??""; - $_SESSION['category']= $_POST['category']??0; - $_SESSION['thumbnail'] = $_FILES['imageThumbnail']['name']??""; - $_SESSION['images'] = $_FILES['imageProject']['name']??""; - $_SESSION['status'] = 'en_attente'; - $_SESSION['user_id'] = $_SESSION['user']['user_id']??null; - - - $objProject = new Project(); - - /** - * Créer par Besnik le GOAT et Guillaume - * - * @return bool pour savoir si le fichier existe, - * puis déplace vers le fichier uploads avec les images projet des utilisateurs - * Communication avec la BDD - */ - if (($_SESSION['thumbnail'] != null)){ - $strDest = ""; - if ((count($_FILES) > 0) && ($_FILES['imageProject']['error'] != 4)){ - $strDest = 'uploads/projects/' . $_FILES['imageProject']['name']; - move_uploaded_file($_FILES['imageProject']['tmp_name'], $strDest); - } - } - - /** En cas d'appuis sur le bouton d'envoie ou celui de remettre a plus tard - * 1. Changement de status - * 2. Hydratation avec les informations récupéré de l'utilisateur - * 3. Envoie des données à la BDD - */ - if (isset($_POST['sendProject'])) { - $objProject->hydrate($_SESSION); - $objProject->setThumbnail($strDest); - $objProjectModel->insert($objProject); - // header("Location:index.php"); - // exit; - var_dump($_SESSION); - var_dump($objProject); + public function addedit_project() { + if (!isset($_SESSION['user'])){ // Pas d'utilisateur connecté + header("Location:index.php?ctrl=error&action=error_403"); + exit; } - - // } else if (isset($_POST['toContinue'])) { - // $objProject->hydrate($_SESSION); - // $objProject->setThumbnail($strDest); - //$objProjectModel->insert($objProject); - // header("Location: index.php"); - // exit; - // } - - $this->_arrData['arrCategory'] = $arrCategory; - $this->_arrData['arrProjectToDiplay'] = $arrProjectToDisplay; - $this->_arrData['arrImageToDiplay'] = $arrImageToDisplay; - $this->_display("project"); // _display('addedit_project'); // find($_GET['id']); + $objProject->hydrate($arrProject); // BDD + } + + + + // Tester le formulaire + $arrError = []; + if (count($_POST) > 0) { + + $objProject->hydrate($_POST); // Formulaire + if ($objProject->getTitle() == ""){ + $arrError['title'] = "Le titre est obligatoire"; + } + + if ($objProject->getDescription() == ""){ + $arrError['description'] = "La description est obligatoire"; + } + + if ($objProject->getContent() == ""){ + $arrError['content'] = "Le contenu est obligatoire"; + } + + // Vérification de l'image + $arrTypeAllowed = array('image/jpeg', 'image/png', 'image/webp'); + if ($_FILES['imageThumbnail']['error'] != 4){ + if (!in_array($_FILES['imageThumbnail']['type'], $arrTypeAllowed)){ + $arrError['imageThumbnail'] = "Le type de fichier n'est pas autorisé"; + }else{ + // Vérification des codes d'erreur + switch ($_FILES['imageThumbnail']['error']){ + case 0 : + // Renommage de l'image + $strImageName = uniqid().".webp"; + + /* uniquement si on veut garder l'extension du fichier originel */ + /*switch ($_FILES['img']['type']){ + case 'image/jpeg' : + $strImageName .= '.jpg'; + break; + case 'image/png' : + $strImageName .= '.png'; + break; + }*/ + + // Récupère le nom de l'image avant changement + $strOldImg = $objProject->getThumbnail(); + // Mise à jour du nom de l'image dans l'objet + $objProject->setThumbnail($strImageName); + break; + case 1 : + $arrError['imageThumbnail'] = "Le fichier est trop volumineux"; + break; + case 2 : + $arrError['imageThumbnail'] = "Le fichier est trop volumineux"; + break; + case 3 : + $arrError['imageThumbnail'] = "Le fichier a été partiellement téléchargé"; + break; + case 6 : + $arrError['imageThumbnail'] = "Le répertoire temporaire est manquant"; + break; + default : + $arrError['imageThumbnail'] = "Erreur sur l'image"; + break; + } + } + + }else{ + // Est-ce que le fichier existe ? + if (is_null($objProject->getThumbnail())){ + $arrError['imageThumbnail'] = "L'image est obligatoire"; + } + } + + // Si le formulaire est rempli correctement + if (count($arrError) == 0){ + if (is_null($objProject->getId())){ + // => Ajout dans la base de données + $boolOk = $objProjectModel->insert($objProject); + }else{ + $boolOk = $objProjectModel->updateProject($objProject); + } + if ($boolOk === true){ + if (isset($strImageName)){ + // Création du chemin de destination + $strDest = $_ENV['IMG_PATH'].$strImageName; + // Récupération de la source de l'image + $strSource = $_FILES['imageThumbnail']['tmp_name']; + // Récupération des dimensions de l'image source + list($intWidth, $intHeight) = getimagesize($strSource); + // Dimensions de destination + $intDestWidth = 200; + $intDestHeight = 250; + + // Calcul du ratio de destination + $fltDestRatio = $intDestWidth / $intDestHeight; + // Calcul du ratio de la source + $fltSourceRatio = $intWidth / $intHeight; + + // Détermination de la zone à cropper + if ($fltSourceRatio > $fltDestRatio) { + // L'image source est plus large → on crop en largeur + $intCropHeight = $intHeight; + $intCropWidth = round($intHeight * $fltDestRatio); + $intCropX = ($intWidth - $intCropWidth) / 2; // Centrage horizontal + $intCropY = 0; + } else { + // L'image source est plus haute → on crop en hauteur + $intCropWidth = $intWidth; + $intCropHeight = round($intWidth / $fltDestRatio); + $intCropX = 0; + $intCropY = ($intHeight - $intCropHeight) / 2; // Centrage vertical + } + + // Création d'une image 'vide' + $objDest = imagecreatetruecolor($intDestWidth, $intDestHeight); + + // Création d'un objet image à partir de la source (attention au type de fichier) + switch ($_FILES['imageThumbnail']['type']){ + case 'image/jpeg' : + $objSource = imagecreatefromjpeg($strSource); + break; + case 'image/png' : + $objSource = imagecreatefrompng($strSource); + break; + case 'image/webp' : + $objSource = imagecreatefromwebp($strSource); + break; + } + + // Mise à jour de l'image 'vide' avec les informations de dimension + //imagecopyresized($objDest, $objSource, 0, 0, 0, 0, 200, 250, $intWidth, $intHeight); + imagecopyresampled($objDest, $objSource, + 0, 0, $intCropX, $intCropY, + $intDestWidth, $intDestHeight, $intCropWidth, $intCropHeight); + + // Si la copie de l'image a bien été effectuée à la destination voulue + $boolOk = imagewebp($objDest, $strDest); + } + if ($boolOk === true){ + //if (move_uploaded_file($_FILES['img']['tmp_name'], $strDest)){ + // suppression de l'ancienne image + $strOldFile = $_ENV['IMG_PATH'].$strOldImg; + if (file_exists($strOldFile)){ + unlink($strOldFile); + } + + if (is_null($objProject->getId())){ + $_SESSION['success'] = "Le projet a bien été créé"; + }else{ + $_SESSION['success'] = "Le projet a bien été modifié"; + } + header("Location:index.php"); + exit; + }else{ + $arrError['imageThumbnail'] = "Erreur dans le traitement de l'image"; + } + }else{ + $arrError[] = "Erreur lors de l'ajout"; + } + } + } + + var_dump($_SESSION); + var_dump($objProject); + var_dump($arrError); + + + // Données pour la vue + $this->_arrData['arrCategory'] = $objCategoryModel->findAllCategory(); + $this->_arrData['objProject'] = $objProject; // On passe l'objet à la vue pour pré-remplir les champs + $this->_arrData['arrError'] = $arrError; + + $this->_display('addedit_project'); + } public function display() { @@ -326,16 +435,4 @@ header("Location: index.php?ctrl=project&action=addedit_project&id=".$intId); exit; } - - public function addedit_project() { - - $objCategoryModel = new CategoryModel; - $arrCategory = $objCategoryModel->findAllCategory(); - - $_SESSION['category']= $_POST['category']??0; - - $this->_arrData['arrCategory'] = $arrCategory; - - $this->_display('addedit_project'); - } } \ No newline at end of file diff --git a/controllers/templates_c/299f75d7692a19207f23bf5795a2721f507c3fc6_0.file_home.tpl.php b/controllers/templates_c/299f75d7692a19207f23bf5795a2721f507c3fc6_0.file_home.tpl.php deleted file mode 100644 index 208dcfd..0000000 --- a/controllers/templates_c/299f75d7692a19207f23bf5795a2721f507c3fc6_0.file_home.tpl.php +++ /dev/null @@ -1,69 +0,0 @@ -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6985a47abcda40_19846426', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - '299f75d7692a19207f23bf5795a2721f507c3fc6' => - array ( - 0 => 'views/home.tpl', - 1 => 1770365364, - 2 => 'file', - ), - ), - 'includes' => - array ( - 'file:views/_partial/preview.tpl' => 1, - ), -))) { -function content_6985a47abcda40_19846426 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\projetphp\\views'; -$_smarty_tpl->getInheritance()->init($_smarty_tpl, false); -?> - -getInheritance()->instanceBlock($_smarty_tpl, 'Block_3150142016985a47abb6c29_00747518', "content"); -?> - - - -
    -

    Folliow

    -

    Là où les talents rencontrent leur avenir

    -

    Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises. - Créer un portfolio réellement pertinent aux exigences du marché et rentrez - directement en contact avec les entreprises.

    -
    - -
    -

    Les 4 derniers articles

    -
    - - getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject'); -$foreach0DoElse = true; -foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) { -$foreach0DoElse = false; -?> - renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir); -?> - getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?> -
    -getCompiled()->isFresh($_smarty_tpl, array ( - 'version' => '5.7.0', - 'unifunc' => 'content_6985a47ad585d5_25749521', - 'has_nocache_code' => false, - 'file_dependency' => - array ( - 'c724044e55872f26030b02de6dcd14dc34a20b16' => - array ( - 0 => 'views/_partial/preview.tpl', - 1 => 1770365554, - 2 => 'file', - ), - ), - 'includes' => - array ( - ), -))) { -function content_6985a47ad585d5_25749521 (\Smarty\Template $_smarty_tpl) { -$_smarty_current_dir = 'C:\\wamp64\\www\\projetphp\\views\\_partial'; -?>
    _db->prepare($strRq); $rqPrep->bindValue(":title", $objProject->getTitle(), PDO::PARAM_STR); diff --git a/views/addedit_project.tpl b/views/addedit_project.tpl index 80fd455..6a75307 100644 --- a/views/addedit_project.tpl +++ b/views/addedit_project.tpl @@ -3,21 +3,21 @@ {block name="content"}
    {if isset($smarty.session.user)} -
    +
    - +
    - +
    - +
    @@ -46,7 +46,6 @@
    - {* *}
    {else} diff --git a/views/project.tpl b/views/project.tpl deleted file mode 100644 index 9663eb5..0000000 --- a/views/project.tpl +++ /dev/null @@ -1,93 +0,0 @@ -{extends file="views/layout.tpl"} - -{block name="content"} - -
    -
    -

    Alimenter votre projet

    -
    - - {if isset($smarty.post.toContinue)} - - {/if} -
    - - {* Affichage d'un formulaire en cas d'appuie sur le bouton "+" *} - {if isset($smarty.post.showForm) || isset($smarty.post.showFormContinue)} - {if isset($smarty.session.user)} -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - Type de recherche par catégories -
    - - -
    -
    -
    -
    -

    Image thumbnail

    - -
    -
    -

    Image du projet

    - -
    -
    - - -
    -
    - {else} -
    -

    Vous devez vous connecter pour accéder à cette fonctionnalité

    -
    - {/if} - {/if} - -
    -
    -

    Description

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. - Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    -
    -
    -

    Photos behind the scene

    -
    - -
    -
    -
    -

    Other projects

    -
    - {foreach $arrProjectToDisplay as $objProject} - {include file="../app/views/partials/preview.tpl"} - {/foreach} -
    -
    -
    -
    - -{/block} \ No newline at end of file From e627063ad89c01eed1fa0aa6d05c777f0560d452 Mon Sep 17 00:00:00 2001 From: "laura.chevillet" Date: Fri, 20 Feb 2026 15:44:16 +0100 Subject: [PATCH 43/45] Page aide utilisateur ok --- controllers/page_controller.php | 17 +++ views/_partial/footer.tpl | 2 +- views/_partial/header.tpl | 1 - views/help.tpl | 246 ++++++++++++++++++++++++++++++++ 4 files changed, 264 insertions(+), 2 deletions(-) create mode 100644 controllers/page_controller.php create mode 100644 views/help.tpl diff --git a/controllers/page_controller.php b/controllers/page_controller.php new file mode 100644 index 0000000..c7ff933 --- /dev/null +++ b/controllers/page_controller.php @@ -0,0 +1,17 @@ +_display("help"); + + } + } \ No newline at end of file diff --git a/views/_partial/footer.tpl b/views/_partial/footer.tpl index 38e86aa..d79068a 100644 --- a/views/_partial/footer.tpl +++ b/views/_partial/footer.tpl @@ -13,7 +13,7 @@
  • Recruter
  • Partenariat
  • Blog -
  • Aide et support +
  • Aide et support
  • diff --git a/views/_partial/header.tpl b/views/_partial/header.tpl index 5cacc32..4edb6dc 100644 --- a/views/_partial/header.tpl +++ b/views/_partial/header.tpl @@ -84,5 +84,4 @@
    - {$success_message|vardump} {include file="views/_partial/messages.tpl"} \ No newline at end of file diff --git a/views/help.tpl b/views/help.tpl new file mode 100644 index 0000000..bb91c6c --- /dev/null +++ b/views/help.tpl @@ -0,0 +1,246 @@ +{extends file="views/layout.tpl"} + +{block name="content"} +

    Bienvenue sur l'aide & support de Folliow !

    +
    +

    Ici, vous trouverez de l'aide pour naviguer sur notre site.

    +
    + +
    +{if isset($smarty.session.user)} + + {if $smarty.session.user.user_status == 3} +
    +
    +

    + +

    +
    +
    +

    Un haut, dans votre barre de navigation, vous avez un lien pour ajouter un nouveau projet. + Il faudra remplir votre projet avec un titre, une description, des images (jusqu'à 20 par projet) et une image de présentation qui apparaitra en illustration dans la liste des projets.
    + Plus votre projet est rempli, plus il sera intéressant pour les autres profils, alors n'hésitez pas à bien le remplir !

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    Une fois votre projet créé, vous avez la possibilité de modifier son contenu. Si vous êtes bien connecté à votre compte, vous pouvez aller sur votre profil et dans la liste de vos projets, + il vous suffira de cliquer sur "éditer" pour voir toutes les informations apparaitres et changer directement ce que vous souhaitez modifier. + N'oubliez pas de valider vos modifications !

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    Si vous êtes bien connecté à votre compte, vous pouvez cliquer sur votre photo de profil en haut à droite de votre écran pour accéder à votre profil. + Vous pourrez ensuite modifier vos informations directement depuis votre profil ! + Simple comme "bonjour" :)

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    Si vous avez des questions ? Un problème avec votre compte ? + Vous souhaitez supprimer toutes vos données ou débloquer votre compte suite à une modération ? N'hésitez pas à nous écrire à projet.folliow@hotmail.com !

    +
    +
    +
    +
    + + {elseif $smarty.session.user.user_status == 2} +
    +
    +

    + +

    +
    +
    +

    Bienvenue dans notre team de modérateurs ! Vous avez maintenant accès à de nouvelles fonctionnalités. + Vous verez le statut de chaque projet et image en dessous de chacun. Si rien n'est mentionné, celà signifie que le projet est déjà approuvé !

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    Très bonne question ! En plus du statut du projet ou de l'image, vous avez également accès à 3 boutons : approuver, refuser et supprimer. + Si le projet est valide à nos conditions d'utilisation de Folliow, vous pouvez l'approuver. Si vous pensez qu'il faut légèrement modifier ou adapter, vous pouvez le refuser et l'utilisateur pourra modifier son projet.

    +

    Et si le projet enfreint nos règles d'utilisation, vous pouvez supprimer le projet de l'utilisateur. Attention, cette action est définitive. + N'hésitez pas à signaler un utilisateur à l'administrateur en cas de besoin !

    +
    +
    +
    +
    +

    + +

    +
    +
    + De la même manière que vous pouvez modérer un projet ! Dans la liste des images, vous aurez la possibilité de refuser, approuver ou bien supprimer une image. +
    +
    +
    +
    +

    + +

    +
    +
    +

    Si vous avez des questions ? Une fonctionnalité que vous avez du mal à comprendre ? Des suggestions d'amélioration ? N'hésitez pas à nous écrire à projet.folliow@hotmail.com !

    +
    +
    +
    +
    + + {elseif $smarty.session.user.user_status == 1} +
    +
    +

    + +

    +
    +
    +

    Rien de plus simple ! Si vous êtes connecté à votre compte, un lien "admin" sera visible dans votre barre de navigation. + Cliquez dessus et vous voici dans l'antre réservée à nos fabuleux administrateurs !

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    La première fonctionnalité accessible sur votre Dashbord est la maintenance utilisateur. Vous pouvez dans le menu déroulant seléctionner l'utilisateur concerné par votre action. + Un nouveau modérateurs rejoint l'équipe ? Il suffira ensuite de choisir dans le menu déroulant, son nouveau statut ! N'oubliez pas de valider la modification !

    +

    Oh, oh... Quelqu'un n'a pas respecté nos règles de modération et vous devez maintenant supprimer cette utilisateur... Après l'avoir séléctionné, vous pouvez appuyer sur le bouton "supprimer l'utilisateur". + Nous vous demanderons une confirmation avant de finaliser la suppression. Attention ! Cette action est définitive et l'utilisateur perdra tous ses projets !

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    Voici la seconde partie de votre Dashbord. Si celà vous semble judicieux ou suite à des suggestions d'utilisateurs, vous pouvez modifier l'intitulé d'une catégorie. + Dans le menu déroulant, choisissez la catégorie concerncée, puis écrivez son nouveau nom dans le champ "nouveau nom de la catégorie". N'oubliez pas de valider le changement !

    +

    Et si vous souhaitez créer une nouvelle catégorie, écrivez son intitulé dans le champ "nom de la nouvelle catégorie" et validez la création. Votre nouvelle catégorie apparait déjà dans le menu déroulant !

    +

    La suppression d'une catégorie n'est pas possible, car beaucoup de projet se retrouveraient orphelins :( Mais avec la modification et la création, vous avez les outils nécessaire pour organiser le classement de tous nos beaux projets.

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    Vous avez des questions ? Un problème avec votre espace administrateur ou une suggestion d'amélioration ? N'hésitez pas à nous écrire à projet.folliow@hotmail.com !

    +

    +
    +
    +
    + {/if} + +{else} +
    +
    +

    + +

    +
    +
    +

    Folliow est un réseau social de portfolio. Il vous permet de rassembler et mettre en avant tous les projets que vous avez effectué ! + Et si vous êtes rectruteur à la recherche de talents, vous pourrez rechercher les profils en fonction de vos besoins, partager leur contenus et les contacter si vous souhaitez collaborer avec eux.

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    En haut à droite de votre écran, vous avez le lien "s'inscrire". Nous demandons certaines informations obligatoires pour l'identification, + ensuite à vous de remplir les informations complémentaires pour alimenter votre profil et permettre aux autres utilisateurs de mieux vous connaitre et vous contacter.

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    Lorsque vous consultez un projet, vous pouvez remplir le champ "email" avec l'email de la personne à qui vous souhaitez partager le projet. + Votre contact recevra en moins de 5 minutes, un mail de notre part avec le lien vers le projet en question ! Pratique, n'est-ce pas ?

    +
    +
    +
    +
    +

    + +

    +
    +
    +

    Si vous avez des questions, n'hésitez pas à nous écrire à projet.folliow@hotmail.com !

    +
    +
    +
    +
    +{/if} +
    +
    +
    + +{/block} \ No newline at end of file From d5609324abfce9dff6cb65c59ad3b312ef4e7be0 Mon Sep 17 00:00:00 2001 From: GuillaumeH-Cci Date: Fri, 20 Feb 2026 16:40:57 +0100 Subject: [PATCH 44/45] =?UTF-8?q?Fonctionnalit=C3=A9=20sur=20addedit=5Fpro?= =?UTF-8?q?ject=20essentiellement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 9 + composer.json | 19 +- composer.lock | 424 +- controllers/project_controller.php | 224 +- entities/project_entity.php | 14 +- index.php | 5 +- models/project_model.php | 51 +- uploads/projects/6998730421d82.webp | Bin 0 -> 7068 bytes uploads/projects/6998793d6b378.webp | Bin 0 -> 8324 bytes vendor/composer/autoload_classmap.php | 5 + vendor/composer/autoload_files.php | 2 + vendor/composer/autoload_psr4.php | 8 +- vendor/composer/autoload_static.php | 48 +- vendor/composer/installed.json | 440 +- vendor/composer/installed.php | 70 +- vendor/composer/platform_check.php | 4 +- vendor/graham-campbell/result-type/LICENSE | 21 + .../graham-campbell/result-type/composer.json | 33 + .../graham-campbell/result-type/src/Error.php | 121 + .../result-type/src/Result.php | 69 + .../result-type/src/Success.php | 120 + vendor/phpmailer/phpmailer/COMMITMENT | 46 - vendor/phpmailer/phpmailer/LICENSE | 502 -- vendor/phpmailer/phpmailer/README.md | 232 - vendor/phpmailer/phpmailer/SECURITY.md | 37 - vendor/phpmailer/phpmailer/SMTPUTF8.md | 48 - vendor/phpmailer/phpmailer/VERSION | 1 - vendor/phpmailer/phpmailer/composer.json | 84 - .../phpmailer/phpmailer/get_oauth_token.php | 182 - .../phpmailer/language/phpmailer.lang-af.php | 26 - .../phpmailer/language/phpmailer.lang-ar.php | 27 - .../phpmailer/language/phpmailer.lang-as.php | 35 - .../phpmailer/language/phpmailer.lang-az.php | 27 - .../phpmailer/language/phpmailer.lang-ba.php | 27 - .../phpmailer/language/phpmailer.lang-be.php | 27 - .../phpmailer/language/phpmailer.lang-bg.php | 27 - .../phpmailer/language/phpmailer.lang-bn.php | 35 - .../phpmailer/language/phpmailer.lang-ca.php | 27 - .../phpmailer/language/phpmailer.lang-cs.php | 28 - .../phpmailer/language/phpmailer.lang-da.php | 39 - .../phpmailer/language/phpmailer.lang-de.php | 28 - .../phpmailer/language/phpmailer.lang-el.php | 33 - .../phpmailer/language/phpmailer.lang-eo.php | 37 - .../phpmailer/language/phpmailer.lang-es.php | 38 - .../phpmailer/language/phpmailer.lang-et.php | 28 - .../phpmailer/language/phpmailer.lang-fa.php | 28 - .../phpmailer/language/phpmailer.lang-fi.php | 27 - .../phpmailer/language/phpmailer.lang-fo.php | 27 - .../phpmailer/language/phpmailer.lang-fr.php | 36 - .../phpmailer/language/phpmailer.lang-gl.php | 27 - .../phpmailer/language/phpmailer.lang-he.php | 27 - .../phpmailer/language/phpmailer.lang-hi.php | 35 - .../phpmailer/language/phpmailer.lang-hr.php | 27 - .../phpmailer/language/phpmailer.lang-hu.php | 27 - .../phpmailer/language/phpmailer.lang-hy.php | 27 - .../phpmailer/language/phpmailer.lang-id.php | 31 - .../phpmailer/language/phpmailer.lang-it.php | 28 - .../phpmailer/language/phpmailer.lang-ja.php | 37 - .../phpmailer/language/phpmailer.lang-ka.php | 27 - .../phpmailer/language/phpmailer.lang-ko.php | 27 - .../phpmailer/language/phpmailer.lang-ku.php | 27 - .../phpmailer/language/phpmailer.lang-lt.php | 27 - .../phpmailer/language/phpmailer.lang-lv.php | 27 - .../phpmailer/language/phpmailer.lang-mg.php | 27 - .../phpmailer/language/phpmailer.lang-mn.php | 27 - .../phpmailer/language/phpmailer.lang-ms.php | 27 - .../phpmailer/language/phpmailer.lang-nb.php | 37 - .../phpmailer/language/phpmailer.lang-nl.php | 38 - .../phpmailer/language/phpmailer.lang-pl.php | 33 - .../phpmailer/language/phpmailer.lang-pt.php | 34 - .../language/phpmailer.lang-pt_br.php | 38 - .../phpmailer/language/phpmailer.lang-ro.php | 33 - .../phpmailer/language/phpmailer.lang-ru.php | 36 - .../phpmailer/language/phpmailer.lang-si.php | 34 - .../phpmailer/language/phpmailer.lang-sk.php | 30 - .../phpmailer/language/phpmailer.lang-sl.php | 36 - .../phpmailer/language/phpmailer.lang-sr.php | 28 - .../language/phpmailer.lang-sr_latn.php | 28 - .../phpmailer/language/phpmailer.lang-sv.php | 27 - .../phpmailer/language/phpmailer.lang-tl.php | 28 - .../phpmailer/language/phpmailer.lang-tr.php | 38 - .../phpmailer/language/phpmailer.lang-uk.php | 28 - .../phpmailer/language/phpmailer.lang-ur.php | 30 - .../phpmailer/language/phpmailer.lang-vi.php | 27 - .../phpmailer/language/phpmailer.lang-zh.php | 29 - .../language/phpmailer.lang-zh_cn.php | 36 - .../phpmailer/src/DSNConfigurator.php | 245 - vendor/phpmailer/phpmailer/src/Exception.php | 40 - vendor/phpmailer/phpmailer/src/OAuth.php | 139 - .../phpmailer/src/OAuthTokenProvider.php | 44 - vendor/phpmailer/phpmailer/src/PHPMailer.php | 5525 ----------------- vendor/phpmailer/phpmailer/src/POP3.php | 470 -- vendor/phpmailer/phpmailer/src/SMTP.php | 1617 ----- vendor/phpoption/phpoption/LICENSE | 201 + vendor/phpoption/phpoption/composer.json | 50 + .../phpoption/src/PhpOption/LazyOption.php | 175 + .../phpoption/src/PhpOption/None.php | 136 + .../phpoption/src/PhpOption/Option.php | 434 ++ .../phpoption/src/PhpOption/Some.php | 169 + vendor/smarty/smarty/CHANGELOG.md | 7 + vendor/smarty/smarty/CONTRIBUTING.md | 2 + .../language-syntax-operators.md | 114 + .../language-function-include.md | 12 +- .../language-assigned-variables.md | 87 +- vendor/smarty/smarty/docs/features.md | 2 + vendor/smarty/smarty/docs/index.md | 19 + .../smarty/smarty/src/Cacheresource/File.php | 10 +- .../smarty/smarty/src/Lexer/TemplateLexer.php | 82 +- .../smarty/src/Lexer/TemplateLexer.plex | 5 + .../smarty/src/Parser/TemplateParser.php | 2342 +++---- .../smarty/smarty/src/Parser/TemplateParser.y | 36 +- vendor/smarty/smarty/src/Smarty.php | 10 +- .../smarty/smarty/src/Template/Compiled.php | 2 - vendor/symfony/polyfill-ctype/Ctype.php | 232 + vendor/symfony/polyfill-ctype/LICENSE | 19 + vendor/symfony/polyfill-ctype/README.md | 12 + vendor/symfony/polyfill-ctype/bootstrap.php | 50 + vendor/symfony/polyfill-ctype/bootstrap80.php | 46 + vendor/symfony/polyfill-ctype/composer.json | 38 + vendor/symfony/polyfill-php80/LICENSE | 19 + vendor/symfony/polyfill-php80/Php80.php | 115 + vendor/symfony/polyfill-php80/PhpToken.php | 106 + vendor/symfony/polyfill-php80/README.md | 25 + .../Resources/stubs/Attribute.php | 31 + .../Resources/stubs/PhpToken.php | 16 + .../Resources/stubs/Stringable.php | 20 + .../Resources/stubs/UnhandledMatchError.php | 16 + .../Resources/stubs/ValueError.php | 16 + vendor/symfony/polyfill-php80/bootstrap.php | 42 + vendor/symfony/polyfill-php80/composer.json | 37 + vendor/vlucas/phpdotenv/LICENSE | 30 + vendor/vlucas/phpdotenv/composer.json | 60 + vendor/vlucas/phpdotenv/src/Dotenv.php | 267 + .../src/Exception/ExceptionInterface.php | 12 + .../Exception/InvalidEncodingException.php | 12 + .../src/Exception/InvalidFileException.php | 12 + .../src/Exception/InvalidPathException.php | 12 + .../src/Exception/ValidationException.php | 12 + vendor/vlucas/phpdotenv/src/Loader/Loader.php | 48 + .../phpdotenv/src/Loader/LoaderInterface.php | 20 + .../vlucas/phpdotenv/src/Loader/Resolver.php | 65 + vendor/vlucas/phpdotenv/src/Parser/Entry.php | 59 + .../phpdotenv/src/Parser/EntryParser.php | 299 + vendor/vlucas/phpdotenv/src/Parser/Lexer.php | 58 + vendor/vlucas/phpdotenv/src/Parser/Lines.php | 127 + vendor/vlucas/phpdotenv/src/Parser/Parser.php | 53 + .../phpdotenv/src/Parser/ParserInterface.php | 19 + vendor/vlucas/phpdotenv/src/Parser/Value.php | 88 + .../Repository/Adapter/AdapterInterface.php | 15 + .../src/Repository/Adapter/ApacheAdapter.php | 89 + .../src/Repository/Adapter/ArrayAdapter.php | 80 + .../Repository/Adapter/EnvConstAdapter.php | 88 + .../src/Repository/Adapter/GuardedWriter.php | 85 + .../Repository/Adapter/ImmutableWriter.php | 110 + .../src/Repository/Adapter/MultiReader.php | 48 + .../src/Repository/Adapter/MultiWriter.php | 64 + .../src/Repository/Adapter/PutenvAdapter.php | 91 + .../Repository/Adapter/ReaderInterface.php | 17 + .../Repository/Adapter/ReplacingWriter.php | 104 + .../Repository/Adapter/ServerConstAdapter.php | 88 + .../Repository/Adapter/WriterInterface.php | 27 + .../src/Repository/AdapterRepository.php | 107 + .../src/Repository/RepositoryBuilder.php | 272 + .../src/Repository/RepositoryInterface.php | 51 + .../vlucas/phpdotenv/src/Store/File/Paths.php | 44 + .../phpdotenv/src/Store/File/Reader.php | 81 + .../vlucas/phpdotenv/src/Store/FileStore.php | 72 + .../phpdotenv/src/Store/StoreBuilder.php | 141 + .../phpdotenv/src/Store/StoreInterface.php | 17 + .../phpdotenv/src/Store/StringStore.php | 37 + vendor/vlucas/phpdotenv/src/Util/Regex.php | 112 + vendor/vlucas/phpdotenv/src/Util/Str.php | 108 + vendor/vlucas/phpdotenv/src/Validator.php | 207 + views/addedit_project.tpl | 27 +- views/project_display.tpl | 4 +- 175 files changed, 8333 insertions(+), 12477 deletions(-) create mode 100644 .env create mode 100644 uploads/projects/6998730421d82.webp create mode 100644 uploads/projects/6998793d6b378.webp create mode 100644 vendor/graham-campbell/result-type/LICENSE create mode 100644 vendor/graham-campbell/result-type/composer.json create mode 100644 vendor/graham-campbell/result-type/src/Error.php create mode 100644 vendor/graham-campbell/result-type/src/Result.php create mode 100644 vendor/graham-campbell/result-type/src/Success.php delete mode 100644 vendor/phpmailer/phpmailer/COMMITMENT delete mode 100644 vendor/phpmailer/phpmailer/LICENSE delete mode 100644 vendor/phpmailer/phpmailer/README.md delete mode 100644 vendor/phpmailer/phpmailer/SECURITY.md delete mode 100644 vendor/phpmailer/phpmailer/SMTPUTF8.md delete mode 100644 vendor/phpmailer/phpmailer/VERSION delete mode 100644 vendor/phpmailer/phpmailer/composer.json delete mode 100644 vendor/phpmailer/phpmailer/get_oauth_token.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ku.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-ur.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php delete mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php delete mode 100644 vendor/phpmailer/phpmailer/src/DSNConfigurator.php delete mode 100644 vendor/phpmailer/phpmailer/src/Exception.php delete mode 100644 vendor/phpmailer/phpmailer/src/OAuth.php delete mode 100644 vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php delete mode 100644 vendor/phpmailer/phpmailer/src/PHPMailer.php delete mode 100644 vendor/phpmailer/phpmailer/src/POP3.php delete mode 100644 vendor/phpmailer/phpmailer/src/SMTP.php create mode 100644 vendor/phpoption/phpoption/LICENSE create mode 100644 vendor/phpoption/phpoption/composer.json create mode 100644 vendor/phpoption/phpoption/src/PhpOption/LazyOption.php create mode 100644 vendor/phpoption/phpoption/src/PhpOption/None.php create mode 100644 vendor/phpoption/phpoption/src/PhpOption/Option.php create mode 100644 vendor/phpoption/phpoption/src/PhpOption/Some.php create mode 100644 vendor/symfony/polyfill-ctype/Ctype.php create mode 100644 vendor/symfony/polyfill-ctype/LICENSE create mode 100644 vendor/symfony/polyfill-ctype/README.md create mode 100644 vendor/symfony/polyfill-ctype/bootstrap.php create mode 100644 vendor/symfony/polyfill-ctype/bootstrap80.php create mode 100644 vendor/symfony/polyfill-ctype/composer.json create mode 100644 vendor/symfony/polyfill-php80/LICENSE create mode 100644 vendor/symfony/polyfill-php80/Php80.php create mode 100644 vendor/symfony/polyfill-php80/PhpToken.php create mode 100644 vendor/symfony/polyfill-php80/README.md create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php create mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php create mode 100644 vendor/symfony/polyfill-php80/bootstrap.php create mode 100644 vendor/symfony/polyfill-php80/composer.json create mode 100644 vendor/vlucas/phpdotenv/LICENSE create mode 100644 vendor/vlucas/phpdotenv/composer.json create mode 100644 vendor/vlucas/phpdotenv/src/Dotenv.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php create mode 100644 vendor/vlucas/phpdotenv/src/Exception/ValidationException.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/Loader.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Loader/Resolver.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Entry.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/EntryParser.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Lexer.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Lines.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Parser.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Parser/Value.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php create mode 100644 vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/File/Paths.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/File/Reader.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/FileStore.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StoreInterface.php create mode 100644 vendor/vlucas/phpdotenv/src/Store/StringStore.php create mode 100644 vendor/vlucas/phpdotenv/src/Util/Regex.php create mode 100644 vendor/vlucas/phpdotenv/src/Util/Str.php create mode 100644 vendor/vlucas/phpdotenv/src/Validator.php diff --git a/.env b/.env new file mode 100644 index 0000000..759b611 --- /dev/null +++ b/.env @@ -0,0 +1,9 @@ +# config BDD + +DB_CONNECTION=mysql +DB_HOSTNAME=boulayoune.com +DB_DATABASE=projet_folliow +DB_USERNAME= +DB_PASSWORD= + +IMG_PATH= uploads/projects/ \ No newline at end of file diff --git a/composer.json b/composer.json index 60ba30e..0b2187e 100644 --- a/composer.json +++ b/composer.json @@ -1,19 +1,18 @@ { - "name": "yasse/projetphp", - "description": "le projet php de ces mort", - "require": { - "smarty/smarty": "^5.7", - "phpmailer/phpmailer": "^7.0" - }, + "name": "guill/guillaume", "autoload": { "psr-4": { - "Yasse\\Projetphp\\": "src/" + "Guill\\Guillaume\\": "src/" } }, "authors": [ { - "name": "Yasder5", - "email": "102179445+Yasder5@users.noreply.github.com" + "name": "GuillaumeH-Cci", + "email": "guillaume.hess@ccicampus.fr" } - ] + ], + "require": { + "vlucas/phpdotenv": "^5.6", + "smarty/smarty": "^5.8" + } } diff --git a/composer.lock b/composer.lock index 5dad180..7e3f0a0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,102 +4,157 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "97f3233a5e69021ef84a92c5454bdb64", + "content-hash": "a4cbca63245cb187b78bedbf67cab5da", "packages": [ { - "name": "phpmailer/phpmailer", - "version": "v7.0.2", + "name": "graham-campbell/result-type", + "version": "v1.1.4", "source": { "type": "git", - "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088" + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088", - "reference": "ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "php": ">=5.5.0" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "doctrine/annotations": "^1.2.6 || ^1.13.3", - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^10.0.0@dev", - "squizlabs/php_codesniffer": "^3.13.5", - "yoast/phpunit-polyfills": "^1.0.4" - }, - "suggest": { - "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", - "directorytree/imapengine": "For uploading sent messages via IMAP, see gmail example", - "ext-imap": "Needed to support advanced email address parsing according to RFC822", - "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", - "ext-openssl": "Needed for secure SMTP sending and DKIM signing", - "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "psr/log": "For optional PSR-3 debug logging", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", - "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" }, "type": "library", "autoload": { "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" + "GrahamCampbell\\ResultType\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1-only" + "MIT" ], "authors": [ { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" - }, - { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" - }, - { - "name": "Andy Prevost", - "email": "codeworxtech@users.sourceforge.net" - }, - { - "name": "Brent R. Matzelle" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], - "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], "support": { - "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v7.0.2" + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" }, "funding": [ { - "url": "https://github.com/Synchro", + "url": "https://github.com/GrahamCampbell", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" } ], - "time": "2026-01-09T18:02:33+00:00" + "time": "2025-12-27T19:43:20+00:00" }, { - "name": "smarty/smarty", - "version": "v5.7.0", + "name": "phpoption/phpoption", + "version": "1.9.5", "source": { "type": "git", - "url": "https://github.com/smarty-php/smarty.git", - "reference": "73da7e90f302175a570662fcb0ba41f57b7a92ab" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smarty-php/smarty/zipball/73da7e90f302175a570662fcb0ba41f57b7a92ab", - "reference": "73da7e90f302175a570662fcb0ba41f57b7a92ab", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:41:33+00:00" + }, + { + "name": "smarty/smarty", + "version": "v5.8.0", + "source": { + "type": "git", + "url": "https://github.com/smarty-php/smarty.git", + "reference": "78d259d3b971c59a0cd719c270cc5cbb740c36a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/78d259d3b971c59a0cd719c270cc5cbb740c36a7", + "reference": "78d259d3b971c59a0cd719c270cc5cbb740c36a7", "shasum": "" }, "require": { @@ -154,7 +209,7 @@ "support": { "forum": "https://github.com/smarty-php/smarty/discussions", "issues": "https://github.com/smarty-php/smarty/issues", - "source": "https://github.com/smarty-php/smarty/tree/v5.7.0" + "source": "https://github.com/smarty-php/smarty/tree/v5.8.0" }, "funding": [ { @@ -162,7 +217,90 @@ "type": "github" } ], - "time": "2025-11-19T21:36:38+00:00" + "time": "2026-02-15T14:27:15+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -248,6 +386,174 @@ } ], "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:49:13+00:00" } ], "packages-dev": [], diff --git a/controllers/project_controller.php b/controllers/project_controller.php index 3c060df..b144746 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -95,7 +95,7 @@ * Fonction d'affichage de la page projet * @author Christel adapter par Guillaume */ - public function addedit_project() { + public function addedit_project() { if (!isset($_SESSION['user'])){ // Pas d'utilisateur connecté header("Location:index.php?ctrl=error&action=error_403"); exit; @@ -107,12 +107,10 @@ // dans la cas de modif if (isset($_GET['id'])){ - $arrProject = $objProjectModel->find($_GET['id']); + $arrProject = $objProjectModel->findOne($_GET['id']); $objProject->hydrate($arrProject); // BDD } - - // Tester le formulaire $arrError = []; if (count($_POST) > 0) { @@ -132,45 +130,33 @@ // Vérification de l'image $arrTypeAllowed = array('image/jpeg', 'image/png', 'image/webp'); - if ($_FILES['imageThumbnail']['error'] != 4){ - if (!in_array($_FILES['imageThumbnail']['type'], $arrTypeAllowed)){ - $arrError['imageThumbnail'] = "Le type de fichier n'est pas autorisé"; + if ($_FILES['thumbnail']['error'] != 4){ + if (!in_array($_FILES['thumbnail']['type'], $arrTypeAllowed)){ + $arrError['thumbnail'] = "Le type de fichier n'est pas autorisé"; }else{ // Vérification des codes d'erreur - switch ($_FILES['imageThumbnail']['error']){ + switch ($_FILES['thumbnail']['error']){ case 0 : // Renommage de l'image $strImageName = uniqid().".webp"; - /* uniquement si on veut garder l'extension du fichier originel */ - /*switch ($_FILES['img']['type']){ - case 'image/jpeg' : - $strImageName .= '.jpg'; - break; - case 'image/png' : - $strImageName .= '.png'; - break; - }*/ - // Récupère le nom de l'image avant changement $strOldImg = $objProject->getThumbnail(); // Mise à jour du nom de l'image dans l'objet $objProject->setThumbnail($strImageName); break; case 1 : - $arrError['imageThumbnail'] = "Le fichier est trop volumineux"; - break; case 2 : - $arrError['imageThumbnail'] = "Le fichier est trop volumineux"; + $arrError['thumbnail'] = "Le fichier est trop volumineux"; break; case 3 : - $arrError['imageThumbnail'] = "Le fichier a été partiellement téléchargé"; + $arrError['thumbnail'] = "Le fichier a été partiellement téléchargé"; break; case 6 : - $arrError['imageThumbnail'] = "Le répertoire temporaire est manquant"; + $arrError['thumbnail'] = "Le répertoire temporaire est manquant"; break; default : - $arrError['imageThumbnail'] = "Erreur sur l'image"; + $arrError['thumbnail'] = "Erreur sur l'image"; break; } } @@ -178,113 +164,95 @@ }else{ // Est-ce que le fichier existe ? if (is_null($objProject->getThumbnail())){ - $arrError['imageThumbnail'] = "L'image est obligatoire"; + $arrError['thumbnail'] = "L'image est obligatoire"; } } - - // Si le formulaire est rempli correctement - if (count($arrError) == 0){ - if (is_null($objProject->getId())){ - // => Ajout dans la base de données - $boolOk = $objProjectModel->insert($objProject); - }else{ - $boolOk = $objProjectModel->updateProject($objProject); - } - if ($boolOk === true){ - if (isset($strImageName)){ - // Création du chemin de destination - $strDest = $_ENV['IMG_PATH'].$strImageName; - // Récupération de la source de l'image - $strSource = $_FILES['imageThumbnail']['tmp_name']; - // Récupération des dimensions de l'image source - list($intWidth, $intHeight) = getimagesize($strSource); - // Dimensions de destination - $intDestWidth = 200; - $intDestHeight = 250; - - // Calcul du ratio de destination - $fltDestRatio = $intDestWidth / $intDestHeight; - // Calcul du ratio de la source - $fltSourceRatio = $intWidth / $intHeight; - - // Détermination de la zone à cropper - if ($fltSourceRatio > $fltDestRatio) { - // L'image source est plus large → on crop en largeur - $intCropHeight = $intHeight; - $intCropWidth = round($intHeight * $fltDestRatio); - $intCropX = ($intWidth - $intCropWidth) / 2; // Centrage horizontal - $intCropY = 0; - } else { - // L'image source est plus haute → on crop en hauteur - $intCropWidth = $intWidth; - $intCropHeight = round($intWidth / $fltDestRatio); - $intCropX = 0; - $intCropY = ($intHeight - $intCropHeight) / 2; // Centrage vertical - } - // Création d'une image 'vide' - $objDest = imagecreatetruecolor($intDestWidth, $intDestHeight); - - // Création d'un objet image à partir de la source (attention au type de fichier) - switch ($_FILES['imageThumbnail']['type']){ - case 'image/jpeg' : - $objSource = imagecreatefromjpeg($strSource); - break; - case 'image/png' : - $objSource = imagecreatefrompng($strSource); - break; - case 'image/webp' : - $objSource = imagecreatefromwebp($strSource); - break; - } - - // Mise à jour de l'image 'vide' avec les informations de dimension - //imagecopyresized($objDest, $objSource, 0, 0, 0, 0, 200, 250, $intWidth, $intHeight); - imagecopyresampled($objDest, $objSource, - 0, 0, $intCropX, $intCropY, - $intDestWidth, $intDestHeight, $intCropWidth, $intCropHeight); - - // Si la copie de l'image a bien été effectuée à la destination voulue - $boolOk = imagewebp($objDest, $strDest); - } - if ($boolOk === true){ - //if (move_uploaded_file($_FILES['img']['tmp_name'], $strDest)){ - // suppression de l'ancienne image - $strOldFile = $_ENV['IMG_PATH'].$strOldImg; - if (file_exists($strOldFile)){ - unlink($strOldFile); - } - - if (is_null($objProject->getId())){ - $_SESSION['success'] = "Le projet a bien été créé"; - }else{ - $_SESSION['success'] = "Le projet a bien été modifié"; - } - header("Location:index.php"); - exit; - }else{ - $arrError['imageThumbnail'] = "Erreur dans le traitement de l'image"; - } - }else{ - $arrError[] = "Erreur lors de l'ajout"; - } - } - } - - var_dump($_SESSION); - var_dump($objProject); - var_dump($arrError); - - + // SI pas d'erreur : on traite l'image depuis la bdd + if (count($arrError) == 0){ + + $boolImageOk = true; + + // Redimensionnement de l'image + if (isset($strImageName)){ + $strDest = $_ENV['IMG_PATH'].$strImageName; + $strSource = $_FILES['thumbnail']['tmp_name']; + list($intWidth, $intHeight) = getimagesize($strSource); + + $intDestWidth = 200; $intDestHeight = 250; + $fltDestRatio = $intDestWidth / $intDestHeight; + $fltSourceRatio = $intWidth / $intHeight; + + if ($fltSourceRatio > $fltDestRatio) { + $intCropHeight = $intHeight; + $intCropWidth = (int)round($intHeight * $fltDestRatio); + $intCropX = (int)(($intWidth - $intCropWidth) / 2); + $intCropY = 0; + } else { + $intCropWidth = $intWidth; + $intCropHeight = (int)round($intWidth / $fltDestRatio); + $intCropX = 0; + $intCropY = (int)(($intHeight - $intCropHeight) / 2); + } + + // Condition en fonction de l'extension de l'image + $objDest = imagecreatetruecolor($intDestWidth, $intDestHeight); + switch ($_FILES['thumbnail']['type']) { + case 'image/jpeg' : + $objSource = imagecreatefromjpeg($strSource); + break; + case 'image/png' : + $objSource = imagecreatefrompng($strSource); + break; + case 'image/webp' : + $objSource = imagecreatefromwebp($strSource); + break; + } + + imagecopyresampled($objDest, $objSource, 0, 0, $intCropX, $intCropY, $intDestWidth, $intDestHeight, $intCropWidth, $intCropHeight); + + // Sauvegarde du fichier + $boolImageOk = imagewebp($objDest, $strDest); + imagedestroy($objDest); + imagedestroy($objSource); + } + + // SI image ok, on balance tout dans la bdd + if ($boolImageOk){ + if (!isset($_GET['id'])){ + $objProject->setUser_id($_SESSION['user']['user_id']); + $boolOk = $objProjectModel->insert($objProject); + } else { + $boolOk = $objProjectModel->updateProject($objProject); + } + + if ($boolOk){ + // Suppression de l'ancienne image + if(isset($strOldImg) && !empty($strOldImg) && isset($strImageName)){ + $strOldFile = $_ENV['IMG_PATH'].$strOldImg; + if (file_exists($strOldFile)) unlink($strOldFile); + } + + $_SESSION['success'] = (!isset($_GET['id'])) ? "Le projet a bien été créé" : "Le projet a bien été modifié"; + header("Location:index.php"); + exit; + } else { + $arrError[] = "Erreur lors de l'enregistrement en base de données"; + } + } else { + $arrError['thumbnail'] = "Erreur dans le traitement de l'image"; + } + } + } + // Données pour la vue $this->_arrData['arrCategory'] = $objCategoryModel->findAllCategory(); - $this->_arrData['objProject'] = $objProject; // On passe l'objet à la vue pour pré-remplir les champs + $this->_arrData['objProject'] = $objProject; $this->_arrData['arrError'] = $arrError; $this->_display('addedit_project'); } - public function display() { $intId = $_GET['id'] ?? null; @@ -421,18 +389,4 @@ header("Location: index.php"); exit; } - - public function modify(){ - - //Récupéré l'id dans l'url - $intId = $_GET['id']; - - //Je créer un nouveau model pour exec la commande SQL - $objProjectModel = new ProjectModel; - $objProjectModel->modify($intId); - - //Redirection vers la page projet - header("Location: index.php?ctrl=project&action=addedit_project&id=".$intId); - exit; - } } \ No newline at end of file diff --git a/entities/project_entity.php b/entities/project_entity.php index 2d03550..83fadf3 100644 --- a/entities/project_entity.php +++ b/entities/project_entity.php @@ -8,12 +8,12 @@ require_once("mother_entity.php"); class Project extends Entity{ private ?int $_id = null; - private string $_title = ""; - private string $_description = ""; - private string $_thumbnail = ""; - private string $_content = ""; + private string $_title = ""; + private string $_description = ""; + private ?string $_thumbnail = null; + private string $_content = ""; private string $_creation_date; - private string $_status; + private string $_status = "en_attente"; private int $_user; private int $_category; private string $_creatorname; @@ -33,7 +33,7 @@ class Project extends Entity{ * Récuperation de l'id du Projet * @return int l'id du projet */ - public function getId():int{ + public function getId():?int{ return $this->_id; } @@ -172,7 +172,7 @@ class Project extends Entity{ * Récupération de la catégorie * @return int id de la catégorie */ - public function getCategory(){ + public function getCategory():?int{ return $this->_category; } diff --git a/index.php b/index.php index f7890b4..d8788ee 100644 --- a/index.php +++ b/index.php @@ -2,9 +2,12 @@ session_start(); require("./vendor/autoload.php"); + + $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); + $dotenv->safeLoad(); + $strCtrl = $_GET['ctrl']??'project'; $strMethod = $_GET['action']??'home'; - $intId = $_GET['id']??null; $boolError = false; $strFileName = "./controllers/".$strCtrl."_controller.php"; diff --git a/models/project_model.php b/models/project_model.php index ffeda04..fd2d0db 100644 --- a/models/project_model.php +++ b/models/project_model.php @@ -107,7 +107,7 @@ * Fonction de recherche d'un seul projet * @param int $intId * @return array - */ + */ public function findOne(int $intId) :array{ $strRq = "SELECT project.*, CONCAT(users.user_firstname, ' ', users.user_name) AS 'project_creatorname', @@ -178,20 +178,53 @@ * @return bool Est-ce que la requête s'est bien passée */ public function updateProject(object $objProject):bool{ + + $strRq = "UPDATE project + SET project_title = :title, + project_description = :description, + project_content = :content, + project_thumbnail = :thumbnail + WHERE project_id = :id"; - $strRq = "UPDATE project - SET project_title = :title, project_description = :description, project_content = :content - WHERE project_id = :id"; - - //Requête préparé - $rqPrep = $this->_db->prepare($strRq); + $rqPrep = $this->_db->prepare($strRq); $rqPrep->bindValue(":title", $objProject->getTitle(), PDO::PARAM_STR); $rqPrep->bindValue(":description", $objProject->getDescription(), PDO::PARAM_STR); $rqPrep->bindValue(":content", $objProject->getContent(), PDO::PARAM_STR); + $rqPrep->bindValue(":thumbnail", $objProject->getThumbnail(), PDO::PARAM_STR); + $rqPrep->bindValue(":id", $objProject->getId(), PDO::PARAM_INT); - - // Executer la requête return $rqPrep->execute(); } + + public function getImagesByProjectId(int $projectId): array { + $strRq = "SELECT image_id, image_name, image_alt + FROM image + WHERE image_project = :id AND image_status = 1"; + + $rqPrep = $this->_db->prepare($strRq); + $rqPrep->bindValue(":id", $projectId, PDO::PARAM_INT); + $rqPrep->execute(); + + return $rqPrep->fetchAll(PDO::FETCH_ASSOC); + } + + public function addImageInProject(string $fileName, int $projectId, string $alt = "Image projet"): bool { + $strRq = "INSERT INTO image ( + image_name, + image_alt, + image_status, + image_project + ) + VALUES (:name, :alt, :status, :project)"; + + $rqPrep = $this->_db->prepare($strRq); + + $rqPrep->bindValue(":name", $fileName, PDO::PARAM_STR); + $rqPrep->bindValue(":alt", $alt, PDO::PARAM_STR); + $rqPrep->bindValue(":status", "en_attente", PDO::PARAM_STR); // Valeur string brute + $rqPrep->bindValue(":project", $projectId, PDO::PARAM_INT); + + return $rqPrep->execute(); + } } \ No newline at end of file diff --git a/uploads/projects/6998730421d82.webp b/uploads/projects/6998730421d82.webp new file mode 100644 index 0000000000000000000000000000000000000000..3582ecfb4acd1bed0154e8bb8714097eb53b6992 GIT binary patch literal 7068 zcmV;N8)M{BNk&GL8vp=TMM6+kP&gon8vp>1WdNN4D#!r(06uLpl}98aA|WXDsz`th ziDYi!bMWh)T~2auqW_!yx6(qr{)hXYoKC0W@7*?Z|J(Yf{XzQK@D2Lq(u>R|?WgT0 zyf^)iRKMFjKtG`WqyPWyW9nb%AN!r@)9ji3zy8;z|ELH5{szxF_D%lJ!oMCK*7>*o z53Yta?L+y0;IH2Qg!H4me^{T~eSv>2{=vH|48Fj<@9*^06T*JLAFF{7?Ij zU{B`X-@RY|$?`Y#cd&=-FQ+H6Ki+R;qYa_GXIZrNRLTw7=e*j|Nt?6>ZFx$qAz=h4 zG9vma51%5okZcvJ^>Dai;*?cJ74X#Kca=T7RU_=cu1&DgXJC$WP~&+#@Lk8Kae_eM ztXT4ty*nY^6?F<8bhBU!s1r>kc2xBPyK3pq9y>=*W^o{ppQL)f=q&Jm@b=CoG^a~wd}_nR~Fl8THXb{_Ap zsIBY$_P;1E^ClGzIxXKxi7xS%G=G0pjLyH|=2p#YC_~5id3B)Cajv8vBt2DMl>KmF z=qL`Oct}R1Xx89UsjRrsc2heLa(Zh4aA#{8J&UGVi}J67aBPe9OWhg)@X=b)>?Pkrx0MA}KV zqxv|%mv!P?Kpp~4i;f@v3+Zm6a0?IRq(*_pB6Ia(r&&7%c+=}-ovZsiGd(4F)iqE? zNFBB1DNPnwah`S3Yxp(((k0^9h|N2c=Q)E=7q z`HGnZ?>|HOdJTS~f9BlzovaSmres&qMXE*4oTen?!LfXg4uSz5QvYAL#a>gS)NgBc zUb3Yj27AgoI?qQ0nwDA~*{H z?2&6ssKMP6J6d$T?A6?meYmpV17N{i*&rndZb7$T>EdrwIy5%((hlkU=|Y+l5}fI@ zejSX_8)vy^eDX7gfSN%%&1N6w2*{jzLaPKec}M0vcHt}^t$bN{2yDE;`mAe{Z*>nO zuP(1KS1b|F`!dGw0ti*mV#~NFws&^EflDU^oJ?s4Y$b z>2iF97yh_brdTP74NhMMX|p-37n5c2V?U?q_lt@p2F7_T39fYxW1)aZMY7*1vBl}3 z(*V=mny{4hY^hp1TMPV^hQ;SG0I%dFYXyt3pFOm}L_#lER%(@~D(^}!N?`X&`ZDin zap{=)?615pURK}kQqM;*p-1Wu``;u93iGKMn(`%QP44t4@C`P`i+!!h_*(jjl$=TF zh64Q9Y!H;5S`SZ=X3IZ?71Tce$&$JDU|3G3*rz+jcTJOegw*c7-kX-(Mac*7Mt0K8 z@;r@FyTYO^Q<%DtoQN}7^b4>m#C@6x)TOFP<|;fFHe&9Up?eO#V=DN|Az4f@P&^Bx zRY39NMnc=2KqF~u5&N|h@gm~^Gh_e zSL7>Lw0w14j(8CN*6d%W=SOrvL! zall3YNW2p$|3xv*%1J0mz3us}C`97w*Ru+u6Dkx)5UHswdXO=hYp7z0%i`nM>=_ds z{F)34WK$H7B$Qs8G+9Qul6LQdrk`OyE~}(HNBThqyI!{ZtDwLiIUq%%m@&Us1^<{? zRaXAbhy8fi@X&D&Qxvmqh%E55QG+!lZtQM-LAE)S>}5a%1m)4e7#wTa9k+IUvf< zC)lf$8rB)XxP7Ql?YS;4f)zEkNHk4$?}B;$l@MRW(dctJkZX;V4Y+gto=j0I04mbP z&gUf2hWT2YD23>zaC7iFv*rL?zt_gCj z#uKb-^CB-GA$*MuJ2C&(7xb(Kr=*trB>vaAK_ZeJSafYTrgxf;>Lw2z3VT{*M%ReNC`gF zfuqeyTU3enhEvmnsCFc3*T7Dts0^o6S;5T5lxui_C#U8C-6WZ()}Yz9lpv)qDu0@p8aorA{FT)@o$V|3EVAAHLkLZV z@xQu&sPHuO=YQtmO!kJRlP>gh5Ee!W9AaX18VV1l>4n`;8dIJl#7mVHgeA6n7%3)E zpUUgbV31fZ-qd5F)n+?`ZKkF0P+{BO-}0ITTioR0Lst*fMJ_Td z$;dObOK+%E2-lf11E{lYpnB{$^TB7%N!iNvxN-@(BePG$Yt6(RYE1f5s|dFs+2u35 za58XANqL$DvJV&tRI8#uO?GGzk`dy(;6_7`p`jJP7w&W#qffkVgx)J&@cXHr^&l<9 zyBrW2QOP#Wno8jGdZNliHTS;E>SBt0Mxl+A>l+wb&KIrF2CDWI>63LaI_j&7?|f}JcPl7e;oqo; z8JN1sjD*gXF#qP4^aW?;8Ef_7M(YgR)cUe0$fnlm{P|J zl{KXUXR7>7jTmR=xA<4`E50EvO=`g!7)%X&$t4fDMHy#3Dxm#yC>*%*WPCTzrkjwa zu#f|QyU&MOk!JlXDN|uRUQQIt0#Z$_m1nzDTu@X(N;?9D50sx4#g4BEsqk=eu)S}#qY`c#L^+e>%p=YkQX>#u(?-+$p&CtB)gE>xaT zrigdON*GNGwE4!-LTDnXE`^$q@shdQM=u;HiMEEudv8bo(V;u2T@VVaNZ&h0KX*6w zxA=2LEXX=5E<)f&&mv|jAcyNr5|uxABmeuO`}D+-;KFot;iVpy1|wjYODnaRh84=( ztiI}n41Nzy0$Fj^Lx#Wv25a^nUMp!FdJr7p^fxHB!KRL(%P@iV542?{V!uL4U_$JY zkQ}=ae%UiP*S4o-o$p~!A=J50+>*SEUd-a}<_s}rDBLO{kU^TbYbF}Dr=ea-SDG^# z|ExR?r-&Fxh)!}Xf!LnZyuArY!Ao`RJZm9H5>r*w^RE*T7H@Rgv0ETLKWR$+GTDcK znY|j?8F#I2%|_ZFI1MFwHkgx_u-Do(#KpsMJJp0FfQ_ELW<~48fu&wkEY|upMd!KJ zEs%*GYK%Ro+{_w-4ZaP0*HWX>~H|iVHfDoapaFAJU$))nfV7jb8t3{e|TNtJp z-AXIK0$zXtY3Iu$8_f?nrU%}fXAY5DmmwRKh3@~xZ_ZcocCrPy1d1u}5|3RJBv9{z zD$`xa=HlcB-d$c-{$j5Qsm*nVyXs+AVi2ap)g=F9Kh^!xuxv1KCl$zX(s-b@A9|wg zmuPmR{5>8Vs^FiWeorEzykV1UYbiB9q9o9;4gAGFI}kGY+&dW}$PopfD}&OYW&C zIVoqH9>Oz=W}zYpWty|7DP_20o~J5b|jdLR>VClqQsT~qUjzO zvbC6^{$W;_T5WR2PTIA*By*Zz-~=^xHAKM7pj-@J9DkhVTeXa zTlsMm<6KuYLaZ~CBtUod<+rq{F}z?MDji}UDk%e^KzR>g6f6Dq*A!tqo&nj*Kr-CX z!y&QVGEi%9#<51M>p=B>sh(z`Unj-mHBowfqwykQv}K})mzoQ6f4$`)v-L!D%VWHq zM9&Ji=P!lB`m5)g6_RZs-CqKmbzm@;GhGA{=<(hzeqrJ+e{c`1wE`y&s*o|) zC9!N9;zb$KP6XuP5c@lFivY?KiT`#@v3m^j+$77+RofRPC~|NlV)V7$Y5*k2{kB#@ z-5JBQ#{E7^a`YOl)3}&U6Xuj!+Vt$WchZB2`~LH2P_Gjh-OlhNKX2)?l#+Q$E6mKp z;mn^Z_)ge~qSP)mQ*Tvzpo+{Ie6yLJ;lfQ7@zGAsl`FObiD|i-fXz@M{BY@Nb}uj4 z>r}q9Tn)ToyWCmX{(I>9l_wk6PPCXnSD?~}bPT(s;ldlsSgvR9zHJddwC;9H#Vcbnf>R7aC8uJq~1;ZkNu+f%d6D0NLZuTjhh~j)k z(DQAHcC;eL-tAkW8vhphsAwnV`Rm(90XhkJTI_G~?%osE#FWVE7~p?a$$3g;FD~<| zldEi0PeRDXFb(Z4kd{Gayf`}*CVFK^_G;}tGN%OTsXjGD zwhb^VK2PcWVl&Umee7s8V`~*H;eM97aEb)LS6qcDZ4*6r|8GtYo^RTsG{9hxX0CtB zNyGg~S37(`X!8V`0}3axuwlldGCw%vQSGgg)QJ~wzjUQ2I*jr%AU*KgR{wPW{z=4f#WW1A4>f8hj z+?Tjfy_j`*B}*KXXRxf;{DG^Tg{GOePO*vizgZf_Qqm{#Et=V-paM{{S%&-L&|$Mk zrnWLm&;uD*3Vt|7XIR>dI9mm3U&(vtAk($qCOvyTzyj^_dmBCR?0R2+K3Ae1E7A-_ zGwo=XPqB2QP?)OaeCh4efD;fgSdMYqONV(ijIb@s2>Ey4$`fD{jD6AqXPKe8w&h6M zjDn8=`((EGJw3#L{-HaBWKshUhG?>_p3xY@cSv~Uy}XoK_5x&jn^X=+>Za?+u@2MC_0T1kUQd|e`i=LJ{Nk*yo3czTbSA^<1E3bKosEgV4w z(fWK%2KkN^2hVz$$27znO1uUhdE3b=IWa-bN~oCx{!OTm@b3IOXYgW`+ow~mfJm1v1A(e)$)!rbX*ZZU6fy4 z=3y1jvkGp<&vww2@g=0!UphCv(4=sIKcObH2O*ESa@g{`%wsP;rS1&)A{!m3rExy-$4@L_ zo|u~_js|l*JGYKv#Q645*0zR{VAunWd|2ApsUy%=No)m_r_29V;8m>_w4GXL7rtQ zVcg~Kx-+&Hg~{=rn(Cs+HZKaCR9T5)J2E1=`>xTl`Un%=7HjpDeS*m$>ZoGcTJ$4= zf&aSUSIDaKTvUg5Q^~8Y68GQ@^|)M80I~#fzSIY11eE#6lxT@*k&khHER5K^OK_-b zEV^9im%fLXuqRo4Y%CMDi@N;*K(#`YLc_^km~lK?D$Hdiuf#R-(lyMfZXpWqZBcuw z;N*GY11Ay_-%&Wbg+0?VJx#B}0SyXcKhd1lN43rX4O631{lb!DTCNi_9a-p%ULz!? zX*ZyCSQ^FUZ3f!R)E^RVsOV|q1X#I@NF;Eo-JVr&mzl{7`*@y~ouL8P*$cvZ9`Dp{ zAu#MErij&4ei#+<-K6i-T7fj(X-&H1P-2VEHQyq9xs*$sNUU18knslJP9XTsY29)? z%q5~Q0I=9D3UHr@02yo@Lh}9_#>42YVpO0lXEN7?rEnKcc6DFF}tbs+C&&7w)fNWXdx`vA5Yokx&+c_`CGu6-b|4?3Z{$W3Hy;VQ#e$)HA z{=e!0{cHS>|Nm>>RNvkoVBgzcPM_URg|F?O_rG(!w>>~V|L_`lU(Dx-AHVS5$$!Xm z+{WLee{1Gn^IyVw-~NxjegO{4_^x3VjB2gnk6=G9d=i>wtbK6 zGt(^>ZBnyavyBz--zuPC86dcN6SWYrH{bhXt&GBBOgXM^qberCE_8Y<-_x2)j&&%c@37BO? zHym)O4_jC*DGt#l2^)*|OsCaca$I)O!j>6*r~CRH-cw$Uh_|~BQ=^}C-KQFjKZ&4t zqK+!li^W|v{Ej}cZs{1E&21;@CR%iCkIbY{aq4}T1-@I$`U(B(OX1?$*j>GXRFlT{YJRSOV=?Ze>_ z(P)KB1d9dx?7cL=nYk|t`p-Ilsq1N*K$_U zk%xtGQJjM7)6<^D6f+;Jo8op!_i6H>IO&bm_~+(gIEet{L-mOJLBwqGDagxGvBYMK z@Z7ugcpNYM=#2>5ylQzKMhac;w2M6+q??@*|DOvZY?b1>`(avHZ4i{p2Cq?H;ut{O z@?j+2+yd$DG_7A7wWQlt>@h6#6Nt8&i^*pPF#up@K)hzy>5-=HQVXb4LjU{5-z#+o*}4Rd$O8Zd(=Tc8P52%YRldE{^8}!&R{>b zw)z%>?{P9H+ zc+ByFssEwfv7O>C7uxL^9pOBAB5J~6v*X-Nj3(zUgtTuBbmm$eo4T#;7EWLg8(+~=OO%vliNo` zdOd2-m-4LC0;6K_J%xHBRg8jr{j5eljt7(_`mweIecFAOUmy~s-Dw^>o3D#AB~Lh^ zf~bAqdo&cwWG87IoXd%QM%7TmSQl&~DbU!E?lx@xH@zgP4bFeh z%Lz~cdmmwnDwLzQNv05c`H-El}mwk4NQ4Akn{L&ua^@&YRy4C!u=6e+~Y1b9+=- zE2HhBCJVLvY(j@jFu}MhNaoJ7xQj`@L8@KbPZfs^M=X3&)m- zg#eEdxzwIl0O;L=XBz$^t^p-nmH!dPa2!UKjeI=|lrP6d2-H`a!K3&95~GpF8dPE< zPM;CZZO!ezhKc|1xH7u3>RDhMtW<5{p}M%p6v=(U;tmW>ok#4LHn|xex2oYvP2}a= znJse}ds=3D^H$Fzf`B{4fc$(zlA5OjDS0F|8NWiuh3lVuzm-}FNMH3Ucf-uxbp9)j zvCyb@2qFjZz|lQGMiD5oSh?iP;^ILD#XIHjh1bh9^CBrDm7jR~_^e6_-H|?;6zPpI zWpo~jiMufE(u|sW#}_UShm731lU( z`wSj##AP!i?Dx?|JZsPS*Sb9+f7cf+zfg~{n3)?P&X)lBK1 zk{y04l^KrmMm+2q41?AYyjnn~?!s`jIOz6ckUiSh<`tqvHPEv}1H|IR&%jb1Q-Psk zAI`tp*N2mstgjOGlsJjnnYQ6V{1p-8=R4gJC#N*Rii59C{QOXWEgQ*LU_rmkuAgY$ zGUT?_JxTp$H`nXzN|CNRq*;!OAKS!T@)`wMXxkl(w-S}emTNwx#Wg$_q-q^q_BQac z#|9h^ou{>d>#CeTtx~k@4laY8%p!7IW@q+-F=2Xsft^AE7wBYZ!;`)4<5x!{ zlQ}&Bbu8*S&D?J9E1L!o5jRaf=}t}cIlg5WyFWsRdpg9mBF4WuibRLRk=D5b;7uW^ zQbv2p3t#!{tC2eF;gE0mL~Kb$`wlq_WRSrsgQs5#gBJhn-QMWdiy8DaAlZUb7ki(aMiTFlLV?W3v(mUOeLUipRLJ-Y^!x1yo&R!p@55!e@PHnSw2zKcbUq8# zP#h65SOXk++Ylmnk{Kz<~bNs?okP zz*X@%R!%3{n}V%lF2zXm2_COFV5qJzW6@Rx6-e{?b6M-`8^eJ2I2V4yJ4UP<&nk}t z(5A2loPnv!!nFlqwJzdS{B5RfrXa_FKQLSB(c-U8w5 z9yQVk&`XC^586#s^reBcJF!A{Oa5Y@NyHd9=Ku-{f3D4})V(vFekr}*C%u?=Gux;G zcNzWMulEFHnC~Il)IO$1UEo-ZH=Kufys4rUJSR6jn!^t3nCsqiqJa^C+s^*w-Mcu6 z{cO=7=Tm|*tX=1_>#^&Hl|J{OJ0Ri#SETW&>3%hNU&`SY(ny9ftk|%v!Xfolmvfv$3x8|5%2ZJ)<6){@C_E*)6v>oizY44M4@@8539%@)B{Vh->ytz<0x0#_!L}`^?*bzMC%>eQN2Z7fjv2Lch=5Q^TfyMSA;ZmZ`Q;nd5>dqnD9k z(-&8zE8XiFHwQ5${#+<^{b-+_c}cL;&Yy#{A~vHB`0-r5{UE6vmw04yEG&uL%FE~jKGOsww$$0V0pG+dz_mx++`TpzELUFN=6xUT1hG&&oS0ZZ> zp6HyipL&H08|*pRgp<((&{QV_KL6|<6KbPm2xsSsd7d})JWk|uHtt(KSb!DgDIlyz z6$!!pwqiUcm0s9b#E@`>(z&PgibEAlv!r-Q)^h|8&@7CBRy~B2#w>EDkCnMou1_fE^csN!h4MNk zt=Ha*gKjaQwz|eu_I6IowyL^ofINlh!v6eH$_=)}Q7j3XeZHId80p|qm9KE++9oyI zat&W8T=A2&-&#@hYo%Gs?m!~(H&XLugmSQUNA&f3aV(F=;B+LB3OH~{NRgl7ZjH5g zaq=g_;G50#99+)0xTe<-y=Z=9;&K^y*NuprOYvy;J}L+LBcCKrJ-=J&CLUT_9tw#y zYs*zn{)UlBm#g}D>6>a0w|wQN^}c|02qMMSdnA#4Ykz>2h0VJ~=or;K4LORhxV>8h zpX$_x9NXf*(P&3$WJH8I-wr#LMIL@b`IgJWiR}y=0XF#e0n-7))k3MQyoef=7|?p0 zZnQvH8rv#s%)A2kUi+rRvR_FfG_iqFMmo#MEb;8LvJocw$tKZ%sm|NM_oCxfTfxb& z3BJh#kuO~lILdyT_hQZlVw1^WLPabg8i4fK9SgXFXq^@LB(wEQ`WOY0a`4#7dCUyh zZhf@&es^#17mwk2_~=}G*0EHl&Jcqx z7ibum;j`C0lku_Yoy`6lQ*;Cw)wl!DTD)S51^MM;pS>~m1HKHrIKi}RW1F~obV8xS zKGvyZ(M!*Ux7UWe9+E)!j@liR3?<5N#^Iz1O*HzSCdZn5`1|v1@`r$+>b6vtMwI~} zcT)Vl+Bd{*6^zKUO2ezY&$ZkJIB<>ILeTmPBSY0K!{Ik-*+S$--R=m&Wwb`q`fE%P z`6@M`K=!w8D3#IRdh$3tWR2`CR?E6iC@;A@m=EPlwD= z;=S*he>8jcr{XW!>v+w2&!e$pQl2-MKPJ!hb8YdePF%+dK0#@dobKb9m*T$s)Jy4~ zE5=NVTFo*mdytCOMvh;QTY!!GfxM1jq*2Q?x8~TyJ6-$9HG$OXzy%s!Zf8Q>FmU$UN0mNY{Jv9JdFY(SB))wC znZ$!H@Z|CCtVk=hSmB6L=|YO9o2JB=D4HBOP6}4tujSI8AhM*pT3#ruBHdlcJky1@dB@Dbq zv1BgXHSwc-7$d?GVs8_WhswvZ`{ zvsWORpS=NKVT;`1E*Sar_xvx#>}5FQ@asylCO7ly3ACkn(85Lp8YUXin>Kc0ScNo(L24oUXo3Lz7l zSSiY;_m#9R7$s-VkNlDdDmPLi)$`=u%oDr&;hdsRIWgvzbWE%)nLmZ?8{4GMgLR{s z_M^uc4o4W%f{G|6;wQ;9AZ9_|q`a_!>=pm-3w<75ht%L1_U^F>qKR^#;2|zl6OMk{ zdQe&~$f~tVv(#$*hIWc(nNHv&Y=Q0-7&=WF)r$vmbP`;{L;vEsm(UuO1<mHz zL0y_Of%8@vd}m)JLdjWpZee6-Cz>L^%$&VB1L!&h4i+fMu|fi>nuUHIc~!#&;71PuK$SRl96UzWkHacbdK`)4VO?PA_hC*-2*3?+Loy77> zciDocvW*%BD(xURUPW;LOOKM3zJW}yEYfM{PA&KXaI<$rt_a28y_7c|@P{-Xav0PV z<>^pB4{^|#CqbK#z96!XJ2ATMgqH65T@!217dA$Wmsp=XJQJU<1;k^(eQ&!@e$2Im zY*zKNz6p<@hcI#EBhuujNS&x+*9dtU=rR1I3v0Z7<({7>jZXl`jUW3lSp1AckZ~Y? zw+JT95|$?Co5Zz-p?4NRU8{bBxX!#<$lgp9>15VZ&<-SKCz-iH;TuRh*@WG8+^*m6 z#BizzcS*2g{$6UTv#Dg(fY^nebq0%M$-&L|7pQY(E$TfPMcpC#F_{V5V{U@d-xQ+d z_dv3^5GBs!>6pH}ymw=ID{p1l-SeBwVQolZ97rI*{u&Ivl;CR?0x zaQ(&&*f(LC&W7+PqB!9eY#|5k(iy~E?wCb38K%=~`B-ucGM1n_PsW7WDuI~taUXT` z+Lg(whFpBl8ep&}GeL`Y!N!eh3pwF1xy+7OUd_*qw5Yue?IzM)Gecu?Wl= z$2JbL8mXcZ`hc4I$)1^BvH1fV`XY8gSP02Za253Ai26C(7* zPuzxJwA%9o=yPeDZ7XRE0}|4n24ZQean29wH~ZI!`BC5Q&cZyb|3K@BmKoq|M84Nx z&_?$iVHL<=|`nV6Pl9-m=+Y>4ke;7!7E0CDKR zz{rAou%*1i-*121uZJdxDPulw8{HX{59!Ze|E<<7ey~#YElSRG6P=2~w!($!U zX>nI5jhx9icU*mZ=2Mu-D#VjEelqkt?0 z(O-4q3)mgRPLN`<^-U9?Qrw|$6R|(#He7{L3wZ8NfLbnY&7h|PVG;%v_|giJ_k{sb zey*3BAi`O{p=A~r)9DEaM# zd~2j?S@a7i7F&cBwG6XtH0ebby*S}ZjzW`4KU>{vf0{Xc$J^X8I#FG%Jyk_?aRpGw zMMsG><)c3b{jD}c&0(Ym1NYB2Ds-bHmEIs`Q<);PC7;E0X>SZ#p`)m^5=tI zC{G!AO$k0^LaHSjnbrI4cwa03pn0|oq+BJ~p8V>Omm?2g|sG9%7i&*&%TasUJ#>uq03A!enD z*`N*7p%QDyaMnAh7w+Z9GSpPe4$r+EP|DzT}F^ak|3#8=TpLjzD zT+$bVmlJfAM8kn%pT=gxIqBdS&e0OX=^jvpAOsCnRV#O#QRqZ#=0Tg;eM?8+e|FvV|pXV%{gBX`QceV$n?FQp?l}V3I1R)I!v!qmLAeW1K zhJ51$4M#e+8p6eJOrqN6Z+^QeP` zBTMe`v2tU~Cqf(JpwbP~ufkqUaF`WwdSb|6FflX$FE!LE$dbSrSvdG9uiZyMC^NZ+f$;IpMnVbf#*Cnw}ZNy>prr@bA9 z(AT+|r{s-KG8DE?j0p9U5s=})5wN0i)S3eFZe$!8zVsES>DK^CkDiP0wW7`qVBHY& zL8-Aol*Oz3z&1}ynLY!}njDU9$n?E@o+PZ?iKdSL5*B1p@0Ag1WR5JjS}=zD+BDjm zhdd^K&7{wV(dPlOO~puMkdZg~>V8cUp4WM6lB8(EonT6~nbwU9h%Ak>y<>let#TUj zmgsVVMapL40dG>iTu2Z3?pv0ja%-EB*5fsa4dZz#n&vdn4%l&w$N=d7MY@?xp|>3X zbNZnhT3bUr;#40kNE;(gln;VBf#hs+|43RYrwqR!nZ*up8LbX0T%t_|tL}MN?(cxT zb-W8W16D!x?RQEbOaqfwj%B}9a#pOsyLb{cIqUK~S~-FT)XQ$Y`Q*#Bg334C?j0#~ zAdR_D1wxIs#;Cw9pfBavPcV@**@+c#?zB+6+%;io(25NqBO{xnX#l454h)Ca?AaU^ zZ^4Aa=;Kw7=Uczt%9!!h#6q?VGA z4Eib_F*xJPj8GAQlBI@sw9!KGbYwXKc1Jxb1UN~B{7@>pcb*(OB9R!fu1Fo*cwbMA zfcXzLmAW(Y{TMOa+Gx-Q&|lZ3kwZHqmI&O@B7gwZr{amaU#$xHXHWL)SS-?Jo z6{g<}fE)@hqLYp^D{{7-s|`U!Qp#++)@! zy|B>&ciOAUqOvnC{Gr)ZGM|p^Uj5{I9S2Er>d_yO>H^&c^`P7Wq|vPf>rNjJ{1pA5 zg6$U9L-Sw$ycp|FrF1&>YXx!h?Wc5-T15bpOK!gf_r{ZMHobPcV&D})El~#W000A9 zObLvPu=PrDb^}yGmhkoNXd$2`;)q4pp2@Bsl#?%w!)%JRdG@_juaoi76~8eKf@JO% z^|*aj&vuyM+OUf3GBo{}`X#OcBXFt$X(0$4h#?n|kPvg9u4LTlQ;T}y(y-N3YWzdY zDi&Wnr=s%$Ps4GHSBro{QP@K(4 z>)A%UcnT2o*uIj0Z-7k4*Ws;{0xKiRCf$`pUU0w{mKkX5Nk!e4$$8A}nVlXVA~QSJ zGPn44vhjhI3Jd~H^}(t--N}O=%*;u{%;tMZIQ2)Xu#4D~qU-!B9BJ1yzN1Y#UsKw7 zi@vR5t=Mr5R-Tm;o6BclKzhIrxMw^#pNhH;vHc6vvpopRd+P=SCI@jH$2k^dU0%%n zSURsSn2q?TngHo=77zHde!(`@K<}!|C?e~%4=AlQtb`;*2paw<2cULkBI!cZAjr#= z8o@OqEL;NZe|eL7N;x8G>!LT+UA~yU261xk34JMPN0jv_(9qCA#YeWNp3YD69o7lz z!b+S7VB}5!7pKqQ)Wiv1|5 $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', + 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', + 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', ); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index cc0e3f7..333e390 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -7,5 +7,7 @@ $baseDir = dirname($vendorDir); return array( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', 'c15d4a1253e33e055d05e547c61dcb71' => $vendorDir . '/smarty/smarty/src/functions.php', ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 9010687..ab7d501 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,8 +6,12 @@ $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( - 'Yasse\\Projetphp\\' => array($baseDir . '/src'), + 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), + 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Smarty\\' => array($vendorDir . '/smarty/smarty/src'), - 'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'), + 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), + 'Guill\\Guillaume\\' => array($baseDir . '/src'), + 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), + 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index a3a36a4..9c2d846 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -8,46 +8,76 @@ class ComposerStaticInit68f8d029d347b4c0c8cdbe33eeb96101 { public static $files = array ( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', 'c15d4a1253e33e055d05e547c61dcb71' => __DIR__ . '/..' . '/smarty/smarty/src/functions.php', ); public static $prefixLengthsPsr4 = array ( - 'Y' => - array ( - 'Yasse\\Projetphp\\' => 16, - ), 'S' => array ( + 'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Mbstring\\' => 26, + 'Symfony\\Polyfill\\Ctype\\' => 23, 'Smarty\\' => 7, ), 'P' => array ( - 'PHPMailer\\PHPMailer\\' => 20, + 'PhpOption\\' => 10, + ), + 'G' => + array ( + 'Guill\\Guillaume\\' => 16, + 'GrahamCampbell\\ResultType\\' => 26, + ), + 'D' => + array ( + 'Dotenv\\' => 7, ), ); public static $prefixDirsPsr4 = array ( - 'Yasse\\Projetphp\\' => + 'Symfony\\Polyfill\\Php80\\' => array ( - 0 => __DIR__ . '/../..' . '/src', + 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', ), 'Symfony\\Polyfill\\Mbstring\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', ), + 'Symfony\\Polyfill\\Ctype\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', + ), 'Smarty\\' => array ( 0 => __DIR__ . '/..' . '/smarty/smarty/src', ), - 'PHPMailer\\PHPMailer\\' => + 'PhpOption\\' => array ( - 0 => __DIR__ . '/..' . '/phpmailer/phpmailer/src', + 0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption', + ), + 'Guill\\Guillaume\\' => + array ( + 0 => __DIR__ . '/../..' . '/src', + ), + 'GrahamCampbell\\ResultType\\' => + array ( + 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src', + ), + 'Dotenv\\' => + array ( + 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', ), ); public static $classMap = array ( + 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', + 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', ); public static function getInitializer(ClassLoader $loader) diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 58ba902..4b56e86 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,103 +1,161 @@ { "packages": [ { - "name": "phpmailer/phpmailer", - "version": "v7.0.2", - "version_normalized": "7.0.2.0", + "name": "graham-campbell/result-type", + "version": "v1.1.4", + "version_normalized": "1.1.4.0", "source": { "type": "git", - "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088" + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088", - "reference": "ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "php": ">=5.5.0" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "doctrine/annotations": "^1.2.6 || ^1.13.3", - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^10.0.0@dev", - "squizlabs/php_codesniffer": "^3.13.5", - "yoast/phpunit-polyfills": "^1.0.4" + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" }, - "suggest": { - "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", - "directorytree/imapengine": "For uploading sent messages via IMAP, see gmail example", - "ext-imap": "Needed to support advanced email address parsing according to RFC822", - "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", - "ext-openssl": "Needed for secure SMTP sending and DKIM signing", - "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "psr/log": "For optional PSR-3 debug logging", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", - "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" - }, - "time": "2026-01-09T18:02:33+00:00", + "time": "2025-12-27T19:43:20+00:00", "type": "library", "installation-source": "dist", "autoload": { "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" + "GrahamCampbell\\ResultType\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1-only" + "MIT" ], "authors": [ { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" - }, - { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" - }, - { - "name": "Andy Prevost", - "email": "codeworxtech@users.sourceforge.net" - }, - { - "name": "Brent R. Matzelle" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], - "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], "support": { - "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v7.0.2" + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" }, "funding": [ { - "url": "https://github.com/Synchro", + "url": "https://github.com/GrahamCampbell", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" } ], - "install-path": "../phpmailer/phpmailer" + "install-path": "../graham-campbell/result-type" }, { - "name": "smarty/smarty", - "version": "v5.7.0", - "version_normalized": "5.7.0.0", + "name": "phpoption/phpoption", + "version": "1.9.5", + "version_normalized": "1.9.5.0", "source": { "type": "git", - "url": "https://github.com/smarty-php/smarty.git", - "reference": "73da7e90f302175a570662fcb0ba41f57b7a92ab" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smarty-php/smarty/zipball/73da7e90f302175a570662fcb0ba41f57b7a92ab", - "reference": "73da7e90f302175a570662fcb0ba41f57b7a92ab", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "time": "2025-12-27T19:41:33+00:00", + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "install-path": "../phpoption/phpoption" + }, + { + "name": "smarty/smarty", + "version": "v5.8.0", + "version_normalized": "5.8.0.0", + "source": { + "type": "git", + "url": "https://github.com/smarty-php/smarty.git", + "reference": "78d259d3b971c59a0cd719c270cc5cbb740c36a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/78d259d3b971c59a0cd719c270cc5cbb740c36a7", + "reference": "78d259d3b971c59a0cd719c270cc5cbb740c36a7", "shasum": "" }, "require": { @@ -108,7 +166,7 @@ "phpunit/phpunit": "^8.5 || ^7.5", "smarty/smarty-lexer": "^4.0.2" }, - "time": "2025-11-19T21:36:38+00:00", + "time": "2026-02-15T14:27:15+00:00", "type": "library", "extra": { "branch-alias": { @@ -154,7 +212,7 @@ "support": { "forum": "https://github.com/smarty-php/smarty/discussions", "issues": "https://github.com/smarty-php/smarty/issues", - "source": "https://github.com/smarty-php/smarty/tree/v5.7.0" + "source": "https://github.com/smarty-php/smarty/tree/v5.8.0" }, "funding": [ { @@ -164,6 +222,92 @@ ], "install-path": "../smarty/smarty" }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "version_normalized": "1.33.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "time": "2024-09-09T11:45:10+00:00", + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-ctype" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.33.0", @@ -251,6 +395,180 @@ } ], "install-path": "../symfony/polyfill-mbstring" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "version_normalized": "1.33.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "time": "2025-01-02T08:10:11+00:00", + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-php80" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "version_normalized": "5.6.3.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "time": "2025-12-27T19:49:13+00:00", + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "install-path": "../vlucas/phpdotenv" } ], "dev": true, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 7bf500c..837c25e 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -1,33 +1,60 @@ array( - 'name' => 'yasse/projetphp', - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => 'a7742055942c52c549ab170af519a23b7ca43baf', + 'name' => 'guill/guillaume', + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => true, ), 'versions' => array( - 'phpmailer/phpmailer' => array( - 'pretty_version' => 'v7.0.2', - 'version' => '7.0.2.0', - 'reference' => 'ebf1655bd5b99b3f97e1a3ec0a69e5f4cd7ea088', + 'graham-campbell/result-type' => array( + 'pretty_version' => 'v1.1.4', + 'version' => '1.1.4.0', + 'reference' => 'e01f4a821471308ba86aa202fed6698b6b695e3b', 'type' => 'library', - 'install_path' => __DIR__ . '/../phpmailer/phpmailer', + 'install_path' => __DIR__ . '/../graham-campbell/result-type', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'guill/guillaume' => array( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => null, + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'phpoption/phpoption' => array( + 'pretty_version' => '1.9.5', + 'version' => '1.9.5.0', + 'reference' => '75365b91986c2405cf5e1e012c5595cd487a98be', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpoption/phpoption', 'aliases' => array(), 'dev_requirement' => false, ), 'smarty/smarty' => array( - 'pretty_version' => 'v5.7.0', - 'version' => '5.7.0.0', - 'reference' => '73da7e90f302175a570662fcb0ba41f57b7a92ab', + 'pretty_version' => 'v5.8.0', + 'version' => '5.8.0.0', + 'reference' => '78d259d3b971c59a0cd719c270cc5cbb740c36a7', 'type' => 'library', 'install_path' => __DIR__ . '/../smarty/smarty', 'aliases' => array(), 'dev_requirement' => false, ), + 'symfony/polyfill-ctype' => array( + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/polyfill-mbstring' => array( 'pretty_version' => 'v1.33.0', 'version' => '1.33.0.0', @@ -37,12 +64,21 @@ 'aliases' => array(), 'dev_requirement' => false, ), - 'yasse/projetphp' => array( - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => 'a7742055942c52c549ab170af519a23b7ca43baf', + 'symfony/polyfill-php80' => array( + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => '0cc9dd0f17f61d8131e7df6b84bd344899fe2608', 'type' => 'library', - 'install_path' => __DIR__ . '/../../', + 'install_path' => __DIR__ . '/../symfony/polyfill-php80', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'vlucas/phpdotenv' => array( + 'pretty_version' => 'v5.6.3', + 'version' => '5.6.3.0', + 'reference' => '955e7815d677a3eaa7075231212f2110983adecc', + 'type' => 'library', + 'install_path' => __DIR__ . '/../vlucas/phpdotenv', 'aliases' => array(), 'dev_requirement' => false, ), diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index 6cd6b53..2a9ec55 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -4,8 +4,8 @@ $issues = array(); -if (!(PHP_VERSION_ID >= 70200)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; +if (!(PHP_VERSION_ID >= 70205)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.'; } if ($issues) { diff --git a/vendor/graham-campbell/result-type/LICENSE b/vendor/graham-campbell/result-type/LICENSE new file mode 100644 index 0000000..8e7c898 --- /dev/null +++ b/vendor/graham-campbell/result-type/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020-2024 Graham Campbell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/graham-campbell/result-type/composer.json b/vendor/graham-campbell/result-type/composer.json new file mode 100644 index 0000000..441412f --- /dev/null +++ b/vendor/graham-campbell/result-type/composer.json @@ -0,0 +1,33 @@ +{ + "name": "graham-campbell/result-type", + "description": "An Implementation Of The Result Type", + "keywords": ["result", "result-type", "Result", "Result Type", "Result-Type", "Graham Campbell", "GrahamCampbell"], + "license": "MIT", + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "GrahamCampbell\\Tests\\ResultType\\": "tests/" + } + }, + "config": { + "preferred-install": "dist" + } +} diff --git a/vendor/graham-campbell/result-type/src/Error.php b/vendor/graham-campbell/result-type/src/Error.php new file mode 100644 index 0000000..2c37c3e --- /dev/null +++ b/vendor/graham-campbell/result-type/src/Error.php @@ -0,0 +1,121 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace GrahamCampbell\ResultType; + +use PhpOption\None; +use PhpOption\Some; + +/** + * @template T + * @template E + * + * @extends \GrahamCampbell\ResultType\Result + */ +final class Error extends Result +{ + /** + * @var E + */ + private $value; + + /** + * Internal constructor for an error value. + * + * @param E $value + * + * @return void + */ + private function __construct($value) + { + $this->value = $value; + } + + /** + * Create a new error value. + * + * @template F + * + * @param F $value + * + * @return \GrahamCampbell\ResultType\Result + */ + public static function create($value) + { + return new self($value); + } + + /** + * Get the success option value. + * + * @return \PhpOption\Option + */ + public function success() + { + return None::create(); + } + + /** + * Map over the success value. + * + * @template S + * + * @param callable(T):S $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function map(callable $f) + { + return self::create($this->value); + } + + /** + * Flat map over the success value. + * + * @template S + * @template F + * + * @param callable(T):\GrahamCampbell\ResultType\Result $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function flatMap(callable $f) + { + /** @var \GrahamCampbell\ResultType\Result */ + return self::create($this->value); + } + + /** + * Get the error option value. + * + * @return \PhpOption\Option + */ + public function error() + { + return Some::create($this->value); + } + + /** + * Map over the error value. + * + * @template F + * + * @param callable(E):F $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function mapError(callable $f) + { + return self::create($f($this->value)); + } +} diff --git a/vendor/graham-campbell/result-type/src/Result.php b/vendor/graham-campbell/result-type/src/Result.php new file mode 100644 index 0000000..8c67bcd --- /dev/null +++ b/vendor/graham-campbell/result-type/src/Result.php @@ -0,0 +1,69 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace GrahamCampbell\ResultType; + +/** + * @template T + * @template E + */ +abstract class Result +{ + /** + * Get the success option value. + * + * @return \PhpOption\Option + */ + abstract public function success(); + + /** + * Map over the success value. + * + * @template S + * + * @param callable(T):S $f + * + * @return \GrahamCampbell\ResultType\Result + */ + abstract public function map(callable $f); + + /** + * Flat map over the success value. + * + * @template S + * @template F + * + * @param callable(T):\GrahamCampbell\ResultType\Result $f + * + * @return \GrahamCampbell\ResultType\Result + */ + abstract public function flatMap(callable $f); + + /** + * Get the error option value. + * + * @return \PhpOption\Option + */ + abstract public function error(); + + /** + * Map over the error value. + * + * @template F + * + * @param callable(E):F $f + * + * @return \GrahamCampbell\ResultType\Result + */ + abstract public function mapError(callable $f); +} diff --git a/vendor/graham-campbell/result-type/src/Success.php b/vendor/graham-campbell/result-type/src/Success.php new file mode 100644 index 0000000..27cd85e --- /dev/null +++ b/vendor/graham-campbell/result-type/src/Success.php @@ -0,0 +1,120 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace GrahamCampbell\ResultType; + +use PhpOption\None; +use PhpOption\Some; + +/** + * @template T + * @template E + * + * @extends \GrahamCampbell\ResultType\Result + */ +final class Success extends Result +{ + /** + * @var T + */ + private $value; + + /** + * Internal constructor for a success value. + * + * @param T $value + * + * @return void + */ + private function __construct($value) + { + $this->value = $value; + } + + /** + * Create a new error value. + * + * @template S + * + * @param S $value + * + * @return \GrahamCampbell\ResultType\Result + */ + public static function create($value) + { + return new self($value); + } + + /** + * Get the success option value. + * + * @return \PhpOption\Option + */ + public function success() + { + return Some::create($this->value); + } + + /** + * Map over the success value. + * + * @template S + * + * @param callable(T):S $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function map(callable $f) + { + return self::create($f($this->value)); + } + + /** + * Flat map over the success value. + * + * @template S + * @template F + * + * @param callable(T):\GrahamCampbell\ResultType\Result $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function flatMap(callable $f) + { + return $f($this->value); + } + + /** + * Get the error option value. + * + * @return \PhpOption\Option + */ + public function error() + { + return None::create(); + } + + /** + * Map over the error value. + * + * @template F + * + * @param callable(E):F $f + * + * @return \GrahamCampbell\ResultType\Result + */ + public function mapError(callable $f) + { + return self::create($this->value); + } +} diff --git a/vendor/phpmailer/phpmailer/COMMITMENT b/vendor/phpmailer/phpmailer/COMMITMENT deleted file mode 100644 index a687e0d..0000000 --- a/vendor/phpmailer/phpmailer/COMMITMENT +++ /dev/null @@ -1,46 +0,0 @@ -GPL Cooperation Commitment -Version 1.0 - -Before filing or continuing to prosecute any legal proceeding or claim -(other than a Defensive Action) arising from termination of a Covered -License, we commit to extend to the person or entity ('you') accused -of violating the Covered License the following provisions regarding -cure and reinstatement, taken from GPL version 3. As used here, the -term 'this License' refers to the specific Covered License being -enforced. - - However, if you cease all violation of this License, then your - license from a particular copyright holder is reinstated (a) - provisionally, unless and until the copyright holder explicitly - and finally terminates your license, and (b) permanently, if the - copyright holder fails to notify you of the violation by some - reasonable means prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is - reinstated permanently if the copyright holder notifies you of the - violation by some reasonable means, this is the first time you - have received notice of violation of this License (for any work) - from that copyright holder, and you cure the violation prior to 30 - days after your receipt of the notice. - -We intend this Commitment to be irrevocable, and binding and -enforceable against us and assignees of or successors to our -copyrights. - -Definitions - -'Covered License' means the GNU General Public License, version 2 -(GPLv2), the GNU Lesser General Public License, version 2.1 -(LGPLv2.1), or the GNU Library General Public License, version 2 -(LGPLv2), all as published by the Free Software Foundation. - -'Defensive Action' means a legal proceeding or claim that We bring -against you in response to a prior proceeding or claim initiated by -you or your affiliate. - -'We' means each contributor to this repository as of the date of -inclusion of this file, including subsidiaries of a corporate -contributor. - -This work is available under a Creative Commons Attribution-ShareAlike -4.0 International license (https://creativecommons.org/licenses/by-sa/4.0/). diff --git a/vendor/phpmailer/phpmailer/LICENSE b/vendor/phpmailer/phpmailer/LICENSE deleted file mode 100644 index f166cc5..0000000 --- a/vendor/phpmailer/phpmailer/LICENSE +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! \ No newline at end of file diff --git a/vendor/phpmailer/phpmailer/README.md b/vendor/phpmailer/phpmailer/README.md deleted file mode 100644 index f436668..0000000 --- a/vendor/phpmailer/phpmailer/README.md +++ /dev/null @@ -1,232 +0,0 @@ -[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://supportukrainenow.org/) - -![PHPMailer](https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png) - -# PHPMailer – A full-featured email creation and transfer class for PHP - -[![Test status](https://github.com/PHPMailer/PHPMailer/workflows/Tests/badge.svg)](https://github.com/PHPMailer/PHPMailer/actions) -[![codecov.io](https://codecov.io/gh/PHPMailer/PHPMailer/branch/master/graph/badge.svg?token=iORZpwmYmM)](https://codecov.io/gh/PHPMailer/PHPMailer) -[![Latest Stable Version](https://poser.pugx.org/phpmailer/phpmailer/v/stable.svg)](https://packagist.org/packages/phpmailer/phpmailer) -[![Total Downloads](https://poser.pugx.org/phpmailer/phpmailer/downloads)](https://packagist.org/packages/phpmailer/phpmailer) -[![License](https://poser.pugx.org/phpmailer/phpmailer/license.svg)](https://packagist.org/packages/phpmailer/phpmailer) -[![API Docs](https://github.com/phpmailer/phpmailer/workflows/Docs/badge.svg)](https://phpmailer.github.io/PHPMailer/) -[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/PHPMailer/PHPMailer/badge)](https://api.securityscorecards.dev/projects/github.com/PHPMailer/PHPMailer) - -## Features -- Probably the world's most popular code for sending email from PHP! -- Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more -- Integrated SMTP support – send without a local mail server -- Send emails with multiple To, CC, BCC, and Reply-to addresses -- Multipart/alternative emails for mail clients that do not read HTML email -- Add attachments, including inline -- Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings -- Full UTF-8 support when using servers that support `SMTPUTF8`. -- Support for iCal events in multiparts and attachments -- SMTP authentication with `LOGIN`, `PLAIN`, `CRAM-MD5`, and `XOAUTH2` mechanisms over SMTPS and SMTP+STARTTLS transports -- Validates email addresses automatically -- Protects against header injection attacks -- Error messages in over 50 languages! -- DKIM and S/MIME signing support -- Compatible with PHP 5.5 and later, including PHP 8.5 -- Namespaced to prevent name clashes -- Much more! - -## Why you might need it -Many PHP developers need to send email from their code. The only PHP function that supports this directly is [`mail()`](https://www.php.net/manual/en/function.mail.php). However, it does not provide any assistance for making use of popular features such as authentication, HTML messages, and attachments. - -Formatting email correctly is surprisingly difficult. There are myriad overlapping (and conflicting) standards, requiring tight adherence to horribly complicated formatting and encoding rules – the vast majority of code that you'll find online that uses the `mail()` function directly is just plain wrong, if not unsafe! - -The PHP `mail()` function usually sends via a local mail server, typically fronted by a `sendmail` binary on Linux, BSD, and macOS platforms, however, Windows usually doesn't include a local mail server; PHPMailer's integrated SMTP client allows email sending on all platforms without needing a local mail server. Be aware though, that the `mail()` function should be avoided when possible; it's both faster and [safer](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html) to use SMTP to localhost. - -*Please* don't be tempted to do it yourself – if you don't use PHPMailer, there are many other excellent libraries that -you should look at before rolling your own. Try [Symfony Mailer](https://symfony.com/doc/current/mailer.html), [Laminas/Mail](https://docs.laminas.dev/laminas-mail/), [ZetaComponents](https://github.com/zetacomponents/Mail), etc. - -## License -This software is distributed under the [LGPL 2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) license, along with the [GPL Cooperation Commitment](https://gplcc.github.io/gplcc/). Please read [LICENSE](https://github.com/PHPMailer/PHPMailer/blob/master/LICENSE) for information on the software availability and distribution. - -## Installation & loading -PHPMailer is available on [Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), and installation via [Composer](https://getcomposer.org) is the recommended way to install PHPMailer. Just add this line to your `composer.json` file: - -```json -"phpmailer/phpmailer": "^7.0.0" -``` - -or run - -```sh -composer require phpmailer/phpmailer -``` - -Note that the `vendor` folder and the `vendor/autoload.php` script are generated by Composer; they are not part of PHPMailer. - -If you want to use XOAUTH2 authentication, you will also need to add a dependency on the `league/oauth2-client` and appropriate service adapters package in your `composer.json`, or take a look at -by @decomplexity's [SendOauth2 wrapper](https://github.com/decomplexity/SendOauth2), especially if you're using Microsoft services. - -Alternatively, if you're not using Composer, you -can [download PHPMailer as a zip file](https://github.com/PHPMailer/PHPMailer/archive/master.zip), (note that docs and examples are not included in the zip file), then copy the contents of the PHPMailer folder into one of the `include_path` directories specified in your PHP configuration and load each class file manually: - -```php -SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output - $mail->isSMTP(); //Send using SMTP - $mail->Host = 'smtp.example.com'; //Set the SMTP server to send through - $mail->SMTPAuth = true; //Enable SMTP authentication - $mail->Username = 'user@example.com'; //SMTP username - $mail->Password = 'secret'; //SMTP password - $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption - $mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS` - - //Recipients - $mail->setFrom('from@example.com', 'Mailer'); - $mail->addAddress('joe@example.net', 'Joe User'); //Add a recipient - $mail->addAddress('ellen@example.com'); //Name is optional - $mail->addReplyTo('info@example.com', 'Information'); - $mail->addCC('cc@example.com'); - $mail->addBCC('bcc@example.com'); - - //Attachments - $mail->addAttachment('/var/tmp/file.tar.gz'); //Add attachments - $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Optional name - - //Content - $mail->isHTML(true); //Set email format to HTML - $mail->Subject = 'Here is the subject'; - $mail->Body = 'This is the HTML message body in bold!'; - $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; - - $mail->send(); - echo 'Message has been sent'; -} catch (Exception $e) { - echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; -} -``` - -You'll find plenty to play with in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder, which covers many common scenarios including sending through Gmail, building contact forms, sending to mailing lists, and more. - -If you are re-using the instance (e.g. when sending to a mailing list), you may need to clear the recipient list to avoid sending duplicate messages. See [the mailing list example](https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps) for further guidance. - -That's it. You should now be ready to use PHPMailer! - -## Localization -PHPMailer defaults to English, but in the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder, you'll find many translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this: - -```php -//To load the French version -$mail->setLanguage('fr', '/optional/path/to/language/directory/'); -``` - -We welcome corrections and new languages – if you're looking for corrections, run the [Language/TranslationCompletenessTest.php](https://github.com/PHPMailer/PHPMailer/blob/master/test/Language/TranslationCompletenessTest.php) script in the tests folder and it will show any missing translations. - -## Documentation -Start reading at the [GitHub wiki](https://github.com/PHPMailer/PHPMailer/wiki). If you're having trouble, head for [the troubleshooting guide](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting) as it's frequently updated. - -Examples of how to use PHPMailer for common scenarios can be found in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder. If you're looking for a good starting point, we recommend you start with [the Gmail example](https://github.com/PHPMailer/PHPMailer/tree/master/examples/gmail.phps). - -To reduce PHPMailer's deployed code footprint, examples are not included if you load PHPMailer via Composer or via [GitHub's zip file download](https://github.com/PHPMailer/PHPMailer/archive/master.zip), so you'll need to either clone the git repository or use the above links to get to the examples directly. - -Complete generated API documentation is [available online](https://phpmailer.github.io/PHPMailer/). - -You can generate complete API-level documentation by running `phpdoc` in the top-level folder, and documentation will appear in the `docs` folder, though you'll need to have [PHPDocumentor](https://www.phpdoc.org) installed. You may find [the unit tests](https://github.com/PHPMailer/PHPMailer/blob/master/test/PHPMailer/PHPMailerTest.php) a good reference for how to do various operations such as encryption. - -If the documentation doesn't cover what you need, search the [many questions on Stack Overflow](https://stackoverflow.com/questions/tagged/phpmailer), and before you ask a question about "SMTP Error: Could not connect to SMTP host.", [read the troubleshooting guide](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting). - -## Tests -[PHPMailer tests](https://github.com/PHPMailer/PHPMailer/tree/master/test/) use PHPUnit 9, with [a polyfill](https://github.com/Yoast/PHPUnit-Polyfills) to let 9-style tests run on older PHPUnit and PHP versions. - -[![Test status](https://github.com/PHPMailer/PHPMailer/workflows/Tests/badge.svg)](https://github.com/PHPMailer/PHPMailer/actions) - -If this isn't passing, is there something you can do to help? - -## Security -Please disclose any vulnerabilities found responsibly – report security issues to the maintainers privately. - -See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) and [PHPMailer's security advisories on GitHub](https://github.com/PHPMailer/PHPMailer/security). - -## Contributing -Please submit bug reports, suggestions, and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues). - -We're particularly interested in fixing edge cases, expanding test coverage, and updating translations. - -If you found a mistake in the docs, or want to add something, go ahead and amend the wiki – anyone can edit it. - -If you have git clones from prior to the move to the PHPMailer GitHub organisation, you'll need to update any remote URLs referencing the old GitHub location with a command like this from within your clone: - -```sh -git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git -``` - -Please *don't* use the SourceForge or Google Code projects any more; they are obsolete and no longer maintained. - -## Sponsorship -Development time and resources for PHPMailer are provided by [Smartmessages.net](https://info.smartmessages.net/), the world's only privacy-first email marketing system. - -Smartmessages.net privacy-first email marketing logo - -Donations are very welcome, whether in beer 🍺, T-shirts 👕, or cold, hard cash 💰. Sponsorship through GitHub is a simple and convenient way to say "thank you" to PHPMailer's maintainers and contributors – just click the "Sponsor" button [on the project page](https://github.com/PHPMailer/PHPMailer). If your company uses PHPMailer, consider taking part in Tidelift's enterprise support programme. - -## PHPMailer For Enterprise - -Available as part of the Tidelift Subscription. - -The maintainers of PHPMailer and thousands of other packages are working with Tidelift to deliver commercial -support and maintenance for the open-source packages you use to build your applications. Save time, reduce risk, and -improve code health, while paying the maintainers of the exact packages you -use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-phpmailer-phpmailer?utm_source=packagist-phpmailer-phpmailer&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - -## Changelog -See [changelog](changelog.md). - -## History -- PHPMailer was originally written in 2001 by Brent R. Matzelle as a [SourceForge project](https://sourceforge.net/projects/phpmailer/). -- [Marcus Bointon](https://github.com/Synchro) (`coolbru` on SF) and Andy Prevost (`codeworxtech`) took over the project in 2004. -- Became an Apache incubator project on Google Code in 2010, managed by Jim Jagielski. -- Marcus created [his fork on GitHub](https://github.com/Synchro/PHPMailer) in 2008. -- Jim and Marcus decide to join forces and use GitHub as the canonical and official repo for PHPMailer in 2013. -- PHPMailer moves to [the PHPMailer organisation](https://github.com/PHPMailer) on GitHub in 2013. - -### What's changed since moving from SourceForge? -- Official successor to the SourceForge and Google Code projects. -- Test suite. -- Continuous integration with GitHub Actions. -- Composer support. -- Public development. -- Additional languages and language strings. -- CRAM-MD5 authentication support. -- Preserves full repo history of authors, commits, and branches from the original SourceForge project. diff --git a/vendor/phpmailer/phpmailer/SECURITY.md b/vendor/phpmailer/phpmailer/SECURITY.md deleted file mode 100644 index 4f34026..0000000 --- a/vendor/phpmailer/phpmailer/SECURITY.md +++ /dev/null @@ -1,37 +0,0 @@ -# Security notices relating to PHPMailer - -Please disclose any security issues or vulnerabilities found through [Tidelift's coordinated disclosure system](https://tidelift.com/security) or to the maintainers privately. - -PHPMailer 6.4.1 and earlier contain a vulnerability that can result in untrusted code being called (if such code is injected into the host project's scope by other means). If the `$patternselect` parameter to `validateAddress()` is set to `'php'` (the default, defined by `PHPMailer::$validator`), and the global namespace contains a function called `php`, it will be called in preference to the built-in validator of the same name. Mitigated in PHPMailer 6.5.0 by denying the use of simple strings as validator function names. Recorded as [CVE-2021-3603](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-3603). Reported by [Vikrant Singh Chauhan](mailto:vi@hackberry.xyz) via [huntr.dev](https://www.huntr.dev/). - -PHPMailer versions 6.4.1 and earlier contain a possible remote code execution vulnerability through the `$lang_path` parameter of the `setLanguage()` method. If the `$lang_path` parameter is passed unfiltered from user input, it can be set to [a UNC path](https://docs.microsoft.com/en-us/dotnet/standard/io/file-path-formats#unc-paths), and if an attacker is also able to persuade the server to load a file from that UNC path, a script file under their control may be executed. This vulnerability only applies to systems that resolve UNC paths, typically only Microsoft Windows. -PHPMailer 6.5.0 mitigates this by no longer treating translation files as PHP code, but by parsing their text content directly. This approach avoids the possibility of executing unknown code while retaining backward compatibility. This isn't ideal, so the current translation format is deprecated and will be replaced in the next major release. Recorded as [CVE-2021-34551](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-34551). Reported by [Jilin Diting Information Technology Co., Ltd](https://listensec.com) via Tidelift. - -PHPMailer versions between 6.1.8 and 6.4.0 contain a regression of the earlier CVE-2018-19296 object injection vulnerability as a result of [a fix for Windows UNC paths in 6.1.8](https://github.com/PHPMailer/PHPMailer/commit/e2e07a355ee8ff36aba21d0242c5950c56e4c6f9). Recorded as [CVE-2020-36326](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-36326). Reported by Fariskhi Vidyan via Tidelift. 6.4.1 fixes this issue, and also enforces stricter checks for URL schemes in local path contexts. - -PHPMailer versions 6.1.5 and earlier contain an output escaping bug that occurs in `Content-Type` and `Content-Disposition` when filenames passed into `addAttachment` and other methods that accept attachment names contain double quote characters, in contravention of RFC822 3.4.1. No specific vulnerability has been found relating to this, but it could allow file attachments to bypass attachment filters that are based on matching filename extensions. Recorded as [CVE-2020-13625](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-13625). Reported by Elar Lang of Clarified Security. - -PHPMailer versions prior to 6.0.6 and 5.2.27 are vulnerable to an object injection attack by passing `phar://` paths into `addAttachment()` and other functions that may receive unfiltered local paths, possibly leading to RCE. Recorded as [CVE-2018-19296](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-19296). See [this article](https://knasmueller.net/5-answers-about-php-phar-exploitation) for more info on this type of vulnerability. Mitigated by blocking the use of paths containing URL-protocol style prefixes such as `phar://`. Reported by Sehun Oh of cyberone.kr. - -PHPMailer versions prior to 5.2.24 (released July 26th 2017) have an XSS vulnerability in one of the code examples, [CVE-2017-11503](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11503). The `code_generator.phps` example did not filter user input prior to output. This file is distributed with a `.phps` extension, so it is not normally executable unless it is explicitly renamed, and the file is not included when PHPMailer is loaded through composer, so it is safe by default. There was also an undisclosed potential XSS vulnerability in the default exception handler (unused by default). Patches for both issues kindly provided by Patrick Monnerat of the Fedora Project. - -PHPMailer versions prior to 5.2.22 (released January 9th 2017) have a local file disclosure vulnerability, [CVE-2017-5223](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-5223). If content passed into `msgHTML()` is sourced from unfiltered user input, relative paths can map to absolute local file paths and added as attachments. Also note that `addAttachment` (just like `file_get_contents`, `passthru`, `unlink`, etc) should not be passed user-sourced params either! Reported by Yongxiang Li of Asiasecurity. - -PHPMailer versions prior to 5.2.20 (released December 28th 2016) are vulnerable to [CVE-2016-10045](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10045) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html), and patched by Paul Buonopane (@Zenexer). - -PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html). - -PHPMailer versions prior to 5.2.14 (released November 2015) are vulnerable to [CVE-2015-8476](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8476) an SMTP CRLF injection bug permitting arbitrary message sending. - -PHPMailer versions prior to 5.2.10 (released May 2015) are vulnerable to [CVE-2008-5619](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-5619), a remote code execution vulnerability in the bundled html2text library. This file was removed in 5.2.10, so if you are using a version prior to that and make use of the html2text function, it's vitally important that you upgrade and remove this file. - -PHPMailer versions prior to 2.0.7 and 2.2.1 are vulnerable to [CVE-2012-0796](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0796), an email header injection attack. - -Joomla 1.6.0 uses PHPMailer in an unsafe way, allowing it to reveal local file paths, reported in [CVE-2011-3747](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-3747). - -PHPMailer didn't sanitise the `$lang_path` parameter in `SetLanguage`. This wasn't a problem in itself, but some apps (PHPClassifieds, ATutor) also failed to sanitise user-provided parameters passed to it, permitting semi-arbitrary local file inclusion, reported in [CVE-2010-4914](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-4914), [CVE-2007-2021](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-2021) and [CVE-2006-5734](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2006-5734). - -PHPMailer 1.7.2 and earlier contained a possible DDoS vulnerability reported in [CVE-2005-1807](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-1807). - -PHPMailer 1.7 and earlier (June 2003) have a possible vulnerability in the `SendmailSend` method where shell commands may not be sanitised. Reported in [CVE-2007-3215](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-3215). - diff --git a/vendor/phpmailer/phpmailer/SMTPUTF8.md b/vendor/phpmailer/phpmailer/SMTPUTF8.md deleted file mode 100644 index ca284ee..0000000 --- a/vendor/phpmailer/phpmailer/SMTPUTF8.md +++ /dev/null @@ -1,48 +0,0 @@ -# A short history of UTF-8 in email - -## Background - -For most of its existence, SMTP has been a 7-bit channel, only supporting US-ASCII characters. This has been a problem for many languages, especially those that use non-Latin scripts, and has led to the development of various workarounds. - -The first major improvement, introduced in 1994 in [RFC 1652](https://www.rfc-editor.org/rfc/rfc1652) and extended in 2011 in [RFC 6152](https://www.rfc-editor.org/rfc/rfc6152), was the addition of the `8BITMIME` SMTP extension, which allowed raw 8-bit data to be included in message bodies sent over SMTP. -This allowed the message *contents* to contain 8-bit data, including things like UTF-8 text, even though the SMTP protocol itself was still firmly 7-bit. This worked by having the server switch to 8-bit after the headers, and then back to 7-bit after the completion of a `DATA` command. - -From 1996, messages could support [RFC 2047 encoding](https://www.rfc-editor.org/rfc/rfc2047), which permitted inserting characters from any character set into header *values* (but not names), but only by encoding them in somewhat unreadable ways to allow them to survive passage through a 7-bit channel. An example with a subject of "Schrödinger's cat" would be: - -``` -Subject: =?utf-8?Q=Schr=C3=B6dinger=92s_Cat?= -``` - -Here the accented `ö` is encoded as `=C3=B6`, which is the UTF-8 encoding of the 2-byte character, and the whole thing is wrapped in `=?utf-8?Q?` to indicate that it uses the UTF-8 charset and `quoted-printable` encoding. This is a bit of a hack, and not very human-friendly, but it works. - -Similarly, 8-bit message bodies could be encoded using the same `quoted-printable` and `base64` content transfer encoding (CTE) schemes, which preserved the 8-bit content while encoding it in a format that could survive transmission through a 7-bit channel. - -Domain names were originally also stuck in a 7-bit world, actually even more constrained to only a subset of the US-ASCII character set. But of course, many people want to have domains in their own language/script. Internationalized domain name (IDN) permitted this, using yet another complex encoding scheme called punycode, defined for domain names in 2003 in [RFC 3492](https://www.rfc-editor.org/rfc/rfc3492). This finally allowed the domain part (after the `@`) of email addresses to contain UTF-8, though it was actually an illusion preserved by email client applications. For example, an address of -`user@café.example.com` translates to -`user@xn--caf-dma.example.com` in punycode, rendering it mostly unreadable, but 7-bit friendly, and remaining compatible with email clients that don't know about IDN. - -The one remaining part of email that could not handle UTF-8 is the local part of email addresses (the part before the `@`). - -I've only mentioned UTF-8 here, but most of these approaches also allowed other character sets that were popular, such as [the ISO-8859 family](https://en.wikipedia.org/wiki/ISO/IEC_8859). However, UTF-8 solves so many problems that these other character sets are gradually falling out of favour, as UTF-8 can support all languages. - -This patchwork of overlapping approaches has served us well, but we have to admit that it's a mess. - -## SMTPUTF8 - -`SMTPUTF8` is another SMTP extension, defined in [RFC 6531](https://www.rfc-editor.org/rfc/rfc6531) in 2012. This essentially solves the whole problem, allowing the entire SMTP conversation — commands, headers, and message bodies — to be sent in raw, unencoded UTF-8. - -But there's a problem with this approach: adoption. If you send a UTF-8 message to a recipient whose mail server doesn't support this format, the sender has to somehow downgrade the message to make it survive a transition to 7-bit. This is a hard problem to solve, especially since there is no way to make a 7-bit system support UTF-8 in the local parts of addresses. This downgrade problem is what held up the adoption of `SMTPUTF8` in PHPMailer for many years, but in that time the *de facto* approach has become to simply fail in that situation, and tell the recipient it's time they upgraded their mail server 😅. - -The vast majority of large email providers (gmail, Yahoo, Microsoft, etc), mail servers (postfix, exim, IIS, etc), and mail clients (Apple Mail, Outlook, Thunderbird, etc) now all support SMTPUTF8, so the need for backward compatibility is no longer what it was. - -## SMTPUTF8 in PHPMailer - -Several other PHP email libraries have implemented a halfway solution to `SMTPUTF8`, adding only the ability to support UTF-8 in email addresses, not elsewhere in the protocol. I wanted PHPMailer to do it "the right way", and this has taken much longer. PHPMailer now supports UTF-8 everywhere, and does not need to use transfer or header encodings for UTF-8 text when connecting to an `SMTPUTF8`-capable mail server. - -This support is handled automatically: if you add an email address that requires UTF-8, PHPMailer will use UTF-8 for everything. If not, it will fall back to 7-bit and encode the message as necessary. - -The one place you will need to be careful is in the selection of the address validator. By default, PHPMailer uses PHP's built-in `filter_var` validator, which does not allow UTF-8 email addresses. When PHPMailer spots that you have submitted a UTF-8 address, but have not altered the default validator, it will automatically switch to using a UTF-8-compatible validator. As soon as you do this, any SMTP connection you make will *require* that the server you connect to supports `SMTPUTF8`. You can select this validator explicitly by setting `PHPMailer::$validator = 'eai'` (an acronym for Email Address Internationalization). - -### Postfix gotcha - -Postfix has supported `SMTPUTF8` for a long time, but it has a peculiarity that it does not always advertise that it does so. However, rather surprisingly, if you use UTF-8 in the conversation, it will work anyway. diff --git a/vendor/phpmailer/phpmailer/VERSION b/vendor/phpmailer/phpmailer/VERSION deleted file mode 100644 index a8907c0..0000000 --- a/vendor/phpmailer/phpmailer/VERSION +++ /dev/null @@ -1 +0,0 @@ -7.0.2 diff --git a/vendor/phpmailer/phpmailer/composer.json b/vendor/phpmailer/phpmailer/composer.json deleted file mode 100644 index 63d0ffd..0000000 --- a/vendor/phpmailer/phpmailer/composer.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "phpmailer/phpmailer", - "type": "library", - "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "authors": [ - { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" - }, - { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" - }, - { - "name": "Andy Prevost", - "email": "codeworxtech@users.sourceforge.net" - }, - { - "name": "Brent R. Matzelle" - } - ], - "funding": [ - { - "url": "https://github.com/Synchro", - "type": "github" - } - ], - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - }, - "lock": false - }, - "require": { - "php": ">=5.5.0", - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "doctrine/annotations": "^1.2.6 || ^1.13.3", - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^10.0.0@dev", - "squizlabs/php_codesniffer": "^3.13.5", - "yoast/phpunit-polyfills": "^1.0.4" - }, - "suggest": { - "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", - "ext-imap": "Needed to support advanced email address parsing according to RFC822", - "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", - "ext-openssl": "Needed for secure SMTP sending and DKIM signing", - "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "psr/log": "For optional PSR-3 debug logging", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", - "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication", - "directorytree/imapengine": "For uploading sent messages via IMAP, see gmail example" - }, - "minimum-stability": "dev", - "prefer-stable": true, - "autoload": { - "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "PHPMailer\\Test\\": "test/" - } - }, - "license": "LGPL-2.1-only", - "scripts": { - "check": "./vendor/bin/phpcs", - "style": "./vendor/bin/phpcbf", - "test": "./vendor/bin/phpunit --no-coverage", - "coverage": "./vendor/bin/phpunit", - "lint": [ - "@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . --show-deprecated -e php,phps --exclude vendor --exclude .git --exclude build" - ] - } -} diff --git a/vendor/phpmailer/phpmailer/get_oauth_token.php b/vendor/phpmailer/phpmailer/get_oauth_token.php deleted file mode 100644 index 9342b9c..0000000 --- a/vendor/phpmailer/phpmailer/get_oauth_token.php +++ /dev/null @@ -1,182 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2020 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -/** - * Get an OAuth2 token from an OAuth2 provider. - * * Install this script on your server so that it's accessible - * as [https/http]:////get_oauth_token.php - * e.g.: http://localhost/phpmailer/get_oauth_token.php - * * Ensure dependencies are installed with 'composer install' - * * Set up an app in your Google/Yahoo/Microsoft account - * * Set the script address as the app's redirect URL - * If no refresh token is obtained when running this file, - * revoke access to your app and run the script again. - */ - -namespace PHPMailer\PHPMailer; - -/** - * Aliases for League Provider Classes - * Make sure you have added these to your composer.json and run `composer install` - * Plenty to choose from here: - * @see https://oauth2-client.thephpleague.com/providers/thirdparty/ - */ -//@see https://github.com/thephpleague/oauth2-google -use League\OAuth2\Client\Provider\Google; -//@see https://packagist.org/packages/hayageek/oauth2-yahoo -use Hayageek\OAuth2\Client\Provider\Yahoo; -//@see https://github.com/stevenmaguire/oauth2-microsoft -use Stevenmaguire\OAuth2\Client\Provider\Microsoft; -//@see https://github.com/greew/oauth2-azure-provider -use Greew\OAuth2\Client\Provider\Azure; - -if (!isset($_GET['code']) && !isset($_POST['provider'])) { - ?> - - -
    -

    Select Provider

    - -
    - -
    - -
    - -
    -

    Enter id and secret

    -

    These details are obtained by setting up an app in your provider's developer console. -

    -

    ClientId:

    -

    ClientSecret:

    -

    TenantID (only relevant for Azure):

    - -
    - - - $clientId, - 'clientSecret' => $clientSecret, - 'redirectUri' => $redirectUri, - 'accessType' => 'offline' -]; - -$options = []; -$provider = null; - -switch ($providerName) { - case 'Google': - $provider = new Google($params); - $options = [ - 'scope' => [ - 'https://mail.google.com/' - ] - ]; - break; - case 'Yahoo': - $provider = new Yahoo($params); - break; - case 'Microsoft': - $provider = new Microsoft($params); - $options = [ - 'scope' => [ - 'wl.imap', - 'wl.offline_access' - ] - ]; - break; - case 'Azure': - $params['tenantId'] = $tenantId; - - $provider = new Azure($params); - $options = [ - 'scope' => [ - 'https://outlook.office.com/SMTP.Send', - 'offline_access' - ] - ]; - break; -} - -if (null === $provider) { - exit('Provider missing'); -} - -if (!isset($_GET['code'])) { - //If we don't have an authorization code then get one - $authUrl = $provider->getAuthorizationUrl($options); - $_SESSION['oauth2state'] = $provider->getState(); - header('Location: ' . $authUrl); - exit; - //Check given state against previously stored one to mitigate CSRF attack -} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { - unset($_SESSION['oauth2state']); - unset($_SESSION['provider']); - exit('Invalid state'); -} else { - unset($_SESSION['provider']); - //Try to get an access token (using the authorization code grant) - $token = $provider->getAccessToken( - 'authorization_code', - [ - 'code' => $_GET['code'] - ] - ); - //Use this to interact with an API on the users behalf - //Use this to get a new access token if the old one expires - echo 'Refresh Token: ', htmlspecialchars($token->getRefreshToken(), ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401); -} diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php deleted file mode 100644 index 0b2a72d..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'خطأ SMTP : لا يمكن تأكيد الهوية.'; -$PHPMAILER_LANG['connect_host'] = 'خطأ SMTP: لا يمكن الاتصال بالخادم SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'خطأ SMTP: لم يتم قبول المعلومات .'; -$PHPMAILER_LANG['empty_message'] = 'نص الرسالة فارغ'; -$PHPMAILER_LANG['encoding'] = 'ترميز غير معروف: '; -$PHPMAILER_LANG['execute'] = 'لا يمكن تنفيذ : '; -$PHPMAILER_LANG['file_access'] = 'لا يمكن الوصول للملف: '; -$PHPMAILER_LANG['file_open'] = 'خطأ في الملف: لا يمكن فتحه: '; -$PHPMAILER_LANG['from_failed'] = 'خطأ على مستوى عنوان المرسل : '; -$PHPMAILER_LANG['instantiate'] = 'لا يمكن توفير خدمة البريد.'; -$PHPMAILER_LANG['invalid_address'] = 'الإرسال غير ممكن لأن عنوان البريد الإلكتروني غير صالح: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' برنامج الإرسال غير مدعوم.'; -$PHPMAILER_LANG['provide_address'] = 'يجب توفير عنوان البريد الإلكتروني لمستلم واحد على الأقل.'; -$PHPMAILER_LANG['recipients_failed'] = 'خطأ SMTP: الأخطاء التالية فشل في الارسال لكل من : '; -$PHPMAILER_LANG['signing'] = 'خطأ في التوقيع: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() غير ممكن.'; -$PHPMAILER_LANG['smtp_error'] = 'خطأ على مستوى الخادم SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'لا يمكن تعيين أو إعادة تعيين متغير: '; -$PHPMAILER_LANG['extension_missing'] = 'الإضافة غير موجودة: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php deleted file mode 100644 index 327dfba..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP ত্ৰুটি: প্ৰমাণীকৰণ কৰিব নোৱাৰি'; -$PHPMAILER_LANG['buggy_php'] = 'আপোনাৰ PHP সংস্কৰণ এটা বাগৰ দ্বাৰা প্ৰভাৱিত হয় যাৰ ফলত নষ্ট বাৰ্তা হব পাৰে । ইয়াক সমাধান কৰিবলে, প্ৰেৰণ কৰিবলে SMTP ব্যৱহাৰ কৰক, আপোনাৰ php.ini ত mail.add_x_header বিকল্প নিষ্ক্ৰিয় কৰক, MacOS বা Linux লৈ সলনি কৰক, বা আপোনাৰ PHP সংস্কৰণ 7.0.17+ বা 7.1.3+ লৈ সলনি কৰক ।'; -$PHPMAILER_LANG['connect_host'] = 'SMTP ত্ৰুটি: SMTP চাৰ্ভাৰৰ সৈতে সংযোগ কৰিবলে অক্ষম'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP ত্ৰুটি: তথ্য গ্ৰহণ কৰা হোৱা নাই'; -$PHPMAILER_LANG['empty_message'] = 'বাৰ্তাৰ মূখ্য অংশ খালী।'; -$PHPMAILER_LANG['encoding'] = 'অজ্ঞাত এনকোডিং: '; -$PHPMAILER_LANG['execute'] = 'এক্সিকিউট কৰিব নোৱাৰি: '; -$PHPMAILER_LANG['extension_missing'] = 'সম্প্ৰসাৰণ নোহোৱা হৈছে: '; -$PHPMAILER_LANG['file_access'] = 'ফাইল অভিগম কৰিবলে অক্ষম: '; -$PHPMAILER_LANG['file_open'] = 'ফাইল ত্ৰুটি: ফাইল খোলিবলৈ অক্ষম: '; -$PHPMAILER_LANG['from_failed'] = 'নিম্নলিখিত প্ৰেৰকৰ ঠিকনা(সমূহ) ব্যৰ্থ: '; -$PHPMAILER_LANG['instantiate'] = 'মেইল ফাংচনৰ এটা উদাহৰণ সৃষ্টি কৰিবলে অক্ষম'; -$PHPMAILER_LANG['invalid_address'] = 'প্ৰেৰণ কৰিব নোৱাৰি: অবৈধ ইমেইল ঠিকনা: '; -$PHPMAILER_LANG['invalid_header'] = 'অবৈধ হেডাৰৰ নাম বা মান'; -$PHPMAILER_LANG['invalid_hostentry'] = 'অবৈধ হোষ্টেন্ট্ৰি: '; -$PHPMAILER_LANG['invalid_host'] = 'অবৈধ হস্ট:'; -$PHPMAILER_LANG['mailer_not_supported'] = 'মেইলাৰ সমৰ্থিত নহয়।'; -$PHPMAILER_LANG['provide_address'] = 'আপুনি অন্ততঃ এটা গন্তব্য ইমেইল ঠিকনা দিব লাগিব'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP ত্ৰুটি: নিম্নলিখিত গন্তব্যস্থানসমূহ ব্যৰ্থ: '; -$PHPMAILER_LANG['signing'] = 'স্বাক্ষৰ কৰাত ব্যৰ্থ: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP কড: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'অতিৰিক্ত SMTP তথ্য: '; -$PHPMAILER_LANG['smtp_detail'] = 'বিৱৰণ:'; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP সংযোগ() ব্যৰ্থ'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP চাৰ্ভাৰৰ ত্ৰুটি: '; -$PHPMAILER_LANG['variable_set'] = 'চলক নিৰ্ধাৰণ কৰিব পৰা নগল: '; -$PHPMAILER_LANG['extension_missing'] = 'অনুপস্থিত সম্প্ৰসাৰণ: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php deleted file mode 100644 index 552167e..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela prijava.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Nije moguće spojiti se sa SMTP serverom.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.'; -$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznata kriptografija: '; -$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; -$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; -$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje sa navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedene e-mail adrese nije uspjelo: '; -$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; -$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; -$PHPMAILER_LANG['provide_address'] = 'Definišite barem jednu adresu primaoca.'; -$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP server nije uspjelo.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP greška: '; -$PHPMAILER_LANG['variable_set'] = 'Nije moguće postaviti varijablu ili je vratiti nazad: '; -$PHPMAILER_LANG['extension_missing'] = 'Nedostaje ekstenzija: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php deleted file mode 100644 index 9e92dda..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Памылка SMTP: памылка ідэнтыфікацыі.'; -$PHPMAILER_LANG['connect_host'] = 'Памылка SMTP: нельга ўстанавіць сувязь з SMTP-серверам.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Памылка SMTP: звесткі непрынятыя.'; -$PHPMAILER_LANG['empty_message'] = 'Пустое паведамленне.'; -$PHPMAILER_LANG['encoding'] = 'Невядомая кадыроўка тэксту: '; -$PHPMAILER_LANG['execute'] = 'Нельга выканаць каманду: '; -$PHPMAILER_LANG['file_access'] = 'Няма доступу да файла: '; -$PHPMAILER_LANG['file_open'] = 'Нельга адкрыць файл: '; -$PHPMAILER_LANG['from_failed'] = 'Няправільны адрас адпраўніка: '; -$PHPMAILER_LANG['instantiate'] = 'Нельга прымяніць функцыю mail().'; -$PHPMAILER_LANG['invalid_address'] = 'Нельга даслаць паведамленне, няправільны email атрымальніка: '; -$PHPMAILER_LANG['provide_address'] = 'Запоўніце, калі ласка, правільны email атрымальніка.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - паштовы сервер не падтрымліваецца.'; -$PHPMAILER_LANG['recipients_failed'] = 'Памылка SMTP: няправільныя атрымальнікі: '; -$PHPMAILER_LANG['signing'] = 'Памылка подпісу паведамлення: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Памылка сувязі з SMTP-серверам.'; -$PHPMAILER_LANG['smtp_error'] = 'Памылка SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Нельга ўстанавіць або перамяніць значэнне пераменнай: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php deleted file mode 100644 index c41f675..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: Не може да се удостовери пред сървъра.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: Не може да се свърже с SMTP хоста.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: данните не са приети.'; -$PHPMAILER_LANG['empty_message'] = 'Съдържанието на съобщението е празно'; -$PHPMAILER_LANG['encoding'] = 'Неизвестно кодиране: '; -$PHPMAILER_LANG['execute'] = 'Не може да се изпълни: '; -$PHPMAILER_LANG['file_access'] = 'Няма достъп до файл: '; -$PHPMAILER_LANG['file_open'] = 'Файлова грешка: Не може да се отвори файл: '; -$PHPMAILER_LANG['from_failed'] = 'Следните адреси за подател са невалидни: '; -$PHPMAILER_LANG['instantiate'] = 'Не може да се инстанцира функцията mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Невалиден адрес: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' - пощенски сървър не се поддържа.'; -$PHPMAILER_LANG['provide_address'] = 'Трябва да предоставите поне един email адрес за получател.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: Следните адреси за Получател са невалидни: '; -$PHPMAILER_LANG['signing'] = 'Грешка при подписване: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP провален connect().'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP сървърна грешка: '; -$PHPMAILER_LANG['variable_set'] = 'Не може да се установи или възстанови променлива: '; -$PHPMAILER_LANG['extension_missing'] = 'Липсва разширение: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php deleted file mode 100644 index 4736510..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP ত্রুটি: প্রমাণীকরণ করতে অক্ষম৷'; -$PHPMAILER_LANG['buggy_php'] = 'আপনার PHP সংস্করণ একটি বাগ দ্বারা প্রভাবিত হয় যার ফলে দূষিত বার্তা হতে পারে। এটি ঠিক করতে, পাঠাতে SMTP ব্যবহার করুন, আপনার php.ini এ mail.add_x_header বিকল্পটি নিষ্ক্রিয় করুন, MacOS বা Linux-এ স্যুইচ করুন, অথবা আপনার PHP সংস্করণকে 7.0.17+ বা 7.1.3+ এ পরিবর্তন করুন।'; -$PHPMAILER_LANG['connect_host'] = 'SMTP ত্রুটি: SMTP সার্ভারের সাথে সংযোগ করতে অক্ষম৷'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP ত্রুটি: ডেটা গ্রহণ করা হয়নি৷'; -$PHPMAILER_LANG['empty_message'] = 'বার্তার অংশটি খালি।'; -$PHPMAILER_LANG['encoding'] = 'অজানা এনকোডিং: '; -$PHPMAILER_LANG['execute'] = 'নির্বাহ করতে অক্ষম: '; -$PHPMAILER_LANG['extension_missing'] = 'এক্সটেনশন অনুপস্থিত:'; -$PHPMAILER_LANG['file_access'] = 'ফাইল অ্যাক্সেস করতে অক্ষম: '; -$PHPMAILER_LANG['file_open'] = 'ফাইল ত্রুটি: ফাইল খুলতে অক্ষম: '; -$PHPMAILER_LANG['from_failed'] = 'নিম্নলিখিত প্রেরকের ঠিকানা(গুলি) ব্যর্থ হয়েছে: '; -$PHPMAILER_LANG['instantiate'] = 'মেল ফাংশনের একটি উদাহরণ তৈরি করতে অক্ষম৷'; -$PHPMAILER_LANG['invalid_address'] = 'পাঠাতে অক্ষম: অবৈধ ইমেল ঠিকানা: '; -$PHPMAILER_LANG['invalid_header'] = 'অবৈধ হেডার নাম বা মান'; -$PHPMAILER_LANG['invalid_hostentry'] = 'অবৈধ হোস্টেন্ট্রি: '; -$PHPMAILER_LANG['invalid_host'] = 'অবৈধ হোস্ট:'; -$PHPMAILER_LANG['mailer_not_supported'] = 'মেইলার সমর্থিত নয়।'; -$PHPMAILER_LANG['provide_address'] = 'আপনাকে অবশ্যই অন্তত একটি গন্তব্য ইমেল ঠিকানা প্রদান করতে হবে৷'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP ত্রুটি: নিম্নলিখিত গন্তব্যগুলি ব্যর্থ হয়েছে: '; -$PHPMAILER_LANG['signing'] = 'স্বাক্ষর করতে ব্যর্থ হয়েছে: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP কোড: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'অতিরিক্ত SMTP তথ্য:'; -$PHPMAILER_LANG['smtp_detail'] = 'বর্ণনা: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP সংযোগ() ব্যর্থ হয়েছে৷'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP সার্ভার ত্রুটি: '; -$PHPMAILER_LANG['variable_set'] = 'পরিবর্তনশীল সেট করা যায়নি: '; -$PHPMAILER_LANG['extension_missing'] = 'অনুপস্থিত এক্সটেনশন: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php deleted file mode 100644 index 3468485..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Error SMTP: No s’ha pogut autenticar.'; -$PHPMAILER_LANG['connect_host'] = 'Error SMTP: No es pot connectar al servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Dades no acceptades.'; -$PHPMAILER_LANG['empty_message'] = 'El cos del missatge està buit.'; -$PHPMAILER_LANG['encoding'] = 'Codificació desconeguda: '; -$PHPMAILER_LANG['execute'] = 'No es pot executar: '; -$PHPMAILER_LANG['file_access'] = 'No es pot accedir a l’arxiu: '; -$PHPMAILER_LANG['file_open'] = 'Error d’Arxiu: No es pot obrir l’arxiu: '; -$PHPMAILER_LANG['from_failed'] = 'La(s) següent(s) adreces de remitent han fallat: '; -$PHPMAILER_LANG['instantiate'] = 'No s’ha pogut crear una instància de la funció Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Adreça d’email invalida: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no està suportat'; -$PHPMAILER_LANG['provide_address'] = 'S’ha de proveir almenys una adreça d’email com a destinatari.'; -$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Els següents destinataris han fallat: '; -$PHPMAILER_LANG['signing'] = 'Error al signar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ha fallat el SMTP Connect().'; -$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'No s’ha pogut establir o restablir la variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php deleted file mode 100644 index e770a1a..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php +++ /dev/null @@ -1,28 +0,0 @@ - - * Rewrite and extension of the work by Mikael Stokkebro - * - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Login mislykkedes.'; -$PHPMAILER_LANG['buggy_php'] = 'Din version af PHP er berørt af en fejl, som gør at dine beskeder muligvis vises forkert. For at rette dette kan du skifte til SMTP, slå mail.add_x_header headeren i din php.ini fil fra, skifte til MacOS eller Linux eller opgradere din version af PHP til 7.0.17+ eller 7.1.3+.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP fejl: Forbindelse til SMTP serveren kunne ikke oprettes.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data blev ikke accepteret.'; -$PHPMAILER_LANG['empty_message'] = 'Meddelelsen er uden indhold'; -$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: '; -$PHPMAILER_LANG['execute'] = 'Kunne ikke afvikle: '; -$PHPMAILER_LANG['extension_missing'] = 'Udvidelse mangler: '; -$PHPMAILER_LANG['file_access'] = 'Kunne ikke tilgå filen: '; -$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: '; -$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: '; -$PHPMAILER_LANG['instantiate'] = 'Email funktionen kunne ikke initialiseres.'; -$PHPMAILER_LANG['invalid_address'] = 'Udgyldig adresse: '; -$PHPMAILER_LANG['invalid_header'] = 'Ugyldig header navn eller værdi'; -$PHPMAILER_LANG['invalid_hostentry'] = 'Ugyldig hostentry: '; -$PHPMAILER_LANG['invalid_host'] = 'Ugyldig vært: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.'; -$PHPMAILER_LANG['provide_address'] = 'Indtast mindst en modtagers email adresse.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere fejlede: '; -$PHPMAILER_LANG['signing'] = 'Signeringsfejl: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP kode: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'Yderligere SMTP info: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fejlede.'; -$PHPMAILER_LANG['smtp_detail'] = 'Detalje: '; -$PHPMAILER_LANG['smtp_error'] = 'SMTP server fejl: '; -$PHPMAILER_LANG['variable_set'] = 'Kunne ikke definere eller nulstille variablen: '; -$PHPMAILER_LANG['no_smtputf8'] = 'Serveren understøtter ikke SMTPUTF8 som påkrævet for at sende til Unicode adresser'; -$PHPMAILER_LANG['imap_recommended'] = 'Brug af forenklet adresseparser anbefales ikke. Installer PHP IMAP udvidelsen for fuld RFC822 parsing.'; -$PHPMAILER_LANG['deprecated_argument'] = 'Udfaset argument: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php deleted file mode 100644 index e7e59d2..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP-eraro: Ne eblis aŭtentigi.'; -$PHPMAILER_LANG['buggy_php'] = 'Via versio de PHP estas trafita de cimo, kiu povas kaŭzi difektitajn mesaĝojn. Por ripari tion, ŝanĝu al sendado per SMTP, malŝaltu la opcion mail.add_x_header en via php.ini, ŝanĝu al MacOS aŭ Linux, aŭ ĝisdatigu vian PHP al versio 7.0.17+ aŭ 7.1.3+.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP-eraro: Ne eblis konektiĝi al la SMTP-gastiganto.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-eraro: Datumoj ne akceptitaj.'; -$PHPMAILER_LANG['empty_message'] = 'Mesaĝokorpo malplena'; -$PHPMAILER_LANG['encoding'] = 'Nekonata kodoprezento: '; -$PHPMAILER_LANG['execute'] = 'Ne eblis plenumi: '; -$PHPMAILER_LANG['extension_missing'] = 'Kromprogramo mankas: '; -$PHPMAILER_LANG['file_access'] = 'Ne eblis aliri la dosieron: '; -$PHPMAILER_LANG['file_open'] = 'Dosiera eraro: Ne eblis malfermi la dosieron: '; -$PHPMAILER_LANG['from_failed'] = 'La sekva(j) sendinto(j) malsukcesis: '; -$PHPMAILER_LANG['instantiate'] = 'Ne eblis funkciigi la retpoŝtan funkcion.'; -$PHPMAILER_LANG['invalid_address'] = 'Nevalida adreso: '; -$PHPMAILER_LANG['invalid_header'] = 'Nevalida kaplinia nomo aŭ valoro'; -$PHPMAILER_LANG['invalid_hostentry'] = 'Nevalida enigo de gastiganto: '; -$PHPMAILER_LANG['invalid_host'] = 'Nevalida gastiganto: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' retpoŝtilo ne estas subtenata.'; -$PHPMAILER_LANG['provide_address'] = 'Vi devas provizi almenaŭ unu retpoŝtadreson de ricevonto.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP-eraro: La sekva(j) ricevonto(j) malsukcesis: '; -$PHPMAILER_LANG['signing'] = 'Subskriba eraro: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP-kodo: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'Pliaj SMTP-informoj: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'La SMTP-konektiĝo malsukcesis.'; -$PHPMAILER_LANG['smtp_detail'] = 'Informoj: '; -$PHPMAILER_LANG['smtp_error'] = 'Eraro de SMTP-servilo: '; -$PHPMAILER_LANG['variable_set'] = 'Ne eblas agordi aŭ reagordi la variablon: '; -$PHPMAILER_LANG['no_smtputf8'] = 'La servilo ne subtenas SMTPUTF8, kiu estas bezonata por sendi al Unicode-adresoj.'; -$PHPMAILER_LANG['imap_recommended'] = 'Uzado de la simpligita adresanalizilo ne estas rekomendita. Instalu la IMAP-kromprogramon por PHP por plena RFC822-analizado.'; -$PHPMAILER_LANG['deprecated_argument'] = 'Malrekomendita argumento: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php deleted file mode 100644 index e6a3d85..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @author Crystopher Glodzienski Cardoso - * @author Daniel Cruz - */ - -$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.'; -$PHPMAILER_LANG['buggy_php'] = 'Tu versión de PHP ha sido afectada por un bug que puede resultar en mensajes corruptos. Para arreglarlo, cambia a enviar usando SMTP, deshabilita la opción mail.add_x_header en tu php.ini, cambia a MacOS o Linux, o actualiza tu PHP a la versión 7.0.17+ o 7.1.3+.'; -$PHPMAILER_LANG['connect_host'] = 'Error SMTP: Imposible conectar al servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.'; -$PHPMAILER_LANG['empty_message'] = 'El cuerpo del mensaje está vacío.'; -$PHPMAILER_LANG['encoding'] = 'Codificación desconocida: '; -$PHPMAILER_LANG['execute'] = 'Imposible ejecutar: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: '; -$PHPMAILER_LANG['file_access'] = 'Imposible acceder al archivo: '; -$PHPMAILER_LANG['file_open'] = 'Error de Archivo: Imposible abrir el archivo: '; -$PHPMAILER_LANG['from_failed'] = 'La siguiente dirección de remitente falló: '; -$PHPMAILER_LANG['instantiate'] = 'Imposible crear una instancia de la función Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Imposible enviar: dirección de email inválido: '; -$PHPMAILER_LANG['invalid_header'] = 'Nombre o valor de encabezado no válido'; -$PHPMAILER_LANG['invalid_hostentry'] = 'Hostentry inválido: '; -$PHPMAILER_LANG['invalid_host'] = 'Host inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.'; -$PHPMAILER_LANG['provide_address'] = 'Debe proporcionar al menos una dirección de email de destino.'; -$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Los siguientes destinos fallaron: '; -$PHPMAILER_LANG['signing'] = 'Error al firmar: '; -$PHPMAILER_LANG['smtp_code'] = 'Código del servidor SMTP: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'Información adicional del servidor SMTP: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.'; -$PHPMAILER_LANG['smtp_detail'] = 'Detalle: '; -$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: '; -$PHPMAILER_LANG['imap_recommended'] = 'No se recomienda usar el analizador de direcciones simplificado. Instala la extensión IMAP de PHP para un análisis RFC822 más completo.'; -$PHPMAILER_LANG['deprecated_argument'] = 'Argumento obsoleto: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php deleted file mode 100644 index 93addc9..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Viga: Autoriseerimise viga.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Viga: Ei õnnestunud luua ühendust SMTP serveriga.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Viga: Vigased andmed.'; -$PHPMAILER_LANG['empty_message'] = 'Tühi kirja sisu'; -$PHPMAILER_LANG["encoding"] = 'Tundmatu kodeering: '; -$PHPMAILER_LANG['execute'] = 'Tegevus ebaõnnestus: '; -$PHPMAILER_LANG['file_access'] = 'Pole piisavalt õiguseid järgneva faili avamiseks: '; -$PHPMAILER_LANG['file_open'] = 'Faili Viga: Faili avamine ebaõnnestus: '; -$PHPMAILER_LANG['from_failed'] = 'Järgnev saatja e-posti aadress on vigane: '; -$PHPMAILER_LANG['instantiate'] = 'mail funktiooni käivitamine ebaõnnestus.'; -$PHPMAILER_LANG['invalid_address'] = 'Saatmine peatatud, e-posti address vigane: '; -$PHPMAILER_LANG['provide_address'] = 'Te peate määrama vähemalt ühe saaja e-posti aadressi.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' maileri tugi puudub.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Viga: Järgnevate saajate e-posti aadressid on vigased: '; -$PHPMAILER_LANG["signing"] = 'Viga allkirjastamisel: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() ebaõnnestus.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP serveri viga: '; -$PHPMAILER_LANG['variable_set'] = 'Ei õnnestunud määrata või lähtestada muutujat: '; -$PHPMAILER_LANG['extension_missing'] = 'Nõutud laiendus on puudu: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php deleted file mode 100644 index 295a47f..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @author Mohammad Hossein Mojtahedi - */ - -$PHPMAILER_LANG['authenticate'] = 'خطای SMTP: احراز هویت با شکست مواجه شد.'; -$PHPMAILER_LANG['connect_host'] = 'خطای SMTP: اتصال به سرور SMTP برقرار نشد.'; -$PHPMAILER_LANG['data_not_accepted'] = 'خطای SMTP: داده‌ها نا‌درست هستند.'; -$PHPMAILER_LANG['empty_message'] = 'بخش متن پیام خالی است.'; -$PHPMAILER_LANG['encoding'] = 'کد‌گذاری نا‌شناخته: '; -$PHPMAILER_LANG['execute'] = 'امکان اجرا وجود ندارد: '; -$PHPMAILER_LANG['file_access'] = 'امکان دسترسی به فایل وجود ندارد: '; -$PHPMAILER_LANG['file_open'] = 'خطای File: امکان بازکردن فایل وجود ندارد: '; -$PHPMAILER_LANG['from_failed'] = 'آدرس فرستنده اشتباه است: '; -$PHPMAILER_LANG['instantiate'] = 'امکان معرفی تابع ایمیل وجود ندارد.'; -$PHPMAILER_LANG['invalid_address'] = 'آدرس ایمیل معتبر نیست: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer پشتیبانی نمی‌شود.'; -$PHPMAILER_LANG['provide_address'] = 'باید حداقل یک آدرس گیرنده وارد کنید.'; -$PHPMAILER_LANG['recipients_failed'] = 'خطای SMTP: ارسال به آدرس گیرنده با خطا مواجه شد: '; -$PHPMAILER_LANG['signing'] = 'خطا در امضا: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'خطا در اتصال به SMTP.'; -$PHPMAILER_LANG['smtp_error'] = 'خطا در SMTP Server: '; -$PHPMAILER_LANG['variable_set'] = 'امکان ارسال یا ارسال مجدد متغیر‌ها وجود ندارد: '; -$PHPMAILER_LANG['extension_missing'] = 'افزونه موجود نیست: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php deleted file mode 100644 index 6d1e637..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP feilur: Kundi ikki góðkenna.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP feilur: Data ikki góðkent.'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = 'Ókend encoding: '; -$PHPMAILER_LANG['execute'] = 'Kundi ikki útføra: '; -$PHPMAILER_LANG['file_access'] = 'Kundi ikki tilganga fílu: '; -$PHPMAILER_LANG['file_open'] = 'Fílu feilur: Kundi ikki opna fílu: '; -$PHPMAILER_LANG['from_failed'] = 'fylgjandi Frá/From adressa miseydnaðist: '; -$PHPMAILER_LANG['instantiate'] = 'Kuni ikki instantiera mail funktión.'; -//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.'; -$PHPMAILER_LANG['provide_address'] = 'Tú skal uppgeva minst móttakara-emailadressu(r).'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: '; -//$PHPMAILER_LANG['signing'] = 'Signing Error: '; -//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; -//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php deleted file mode 100644 index a6d582d..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro SMTP: Non puido ser autentificado.'; -$PHPMAILER_LANG['connect_host'] = 'Erro SMTP: Non puido conectar co servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro SMTP: Datos non aceptados.'; -$PHPMAILER_LANG['empty_message'] = 'Corpo da mensaxe vacía'; -$PHPMAILER_LANG['encoding'] = 'Codificación descoñecida: '; -$PHPMAILER_LANG['execute'] = 'Non puido ser executado: '; -$PHPMAILER_LANG['file_access'] = 'Nob puido acceder ó arquivo: '; -$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: No puido abrir o arquivo: '; -$PHPMAILER_LANG['from_failed'] = 'A(s) seguinte(s) dirección(s) de remitente(s) deron erro: '; -$PHPMAILER_LANG['instantiate'] = 'Non puido crear unha instancia da función Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Non puido envia-lo correo: dirección de email inválida: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer non está soportado.'; -$PHPMAILER_LANG['provide_address'] = 'Debe engadir polo menos unha dirección de email coma destino.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro SMTP: Os seguintes destinos fallaron: '; -$PHPMAILER_LANG['signing'] = 'Erro ó firmar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallou.'; -$PHPMAILER_LANG['smtp_error'] = 'Erro do servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Non puidemos axustar ou reaxustar a variábel: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php deleted file mode 100644 index b123aa5..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'שגיאת SMTP: פעולת האימות נכשלה.'; -$PHPMAILER_LANG['connect_host'] = 'שגיאת SMTP: לא הצלחתי להתחבר לשרת SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'שגיאת SMTP: מידע לא התקבל.'; -$PHPMAILER_LANG['empty_message'] = 'גוף ההודעה ריק'; -$PHPMAILER_LANG['invalid_address'] = 'כתובת שגויה: '; -$PHPMAILER_LANG['encoding'] = 'קידוד לא מוכר: '; -$PHPMAILER_LANG['execute'] = 'לא הצלחתי להפעיל את: '; -$PHPMAILER_LANG['file_access'] = 'לא ניתן לגשת לקובץ: '; -$PHPMAILER_LANG['file_open'] = 'שגיאת קובץ: לא ניתן לגשת לקובץ: '; -$PHPMAILER_LANG['from_failed'] = 'כתובות הנמענים הבאות נכשלו: '; -$PHPMAILER_LANG['instantiate'] = 'לא הצלחתי להפעיל את פונקציית המייל.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' אינה נתמכת.'; -$PHPMAILER_LANG['provide_address'] = 'חובה לספק לפחות כתובת אחת של מקבל המייל.'; -$PHPMAILER_LANG['recipients_failed'] = 'שגיאת SMTP: הנמענים הבאים נכשלו: '; -$PHPMAILER_LANG['signing'] = 'שגיאת חתימה: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -$PHPMAILER_LANG['smtp_error'] = 'שגיאת שרת SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'לא ניתן לקבוע או לשנות את המשתנה: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php deleted file mode 100644 index d2856e0..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Rewrite and extension of the work by Jayanti Suthar - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP त्रुटि: प्रामाणिकता की जांच नहीं हो सका। '; -$PHPMAILER_LANG['buggy_php'] = 'PHP का आपका संस्करण एक बग से प्रभावित है जिसके परिणामस्वरूप संदेश दूषित हो सकते हैं. इसे ठीक करने हेतु, भेजने के लिए SMTP का उपयोग करे, अपने php.ini में mail.add_x_header विकल्प को अक्षम करें, MacOS या Linux पर जाए, या अपने PHP संस्करण को 7.0.17+ या 7.1.3+ बदले.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP त्रुटि: SMTP सर्वर से कनेक्ट नहीं हो सका। '; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP त्रुटि: डेटा स्वीकार नहीं किया जाता है। '; -$PHPMAILER_LANG['empty_message'] = 'संदेश खाली है। '; -$PHPMAILER_LANG['encoding'] = 'अज्ञात एन्कोडिंग प्रकार। '; -$PHPMAILER_LANG['execute'] = 'आदेश को निष्पादित करने में विफल। '; -$PHPMAILER_LANG['extension_missing'] = 'एक्सटेन्षन गायब है: '; -$PHPMAILER_LANG['file_access'] = 'फ़ाइल उपलब्ध नहीं है। '; -$PHPMAILER_LANG['file_open'] = 'फ़ाइल त्रुटि: फाइल को खोला नहीं जा सका। '; -$PHPMAILER_LANG['from_failed'] = 'प्रेषक का पता गलत है। '; -$PHPMAILER_LANG['instantiate'] = 'मेल फ़ंक्शन कॉल नहीं कर सकता है।'; -$PHPMAILER_LANG['invalid_address'] = 'पता गलत है। '; -$PHPMAILER_LANG['invalid_header'] = 'अमान्य हेडर नाम या मान'; -$PHPMAILER_LANG['invalid_hostentry'] = 'अमान्य hostentry: '; -$PHPMAILER_LANG['invalid_host'] = 'अमान्य होस्ट: '; -$PHPMAILER_LANG['mailer_not_supported'] = 'मेल सर्वर के साथ काम नहीं करता है। '; -$PHPMAILER_LANG['provide_address'] = 'आपको कम से कम एक प्राप्तकर्ता का ई-मेल पता प्रदान करना होगा।'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP त्रुटि: निम्न प्राप्तकर्ताओं को पते भेजने में विफल। '; -$PHPMAILER_LANG['signing'] = 'साइनअप त्रुटि: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP कोड: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'अतिरिक्त SMTP जानकारी: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP का connect () फ़ंक्शन विफल हुआ। '; -$PHPMAILER_LANG['smtp_detail'] = 'विवरण: '; -$PHPMAILER_LANG['smtp_error'] = 'SMTP सर्वर त्रुटि। '; -$PHPMAILER_LANG['variable_set'] = 'चर को बना या संशोधित नहीं किया जा सकता। '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php deleted file mode 100644 index cacb6c3..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela autentikacija.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Ne mogu se spojiti na SMTP poslužitelj.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.'; -$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznati encoding: '; -$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; -$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; -$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje s navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; -$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; -$PHPMAILER_LANG['provide_address'] = 'Definirajte barem jednu adresu primatelja.'; -$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP poslužitelj nije uspjelo.'; -$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP poslužitelja: '; -$PHPMAILER_LANG['variable_set'] = 'Ne mogu postaviti varijablu niti ju vratiti nazad: '; -$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php deleted file mode 100644 index e6b58b0..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP -ի սխալ: չհաջողվեց ստուգել իսկությունը.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP -ի սխալ: չհաջողվեց կապ հաստատել SMTP սերվերի հետ.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP -ի սխալ: տվյալները ընդունված չեն.'; -$PHPMAILER_LANG['empty_message'] = 'Հաղորդագրությունը դատարկ է'; -$PHPMAILER_LANG['encoding'] = 'Կոդավորման անհայտ տեսակ: '; -$PHPMAILER_LANG['execute'] = 'Չհաջողվեց իրականացնել հրամանը: '; -$PHPMAILER_LANG['file_access'] = 'Ֆայլը հասանելի չէ: '; -$PHPMAILER_LANG['file_open'] = 'Ֆայլի սխալ: ֆայլը չհաջողվեց բացել: '; -$PHPMAILER_LANG['from_failed'] = 'Ուղարկողի հետևյալ հասցեն սխալ է: '; -$PHPMAILER_LANG['instantiate'] = 'Հնարավոր չէ կանչել mail ֆունկցիան.'; -$PHPMAILER_LANG['invalid_address'] = 'Հասցեն սխալ է: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' փոստային սերվերի հետ չի աշխատում.'; -$PHPMAILER_LANG['provide_address'] = 'Անհրաժեշտ է տրամադրել գոնե մեկ ստացողի e-mail հասցե.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP -ի սխալ: չի հաջողվել ուղարկել հետևյալ ստացողների հասցեներին: '; -$PHPMAILER_LANG['signing'] = 'Ստորագրման սխալ: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP -ի connect() ֆունկցիան չի հաջողվել'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP սերվերի սխալ: '; -$PHPMAILER_LANG['variable_set'] = 'Չի հաջողվում ստեղծել կամ վերափոխել փոփոխականը: '; -$PHPMAILER_LANG['extension_missing'] = 'Հավելվածը բացակայում է: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php deleted file mode 100644 index 212a11f..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php +++ /dev/null @@ -1,31 +0,0 @@ - - * @author @januridp - * @author Ian Mustafa - */ - -$PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.'; -$PHPMAILER_LANG['connect_host'] = 'Kesalahan SMTP: Tidak dapat terhubung ke host SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Kesalahan SMTP: Data tidak diterima.'; -$PHPMAILER_LANG['empty_message'] = 'Isi pesan kosong'; -$PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: '; -$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses: '; -$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas: '; -$PHPMAILER_LANG['file_open'] = 'Kesalahan Berkas: Berkas tidak dapat dibuka: '; -$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan: '; -$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel.'; -$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak sesuai: '; -$PHPMAILER_LANG['invalid_hostentry'] = 'Gagal terkirim, entri host tidak sesuai: '; -$PHPMAILER_LANG['invalid_host'] = 'Gagal terkirim, host tidak sesuai: '; -$PHPMAILER_LANG['provide_address'] = 'Harus tersedia minimal satu alamat tujuan'; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung'; -$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menyebabkan kesalahan: '; -$PHPMAILER_LANG['signing'] = 'Kesalahan dalam penandatangan SSL: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.'; -$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variabel: '; -$PHPMAILER_LANG['extension_missing'] = 'Ekstensi PHP tidak tersedia: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php deleted file mode 100644 index 08a6b73..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @author Stefano Sabatini - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Impossibile autenticarsi.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Impossibile connettersi all\'host SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dati non accettati dal server.'; -$PHPMAILER_LANG['empty_message'] = 'Il corpo del messaggio è vuoto'; -$PHPMAILER_LANG['encoding'] = 'Codifica dei caratteri sconosciuta: '; -$PHPMAILER_LANG['execute'] = 'Impossibile eseguire l\'operazione: '; -$PHPMAILER_LANG['file_access'] = 'Impossibile accedere al file: '; -$PHPMAILER_LANG['file_open'] = 'File Error: Impossibile aprire il file: '; -$PHPMAILER_LANG['from_failed'] = 'I seguenti indirizzi mittenti hanno generato errore: '; -$PHPMAILER_LANG['instantiate'] = 'Impossibile istanziare la funzione mail'; -$PHPMAILER_LANG['invalid_address'] = 'Impossibile inviare, l\'indirizzo email non è valido: '; -$PHPMAILER_LANG['provide_address'] = 'Deve essere fornito almeno un indirizzo ricevente'; -$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: I seguenti indirizzi destinatari hanno generato un errore: '; -$PHPMAILER_LANG['signing'] = 'Errore nella firma: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallita.'; -$PHPMAILER_LANG['smtp_error'] = 'Errore del server SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Impossibile impostare o resettare la variabile: '; -$PHPMAILER_LANG['extension_missing'] = 'Estensione mancante: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php deleted file mode 100644 index d01869c..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @author Yoshi Sakai - * @author Arisophy - * @author ARAKI Musashi - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTPエラー: 認証できませんでした。'; -$PHPMAILER_LANG['buggy_php'] = 'ご利用のバージョンのPHPには不具合があり、メッセージが破損するおそれがあります。問題の解決は以下のいずれかを行ってください。SMTPでの送信に切り替える。php.iniのmail.add_x_headerをoffにする。MacOSまたはLinuxに切り替える。PHPバージョン7.0.17以降または7.1.3以降にアップグレードする。'; -$PHPMAILER_LANG['connect_host'] = 'SMTPエラー: SMTPホストに接続できませんでした。'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTPエラー: データが受け付けられませんでした。'; -$PHPMAILER_LANG['empty_message'] = 'メール本文が空です。'; -$PHPMAILER_LANG['encoding'] = '不明なエンコーディング: '; -$PHPMAILER_LANG['execute'] = '実行できませんでした: '; -$PHPMAILER_LANG['extension_missing'] = '拡張機能が見つかりません: '; -$PHPMAILER_LANG['file_access'] = 'ファイルにアクセスできません: '; -$PHPMAILER_LANG['file_open'] = 'ファイルエラー: ファイルを開けません: '; -$PHPMAILER_LANG['from_failed'] = 'Fromアドレスを登録する際にエラーが発生しました: '; -$PHPMAILER_LANG['instantiate'] = 'メール関数が正常に動作しませんでした。'; -$PHPMAILER_LANG['invalid_address'] = '不正なメールアドレス: '; -$PHPMAILER_LANG['invalid_header'] = '不正なヘッダー名またはその内容'; -$PHPMAILER_LANG['invalid_hostentry'] = '不正なホストエントリー: '; -$PHPMAILER_LANG['invalid_host'] = '不正なホスト: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' メーラーがサポートされていません。'; -$PHPMAILER_LANG['provide_address'] = '少なくとも1つメールアドレスを 指定する必要があります。'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTPエラー: 次の受信者アドレスに 間違いがあります: '; -$PHPMAILER_LANG['signing'] = '署名エラー: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTPコード: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'SMTP追加情報: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP接続に失敗しました。'; -$PHPMAILER_LANG['smtp_detail'] = '詳細: '; -$PHPMAILER_LANG['smtp_error'] = 'SMTPサーバーエラー: '; -$PHPMAILER_LANG['variable_set'] = '変数が存在しません: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php deleted file mode 100644 index 51fe403..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP შეცდომა: ავტორიზაცია შეუძლებელია.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP შეცდომა: SMTP სერვერთან დაკავშირება შეუძლებელია.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP შეცდომა: მონაცემები არ იქნა მიღებული.'; -$PHPMAILER_LANG['encoding'] = 'კოდირების უცნობი ტიპი: '; -$PHPMAILER_LANG['execute'] = 'შეუძლებელია შემდეგი ბრძანების შესრულება: '; -$PHPMAILER_LANG['file_access'] = 'შეუძლებელია წვდომა ფაილთან: '; -$PHPMAILER_LANG['file_open'] = 'ფაილური სისტემის შეცდომა: არ იხსნება ფაილი: '; -$PHPMAILER_LANG['from_failed'] = 'გამგზავნის არასწორი მისამართი: '; -$PHPMAILER_LANG['instantiate'] = 'mail ფუნქციის გაშვება ვერ ხერხდება.'; -$PHPMAILER_LANG['provide_address'] = 'გთხოვთ მიუთითოთ ერთი ადრესატის e-mail მისამართი მაინც.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - საფოსტო სერვერის მხარდაჭერა არ არის.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP შეცდომა: შემდეგ მისამართებზე გაგზავნა ვერ მოხერხდა: '; -$PHPMAILER_LANG['empty_message'] = 'შეტყობინება ცარიელია'; -$PHPMAILER_LANG['invalid_address'] = 'არ გაიგზავნა, e-mail მისამართის არასწორი ფორმატი: '; -$PHPMAILER_LANG['signing'] = 'ხელმოწერის შეცდომა: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'შეცდომა SMTP სერვერთან დაკავშირებისას'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP სერვერის შეცდომა: '; -$PHPMAILER_LANG['variable_set'] = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: '; -$PHPMAILER_LANG['extension_missing'] = 'ბიბლიოთეკა არ არსებობს: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php deleted file mode 100644 index 8c97dd9..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP 오류: 인증할 수 없습니다.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP 오류: SMTP 호스트에 접속할 수 없습니다.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 오류: 데이터가 받아들여지지 않았습니다.'; -$PHPMAILER_LANG['empty_message'] = '메세지 내용이 없습니다'; -$PHPMAILER_LANG['encoding'] = '알 수 없는 인코딩: '; -$PHPMAILER_LANG['execute'] = '실행 불가: '; -$PHPMAILER_LANG['file_access'] = '파일 접근 불가: '; -$PHPMAILER_LANG['file_open'] = '파일 오류: 파일을 열 수 없습니다: '; -$PHPMAILER_LANG['from_failed'] = '다음 From 주소에서 오류가 발생했습니다: '; -$PHPMAILER_LANG['instantiate'] = 'mail 함수를 인스턴스화할 수 없습니다'; -$PHPMAILER_LANG['invalid_address'] = '잘못된 주소: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' 메일러는 지원되지 않습니다.'; -$PHPMAILER_LANG['provide_address'] = '적어도 한 개 이상의 수신자 메일 주소를 제공해야 합니다.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP 오류: 다음 수신자에서 오류가 발생했습니다: '; -$PHPMAILER_LANG['signing'] = '서명 오류: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 연결을 실패하였습니다.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP 서버 오류: '; -$PHPMAILER_LANG['variable_set'] = '변수 설정 및 초기화 불가: '; -$PHPMAILER_LANG['extension_missing'] = '확장자 없음: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ku.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ku.php deleted file mode 100644 index cf3bda6..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ku.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'هەڵەی SMTP : نەتوانرا کۆدەکە پشتڕاست بکرێتەوە '; -$PHPMAILER_LANG['connect_host'] = 'هەڵەی SMTP: نەتوانرا پەیوەندی بە سێرڤەرەوە بکات SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'هەڵەی SMTP: ئەو زانیاریانە قبوڵ نەکرا.'; -$PHPMAILER_LANG['empty_message'] = 'پەیامەکە بەتاڵە'; -$PHPMAILER_LANG['encoding'] = 'کۆدکردنی نەزانراو : '; -$PHPMAILER_LANG['execute'] = 'ناتوانرێت جێبەجێ بکرێت: '; -$PHPMAILER_LANG['file_access'] = 'ناتوانرێت دەستت بگات بە فایلەکە: '; -$PHPMAILER_LANG['file_open'] = 'هەڵەی پەڕگە(فایل): ناتوانرێت بکرێتەوە: '; -$PHPMAILER_LANG['from_failed'] = 'هەڵە لە ئاستی ناونیشانی نێرەر: '; -$PHPMAILER_LANG['instantiate'] = 'ناتوانرێت خزمەتگوزاری پۆستە پێشکەش بکرێت.'; -$PHPMAILER_LANG['invalid_address'] = 'نەتوانرا بنێردرێت ، چونکە ناونیشانی ئیمەیڵەکە نادروستە: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' مەیلەر پشتگیری ناکات'; -$PHPMAILER_LANG['provide_address'] = 'دەبێت ناونیشانی ئیمەیڵی لانیکەم یەک وەرگر دابین بکرێت.'; -$PHPMAILER_LANG['recipients_failed'] = ' هەڵەی SMTP: ئەم هەڵانەی خوارەوەشکستی هێنا لە ناردن بۆ هەردووکیان: '; -$PHPMAILER_LANG['signing'] = 'هەڵەی واژۆ: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect()پەیوەندی شکستی هێنا .'; -$PHPMAILER_LANG['smtp_error'] = 'هەڵەی ئاستی سێرڤەری SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'ناتوانرێت بیگۆڕیت یان دوبارە بینێریتەوە: '; -$PHPMAILER_LANG['extension_missing'] = 'درێژکراوە نەماوە: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php deleted file mode 100644 index 4f115b1..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP klaida: autentifikacija nepavyko.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP klaida: nepavyksta prisijungti prie SMTP stoties.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP klaida: duomenys nepriimti.'; -$PHPMAILER_LANG['empty_message'] = 'Laiško turinys tuščias'; -$PHPMAILER_LANG['encoding'] = 'Neatpažinta koduotė: '; -$PHPMAILER_LANG['execute'] = 'Nepavyko įvykdyti komandos: '; -$PHPMAILER_LANG['file_access'] = 'Byla nepasiekiama: '; -$PHPMAILER_LANG['file_open'] = 'Bylos klaida: Nepavyksta atidaryti: '; -$PHPMAILER_LANG['from_failed'] = 'Neteisingas siuntėjo adresas: '; -$PHPMAILER_LANG['instantiate'] = 'Nepavyko paleisti mail funkcijos.'; -$PHPMAILER_LANG['invalid_address'] = 'Neteisingas adresas: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' pašto stotis nepalaikoma.'; -$PHPMAILER_LANG['provide_address'] = 'Nurodykite bent vieną gavėjo adresą.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP klaida: nepavyko išsiųsti šiems gavėjams: '; -$PHPMAILER_LANG['signing'] = 'Prisijungimo klaida: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP susijungimo klaida'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP stoties klaida: '; -$PHPMAILER_LANG['variable_set'] = 'Nepavyko priskirti reikšmės kintamajam: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php deleted file mode 100644 index 679b18c..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP kļūda: Autorizācija neizdevās.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Kļūda: Nevar izveidot savienojumu ar SMTP serveri.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Kļūda: Nepieņem informāciju.'; -$PHPMAILER_LANG['empty_message'] = 'Ziņojuma teksts ir tukšs'; -$PHPMAILER_LANG['encoding'] = 'Neatpazīts kodējums: '; -$PHPMAILER_LANG['execute'] = 'Neizdevās izpildīt komandu: '; -$PHPMAILER_LANG['file_access'] = 'Fails nav pieejams: '; -$PHPMAILER_LANG['file_open'] = 'Faila kļūda: Nevar atvērt failu: '; -$PHPMAILER_LANG['from_failed'] = 'Nepareiza sūtītāja adrese: '; -$PHPMAILER_LANG['instantiate'] = 'Nevar palaist sūtīšanas funkciju.'; -$PHPMAILER_LANG['invalid_address'] = 'Nepareiza adrese: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' sūtītājs netiek atbalstīts.'; -$PHPMAILER_LANG['provide_address'] = 'Lūdzu, norādiet vismaz vienu adresātu.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP kļūda: neizdevās nosūtīt šādiem saņēmējiem: '; -$PHPMAILER_LANG['signing'] = 'Autorizācijas kļūda: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP savienojuma kļūda'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP servera kļūda: '; -$PHPMAILER_LANG['variable_set'] = 'Nevar piešķirt mainīgā vērtību: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php deleted file mode 100644 index 8a94f6a..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP diso: tsy voarakitra ny angona.'; -$PHPMAILER_LANG['empty_message'] = 'Tsy misy ny votoaty mailaka.'; -$PHPMAILER_LANG['encoding'] = 'Tsy fantatra encoding: '; -$PHPMAILER_LANG['execute'] = 'Tsy afaka manatanteraka ity baiko manaraka ity: '; -$PHPMAILER_LANG['file_access'] = 'Tsy nahomby ny fidirana amin\'ity rakitra ity: '; -$PHPMAILER_LANG['file_open'] = 'Hadisoana diso: Tsy afaka nanokatra ity file manaraka ity: '; -$PHPMAILER_LANG['from_failed'] = 'Ny adiresy iraka manaraka dia diso: '; -$PHPMAILER_LANG['instantiate'] = 'Tsy afaka nanomboka ny hetsika mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Tsy mety ny adiresy: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tsy manohana.'; -$PHPMAILER_LANG['provide_address'] = 'Alefaso azafady iray adiresy iray farafahakeliny.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Tsy mety ireo mpanaraka ireto: '; -$PHPMAILER_LANG['signing'] = 'Error nandritra ny sonia:'; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Tsy nahomby ny fifandraisana tamin\'ny server SMTP.'; -$PHPMAILER_LANG['smtp_error'] = 'Fahadisoana tamin\'ny server SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Tsy azo atao ny mametraka na mamerina ny variable: '; -$PHPMAILER_LANG['extension_missing'] = 'Tsy hita ny ampahany: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php deleted file mode 100644 index 04d262c..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Ralat SMTP: Tidak dapat pengesahan.'; -$PHPMAILER_LANG['connect_host'] = 'Ralat SMTP: Tidak dapat menghubungi hos pelayan SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Ralat SMTP: Data tidak diterima oleh pelayan.'; -$PHPMAILER_LANG['empty_message'] = 'Tiada isi untuk mesej'; -$PHPMAILER_LANG['encoding'] = 'Pengekodan tidak diketahui: '; -$PHPMAILER_LANG['execute'] = 'Tidak dapat melaksanakan: '; -$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses fail: '; -$PHPMAILER_LANG['file_open'] = 'Ralat Fail: Tidak dapat membuka fail: '; -$PHPMAILER_LANG['from_failed'] = 'Berikut merupakan ralat dari alamat e-mel: '; -$PHPMAILER_LANG['instantiate'] = 'Tidak dapat memberi contoh fungsi e-mel.'; -$PHPMAILER_LANG['invalid_address'] = 'Alamat emel tidak sah: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' jenis penghantar emel tidak disokong.'; -$PHPMAILER_LANG['provide_address'] = 'Anda perlu menyediakan sekurang-kurangnya satu alamat e-mel penerima.'; -$PHPMAILER_LANG['recipients_failed'] = 'Ralat SMTP: Penerima e-mel berikut telah gagal: '; -$PHPMAILER_LANG['signing'] = 'Ralat pada tanda tangan: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() telah gagal.'; -$PHPMAILER_LANG['smtp_error'] = 'Ralat pada pelayan SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Tidak boleh menetapkan atau menetapkan semula pembolehubah: '; -$PHPMAILER_LANG['extension_missing'] = 'Sambungan hilang: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php deleted file mode 100644 index df8ff27..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ - - $PHPMAILER_LANG['authenticate'] = 'SMTP-feil: Kunne ikke autentisere.'; - $PHPMAILER_LANG['buggy_php'] = 'Din versjon av PHP er påvirket av en feil som kan føre til ødelagte meldinger. For å løse problemet kan du bytte til sending via SMTP, deaktivere mail.add_x_header-alternativet i php.ini, bytte til MacOS eller Linux, eller oppgradere PHP til versjon 7.0.17+ eller 7.1.3+.'; - $PHPMAILER_LANG['connect_host'] = 'SMTP-feil: Kunne ikke koble til SMTP-vert.'; - $PHPMAILER_LANG['data_not_accepted'] = 'SMTP-feil: data ikke akseptert.'; - $PHPMAILER_LANG['empty_message'] = 'Meldingsinnholdet er tomt'; - $PHPMAILER_LANG['encoding'] = 'Ukjent koding: '; - $PHPMAILER_LANG['execute'] = 'Kunne ikke utføres: '; - $PHPMAILER_LANG['extension_missing'] = 'Utvidelse mangler: '; - $PHPMAILER_LANG['file_access'] = 'Kunne ikke få tilgang til filen: '; - $PHPMAILER_LANG['file_open'] = 'Feil i fil: Kunne ikke åpne filen: '; - $PHPMAILER_LANG['from_failed'] = 'Følgende avsenderadresse mislyktes: '; - $PHPMAILER_LANG['instantiate'] = 'Kunne ikke starte e-postfunksjonen.'; - $PHPMAILER_LANG['invalid_address'] = 'Ugyldig adresse: '; - $PHPMAILER_LANG['invalid_header'] = 'Ugyldig headernavn eller verdi'; - $PHPMAILER_LANG['invalid_hostentry'] = 'Ugyldig vertsinngang: '; - $PHPMAILER_LANG['invalid_host'] = 'Ugyldig vert: '; - $PHPMAILER_LANG['mailer_not_supported'] = ' sender er ikke støttet.'; - $PHPMAILER_LANG['provide_address'] = 'Du må oppgi minst én mottaker-e-postadresse.'; - $PHPMAILER_LANG['recipients_failed'] = 'SMTP Feil: Følgende mottakeradresse feilet: '; - $PHPMAILER_LANG['signing'] = 'Signeringsfeil: '; - $PHPMAILER_LANG['smtp_code'] = 'SMTP-kode: '; - $PHPMAILER_LANG['smtp_code_ex'] = 'Ytterligere SMTP-info: '; - $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP connect() mislyktes.'; - $PHPMAILER_LANG['smtp_detail'] = 'Detaljer: '; - $PHPMAILER_LANG['smtp_error'] = 'SMTP-serverfeil: '; - $PHPMAILER_LANG['variable_set'] = 'Kan ikke angi eller tilbakestille variabel: '; - $PHPMAILER_LANG['no_smtputf8'] = 'Serveren støtter ikke SMTPUTF8, som er nødvendig for å sende til Unicode-adresser.'; - $PHPMAILER_LANG['imap_recommended'] = 'Det anbefales ikke å bruke forenklet adresseanalyse. Installer PHP IMAP-utvidelsen for full RFC822-analyse.'; - $PHPMAILER_LANG['deprecated_argument'] = 'Avviklet argument: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php deleted file mode 100644 index cbb3622..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @author Robin van der Vliet - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP-fout: authenticatie mislukt.'; -$PHPMAILER_LANG['buggy_php'] = 'PHP-versie gedetecteerd die onderhevig is aan een bug die kan resulteren in gecorrumpeerde berichten. Om dit te voorkomen, gebruik SMTP voor het verzenden van berichten, zet de optie mail.add_x_header in uw php.ini uit, gebruik MacOS of Linux, of pas de gebruikte PHP-versie aan naar versie 7.0.17+ or 7.1.3+.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP-fout: kon niet verbinden met SMTP-host.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-fout: data niet geaccepteerd.'; -$PHPMAILER_LANG['empty_message'] = 'Berichttekst is leeg'; -$PHPMAILER_LANG['encoding'] = 'Onbekende codering: '; -$PHPMAILER_LANG['execute'] = 'Kon niet uitvoeren: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensie afwezig: '; -$PHPMAILER_LANG['file_access'] = 'Kreeg geen toegang tot bestand: '; -$PHPMAILER_LANG['file_open'] = 'Bestandsfout: kon bestand niet openen: '; -$PHPMAILER_LANG['from_failed'] = 'Het volgende afzenderadres is mislukt: '; -$PHPMAILER_LANG['instantiate'] = 'Kon mailfunctie niet initialiseren.'; -$PHPMAILER_LANG['invalid_address'] = 'Ongeldig adres: '; -$PHPMAILER_LANG['invalid_header'] = 'Ongeldige headernaam of -waarde'; -$PHPMAILER_LANG['invalid_hostentry'] = 'Ongeldige hostentry: '; -$PHPMAILER_LANG['invalid_host'] = 'Ongeldige host: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.'; -$PHPMAILER_LANG['provide_address'] = 'Er moet minstens één ontvanger worden opgegeven.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP-fout: de volgende ontvangers zijn mislukt: '; -$PHPMAILER_LANG['signing'] = 'Signeerfout: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP-code: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'Aanvullende SMTP-informatie: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP-verbinding mislukt.'; -$PHPMAILER_LANG['smtp_detail'] = 'Detail: '; -$PHPMAILER_LANG['smtp_error'] = 'SMTP-serverfout: '; -$PHPMAILER_LANG['variable_set'] = 'Kan de volgende variabele niet instellen of herstellen: '; -$PHPMAILER_LANG['no_smtputf8'] = 'De server ondersteunt geen SMTPUTF8 dat nodig is om naar Unicode-adressen te sturen.'; -$PHPMAILER_LANG['imap_recommended'] = 'Het gebruik van de vereenvoudigde adresparser is niet aanbevolen. Installeer de IMAP-extensie voor PHP voor volledige RFC822-ondersteuning.'; -$PHPMAILER_LANG['deprecated_argument'] = 'Verouderd argument: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php deleted file mode 100644 index 35b3320..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php +++ /dev/null @@ -1,33 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro SMTP: Falha na autenticação.'; -$PHPMAILER_LANG['buggy_php'] = 'A sua versão do PHP tem um bug que pode causar mensagens corrompidas. Para resolver, utilize o envio por SMTP, desative a opção mail.add_x_header no ficheiro php.ini, mude para MacOS ou Linux, ou atualize o PHP para a versão 7.0.17+ ou 7.1.3+.'; -$PHPMAILER_LANG['connect_host'] = 'Erro SMTP: Não foi possível ligar ao servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro SMTP: Dados não aceites.'; -$PHPMAILER_LANG['empty_message'] = 'A mensagem de e-mail está vazia.'; -$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; -$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensão em falta: '; -$PHPMAILER_LANG['file_access'] = 'Não foi possível aceder ao ficheiro: '; -$PHPMAILER_LANG['file_open'] = 'Erro ao abrir o ficheiro: '; -$PHPMAILER_LANG['from_failed'] = 'O envio falhou para o seguinte endereço do remetente: '; -$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Endereço de e-mail inválido: '; -$PHPMAILER_LANG['invalid_header'] = 'Nome ou valor do cabeçalho inválido.'; -$PHPMAILER_LANG['invalid_hostentry'] = 'Entrada de host inválida: '; -$PHPMAILER_LANG['invalid_host'] = 'Host inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = 'O cliente de e-mail não é suportado.'; -$PHPMAILER_LANG['provide_address'] = 'Deve fornecer pelo menos um endereço de destinatário.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro SMTP: Falha no envio para os seguintes destinatários: '; -$PHPMAILER_LANG['signing'] = 'Erro ao assinar: '; -$PHPMAILER_LANG['smtp_code'] = 'Código SMTP: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'Informações adicionais SMTP: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Falha na função SMTP connect().'; -$PHPMAILER_LANG['smtp_detail'] = 'Detalhes: '; -$PHPMAILER_LANG['smtp_error'] = 'Erro do servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php deleted file mode 100644 index 5239865..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @author Lucas Guimarães - * @author Phelipe Alves - * @author Fabio Beneditto - * @author Geidson Benício Coelho - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.'; -$PHPMAILER_LANG['buggy_php'] = 'Sua versão do PHP é afetada por um bug que por resultar em messagens corrompidas. Para corrigir, mude para enviar usando SMTP, desative a opção mail.add_x_header em seu php.ini, mude para MacOS ou Linux, ou atualize seu PHP para versão 7.0.17+ ou 7.1.3+ '; -$PHPMAILER_LANG['connect_host'] = 'Erro de SMTP: Não foi possível conectar ao servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro de SMTP: Dados rejeitados.'; -$PHPMAILER_LANG['empty_message'] = 'Mensagem vazia'; -$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; -$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensão não existe: '; -$PHPMAILER_LANG['file_access'] = 'Não foi possível acessar o arquivo: '; -$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: Não foi possível abrir o arquivo: '; -$PHPMAILER_LANG['from_failed'] = 'Os seguintes remetentes falharam: '; -$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Endereço de e-mail inválido: '; -$PHPMAILER_LANG['invalid_header'] = 'Nome ou valor de cabeçalho inválido'; -$PHPMAILER_LANG['invalid_hostentry'] = 'hostentry inválido: '; -$PHPMAILER_LANG['invalid_host'] = 'host inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.'; -$PHPMAILER_LANG['provide_address'] = 'Você deve informar pelo menos um destinatário.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro de SMTP: Os seguintes destinatários falharam: '; -$PHPMAILER_LANG['signing'] = 'Erro de Assinatura: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; -$PHPMAILER_LANG['smtp_code'] = 'Código do servidor SMTP: '; -$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'Informações adicionais do servidor SMTP: '; -$PHPMAILER_LANG['smtp_detail'] = 'Detalhes do servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php deleted file mode 100644 index 45bef91..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php +++ /dev/null @@ -1,33 +0,0 @@ - - * @author Foster Snowhill - * @author ProjectSoft - */ - -$PHPMAILER_LANG['authenticate'] = 'Ошибка SMTP: не удалось пройти аутентификацию.'; -$PHPMAILER_LANG['buggy_php'] = 'В вашей версии PHP есть ошибка, которая может привести к повреждению сообщений. Чтобы исправить, переключитесь на отправку по SMTP, отключите опцию mail.add_x_header в ваш php.ini, переключитесь на MacOS или Linux или обновите PHP до версии 7.0.17+ или 7.1.3+.'; -$PHPMAILER_LANG['connect_host'] = 'Ошибка SMTP: не удается подключиться к SMTP-серверу.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Ошибка SMTP: данные не приняты.'; -$PHPMAILER_LANG['empty_message'] = 'Пустое сообщение'; -$PHPMAILER_LANG['encoding'] = 'Неизвестная кодировка: '; -$PHPMAILER_LANG['execute'] = 'Невозможно выполнить команду: '; -$PHPMAILER_LANG['extension_missing'] = 'Расширение отсутствует: '; -$PHPMAILER_LANG['file_access'] = 'Нет доступа к файлу: '; -$PHPMAILER_LANG['file_open'] = 'Файловая ошибка: не удаётся открыть файл: '; -$PHPMAILER_LANG['from_failed'] = 'Неверный адрес отправителя: '; -$PHPMAILER_LANG['instantiate'] = 'Невозможно запустить функцию mail().'; -$PHPMAILER_LANG['invalid_address'] = 'Не отправлено из-за неправильного формата email-адреса: '; -$PHPMAILER_LANG['invalid_header'] = 'Неверное имя или значение заголовка'; -$PHPMAILER_LANG['invalid_hostentry'] = 'Неверная запись хоста: '; -$PHPMAILER_LANG['invalid_host'] = 'Неверный хост: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.'; -$PHPMAILER_LANG['provide_address'] = 'Вы должны указать хотя бы один адрес электронной почты получателя.'; -$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: Ошибка следующих получателей: '; -$PHPMAILER_LANG['signing'] = 'Ошибка подписи: '; -$PHPMAILER_LANG['smtp_code'] = 'Код SMTP: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'Дополнительная информация SMTP: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером.'; -$PHPMAILER_LANG['smtp_detail'] = 'Детали: '; -$PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Невозможно установить или сбросить переменную: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php deleted file mode 100644 index dce502a..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php +++ /dev/null @@ -1,34 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP දෝෂය: සත්‍යාපනය අසාර්ථක විය.'; -$PHPMAILER_LANG['buggy_php'] = 'ඔබගේ PHP version එකෙහි පවතින දෝෂයක් නිසා email පණිවිඩ දෝෂ සහගත වීමේ හැකියාවක් ඇත. මෙය විසදීම සදහා SMTP භාවිතා කිරීම, mail.add_x_header INI setting එක අක්‍රීය කිරීම, MacOS හෝ Linux වලට මාරු වීම, හෝ ඔබගේ PHP version එක 7.0.17+ හෝ 7.1.3+ වලට අලුත් කිරීම කරගන්න.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP දෝෂය: සම්බන්ධ වීමට නොහැකි විය.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP දෝෂය: දත්ත පිළිගනු නොලැබේ.'; -$PHPMAILER_LANG['empty_message'] = 'පණිවිඩ අන්තර්ගතය හිස්'; -$PHPMAILER_LANG['encoding'] = 'නොදන්නා කේතනය: '; -$PHPMAILER_LANG['execute'] = 'ක්‍රියාත්මක කළ නොහැකි විය: '; -$PHPMAILER_LANG['extension_missing'] = 'Extension එක නොමැත: '; -$PHPMAILER_LANG['file_access'] = 'File එකට ප්‍රවේශ විය නොහැකි විය: '; -$PHPMAILER_LANG['file_open'] = 'File දෝෂය: File එක විවෘත කළ නොහැක: '; -$PHPMAILER_LANG['from_failed'] = 'පහත From ලිපිනයන් අසාර්ථක විය: '; -$PHPMAILER_LANG['instantiate'] = 'mail function එක ක්‍රියාත්මක කළ නොහැක.'; -$PHPMAILER_LANG['invalid_address'] = 'වලංගු නොවන ලිපිනය: '; -$PHPMAILER_LANG['invalid_header'] = 'වලංගු නොවන header නාමයක් හෝ අගයක්'; -$PHPMAILER_LANG['invalid_hostentry'] = 'වලංගු නොවන hostentry එකක්: '; -$PHPMAILER_LANG['invalid_host'] = 'වලංගු නොවන host එකක්: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer සහාය නොදක්වයි.'; -$PHPMAILER_LANG['provide_address'] = 'ඔබ අවම වශයෙන් එක් ලබන්නෙකුගේ ඊමේල් ලිපිනයක් සැපයිය යුතුය.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP දෝෂය: පහත ලබන්නන් අසමත් විය: '; -$PHPMAILER_LANG['signing'] = 'Sign කිරීමේ දෝෂය: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP කේතය: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'අමතර SMTP තොරතුරු: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP සම්බන්ධය අසාර්ථක විය.'; -$PHPMAILER_LANG['smtp_detail'] = 'තොරතුරු: '; -$PHPMAILER_LANG['smtp_error'] = 'SMTP දෝෂය: '; -$PHPMAILER_LANG['variable_set'] = 'Variable එක සැකසීමට හෝ නැවත සැකසීමට නොහැක: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php deleted file mode 100644 index 028f5bc..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @author Peter Orlický - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Chyba autentifikácie.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Nebolo možné nadviazať spojenie so SMTP serverom.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dáta neboli prijaté'; -$PHPMAILER_LANG['empty_message'] = 'Prázdne telo správy.'; -$PHPMAILER_LANG['encoding'] = 'Neznáme kódovanie: '; -$PHPMAILER_LANG['execute'] = 'Nedá sa vykonať: '; -$PHPMAILER_LANG['file_access'] = 'Súbor nebol nájdený: '; -$PHPMAILER_LANG['file_open'] = 'File Error: Súbor sa otvoriť pre čítanie: '; -$PHPMAILER_LANG['from_failed'] = 'Následujúca adresa From je nesprávna: '; -$PHPMAILER_LANG['instantiate'] = 'Nedá sa vytvoriť inštancia emailovej funkcie.'; -$PHPMAILER_LANG['invalid_address'] = 'Neodoslané, emailová adresa je nesprávna: '; -$PHPMAILER_LANG['invalid_hostentry'] = 'Záznam hostiteľa je nesprávny: '; -$PHPMAILER_LANG['invalid_host'] = 'Hostiteľ je nesprávny: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' emailový klient nieje podporovaný.'; -$PHPMAILER_LANG['provide_address'] = 'Musíte zadať aspoň jednu emailovú adresu príjemcu.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Adresy príjemcov niesu správne '; -$PHPMAILER_LANG['signing'] = 'Chyba prihlasovania: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zlyhalo.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP chyba serveru: '; -$PHPMAILER_LANG['variable_set'] = 'Nemožno nastaviť alebo resetovať premennú: '; -$PHPMAILER_LANG['extension_missing'] = 'Chýba rozšírenie: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php deleted file mode 100644 index 3e00c25..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php +++ /dev/null @@ -1,36 +0,0 @@ - - * @author Filip Š - * @author Blaž Oražem - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.'; -$PHPMAILER_LANG['buggy_php'] = 'Na vašo PHP različico vpliva napaka, ki lahko povzroči poškodovana sporočila. Če želite težavo odpraviti, preklopite na pošiljanje prek SMTP, onemogočite možnost mail.add_x_header v vaši php.ini datoteki, preklopite na MacOS ali Linux, ali nadgradite vašo PHP zaličico na 7.0.17+ ali 7.1.3+.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP napaka: Vzpostavljanje povezave s SMTP gostiteljem ni uspelo.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP napaka: Strežnik zavrača podatke.'; -$PHPMAILER_LANG['empty_message'] = 'E-poštno sporočilo nima vsebine.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznan tip kodiranja: '; -$PHPMAILER_LANG['execute'] = 'Operacija ni uspela: '; -$PHPMAILER_LANG['extension_missing'] = 'Manjkajoča razširitev: '; -$PHPMAILER_LANG['file_access'] = 'Nimam dostopa do datoteke: '; -$PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: '; -$PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: '; -$PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.'; -$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: '; -$PHPMAILER_LANG['invalid_header'] = 'Neveljavno ime ali vrednost glave'; -$PHPMAILER_LANG['invalid_hostentry'] = 'Neveljaven vnos gostitelja: '; -$PHPMAILER_LANG['invalid_host'] = 'Neveljaven gostitelj: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.'; -$PHPMAILER_LANG['provide_address'] = 'Prosimo, vnesite vsaj enega naslovnika.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: '; -$PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP koda: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'Dodatne informacije o SMTP: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.'; -$PHPMAILER_LANG['smtp_detail'] = 'Podrobnosti: '; -$PHPMAILER_LANG['smtp_error'] = 'Napaka SMTP strežnika: '; -$PHPMAILER_LANG['variable_set'] = 'Ne morem nastaviti oz. ponastaviti spremenljivke: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php deleted file mode 100644 index 0b5280f..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @author Miloš Milanović - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: аутентификација није успела.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: повезивање са SMTP сервером није успело.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: подаци нису прихваћени.'; -$PHPMAILER_LANG['empty_message'] = 'Садржај поруке је празан.'; -$PHPMAILER_LANG['encoding'] = 'Непознато кодирање: '; -$PHPMAILER_LANG['execute'] = 'Није могуће извршити наредбу: '; -$PHPMAILER_LANG['file_access'] = 'Није могуће приступити датотеци: '; -$PHPMAILER_LANG['file_open'] = 'Није могуће отворити датотеку: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP грешка: слање са следећих адреса није успело: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: слање на следеће адресе није успело: '; -$PHPMAILER_LANG['instantiate'] = 'Није могуће покренути mail функцију.'; -$PHPMAILER_LANG['invalid_address'] = 'Порука није послата. Неисправна адреса: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' мејлер није подржан.'; -$PHPMAILER_LANG['provide_address'] = 'Дефинишите бар једну адресу примаоца.'; -$PHPMAILER_LANG['signing'] = 'Грешка приликом пријаве: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Повезивање са SMTP сервером није успело.'; -$PHPMAILER_LANG['smtp_error'] = 'Грешка SMTP сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Није могуће задати нити ресетовати променљиву: '; -$PHPMAILER_LANG['extension_missing'] = 'Недостаје проширење: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php deleted file mode 100644 index 6213832..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @author Miloš Milanović - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP greška: autentifikacija nije uspela.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP greška: povezivanje sa SMTP serverom nije uspelo.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP greška: podaci nisu prihvaćeni.'; -$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznato kodiranje: '; -$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; -$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; -$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP greška: slanje sa sledećih adresa nije uspelo: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP greška: slanje na sledeće adrese nije uspelo: '; -$PHPMAILER_LANG['instantiate'] = 'Nije moguće pokrenuti mail funkciju.'; -$PHPMAILER_LANG['invalid_address'] = 'Poruka nije poslata. Neispravna adresa: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' majler nije podržan.'; -$PHPMAILER_LANG['provide_address'] = 'Definišite bar jednu adresu primaoca.'; -$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Povezivanje sa SMTP serverom nije uspelo.'; -$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP servera: '; -$PHPMAILER_LANG['variable_set'] = 'Nije moguće zadati niti resetovati promenljivu: '; -$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php deleted file mode 100644 index 9872c19..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP fel: Kunde inte autentisera.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP fel: Kunde inte ansluta till SMTP-server.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fel: Data accepterades inte.'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = 'Okänt encode-format: '; -$PHPMAILER_LANG['execute'] = 'Kunde inte köra: '; -$PHPMAILER_LANG['file_access'] = 'Ingen åtkomst till fil: '; -$PHPMAILER_LANG['file_open'] = 'Fil fel: Kunde inte öppna fil: '; -$PHPMAILER_LANG['from_failed'] = 'Följande avsändaradress är felaktig: '; -$PHPMAILER_LANG['instantiate'] = 'Kunde inte initiera e-postfunktion.'; -$PHPMAILER_LANG['invalid_address'] = 'Felaktig adress: '; -$PHPMAILER_LANG['provide_address'] = 'Du måste ange minst en mottagares e-postadress.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: '; -$PHPMAILER_LANG['signing'] = 'Signeringsfel: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() misslyckades.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP serverfel: '; -$PHPMAILER_LANG['variable_set'] = 'Kunde inte definiera eller återställa variabel: '; -$PHPMAILER_LANG['extension_missing'] = 'Tillägg ej tillgängligt: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php deleted file mode 100644 index d15bed1..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Hindi mapatotohanan.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Hindi makakonekta sa SMTP host.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi naitanggap.'; -$PHPMAILER_LANG['empty_message'] = 'Walang laman ang mensahe'; -$PHPMAILER_LANG['encoding'] = 'Hindi alam ang encoding: '; -$PHPMAILER_LANG['execute'] = 'Hindi maisasagawa: '; -$PHPMAILER_LANG['file_access'] = 'Hindi ma-access ang file: '; -$PHPMAILER_LANG['file_open'] = 'File Error: Hindi mabuksan ang file: '; -$PHPMAILER_LANG['from_failed'] = 'Ang sumusunod na address ay nabigo: '; -$PHPMAILER_LANG['instantiate'] = 'Hindi maisimulan ang instance ng mail function.'; -$PHPMAILER_LANG['invalid_address'] = 'Hindi wasto ang address na naibigay: '; -$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado.'; -$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: '; -$PHPMAILER_LANG['signing'] = 'Hindi ma-sign: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo.'; -$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo: '; -$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda o ma-reset ang mga variables: '; -$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php deleted file mode 100644 index 3c45bc1..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @fixed by Boris Yurchenko - */ - -$PHPMAILER_LANG['authenticate'] = 'Помилка SMTP: помилка авторизації.'; -$PHPMAILER_LANG['connect_host'] = 'Помилка SMTP: не вдається під\'єднатися до SMTP-серверу.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Помилка SMTP: дані не прийнято.'; -$PHPMAILER_LANG['encoding'] = 'Невідоме кодування: '; -$PHPMAILER_LANG['execute'] = 'Неможливо виконати команду: '; -$PHPMAILER_LANG['file_access'] = 'Немає доступу до файлу: '; -$PHPMAILER_LANG['file_open'] = 'Помилка файлової системи: не вдається відкрити файл: '; -$PHPMAILER_LANG['from_failed'] = 'Невірна адреса відправника: '; -$PHPMAILER_LANG['instantiate'] = 'Неможливо запустити функцію mail().'; -$PHPMAILER_LANG['provide_address'] = 'Будь ласка, введіть хоча б одну email-адресу отримувача.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.'; -$PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: не вдалося відправлення для таких отримувачів: '; -$PHPMAILER_LANG['empty_message'] = 'Пусте повідомлення'; -$PHPMAILER_LANG['invalid_address'] = 'Не відправлено через неправильний формат email-адреси: '; -$PHPMAILER_LANG['signing'] = 'Помилка підпису: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка з\'єднання з SMTP-сервером'; -$PHPMAILER_LANG['smtp_error'] = 'Помилка SMTP-сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Неможливо встановити або скинути змінну: '; -$PHPMAILER_LANG['extension_missing'] = 'Розширення відсутнє: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ur.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-ur.php deleted file mode 100644 index 0b9de0f..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-ur.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP خرابی: تصدیق کرنے سے قاصر۔'; -$PHPMAILER_LANG['connect_host'] = 'SMTP خرابی: سرور سے منسلک ہونے سے قاصر۔'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP خرابی: ڈیٹا قبول نہیں کیا گیا۔'; -$PHPMAILER_LANG['empty_message'] = 'پیغام کی باڈی خالی ہے۔'; -$PHPMAILER_LANG['encoding'] = 'نامعلوم انکوڈنگ: '; -$PHPMAILER_LANG['execute'] = 'عمل کرنے کے قابل نہیں '; -$PHPMAILER_LANG['file_access'] = 'فائل تک رسائی سے قاصر:'; -$PHPMAILER_LANG['file_open'] = 'فائل کی خرابی: فائل کو کھولنے سے قاصر:'; -$PHPMAILER_LANG['from_failed'] = 'درج ذیل بھیجنے والے کا پتہ ناکام ہو گیا:'; -$PHPMAILER_LANG['instantiate'] = 'میل فنکشن کی مثال بنانے سے قاصر۔'; -$PHPMAILER_LANG['invalid_address'] = 'بھیجنے سے قاصر: غلط ای میل پتہ:'; -$PHPMAILER_LANG['mailer_not_supported'] = ' میلر تعاون یافتہ نہیں ہے۔'; -$PHPMAILER_LANG['provide_address'] = 'آپ کو کم از کم ایک منزل کا ای میل پتہ فراہم کرنا چاہیے۔'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP خرابی: درج ذیل پتہ پر نہیں بھیجا جاسکا: '; -$PHPMAILER_LANG['signing'] = 'دستخط کی خرابی: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP ملنا ناکام ہوا'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP سرور کی خرابی: '; -$PHPMAILER_LANG['variable_set'] = 'متغیر سیٹ نہیں کیا جا سکا: '; -$PHPMAILER_LANG['extension_missing'] = 'ایکٹینشن موجود نہیں ہے۔ '; -$PHPMAILER_LANG['smtp_code'] = 'SMTP سرور کوڈ: '; -$PHPMAILER_LANG['smtp_code_ex'] = 'اضافی SMTP سرور کی معلومات:'; -$PHPMAILER_LANG['invalid_header'] = 'غلط ہیڈر کا نام یا قدر'; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php deleted file mode 100644 index d65576e..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ - -$PHPMAILER_LANG['authenticate'] = 'Lỗi SMTP: Không thể xác thực.'; -$PHPMAILER_LANG['connect_host'] = 'Lỗi SMTP: Không thể kết nối máy chủ SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Lỗi SMTP: Dữ liệu không được chấp nhận.'; -$PHPMAILER_LANG['empty_message'] = 'Không có nội dung'; -$PHPMAILER_LANG['encoding'] = 'Mã hóa không xác định: '; -$PHPMAILER_LANG['execute'] = 'Không thực hiện được: '; -$PHPMAILER_LANG['file_access'] = 'Không thể truy cập tệp tin '; -$PHPMAILER_LANG['file_open'] = 'Lỗi Tập tin: Không thể mở tệp tin: '; -$PHPMAILER_LANG['from_failed'] = 'Lỗi địa chỉ gửi đi: '; -$PHPMAILER_LANG['instantiate'] = 'Không dùng được các hàm gửi thư.'; -$PHPMAILER_LANG['invalid_address'] = 'Đại chỉ emai không đúng: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' trình gửi thư không được hỗ trợ.'; -$PHPMAILER_LANG['provide_address'] = 'Bạn phải cung cấp ít nhất một địa chỉ người nhận.'; -$PHPMAILER_LANG['recipients_failed'] = 'Lỗi SMTP: lỗi địa chỉ người nhận: '; -$PHPMAILER_LANG['signing'] = 'Lỗi đăng nhập: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Lỗi kết nối với SMTP'; -$PHPMAILER_LANG['smtp_error'] = 'Lỗi máy chủ smtp '; -$PHPMAILER_LANG['variable_set'] = 'Không thể thiết lập hoặc thiết lập lại biến: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php deleted file mode 100644 index 35e4e70..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php +++ /dev/null @@ -1,29 +0,0 @@ - - * @author Peter Dave Hello <@PeterDaveHello/> - * @author Jason Chiang - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP 錯誤:登入失敗。'; -$PHPMAILER_LANG['connect_host'] = 'SMTP 錯誤:無法連線到 SMTP 主機。'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 錯誤:無法接受的資料。'; -$PHPMAILER_LANG['empty_message'] = '郵件內容為空'; -$PHPMAILER_LANG['encoding'] = '未知編碼: '; -$PHPMAILER_LANG['execute'] = '無法執行:'; -$PHPMAILER_LANG['file_access'] = '無法存取檔案:'; -$PHPMAILER_LANG['file_open'] = '檔案錯誤:無法開啟檔案:'; -$PHPMAILER_LANG['from_failed'] = '發送地址錯誤:'; -$PHPMAILER_LANG['instantiate'] = '未知函數呼叫。'; -$PHPMAILER_LANG['invalid_address'] = '因為電子郵件地址無效,無法傳送: '; -$PHPMAILER_LANG['mailer_not_supported'] = '不支援的發信客戶端。'; -$PHPMAILER_LANG['provide_address'] = '必須提供至少一個收件人地址。'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP 錯誤:以下收件人地址錯誤:'; -$PHPMAILER_LANG['signing'] = '電子簽章錯誤: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 連線失敗'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP 伺服器錯誤: '; -$PHPMAILER_LANG['variable_set'] = '無法設定或重設變數: '; -$PHPMAILER_LANG['extension_missing'] = '遺失模組 Extension: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php deleted file mode 100644 index 03d4911..0000000 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php +++ /dev/null @@ -1,36 +0,0 @@ - - * @author young - * @author Teddysun - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:登录失败。'; -$PHPMAILER_LANG['buggy_php'] = '您的 PHP 版本存在漏洞,可能会导致消息损坏。为修复此问题,请切换到使用 SMTP 发送,在您的 php.ini 中禁用 mail.add_x_header 选项。切换到 MacOS 或 Linux,或将您的 PHP 升级到 7.0.17+ 或 7.1.3+ 版本。'; -$PHPMAILER_LANG['connect_host'] = 'SMTP 错误:无法连接到 SMTP 主机。'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误:数据不被接受。'; -$PHPMAILER_LANG['empty_message'] = '邮件正文为空。'; -$PHPMAILER_LANG['encoding'] = '未知编码:'; -$PHPMAILER_LANG['execute'] = '无法执行:'; -$PHPMAILER_LANG['extension_missing'] = '缺少扩展名:'; -$PHPMAILER_LANG['file_access'] = '无法访问文件:'; -$PHPMAILER_LANG['file_open'] = '文件错误:无法打开文件:'; -$PHPMAILER_LANG['from_failed'] = '发送地址错误:'; -$PHPMAILER_LANG['instantiate'] = '未知函数调用。'; -$PHPMAILER_LANG['invalid_address'] = '发送失败,电子邮箱地址是无效的:'; -$PHPMAILER_LANG['mailer_not_supported'] = '发信客户端不被支持。'; -$PHPMAILER_LANG['provide_address'] = '必须提供至少一个收件人地址。'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误:收件人地址错误:'; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP服务器连接失败。'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP服务器出错:'; -$PHPMAILER_LANG['variable_set'] = '无法设置或重置变量:'; -$PHPMAILER_LANG['invalid_header'] = '无效的标题名称或值'; -$PHPMAILER_LANG['invalid_hostentry'] = '无效的hostentry: '; -$PHPMAILER_LANG['invalid_host'] = '无效的主机:'; -$PHPMAILER_LANG['signing'] = '签名错误:'; -$PHPMAILER_LANG['smtp_code'] = 'SMTP代码: '; -$PHPMAILER_LANG['smtp_code_ex'] = '附加SMTP信息: '; -$PHPMAILER_LANG['smtp_detail'] = '详情:'; diff --git a/vendor/phpmailer/phpmailer/src/DSNConfigurator.php b/vendor/phpmailer/phpmailer/src/DSNConfigurator.php deleted file mode 100644 index 7058c1f..0000000 --- a/vendor/phpmailer/phpmailer/src/DSNConfigurator.php +++ /dev/null @@ -1,245 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2023 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * Configure PHPMailer with DSN string. - * - * @see https://en.wikipedia.org/wiki/Data_source_name - * - * @author Oleg Voronkovich - */ -class DSNConfigurator -{ - /** - * Create new PHPMailer instance configured by DSN. - * - * @param string $dsn DSN - * @param bool $exceptions Should we throw external exceptions? - * - * @return PHPMailer - */ - public static function mailer($dsn, $exceptions = null) - { - static $configurator = null; - - if (null === $configurator) { - $configurator = new DSNConfigurator(); - } - - return $configurator->configure(new PHPMailer($exceptions), $dsn); - } - - /** - * Configure PHPMailer instance with DSN string. - * - * @param PHPMailer $mailer PHPMailer instance - * @param string $dsn DSN - * - * @return PHPMailer - */ - public function configure(PHPMailer $mailer, $dsn) - { - $config = $this->parseDSN($dsn); - - $this->applyConfig($mailer, $config); - - return $mailer; - } - - /** - * Parse DSN string. - * - * @param string $dsn DSN - * - * @throws Exception If DSN is malformed - * - * @return array Configuration - */ - private function parseDSN($dsn) - { - $config = $this->parseUrl($dsn); - - if (false === $config || !isset($config['scheme']) || !isset($config['host'])) { - throw new Exception('Malformed DSN'); - } - - if (isset($config['query'])) { - parse_str($config['query'], $config['query']); - } - - return $config; - } - - /** - * Apply configuration to mailer. - * - * @param PHPMailer $mailer PHPMailer instance - * @param array $config Configuration - * - * @throws Exception If scheme is invalid - */ - private function applyConfig(PHPMailer $mailer, $config) - { - switch ($config['scheme']) { - case 'mail': - $mailer->isMail(); - break; - case 'sendmail': - $mailer->isSendmail(); - break; - case 'qmail': - $mailer->isQmail(); - break; - case 'smtp': - case 'smtps': - $mailer->isSMTP(); - $this->configureSMTP($mailer, $config); - break; - default: - throw new Exception( - sprintf( - 'Invalid scheme: "%s". Allowed values: "mail", "sendmail", "qmail", "smtp", "smtps".', - $config['scheme'] - ) - ); - } - - if (isset($config['query'])) { - $this->configureOptions($mailer, $config['query']); - } - } - - /** - * Configure SMTP. - * - * @param PHPMailer $mailer PHPMailer instance - * @param array $config Configuration - */ - private function configureSMTP($mailer, $config) - { - $isSMTPS = 'smtps' === $config['scheme']; - - if ($isSMTPS) { - $mailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; - } - - $mailer->Host = $config['host']; - - if (isset($config['port'])) { - $mailer->Port = $config['port']; - } elseif ($isSMTPS) { - $mailer->Port = SMTP::DEFAULT_SECURE_PORT; - } - - $mailer->SMTPAuth = isset($config['user']) || isset($config['pass']); - - if (isset($config['user'])) { - $mailer->Username = $config['user']; - } - - if (isset($config['pass'])) { - $mailer->Password = $config['pass']; - } - } - - /** - * Configure options. - * - * @param PHPMailer $mailer PHPMailer instance - * @param array $options Options - * - * @throws Exception If option is unknown - */ - private function configureOptions(PHPMailer $mailer, $options) - { - $allowedOptions = get_object_vars($mailer); - - unset($allowedOptions['Mailer']); - unset($allowedOptions['SMTPAuth']); - unset($allowedOptions['Username']); - unset($allowedOptions['Password']); - unset($allowedOptions['Hostname']); - unset($allowedOptions['Port']); - unset($allowedOptions['ErrorInfo']); - - $allowedOptions = \array_keys($allowedOptions); - - foreach ($options as $key => $value) { - if (!in_array($key, $allowedOptions)) { - throw new Exception( - sprintf( - 'Unknown option: "%s". Allowed values: "%s"', - $key, - implode('", "', $allowedOptions) - ) - ); - } - - switch ($key) { - case 'AllowEmpty': - case 'SMTPAutoTLS': - case 'SMTPKeepAlive': - case 'SingleTo': - case 'UseSendmailOptions': - case 'do_verp': - case 'DKIM_copyHeaderFields': - $mailer->$key = (bool) $value; - break; - case 'Priority': - case 'SMTPDebug': - case 'WordWrap': - $mailer->$key = (int) $value; - break; - default: - $mailer->$key = $value; - break; - } - } - } - - /** - * Parse a URL. - * Wrapper for the built-in parse_url function to work around a bug in PHP 5.5. - * - * @param string $url URL - * - * @return array|false - */ - protected function parseUrl($url) - { - if (\PHP_VERSION_ID >= 50600 || false === strpos($url, '?')) { - return parse_url($url); - } - - $chunks = explode('?', $url); - if (is_array($chunks)) { - $result = parse_url($chunks[0]); - if (is_array($result)) { - $result['query'] = $chunks[1]; - } - return $result; - } - - return false; - } -} diff --git a/vendor/phpmailer/phpmailer/src/Exception.php b/vendor/phpmailer/phpmailer/src/Exception.php deleted file mode 100644 index 09c1a2c..0000000 --- a/vendor/phpmailer/phpmailer/src/Exception.php +++ /dev/null @@ -1,40 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2020 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * PHPMailer exception handler. - * - * @author Marcus Bointon - */ -class Exception extends \Exception -{ - /** - * Prettify error message output. - * - * @return string - */ - public function errorMessage() - { - return '' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "
    \n"; - } -} diff --git a/vendor/phpmailer/phpmailer/src/OAuth.php b/vendor/phpmailer/phpmailer/src/OAuth.php deleted file mode 100644 index a7e9588..0000000 --- a/vendor/phpmailer/phpmailer/src/OAuth.php +++ /dev/null @@ -1,139 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2020 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -use League\OAuth2\Client\Grant\RefreshToken; -use League\OAuth2\Client\Provider\AbstractProvider; -use League\OAuth2\Client\Token\AccessToken; - -/** - * OAuth - OAuth2 authentication wrapper class. - * Uses the oauth2-client package from the League of Extraordinary Packages. - * - * @see https://oauth2-client.thephpleague.com - * - * @author Marcus Bointon (Synchro/coolbru) - */ -class OAuth implements OAuthTokenProvider -{ - /** - * An instance of the League OAuth Client Provider. - * - * @var AbstractProvider - */ - protected $provider; - - /** - * The current OAuth access token. - * - * @var AccessToken - */ - protected $oauthToken; - - /** - * The user's email address, usually used as the login ID - * and also the from address when sending email. - * - * @var string - */ - protected $oauthUserEmail = ''; - - /** - * The client secret, generated in the app definition of the service you're connecting to. - * - * @var string - */ - protected $oauthClientSecret = ''; - - /** - * The client ID, generated in the app definition of the service you're connecting to. - * - * @var string - */ - protected $oauthClientId = ''; - - /** - * The refresh token, used to obtain new AccessTokens. - * - * @var string - */ - protected $oauthRefreshToken = ''; - - /** - * OAuth constructor. - * - * @param array $options Associative array containing - * `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements - */ - public function __construct($options) - { - $this->provider = $options['provider']; - $this->oauthUserEmail = $options['userName']; - $this->oauthClientSecret = $options['clientSecret']; - $this->oauthClientId = $options['clientId']; - $this->oauthRefreshToken = $options['refreshToken']; - } - - /** - * Get a new RefreshToken. - * - * @return RefreshToken - */ - protected function getGrant() - { - return new RefreshToken(); - } - - /** - * Get a new AccessToken. - * - * @return AccessToken - */ - protected function getToken() - { - return $this->provider->getAccessToken( - $this->getGrant(), - ['refresh_token' => $this->oauthRefreshToken] - ); - } - - /** - * Generate a base64-encoded OAuth token. - * - * @return string - */ - public function getOauth64() - { - //Get a new token if it's not available or has expired - if (null === $this->oauthToken || $this->oauthToken->hasExpired()) { - $this->oauthToken = $this->getToken(); - } - - return base64_encode( - 'user=' . - $this->oauthUserEmail . - "\001auth=Bearer " . - $this->oauthToken . - "\001\001" - ); - } -} diff --git a/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php b/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php deleted file mode 100644 index cbda1a1..0000000 --- a/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2020 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * OAuthTokenProvider - OAuth2 token provider interface. - * Provides base64 encoded OAuth2 auth strings for SMTP authentication. - * - * @see OAuth - * @see SMTP::authenticate() - * - * @author Peter Scopes (pdscopes) - * @author Marcus Bointon (Synchro/coolbru) - */ -interface OAuthTokenProvider -{ - /** - * Generate a base64-encoded OAuth token ensuring that the access token has not expired. - * The string to be base 64 encoded should be in the form: - * "user=\001auth=Bearer \001\001" - * - * @return string - */ - public function getOauth64(); -} diff --git a/vendor/phpmailer/phpmailer/src/PHPMailer.php b/vendor/phpmailer/phpmailer/src/PHPMailer.php deleted file mode 100644 index 2bb3578..0000000 --- a/vendor/phpmailer/phpmailer/src/PHPMailer.php +++ /dev/null @@ -1,5525 +0,0 @@ - - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2020 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * PHPMailer - PHP email creation and transport class. - * - * @author Marcus Bointon (Synchro/coolbru) - * @author Jim Jagielski (jimjag) - * @author Andy Prevost (codeworxtech) - * @author Brent R. Matzelle (original founder) - */ -class PHPMailer -{ - const CHARSET_ASCII = 'us-ascii'; - const CHARSET_ISO88591 = 'iso-8859-1'; - const CHARSET_UTF8 = 'utf-8'; - - const CONTENT_TYPE_PLAINTEXT = 'text/plain'; - const CONTENT_TYPE_TEXT_CALENDAR = 'text/calendar'; - const CONTENT_TYPE_TEXT_HTML = 'text/html'; - const CONTENT_TYPE_MULTIPART_ALTERNATIVE = 'multipart/alternative'; - const CONTENT_TYPE_MULTIPART_MIXED = 'multipart/mixed'; - const CONTENT_TYPE_MULTIPART_RELATED = 'multipart/related'; - - const ENCODING_7BIT = '7bit'; - const ENCODING_8BIT = '8bit'; - const ENCODING_BASE64 = 'base64'; - const ENCODING_BINARY = 'binary'; - const ENCODING_QUOTED_PRINTABLE = 'quoted-printable'; - - const ENCRYPTION_STARTTLS = 'tls'; - const ENCRYPTION_SMTPS = 'ssl'; - - const ICAL_METHOD_REQUEST = 'REQUEST'; - const ICAL_METHOD_PUBLISH = 'PUBLISH'; - const ICAL_METHOD_REPLY = 'REPLY'; - const ICAL_METHOD_ADD = 'ADD'; - const ICAL_METHOD_CANCEL = 'CANCEL'; - const ICAL_METHOD_REFRESH = 'REFRESH'; - const ICAL_METHOD_COUNTER = 'COUNTER'; - const ICAL_METHOD_DECLINECOUNTER = 'DECLINECOUNTER'; - - /** - * Email priority. - * Options: null (default), 1 = High, 3 = Normal, 5 = low. - * When null, the header is not set at all. - * - * @var int|null - */ - public $Priority; - - /** - * The character set of the message. - * - * @var string - */ - public $CharSet = self::CHARSET_ISO88591; - - /** - * The MIME Content-type of the message. - * - * @var string - */ - public $ContentType = self::CONTENT_TYPE_PLAINTEXT; - - /** - * The message encoding. - * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable". - * - * @var string - */ - public $Encoding = self::ENCODING_8BIT; - - /** - * Holds the most recent mailer error message. - * - * @var string - */ - public $ErrorInfo = ''; - - /** - * The From email address for the message. - * - * @var string - */ - public $From = ''; - - /** - * The From name of the message. - * - * @var string - */ - public $FromName = ''; - - /** - * The envelope sender of the message. - * This will usually be turned into a Return-Path header by the receiver, - * and is the address that bounces will be sent to. - * If not empty, will be passed via `-f` to sendmail or as the 'MAIL FROM' value over SMTP. - * - * @var string - */ - public $Sender = ''; - - /** - * The Subject of the message. - * - * @var string - */ - public $Subject = ''; - - /** - * An HTML or plain text message body. - * If HTML then call isHTML(true). - * - * @var string - */ - public $Body = ''; - - /** - * The plain-text message body. - * This body can be read by mail clients that do not have HTML email - * capability such as mutt & Eudora. - * Clients that can read HTML will view the normal Body. - * - * @var string - */ - public $AltBody = ''; - - /** - * An iCal message part body. - * Only supported in simple alt or alt_inline message types - * To generate iCal event structures, use classes like EasyPeasyICS or iCalcreator. - * - * @see https://kigkonsult.se/iCalcreator/ - * - * @var string - */ - public $Ical = ''; - - /** - * Value-array of "method" in Contenttype header "text/calendar" - * - * @var string[] - */ - protected static $IcalMethods = [ - self::ICAL_METHOD_REQUEST, - self::ICAL_METHOD_PUBLISH, - self::ICAL_METHOD_REPLY, - self::ICAL_METHOD_ADD, - self::ICAL_METHOD_CANCEL, - self::ICAL_METHOD_REFRESH, - self::ICAL_METHOD_COUNTER, - self::ICAL_METHOD_DECLINECOUNTER, - ]; - - /** - * The complete compiled MIME message body. - * - * @var string - */ - protected $MIMEBody = ''; - - /** - * The complete compiled MIME message headers. - * - * @var string - */ - protected $MIMEHeader = ''; - - /** - * Extra headers that createHeader() doesn't fold in. - * - * @var string - */ - protected $mailHeader = ''; - - /** - * Word-wrap the message body to this number of chars. - * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance. - * - * @see static::STD_LINE_LENGTH - * - * @var int - */ - public $WordWrap = 0; - - /** - * Which method to use to send mail. - * Options: "mail", "sendmail", or "smtp". - * - * @var string - */ - public $Mailer = 'mail'; - - /** - * The path to the sendmail program. - * - * @var string - */ - public $Sendmail = '/usr/sbin/sendmail'; - - /** - * Whether mail() uses a fully sendmail-compatible MTA. - * One which supports sendmail's "-oi -f" options. - * - * @var bool - */ - public $UseSendmailOptions = true; - - /** - * The email address that a reading confirmation should be sent to, also known as read receipt. - * - * @var string - */ - public $ConfirmReadingTo = ''; - - /** - * The hostname to use in the Message-ID header and as default HELO string. - * If empty, PHPMailer attempts to find one with, in order, - * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value - * 'localhost.localdomain'. - * - * @see PHPMailer::$Helo - * - * @var string - */ - public $Hostname = ''; - - /** - * An ID to be used in the Message-ID header. - * If empty, a unique id will be generated. - * You can set your own, but it must be in the format "", - * as defined in RFC5322 section 3.6.4 or it will be ignored. - * - * @see https://www.rfc-editor.org/rfc/rfc5322#section-3.6.4 - * - * @var string - */ - public $MessageID = ''; - - /** - * The message Date to be used in the Date header. - * If empty, the current date will be added. - * - * @var string - */ - public $MessageDate = ''; - - /** - * SMTP hosts. - * Either a single hostname or multiple semicolon-delimited hostnames. - * You can also specify a different port - * for each host by using this format: [hostname:port] - * (e.g. "smtp1.example.com:25;smtp2.example.com"). - * You can also specify encryption type, for example: - * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465"). - * Hosts will be tried in order. - * - * @var string - */ - public $Host = 'localhost'; - - /** - * The default SMTP server port. - * - * @var int - */ - public $Port = 25; - - /** - * The SMTP HELO/EHLO name used for the SMTP connection. - * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find - * one with the same method described above for $Hostname. - * - * @see PHPMailer::$Hostname - * - * @var string - */ - public $Helo = ''; - - /** - * What kind of encryption to use on the SMTP connection. - * Options: '', static::ENCRYPTION_STARTTLS, or static::ENCRYPTION_SMTPS. - * - * @var string - */ - public $SMTPSecure = ''; - - /** - * Whether to enable TLS encryption automatically if a server supports it, - * even if `SMTPSecure` is not set to 'tls'. - * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid. - * - * @var bool - */ - public $SMTPAutoTLS = true; - - /** - * Whether to use SMTP authentication. - * Uses the Username and Password properties. - * - * @see PHPMailer::$Username - * @see PHPMailer::$Password - * - * @var bool - */ - public $SMTPAuth = false; - - /** - * Options array passed to stream_context_create when connecting via SMTP. - * - * @var array - */ - public $SMTPOptions = []; - - /** - * SMTP username. - * - * @var string - */ - public $Username = ''; - - /** - * SMTP password. - * - * @var string - */ - public $Password = ''; - - /** - * SMTP authentication type. Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2. - * If not specified, the first one from that list that the server supports will be selected. - * - * @var string - */ - public $AuthType = ''; - - /** - * SMTP SMTPXClient command attributes - * - * @var array - */ - protected $SMTPXClient = []; - - /** - * An implementation of the PHPMailer OAuthTokenProvider interface. - * - * @var OAuthTokenProvider - */ - protected $oauth; - - /** - * The SMTP server timeout in seconds. - * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2. - * - * @var int - */ - public $Timeout = 300; - - /** - * Comma separated list of DSN notifications - * 'NEVER' under no circumstances a DSN must be returned to the sender. - * If you use NEVER all other notifications will be ignored. - * 'SUCCESS' will notify you when your mail has arrived at its destination. - * 'FAILURE' will arrive if an error occurred during delivery. - * 'DELAY' will notify you if there is an unusual delay in delivery, but the actual - * delivery's outcome (success or failure) is not yet decided. - * - * @see https://www.rfc-editor.org/rfc/rfc3461.html#section-4.1 for more information about NOTIFY - */ - public $dsn = ''; - - /** - * SMTP class debug output mode. - * Debug output level. - * Options: - * @see SMTP::DEBUG_OFF: No output - * @see SMTP::DEBUG_CLIENT: Client messages - * @see SMTP::DEBUG_SERVER: Client and server messages - * @see SMTP::DEBUG_CONNECTION: As SERVER plus connection status - * @see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed - * - * @see SMTP::$do_debug - * - * @var int - */ - public $SMTPDebug = 0; - - /** - * How to handle debug output. - * Options: - * * `echo` Output plain-text as-is, appropriate for CLI - * * `html` Output escaped, line breaks converted to `
    `, appropriate for browser output - * * `error_log` Output to error log as configured in php.ini - * By default PHPMailer will use `echo` if run from a `cli` or `cli-server` SAPI, `html` otherwise. - * Alternatively, you can provide a callable expecting two params: a message string and the debug level: - * - * ```php - * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; - * ``` - * - * Alternatively, you can pass in an instance of a PSR-3 compatible logger, though only `debug` - * level output is used: - * - * ```php - * $mail->Debugoutput = new myPsr3Logger; - * ``` - * - * @see SMTP::$Debugoutput - * - * @var string|callable|\Psr\Log\LoggerInterface - */ - public $Debugoutput = 'echo'; - - /** - * Whether to keep the SMTP connection open after each message. - * If this is set to true then the connection will remain open after a send, - * and closing the connection will require an explicit call to smtpClose(). - * It's a good idea to use this if you are sending multiple messages as it reduces overhead. - * See the mailing list example for how to use it. - * - * @var bool - */ - public $SMTPKeepAlive = false; - - /** - * Whether to split multiple to addresses into multiple messages - * or send them all in one message. - * Only supported in `mail` and `sendmail` transports, not in SMTP. - * - * @var bool - * - * @deprecated 6.0.0 PHPMailer isn't a mailing list manager! - */ - public $SingleTo = false; - - /** - * Storage for addresses when SingleTo is enabled. - * - * @var array - */ - protected $SingleToArray = []; - - /** - * Whether to generate VERP addresses on send. - * Only applicable when sending via SMTP. - * - * @see https://en.wikipedia.org/wiki/Variable_envelope_return_path - * @see https://www.postfix.org/VERP_README.html Postfix VERP info - * - * @var bool - */ - public $do_verp = false; - - /** - * Whether to allow sending messages with an empty body. - * - * @var bool - */ - public $AllowEmpty = false; - - /** - * DKIM selector. - * - * @var string - */ - public $DKIM_selector = ''; - - /** - * DKIM Identity. - * Usually the email address used as the source of the email. - * - * @var string - */ - public $DKIM_identity = ''; - - /** - * DKIM passphrase. - * Used if your key is encrypted. - * - * @var string - */ - public $DKIM_passphrase = ''; - - /** - * DKIM signing domain name. - * - * @example 'example.com' - * - * @var string - */ - public $DKIM_domain = ''; - - /** - * DKIM Copy header field values for diagnostic use. - * - * @var bool - */ - public $DKIM_copyHeaderFields = true; - - /** - * DKIM Extra signing headers. - * - * @example ['List-Unsubscribe', 'List-Help'] - * - * @var array - */ - public $DKIM_extraHeaders = []; - - /** - * DKIM private key file path. - * - * @var string - */ - public $DKIM_private = ''; - - /** - * DKIM private key string. - * - * If set, takes precedence over `$DKIM_private`. - * - * @var string - */ - public $DKIM_private_string = ''; - - /** - * Callback Action function name. - * - * The function that handles the result of the send email action. - * It is called out by send() for each email sent. - * - * Value can be any php callable: https://www.php.net/is_callable - * - * Parameters: - * bool $result result of the send action - * array $to email addresses of the recipients - * array $cc cc email addresses - * array $bcc bcc email addresses - * string $subject the subject - * string $body the email body - * string $from email address of sender - * string $extra extra information of possible use - * 'smtp_transaction_id' => last smtp transaction id - * - * @var callable|callable-string - */ - public $action_function = ''; - - /** - * What to put in the X-Mailer header. - * Options: An empty string for PHPMailer default, whitespace/null for none, or a string to use. - * - * @var string|null - */ - public $XMailer = ''; - - /** - * Which validator to use by default when validating email addresses. - * May be a callable to inject your own validator, but there are several built-in validators. - * The default validator uses PHP's FILTER_VALIDATE_EMAIL filter_var option. - * - * If CharSet is UTF8, the validator is left at the default value, - * and you send to addresses that use non-ASCII local parts, then - * PHPMailer automatically changes to the 'eai' validator. - * - * @see PHPMailer::validateAddress() - * - * @var string|callable - */ - public static $validator = 'php'; - - /** - * An instance of the SMTP sender class. - * - * @var SMTP - */ - protected $smtp; - - /** - * The array of 'to' names and addresses. - * - * @var array - */ - protected $to = []; - - /** - * The array of 'cc' names and addresses. - * - * @var array - */ - protected $cc = []; - - /** - * The array of 'bcc' names and addresses. - * - * @var array - */ - protected $bcc = []; - - /** - * The array of reply-to names and addresses. - * - * @var array - */ - protected $ReplyTo = []; - - /** - * An array of all kinds of addresses. - * Includes all of $to, $cc, $bcc. - * - * @see PHPMailer::$to - * @see PHPMailer::$cc - * @see PHPMailer::$bcc - * - * @var array - */ - protected $all_recipients = []; - - /** - * An array of names and addresses queued for validation. - * In send(), valid and non duplicate entries are moved to $all_recipients - * and one of $to, $cc, or $bcc. - * This array is used only for addresses with IDN. - * - * @see PHPMailer::$to - * @see PHPMailer::$cc - * @see PHPMailer::$bcc - * @see PHPMailer::$all_recipients - * - * @var array - */ - protected $RecipientsQueue = []; - - /** - * An array of reply-to names and addresses queued for validation. - * In send(), valid and non duplicate entries are moved to $ReplyTo. - * This array is used only for addresses with IDN. - * - * @see PHPMailer::$ReplyTo - * - * @var array - */ - protected $ReplyToQueue = []; - - /** - * Whether the need for SMTPUTF8 has been detected. Set by - * preSend() if necessary. - * - * @var bool - */ - public $UseSMTPUTF8 = false; - - /** - * The array of attachments. - * - * @var array - */ - protected $attachment = []; - - /** - * The array of custom headers. - * - * @var array - */ - protected $CustomHeader = []; - - /** - * The most recent Message-ID (including angular brackets). - * - * @var string - */ - protected $lastMessageID = ''; - - /** - * The message's MIME type. - * - * @var string - */ - protected $message_type = ''; - - /** - * The array of MIME boundary strings. - * - * @var array - */ - protected $boundary = []; - - /** - * The array of available text strings for the current language. - * - * @var array - */ - protected static $language = []; - - /** - * The number of errors encountered. - * - * @var int - */ - protected $error_count = 0; - - /** - * The S/MIME certificate file path. - * - * @var string - */ - protected $sign_cert_file = ''; - - /** - * The S/MIME key file path. - * - * @var string - */ - protected $sign_key_file = ''; - - /** - * The optional S/MIME extra certificates ("CA Chain") file path. - * - * @var string - */ - protected $sign_extracerts_file = ''; - - /** - * The S/MIME password for the key. - * Used only if the key is encrypted. - * - * @var string - */ - protected $sign_key_pass = ''; - - /** - * Whether to throw exceptions for errors. - * - * @var bool - */ - protected $exceptions = false; - - /** - * Unique ID used for message ID and boundaries. - * - * @var string - */ - protected $uniqueid = ''; - - /** - * The PHPMailer Version number. - * - * @var string - */ - const VERSION = '7.0.2'; - - /** - * Error severity: message only, continue processing. - * - * @var int - */ - const STOP_MESSAGE = 0; - - /** - * Error severity: message, likely ok to continue processing. - * - * @var int - */ - const STOP_CONTINUE = 1; - - /** - * Error severity: message, plus full stop, critical error reached. - * - * @var int - */ - const STOP_CRITICAL = 2; - - /** - * The SMTP standard CRLF line break. - * If you want to change line break format, change static::$LE, not this. - */ - const CRLF = "\r\n"; - - /** - * "Folding White Space" a white space string used for line folding. - */ - const FWS = ' '; - - /** - * SMTP RFC standard line ending; Carriage Return, Line Feed. - * - * @var string - */ - protected static $LE = self::CRLF; - - /** - * The maximum line length supported by mail(). - * - * Background: mail() will sometimes corrupt messages - * with headers longer than 65 chars, see #818. - * - * @var int - */ - const MAIL_MAX_LINE_LENGTH = 63; - - /** - * The maximum line length allowed by RFC 2822 section 2.1.1. - * - * @var int - */ - const MAX_LINE_LENGTH = 998; - - /** - * The lower maximum line length allowed by RFC 2822 section 2.1.1. - * This length does NOT include the line break - * 76 means that lines will be 77 or 78 chars depending on whether - * the line break format is LF or CRLF; both are valid. - * - * @var int - */ - const STD_LINE_LENGTH = 76; - - /** - * Constructor. - * - * @param bool $exceptions Should we throw external exceptions? - */ - public function __construct($exceptions = null) - { - if (null !== $exceptions) { - $this->exceptions = (bool) $exceptions; - } - //Pick an appropriate debug output format automatically - $this->Debugoutput = (strpos(PHP_SAPI, 'cli') !== false ? 'echo' : 'html'); - } - - /** - * Destructor. - */ - public function __destruct() - { - //Close any open SMTP connection nicely - $this->smtpClose(); - } - - /** - * Call mail() in a safe_mode-aware fashion. - * Also, unless sendmail_path points to sendmail (or something that - * claims to be sendmail), don't pass params (not a perfect fix, - * but it will do). - * - * @param string $to To - * @param string $subject Subject - * @param string $body Message Body - * @param string $header Additional Header(s) - * @param string|null $params Params - * - * @return bool - */ - private function mailPassthru($to, $subject, $body, $header, $params) - { - //Check overloading of mail function to avoid double-encoding - // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecatedRemoved - if ((int)ini_get('mbstring.func_overload') & 1) { - $subject = $this->secureHeader($subject); - } else { - $subject = $this->encodeHeader($this->secureHeader($subject)); - } - //Calling mail() with null params breaks - $this->edebug('Sending with mail()'); - $this->edebug('Sendmail path: ' . ini_get('sendmail_path')); - $this->edebug("Envelope sender: {$this->Sender}"); - $this->edebug("To: {$to}"); - $this->edebug("Subject: {$subject}"); - $this->edebug("Headers: {$header}"); - if (!$this->UseSendmailOptions || null === $params) { - $result = @mail($to, $subject, $body, $header); - } else { - $this->edebug("Additional params: {$params}"); - $result = @mail($to, $subject, $body, $header, $params); - } - $this->edebug('Result: ' . ($result ? 'true' : 'false')); - return $result; - } - - /** - * Output debugging info via a user-defined method. - * Only generates output if debug output is enabled. - * - * @see PHPMailer::$Debugoutput - * @see PHPMailer::$SMTPDebug - * - * @param string $str - */ - protected function edebug($str) - { - if ($this->SMTPDebug <= 0) { - return; - } - //Is this a PSR-3 logger? - if ($this->Debugoutput instanceof \Psr\Log\LoggerInterface) { - $this->Debugoutput->debug(rtrim($str, "\r\n")); - - return; - } - //Avoid clash with built-in function names - if (is_callable($this->Debugoutput) && !in_array($this->Debugoutput, ['error_log', 'html', 'echo'])) { - call_user_func($this->Debugoutput, $str, $this->SMTPDebug); - - return; - } - switch ($this->Debugoutput) { - case 'error_log': - //Don't output, just log - /** @noinspection ForgottenDebugOutputInspection */ - error_log($str); - break; - case 'html': - //Cleans up output a bit for a better looking, HTML-safe output - echo htmlentities( - preg_replace('/[\r\n]+/', '', $str), - ENT_QUOTES, - 'UTF-8' - ), "
    \n"; - break; - case 'echo': - default: - //Normalize line breaks - $str = preg_replace('/\r\n|\r/m', "\n", $str); - echo gmdate('Y-m-d H:i:s'), - "\t", - //Trim trailing space - trim( - //Indent for readability, except for trailing break - str_replace( - "\n", - "\n \t ", - trim($str) - ) - ), - "\n"; - } - } - - /** - * Sets message type to HTML or plain. - * - * @param bool $isHtml True for HTML mode - */ - public function isHTML($isHtml = true) - { - if ($isHtml) { - $this->ContentType = static::CONTENT_TYPE_TEXT_HTML; - } else { - $this->ContentType = static::CONTENT_TYPE_PLAINTEXT; - } - } - - /** - * Send messages using SMTP. - */ - public function isSMTP() - { - $this->Mailer = 'smtp'; - } - - /** - * Send messages using PHP's mail() function. - */ - public function isMail() - { - $this->Mailer = 'mail'; - } - - /** - * Extract sendmail path and parse to deal with known parameters. - * - * @param string $sendmailPath The sendmail path as set in php.ini - * - * @return string The sendmail path without the known parameters - */ - private function parseSendmailPath($sendmailPath) - { - $sendmailPath = trim((string)$sendmailPath); - if ($sendmailPath === '') { - return $sendmailPath; - } - - $parts = preg_split('/\s+/', $sendmailPath); - if (empty($parts)) { - return $sendmailPath; - } - - $command = array_shift($parts); - $remainder = []; - - // Parse only -t, -i, -oi and -f parameters. - for ($i = 0; $i < count($parts); ++$i) { - $part = $parts[$i]; - if (preg_match('/^-(i|oi|t)$/', $part, $matches)) { - continue; - } - if (preg_match('/^-f(.*)$/', $part, $matches)) { - $address = $matches[1]; - if ($address === '' && isset($parts[$i + 1]) && strpos($parts[$i + 1], '-') !== 0) { - $address = $parts[++$i]; - } - $this->Sender = $address; - continue; - } - - $remainder[] = $part; - } - - // The params that are not parsed are added back to the command. - if (!empty($remainder)) { - $command .= ' ' . implode(' ', $remainder); - } - - return $command; - } - - /** - * Send messages using $Sendmail. - */ - public function isSendmail() - { - $ini_sendmail_path = ini_get('sendmail_path'); - - if (false === stripos($ini_sendmail_path, 'sendmail')) { - $ini_sendmail_path = '/usr/sbin/sendmail'; - } - $this->Sendmail = $this->parseSendmailPath($ini_sendmail_path); - $this->Mailer = 'sendmail'; - } - - /** - * Send messages using qmail. - */ - public function isQmail() - { - $ini_sendmail_path = ini_get('sendmail_path'); - - if (false === stripos($ini_sendmail_path, 'qmail')) { - $ini_sendmail_path = '/var/qmail/bin/qmail-inject'; - } - $this->Sendmail = $this->parseSendmailPath($ini_sendmail_path); - $this->Mailer = 'qmail'; - } - - /** - * Add a "To" address. - * - * @param string $address The email address to send to - * @param string $name - * - * @throws Exception - * - * @return bool true on success, false if address already used or invalid in some way - */ - public function addAddress($address, $name = '') - { - return $this->addOrEnqueueAnAddress('to', $address, $name); - } - - /** - * Add a "CC" address. - * - * @param string $address The email address to send to - * @param string $name - * - * @throws Exception - * - * @return bool true on success, false if address already used or invalid in some way - */ - public function addCC($address, $name = '') - { - return $this->addOrEnqueueAnAddress('cc', $address, $name); - } - - /** - * Add a "BCC" address. - * - * @param string $address The email address to send to - * @param string $name - * - * @throws Exception - * - * @return bool true on success, false if address already used or invalid in some way - */ - public function addBCC($address, $name = '') - { - return $this->addOrEnqueueAnAddress('bcc', $address, $name); - } - - /** - * Add a "Reply-To" address. - * - * @param string $address The email address to reply to - * @param string $name - * - * @throws Exception - * - * @return bool true on success, false if address already used or invalid in some way - */ - public function addReplyTo($address, $name = '') - { - return $this->addOrEnqueueAnAddress('Reply-To', $address, $name); - } - - /** - * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer - * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still - * be modified after calling this function), addition of such addresses is delayed until send(). - * Addresses that have been added already return false, but do not throw exceptions. - * - * @param string $kind One of 'to', 'cc', 'bcc', or 'Reply-To' - * @param string $address The email address - * @param string $name An optional username associated with the address - * - * @throws Exception - * - * @return bool true on success, false if address already used or invalid in some way - */ - protected function addOrEnqueueAnAddress($kind, $address, $name) - { - $pos = false; - if ($address !== null) { - $address = trim($address); - $pos = strrpos($address, '@'); - } - if (false === $pos) { - //At-sign is missing. - $error_message = sprintf( - '%s (%s): %s', - self::lang('invalid_address'), - $kind, - $address - ); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - if ($name !== null && is_string($name)) { - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - } else { - $name = ''; - } - $params = [$kind, $address, $name]; - //Enqueue addresses with IDN until we know the PHPMailer::$CharSet. - //Domain is assumed to be whatever is after the last @ symbol in the address - if ($this->has8bitChars(substr($address, ++$pos))) { - if (static::idnSupported()) { - if ('Reply-To' !== $kind) { - if (!array_key_exists($address, $this->RecipientsQueue)) { - $this->RecipientsQueue[$address] = $params; - - return true; - } - } elseif (!array_key_exists($address, $this->ReplyToQueue)) { - $this->ReplyToQueue[$address] = $params; - - return true; - } - } - //We have an 8-bit domain, but we are missing the necessary extensions to support it - //Or we are already sending to this address - return false; - } - - //Immediately add standard addresses without IDN. - return call_user_func_array([$this, 'addAnAddress'], $params); - } - - /** - * Set the boundaries to use for delimiting MIME parts. - * If you override this, ensure you set all 3 boundaries to unique values. - * The default boundaries include a "=_" sequence which cannot occur in quoted-printable bodies, - * as suggested by https://www.rfc-editor.org/rfc/rfc2045#section-6.7 - * - * @return void - */ - public function setBoundaries() - { - $this->uniqueid = $this->generateId(); - $this->boundary[1] = 'b1=_' . $this->uniqueid; - $this->boundary[2] = 'b2=_' . $this->uniqueid; - $this->boundary[3] = 'b3=_' . $this->uniqueid; - } - - /** - * Add an address to one of the recipient arrays or to the ReplyTo array. - * Addresses that have been added already return false, but do not throw exceptions. - * - * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' - * @param string $address The email address to send, resp. to reply to - * @param string $name - * - * @throws Exception - * - * @return bool true on success, false if address already used or invalid in some way - */ - protected function addAnAddress($kind, $address, $name = '') - { - if ( - self::$validator === 'php' && - ((bool) preg_match('/[\x80-\xFF]/', $address)) - ) { - //The caller has not altered the validator and is sending to an address - //with UTF-8, so assume that they want UTF-8 support instead of failing - $this->CharSet = self::CHARSET_UTF8; - self::$validator = 'eai'; - } - if (!in_array($kind, ['to', 'cc', 'bcc', 'Reply-To'])) { - $error_message = sprintf( - '%s: %s', - self::lang('Invalid recipient kind'), - $kind - ); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - if (!static::validateAddress($address)) { - $error_message = sprintf( - '%s (%s): %s', - self::lang('invalid_address'), - $kind, - $address - ); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - if ('Reply-To' !== $kind) { - if (!array_key_exists(strtolower($address), $this->all_recipients)) { - $this->{$kind}[] = [$address, $name]; - $this->all_recipients[strtolower($address)] = true; - - return true; - } - } else { - foreach ($this->ReplyTo as $replyTo) { - if (0 === strcasecmp($replyTo[0], $address)) { - return false; - } - } - $this->ReplyTo[] = [$address, $name]; - - return true; - } - return false; - } - - /** - * Parse and validate a string containing one or more RFC822-style comma-separated email addresses - * of the form "display name
    " into an array of name/address pairs. - * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. - * Note that quotes in the name part are removed. - * - * @see https://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation - * - * @param string $addrstr The address list string - * @param null $useimap Unused. Argument has been deprecated in PHPMailer 6.11.0. - * Previously this argument determined whether to use - * the IMAP extension to parse the list and accepted a boolean value. - * @param string $charset The charset to use when decoding the address list string. - * - * @return array - */ - public static function parseAddresses($addrstr, $useimap = null, $charset = self::CHARSET_ISO88591) - { - if ($useimap !== null) { - trigger_error(self::lang('deprecated_argument') . '$useimap', E_USER_DEPRECATED); - } - $addresses = []; - if (function_exists('imap_rfc822_parse_adrlist')) { - //Use this built-in parser if it's available - // phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.imap_rfc822_parse_adrlistRemoved -- wrapped in function_exists() - $list = imap_rfc822_parse_adrlist($addrstr, ''); - // Clear any potential IMAP errors to get rid of notices being thrown at end of script. - // phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.imap_errorsRemoved -- wrapped in function_exists() - imap_errors(); - foreach ($list as $address) { - if ( - '.SYNTAX-ERROR.' !== $address->host && - static::validateAddress($address->mailbox . '@' . $address->host) - ) { - //Decode the name part if it's present and maybe encoded - if ( - property_exists($address, 'personal') - && is_string($address->personal) - && $address->personal !== '' - ) { - $address->personal = static::decodeHeader($address->personal, $charset); - } - - $addresses[] = [ - 'name' => (property_exists($address, 'personal') ? $address->personal : ''), - 'address' => $address->mailbox . '@' . $address->host, - ]; - } - } - } else { - //Use this simpler parser - $addresses = static::parseSimplerAddresses($addrstr, $charset); - } - - return $addresses; - } - - /** - * Parse a string containing one or more RFC822-style comma-separated email addresses - * with the form "display name
    " into an array of name/address pairs. - * Uses a simpler parser that does not require the IMAP extension but doesnt support - * the full RFC822 spec. For full RFC822 support, use the PHP IMAP extension. - * - * @param string $addrstr The address list string - * @param string $charset The charset to use when decoding the address list string. - * - * @return array - */ - protected static function parseSimplerAddresses($addrstr, $charset) - { - // Emit a runtime notice to recommend using the IMAP extension for full RFC822 parsing - trigger_error(self::lang('imap_recommended'), E_USER_NOTICE); - - $addresses = []; - $list = explode(',', $addrstr); - foreach ($list as $address) { - $address = trim($address); - //Is there a separate name part? - if (strpos($address, '<') === false) { - //No separate name, just use the whole thing - if (static::validateAddress($address)) { - $addresses[] = [ - 'name' => '', - 'address' => $address, - ]; - } - } else { - $parsed = static::parseEmailString($address); - $email = $parsed['email']; - if (static::validateAddress($email)) { - $name = static::decodeHeader($parsed['name'], $charset); - $addresses[] = [ - //Remove any surrounding quotes and spaces from the name - 'name' => trim($name, '\'" '), - 'address' => $email, - ]; - } - } - } - - return $addresses; - } - - /** - * Parse a string containing an email address with an optional name - * and divide it into a name and email address. - * - * @param string $input The email with name. - * - * @return array{name: string, email: string} - */ - private static function parseEmailString($input) - { - $input = trim((string)$input); - - if ($input === '') { - return ['name' => '', 'email' => '']; - } - - $pattern = '/^\s*(?:(?:"([^"]*)"|\'([^\']*)\'|([^<]*?))\s*)?<\s*([^>]+)\s*>\s*$/'; - if (preg_match($pattern, $input, $matches)) { - $name = ''; - // Double quotes including special scenarios. - if (isset($matches[1]) && $matches[1] !== '') { - $name = $matches[1]; - // Single quotes including special scenarios. - } elseif (isset($matches[2]) && $matches[2] !== '') { - $name = $matches[2]; - // Simplest scenario, name and email are in the format "Name ". - } elseif (isset($matches[3])) { - $name = trim($matches[3]); - } - - return ['name' => $name, 'email' => trim($matches[4])]; - } - - return ['name' => '', 'email' => $input]; - } - - /** - * Set the From and FromName properties. - * - * @param string $address - * @param string $name - * @param bool $auto Whether to also set the Sender address, defaults to true - * - * @throws Exception - * - * @return bool - */ - public function setFrom($address, $name = '', $auto = true) - { - if (is_null($name)) { - //Helps avoid a deprecation warning in the preg_replace() below - $name = ''; - } - $address = trim((string)$address); - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - //Don't validate now addresses with IDN. Will be done in send(). - $pos = strrpos($address, '@'); - if ( - (false === $pos) - || ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported()) - && !static::validateAddress($address)) - ) { - $error_message = sprintf( - '%s (From): %s', - self::lang('invalid_address'), - $address - ); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - $this->From = $address; - $this->FromName = $name; - if ($auto && empty($this->Sender)) { - $this->Sender = $address; - } - - return true; - } - - /** - * Return the Message-ID header of the last email. - * Technically this is the value from the last time the headers were created, - * but it's also the message ID of the last sent message except in - * pathological cases. - * - * @return string - */ - public function getLastMessageID() - { - return $this->lastMessageID; - } - - /** - * Check that a string looks like an email address. - * Validation patterns supported: - * * `auto` Pick best pattern automatically; - * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0; - * * `pcre` Use old PCRE implementation; - * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; - * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. - * * `eai` Use a pattern similar to the HTML5 spec for 'email' and to firefox, extended to support EAI (RFC6530). - * * `noregex` Don't use a regex: super fast, really dumb. - * Alternatively you may pass in a callable to inject your own validator, for example: - * - * ```php - * PHPMailer::validateAddress('user@example.com', function($address) { - * return (strpos($address, '@') !== false); - * }); - * ``` - * - * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator. - * - * @param string $address The email address to check - * @param string|callable $patternselect Which pattern to use - * - * @return bool - */ - public static function validateAddress($address, $patternselect = null) - { - if (null === $patternselect) { - $patternselect = static::$validator; - } - //Don't allow strings as callables, see SECURITY.md and CVE-2021-3603 - if (is_callable($patternselect) && !is_string($patternselect)) { - return call_user_func($patternselect, $address); - } - //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 - if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) { - return false; - } - switch ($patternselect) { - case 'pcre': //Kept for BC - case 'pcre8': - /* - * A more complex and more permissive version of the RFC5322 regex on which FILTER_VALIDATE_EMAIL - * is based. - * In addition to the addresses allowed by filter_var, also permits: - * * dotless domains: `a@b` - * * comments: `1234 @ local(blah) .machine .example` - * * quoted elements: `'"test blah"@example.org'` - * * numeric TLDs: `a@b.123` - * * unbracketed IPv4 literals: `a@192.168.0.1` - * * IPv6 literals: 'first.last@[IPv6:a1::]' - * Not all of these will necessarily work for sending! - * - * @copyright 2009-2010 Michael Rushton - * Feel free to use and redistribute this code. But please keep this copyright notice. - */ - return (bool) preg_match( - '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' . - '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' . - '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' . - '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' . - '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' . - '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' . - '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' . - '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' . - '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', - $address - ); - case 'html5': - /* - * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. - * - * @see https://html.spec.whatwg.org/#e-mail-state-(type=email) - */ - return (bool) preg_match( - '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . - '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD', - $address - ); - case 'eai': - /* - * This is the pattern used in the HTML5 spec for validation of 'email' type - * form input elements (as above), modified to accept Unicode email addresses. - * This is also more lenient than Firefox' html5 spec, in order to make the regex faster. - * 'eai' is an acronym for Email Address Internationalization. - * This validator is selected automatically if you attempt to use recipient addresses - * that contain Unicode characters in the local part. - * - * @see https://html.spec.whatwg.org/#e-mail-state-(type=email) - * @see https://en.wikipedia.org/wiki/International_email - */ - return (bool) preg_match( - '/^[-\p{L}\p{N}\p{M}.!#$%&\'*+\/=?^_`{|}~]+@[\p{L}\p{N}\p{M}](?:[\p{L}\p{N}\p{M}-]{0,61}' . - '[\p{L}\p{N}\p{M}])?(?:\.[\p{L}\p{N}\p{M}]' . - '(?:[-\p{L}\p{N}\p{M}]{0,61}[\p{L}\p{N}\p{M}])?)*$/usD', - $address - ); - case 'php': - default: - return filter_var($address, FILTER_VALIDATE_EMAIL) !== false; - } - } - - /** - * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the - * `intl` and `mbstring` PHP extensions. - * - * @return bool `true` if required functions for IDN support are present - */ - public static function idnSupported() - { - return function_exists('idn_to_ascii') && function_exists('mb_convert_encoding'); - } - - /** - * Converts IDN in given email address to its ASCII form, also known as punycode, if possible. - * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet. - * This function silently returns unmodified address if: - * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form) - * - Conversion to punycode is impossible (e.g. required PHP functions are not available) - * or fails for any reason (e.g. domain contains characters not allowed in an IDN). - * - * @see PHPMailer::$CharSet - * - * @param string $address The email address to convert - * - * @return string The encoded address in ASCII form - */ - public function punyencodeAddress($address) - { - //Verify we have required functions, CharSet, and at-sign. - $pos = strrpos($address, '@'); - if ( - !empty($this->CharSet) && - false !== $pos && - static::idnSupported() - ) { - $domain = substr($address, ++$pos); - //Verify CharSet string is a valid one, and domain properly encoded in this CharSet. - if ($this->has8bitChars($domain) && @mb_check_encoding($domain, $this->CharSet)) { - //Convert the domain from whatever charset it's in to UTF-8 - $domain = mb_convert_encoding($domain, self::CHARSET_UTF8, $this->CharSet); - //Ignore IDE complaints about this line - method signature changed in PHP 5.4 - $errorcode = 0; - if (defined('INTL_IDNA_VARIANT_UTS46')) { - //Use the current punycode standard (appeared in PHP 7.2) - $punycode = idn_to_ascii( - $domain, - \IDNA_DEFAULT | \IDNA_USE_STD3_RULES | \IDNA_CHECK_BIDI | - \IDNA_CHECK_CONTEXTJ | \IDNA_NONTRANSITIONAL_TO_ASCII, - \INTL_IDNA_VARIANT_UTS46 - ); - } elseif (defined('INTL_IDNA_VARIANT_2003')) { - //Fall back to this old, deprecated/removed encoding - // phpcs:ignore PHPCompatibility.Constants.RemovedConstants.intl_idna_variant_2003DeprecatedRemoved - $punycode = idn_to_ascii($domain, $errorcode, \INTL_IDNA_VARIANT_2003); - } else { - //Fall back to a default we don't know about - // phpcs:ignore PHPCompatibility.ParameterValues.NewIDNVariantDefault.NotSet - $punycode = idn_to_ascii($domain, $errorcode); - } - if (false !== $punycode) { - return substr($address, 0, $pos) . $punycode; - } - } - } - - return $address; - } - - /** - * Create a message and send it. - * Uses the sending method specified by $Mailer. - * - * @throws Exception - * - * @return bool false on error - See the ErrorInfo property for details of the error - */ - public function send() - { - try { - if (!$this->preSend()) { - return false; - } - - return $this->postSend(); - } catch (Exception $exc) { - $this->mailHeader = ''; - $this->setError($exc->getMessage()); - if ($this->exceptions) { - throw $exc; - } - - return false; - } - } - - /** - * Prepare a message for sending. - * - * @throws Exception - * - * @return bool - */ - public function preSend() - { - if ( - 'smtp' === $this->Mailer - || ('mail' === $this->Mailer && (\PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0)) - ) { - //SMTP mandates RFC-compliant line endings - //and it's also used with mail() on Windows - static::setLE(self::CRLF); - } else { - //Maintain backward compatibility with legacy Linux command line mailers - static::setLE(PHP_EOL); - } - //Check for buggy PHP versions that add a header with an incorrect line break - if ( - 'mail' === $this->Mailer - && ((\PHP_VERSION_ID >= 70000 && \PHP_VERSION_ID < 70017) - || (\PHP_VERSION_ID >= 70100 && \PHP_VERSION_ID < 70103)) - && ini_get('mail.add_x_header') === '1' - && stripos(PHP_OS, 'WIN') === 0 - ) { - trigger_error(self::lang('buggy_php'), E_USER_WARNING); - } - - try { - $this->error_count = 0; //Reset errors - $this->mailHeader = ''; - - //The code below tries to support full use of Unicode, - //while remaining compatible with legacy SMTP servers to - //the greatest degree possible: If the message uses - //Unicode in the local parts of any addresses, it is sent - //using SMTPUTF8. If not, it it sent using - //punycode-encoded domains and plain SMTP. - if ( - static::CHARSET_UTF8 === strtolower($this->CharSet) && - ($this->anyAddressHasUnicodeLocalPart($this->RecipientsQueue) || - $this->anyAddressHasUnicodeLocalPart(array_keys($this->all_recipients)) || - $this->anyAddressHasUnicodeLocalPart($this->ReplyToQueue) || - $this->addressHasUnicodeLocalPart($this->From)) - ) { - $this->UseSMTPUTF8 = true; - } - //Dequeue recipient and Reply-To addresses with IDN - foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { - if (!$this->UseSMTPUTF8) { - $params[1] = $this->punyencodeAddress($params[1]); - } - call_user_func_array([$this, 'addAnAddress'], $params); - } - if (count($this->to) + count($this->cc) + count($this->bcc) < 1) { - throw new Exception(self::lang('provide_address'), self::STOP_CRITICAL); - } - - //Validate From, Sender, and ConfirmReadingTo addresses - foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) { - if ($this->{$address_kind} === null) { - $this->{$address_kind} = ''; - continue; - } - $this->{$address_kind} = trim($this->{$address_kind}); - if (empty($this->{$address_kind})) { - continue; - } - $this->{$address_kind} = $this->punyencodeAddress($this->{$address_kind}); - if (!static::validateAddress($this->{$address_kind})) { - $error_message = sprintf( - '%s (%s): %s', - self::lang('invalid_address'), - $address_kind, - $this->{$address_kind} - ); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - } - - //Set whether the message is multipart/alternative - if ($this->alternativeExists()) { - $this->ContentType = static::CONTENT_TYPE_MULTIPART_ALTERNATIVE; - } - - $this->setMessageType(); - //Refuse to send an empty message unless we are specifically allowing it - if (!$this->AllowEmpty && empty($this->Body)) { - throw new Exception(self::lang('empty_message'), self::STOP_CRITICAL); - } - - //Trim subject consistently - $this->Subject = trim($this->Subject); - //Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) - $this->MIMEHeader = ''; - $this->MIMEBody = $this->createBody(); - //createBody may have added some headers, so retain them - $tempheaders = $this->MIMEHeader; - $this->MIMEHeader = $this->createHeader(); - $this->MIMEHeader .= $tempheaders; - - //To capture the complete message when using mail(), create - //an extra header list which createHeader() doesn't fold in - if ('mail' === $this->Mailer) { - if (count($this->to) > 0) { - $this->mailHeader .= $this->addrAppend('To', $this->to); - } else { - $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;'); - } - $this->mailHeader .= $this->headerLine( - 'Subject', - $this->encodeHeader($this->secureHeader($this->Subject)) - ); - } - - //Sign with DKIM if enabled - if ( - !empty($this->DKIM_domain) - && !empty($this->DKIM_selector) - && (!empty($this->DKIM_private_string) - || (!empty($this->DKIM_private) - && static::isPermittedPath($this->DKIM_private) - && file_exists($this->DKIM_private) - ) - ) - ) { - $header_dkim = $this->DKIM_Add( - $this->MIMEHeader . $this->mailHeader, - $this->encodeHeader($this->secureHeader($this->Subject)), - $this->MIMEBody - ); - $this->MIMEHeader = static::stripTrailingWSP($this->MIMEHeader) . static::$LE . - static::normalizeBreaks($header_dkim) . static::$LE; - } - - return true; - } catch (Exception $exc) { - $this->setError($exc->getMessage()); - if ($this->exceptions) { - throw $exc; - } - - return false; - } - } - - /** - * Actually send a message via the selected mechanism. - * - * @throws Exception - * - * @return bool - */ - public function postSend() - { - try { - //Choose the mailer and send through it - switch ($this->Mailer) { - case 'sendmail': - case 'qmail': - return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody); - case 'smtp': - return $this->smtpSend($this->MIMEHeader, $this->MIMEBody); - case 'mail': - return $this->mailSend($this->MIMEHeader, $this->MIMEBody); - default: - $sendMethod = $this->Mailer . 'Send'; - if (method_exists($this, $sendMethod)) { - return $this->{$sendMethod}($this->MIMEHeader, $this->MIMEBody); - } - - return $this->mailSend($this->MIMEHeader, $this->MIMEBody); - } - } catch (Exception $exc) { - $this->setError($exc->getMessage()); - $this->edebug($exc->getMessage()); - if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true && $this->smtp->connected()) { - $this->smtp->reset(); - } - if ($this->exceptions) { - throw $exc; - } - } - - return false; - } - - /** - * Send mail using the $Sendmail program. - * - * @see PHPMailer::$Sendmail - * - * @param string $header The message headers - * @param string $body The message body - * - * @throws Exception - * - * @return bool - */ - protected function sendmailSend($header, $body) - { - if ($this->Mailer === 'qmail') { - $this->edebug('Sending with qmail'); - } else { - $this->edebug('Sending with sendmail'); - } - $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; - //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver - //A space after `-f` is optional, but there is a long history of its presence - //causing problems, so we don't use one - //Exim docs: https://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html - //Sendmail docs: https://www.sendmail.org/~ca/email/man/sendmail.html - //Example problem: https://www.drupal.org/node/1057954 - - //PHP 5.6 workaround - $sendmail_from_value = ini_get('sendmail_from'); - if (empty($this->Sender) && !empty($sendmail_from_value)) { - //PHP config has a sender address we can use - $this->Sender = ini_get('sendmail_from'); - } - - $sendmailArgs = []; - - // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. - // Also don't add the -f automatically unless it has been set either via Sender - // or sendmail_path. Otherwise it can introduce new problems. - // @see http://github.com/PHPMailer/PHPMailer/issues/2298 - if (!empty($this->Sender) && static::validateAddress($this->Sender) && self::isShellSafe($this->Sender)) { - $sendmailArgs[] = '-f' . $this->Sender; - } - - // Qmail doesn't accept all the sendmail parameters - // @see https://github.com/PHPMailer/PHPMailer/issues/3189 - if ($this->Mailer !== 'qmail') { - $sendmailArgs[] = '-i'; - $sendmailArgs[] = '-t'; - } - - $resultArgs = (empty($sendmailArgs) ? '' : ' ' . implode(' ', $sendmailArgs)); - - $sendmail = trim(escapeshellcmd($this->Sendmail) . $resultArgs); - $this->edebug('Sendmail path: ' . $this->Sendmail); - $this->edebug('Sendmail command: ' . $sendmail); - $this->edebug('Envelope sender: ' . $this->Sender); - $this->edebug("Headers: {$header}"); - - if ($this->SingleTo) { - foreach ($this->SingleToArray as $toAddr) { - $mail = @popen($sendmail, 'w'); - if (!$mail) { - throw new Exception(self::lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - $this->edebug("To: {$toAddr}"); - fwrite($mail, 'To: ' . $toAddr . "\n"); - fwrite($mail, $header); - fwrite($mail, $body); - $result = pclose($mail); - $addrinfo = static::parseAddresses($toAddr, null, $this->CharSet); - foreach ($addrinfo as $addr) { - $this->doCallback( - ($result === 0), - [[$addr['address'], $addr['name']]], - $this->cc, - $this->bcc, - $this->Subject, - $body, - $this->From, - [] - ); - } - $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); - if (0 !== $result) { - throw new Exception(self::lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - } - } else { - $mail = @popen($sendmail, 'w'); - if (!$mail) { - throw new Exception(self::lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - fwrite($mail, $header); - fwrite($mail, $body); - $result = pclose($mail); - $this->doCallback( - ($result === 0), - $this->to, - $this->cc, - $this->bcc, - $this->Subject, - $body, - $this->From, - [] - ); - $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); - if (0 !== $result) { - throw new Exception(self::lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - } - - return true; - } - - /** - * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters. - * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows. - * - * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report - * - * @param string $string The string to be validated - * - * @return bool - */ - protected static function isShellSafe($string) - { - //It's not possible to use shell commands safely (which includes the mail() function) without escapeshellarg, - //but some hosting providers disable it, creating a security problem that we don't want to have to deal with, - //so we don't. - if (!function_exists('escapeshellarg') || !function_exists('escapeshellcmd')) { - return false; - } - - if ( - escapeshellcmd($string) !== $string - || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""]) - ) { - return false; - } - - $length = strlen($string); - - for ($i = 0; $i < $length; ++$i) { - $c = $string[$i]; - - //All other characters have a special meaning in at least one common shell, including = and +. - //Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. - //Note that this does permit non-Latin alphanumeric characters based on the current locale. - if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { - return false; - } - } - - return true; - } - - /** - * Check whether a file path is of a permitted type. - * Used to reject URLs and phar files from functions that access local file paths, - * such as addAttachment. - * - * @param string $path A relative or absolute path to a file - * - * @return bool - */ - protected static function isPermittedPath($path) - { - //Matches scheme definition from https://www.rfc-editor.org/rfc/rfc3986#section-3.1 - return !preg_match('#^[a-z][a-z\d+.-]*://#i', $path); - } - - /** - * Check whether a file path is safe, accessible, and readable. - * - * @param string $path A relative or absolute path to a file - * - * @return bool - */ - protected static function fileIsAccessible($path) - { - if (!static::isPermittedPath($path)) { - return false; - } - $readable = is_file($path); - //If not a UNC path (expected to start with \\), check read permission, see #2069 - if (strpos($path, '\\\\') !== 0) { - $readable = $readable && is_readable($path); - } - return $readable; - } - - /** - * Send mail using the PHP mail() function. - * - * @see https://www.php.net/manual/en/book.mail.php - * - * @param string $header The message headers - * @param string $body The message body - * - * @throws Exception - * - * @return bool - */ - protected function mailSend($header, $body) - { - $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; - - $toArr = []; - foreach ($this->to as $toaddr) { - $toArr[] = $this->addrFormat($toaddr); - } - $to = trim(implode(', ', $toArr)); - - //If there are no To-addresses (e.g. when sending only to BCC-addresses) - //the following should be added to get a correct DKIM-signature. - //Compare with $this->preSend() - if ($to === '') { - $to = 'undisclosed-recipients:;'; - } - - $params = null; - //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver - //A space after `-f` is optional, but there is a long history of its presence - //causing problems, so we don't use one - //Exim docs: https://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html - //Sendmail docs: https://www.sendmail.org/~ca/email/man/sendmail.html - //Example problem: https://www.drupal.org/node/1057954 - //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. - - //PHP 5.6 workaround - $sendmail_from_value = ini_get('sendmail_from'); - if (empty($this->Sender) && !empty($sendmail_from_value)) { - //PHP config has a sender address we can use - $this->Sender = ini_get('sendmail_from'); - } - if (!empty($this->Sender) && static::validateAddress($this->Sender)) { - $phpmailer_path = ini_get('sendmail_path'); - if (self::isShellSafe($this->Sender) && strpos($phpmailer_path, ' -f') === false) { - $params = sprintf('-f%s', $this->Sender); - } - $old_from = ini_get('sendmail_from'); - ini_set('sendmail_from', $this->Sender); - } - $result = false; - if ($this->SingleTo && count($toArr) > 1) { - foreach ($toArr as $toAddr) { - $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); - $addrinfo = static::parseAddresses($toAddr, null, $this->CharSet); - foreach ($addrinfo as $addr) { - $this->doCallback( - $result, - [[$addr['address'], $addr['name']]], - $this->cc, - $this->bcc, - $this->Subject, - $body, - $this->From, - [] - ); - } - } - } else { - $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); - $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From, []); - } - if (isset($old_from)) { - ini_set('sendmail_from', $old_from); - } - if (!$result) { - throw new Exception(self::lang('instantiate'), self::STOP_CRITICAL); - } - - return true; - } - - /** - * Get an instance to use for SMTP operations. - * Override this function to load your own SMTP implementation, - * or set one with setSMTPInstance. - * - * @return SMTP - */ - public function getSMTPInstance() - { - if (!is_object($this->smtp)) { - $this->smtp = new SMTP(); - } - - return $this->smtp; - } - - /** - * Provide an instance to use for SMTP operations. - * - * @return SMTP - */ - public function setSMTPInstance(SMTP $smtp) - { - $this->smtp = $smtp; - - return $this->smtp; - } - - /** - * Provide SMTP XCLIENT attributes - * - * @param string $name Attribute name - * @param ?string $value Attribute value - * - * @return bool - */ - public function setSMTPXclientAttribute($name, $value) - { - if (!in_array($name, SMTP::$xclient_allowed_attributes)) { - return false; - } - if (isset($this->SMTPXClient[$name]) && $value === null) { - unset($this->SMTPXClient[$name]); - } elseif ($value !== null) { - $this->SMTPXClient[$name] = $value; - } - - return true; - } - - /** - * Get SMTP XCLIENT attributes - * - * @return array - */ - public function getSMTPXclientAttributes() - { - return $this->SMTPXClient; - } - - /** - * Send mail via SMTP. - * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. - * - * @see PHPMailer::setSMTPInstance() to use a different class. - * - * @uses \PHPMailer\PHPMailer\SMTP - * - * @param string $header The message headers - * @param string $body The message body - * - * @throws Exception - * - * @return bool - */ - protected function smtpSend($header, $body) - { - $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; - $bad_rcpt = []; - if (!$this->smtpConnect($this->SMTPOptions)) { - throw new Exception(self::lang('smtp_connect_failed'), self::STOP_CRITICAL); - } - //If we have recipient addresses that need Unicode support, - //but the server doesn't support it, stop here - if ($this->UseSMTPUTF8 && !$this->smtp->getServerExt('SMTPUTF8')) { - throw new Exception(self::lang('no_smtputf8'), self::STOP_CRITICAL); - } - //Sender already validated in preSend() - if ('' === $this->Sender) { - $smtp_from = $this->From; - } else { - $smtp_from = $this->Sender; - } - if (count($this->SMTPXClient)) { - $this->smtp->xclient($this->SMTPXClient); - } - if (!$this->smtp->mail($smtp_from)) { - $this->setError(self::lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError())); - throw new Exception($this->ErrorInfo, self::STOP_CRITICAL); - } - - $callbacks = []; - //Attempt to send to all recipients - foreach ([$this->to, $this->cc, $this->bcc] as $togroup) { - foreach ($togroup as $to) { - if (!$this->smtp->recipient($to[0], $this->dsn)) { - $error = $this->smtp->getError(); - $bad_rcpt[] = ['to' => $to[0], 'error' => $error['detail']]; - $isSent = false; - } else { - $isSent = true; - } - - $callbacks[] = ['issent' => $isSent, 'to' => $to[0], 'name' => $to[1]]; - } - } - - //Only send the DATA command if we have viable recipients - if ((count($this->all_recipients) > count($bad_rcpt)) && !$this->smtp->data($header . $body)) { - throw new Exception(self::lang('data_not_accepted'), self::STOP_CRITICAL); - } - - $smtp_transaction_id = $this->smtp->getLastTransactionID(); - - if ($this->SMTPKeepAlive) { - $this->smtp->reset(); - } else { - $this->smtp->quit(); - $this->smtp->close(); - } - - foreach ($callbacks as $cb) { - $this->doCallback( - $cb['issent'], - [[$cb['to'], $cb['name']]], - [], - [], - $this->Subject, - $body, - $this->From, - ['smtp_transaction_id' => $smtp_transaction_id] - ); - } - - //Create error message for any bad addresses - if (count($bad_rcpt) > 0) { - $errstr = ''; - foreach ($bad_rcpt as $bad) { - $errstr .= $bad['to'] . ': ' . $bad['error']; - } - throw new Exception(self::lang('recipients_failed') . $errstr, self::STOP_CONTINUE); - } - - return true; - } - - /** - * Initiate a connection to an SMTP server. - * Returns false if the operation failed. - * - * @param array $options An array of options compatible with stream_context_create() - * - * @throws Exception - * - * @uses \PHPMailer\PHPMailer\SMTP - * - * @return bool - */ - public function smtpConnect($options = null) - { - if (null === $this->smtp) { - $this->smtp = $this->getSMTPInstance(); - } - - //If no options are provided, use whatever is set in the instance - if (null === $options) { - $options = $this->SMTPOptions; - } - - //Already connected? - if ($this->smtp->connected()) { - return true; - } - - $this->smtp->setTimeout($this->Timeout); - $this->smtp->setDebugLevel($this->SMTPDebug); - $this->smtp->setDebugOutput($this->Debugoutput); - $this->smtp->setVerp($this->do_verp); - $this->smtp->setSMTPUTF8($this->UseSMTPUTF8); - if ($this->Host === null) { - $this->Host = 'localhost'; - } - $hosts = explode(';', $this->Host); - $lastexception = null; - - foreach ($hosts as $hostentry) { - $hostinfo = []; - if ( - !preg_match( - '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/', - trim($hostentry), - $hostinfo - ) - ) { - $this->edebug(self::lang('invalid_hostentry') . ' ' . trim($hostentry)); - //Not a valid host entry - continue; - } - //$hostinfo[1]: optional ssl or tls prefix - //$hostinfo[2]: the hostname - //$hostinfo[3]: optional port number - //The host string prefix can temporarily override the current setting for SMTPSecure - //If it's not specified, the default value is used - - //Check the host name is a valid name or IP address before trying to use it - if (!static::isValidHost($hostinfo[2])) { - $this->edebug(self::lang('invalid_host') . ' ' . $hostinfo[2]); - continue; - } - $prefix = ''; - $secure = $this->SMTPSecure; - $tls = (static::ENCRYPTION_STARTTLS === $this->SMTPSecure); - if ('ssl' === $hostinfo[1] || ('' === $hostinfo[1] && static::ENCRYPTION_SMTPS === $this->SMTPSecure)) { - $prefix = 'ssl://'; - $tls = false; //Can't have SSL and TLS at the same time - $secure = static::ENCRYPTION_SMTPS; - } elseif ('tls' === $hostinfo[1]) { - $tls = true; - //TLS doesn't use a prefix - $secure = static::ENCRYPTION_STARTTLS; - } - //Do we need the OpenSSL extension? - $sslext = defined('OPENSSL_ALGO_SHA256'); - if (static::ENCRYPTION_STARTTLS === $secure || static::ENCRYPTION_SMTPS === $secure) { - //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled - if (!$sslext) { - throw new Exception(self::lang('extension_missing') . 'openssl', self::STOP_CRITICAL); - } - } - $host = $hostinfo[2]; - $port = $this->Port; - if ( - array_key_exists(3, $hostinfo) && - is_numeric($hostinfo[3]) && - $hostinfo[3] > 0 && - $hostinfo[3] < 65536 - ) { - $port = (int) $hostinfo[3]; - } - if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { - try { - if ($this->Helo) { - $hello = $this->Helo; - } else { - $hello = $this->serverHostname(); - } - $this->smtp->hello($hello); - //Automatically enable TLS encryption if: - //* it's not disabled - //* we are not connecting to localhost - //* we have openssl extension - //* we are not already using SSL - //* the server offers STARTTLS - if ( - $this->SMTPAutoTLS && - $this->Host !== 'localhost' && - $sslext && - $secure !== 'ssl' && - $this->smtp->getServerExt('STARTTLS') - ) { - $tls = true; - } - if ($tls) { - if (!$this->smtp->startTLS()) { - $message = $this->getSmtpErrorMessage('connect_host'); - throw new Exception($message); - } - //We must resend EHLO after TLS negotiation - $this->smtp->hello($hello); - } - if ( - $this->SMTPAuth && !$this->smtp->authenticate( - $this->Username, - $this->Password, - $this->AuthType, - $this->oauth - ) - ) { - throw new Exception(self::lang('authenticate')); - } - - return true; - } catch (Exception $exc) { - $lastexception = $exc; - $this->edebug($exc->getMessage()); - //We must have connected, but then failed TLS or Auth, so close connection nicely - $this->smtp->quit(); - } - } - } - //If we get here, all connection attempts have failed, so close connection hard - $this->smtp->close(); - //As we've caught all exceptions, just report whatever the last one was - if ($this->exceptions && null !== $lastexception) { - throw $lastexception; - } - if ($this->exceptions) { - // no exception was thrown, likely $this->smtp->connect() failed - $message = $this->getSmtpErrorMessage('connect_host'); - throw new Exception($message); - } - - return false; - } - - /** - * Close the active SMTP session if one exists. - */ - public function smtpClose() - { - if ((null !== $this->smtp) && $this->smtp->connected()) { - $this->smtp->quit(); - $this->smtp->close(); - } - } - - /** - * Set the language for error messages. - * The default language is English. - * - * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr") - * Optionally, the language code can be enhanced with a 4-character - * script annotation and/or a 2-character country annotation. - * @param string $lang_path Path to the language file directory, with trailing separator (slash) - * Do not set this from user input! - * - * @return bool Returns true if the requested language was loaded, false otherwise. - */ - public static function setLanguage($langcode = 'en', $lang_path = '') - { - //Backwards compatibility for renamed language codes - $renamed_langcodes = [ - 'br' => 'pt_br', - 'cz' => 'cs', - 'dk' => 'da', - 'no' => 'nb', - 'se' => 'sv', - 'rs' => 'sr', - 'tg' => 'tl', - 'am' => 'hy', - ]; - - if (array_key_exists($langcode, $renamed_langcodes)) { - $langcode = $renamed_langcodes[$langcode]; - } - - //Define full set of translatable strings in English - $PHPMAILER_LANG = [ - 'authenticate' => 'SMTP Error: Could not authenticate.', - 'buggy_php' => 'Your version of PHP is affected by a bug that may result in corrupted messages.' . - ' To fix it, switch to sending using SMTP, disable the mail.add_x_header option in' . - ' your php.ini, switch to MacOS or Linux, or upgrade your PHP to version 7.0.17+ or 7.1.3+.', - 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', - 'data_not_accepted' => 'SMTP Error: data not accepted.', - 'empty_message' => 'Message body empty', - 'encoding' => 'Unknown encoding: ', - 'execute' => 'Could not execute: ', - 'extension_missing' => 'Extension missing: ', - 'file_access' => 'Could not access file: ', - 'file_open' => 'File Error: Could not open file: ', - 'from_failed' => 'The following From address failed: ', - 'instantiate' => 'Could not instantiate mail function.', - 'invalid_address' => 'Invalid address: ', - 'invalid_header' => 'Invalid header name or value', - 'invalid_hostentry' => 'Invalid hostentry: ', - 'invalid_host' => 'Invalid host: ', - 'mailer_not_supported' => ' mailer is not supported.', - 'provide_address' => 'You must provide at least one recipient email address.', - 'recipients_failed' => 'SMTP Error: The following recipients failed: ', - 'signing' => 'Signing Error: ', - 'smtp_code' => 'SMTP code: ', - 'smtp_code_ex' => 'Additional SMTP info: ', - 'smtp_connect_failed' => 'SMTP connect() failed.', - 'smtp_detail' => 'Detail: ', - 'smtp_error' => 'SMTP server error: ', - 'variable_set' => 'Cannot set or reset variable: ', - 'no_smtputf8' => 'Server does not support SMTPUTF8 needed to send to Unicode addresses', - 'imap_recommended' => 'Using simplified address parser is not recommended. ' . - 'Install the PHP IMAP extension for full RFC822 parsing.', - 'deprecated_argument' => 'Deprecated Argument: ', - ]; - if (empty($lang_path)) { - //Calculate an absolute path so it can work if CWD is not here - $lang_path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'language' . DIRECTORY_SEPARATOR; - } - - //Validate $langcode - $foundlang = true; - $langcode = strtolower($langcode); - if ( - !preg_match('/^(?P[a-z]{2})(?P