<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\Persistence\ManagerRegistry;
use App\Service\YouscribeApi;
use App\Entity\Categorie;
use App\Entity\Projet;
use App\Entity\Theme;
use App\Entity\Tag;
use App\Entity\Subscriber;
use App\Service\DoceboApi;
use App\Entity\Client;
use App\Entity\ClientProduit;
use App\Entity\Groupe;
use App\Entity\Rubrique;
use Symfony\Component\HttpFoundation\Request;
use Knp\Component\Pager\PaginatorInterface;
use Proxies\__CG__\App\Entity\Categorie as EntityCategorie;
class DefaultController extends AbstractController
{
/**
* @Route("/client/{idc}/projet/{id}/test", name="default_test")
*/
public function indextest(ManagerRegistry $doctrine, Request $request, $id, $idc): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$title = "home";
$entityManager = $doctrine->getManager();
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$client = $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$rubriquesInfos = $projet->getRubriques();
$rubriques = [];
foreach ($rubriquesInfos as $rubrique) {
$clientProduits = $entityManager->getRepository(ClientProduit::class)->findBy(array('projet' => $projet), array('orderRubrique' => 'ASC'));
foreach ($clientProduits as $clientP) {
array_push($rubriques, $clientP->getRubrique());
}
}
$rubriques = array_unique($rubriques, SORT_REGULAR);
$idUser = $request->query->get('user_id');
if ($idUser) {
try {
$subscriber = $this->inscription($doctrine, $idUser, $client);
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
dd($tokenUser);
$Lastbooks = $ysapi->getLastRead($token, $subscriber->getLogin());
$ids = [];
foreach ($Lastbooks as $key => $value) {
array_push($ids, $value->ProductId);
}
$books = $ysapi->getCatalogByIds($token, $ids);
$lastRead = $this->filterExcludedProducts($books->Products);
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
$lastRead = null;
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
$lastRead = null;
}
return $this->render('default/index.html.twig', [
'title' => $title,
'categories' => $categories,
'client' => $client,
'projet' => $projet,
'rubriques' => $rubriques,
'subsriber' => $subscriber,
'tokenUser' => $tokenUser,
'idUser' => $idUser,
'lastRead' => $lastRead
]);
}
/**
* @Route("/client/{idc}/projet/{id}", name="default")
*/
public function index(ManagerRegistry $doctrine, Request $request, $id, $idc): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$title = "home";
$entityManager = $doctrine->getManager();
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$client = $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$publicRubriques = $entityManager->getRepository(Rubrique::class)->findBy(array('typeRub' => 1));
$rubriques = [];
$clientProduits = $entityManager->getRepository(ClientProduit::class)->findBy(array('projet' => $projet), array('orderRubrique' => 'ASC'));
foreach ($clientProduits as $clientP) {
array_push($rubriques, $clientP->getRubrique());
}
$rubriques = array_unique($rubriques, SORT_REGULAR);
$idUser = $request->query->get('user_id');
if ($idUser) {
try {
$subscriber = $this->inscription($doctrine, $idUser, $client);
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
$Lastbooks = $ysapi->getLastRead($token, $subscriber->getLogin());
$ids = [];
foreach ($Lastbooks as $key => $value) {
array_push($ids, $value->ProductId);
}
$books = $ysapi->getCatalogByIds($token, $ids);
$lastRead = $this->filterExcludedProducts($books->Products);
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
$lastRead = null;
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
$lastRead = null;
}
return $this->render('default/index.html.twig', [
'title' => $title,
'categories' => $categories,
'client' => $client,
'projet' => $projet,
'rubriques' => $rubriques,
'publicRubriques' => $publicRubriques,
'subsriber' => $subscriber,
'tokenUser' => $tokenUser,
'idUser' => $idUser,
'lastRead' => $lastRead
]);
}
/**
* @Route("/client/{idc}/projet/{id}/groupe/{idGr}", name="default_groupe")
*/
public function index4(ManagerRegistry $doctrine, Request $request, $id, $idc, $idGr): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$title = "home";
$entityManager = $doctrine->getManager();
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$client = $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$groupe = $entityManager->getRepository(Groupe::class)->findOneBy(['client' => $client, 'projet' => $projet, 'id' => $idGr]);
$rubriques = [];
$rubriquesIds = $groupe->getRubriques();
foreach ($rubriquesIds as $idR) {
$rubriqueInfos = $entityManager->getRepository(Rubrique::class)->findOneBy(['id' => $idR]);
array_push($rubriques, $rubriqueInfos);
}
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$idUser = $request->query->get('user_id');
if ($idUser) {
try {
$subscriber = $this->inscription($doctrine, $idUser, $client);
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
return $this->render('default/groupe.html.twig', [
'title' => $title,
'categories' => $categories,
'client' => $client,
'projet' => $projet,
'rubriques' => $rubriques,
'subsriber' => $subscriber,
'tokenUser' => $tokenUser,
'idUser' => $idUser
]);
}
/**
* @Route("/client/{idc}/projet/{id}/groupedetail/{idGr}", name="default_groupe_detail")
*/
public function index7(ManagerRegistry $doctrine, Request $request, $id, $idc, $idGr): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$title = "home";
$entityManager = $doctrine->getManager();
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$client = $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$groupe = $entityManager->getRepository(Groupe::class)->findOneBy(['client' => $client, 'projet' => $projet, 'id' => $idGr]);
$rubriques = [];
$rubriquesIds = $groupe->getRubriques();
foreach ($rubriquesIds as $idR) {
$rubriqueInfos = $entityManager->getRepository(Rubrique::class)->findOneBy(['id' => $idR]);
array_push($rubriques, $rubriqueInfos);
}
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$idUser = $request->query->get('user_id');
if ($idUser) {
try {
$subscriber = $this->inscription($doctrine, $idUser, $client);
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
return $this->render('default/groupe2.html.twig', [
'title' => $title,
'categories' => $categories,
'client' => $client,
'projet' => $projet,
'rubriques' => $rubriques,
'subsriber' => $subscriber,
'tokenUser' => $tokenUser,
'idUser' => $idUser,
'groupe' => $groupe
]);
}
/**
* @Route("/client/{idc}/projet/{id}/{idUser}", name="default_index")
*/
public function index2(ManagerRegistry $doctrine, Request $request, $id, $idc, $idUser = 0): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$title = "home";
$entityManager = $doctrine->getManager();
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$client = $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$rubriquesInfos = $projet->getRubriques();
$rubriques = [];
foreach ($rubriquesInfos as $rubrique) {
$clientProduits = $entityManager->getRepository(ClientProduit::class)->findBy(array('projet' => $projet), array('orderRubrique' => 'ASC'));
foreach ($clientProduits as $clientP) {
array_push($rubriques, $clientP->getRubrique());
}
// array_push($rubriques,)
}
$rubriques = array_unique($rubriques, SORT_REGULAR);
if ($idUser != null) {
$subscriber = $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
try {
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
return $this->render('default/index.html.twig', [
'title' => $title,
'categories' => $categories,
'client' => $client,
'projet' => $projet,
'rubriques' => $rubriques,
'subsriber' => $subscriber,
'tokenUser' => $tokenUser,
'idUser' => $idUser
]);
}
/**
* @Route("/client/{idc}/projet/{id}/rubrique/{idr}", name="show_default_rubrique")
*/
public function index1(ManagerRegistry $doctrine, Request $request, $id, $idc, $idr): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$title = "home";
$entityManager = $doctrine->getManager();
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$client = $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$rubrique = $entityManager->getRepository(Rubrique::class)->findOneBy(array('id' => $idr));
$clientProduits = $entityManager->getRepository(ClientProduit::class)->findBy(array('rubrique' => $rubrique, 'projet' => $projet, 'client' => $client), array('orderProduit' => 'ASC'));
$produits = [];
foreach ($clientProduits as $clientP) {
array_push($produits, $clientP->getProduit());
}
$data = [
'name' => $rubrique->getName(),
'description' => $rubrique->getDescription(),
'produits' => $produits
];
$title = $rubrique->getName();
$idUser = $request->query->get('user_id');
if ($idUser) {
try {
$subscriber = $this->inscription($doctrine, $idUser, $client);
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
return $this->render('default/index_rubrique.html.twig', [
'title' => $title,
'client' => $client,
'projet' => $projet,
'clientsProduits' => (object) $data,
'rubrique' => $rubrique,
'subsriber' => $subscriber,
'tokenUser' => $tokenUser,
'idUser' => $idUser
]);
}
/**
* @Route("/client/{idc}/projet/{id}/{idcat}/{idUser}", name="default_categorie_show")
*/
public function show(ManagerRegistry $doctrine, Request $request, $id, $idcat, $idUser = 0): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$entityManager = $doctrine->getManager();
if ($idUser != null) {
$subscriber = $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
try {
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$categorie = $entityManager->getRepository(Categorie::class)->findOneBy(array('id' => $idcat));
$title = $categorie->getName();
$themesIDs = $categorie->getThemes();
$themes = [];
foreach ($themesIDs as $themeID) {
$theme = $entityManager->getRepository(Theme::class)->findOneBy(array('id' => $themeID));
$products = $ysapi->getCatalog($token, $skip = 0, $taked = 16, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme(), $quicksearch = "");
$products = $ysapi->getCatalogProducts($token, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
// Filter out only specific product IDs for category ID 8
$filteredProducts = $this->filterExcludedProducts($products->Products);
if ($idcat == 8) {
// Specific owner IDs to exclude (Le Figaro publications)
$excludedOwnerIds = [2217027, 11077282, 2217028, 18184663];
$filteredProducts = array_filter($products->Products, function ($product) use ($excludedOwnerIds) {
$ownerId = isset($product->OwnerId) ? $product->OwnerId : 0;
// Filter based on owner IDs
return !in_array($ownerId, $excludedOwnerIds);
});
// Re-index array after filtering
$filteredProducts = array_values($filteredProducts);
}
array_push($themes, [
'id' => $theme->getId(),
'label' => $theme->getLabel(),
'idYouscribeTheme' => $theme->getIdYouscribeTheme(),
'products' => $filteredProducts,
'totalProducts' => count($filteredProducts),
]);
}
return $this->render('default/index.html.twig', [
'title' => $title,
'categories' => $categories,
'projet' => $projet,
'themes' => $themes,
'categorie' => $categorie,
'tokenUser' => $tokenUser,
'idUser' => $idUser
]);
}
/**
* @Route("/client/{idc}/projet/{id}/{idcat}/{idUser}/{idTh}", name="default_categorie_show_tag")
*/
public function showtag(ManagerRegistry $doctrine, $id, $idcat, $idTh, $idUser = 0, PaginatorInterface $paginatorInterface, Request $request): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$entityManager = $doctrine->getManager();
if ($idUser != 0) {
$subscriber = $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
try {
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$categorie = $entityManager->getRepository(Categorie::class)->findOneBy(array('id' => $idcat));
$title = $categorie->getName();
$theme = $entityManager->getRepository(Theme::class)->findOneBy(array('id' => $idTh));
$tagsInfos = $theme->getTags();
$tags = [];
$produits = [];
$countProducts = 0;
$products = $ysapi->getCatalogProducts($token, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
$countProducts = $products->TotalResults;
foreach ($tagsInfos as $tag) {
$productsTags = $ysapi->getCatalog($token, 0, $countProducts, $categorie->getIdYouscribe(), $tag->getIdYouscribeTag());
array_push($tags, [
'id' => $tag->getId(),
'label' => $tag->getLabel(),
'idYouscribeTheme' => $tag->getIdYouscribeTag(),
]);
foreach ($productsTags->Products as $prd) {
array_push($produits, $prd);
}
$produits = $this->filterExcludedProducts($produits);
}
if (count($tagsInfos) > 0) {
$produits = $paginatorInterface->paginate(
$produits,
$request->query->getInt('page', 1),
36,
);
} else {
$products = $ysapi->getCatalog($token, 0, $countProducts, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
foreach ($products->Products as $prd) {
array_push($produits, $prd);
}
$produits = $this->filterExcludedProducts($produits);
$produits = $paginatorInterface->paginate(
$produits,
$request->query->getInt('page', 1),
36,
);
}
$tagInfo = ['id' => 0, "label" => "Tous les sous thèmes"];
return $this->render('default/index.html.twig', [
'title' => $title,
'categories' => $categories,
'projet' => $projet,
'tags' => $tags,
'theme' => $theme,
'categorie' => $categorie,
'countProducts' => $countProducts,
'products' => $produits,
'tagInfo' => $tagInfo,
'idL' => 0,
'idTr' => null,
'tokenUser' => $tokenUser,
'idUser' => $idUser
]);
}
/**
* @Route("/client/{idc}/projet/{id}/{idcat}/{idUser}/{idTh}/{idTag}/{idL}/{idTr}", name="default_categorie_show_result")
*/
public function showResult(ManagerRegistry $doctrine, $id, $idcat, $idTh, $idUser = 0, $idTag = 0, PaginatorInterface $paginatorInterface, Request $request, $idL = 0, $idTr = null): Response
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$entityManager = $doctrine->getManager();
if ($idUser != 0) {
$subscriber = $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
try {
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
$projet = $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$categorie = $entityManager->getRepository(Categorie::class)->findOneBy(array('id' => $idcat));
$title = $categorie->getName();
$theme = $entityManager->getRepository(Theme::class)->findOneBy(array('id' => $idTh));
if ($idTag != 0) {
$tagInfo = $entityManager->getRepository(Tag::class)->findOneBy(array('id' => $idTag));
} else {
$tagInfo = ['id' => 0, "label" => "Tous les sous thèmes"];
}
$countProducts = 0;
$productsTheme = $ysapi->getCatalogProducts($token, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
$countProducts = $productsTheme->TotalResults;
$produits = [];
if ($idTag == 0) {
if ($idL != 0) {
$productsTags = $ysapi->getCatalogByTheme($token, 0, $countProducts, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme(), $idTr, $idL);
$countProducts = $productsTags->TotalResults;
$countProducts = $countProducts / 100;
for ($i = 0; $i < (int) $countProducts; $i++) {
$j = $i * 100;
$productsTags = $ysapi->getCatalogByTheme($token, $j, 100, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme(), $idTr, $idL);
foreach ($productsTags->Products as $prd) {
array_push($produits, $prd);
}
}
//
} else {
$productsTags = $ysapi->getCatalog($token, 0, $countProducts, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
$countProducts = $productsTags->TotalResults;
$countProducts = $countProducts / 100;
for ($i = 0; $i < (int) $countProducts; $i++) {
$j = $i * 100;
$productsTags = $ysapi->getCatalog($token, 0, 100, $categorie->getIdYouscribe(), $theme->getIdYouscribeTheme(), $idTr);
foreach ($productsTags->Products as $prd) {
array_push($produits, $prd);
}
}
}
} else {
$productsTags = $ysapi->getCatalogByTheme($token, 0, $countProducts, $categorie->getIdYouscribe(), $tagInfo->getIdYouscribeTag(), $idTr, $idL);
$countProducts = $productsTags->TotalResults;
$countProducts = $countProducts / 100;
if ($idL != 0) {
for ($i = 0; $i < (int) $countProducts; $i++) {
$j = $i * 100;
$productsTags = $ysapi->getCatalogByTheme($token, 0, 100, $categorie->getIdYouscribe(), $tagInfo->getIdYouscribeTag(), $idTr, $idL);
foreach ($productsTags->Products as $prd) {
array_push($produits, $prd);
}
}
} else {
$productsTags = $ysapi->getCatalog($token, 0, $countProducts, $categorie->getIdYouscribe(), $tagInfo->getIdYouscribeTag());
$countProducts = $productsTags->TotalResults;
$countProducts = $countProducts / 100;
for ($i = 0; $i < (int) $countProducts; $i++) {
$j = $i * 100;
$productsTags = $ysapi->getCatalog($token, 0, 100, $categorie->getIdYouscribe(), $tagInfo->getIdYouscribeTag());
foreach ($productsTags->Products as $prd) {
array_push($produits, $prd);
}
}
}
}
$produits = $this->filterExcludedProducts($produits);
$produits = $paginatorInterface->paginate(
$produits,
$request->query->getInt('page', 1),
36,
);
$produits->setTemplate('@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig');
$tagsInfos = $theme->getTags();
$tags = [];
foreach ($tagsInfos as $tag) {
array_push($tags, [
'id' => $tag->getId(),
'label' => $tag->getLabel(),
'idYouscribeTheme' => $tag->getIdYouscribeTag(),
]);
}
return $this->render('default/index.html.twig', [
'title' => $title,
'categories' => $categories,
'projet' => $projet,
'tags' => $tags,
'theme' => $theme,
'categorie' => $categorie,
'countProducts' => $countProducts,
'products' => $produits,
'tagInfo' => $tagInfo,
'idL' => $idL,
'idTr' => $idTr,
'tokenUser' => $tokenUser,
'idUser' => $idUser
]);
}
/**
* @Route("/client/search", name="search_youscribe")
*/
public function search(ManagerRegistry $doctrine, Request $request, PaginatorInterface $paginatorInterface)
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$title = "home";
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$entityManager = $doctrine->getManager();
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
if ($request->getMethod() == Request::METHOD_GET) {
$formdata = $_GET['form'];
$data = $formdata["query"];
$wordsearched = $data;
$idUser = $_GET['idUser'];
$projet = $entityManager->getRepository(Projet::class)->findOneBy(['id' => $_GET['projet']]);
if ($idUser != 0) {
$subscriber = $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
try {
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
}
$strings = ['sexualité', 'polisario', 'polizario', 'la dynastie alaouite marocaine', 'l’héritage de Habdelhafid', 'dynastie', 'alaouite'];
$productsInfos = [];
$page = 0;
if (!in_array($wordsearched, $strings)) {
do {
$products = $ysapi->searchProducts2($token, $page * 3000, 3000, $wordsearched);
$totalResults = $products->TotalResults;
foreach ($products->Products as $prd) {
if ($prd->Id != 3706725) {
$productsInfos[] = $prd;
}
}
$page++;
} while ($page < ceil($products->TotalResults / 3000));
}
$productsInfos = $this->filterExcludedProducts($productsInfos);
$productsInfos = $paginatorInterface->paginate(
$productsInfos,
$request->query->getInt('page', 1),
36,
);
$productsInfos->setTemplate('@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig');
return $this->render('default/index.html.twig', [
'title' => $title,
'categories' => $categories,
'client' => $projet->getClient(),
'projet' => $projet,
'subsriber' => $subscriber,
'tokenUser' => $tokenUser,
'totalResults' => isset($totalResults) ? $totalResults : 0,
'idUser' => $idUser,
'productsInfos' => $productsInfos,
'words' => $wordsearched,
'sort' => ' ',
'language_id' => ' ',
'categorie' => ' '
]);
}
/**
* @Route("/client/filter/{idProjet}/{idUser}/{words}/{language_id}/{sort}/{categorie}", name="filter_youscribe")
*/
public function filter(ManagerRegistry $doctrine, Request $request, PaginatorInterface $paginatorInterface, $idProjet, $idUser, $words, $language_id = null, $sort = null, $categorie = null)
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$title = "home";
$ysapi = new YouscribeApi();
$token = $ysapi->getAuthorization();
$entityManager = $doctrine->getManager();
$categories = $entityManager->getRepository(Categorie::class)->findCategories();
$projet = $entityManager->getRepository(Projet::class)->findOneBy(['id' => $idProjet]);
if ($idUser != 0) {
$subscriber = $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
try {
$tokenUser = $ysapi->getAuthorizeUser($token, $subscriber->getLogin());
} catch (\Throwable $th) {
$subscriber = null;
$tokenUser = "Notgenerated";
}
} else {
$idUser = 0;
$subscriber = null;
$tokenUser = "Notgenerated";
}
if ($words) {
$products = $ysapi->searchProducts($token, $categorie, $words, 0, 1000, $sort, $language_id);
}
$totalResults = count($products->Products);
$productsInfos = [];
foreach ($products->Products as $prd) {
array_push($productsInfos, $prd);
}
$productsInfos = $this->filterExcludedProducts($productsInfos);
$productsInfos = $paginatorInterface->paginate(
$productsInfos,
$request->query->getInt('page', 1),
36,
);
$productsInfos->setTemplate('@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig');
return $this->render('default/index.html.twig', [
'title' => $title,
'categories' => $categories,
'client' => $projet->getClient(),
'projet' => $projet,
'subsriber' => $subscriber,
'totalResults' => $totalResults,
'tokenUser' => $tokenUser,
'idUser' => $idUser,
'productsInfos' => $productsInfos,
'words' => $words,
'sort' => $sort,
'language_id' => $language_id,
'categorie' => $categorie
]);
}
public function inscription(ManagerRegistry $doctrine, $idUser, Client $client)
{
ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
$entityManager = $doctrine->getManager();
$DoceboApi = new DoceboApi();
$ys = new YouscribeApi();
$subscriber = $entityManager->getRepository(Subscriber::class)->findOneBy(array('UserId' => $idUser));
if (!$subscriber) {
$userInfo = $DoceboApi->getDoceboApi("/manage/v1/user", $idUser);
$token = $ys->getAuthorization();
$info = $ys->createSubscriber($token, $idUser, 11, $userlogin = null, $userInfo->data->user_data->email, $userInfo->data->user_data->first_name, $userInfo->data->user_data->last_name);
$subscriber = new Subscriber();
$subscriber->setUserFirstName($userInfo->data->user_data->first_name);
$subscriber->setUserLastName($userInfo->data->user_data->last_name);
$subscriber->setOfferTypeId(11);
$subscriber->setUrl($info->Url);
$subscriber->setLogin($info->Login);
$subscriber->setPassword($info->Password);
$subscriber->setUserId($idUser);
$subscriber->setUserLogin($userInfo->data->user_data->email);
$subscriber->setUserEmail($userInfo->data->user_data->email);
$subscriber->setDateCreation(new \DateTime());
$subscriber->setClient($client);
$entityManager->persist($subscriber);
$entityManager->flush();
} else {
$token = $ys->getAuthorization();
$status = $ys->getSubscriptionStatus($token, $subscriber->getUserId());
if (!$status->IsSubscribed) {
$info = $ys->createSubscriber($token, $idUser, 11, $subscriber->getLogin(), $subscriber->getUserEmail(), $subscriber->getUserFirstName(), $subscriber->getUserLastName());
if ($info) {
$subscriber->setUrl($info->Url);
$subscriber->setLogin($info->Login);
$entityManager->persist($subscriber);
$entityManager->flush();
}
}
}
return $subscriber;
}
/**
* Filter out excluded product IDs from a product collection
*
* @param array $products Array of products to filter
* @return array Filtered products
*/
private function filterExcludedProducts($products)
{
// Product IDs to exclude
$excludedProductIds = [177759, 3252504, 3721078];
// Filter out products by ID
$filteredProducts = array_filter($products, function ($product) use ($excludedProductIds) {
$productId = isset($product->Id) ? $product->Id : (isset($product->ProductId) ? $product->ProductId : 0);
return !in_array($productId, $excludedProductIds);
});
// Re-index array after filtering
return array_values($filteredProducts);
}
}