/** * Form constructor. * * Available options: * - embedded_form_class: The class name of the forms to embed. Uses the model name by default. * (a form based on a collection of Book objects embeds BookForm objects) * - item_pattern: The pattern used to name each embedded form. Defaults to '%index%'. * - add_delete: Whether to add a delete widget for each object. Defaults to true. * - delete_name: Name of the delete widget. Defaults to 'delete'. * - delete_widget: Optional delete widget object. If left null, uses a sfWidgetFormDelete instance. * - alert_text: The text of the Javascript alert to show * - hide_parent: Whether to hide the parent form when clicking the checkbox * - parent_level: The number of times parentNode must be called to reach the parent to hide. * Recommended values: 6 for embedded form, 7 for merged form * - remove_fields: The list of fields to remove from the embedded object forms * * @param PropelCollection $collection A collection of Propel objects * used to initialize default values * @param array $options An array of options * @param string $CSRFSecret A CSRF secret (false to disable CSRF protection, null to use the global CSRF secret) * * @see sfForm */ public function __construct($collection = null, $options = array(), $CSRFSecret = null) { $options = array_merge(array( 'item_pattern' => '%index%', 'add_delete' => false, 'delete_name' => 'delete', 'delete_widget' => null, 'remove_fields' => array(), ), $options); if (!$collection) { $this->model = $options['model']; $collection = new PropelObjectCollection(); $collection->setModel($this->model); $this->collection = $collection; } else { if (!$collection instanceof PropelObjectCollection) { throw new sfException(sprintf('The "%s" form only accepts a PropelObjectCollection object.', get_class($this))); } $this->collection = $collection; $this->model = $collection->getModel(); } $this->isEmpty = $this->getCollection()->isEmpty(); parent::__construct(array(), $options, $CSRFSecret); }
protected function createBooks($nb = 15, $con = null) { BookQuery::create()->deleteAll($con); $books = new PropelObjectCollection(); $books->setModel('Book'); for ($i = 0; $i < $nb; $i++) { $b = new Book(); $b->setTitle('Book' . $i); $books[] = $b; } $books->save($con); }
public function testFromArray() { $author = new Author(); $author->setFirstName('Jane'); $author->setLastName('Austen'); $author->save(); $books = array(array('Title' => 'Mansfield Park', 'AuthorId' => $author->getId()), array('Title' => 'Pride And PRejudice', 'AuthorId' => $author->getId())); $col = new PropelObjectCollection(); $col->setModel('Book'); $col->fromArray($books); $col->save(); $nbBooks = PropelQuery::from('Book')->count(); $this->assertEquals(6, $nbBooks); $booksByJane = PropelQuery::from('Book b')->join('b.Author a')->where('a.LastName = ?', 'Austen')->count(); $this->assertEquals(2, $booksByJane); }
public function testConstruct() { $collection = new \PropelObjectCollection(); $collection->setModel('Propel\\Bundle\\PropelAclBundle\\Model\\Acl\\Entry'); $acl = new Acl($collection, $this->getAclObjectIdentity(), new PermissionGrantingStrategy()); $model = $this->createEntry(); $model->setAuditFailure(true); $model->setSecurityIdentity(SecurityIdentity::fromAclIdentity($this->getRoleSecurityIdentity())); $entry = new Entry($model, $acl); $this->assertEquals($model->getMask(), $entry->getMask()); $this->assertEquals($model->getGranting(), $entry->isGranting()); $this->assertEquals($model->getGrantingStrategy(), $entry->getStrategy()); $this->assertEquals($model->getAuditFailure(), $entry->isAuditFailure()); $this->assertEquals($model->getAuditSuccess(), $entry->isAuditSuccess()); $this->assertEquals($this->getRoleSecurityIdentity(), $entry->getSecurityIdentity()); return $entry; }
public function showRoles() { if (!$this->hasPermission(self::PERMISSION_ROLES)) { throw new Exception('You dont have permission to access this view.'); } $this->addMenu(); $user = User::getUser(); $backendModules = Curry_Backend::getBackendList(); $disable = array(); $backend = array("*" => "All"); if (!$user->hasAccess('*')) { $disable[] = '*'; } foreach ($backendModules as $backendClass => $backendName) { $backend[$backendClass] = $backendName; $permissions = method_exists($backendClass, 'getPermissions') ? call_user_func(array($backendClass, 'getPermissions')) : array(); foreach ($permissions as $permission) { $backend[$backendClass . "/" . $permission] = Curry_Core::SELECT_TREE_PREFIX . $permission; if (!$user->hasAccess($backendClass . "/" . $permission)) { $disable[] = $backendClass . "/" . $permission; } } if (!$user->hasAccess($backendClass)) { $disable[] = $backendClass; } } $content = array(); $contentAccess = array("*" => "All") + Curry_Module::getModuleList(); $allContentAccess = $user->hasAccess('Curry_Backend_Content/*'); foreach ($contentAccess as $k => $v) { $content['Curry_Backend_Content/' . $k] = $v; if (!$allContentAccess && !$user->hasAccess('Curry_Backend_Content/' . $k)) { $disable[] = 'Curry_Backend_Content/' . $k; } } $form = new Curry_ModelView_Form('UserRole', array('elements' => array('backend' => array('multiselect', array('label' => 'Backend access', 'multiOptions' => $backend, 'size' => 10, 'order' => 1, 'disable' => $disable, 'validators' => array(array('InArray', true, array(array_diff(array_keys($backend), $disable)))))), 'content' => array('multiselect', array('label' => 'Content access', 'multiOptions' => $content, 'size' => 10, 'order' => 2, 'disable' => $disable, 'validators' => array(array('InArray', true, array(array_diff(array_keys($content), $disable))))))), 'onFillForm' => function (UserRole $role, $form) { $access = UserRoleAccessQuery::create()->filterByUserRole($role)->select('Module')->find()->getArrayCopy(); $form->backend->setValue($access); $form->content->setValue($access); }, 'onFillModel' => function (UserRole $role, $form, $values) { $access = array_merge((array) $values['backend'], (array) $values['content']); $collection = new PropelObjectCollection(); $collection->setModel('UserRoleAccess'); foreach ($access as $a) { $ura = new UserRoleAccess(); $ura->setModule($a); $collection->append($ura); } $role->setUserRoleAccesss($collection); })); $q = UserRoleQuery::create(); $list = new Curry_ModelView_List($q, array('modelForm' => $form)); $list->addAction('file_permissions', array('action' => $this->getFileAccessList(), 'class' => 'inline', 'single' => true)); $list->show($this); }
/** * Basic deletion of a 1-to-n relation through set<RelationName>(). * */ public function testContentsDeletion() { $contentCollection = new PropelObjectCollection(); $contentCollection->setModel('MoreRelationTest\\Content'); $content = new \MoreRelationTest\Content(); $content->setTitle('I should be alone :-('); $contentCollection[] = $content; $page = \MoreRelationTest\PageQuery::create()->findOne(); $id = $page->getId(); $count = \MoreRelationTest\ContentQuery::create()->filterByPageId($id)->count(); $this->assertEquals(3, $count, 'We created for each page 3 contents.'); $page->setContents($contentCollection); $page->save(); unset($page); $count = \MoreRelationTest\ContentQuery::create()->filterByPageId($id)->count(); $this->assertEquals(1, $count, 'We assigned a collection of only one item.'); }
protected function buildCollection($arr) { $coll = new PropelObjectCollection(); $coll->setData($arr); $coll->setModel('Table10'); return $coll; }
protected function populateCreatedAt() { Table2Query::create()->deleteAll(); $ts = new PropelObjectCollection(); $ts->setModel('Table2'); for ($i = 0; $i < 10; $i++) { $t = new Table2(); $t->setTitle('CreatedAt' . $i); $t->setCreatedAt(time() - $i * 24 * 60 * 60 - 30); $ts[] = $t; } $ts->save(); }
/** * @depends testUpdateObjectAuditing */ public function testUpdateClassFieldAuditing() { $collection = new \PropelObjectCollection(); $collection->setModel('Propel\\Bundle\\PropelAclBundle\\Model\\Acl\\Entry'); $entry = $this->createEntry(); $entry->setFieldName('name')->setSecurityIdentity(SecurityIdentity::fromAclIdentity($this->getRoleSecurityIdentity()))->setAclClass($this->getAclClass()); $collection->append($entry); $acl = new AuditableAcl($collection, $this->getAclObjectIdentity(), new PermissionGrantingStrategy()); $aces = $acl->getClassFieldAces('name'); $this->assertCount(1, $aces); $acl->updateClassFieldAuditing(0, 'name', true, true); $aces = $acl->getClassFieldAces('name'); $this->assertTrue($aces[0]->isAuditSuccess()); $this->assertTrue($aces[0]->isAuditFailure()); $acl->updateClassFieldAuditing(0, 'name', false, false); $aces = $acl->getClassFieldAces('name'); $this->assertFalse($aces[0]->isAuditSuccess()); $this->assertFalse($aces[0]->isAuditFailure()); }
protected function createEmptyAcl($identifier = 1, array $securityIdentities = array(), AclInterface $parentAcl = null, $inherited = null) { $collection = new \PropelObjectCollection(); $collection->setModel('Propel\\PropelBundle\\Model\\Acl\\Entry'); return new MutableAcl($collection, $this->getAclObjectIdentity($identifier), new PermissionGrantingStrategy(), $securityIdentities, $parentAcl, $inherited, $this->con); }
public function testSerializeUnserialize() { $collection = new \PropelObjectCollection(); $collection->setModel('Propel\\PropelBundle\\Model\\Acl\\Entry'); $entry = $this->createEntry(); $entry->setSecurityIdentity(SecurityIdentity::fromAclIdentity($this->getRoleSecurityIdentity('ROLE_ADMIN')))->setAclClass($this->getAclClass()); $collection->append($entry); $acl = new Acl($collection, $this->getAclObjectIdentity(), new PermissionGrantingStrategy()); $serialized = serialize($acl); $unserialized = unserialize($serialized); $this->assertNotEmpty($serialized); $this->assertNotEmpty($unserialized); $this->assertInstanceOf('Propel\\PropelBundle\\Security\\Acl\\Domain\\Acl', $unserialized); $this->assertEquals($serialized, serialize($unserialized)); }
/** * @param string $class * * @return \PropelObjectCollection */ public function getModelCollectionInstance($class) { $collection = new \PropelObjectCollection(); $collection->setModel($class); return $collection; }
/** * * Renvoi un liste de saisies qui sont en contradiction avec celle la concernant le manquement des obligations de presence (apparition dans le bulletin) * * @param boolean $retourne_booleen la fonction retourne vrai ou faux selon qu'il y ai des saisies contradictoires au lieu de retourner une collection * * @return mixed boolean or PropelObjectCollection AbsenceEleveSaisie[] * */ public function getSaisiesContradictoiresManquementObligation($retourne_booleen = false) { //if (isset($this->boolSaisiesContradictoiresManquementObligation)) {echo 'mis en cache';} else {echo 'pas de cache';} if (($retourne_booleen && (!isset($this->boolSaisiesContradictoiresManquementObligation) || $this->boolSaisiesContradictoiresManquementObligation === null)) || (!$retourne_booleen && (!isset($this->collectionSaisiesContradictoiresManquementObligation) || $this->collectionSaisiesContradictoiresManquementObligation === null))) { $result = new PropelObjectCollection(); $result->setModel('AbsenceEleveSaisie'); if ($this->getEleve() === null) { $this->boolSaisiesContradictoiresManquementObligation = false; $this->collectionSaisiesContradictoiresManquementObligation = $result; } else { //on regarde les saisies sur cet eleve $eleve = $this->getEleve(); $manque = $this->getManquementObligationPresence(); foreach ($eleve->getAbsenceEleveSaisiesFilterByDate($this->getDebutAbs(null), $this->getFinAbs(null)) as $saisie) { if ($manque !== $saisie->getManquementObligationPresence()) { if ($retourne_booleen) { $this->boolSaisiesContradictoiresManquementObligation = true; return true; } $result->append($saisie); } } if ($manque == true) { //on recupere les saisies de marquage d'absence (donc sans eleves) qui se chevauchent avec celle-la //optimisation : utiliser la requete pour stocker ca if (isset($_REQUEST['query_AbsenceEleveSaisieQuery_getSaisiesContradictoires_'.$this->getDebutAbs('U').'_'.$this->getFinAbs('U')]) && $_REQUEST['query_AbsenceEleveSaisieQuery_getSaisiesContradictoires_'.$this->getDebutAbs('U').'_'.$this->getFinAbs('U')] != null) { $saisie_col = $_REQUEST['query_AbsenceEleveSaisieQuery_getSaisiesContradictoires_'.$this->getDebutAbs('U').'_'.$this->getFinAbs('U')]; } else { $query = AbsenceEleveSaisieQuery::create(); $query->filterByPlageTemps($this->getDebutAbs(null), $this->getFinAbs(null)) ->add(AbsenceEleveSaisiePeer::ELEVE_ID, NULL) ->addOr(AbsenceEleveSaisiePeer::ELEVE_ID, $this->getEleveId()) ; $saisie_col = $query->find(); $_REQUEST['query_AbsenceEleveSaisieQuery_getSaisiesContradictoires_'.$this->getDebutAbs('U').'_'.$this->getFinAbs('U')] = $saisie_col; } //on va filtrer pour supprimer de la liste les aid, classe ou groupe qui serait le meme que cette saisie la $temp_saisie_col = new PropelObjectCollection(); $temp_saisie_col->setModel('AbsenceEleveSaisie'); if ($this->getClasse() != null) { foreach ($saisie_col as $saisie) { if ($saisie->getIdClasse() != $this->getIdClasse()) { $temp_saisie_col->append($saisie); } } } elseif ($this->getGroupe() != null) { foreach ($saisie_col as $saisie) { if ($saisie->getIdGroupe() != $this->getIdGroupe()) { $temp_saisie_col->append($saisie); } } } elseif ($this->getAidDetails() != null) { foreach ($saisie_col as $saisie) { if ($saisie->getIdAid() != $this->getIdAid()) { $temp_saisie_col->append($saisie); } } } else { foreach ($saisie_col as $saisie) { if ($saisie->getId() != $this->getId()) { $temp_saisie_col->append($saisie); } } } $saisie_col = $temp_saisie_col; //on regarde si un groupe, classe ou aid auquel appartient cet eleve a été saisi et pour lequel l'eleve en question n'a pas ete saisi (c'est donc que l'eleve est present) //on va utiliser comme periode pour determiner les classes et groupes la periode correspondant au debut de l'absence $periode = $eleve->getPeriodeNote($this->getDebutAbs(null)); //on recupere la liste des classes de l'eleve et on regarde si il y a eu des saisies pour ces classes $classes = $eleve->getClasses($periode); $saisie_col_classe_id_array = $saisie_col->toKeyValue('PrimaryKey','IdClasse'); $saisie_col_array_copy = $saisie_col->getArrayCopy('Id'); foreach ($classes as $classe) { $keys = array_keys($saisie_col_classe_id_array, $classe->getId()); if (!empty($keys)) { //on a des saisies pour cette classe //est-ce que l'eleve a bien été saisi absent ? $temp_col = new PropelObjectCollection(); $bool_eleve_saisi = false; foreach ($keys as $key) { $saisie_temp = $saisie_col_array_copy[$key]; if ($saisie_temp->getEleveId() === null) { $temp_col->append($saisie_temp); } if ($this->getEleveId() == $saisie_temp->getEleveId()) { $bool_eleve_saisi = true; } } if (!$bool_eleve_saisi) { //l'eleve n'a pas ete saisi, c'est contradictoire if ($retourne_booleen) { $this->boolSaisiesContradictoiresManquementObligation = true; return true; } $result->addCollection($temp_col); } } } //on recupere la liste des groupes de l'eleve et on regarde si il y a eu des saisies pour ces groupes $groupes = $eleve->getGroupes($periode); $saisie_col_groupe_id_array = $saisie_col->toKeyValue('PrimaryKey','IdGroupe'); foreach ($groupes as $groupe) { $keys = array_keys($saisie_col_groupe_id_array, $groupe->getId()); if (!empty($keys)) { //on a des saisies pour cette groupe //est-ce que l'eleve a bien été saisi absent ? $temp_col = new PropelObjectCollection(); $bool_eleve_saisi = false; foreach ($keys as $key) { $saisie_temp = $saisie_col_array_copy[$key]; if ($saisie_temp->getEleveId() === null) { $temp_col->append($saisie_temp); } if ($this->getEleveId() == $saisie_temp->getEleveId()) { $bool_eleve_saisi = true; } } if (!$bool_eleve_saisi) { //l'eleve n'a pas ete saisi, c'est contradictoire if ($retourne_booleen) { $this->boolSaisiesContradictoiresManquementObligation = true; return true; } $result->addCollection($temp_col); } } } //on recupere la liste des aids de l'eleve et on regarde si il y a eu des saisies pour ces aids $aids = $eleve->getAidDetailss($periode); $saisie_col_aid_id_array = $saisie_col->toKeyValue('PrimaryKey','IdAid'); foreach ($aids as $aid) { $keys = array_keys($saisie_col_aid_id_array, $aid->getId()); if (!empty($keys)) { //on a des saisies pour cette aid //est-ce que l'eleve a bien été saisi absent ? $temp_col = new PropelObjectCollection(); $bool_eleve_saisi = false; foreach ($keys as $key) { $saisie_temp = $saisie_col_array_copy[$key]; if ($saisie_temp->getEleveId() === null) { $temp_col->append($saisie_temp); } if ($this->getEleveId() == $saisie_temp->getEleveId()) { $bool_eleve_saisi = true; } } if (!$bool_eleve_saisi) { //l'eleve n'a pas ete saisi, c'est contradictoire if ($retourne_booleen) { $this->boolSaisiesContradictoiresManquementObligation = true; return true; } $result->addCollection($temp_col); } } } } $this->boolSaisiesContradictoiresManquementObligation = !$result->isEmpty(); $this->collectionSaisiesContradictoiresManquementObligation = $result; } } if ($retourne_booleen) {return $this->boolSaisiesContradictoiresManquementObligation;} return $this->collectionSaisiesContradictoiresManquementObligation; }
/** * * Retourne une liste de saisie dont la periode de temps coincide avec les dates passees en paremetre (methode optimisee) * * @param $dt_debut DateTime * @param $dt_fin DateTime * * @return PropelColection AbsenceEleveSaisie[] */ public function getAbsenceEleveSaisiesFilterByDate($dt_debut, $dt_fin) { $result = new PropelObjectCollection(); $result->setModel('AbsenceEleveSaisie'); if ($dt_debut != null && $dt_debut->format('d/m/Y') == $dt_fin->format('d/m/Y')) { //on a une date de debut et de fin le meme jour, on va optimiser un peu $saisie_col = $this->getAbsenceEleveSaisiesDuJour($dt_debut); } else { if ($this->countAbsenceEleveSaisies() > 100) { //il y a trop de saisie, on passe l'optimisation et on fait une requete db $query = AbsenceEleveSaisieQuery::create()->filterByEleve($this); $query->filterByPlageTemps($dt_debut, $dt_fin) ->leftJoinWith('AbsenceEleveSaisie.JTraitementSaisieEleve') ->leftJoinWith('JTraitementSaisieEleve.AbsenceEleveTraitement') ->leftJoinWith('AbsenceEleveTraitement.AbsenceEleveType'); return $query->distinct()->find(); } else { $saisie_col = $this->getAbsenceEleveSaisies(); } } foreach ($saisie_col as $saisie) { if ($dt_debut != null && $dt_fin!= null && $dt_debut->format('U') == $dt_fin->format('U')) { //si on a un seul dateTime pour la plage de recherche, on renvoi les saisie qui chevauchent cette date //ainsi que les saisies qui commence juste à cette date if ($dt_debut->format('U') >= $saisie->getFinAbs('U')) { continue; } if ($dt_fin != null && ($dt_fin->format('U') < $saisie->getDebutAbs('U'))) { continue; } $result->append($saisie); } else { if ($dt_debut != null && ($dt_debut->format('U') >= $saisie->getFinAbs('U'))) { continue; } if ($dt_fin != null && ($dt_fin->format('U') <= $saisie->getDebutAbs('U'))) { continue; } $result->append($saisie); } } return $result; }
/** * Initializes the $collNestedSetChildren collection. * * @return void */ public function initNestedSetChildren() { $this->collNestedSetChildren = new PropelObjectCollection(); $this->collNestedSetChildren->setModel('Page'); }
public function testManyToManyAdd() { $list = new BookClubList(); $list->setGroupLeader('Archimedes Q. Porter'); $book = new Book(); $book->setTitle("Jungle Expedition Handbook"); $book->setISBN('TEST'); $list->addBook($book); $this->assertEquals(1, $list->countBooks(), 'addCrossFk() sets the internal collection properly'); $this->assertEquals(1, $list->countBookListRels(), 'addCrossFk() sets the internal cross reference collection properly'); $list->save(); $this->assertFalse($book->isNew(), 'related object is saved if added'); $rels = $list->getBookListRels(); $rel = $rels[0]; $this->assertFalse($rel->isNew(), 'cross object is saved if added'); $list->clearBookListRels(); $list->clearBooks(); $books = $list->getBooks(); $expected = new PropelObjectCollection(array($book)); $expected->setModel('Book'); $this->assertEquals($expected, $books, 'addCrossFk() adds the object properly'); $this->assertEquals(1, $list->countBookListRels()); }
public function testToKeyValue() { $author = new Author(); $author->setId(5678); $author->setFirstName('George'); $author->setLastName('Byron'); $book = new Book(); $book->setId(9012); $book->setTitle('Don Juan'); $book->setISBN('0140422161'); $book->setPrice(12.99); $book->setAuthor($author); $coll = new PropelObjectCollection(); $coll->setModel('Book'); $coll->append($book); $this->assertCount(1, $coll); // This will call $book->getId() $this->assertEquals(array(9012 => 'Don Juan'), $coll->toKeyValue('Id', 'Title')); // This will call: $book->getAuthor()->getBooks()->getFirst()->getId() $this->assertEquals(array(9012 => 'Don Juan'), $coll->toKeyValue(array('Author', 'Books', 'First', 'Id'), 'Title')); }
public function testSetterOneToManyWithNewObjects() { // Ensure no data BookQuery::create()->deleteAll(); AuthorQuery::create()->deleteAll(); $coll = new PropelObjectCollection(); $coll->setModel('Book'); $coll[] = new Book(); $coll[] = new Book(); $coll[] = new Book(); $a = new Author(); $a->setBooks($coll); $a->save(); $this->assertEquals(3, $coll->count()); $this->assertEquals(3, count($a->getBooks())); $this->assertSame($coll, $a->getBooks()); $this->assertEquals(1, AuthorQuery::create()->count()); $this->assertEquals(3, BookQuery::create()->count()); }
public function testSetterCollectionWithNewObjects() { // Ensure no data BookQuery::create()->deleteAll(); BookClubListQuery::create()->deleteAll(); BookListRelQuery::create()->deleteAll(); $coll = new PropelObjectCollection(); $coll->setModel('Book'); for ($i = 0; $i < 3; $i++) { $b = new Book(); $b->setTitle('Title ' . $i); $b->setIsbn('1245' . $i); $coll[] = $b; } $bookClubList = new BookClubList(); $bookClubList->setGroupLeader('Something'); $bookClubList->setBooks($coll); $bookClubList->save(); $this->assertEquals(3, $coll->count()); $this->assertEquals(3, count($bookClubList->getBooks())); $this->assertSame($coll, $bookClubList->getBooks()); $this->assertEquals(3, BookQuery::create()->count()); $this->assertEquals(1, BookClubListQuery::create()->count()); $this->assertEquals(3, BookListRelQuery::create()->count()); }
public function testSetterOneToManyWithNewObjects() { // Ensure no data BookQuery::create()->deleteAll(); AuthorQuery::create()->deleteAll(); $coll = new PropelObjectCollection(); $coll->setModel('Book'); for ($i = 0; $i < 3; $i++) { $b = new Book(); $b->setTitle('Book ' . $i); $b->setIsbn('124' . $i); $coll[] = $b; } $a = new Author(); $a->setFirstName('Foo'); $a->setLastName('Bar'); $a->setBooks($coll); $a->save(); $this->assertEquals(3, $coll->count()); $this->assertEquals(3, count($a->getBooks())); $this->assertSame($coll, $a->getBooks()); $this->assertEquals(1, AuthorQuery::create()->count()); $this->assertEquals(3, BookQuery::create()->count()); }
public function testToStringUsesCustomStringFormat() { $coll = new PropelObjectCollection(); $coll->setModel('Publisher'); $publisher = new Publisher(); $publisher->setId(12345); $publisher->setName('Penguinoo'); $coll[] = $publisher; $expected = <<<EOF <?xml version="1.0" encoding="UTF-8"?> <data> <Publisher> <Id>12345</Id> <Name><![CDATA[Penguinoo]]></Name> </Publisher> </data> EOF; $this->assertEquals($expected, (string) $coll); }
public function testSetterCollectionWithNewObjects() { // Ensure no data BookQuery::create()->deleteAll(); BookClubListQuery::create()->deleteAll(); BookListRelQuery::create()->deleteAll(); $coll = new PropelObjectCollection(); $coll->setModel('Book'); $coll[] = new Book(); $coll[] = new Book(); $coll[] = new Book(); $bookClubList = new BookClubList(); $bookClubList->setBooks($coll); $bookClubList->save(); $this->assertEquals(3, $coll->count()); $this->assertEquals(3, count($bookClubList->getBooks())); $this->assertSame($coll, $bookClubList->getBooks()); $this->assertEquals(3, BookQuery::create()->count()); $this->assertEquals(1, BookClubListQuery::create()->count()); $this->assertEquals(3, BookListRelQuery::create()->count()); }
public function testToArrayDeep() { $author = new Author(); $author->setId(5678); $author->setFirstName('George'); $author->setLastName('Byron'); $book = new Book(); $book->setId(9012); $book->setTitle('Don Juan'); $book->setISBN('0140422161'); $book->setPrice(12.99); $book->setAuthor($author); $coll = new PropelObjectCollection(); $coll->setModel('Book'); $coll[] = $book; $expected = array(array('Id' => 9012, 'Title' => 'Don Juan', 'ISBN' => '0140422161', 'Price' => 12.99, 'PublisherId' => null, 'AuthorId' => 5678, 'Author' => array('Id' => 5678, 'FirstName' => 'George', 'LastName' => 'Byron', 'Email' => null, 'Age' => null, 'Books' => array('Book_0' => '*RECURSION*')))); $this->assertEquals($expected, $coll->toArray()); }
/** * Makes an additional query to populate the objects related to the collection objects * by a certain relation * * @param string $relation Relation name (e.g. 'Book') * @param Criteria $criteria Optional Criteria object to filter the related object collection * @param PropelPDO $con Optional connection object * * @return PropelObjectCollection The list of related objects * * @throws PropelException */ public function populateRelation($relation, $criteria = null, $con = null) { if (!Propel::isInstancePoolingEnabled()) { throw new PropelException('populateRelation() needs instance pooling to be enabled prior to populating the collection'); } $relationMap = $this->getFormatter()->getTableMap()->getRelation($relation); if ($this->isEmpty()) { // save a useless query and return an empty collection $coll = new PropelObjectCollection(); $coll->setModel($relationMap->getRightTable()->getClassname()); return $coll; } $symRelationMap = $relationMap->getSymmetricalRelation(); $query = PropelQuery::from($relationMap->getRightTable()->getClassname()); if (null !== $criteria) { $query->mergeWith($criteria); } // query the db for the related objects $filterMethod = 'filterBy' . $symRelationMap->getName(); $relatedObjects = $query->{$filterMethod}($this)->find($con); if ($relationMap->getType() == RelationMap::ONE_TO_MANY) { // initialize the embedded collections of the main objects $relationName = $relationMap->getName(); foreach ($this as $mainObj) { $mainObj->initRelation($relationName); } // associate the related objects to the main objects $getMethod = 'get' . $symRelationMap->getName(); $addMethod = 'add' . $relationName; foreach ($relatedObjects as $object) { $mainObj = $object->{$getMethod}(); // instance pool is used here to avoid a query $mainObj->{$addMethod}($object); } $relatedObjects->clearIterator(); } elseif ($relationMap->getType() == RelationMap::MANY_TO_ONE) { // nothing to do; the instance pool will catch all calls to getRelatedObject() // and return the object in memory } else { throw new PropelException('populateRelation() does not support this relation type'); } return $relatedObjects; }
/** * * Renvoi la liste de tout les responsables légaux des saisies associees a ce traitement * * @return PropelObjectCollection collection d'objets de la classe ResponsableInformation * */ public function getResponsablesInformationsSaisies() { $resp_col = new PropelObjectCollection(); $resp_col->setModel('ResponsableInformation'); foreach ($this->getAbsenceEleveSaisies() as $saisie) { $eleve = $saisie->getEleve(); if ($eleve!= null) { foreach ($eleve->getResponsableInformations() as $responsable_information) { $resp_col->add($responsable_information); } } } return $resp_col; }