Example #1
0
 public function getAllForTeacher($uzatvorene = FALSE)
 {
     $user = $this->user;
     $zadania = $this->db->fetchAll("SELECT z.id, z.nazov, z.cas_uzatvorenia, t.rocnik, t.kod, z.trieda_id, p.skratka AS predmet FROM zadania AS z " . "LEFT JOIN predmety AS p ON z.predmet_id = p.id " . "LEFT JOIN triedy AS t ON z.trieda_id = t.id " . "WHERE z.pouzivatel_id = ? AND ( z.stav = ? OR ( z.stav = 1 AND NOW() " . ($uzatvorene ? '>' : '<=') . " z.cas_uzatvorenia ) ) " . "ORDER BY z.cas_uzatvorenia DESC", array($user['id'], $uzatvorene ? 0 : 2));
     if (empty($zadania)) {
         return array();
     }
     $triedyIds = array_map(function ($v) {
         return (int) $v['trieda_id'];
     }, $zadania);
     $zadaniaIds = array_map(function ($v) {
         return (int) $v['id'];
     }, $zadania);
     // pocet ludi v triede
     $stmt = $this->db->executeQuery("SELECT trieda_id, COUNT(*) AS pocet_ziakov FROM pouzivatelia WHERE trieda_id IN(?) GROUP BY trieda_id", array($triedyIds), array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY));
     $triedy = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $triedy = array_combine(array_map(function ($v) {
         return (int) $v['trieda_id'];
     }, $triedy), $triedy);
     // pocet odovzdanych k zadaniu
     $stmt = $this->db->executeQuery("SELECT zadanie_id, trieda_id, COUNT(*) AS pocet_ziakov FROM odovzdania AS o\n            LEFT JOIN zadania AS z ON o.zadanie_id = z.id\n            WHERE z.trieda_id IN(?) AND o.zadanie_id IN(?) GROUP BY o.zadanie_id", array($triedyIds, $zadaniaIds), array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY, \Doctrine\DBAL\Connection::PARAM_INT_ARRAY));
     $odovzdania = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $odovzdania = array_combine(array_map(function ($v) {
         return (int) $v['zadanie_id'];
     }, $odovzdania), $odovzdania);
     foreach ($zadania as &$zadanie) {
         $zadanie['odovzdanych'] = (isset($odovzdania[$zadanie['id']]['pocet_ziakov']) ? $odovzdania[$zadanie['id']]['pocet_ziakov'] : 0) . '/' . $triedy[$zadanie['trieda_id']]['pocet_ziakov'];
     }
     return $zadania;
 }
 /**
  * Loads a collection of entities of a many-to-many association.
  *
  * @param ManyToManyMapping $assoc
  * @param array $criteria
  * @param PersistentCollection $coll The collection to fill.
  */
 public function loadManyToManyCollection($assoc, array $criteria, PersistentCollection $coll)
 {
     $sql = $this->_getSelectManyToManyEntityCollectionSQL($assoc, $criteria);
     $params = array_values($criteria);
     $stmt = $this->_conn->executeQuery($sql, $params);
     while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
         $coll->hydrateAdd($this->_createEntity($result));
     }
     $stmt->closeCursor();
 }
 /**
  * Loads a collection of entities in a one-to-many association.
  *
  * @param OneToManyMapping $assoc
  * @param array $criteria The criteria by which to select the entities.
  * @param PersistentCollection The collection to load/fill.
  */
 public function loadOneToManyCollection(array $assoc, $sourceEntity, PersistentCollection $coll)
 {
     $criteria = array();
     $owningAssoc = $this->_class->associationMappings[$assoc['mappedBy']];
     $sourceClass = $this->_em->getClassMetadata($assoc['sourceEntity']);
     foreach ($owningAssoc['targetToSourceKeyColumns'] as $sourceKeyColumn => $targetKeyColumn) {
         $criteria[$targetKeyColumn] = $sourceClass->reflFields[$sourceClass->fieldNames[$sourceKeyColumn]]->getValue($sourceEntity);
     }
     $sql = $this->_getSelectEntitiesSQL($criteria, $assoc);
     $params = array_values($criteria);
     $stmt = $this->_conn->executeQuery($sql, $params);
     while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
         $coll->hydrateAdd($this->_createEntity($result));
     }
     $stmt->closeCursor();
 }
 /**
  * Build criteria and execute SQL statement to fetch the one to many entities from.
  *
  * @param array $assoc
  * @param object $sourceEntity
  * @param int|null $offset
  * @param int|null $limit
  * @return Doctrine\DBAL\Statement
  */
 private function getOneToManyStatement(array $assoc, $sourceEntity, $offset = null, $limit = null)
 {
     $criteria = array();
     $owningAssoc = $this->_class->associationMappings[$assoc['mappedBy']];
     $sourceClass = $this->_em->getClassMetadata($assoc['sourceEntity']);
     foreach ($owningAssoc['targetToSourceKeyColumns'] as $sourceKeyColumn => $targetKeyColumn) {
         if ($sourceClass->containsForeignIdentifier) {
             $field = $sourceClass->getFieldForColumn($sourceKeyColumn);
             $value = $sourceClass->reflFields[$field]->getValue($sourceEntity);
             if (isset($sourceClass->associationMappings[$field])) {
                 $value = $this->_em->getUnitOfWork()->getEntityIdentifier($value);
                 $value = $value[$this->_em->getClassMetadata($assoc['targetEntity'])->identifier[0]];
             }
             $criteria[$targetKeyColumn] = $value;
         } else {
             $criteria[$targetKeyColumn] = $sourceClass->reflFields[$sourceClass->fieldNames[$sourceKeyColumn]]->getValue($sourceEntity);
         }
     }
     $sql = $this->_getSelectEntitiesSQL($criteria, $assoc, 0, $limit, $offset);
     list($params, $types) = $this->expandParameters($criteria);
     return $this->_conn->executeQuery($sql, $params, $types);
 }