public function testFormat()
 {
     $con = Propel::getConnection(BookPeer::DATABASE_NAME);
     BookstoreEmployeePeer::clearInstancePool();
     $stmt = $con->query('SELECT * FROM bookstore_employee');
     $formatter = new PropelObjectFormatter();
     $formatter->init(new ModelCriteria('bookstore', 'BookstoreEmployee'));
     $emps = $formatter->format($stmt);
     $expectedClass = array('b1' => 'BookstoreEmployee', 'b2' => 'BookstoreManager', 'b3' => 'BookstoreCashier');
     foreach ($emps as $emp) {
         $this->assertEquals($expectedClass[$emp->getName()], get_class($emp), 'format() creates objects of the correct class when using inheritance');
     }
 }
 /**
  * Gets the current Model object in the collection
  * This is where the hydration takes place.
  *
  * @see PropelObjectFormatter::getAllObjectsFromRow()
  *
  * @return BaseObject
  */
 public function current()
 {
     return $this->formatter->getAllObjectsFromRow($this->currentRow);
 }
 public function init(ModelCriteria $criteria)
 {
     parent::init($criteria);
     $this->isSingleTableInheritance = $criteria->getTableMap()->isSingleTableInheritance();
     return $this;
 }
Exemplo n.º 4
0
	/**
	 * PropelFormatter pour la requete sql directe
	 *
	 * @return     PropelFormatter pour le requete getGroupe
	 */
	private static function getGroupeFormatter() {
	    if (UtilisateurProfessionnel::$groupeFormatter === null) {
		    $formatter = new PropelObjectFormatter();
		    $formatter->setDbName(GroupePeer::DATABASE_NAME);
		    $formatter->setClass('Groupe');
		    $formatter->setPeer('GroupePeer');
		    $formatter->setAsColumns(array());
		    $formatter->setHasLimit(false);

		    $groupeTableMap = Propel::getDatabaseMap(GroupePeer::DATABASE_NAME)->getTableByPhpName('Groupe');
		    $width = array();
		    // create a ModelJoin object for this join
		    $j_groupes_classesJoin = new ModelJoin();
		    $j_groupes_classesJoin->setJoinType(Criteria::LEFT_JOIN);
		    $j_groupes_classesRelation = $groupeTableMap->getRelation('JGroupesClasses');
		    $j_groupes_classesJoin->setRelationMap($j_groupes_classesRelation);
		    $width["JGroupesClasses"] = new ModelWith($j_groupes_classesJoin);

		    $classeJoin = new ModelJoin();
		    $classeJoin->setJoinType(Criteria::LEFT_JOIN);
		    $jGroupesClassesTableMap = Propel::getDatabaseMap(GroupePeer::DATABASE_NAME)->getTableByPhpName('JGroupesClasses');
		    $relationClasse = $jGroupesClassesTableMap->getRelation('Classe');
		    $classeJoin->setRelationMap($relationClasse);
		    $classeJoin->setPreviousJoin($j_groupes_classesJoin);
		    $width["Classe"] = new ModelWith($classeJoin);

		    $formatter->setWith($width);
		    UtilisateurProfessionnel::$groupeFormatter = $formatter;
	    }
	    return UtilisateurProfessionnel::$groupeFormatter;
	}
Exemplo n.º 5
0
 public function testFormatOneNoResult()
 {
     $con = Propel::getConnection(BookPeer::DATABASE_NAME);
     $stmt = $con->query('SELECT * FROM book WHERE book.TITLE = "foo"');
     $formatter = new PropelObjectFormatter();
     $formatter->init(new ModelCriteria('bookstore', 'Book'));
     $book = $formatter->formatOne($stmt);
     $this->assertNull($book, 'PropelObjectFormatter::formatOne() returns null when no result');
 }
Exemplo n.º 6
0
 public function getOpenCollectingTransfers(PropelPDO $con)
 {
     $sql = "SELECT * FROM " . TransferPeer::TABLE_NAME . " WHERE" . " member_id = :member_id AND" . " state = :state" . " FOR UPDATE";
     $stmt = $con->prepare($sql);
     $stmt->execute(array(':member_id' => $this->getId(), ':state' => Transfer::STATE_COLLECT));
     $formatter = new PropelObjectFormatter();
     $formatter->setClass('Transfer');
     return $formatter->format($stmt);
 }
 public function testFormaWithRelatedObjects()
 {
     $con = Propel::getConnection(BookPeer::DATABASE_NAME);
     $con->useDebug(false);
     $con->useDebug(true);
     $this->assertEquals(0, $con->getQueryCount());
     $stmt = $con->query('SELECT * FROM author LEFT JOIN book ON (author.id = book.author_id)');
     $formatter = new PropelObjectFormatter();
     $criteria = new ModelCriteria('bookstore', 'Author');
     $criteria->joinWith('Book');
     $formatter->init($criteria);
     $authors = $formatter->format($stmt);
     $this->assertEquals(1, $con->getQueryCount());
     $this->assertTrue($authors instanceof PropelObjectCollection, 'PropelObjectFormatter::formatOne() returns a model object');
     foreach ($authors as $author) {
         $this->assertTrue($author->getBooks() instanceof PropelCollection);
         if ('Grass' === $author->getLastName()) {
             $this->assertEquals(2, $author->countBooks());
         } else {
             $this->assertEquals(1, $author->countBooks());
         }
     }
     $this->assertEquals(1, $con->getQueryCount());
 }
