<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\RequestStack;
use mysqli;
use App\Entity\Baskets;
use App\Entity\Masterdata;
use App\Form\BasketsType;
use App\Form\CaptchaType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Gregwar\Captcha\CaptchaBuilder;
use App\Service;
class FunctionController extends AbstractController
{
/**
* @Route("/function", name="function")
*/
public function index(): Response
{
return $this->render('function/index.html.twig', [
'controller_name' => 'FunctionController',
]);
}
public function getHeader()
{
$mysqli = new mysqli("localhost", "root", "", "netweddfront");
require_once($_SERVER['DOCUMENT_ROOT'] . '/Diocese/admin/sanitize.php');
$_SESSION['locale'] = 'fr_FR';
$language = (isset($_GET['language'])) ? sanitize_paranoid_string($mysqli,$_GET['language']) : $_SESSION['locale'];
$_SESSION['locale'] = $language;
if (strpos($_SERVER["HTTP_USER_AGENT"], "Safari")
&& !strpos($_SERVER["HTTP_USER_AGENT"], "Chrome")) {
if (count($_COOKIE) === 0) {
echo "<script>
top.location = 'http://www.pourvotremariage.net/scripts/setSession.php';
</script>";
exit(); // need to be there in order not to load the rest of the page
}
}
}
public function getAllXML ()
{
$xmls = array();
$url =$_SERVER["DOCUMENT_ROOT"] . '/baskets.xml';
$xml = simplexml_load_file($url, 'SimpleXMLElement');
// $url =$_SERVER["DOCUMENT_ROOT"] . '/Projetdiocese/public/baskets.xml';
// $xml = simplexml_load_file($url, 'SimpleXMLElement');
$url2 =$_SERVER["DOCUMENT_ROOT"] . '/Diocese/scripts/masterdata.xml';
$xml2 = simplexml_load_file($url2, 'SimpleXMLElement');
$url3 =$_SERVER["DOCUMENT_ROOT"] . '/Diocese/scripts/arbredecision.xml';
$xml3 = simplexml_load_file($url3, 'SimpleXMLElement');
$url4 =$_SERVER["DOCUMENT_ROOT"] . '/Diocese/scripts/arbredecisioncopy.xml';
$xml4 = simplexml_load_file($url4, 'SimpleXMLElement');
$xmls[] = $xml;
$xmls[] = $xml2;
$xmls[] = $xml3;
$xmls[] = $xml4;
return $xmls;
}
public function search_Basket($unXml,$unIdSession)
{
$leslectures = array();
// Recherche du panier selon l'id session
foreach($unXml->baskets->Basket as $lePanier){
if($lePanier->phpsessid == $unIdSession){
$leslectures[] = $lePanier->element;
}
}
return $leslectures;
}
public function searchOne($numType,$xmlmasterdata,$language,$code)
{
$laLecture = array();
foreach($xmlmasterdata->masterdata->Ecrits as $lesEcrits)
{
if($lesEcrits->type == $numType && $lesEcrits->language == $language && $lesEcrits->code == $code){
if (!in_array($lesEcrits,$laLecture)){
$laLecture[] = $lesEcrits;
}
}
}
return $laLecture;
}
public function search_All_Readings($unXml,$uneLangue)
{
$masterdata = array();
foreach($unXml->masterdata->Ecrits as $desEcrits){
if($desEcrits->type > 2000 and $desEcrits->type < 3000 and $desEcrits->language=$uneLangue){
$masterdata[]=$desEcrits;
}
}
return $masterdata;
}
public function search_All_Prayers($unXml,$uneLangue)
{
$masterdata = array();
foreach($unXml->masterdata->Ecrits as $desEcrits){
if($desEcrits->type > 3000 and $desEcrits->type < 4000 and $desEcrits->language=$uneLangue){
$masterdata[]=$desEcrits;
}
}
return $masterdata;
}
public function getPartie($unXml)
{
foreach ($unXml as $collection){
switch ($collection->type) {
case 2100:
$collection->typeStr = "PROPHETS";
$collection->typeTrd = "Ancien Testament";
break;
case 2200:
$collection->typeStr = "PSALM";
$collection->typeTrd = "Psaumes";
break;
case 2300:
$collection->typeStr = "APOSTLES";
$collection->typeTrd = "Nouveau Testament";
break;
case 2500:
$collection->typeStr = "GOSPEL";
$collection->typeTrd = "Evangiles";
break;
case 3100:
$collection->typeStr = "CREED";
$collection->typeTrd = "Profession de Foi";
break;
case 3200:
$collection->typeStr = "DIALOGUE";
$collection->typeTrd = "Dialogue initial";
break;
case 3310:
$collection->typeStr = "VOWS";
$collection->typeTrd = "Echange des consentements";
break;
case 3500:
$collection->typeStr = "BLESSING";
$collection->typeTrd = "Bénédiction nuptiale";
break;
case 3700:
$collection->typeStr = "INTERCESSIONS";
$collection->typeTrd = "Prière universelle";
break;
}
}
}
public function msgChoixL($masterdata,$arbredecisioncopy)
{
$message = "";
$dossier = array();
foreach ($masterdata as $collection) {
$dossier[] = $collection->typeStr;
}
$typesPanier = array();
if(count($dossier)>0){
for ($i=0; $i < count($dossier); $i++) {
foreach ($arbredecisioncopy->Lecture->{$dossier[$i]} as $Choix) {
$typesPanier[] = $Choix;
}
}
}
$dom = dom_import_simplexml($arbredecisioncopy->Choix);
$countfc = 0;
$countcd = 0;
foreach ($dossier as $leslectures) {
for ($i=0; $i < count($leslectures) ; $i++) {
if($arbredecisioncopy->Lecture->{$leslectures[$i]}->Contrainte == "Facultatif"){
$countfc +=1;
}
if($arbredecisioncopy->Lecture->{$leslectures[$i]}->Contrainte == "Condition" && in_array(strval($arbredecisioncopy->Lecture->{$leslectures[$i]}->Contrainte->Condition),$dossier)){
$countcd +=1;
}
}
}
// Vérifier les types de lecture en double
$doublons = array();
$double = 0;
for ($i=0; $i < count($dossier) ; $i++) {
if($i==count($dossier)-1){
// var_dump($dossier[$i],$doublons);
if(in_array(strval($dossier[$i]),$doublons)){
$doublons[] = $dossier[$i];
$double +=1;
}
}
else {
if(in_array($dossier[$i],$doublons)){
$double +=1;
}
$doublons[] = $dossier[$i];
}
}
if (count($dossier)<4) {
// Vérifier les lectures facultatives
if(count($dossier)==3 && $countfc >=1 && $countcd == 0){
if(!str_contains($message,$arbredecisioncopy->Complet3)){
$message = $arbredecisioncopy->Complet3;
}
}
elseif(count($dossier)==3 && $countfc <1 && $countcd >=1){
if(!str_contains($message,$arbredecisioncopy->Complet3L)){
$message = $arbredecisioncopy->Complet3L;
}
}
elseif(count($dossier)==3 && $countfc <1 && $countcd <1){
if(!str_contains($message,$arbredecisioncopy->Complet3)){
$message = $arbredecisioncopy->Complet3;
}
}
elseif(count($dossier)==3 && $countfc <1 && $countcd >=1){
if(!str_contains($message,$arbredecisioncopy->Complet3)){
$message = $arbredecisioncopy->Complet3;
}
}
elseif(count($dossier)==3 && $countfc <1 && $countcd ==0){
if(!str_contains($message,$arbredecisioncopy->Complet3)){
$message = $arbredecisioncopy->Complet3;
}
}
elseif(!str_contains($message,$dom->childNodes->item(0)->nodeName)){
$message .= $dom->childNodes->item(0)->nodeValue;
}
}
// || count($dossier)==3 && $countfc <1 && $countcd <1
for ($i=1; $i < count($dom->childNodes) ; $i++) {
if(!in_array($dom->childNodes->item($i)->nodeName,$typesPanier)){
// if(!(count($dossier)==3 && $countfc >=1 && $countcd == 0 )){
// $message .= $dom->childNodes->item($i)->nodeValue;
// }
$message .= $dom->childNodes->item($i)->nodeValue;
}
else{
if (count($dossier)>4 || $double>=1) {
if(!str_contains($message,$arbredecisioncopy->Surplus)){
$message = $arbredecisioncopy->Surplus;
}
}
elseif(count($dossier)==4){
if(!str_contains($message,$arbredecisioncopy->Complet)){
$message = $arbredecisioncopy->Complet;
}
}
}
}
return $message;
}
public function msgChoixP($masterdata,$arbredecisioncopy)
{
$message = "";
$dossier = array();
foreach ($masterdata as $collection) {
$dossier[] = $collection->typeStr;
}
$typesPanier = array();
if(count($dossier)>0){
for ($i=0; $i < count($dossier); $i++) {
foreach ($arbredecisioncopy->Prière->{$dossier[$i]} as $Choix) {
$typesPanier[] = $Choix;
}
}
}
$dom = dom_import_simplexml($arbredecisioncopy->Choix2);
$countfc = 0;
foreach ($dossier as $lesPrières) {
for ($i=0; $i < count($lesPrières) ; $i++) {
if($arbredecisioncopy->Prière->{$lesPrières[$i]}->Contrainte == "Facultatif"){
$countfc +=1;
}
}
}
if (count($dossier)<5) {
if(!str_contains($message,$dom->childNodes->item(0)->nodeName)){
$message .= $dom->childNodes->item(0)->nodeValue;
}
}
for ($i=1; $i < count($dom->childNodes) ; $i++) {
if(!in_array($dom->childNodes->item($i)->nodeName,$typesPanier)){
$message .= $dom->childNodes->item($i)->nodeValue;
}
else{
if(count($dossier)==5){
if(!str_contains($message,$arbredecisioncopy->CompletP)){
$message = $arbredecisioncopy->CompletP;
}
}
elseif (count($dossier)>=5) {
if(!str_contains($message,$arbredecisioncopy->SurplusP)){
$message = $arbredecisioncopy->SurplusP;
}
}
}
}
return $message;
}
public function create_Basket($sessId,$xmlmasterdata,$xmlbaskets,$code)
{
$id = 0;
$basket = new Baskets();
$basket-> setPhpsessid($sessId);
foreach($xmlmasterdata->masterdata->Ecrits as $lesEcrits){
if($lesEcrits->code == $code){
$id = $lesEcrits->id;
break;
}
}
// Récupérer le type d'Ecrit
$typeEcrit = 0;
foreach($xmlmasterdata->masterdata->Ecrits as $lesEcrits){
if($lesEcrits->code == $code){
$typeEcrit = $lesEcrits->type;
break;
}
}
$basket->setElement(intval($id));
$basket->setCreated(date_create("now"));
$newbasket = $xmlbaskets->baskets->addChild('Basket');
$newbasket->addChild("phpsessid",strval($basket->getPhpsessid()));
$newbasket->addChild("element",strval($basket->getElement()));
$newbasket->addChild("created",date_format($basket->getCreated(), 'Y-m-d H:i:s'));
$xmlbaskets->saveXML('baskets.xml');
return $typeEcrit;
}
public function delete_Basket($sessId,$xmlmasterdata,$xmlbaskets,$code)
{
$id = 0;
$basket = new Baskets();
$basket-> setPhpsessid($sessId);
foreach($xmlmasterdata->masterdata->Ecrits as $lesEcrits){
if($lesEcrits->code == $code){
$id = $lesEcrits->id;
break;
}
}
// Récupérer le type d'Ecrit
$typeEcrit = 0;
foreach($xmlmasterdata->masterdata->Ecrits as $lesEcrits){
if($lesEcrits->code == $code){
$typeEcrit = $lesEcrits->type;
break;
}
}
// Supprime le panier
foreach($xmlbaskets->baskets->Basket as $lePanier){
if($lePanier->phpsessid == $sessId && $lePanier->element == intval($id)){
$dom = dom_import_simplexml($lePanier);
$dom->parentNode->removeChild($dom);
$xmlbaskets->saveXML('baskets.xml');
}
}
return $typeEcrit;
}
public function searchByType($numType,$xmlmasterdata,$language,$code)
{
$leslectures = array();
foreach($xmlmasterdata->masterdata->Ecrits as $lesEcrits)
{
if($lesEcrits->type == $numType && $lesEcrits->language == $language){
if (!in_array($lesEcrits,$leslectures)){
$leslectures[] = $lesEcrits;
}
}
}
return $leslectures;
}
public function createBooklet($opening,$masterdata,$masterdata2)
{
$texte ="";
foreach ($masterdata as $lesEcrits) {
$texte .= "<strong>$lesEcrits->name</strong>";
$texte .= "<br>";
$texte .= "Lectures du ";
$texte .= $lesEcrits->book;
$texte .= "<br>";
$texte .= $lesEcrits->chapters;
$texte .= "<br>";
$texte .= $lesEcrits->print;
}
foreach ($masterdata2 as $lesEcrits) {
$texte .= "<strong>$lesEcrits->name</strong>";
$texte .= "<br>";
$texte .= $lesEcrits->book;
$texte .= "<br>";
$texte .= $lesEcrits->screen;
}
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();
$section->addText(
$opening . $texte
);
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');
$date = date_create("now");
$date = date_format($date, 'Ymd-His');
$objWriter->save("$date.doc");
chmod("$date.doc",0755);
return "$date.doc";
}
}