vendor/theatre/core/src/Repository/TemplatesRepository.php line 60

Open in your IDE?
  1. <?php
  2. namespace TheatreCore\Repository;
  3. use TheatreCore\Entity\Templates;
  4. use TheatreCore\Traits\TheatreTrait;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. /**
  8.  * TemplatesRepository
  9.  *
  10.  * This class was generated by the Doctrine ORM. Add your own custom
  11.  * repository methods below.
  12.  */
  13. class TemplatesRepository extends ServiceEntityRepository
  14. {
  15.     use TheatreTrait;
  16.     private $em;
  17.     public $__table;
  18.     public $__table_object;
  19.     public $__idtable;
  20.     public function __construct(ManagerRegistry $registry)
  21.     {
  22.         parent::__construct($registryTemplates::class);
  23.         $this->__table $this->getClassMetadata()->getTableName();
  24.         $this->__table_object $this->getClassMetadata()->name;
  25.         $this->__idtable $this->getClassMetadata()->getSingleIdentifierFieldName();
  26. //        $this->__table = 'persons';
  27. //        $this->__table_object = '\\App\\Entity\\Persons';
  28.     }
  29.     //  {{{ getAssociateTemplates()
  30.     /** Récupère le(s) template(s) associé(s) à un objet
  31.      *
  32.      * @access public
  33.      * @param string $object Objet concerné
  34.      * @param int $idobject Identifiant de l'objet
  35.      * @return array
  36.      */
  37.     public function getAssociateTemplates($object$idobject)
  38.     {
  39.         $templates = array();
  40.         $conn $this->getEntityManager();
  41.         // type - s
  42.         $dbdo 'content';
  43.         $obj $conn->getRepository('TheatreCore\Entity\\' ucfirst($object));
  44.         $sql 'SELECT fichier FROM ' $dbdo '_template dbo_tpl, ' $this->__table ' tpl
  45.                 WHERE dbo_tpl.idtemplate=tpl.idtemplate
  46.                 AND dbo_tpl.' $obj->__idtable '=' . (int)$idobject;
  47.         $templates $this->queryAll($sql);
  48.         return $templates;
  49.     }
  50.     // }}}
  51.     //  {{{ getListSearch()
  52.     /** Liste de templates
  53.      *
  54.      * Pour les champs Ajax de relations et les recherches diverses
  55.      *
  56.      * @access  public
  57.      * @param string $lettres Pour la recherche alphabetique
  58.      * @param string $type Pour le type recherche (editeurs, revues...)
  59.      * @param string $keywords Recherche par mots cles
  60.      * @return  array
  61.      */
  62.     public function getListSearch($lettre null$type null$keywords null$only null$type_object null)
  63.     {
  64.         $qb $this->createQueryBuilder('c');
  65.         $qb->select('c')
  66.             ->orderBy('c.description''ASC');
  67.         return $qb;
  68.         // recherche par description ou fichier
  69.         $sql 'SELECT tpl.description, tpl.fichier,  tpl.idtemplate
  70.                 FROM ' $this->__table ' tpl
  71.                 WHERE 1 ';
  72.         if (strpos($type'_template')) {
  73.             $type_tab explode('_'$type);
  74.             $type_src $type_tab[0] . 's';
  75.         }
  76.         if (!empty($type_src) && $type_src == $type_object) {
  77.             $sql .= ' AND cl.type=\'' $type_object '\' ';
  78.         }
  79.         // selection par ordre alpha sur la description uniquement
  80.         if (!empty($lettre) && $lettre != 'tous') {
  81.             $sql .= ' AND LOWER(LEFT(LTRIM(tpl.description),1))=\'' $this->escape($lettre) . '\' ';
  82.         }
  83.         // recherche avec un mot cle sur la description ou le fichier
  84.         $list $this->splitKeywords($keywords);
  85.         if ($list) {
  86.             $subsql '';
  87.             if (!empty($list[$this->IDSTR])) {
  88.                 $ssubsql '';
  89.                 foreach ($list[$this->IDSTR] as $s) {
  90.                     if ($ssubsql) {
  91.                         $ssubsql .= ' AND ';
  92.                     }
  93.                     $ssubsql .= ' (tpl.description LIKE \'%' $s '%\' OR tpl.fichier LIKE \'%' $s '%\'';
  94.                 }
  95.                 $subsql .= '(' $ssubsql ') ';
  96.             }
  97.             // par numero de fiche
  98.             if (!empty($list[$this->IDNUM])) {
  99.                 // recherche par numéro d'id pour les mots clés numériques
  100.                 if ($subsql) {
  101.                     $subsql .= ' OR ';
  102.                 }
  103.                 $subsql .= 'tpl.idtemplate IN (' implode(','$list[$this->IDNUM]) . ')';
  104.             }
  105.             if ($subsql) {
  106.                 $sql .= $subsql;
  107.             }
  108.         }
  109.         $sql .= ' ORDER BY tpl.description';
  110.         $result $this->queryAll($sql);
  111.         $r = array();
  112.         foreach ($result as $k => $v) {
  113.             $r[$v['idtemplate']] = $v['description'];
  114.             // si trouvé par id, on l'affiche en fin de titre
  115.             if (!empty($list[$this->IDNUM]) && in_array($this->idcontact$list[$this->IDNUM])) {
  116.                 $r[$this->idcontact] .= ' - n°' $this->idcontact;
  117.             }
  118.         }
  119.         return $r;
  120.     }
  121.     // }}}
  122.     //  {{{ getObjectTitle()
  123.     /** Infos de l'item recherché
  124.      *
  125.      * Affichage standard du titre de l'objet
  126.      *
  127.      * @access public
  128.      * @param int $idobject Identifiant de l'item
  129.      * @param array $infos_object Informations pour construire le titre
  130.      * @param array $params Paramétres supplémentaires
  131.      * @return string
  132.      */
  133.     public function getObjectTitle($idobject null$infos_object = array(), $params = array())
  134.     {
  135.         // identifiant
  136.         if (!$idobject) {
  137.             $idobject = $$this->_idtable;
  138.         }
  139.         // champs
  140.         $params['fields'] = array('description');
  141.         // appel la méthode standard
  142.         $infos_object $this->getObjectTitleSimple($idobject$infos_object$params);
  143.         return $infos_object['description'];
  144.     }
  145.     // }}}
  146. }