/** * This is run after each unit test. It empties the database. */ protected function tearDown() { BookstoreDataPopulator::depopulate(); $this->assertEquals(0, count(BookPeer::doSelect(new Criteria())), "Expect book table to be empty."); $this->assertEquals(0, count(AuthorPeer::doSelect(new Criteria())), "Expect author table to be empty."); $this->assertEquals(0, count(PublisherPeer::doSelect(new Criteria())), "Expect publisher table to be empty."); $this->assertEquals(0, count(ReviewPeer::doSelect(new Criteria())), "Expect review table to be empty."); $this->assertEquals(0, count(MediaPeer::doSelect(new Criteria())), "Expect media table to be empty."); $this->assertEquals(0, count(BookstoreEmployeePeer::doSelect(new Criteria())), "Expect bookstore_employee table to be empty."); $this->assertEquals(0, count(BookstoreEmployeeAccountPeer::doSelect(new Criteria())), "Expect bookstore_employee_account table to be empty."); $this->assertEquals(0, count(BookstoreSalePeer::doSelect(new Criteria())), "Expect bookstore_sale table to be empty."); BookPeer::clearInstancePool(); $this->assertEquals(0, count(BookPeer::$instances), "Expected 0 Book instances after clearInstancePool()"); AuthorPeer::clearInstancePool(); $this->assertEquals(0, count(AuthorPeer::$instances), "Expected 0 Author instances after clearInstancePool()"); PublisherPeer::clearInstancePool(); $this->assertEquals(0, count(PublisherPeer::$instances), "Expected 0 Publisher instances after clearInstancePool()"); ReviewPeer::clearInstancePool(); $this->assertEquals(0, count(ReviewPeer::$instances), "Expected 0 Review instances after clearInstancePool()"); MediaPeer::clearInstancePool(); $this->assertEquals(0, count(MediaPeer::$instances), "Expected 0 Media instances after clearInstancePool()"); BookstoreEmployeePeer::clearInstancePool(); $this->assertEquals(0, count(BookstoreEmployeePeer::$instances), "Expected 0 BookstoreEmployee instances after clearInstancePool()"); BookstoreEmployeeAccountPeer::clearInstancePool(); $this->assertEquals(0, count(BookstoreEmployeeAccountPeer::$instances), "Expected 0 BookstoreEmployeeAccount instances after clearInstancePool()"); BookstoreSalePeer::clearInstancePool(); $this->assertEquals(0, count(BookstoreSalePeer::$instances), "Expected 0 BookstoreSale instances after clearInstancePool()"); parent::tearDown(); }
function check_tables_empty() { try { print "\nChecking to see that tables are empty\n"; print "-------------------------------------\n\n"; print "Ensuring that there are no records in [author] table: "; $res = AuthorPeer::doSelect(new Criteria()); print boolTest(empty($res)); print "Ensuring that there are no records in [publisher] table: "; $res2 = PublisherPeer::doSelect(new Criteria()); print boolTest(empty($res2)); print "Ensuring that there are no records in [book] table: "; $res3 = AuthorPeer::doSelect(new Criteria()); print boolTest(empty($res3)); print "Ensuring that there are no records in [review] table: "; $res4 = ReviewPeer::doSelect(new Criteria()); print boolTest(empty($res4)); print "Ensuring that there are no records in [media] table: "; $res5 = MediaPeer::doSelect(new Criteria()); print boolTest(empty($res5)); print "Ensuring that there are no records in [book_club_list] table: "; $res6 = BookClubListPeer::doSelect(new Criteria()); print boolTest(empty($res6)); print "Ensuring that there are no records in [book_x_list] table: "; $res7 = BookListRelPeer::doSelect(new Criteria()); print boolTest(empty($res7)); return empty($res) && empty($res2) && empty($res3) && empty($res4) && empty($res5); } catch (Exception $e) { die("Error ensuring tables were empty: " . $e->__toString()); } }
public function testAddSelectColumnsAliasLazyLoad() { $c = new Criteria(); MediaPeer::addSelectColumns($c, 'bar'); $expected = array('bar.ID', 'bar.BOOK_ID'); $this->assertEquals($expected, $c->getSelectColumns(), 'addSelectColumns() does not add lazy loaded columns but uses the second parameter as an alias'); }
protected function emptyTables() { $res1 = AuthorPeer::doSelect(new Criteria()); $res2 = PublisherPeer::doSelect(new Criteria()); $res3 = AuthorPeer::doSelect(new Criteria()); $res4 = ReviewPeer::doSelect(new Criteria()); $res5 = MediaPeer::doSelect(new Criteria()); $res6 = BookClubListPeer::doSelect(new Criteria()); $res7 = BookListRelPeer::doSelect(new Criteria()); }
protected function emptyTables() { $res1 = AuthorPeer::doDeleteAll(); $res2 = PublisherPeer::doDeleteAll(); $res3 = AuthorPeer::doDeleteAll(); $res4 = ReviewPeer::doDeleteAll(); $res5 = MediaPeer::doDeleteAll(); $res6 = BookClubListPeer::doDeleteAll(); $res7 = BookListRelPeer::doDeleteAll(); }
public static function getOtherImages($parentId, $className) { if ($parentId) { $c = new Criteria(); $c->add(MediaPeer::CLASS_NAME, $className); $c->add(MediaPeer::IS_MAIN, 1, Criteria::NOT_EQUAL); $c->add(MediaPeer::PARENT_ID, $parentId); $c->add(MediaPeer::TYPE, self::IMAGE); return MediaPeer::doSelect($c); } else { return null; } }
public function executeDelete(sfWebRequest $request) { if (!$this->hasRequestParameter('id')) { $request->checkCSRFProtection(); } $this->forward404Unless($Media = MediaPeer::retrieveByPk($request->getParameter('id')), sprintf('Object Media does not exist (%s).', $request->getParameter('id'))); //Delete files from file system. unlink(sfConfig::get('sf_upload_dir') . "/" . $Media->getId() . "." . $Media->getExt()); unlink(sfConfig::get('sf_upload_dir') . "/th_" . $Media->getId() . "." . $Media->getExt()); $Media->delete(); if ($this->hasRequestParameter('parent')) { $configId = $this->getRequestParameter('parent'); $this->redirect('config/editconfig?id=' . $configId); } else { $this->redirect('media/index'); } }
public function testLobSetting_WriteMode() { $blob_path = $this->getLobFile('tin_drum.gif'); $blob2_path = $this->getLobFile('propel.gif'); $clob_path = $this->getLobFile('tin_drum.txt'); $book = BookPeer::doSelectOne(new Criteria()); $m1 = new Media(); $m1->setBook($book); $m1->setCoverImage(file_get_contents($blob_path)); $m1->setExcerpt(file_get_contents($clob_path)); $m1->save(); MediaPeer::clearInstancePool(); // make sure we have the latest from the db: $m2 = MediaPeer::retrieveByPK($m1->getId()); // now attempt to assign a temporary stream, opened in 'w' mode, to the db $stream = fopen("php://memory", 'w'); fwrite($stream, file_get_contents($blob2_path)); $m2->setCoverImage($stream); $m2->save(); fclose($stream); $m2->reload(); $this->assertEquals(md5(file_get_contents($blob2_path)), md5(stream_get_contents($m2->getCoverImage())), "Expected contents to match when setting stream w/ 'w' mode"); $stream2 = fopen("php://memory", 'w+'); fwrite($stream2, file_get_contents($blob_path)); rewind($stream2); $this->assertEquals(md5(file_get_contents($blob_path)), md5(stream_get_contents($stream2)), "Expecting setup to be correct"); $m2->setCoverImage($stream2); $m2->save(); $m2->reload(); $this->assertEquals(md5(file_get_contents($blob_path)), md5(stream_get_contents($m2->getCoverImage())), "Expected contents to match when setting stream w/ 'w+' mode"); }
/** * Test the toArray() method with new lazyLoad param. * @link http://propel.phpdb.org/trac/ticket/527 */ public function testToArrayLazyLoad() { $c = new Criteria(); $c->add(MediaPeer::COVER_IMAGE, null, Criteria::NOT_EQUAL); $c->add(MediaPeer::EXCERPT, null, Criteria::NOT_EQUAL); $m = MediaPeer::doSelectOne($c); if ($m === null) { $this->fail("Test requires at least one media row w/ cover_image and excerpt NOT NULL"); } $arr1 = $m->toArray(BasePeer::TYPE_COLNAME); $this->assertNotNull($arr1[MediaPeer::COVER_IMAGE]); $this->assertType('resource', $arr1[MediaPeer::COVER_IMAGE]); $arr2 = $m->toArray(BasePeer::TYPE_COLNAME, false); $this->assertNull($arr2[MediaPeer::COVER_IMAGE]); $this->assertNull($arr2[MediaPeer::EXCERPT]); $diffKeys = array_keys(array_diff($arr1, $arr2)); $expectedDiff = array(MediaPeer::COVER_IMAGE, MediaPeer::EXCERPT); $this->assertEquals($expectedDiff, $diffKeys); }
/** * Test the doDeleteAll() method when onDelete="CASCADE". */ public function testDoDeleteAll_Cascade() { BookPeer::doDeleteAll(); $this->assertEquals(0, count(MediaPeer::doSelect(new Criteria())), "Expect all media rows to have been cascade deleted."); $this->assertEquals(0, count(ReviewPeer::doSelect(new Criteria())), "Expect all review rows to have been cascade deleted."); }
public function execute($request) { //get params $this->brand = $this->getRequestParameter('brand'); $this->series = $this->getRequestParameter('series'); $this->model = $this->getRequestParameter('model'); $this->configId = $this->getRequestParameter('config_id'); //get image files $this->mainImage = $this->getRequest()->getFiles('main_image'); $this->otherImages = $this->getRequest()->getFiles('other_images'); //print_r($this->otherImages); //exit (); //load/create series and model if (SeriesPeer::isNew($this->series)) { //create new series $seriesObj = new Series(); $seriesObj->setSeriesName($this->series); $seriesObj->setBrandId($this->brand); $seriesObj->save(); //create new model $modelObj = new Model(); $modelObj->setModelName($this->model); $modelObj->setSeries($seriesObj); $modelObj->save(); } else { //load series object $seriesObj = SeriesPeer::getSeriesByName($this->series); if (ModelPeer::isNew($this->model)) { //create new model $modelObj = new Model(); $modelObj->setModelName($this->model); $modelObj->setSeries($seriesObj); $modelObj->save(); } else { $modelObj = ModelPeer::getModelByName($this->model); } } ////////////////////// if (($this->isNew = $this->getRequestParameter('is_new')) == 'true') { //create new config $config = new Config(); $config->setConfigName($this->getRequestParameter('name')); $config->setModel($modelObj); $config->save(); //load config fields $configFields = ConfigFieldPeer::doSelect(new Criteria()); foreach ($configFields as $configField) { //get param if ($this->hasRequestParameter("field_" . $configField->getId())) { //if (strlen($this->getRequestParameter("field_".$configField->getId())) > 0 ) //{ $fieldValue = new FieldValue(); $fieldValue->setConfig($config); $fieldValue->setFieldId($configField->getId()); $fieldValue->setValue($this->getRequestParameter("field_" . $configField->getId())); $fieldValue->save(); //} } } } else { //load config $config = ConfigPeer::retrieveByPK($this->configId); //$config->setConfigName($this->getRequestParameter('name')); $config->setModel($modelObj); $config->save(); //load config fields $configFields = ConfigFieldPeer::doSelect(new Criteria()); foreach ($configFields as $configField) { //get param if ($this->hasRequestParameter("field_" . $configField->getId())) { //if (strlen($this->getRequestParameter("field_".$configField->getId())) > 0 ) //{ $fieldValue = FieldValuePeer::getFieldValue($configField->getId(), $config->getId()); $fieldValue->setValue($this->getRequestParameter("field_" . $configField->getId())); $fieldValue->save(); //} } } } //save main image MediaPeer::saveMedia($this->mainImage, $modelObj->getId(), MediaPeer::IMAGE, 'Model', true); //save other images foreach ($this->otherImages as $image) { MediaPeer::saveMedia($image, $modelObj->getId(), MediaPeer::IMAGE, 'Model', false); } if (($saveAndNew = $this->getRequestParameter('save_and_new')) == 'true') { $this->redirect('config/newconfig'); } else { $this->redirect('config/editconfig?id=' . $config->getId()); } }
public function executeUploadBanners() { $this->setLayout("backend"); $c = new Criteria(); $c->add(PrefPeer::LABEL, "newsletter"); $info = PrefPeer::doSelectOne($c); if (!$info) { $info = new Pref(); $info->setLabel("newsletter"); $info->save(); } if ($this->getRequestParameter('submitted')) { $request = $this->getRequest(); try { $request->setParameter('parent', $info->getId()); if ($request->getFileName('banner1')) { $request->setParameter('id', $this->getRequestParameter('banner1Id')); $request->setParameter('attrLabel', 'newsletter468x60'); $media = Media::upload('banner1', "upload/newsletter", array("image/gif", "image/png", "image/jpeg", "image/pjpeg", "image/x-png")); if ($media && $media->IsImage()) { $media->resizeImage(null, 60, 468); $media->resizeImage("thumbs", 30, 231); } } if (!$media) { $media = Document::getDocumentInstance($this->getRequestParameter('banner1Id')); } if ($media) { $media->setDescription($this->getRequestParameter('banner1Url')); $media->save(); } if ($request->getFileName('banner2')) { $request->setParameter('id', $this->getRequestParameter('banner2Id')); $request->setParameter('attrLabel', 'newsletter160x600'); $media2 = Media::upload('banner2', "upload/newsletter", array("image/gif", "image/png", "image/jpeg", "image/pjpeg", "image/x-png")); if ($media2 && $media2->IsImage()) { $media2->resizeImage(null, 600, 160); $media2->resizeImage("thumbs", 125, 40); } } if (!$media2) { $media2 = Document::getDocumentInstance($this->getRequestParameter('banner2Id')); } if ($media2) { $media2->setDescription($this->getRequestParameter('banner2Url')); $media2->save(); } $infoVal = $this->getRequestParameter('info'); if (!$infoVal) { $infoVal = null; } $info->setContent($infoVal); $info->save(); } catch (Exception $e) { $this->message = UtilsHelper::Localize("media.backend." . $e->getMessage()); } } $c = new Criteria(); $c->add(PrefPeer::LABEL, "newsletter"); $this->info = PrefPeer::doSelectOne($c); $c = new Criteria(); $c->add(MediaPeer::LABEL, "newsletter468x60"); $this->banner1 = MediaPeer::doSelectOne($c); $c = new Criteria(); $c->add(MediaPeer::LABEL, "newsletter160x600"); $this->banner2 = MediaPeer::doSelectOne($c); }
/** * Populates the object using an array. * * This is particularly useful when populating an object from one of the * request arrays (e.g. $_POST). This method goes through the column * names, checking to see whether a matching key exists in populated * array. If so the setByName() method is called for that column. * * You can specify the key type of the array by additionally passing one * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. * The default key type is the column's phpname (e.g. 'AuthorId') * * @param array $arr An array to populate the object from. * @param string $keyType The type of keys the array uses. * @return void */ public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = MediaPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setId($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setParentId($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setTitle($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setType($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setClassName($arr[$keys[4]]); } if (array_key_exists($keys[5], $arr)) { $this->setExt($arr[$keys[5]]); } if (array_key_exists($keys[6], $arr)) { $this->setIsMain($arr[$keys[6]]); } if (array_key_exists($keys[7], $arr)) { $this->setPath($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { $this->setCreatedAt($arr[$keys[8]]); } if (array_key_exists($keys[9], $arr)) { $this->setUpdatedAt($arr[$keys[9]]); } }
} else { ?> <?php echo input_file_tag('main_image', array()); ?> <?php } ?> </div> <div class="other-image"> <fieldset> <legend>Other Images</legend> <?php $medias = MediaPeer::getOtherImages($model->getId(), 'Model'); ?> <?php foreach ($medias as $media) { ?> <div class="edit-media-item"> <?php echo image_tag(public_path('uploads/th_' . $media->getId() . '.' . $media->getExt()), array()); ?> <div><?php echo link_to('Delete', 'media/delete?id=' . $media->getId() . '&parent=' . $config->getId(), array('confirm' => 'Are you sure?')); ?> </div> </div> <?php }
public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = MediaPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setId($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setLabel($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setDescription($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setFilename($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setFiledirpath($arr[$keys[4]]); } if (array_key_exists($keys[5], $arr)) { $this->setFiletype($arr[$keys[5]]); } if (array_key_exists($keys[6], $arr)) { $this->setFilesize($arr[$keys[6]]); } if (array_key_exists($keys[7], $arr)) { $this->setCreatedAt($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { $this->setUpdatedAt($arr[$keys[8]]); } if (array_key_exists($keys[9], $arr)) { $this->setPublicationStatus($arr[$keys[9]]); } }
/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param PropelPDO $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, PropelPDO $con = null) { if ($con === null) { $con = Propel::getConnection(MediaPeer::DATABASE_NAME, Propel::CONNECTION_READ); } $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(MediaPeer::DATABASE_NAME); $criteria->add(MediaPeer::ID, $pks, Criteria::IN); $objs = MediaPeer::doSelect($criteria, $con); } return $objs; }
public static function depopulate($con = null) { if ($con === null) { $con = Propel::getConnection(BookPeer::DATABASE_NAME); } $con->beginTransaction(); AuthorPeer::doDeleteAll($con); BookstorePeer::doDeleteAll($con); BookstoreContestPeer::doDeleteAll($con); BookstoreContestEntryPeer::doDeleteAll($con); BookstoreEmployeePeer::doDeleteAll($con); BookstoreEmployeeAccountPeer::doDeleteAll($con); BookstoreSalePeer::doDeleteAll($con); BookClubListPeer::doDeleteAll($con); BookOpinionPeer::doDeleteAll($con); BookReaderPeer::doDeleteAll($con); BookListRelPeer::doDeleteAll($con); BookPeer::doDeleteAll($con); ContestPeer::doDeleteAll($con); CustomerPeer::doDeleteAll($con); MediaPeer::doDeleteAll($con); PublisherPeer::doDeleteAll($con); ReaderFavoritePeer::doDeleteAll($con); ReviewPeer::doDeleteAll($con); $con->commit(); }
/** * Populates the object using an array. * * This is particularly useful when populating an object from one of the * request arrays (e.g. $_POST). This method goes through the column * names, checking to see whether a matching key exists in populated * array. If so the setByName() method is called for that column. * * You can specify the key type of the array by additionally passing one * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. * The default key type is the column's phpname (e.g. 'AuthorId') * * @param array $arr An array to populate the object from. * @param string $keyType The type of keys the array uses. * @return void */ public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = MediaPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setIdmedia($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setTipo($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setIdpolitico($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setIdpartido($arr[$keys[3]]); } }
public function testScenarioUsingQuery() { // Add publisher records // --------------------- try { $scholastic = new Publisher(); $scholastic->setName("Scholastic"); // do not save, will do later to test cascade $morrow = new Publisher(); $morrow->setName("William Morrow"); $morrow->save(); $morrow_id = $morrow->getId(); $penguin = new Publisher(); $penguin->setName("Penguin"); $penguin->save(); $penguin_id = $penguin->getId(); $vintage = new Publisher(); $vintage->setName("Vintage"); $vintage->save(); $vintage_id = $vintage->getId(); $this->assertTrue(true, 'Save Publisher records'); } catch (Exception $e) { $this->fail('Save publisher records'); } // Add author records // ------------------ try { $rowling = new Author(); $rowling->setFirstName("J.K."); $rowling->setLastName("Rowling"); // do not save, will do later to test cascade $stephenson = new Author(); $stephenson->setFirstName("Neal"); $stephenson->setLastName("Stephenson"); $stephenson->save(); $stephenson_id = $stephenson->getId(); $byron = new Author(); $byron->setFirstName("George"); $byron->setLastName("Byron"); $byron->save(); $byron_id = $byron->getId(); $grass = new Author(); $grass->setFirstName("Gunter"); $grass->setLastName("Grass"); $grass->save(); $grass_id = $grass->getId(); $this->assertTrue(true, 'Save Author records'); } catch (Exception $e) { $this->fail('Save Author records'); } // Add book records // ---------------- try { $phoenix = new Book(); $phoenix->setTitle("Harry Potter and the Order of the Phoenix"); $phoenix->setISBN("043935806X"); $phoenix->setAuthor($rowling); $phoenix->setPublisher($scholastic); $phoenix->save(); $phoenix_id = $phoenix->getId(); $this->assertFalse($rowling->isNew(), 'saving book also saves related author'); $this->assertFalse($scholastic->isNew(), 'saving book also saves related publisher'); $qs = new Book(); $qs->setISBN("0380977427"); $qs->setTitle("Quicksilver"); $qs->setAuthor($stephenson); $qs->setPublisher($morrow); $qs->save(); $qs_id = $qs->getId(); $dj = new Book(); $dj->setISBN("0140422161"); $dj->setTitle("Don Juan"); $dj->setAuthor($byron); $dj->setPublisher($penguin); $dj->save(); $dj_id = $qs->getId(); $td = new Book(); $td->setISBN("067972575X"); $td->setTitle("The Tin Drum"); $td->setAuthor($grass); $td->setPublisher($vintage); $td->save(); $td_id = $td->getId(); $this->assertTrue(true, 'Save Book records'); } catch (Exception $e) { $this->fail('Save Author records'); } // Add review records // ------------------ try { $r1 = new Review(); $r1->setBook($phoenix); $r1->setReviewedBy("Washington Post"); $r1->setRecommended(true); $r1->setReviewDate(time()); $r1->save(); $r1_id = $r1->getId(); $r2 = new Review(); $r2->setBook($phoenix); $r2->setReviewedBy("New York Times"); $r2->setRecommended(false); $r2->setReviewDate(time()); $r2->save(); $r2_id = $r2->getId(); $this->assertTrue(true, 'Save Review records'); } catch (Exception $e) { $this->fail('Save Review records'); } // Perform a "complex" search // -------------------------- $results = BookQuery::create()->filterByTitle('Harry%')->find(); $this->assertEquals(1, count($results)); $results = BookQuery::create()->where('Book.ISBN IN ?', array("0380977427", "0140422161"))->find(); $this->assertEquals(2, count($results)); // Perform a "limit" search // ------------------------ $results = BookQuery::create()->limit(2)->offset(1)->orderByTitle()->find(); $this->assertEquals(2, count($results)); // we ordered on book title, so we expect to get $this->assertEquals("Harry Potter and the Order of the Phoenix", $results[0]->getTitle()); $this->assertEquals("Quicksilver", $results[1]->getTitle()); // Perform a lookup & update! // -------------------------- // Updating just-created book title // First finding book by PK (=$qs_id) .... $qs_lookup = BookQuery::create()->findPk($qs_id); $this->assertNotNull($qs_lookup, 'just-created book can be found by pk'); $new_title = "Quicksilver (" . crc32(uniqid(rand())) . ")"; // Attempting to update found object $qs_lookup->setTitle($new_title); $qs_lookup->save(); // Making sure object was correctly updated: "; $qs_lookup2 = BookQuery::create()->findPk($qs_id); $this->assertEquals($new_title, $qs_lookup2->getTitle()); // Test some basic DATE / TIME stuff // --------------------------------- // that's the control timestamp. $control = strtotime('2004-02-29 00:00:00'); // should be two in the db $r = ReviewQuery::create()->findOne(); $r_id = $r->getId(); $r->setReviewDate($control); $r->save(); $r2 = ReviewQuery::create()->findPk($r_id); $this->assertEquals(new Datetime('2004-02-29 00:00:00'), $r2->getReviewDate(null), 'ability to fetch DateTime'); $this->assertEquals($control, $r2->getReviewDate('U'), 'ability to fetch native unix timestamp'); $this->assertEquals('2-29-2004', $r2->getReviewDate('n-j-Y'), 'ability to use date() formatter'); // Handle BLOB/CLOB Columns // ------------------------ $blob_path = dirname(__FILE__) . '/../../etc/lob/tin_drum.gif'; $blob2_path = dirname(__FILE__) . '/../../etc/lob/propel.gif'; $clob_path = dirname(__FILE__) . '/../../etc/lob/tin_drum.txt'; $m1 = new Media(); $m1->setBook($phoenix); $m1->setCoverImage(file_get_contents($blob_path)); $m1->setExcerpt(file_get_contents($clob_path)); $m1->save(); $m1_id = $m1->getId(); $m1_lookup = MediaQuery::create()->findPk($m1_id); $this->assertNotNull($m1_lookup, 'Can find just-created media item'); $this->assertEquals(md5(file_get_contents($blob_path)), md5(stream_get_contents($m1_lookup->getCoverImage())), 'BLOB was correctly updated'); $this->assertEquals(file_get_contents($clob_path), (string) $m1_lookup->getExcerpt(), 'CLOB was correctly updated'); // now update the BLOB column and save it & check the results $m1_lookup->setCoverImage(file_get_contents($blob2_path)); $m1_lookup->save(); $m2_lookup = MediaQuery::create()->findPk($m1_id); $this->assertNotNull($m2_lookup, 'Can find just-created media item'); $this->assertEquals(md5(file_get_contents($blob2_path)), md5(stream_get_contents($m2_lookup->getCoverImage())), 'BLOB was correctly overwritten'); // Test Validators // --------------- require_once 'tools/helpers/bookstore/validator/ISBNValidator.php'; $bk1 = new Book(); $bk1->setTitle("12345"); // min length is 10 $ret = $bk1->validate(); $this->assertFalse($ret, 'validation failed'); $failures = $bk1->getValidationFailures(); $this->assertEquals(1, count($failures), '1 validation message was returned'); $el = array_shift($failures); $this->assertContains("must be more than", $el->getMessage(), 'Expected validation message was returned'); $bk2 = new Book(); $bk2->setTitle("Don Juan"); $ret = $bk2->validate(); $this->assertFalse($ret, 'validation failed'); $failures = $bk2->getValidationFailures(); $this->assertEquals(1, count($failures), '1 validation message was returned'); $el = array_shift($failures); $this->assertContains("Book title already in database.", $el->getMessage(), 'Expected validation message was returned'); //Now trying some more complex validation. $auth1 = new Author(); $auth1->setFirstName("Hans"); // last name required; will fail $bk1->setAuthor($auth1); $rev1 = new Review(); $rev1->setReviewDate("08/09/2001"); // will fail: reviewed_by column required $bk1->addReview($rev1); $ret2 = $bk1->validate(); $this->assertFalse($ret2, 'validation failed'); $failures2 = $bk1->getValidationFailures(); $this->assertEquals(3, count($failures2), '3 validation messages were returned'); $expectedKeys = array(AuthorPeer::LAST_NAME, BookPeer::TITLE, ReviewPeer::REVIEWED_BY); $this->assertEquals($expectedKeys, array_keys($failures2), 'correct columns failed'); $bk2 = new Book(); $bk2->setTitle("12345678901"); // passes $auth2 = new Author(); $auth2->setLastName("Blah"); //passes $auth2->setEmail("*****@*****.**"); //passes $auth2->setAge(50); //passes $bk2->setAuthor($auth2); $rev2 = new Review(); $rev2->setReviewedBy("Me!"); // passes $rev2->setStatus("new"); // passes $bk2->addReview($rev2); $ret3 = $bk2->validate(); $this->assertTrue($ret3, 'complex validation can pass'); // Testing doCount() functionality // ------------------------------- // old way $c = new Criteria(); $records = BookPeer::doSelect($c); $count = BookPeer::doCount($c); $this->assertEquals($count, count($records), 'correct number of results'); // new way $count = BookQuery::create()->count(); $this->assertEquals($count, count($records), 'correct number of results'); // Test many-to-many relationships // --------------- // init book club list 1 with 2 books $blc1 = new BookClubList(); $blc1->setGroupLeader("Crazyleggs"); $blc1->setTheme("Happiness"); $brel1 = new BookListRel(); $brel1->setBook($phoenix); $brel2 = new BookListRel(); $brel2->setBook($dj); $blc1->addBookListRel($brel1); $blc1->addBookListRel($brel2); $blc1->save(); $this->assertNotNull($blc1->getId(), 'BookClubList 1 was saved'); // init book club list 2 with 1 book $blc2 = new BookClubList(); $blc2->setGroupLeader("John Foo"); $blc2->setTheme("Default"); $brel3 = new BookListRel(); $brel3->setBook($phoenix); $blc2->addBookListRel($brel3); $blc2->save(); $this->assertNotNull($blc2->getId(), 'BookClubList 2 was saved'); // re-fetch books and lists from db to be sure that nothing is cached $crit = new Criteria(); $crit->add(BookPeer::ID, $phoenix->getId()); $phoenix = BookPeer::doSelectOne($crit); $this->assertNotNull($phoenix, "book 'phoenix' has been re-fetched from db"); $crit = new Criteria(); $crit->add(BookClubListPeer::ID, $blc1->getId()); $blc1 = BookClubListPeer::doSelectOne($crit); $this->assertNotNull($blc1, 'BookClubList 1 has been re-fetched from db'); $crit = new Criteria(); $crit->add(BookClubListPeer::ID, $blc2->getId()); $blc2 = BookClubListPeer::doSelectOne($crit); $this->assertNotNull($blc2, 'BookClubList 2 has been re-fetched from db'); $relCount = $phoenix->countBookListRels(); $this->assertEquals(2, $relCount, "book 'phoenix' has 2 BookListRels"); $relCount = $blc1->countBookListRels(); $this->assertEquals(2, $relCount, 'BookClubList 1 has 2 BookListRels'); $relCount = $blc2->countBookListRels(); $this->assertEquals(1, $relCount, 'BookClubList 2 has 1 BookListRel'); // Cleanup (tests DELETE) // ---------------------- // Removing books that were just created // First finding book by PK (=$phoenix_id) .... $hp = BookQuery::create()->findPk($phoenix_id); $this->assertNotNull($hp, 'Could find just-created book'); // Attempting to delete [multi-table] by found pk $c = new Criteria(); $c->add(BookPeer::ID, $hp->getId()); // The only way for cascading to work currently // is to specify the author_id and publisher_id (i.e. the fkeys // have to be in the criteria). $c->add(AuthorPeer::ID, $hp->getAuthor()->getId()); $c->add(PublisherPeer::ID, $hp->getPublisher()->getId()); $c->setSingleRecord(true); BookPeer::doDelete($c); // Checking to make sure correct records were removed. $this->assertEquals(3, AuthorPeer::doCount(new Criteria()), 'Correct records were removed from author table'); $this->assertEquals(3, PublisherPeer::doCount(new Criteria()), 'Correct records were removed from publisher table'); $this->assertEquals(3, BookPeer::doCount(new Criteria()), 'Correct records were removed from book table'); // Attempting to delete books by complex criteria BookQuery::create()->filterByISBN("043935806X")->orWhere('Book.ISBN = ?', "0380977427")->orWhere('Book.ISBN = ?', "0140422161")->delete(); // Attempting to delete book [id = $td_id] $td->delete(); // Attempting to delete authors AuthorQuery::create()->filterById($stephenson_id)->delete(); AuthorQuery::create()->filterById($byron_id)->delete(); $grass->delete(); // Attempting to delete publishers PublisherQuery::create()->filterById($morrow_id)->delete(); PublisherQuery::create()->filterById($penguin_id)->delete(); $vintage->delete(); // These have to be deleted manually also since we have onDelete // set to SETNULL in the foreign keys in book. Is this correct? $rowling->delete(); $scholastic->delete(); $blc1->delete(); $blc2->delete(); $this->assertEquals(array(), AuthorPeer::doSelect(new Criteria()), 'no records in [author] table'); $this->assertEquals(array(), PublisherPeer::doSelect(new Criteria()), 'no records in [publisher] table'); $this->assertEquals(array(), BookPeer::doSelect(new Criteria()), 'no records in [book] table'); $this->assertEquals(array(), ReviewPeer::doSelect(new Criteria()), 'no records in [review] table'); $this->assertEquals(array(), MediaPeer::doSelect(new Criteria()), 'no records in [media] table'); $this->assertEquals(array(), BookClubListPeer::doSelect(new Criteria()), 'no records in [book_club_list] table'); $this->assertEquals(array(), BookListRelPeer::doSelect(new Criteria()), 'no records in [book_x_list] table'); }
public static function depopulate() { AcctAccessRolePeer::doDeleteAll(); AuthorPeer::doDeleteAll(); BookstorePeer::doDeleteAll(); BookstoreContestPeer::doDeleteAll(); BookstoreContestEntryPeer::doDeleteAll(); BookstoreEmployeePeer::doDeleteAll(); BookstoreEmployeeAccountPeer::doDeleteAll(); BookstoreSalePeer::doDeleteAll(); BookClubListPeer::doDeleteAll(); BookOpinionPeer::doDeleteAll(); BookReaderPeer::doDeleteAll(); BookListRelPeer::doDeleteAll(); BookPeer::doDeleteAll(); ContestPeer::doDeleteAll(); CustomerPeer::doDeleteAll(); MediaPeer::doDeleteAll(); PublisherPeer::doDeleteAll(); ReaderFavoritePeer::doDeleteAll(); ReviewPeer::doDeleteAll(); }