Exemplo n.º 8
0
 /**
  * Override formatter function for one item.
  *
  * @param PDOStatement $stmt
  * @return mixed
  */
 public function formatOne(PDOStatement $stmt)
 {
     $item = parent::format($stmt);
     if ($this->formatterFunction) {
         return call_user_func($this->formatterFunction, $item);
     }
     if (is_object($item) && $item instanceof BaseObject) {
         return Propel::toTwig($item);
     }
     return $item;
 }
Exemplo n.º 9
0
	/**
	 * PropelFormatter pour la requete sql directe
	 *
	 * @return     PropelFormatter pour le requete getGroupe
	 */
	private static function getTraitementFormatter() {
	    if (AbsenceEleveSaisie::$traitementFormatter === null) {
		    $formatter = new PropelObjectFormatter();
		    $formatter->setDbName(AbsenceEleveTraitementPeer::DATABASE_NAME);
		    $formatter->setClass('AbsenceEleveTraitement');
		    $formatter->setPeer('AbsenceEleveTraitementPeer');
		    $formatter->setAsColumns(array());
		    $formatter->setHasLimit(false);

		    $typeTableMap = Propel::getDatabaseMap(AbsenceEleveTraitementPeer::DATABASE_NAME)->getTableByPhpName('AbsenceEleveTraitement');
		    $width = array();
		    // create a ModelJoin object for this join
		    $typeJoin = new ModelJoin();
		    $typeJoin->setJoinType(Criteria::LEFT_JOIN);
		    $typeRelation = $typeTableMap->getRelation('AbsenceEleveType');
		    $typeJoin->setRelationMap($typeRelation);
		    $width["AbsenceEleveType"] = new ModelWith($typeJoin);

		    $notificationJoin = new ModelJoin();
		    $notificationJoin->setJoinType(Criteria::LEFT_JOIN);
		    $notificationRelation = $typeTableMap->getRelation('AbsenceEleveNotification');
		    $notificationJoin->setRelationMap($notificationRelation);
		    $width["AbsenceEleveNotification"] = new ModelWith($notificationJoin);

		    $justificationJoin = new ModelJoin();
		    $justificationJoin->setJoinType(Criteria::LEFT_JOIN);
		    $justificationRelation = $typeTableMap->getRelation('AbsenceEleveJustification');
		    $justificationJoin->setRelationMap($justificationRelation);
		    $width["AbsenceEleveJustification"] = new ModelWith($justificationJoin);

		    $formatter->setWith($width);
		    AbsenceEleveSaisie::$traitementFormatter = $formatter;
	    }
	    return AbsenceEleveSaisie::$traitementFormatter;
	}
Exemplo n.º 10
0
	/**
	 *
	 * Retourne la liste de toutes les période de notes pour lesquelles l'eleve a ete affecte
	 *
	 *
	 * @return PropelObjectCollection PeriodeNote[]
	 */
	public function getPeriodeNotes() {
	    if(null === $this->collPeriodeNotes) {
		    if ($this->isNew() && null === $this->collPeriodeNotes) {
			    // return empty collection
			    $this->initPeriodeNotes();
		    } else {
			    $sql = "SELECT /* log pour sql manuel */ DISTINCT periodes.NOM_PERIODE, periodes.NUM_PERIODE, periodes.VEROUILLER, periodes.ID_CLASSE, periodes.DATE_VERROUILLAGE, periodes.DATE_FIN FROM `periodes` INNER JOIN classes ON (periodes.ID_CLASSE=classes.ID) INNER JOIN j_eleves_classes ON (classes.ID=j_eleves_classes.ID_CLASSE) WHERE j_eleves_classes.LOGIN='******' AND j_eleves_classes.periode = periodes.num_periode ORDER by periodes.NUM_PERIODE";
			    $con = Propel::getConnection(null, Propel::CONNECTION_READ);
			    $stmt = $con->prepare($sql);
			    $stmt->execute();

			    $formatter = new PropelObjectFormatter();
			    $formatter->setDbName(PeriodeNotePeer::DATABASE_NAME);
			    $formatter->setClass('PeriodeNote');
			    $formatter->setPeer('PeriodeNotePeer');
			    $formatter->setAsColumns(array());
			    $formatter->setHasLimit(false);
			    $this->collPeriodeNotes = $formatter->format($stmt);
			    
//			    $collPeriodeNotes = PeriodeNoteQuery::create()->useClasseQuery()->useJEleveClasseQuery()->filterByEleve($this)->endUse()->endUse()
//				    ->where('j_eleves_classes.periode = periodes.num_periode')
//				    ->setComment('log pour sql manuel')
//				    ->distinct()->find();
//			    $this->collPeriodeNotes = $collPeriodeNotes;
		    }
	    }
	    return $this->collPeriodeNotes;
	}