src/Controller/HoroscopeController.php line 37
<?phpnamespace App\Controller;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\Routing\Annotation\Route;use Doctrine\Persistence\ManagerRegistry;use Psr\Log\LoggerInterface;use App\Entity\AppHoroscope\Quotidien;use App\Entity\AppHoroscope\Hebdomadaire;use App\Entity\AppHoroscope\Mensuel;use App\Services\ControlParams;class HoroscopeController extends AbstractController{private $control;private $doctrine;private $logger;public function __construct(ManagerRegistry $doctrine, LoggerInterface $logger, string $appEnv){$this->doctrine = $doctrine;$this->logger = $logger;$this->control = new ControlParams($doctrine, $logger, $appEnv);}/*** @Route("/horoscope/horoscopeMensuel", name="horoscope_Menusel" , methods={"POST"})*/public function horoscopeMensuel(Request $request): Response{$data = array();$tableViePrive = array();$tableTravail = array();$tableForme = array();// === +++ Controle +++ ===$params = $this->control->getParams($request);$resApiKey = $this->control->apiKey();if ($resApiKey['responseCode']!=200) return $this->json($resApiKey, $resApiKey['responseCode']);// === +++ +++ ===$now = date("n"); // Mois$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");$de = array("","de ","de ","de ","d'","de ","de ","de ","d'","de ","d'","de ","de ");$num = date("n");$datefr = $de[$num]. strtolower($mois[$num])." ".date("Y");$data["date"] = "Mois " . $datefr;// verfier l'origine du site et lecture table config$cle = 0;// "host": "www.horoscope-site.com",// "referringpage": "doux-presages.cabinet-voyance.fr"$repos = $this->doctrine->getManager('horoscope')->getRepository(Mensuel::class);$listArray = $repos->findBy([], ['id' => 'ASC']);foreach ($listArray as $val) {$tableViePrive[] = $val->getViePrive();$tableTravail[] = $val->getTravail();$tableForme[] = $val->getForme();}$tabLen = count($tableViePrive);if ($tabLen>0) {// recupere les n derniers éléments du tableaux (en fonction du décalage $cle)$tabEnd1 = array_slice ($tableViePrive, $tabLen-$cle, $cle);$tabEnd2 = array_slice ($tableTravail, $tabLen-$cle, $cle);$tabEnd3 = array_slice ($tableForme, $tabLen-$cle, $cle);// récupère les M-n premiers éléments du tableau$tabDeb1 = array_slice ($tableViePrive, 0, $tabLen-$cle);$tabDeb2 = array_slice ($tableTravail, 0, $tabLen-$cle);$tabDeb3 = array_slice ($tableForme, 0, $tabLen-$cle);$tableViePrive = array_merge($tabEnd1,$tabDeb1);$tableTravail = array_merge($tabEnd2,$tabDeb2);$tableForme = array_merge($tabEnd3,$tabDeb3);// position dans l'annonce, jour modulo nb annonces en fonction du zodiac$bloc = $tabLen /12;$pos = $now % $bloc;$decalage = (int)($now / $bloc);if ($pos<=0) $pos = ($tabLen /12);$deb = ($pos-1) * 12 + $decalage;$fin = $deb + 12;$depassement = 0;if ($fin>$tabLen) {$depassement = $fin - $tabLen;$fin = $tabLen;}for ($k=$deb; $k<$fin; $k++) {$data["vie_prive"][] = $tableViePrive[$k];$data["travail"][] = $tableTravail[$k];$data["forme"][] = $tableForme[$k];}if ($depassement) {for ($k=0; $k<$depassement; $k++) {$data["vie_prive"][] = $tableViePrive[$k];$data["travail"][] = $tableTravail[$k];$data["forme"][] = $tableForme[$k];}}}return $this->json($data);}/*** @Route("/horoscope/horoscopeHebdomadaire", name="horoscope_Hebdo" , methods={"POST"})*/public function horoscopeHebdomadaire(Request $request): Response{$data = array();$tableViePrive = array();$tableTravail = array();$tableForme = array();// === +++ Controle +++ ===$params = $this->control->getParams($request);$resApiKey = $this->control->apiKey();if ($resApiKey['responseCode']!=200) return $this->json($resApiKey, $resApiKey['responseCode']);// === +++ +++ ===$now = date("W"); // Numéro de semaine$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");$num_day = date('w');$premier_jour = mktime(0,0,0, date("n"),date("d")-(!$num_day?7:$num_day)+1,date("Y"));$datefr = $jour[date("w",$premier_jour)]." ".date("d", $premier_jour)." ".$mois[date("n", $premier_jour)]." ".date("Y", $premier_jour);$datefr = strtolower($datefr);$data["date"] = "Semaine du " . $datefr;// verfier l'origine du site et lecture table config$cle = 0;$repos = $this->doctrine->getManager('horoscope')->getRepository(Hebdomadaire::class);$listArray = $repos->findBy([], ['id' => 'ASC']);foreach ($listArray as $val) {$tableViePrive[] = $val->getViePrive();$tableTravail[] = $val->getTravail();$tableForme[] = $val->getForme();}$tabLen = count($tableViePrive);if ($tabLen>0) {// recupere les n derniers éléments du tableaux (en fonction du décalage $cle)$tabEnd1 = array_slice ($tableViePrive, $tabLen-$cle, $cle);$tabEnd2 = array_slice ($tableTravail, $tabLen-$cle, $cle);$tabEnd3 = array_slice ($tableForme, $tabLen-$cle, $cle);// récupère les M-n premiers éléments du tableau$tabDeb1 = array_slice ($tableViePrive, 0, $tabLen-$cle);$tabDeb2 = array_slice ($tableTravail, 0, $tabLen-$cle);$tabDeb3 = array_slice ($tableForme, 0, $tabLen-$cle);$tableViePrive = array_merge($tabEnd1,$tabDeb1);$tableTravail = array_merge($tabEnd2,$tabDeb2);$tableForme = array_merge($tabEnd3,$tabDeb3);// position dans l'annonce, jour modulo nb annonces en fonction du zodiac$bloc = $tabLen /12;$pos = $now % $bloc;$decalage = (int)($now / $bloc);if ($pos<=0) $pos = ($tabLen /12);$deb = ($pos-1) * 12 + $decalage;$fin = $deb + 12;$depassement = 0;if ($fin>$tabLen) {$depassement = $fin - $tabLen;$fin = $tabLen;}for ($k=$deb; $k<$fin; $k++) {$data["vie_prive"][] = $tableViePrive[$k];$data["travail"][] = $tableTravail[$k];$data["forme"][] = $tableForme[$k];}if ($depassement) {for ($k=0; $k<$depassement; $k++) {$data["vie_prive"][] = $tableViePrive[$k];$data["travail"][] = $tableTravail[$k];$data["forme"][] = $tableForme[$k];}}}return $this->json($data);}/*** @Route("/horoscope/horoscopeJour", name="horoscope_jour" , methods={"POST"})*/public function horoscopeJour(Request $request): Response{$data = array();$tableViePrive = array();// === +++ Controle +++ ===$params = $this->control->getParams($request);$resApiKey = $this->control->apiKey();if ($resApiKey['responseCode']!=200) return $this->json($resApiKey, $resApiKey['responseCode']);// === +++ +++ ===$now = date("z"); // Jour de l'année$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");$data["date"] = $jour[date("w")]." ".date("d")." ". strtolower($mois[date("n")]) ." ".date("Y");// verfier l'origine du site et lecture table config$cle = 0;$repos = $this->doctrine->getManager('horoscope')->getRepository(Quotidien::class);$listArray = $repos->findBy([], ['id' => 'ASC']);foreach ($listArray as $val) {$tableViePrive[] = $val->getViePrive();}$tabLen = count($tableViePrive);if ($tabLen>0) {// recupere les n derniers éléments du tableaux (en fonction du décalage $cle)$tabEnd = array_slice ($tableViePrive, $tabLen-$cle, $cle);// récupère les M-n premiers éléments du tableau$tabDeb = array_slice ($tableViePrive, 0, $tabLen-$cle);$tableViePrive = array_merge($tabEnd,$tabDeb);// position dans l'annonce, jour modulo nb annonces en fonction du zodiac$bloc = $tabLen /12;$pos = $now % $bloc;$decalage = (int)($now / $bloc);if ($pos<=0) $pos = ($tabLen /12);$deb = ($pos-1) * 12 + $decalage;$fin = $deb + 12;$depassement = 0;if ($fin>$tabLen) {$depassement = $fin - $tabLen;$fin = $tabLen;}for ($k=$deb; $k<$fin; $k++) {$data["vie_prive"][] = $tableViePrive[$k];}if ($depassement) {for ($k=0; $k<$depassement; $k++) {$data["vie_prive"][] = $tableViePrive[$k];}}}return $this->json($data);}}