Location: PHPKode > projects > DIY Blog > diy-blog/lib/propel/generator/test/classes/bookstore/BookstoreDataPopulator.php
<?php
/*
 *  $Id: BookstoreDataPopulator.php 536 2007-01-10 14:30:38Z heltem $
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information please see
 * <http://propel.phpdb.org>.
 */

require_once 'bookstore/Book.php';
require_once 'bookstore/Author.php';
require_once 'bookstore/Media.php';
require_once 'bookstore/Publisher.php';
require_once 'bookstore/Review.php';
require_once 'bookstore/BookClubList.php';
require_once 'bookstore/BookListRel.php';
require_once 'bookstore/BookstoreEmployee.php';

define('_LOB_SAMPLE_FILE_PATH', dirname(__FILE__) . '/../../etc/lob');

/**
 * Populates data needed by the bookstore unit tests.
 *
 * This classes uses the actual Propel objects to do the population rather than
 * inserting directly into the database.  This will have a performance hit, but will
 * benefit from increased flexibility (as does anything using Propel).
 *
 * @author     Hans Lellelid <hide@address.com>
 */
class BookstoreDataPopulator {

	public static function populate() {

		// Add publisher records
		// ---------------------

		//print "\nAdding some new publishers to the list\n";
		//print "--------------------------------------\n\n";

		$scholastic = new Publisher();
		$scholastic->setName("Scholastic");
		// do not save, will do later to test cascade
		//print "Added publisher \"Scholastic\" [not saved yet].\n";

		$morrow = new Publisher();
		$morrow->setName("William Morrow");
		$morrow->save();
		$morrow_id = $morrow->getId();
		//print "Added publisher \"William Morrow\" [id = $morrow_id].\n";

		$penguin = new Publisher();
		$penguin->setName("Penguin");
		$penguin->save();
		$penguin_id = $penguin->getId();
		//print "Added publisher \"Penguin\" [id = $penguin_id].\n";

		$vintage = new Publisher();
		$vintage->setName("Vintage");
		$vintage->save();
		$vintage_id = $vintage->getId();
		//print "Added publisher \"Vintage\" [id = $vintage_id].\n";


		// Add author records
		// ------------------

		//print "\nAdding some new authors to the list\n";
		//print "--------------------------------------\n\n";

		$rowling = new Author();
		$rowling->setFirstName("J.K.");
		$rowling->setLastName("Rowling");
		// no save()
		//print "Added author \"J.K. Rowling\" [not saved yet].\n";

		$stephenson = new Author();
		$stephenson->setFirstName("Neal");
		$stephenson->setLastName("Stephenson");
		$stephenson->save();
		$stephenson_id = $stephenson->getId();
		//print "Added author \"Neal Stephenson\" [id = $stephenson_id].\n";

		$byron = new Author();
		$byron->setFirstName("George");
		$byron->setLastName("Byron");
		$byron->save();
		$byron_id = $byron->getId();
		//print "Added author \"George Byron\" [id = $byron_id].\n";


		$grass = new Author();
		$grass->setFirstName("Gunter");
		$grass->setLastName("Grass");
		$grass->save();
		$grass_id = $grass->getId();
		//print "Added author \"Gunter Grass\" [id = $grass_id].\n";


		// Add book records
		// ----------------

		//print "\nAdding some new books to the list\n";
		//print "-------------------------------------\n\n";

		$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();
		// print "Added book \"Harry Potter and the Order of the Phoenix\" [id = $phoenix_id].\n";

		$qs = new Book();
		$qs->setISBN("0380977427");
		$qs->setTitle("Quicksilver");
		$qs->setAuthor($stephenson);
		$qs->setPublisher($morrow);
		$qs->save();
		$qs_id = $qs->getId();
		// print "Added book \"Quicksilver\" [id = $qs_id].\n";

		$dj = new Book();
		$dj->setISBN("0140422161");
		$dj->setTitle("Don Juan");
		$dj->setAuthor($byron);
		$dj->setPublisher($penguin);
		$dj->save();
		$dj_id = $dj->getId();
		// print "Added book \"Don Juan\" [id = $dj_id].\n";

		$td = new Book();
		$td->setISBN("067972575X");
		$td->setTitle("The Tin Drum");
		$td->setAuthor($grass);
		$td->setPublisher($vintage);
		$td->save();
		$td_id = $td->getId();
		// print "Added book \"The Tin Drum\" [id = $td_id].\n";

		// Add review records
		// ------------------

		//print "\nAdding some book reviews to the list\n";
		//print "------------------------------------\n\n";

		$r1 = new Review();
		$r1->setBook($phoenix);
		$r1->setReviewedBy("Washington Post");
		$r1->setRecommended(true);
		$r1->setReviewDate(time());
		$r1->save();
		$r1_id = $r1->getId();
		//print "Added Washington Post book review  [id = $r1_id].\n";

		$r2 = new Review();
		$r2->setBook($phoenix);
		$r2->setReviewedBy("New York Times");
		$r2->setRecommended(false);
		$r2->setReviewDate(time());
		$r2->save();
		$r2_id = $r2->getId();
		//print "Added New York Times book review  [id = $r2_id].\n";

		$blob_path = _LOB_SAMPLE_FILE_PATH . '/tin_drum.gif';
		$clob_path =  _LOB_SAMPLE_FILE_PATH . '/tin_drum.txt';

		$m1 = new Media();
		$m1->setBook($td);
		$m1->setCoverImage(file_get_contents($blob_path));
		$m1->setExcerpt(file_get_contents($clob_path));
		$m1->save();


		// Add book list records
		// ---------------------
		// (this is for many-to-many tests)

		$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);


	}

	public static function depopulate() {

		AuthorPeer::doDeleteAll();
		BookPeer::doDeleteAll();
		PublisherPeer::doDeleteAll();
		ReviewPeer::doDeleteAll();
		MediaPeer::doDeleteAll();
		BookClubListPeer::doDeleteAll();

	}

}
Return current item: DIY Blog