vendor/theatre/core/src/Repository/ObjectMultimediaRepository.php line 124

Open in your IDE?
  1. <?php
  2. namespace TheatreCore\Repository;
  3. use TheatreCore\Entity\ObjectMultimedia;
  4. use TheatreCore\Traits\TheatreTrait;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. /**
  8.  * ObjectMultimediaRepository
  9.  *
  10.  * This class was generated by the Doctrine ORM. Add your own custom
  11.  * repository methods below.
  12.  */
  13. class ObjectMultimediaRepository 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($registryObjectMultimedia::class);
  23.         $this->__table $this->getClassMetadata()->getTableName();
  24.         $this->__table_object $this->getClassMetadata()->name;
  25.         $this->__idtable 'idobject';
  26.     }
  27.     //  {{{ getObjectsMultimedia()
  28.     /** Récupérer les titres des objets liés à un document multimédia
  29.      *
  30.      * @access public
  31.      * @return array
  32.      */
  33.     public function getObjectsMultimedia($idmultimedia$object$fields null$idrole null$all false)
  34.     {
  35.         $infos = array();
  36.         if ($fields) {
  37.             // si liaisons multiples
  38.             if (!empty($fields['fields'])) {
  39.                 // cle étrangère avec idmultimedia
  40.                 $fk $fields['fields'][0];
  41.                 // champs de la table liée directement avec multimedia
  42.                 $select_fields '';
  43.                 $fields_count count($fields['fields']);
  44.                 for ($i 0$i $fields_count$i++) {
  45.                     $select_fields .= ', ' $object '.' $fields[$i];
  46.                 }
  47.                 // champs liées à cette table
  48.             }
  49.             // cle étrangère
  50.             $fk $fields[0];
  51.             $select_fields '';
  52.             $fields_count count($fields);
  53.             for ($i 0$i $fields_count$i++) {
  54.                 $select_fields .= ', ' $object '.' $fields[$i];
  55.             }
  56.             $sql 'SELECT ' $this->__table '.object, ' $this->__table '.idobject' $select_fields '
  57.                     FROM ' $this->__table ', ' $object '
  58.                     WHERE ' $this->__table '.' $this->__idtable '=' $object '.' $fk '
  59.                     AND ' $this->__table '.idmultimedia=' . ((int)$idmultimedia) . '
  60.                     AND ' $this->__table '.object=\'' $object '\'';
  61.         } else {
  62.             $sql 'SELECT ' $this->__table '.object, ' $this->__table '.idobject
  63.                     FROM ' $this->__table '
  64.                     WHERE 1
  65.                     AND idmultimedia=' . ((int)$idmultimedia);
  66.         }
  67.         if ($idrole) {
  68.             if ($idrole == 'NULL') {
  69.                 $sql .= ' AND ' $this->__table '.idrole IS NULL';
  70.             } else {
  71.                 $sql .= ' AND ' $this->__table '.idrole=' . ((int)$idrole);
  72.             }
  73.         }
  74.         $sql .= ' ORDER BY ' $this->__table '.ordermultimedia ';
  75.         $res $this->query($sql);
  76.         while ($row $this->fetchRow()) { //$res->fetchRow()
  77.             // objet lie
  78.             $con $this->getEntityManager();
  79.             $obj $con->getRepository('TheatreCore\Entity\\' ucfirst($row['object']));
  80.             // parametres de getObjectTitle
  81.             if ($fields) {
  82.                 for ($i 0$i $fields_count$i++) {
  83.                     $infos_object[$fields[$i]] = $row[$fields[$i]];
  84.                 }
  85.             } else {
  86.                 $infos_object null;
  87.             }
  88.             // retourne tous les champs
  89.             if ($all) {
  90.                 if ($fields) {
  91.                     for ($i 0$i $fields_count$i++) {
  92.                         $infos[$row['idobject']][$fields[$i]] = $row[$fields[$i]];
  93.                     }
  94.                 }
  95.                 if ($object == 'spectacles') {
  96.                     $infos[$row['idobject']]['title'] = $obj->getObjectTitle($row['idobject']);
  97.                 }
  98.             } // uniquement le titre
  99.             else {
  100.                 $infos[$row['idobject']] = array(
  101.                     'title' => $obj->getObjectTitle($row['idobject'], $infos_object), //.' - '.$spectacle->getDirectorsString($r['idspectacle'])
  102.                 );
  103.             }
  104.         }
  105.         $this->free(); //$res->free()
  106.         // retourner les infos
  107.         return $infos;
  108.     }
  109.     // }}}
  110. }