CC-2166: Packaging Improvements. Moved the Zend app into airtime_mvc. It is now installed to /var/www/airtime. Storage is now set to /srv/airtime/stor. Utils are now installed to /usr/lib/airtime/utils/. Added install/airtime-dircheck.php as a simple test to see if everything is install/uninstalled correctly.

This commit is contained in:
Paul Baranowski 2011-04-14 18:55:04 -04:00
parent 514777e8d2
commit b11cbd8159
4546 changed files with 138 additions and 51 deletions

View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE database SYSTEM "../dtd/database.dtd">
<database package="core.book" name="bookstore" defaultIdMethod="native">
<external-schema filename="external/author.schema.xml" />
<table name="book" description="Book Table">
<behavior name="auto_add_pk" />
<column
name="title"
required="true"
type="VARCHAR"
size="255"
description="Book Title"/>
<column
name="isbn"
required="true"
type="VARCHAR"
size="24"
phpName="ISBN"
description="ISBN Number"/>
<column
name="publisher_id"
required="false"
type="INTEGER"
description="Foreign Key Publisher"/>
<column
name="author_id"
required="false"
type="INTEGER"
description="Foreign Key Author"/>
<foreign-key foreignTable="publisher" onDelete="SETNULL">
<reference
local="publisher_id"
foreign="id"/>
</foreign-key>
<foreign-key foreignTable="author" onDelete="SETNULL">
<reference
local="author_id"
foreign="id"/>
</foreign-key>
<validator column="title" translate="none">
<rule
name="unique"
message="Book title already in database." />
<rule
name="minLength"
value="10"
message="Book title must be more than ${value} characters long."/>
<rule
name="maxLength"
value="255"
message="Book title must not be longer than ${value} characters."/>
</validator>
<validator column="isbn" translate="none">
<rule
name="notMatch"
value="/[^\d-]+/"
message="The ISBN contains invalid characters." />
</validator>
</table>
</database>

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE database SYSTEM "../dtd/database.dtd">
<database package="addon.club" name="bookstore" defaultIdMethod="native">
<!-- this table exists to test the many-to-many -->
<table name="book_club_list" description="Reading list for a book club.">
<behavior name="auto_add_pk" />
<column
name="group_leader"
required="true"
type="VARCHAR"
size="100"
description="The name of the teacher in charge of summer reading."/>
<column
name="theme"
required="false"
type="VARCHAR"
size="50"
description="The theme, if applicable, for the reading list."/>
</table>
<table name="book_x_list" phpName="BookListRel" description="Cross-reference table for many-to-many relationship between book rows and book_club_list rows.">
<column
name="book_id"
primaryKey="true"
type="INTEGER"
description="Fkey to book.id"/>
<column
name="book_club_list_id"
primaryKey="true"
type="INTEGER"
description="Fkey to book_club_list.id"/>
<foreign-key foreignTable="book" onDelete="CASCADE">
<reference local="book_id" foreign="id"/>
</foreign-key>
<foreign-key foreignTable="book_club_list" onDelete="CASCADE">
<reference local="book_club_list_id" foreign="id"/>
</foreign-key>
</table>
</database>

View file

@ -0,0 +1,19 @@
# $Id: build.properties 1756 2010-05-10 08:54:06Z francois $
#
# This is a project-specific build.properties file. The properties
# in this file override anything set in Propel's top-level build.properties
# file when *this* project is being built.
#
# See top-level build.properties-sample for explanation of configuration
# options.
#
# Because this file is included before the top-level build.properties file,
# you cannot refer to any properties set therein.
propel.project = bookstore-packaged
propel.database = sqlite
propel.database.url = sqlite://localhost/./test/@DB@.db
# propel.database.createUrl = (doesn't aply for SQLite, since db is auto-created)
propel.targetPackage = bookstore-packaged
propel.packageObjectModel = true

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE database SYSTEM "../dtd/database.dtd">
<database package="core.author" name="bookstore" defaultIdMethod="native">
<table name="author" description="Author Table">
<behavior name="auto_add_pk" />
<column
name="first_name"
required="true"
type="VARCHAR"
size="128"
description="First Name"/>
<column
name="last_name"
required="true"
type="VARCHAR"
size="128"
description="Last Name"/>
<column
name="email"
type="VARCHAR"
size="128"
description="E-Mail Address"/>
<column
name="age"
type="INTEGER"
description="The authors age"/>
<validator column="last_name" translate="none">
<rule
name="required"
message="The last name field is required."/>
</validator>
<validator column="email" translate="none">
<rule
name="match"
value="/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/"
message="Please enter a valid email address."/>
</validator>
<validator column="age" translate="none">
<rule
name="minValue"
value="0"
message="Please enter a positive number." />
<rule
name="maxValue"
value="100"
message="Impressive age! Just kidding, hm?" />
</validator>
</table>
</database>

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE database SYSTEM "../dtd/database.dtd">
<database package="util.log" name="bookstore-log" defaultIdMethod="native">
<table name="log" phpName="BookstoreLog" description="Used to test multiple databases support">
<behavior name="auto_add_pk" />
<column
name="time"
required="true"
type="TIMESTAMP"
description="Log time"/>
<column
name="ident"
required="true"
type="CHAR"
size="24"
description="Log priority"/>
<column
name="priority"
required="true"
type="INTEGER"
description="Log priority"/>
<column
name="message"
required="true"
type="LONGVARCHAR"
description="Log message"/>
</table>
</database>

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE database SYSTEM "../dtd/database.dtd">
<database package="core.book" name="bookstore" defaultIdMethod="native">
<!-- This table exists to explore/test the handling of BLOB/CLOB objects. -->
<table name="media">
<behavior name="auto_add_pk" />
<column
name="cover_image"
type="BLOB"
lazyLoad="true"
description="The image of the book cover."/>
<column
name="excerpt"
type="CLOB"
lazyLoad="true"
description="An excerpt from the book."/>
<column
name="book_id"
required="true"
type="INTEGER"
description="Book ID for this media collection."/>
<foreign-key foreignTable="book" onDelete="CASCADE">
<reference
local="book_id"
foreign="id"/>
</foreign-key>
</table>
</database>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE database SYSTEM "../dtd/database.dtd">
<database package="core.publisher" name="bookstore" defaultIdMethod="native">
<table name="publisher" description="Publisher Table">
<behavior name="auto_add_pk" />
<column
name="name"
required="true"
type="VARCHAR"
size="128"
default="Penguin"
description="Publisher Name"/>
</table>
</database>

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE database SYSTEM "../dtd/database.dtd">
<database package="core.review" name="bookstore" defaultIdMethod="native">
<table name="review" description="Book Review">
<behavior name="auto_add_pk" />
<column
name="reviewed_by"
required="true"
type="VARCHAR"
size="128"
description="Reviewer Name"/>
<column
name="review_date"
required="true"
type="DATE"
default="01/01/2001"
description="Date of Review"/>
<column
name="recommended"
required="true"
type="BOOLEAN"
description="Does reviewer recommend book?"/>
<column
name="status"
type="VARCHAR"
size="8"
description="The status of this review."/>
<column
name="book_id"
required="true"
type="INTEGER"
description="Book ID for this review"/>
<foreign-key foreignTable="book" onDelete="CASCADE">
<reference
local="book_id"
foreign="id"/>
</foreign-key>
<validator column="reviewed_by" translate="none">
<rule
name="required"
message="The reviewed by field is required."/>
</validator>
<validator column="status" translate="none">
<rule
name="validValues"
value="new|reviewed|archived"
message="Invalid status. (new, reviewed, archived)" />
</validator>
</table>
</database>

View file

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- This new XML configuration format is the default format for properties
files. You can also used the old INI-based .properties format, but
support for this will be removed in next major Propel version. -->
<config>
<!--
#
# L O G G I N G
#
# We use PEAR-compatible Log for all Propel logging and we embed the
# log conf properties within our application configuration.
#
# type - the type of log (default 'file')
# name - the name of log or path to file. (default './propel.log')
# ident - the text used to identify the log messages
# level - the log level
# PEAR_LOG_EMERG 0
# PEAR_LOG_ALERT 1
# PEAR_LOG_CRIT 2
# PEAR_LOG_ERR 3
# PEAR_LOG_WARNING 4
# PEAR_LOG_NOTICE 5
# PEAR_LOG_INFO 6
# PEAR_LOG_DEBUG 7 <== DEFAULT
-->
<log>
<ident>propel-bookstore-packaged</ident>
<level>7</level>
</log>
<!--
#
# P R O P E L P R O P E R T I E S
#
# Note that you can configure multiple datasources; for example if your
# project uses several databases.
-->
<propel>
<datasources default="bookstore-packaged">
<datasource id="bookstore">
<!-- the Propel adapter (usually same as phptype of connection DSN) -->
<adapter>sqlite</adapter>
<!-- Connection DSN. See PEAR DSN format for other supported parameters. -->
<connection>
<phptype>sqlite</phptype>
<hostspec>localhost</hostspec>
<database>./bookstore.db</database>
<username></username>
<password></password>
</connection>
</datasource>
<datasource id="bookstore-log">
<!-- the Propel adapter (usually same as phptype of connection DSN) -->
<adapter>sqlite</adapter>
<!-- Connection DSN. See PEAR DSN format for other supported parameters. -->
<connection>
<phptype>sqlite</phptype>
<hostspec>localhost</hostspec>
<database>./bookstore-log.db</database>
<username></username>
<password></password>
</connection>
</datasource>
</datasources>
</propel>
</config>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.aggregate">
<table name="aggregate_post" phpName="AggregatePost">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<behavior name="aggregate_column">
<parameter name="name" value="nb_comments" />
<parameter name="expression" value="COUNT(id)" />
<parameter name="foreign_table" value="aggregate_comment" />
</behavior>
</table>
<table name="aggregate_comment" phpName="AggregateComment">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="post_id" type="INTEGER" />
<foreign-key foreignTable="aggregate_post" onDelete="setnull" onUpdate="cascade">
<reference local="post_id" foreign="id" />
</foreign-key>
</table>
<table name="aggregate_poll" phpName="AggregatePoll">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<behavior name="aggregate_column">
<parameter name="name" value="total_score" />
<parameter name="expression" value="SUM(score)" />
<parameter name="foreign_table" value="aggregate_item" />
</behavior>
</table>
<table name="aggregate_item" phpName="AggregateItem">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="score" defaultValue="0" type="INTEGER" />
<column name="poll_id" type="INTEGER" />
<foreign-key foreignTable="aggregate_poll" onDelete="setnull" onUpdate="cascade">
<reference local="poll_id" foreign="id" />
</foreign-key>
</table>
</database>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.auto_add_pk">
<table name="table6">
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<behavior name="auto_add_pk" />
</table>
<table name="table7">
<column name="foo" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<behavior name="auto_add_pk" />
</table>
<table name="table8">
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<column name="foo_id" type="INTEGER" required="false"/>
<foreign-key foreignTable="table6" onDelete="setnull">
<reference local="foo_id" foreign="id" />
</foreign-key>
<behavior name="auto_add_pk">
<parameter name="name" value="identifier" />
<parameter name="autoIncrement" value="false" />
<parameter name="type" value="BIGINT" />
</behavior>
</table>
</database>

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.concrete_inheritance">
<table name="concrete_category">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="name" type="VARCHAR" size="100" primaryString="true" />
</table>
<table name="concrete_content">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<column name="category_id" required="false" type="INTEGER" />
<foreign-key foreignTable="concrete_category" onDelete="cascade">
<reference local="category_id" foreign="id" />
</foreign-key>
<index>
<index-column name="title" />
</index>
<validator column="title" translate="none">
<rule name="maxLength" value="100" message="Content title must not be longer than ${value} characters." />
</validator>
</table>
<table name="concrete_article">
<column name="body" type="longvarchar" />
<column name="author_id" required="false" type="INTEGER" />
<foreign-key foreignTable="concrete_author" refPhpName="Article" onDelete="cascade">
<reference local="author_id" foreign="id" />
</foreign-key>
<behavior name="concrete_inheritance">
<parameter name="extends" value="concrete_content" />
</behavior>
</table>
<table name="concrete_author">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="name" type="VARCHAR" size="100" primaryString="true" />
</table>
<table name="concrete_news">
<behavior name="concrete_inheritance">
<parameter name="extends" value="concrete_article" />
</behavior>
</table>
<table name="concrete_quizz">
<column name="title" type="VARCHAR" size="200" primaryString="true" />
<behavior name="concrete_inheritance">
<parameter name="extends" value="concrete_content" />
<parameter name="copy_data_to_parent" value="false" />
</behavior>
</table>
<table name="concrete_quizz_question">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="question" type="VARCHAR" size="100" primaryString="true" />
<column name="answer_1" type="VARCHAR" size="100" />
<column name="answer_2" type="VARCHAR" size="100" />
<column name="correct_answer" type="INTEGER" />
<column name="quizz_id" required="true" type="INTEGER" />
<foreign-key foreignTable="concrete_quizz" onDelete="cascade">
<reference local="quizz_id" foreign="id" />
</foreign-key>
</table>
</database>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.nested_set">
<table name="table9">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<behavior name="nested_set" />
</table>
<table name="table10">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<column name="my_left_column" type="INTEGER" required="false"/>
<column name="my_right_column" type="INTEGER" required="false"/>
<column name="my_level_column" type="INTEGER" required="false"/>
<column name="my_scope_column" type="INTEGER" required="false"/>
<behavior name="nested_set">
<parameter name="left_column" value="my_left_column" />
<parameter name="right_column" value="my_right_column" />
<parameter name="level_column" value="my_level_column" />
<parameter name="use_scope" value="true" />
<parameter name="scope_column" value="my_scope_column" />
<parameter name="method_proxies" value="true" />
</behavior>
</table>
</database>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.alternative_coding_standards">
<behavior name="do_nothing">
<parameter name="foo" value="bar" />
</behavior>
<table name="table3">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<behavior name="test_all_hooks" />
<behavior name="alternative_coding_standards" />
</table>
</database>

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.sluggable">
<table name="table13">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<behavior name="sluggable" />
</table>
<table name="table14">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<column name="url" type="VARCHAR" size="100"/>
<behavior name="sluggable">
<parameter name="slug_column" value="url" />
<parameter name="slug_pattern" value="/foo/{Title}/bar" />
<parameter name="replace_pattern" value="/[^\w\/]+/" />
<parameter name="separator" value="/" />
<parameter name="permanent" value="true" />
</behavior>
</table>
</database>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.soft_delete">
<table name="table4">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<behavior name="soft_delete" />
</table>
<table name="table5">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<column name="deleted_on" type="TIMESTAMP" />
<behavior name="soft_delete">
<parameter name="deleted_column" value="deleted_on" />
</behavior>
</table>
</database>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.sortable">
<table name="table11">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<behavior name="sortable" />
</table>
<table name="table12">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<column name="position" type="INTEGER" />
<behavior name="sortable">
<parameter name="rank_column" value="position" />
<parameter name="use_scope" value="true" />
<parameter name="scope_column" value="my_scope_column" />
</behavior>
</table>
</database>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore-behavior" defaultIdMethod="native" package="behavior.timestampable">
<table name="table1">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<column name="created_on" type="TIMESTAMP" />
<column name="updated_on" type="TIMESTAMP" />
<behavior name="timestampable">
<parameter name="create_column" value="created_on" />
<parameter name="update_column" value="updated_on" />
</behavior>
</table>
<table name="table2">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" size="100" primaryString="true" />
<behavior name="timestampable" />
</table>
</database>

View file

@ -0,0 +1,35 @@
# $Id: build.properties 1688 2010-04-19 20:23:27Z francois $
#
# This is a project-specific build.properties file. The properties
# in this file override anything set in Propel's top-level build.properties
# file when *this* project is being built.
#
# See top-level build.properties-sample for explanation of configuration
# options.
#
# Because this file is included before the top-level build.properties file,
# you cannot refer to any properties set therein.
propel.project = bookstore
propel.database = mysql
propel.database.url = mysql:dbname=test
propel.mysqlTableType = InnoDB
propel.disableIdentifierQuoting=true
# For MySQL or Oracle, you also need to specify username & password
#propel.database.user = [db username]
#propel.database.password = [db password]
# Note that if you do not wish to specify the database (e.g. if you
# are using multiple databses) you can use the @DB@ token which
# will be replaced with a database at runtime.
# E.g.: propel.database.url = sqlite://localhost/./test/@DB@.db
# This will work for the datadump and the insert-sql tasks.
# propel.database.createUrl = (doesn't apply for SQLite, since db is auto-created)
propel.targetPackage = bookstore
# We need to test behavior hooks
propel.behavior.test_all_hooks.class = ../test.tools.helpers.bookstore.behavior.Testallhooksbehavior
propel.behavior.do_nothing.class = ../test.tools.helpers.bookstore.behavior.DonothingBehavior

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<database name="bookstore-cms" defaultPhpNamingMethod="nochange" package="cms">
<table name="Page" idMethod="native" treeMode="NestedSet">
<column name="Id" type="INTEGER" required="true" autoIncrement="true" primaryKey="true"/>
<column name="LeftChild" type="INTEGER" required="true" nestedSetLeftKey="true"/>
<column name="RightChild" type="INTEGER" required="true" nestedSetRightKey="true"/>
<column name="ScopeId" type="INTEGER" required="true" default="0" treeScopeKey="true"/>
<column name="Title" type="VARCHAR" size="255" />
</table>
<table name="Category" idMethod="native" treeMode="NestedSet">
<column name="Id" type="INTEGER" required="true" autoIncrement="true" primaryKey="true"/>
<column name="LeftChild" type="INTEGER" required="true" nestedSetLeftKey="true"/>
<column name="RightChild" type="INTEGER" required="true" nestedSetRightKey="true"/>
<column name="Title" type="VARCHAR" size="255" />
</table>
</database>

View file

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<!--
#
# L O G G I N G
#
# We use PEAR-compatible Log for all Propel logging and we embed the
# log conf properties within our application configuration.
#
# type - the type of log (default 'file')
# name - the name of log or path to file. (default './propel.log')
# ident - the text used to identify the log messages
# level - the log level
# PEAR_LOG_EMERG 0
# PEAR_LOG_ALERT 1
# PEAR_LOG_CRIT 2
# PEAR_LOG_ERR 3
# PEAR_LOG_WARNING 4
# PEAR_LOG_NOTICE 5
# PEAR_LOG_INFO 6
# PEAR_LOG_DEBUG 7
#
# Note that if you omit the <log> config section, Propel will not attempt to
# configure a logger, and you will need to specify one manually using
# Propel::setLogger() if you want Propel to log debug or error messages.
-->
<log>
<ident>propel-bookstore</ident>
<name>propel.log</name>
<level>7</level>
</log>
<!--
#
# P R O P E L P R O P E R T I E S
#
# Note that you can configure multiple datasources; for example if your
# project uses several databases.
-->
<propel>
<datasources default="bookstore">
<datasource id="bookstore">
<!-- the Propel adapter to use for this connection -->
<adapter>mysql</adapter>
<!-- Connection parameters. See PDO documentation for DSN format and available option constants. -->
<connection>
<classname>DebugPDO</classname>
<dsn>mysql:dbname=test</dsn>
<!--
For MySQL and Oracle you must specify username + password separate from DSN:
<user>bookstore</user>
<password></password>
-->
<options>
<option id="ATTR_PERSISTENT">false</option>
</options>
<attributes>
<!--
For MySQL, you should also turn on prepared statement emulation,
as prepared statements support is buggy in mysql driver
-->
<option id="ATTR_EMULATE_PREPARES">true</option>
</attributes>
<settings>
<!-- Set the character set for client connection -->
<setting id="charset">utf8</setting>
<!-- you can also execute arbitrary queries after the connection is created
<setting id="queries">
<query>SELECT * FROM foo</query>
<query>INSERT INTO BAR ('hey', 'there')</query>
</setting>
-->
</settings>
</connection>
</datasource>
<datasource id="bookstore-cms">
<adapter>mysql</adapter>
<connection>
<classname>DebugPDO</classname>
<dsn>mysql:dbname=test</dsn>
<!--
For MySQL and Oracle you must specify username + password separate from DSN:
<user>bookstore</user>
<password></password>
-->
<options>
<option id="ATTR_PERSISTENT">false</option>
</options>
<attributes>
<option id="ATTR_EMULATE_PREPARES">true</option>
</attributes>
<settings>
<setting id="charset">utf8</setting>
</settings>
</connection>
</datasource>
<datasource id="bookstore-behavior">
<adapter>mysql</adapter>
<connection>
<classname>DebugPDO</classname>
<dsn>mysql:dbname=test</dsn>
<!--
For MySQL and Oracle you must specify username + password separate from DSN:
<user>bookstore</user>
<password></password>
-->
<options>
<option id="ATTR_PERSISTENT">false</option>
</options>
<attributes>
<option id="ATTR_EMULATE_PREPARES">true</option>
</attributes>
<settings>
<setting id="charset">utf8</setting>
</settings>
</connection>
</datasource>
</datasources>
</propel>
</config>

View file

@ -0,0 +1,320 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore" defaultIdMethod="native"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../generator/resources/xsd/database.xsd">
<table name="book" description="Book Table">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Book Id" />
<column name="title" type="VARCHAR" required="true" description="Book Title" primaryString="true" />
<column name="isbn" required="true" type="VARCHAR" size="24" phpName="ISBN" description="ISBN Number" />
<column name="price" required="false" type="FLOAT" description="Price of the book." />
<column name="publisher_id" required="false" type="INTEGER" description="Foreign Key Publisher" />
<column name="author_id" required="false" type="INTEGER" description="Foreign Key Author" />
<foreign-key foreignTable="publisher" onDelete="setnull">
<reference local="publisher_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="author" onDelete="setnull" onUpdate="cascade">
<reference local="author_id" foreign="id" />
</foreign-key>
<validator column="title" translate="none">
<rule name="unique" message="Book title already in database." />
<rule name="minLength" value="10" message="Book title must be more than ${value} characters long." />
<rule name="maxLength" value="255" message="Book title must not be longer than ${value} characters." />
</validator>
<validator column="isbn" translate="none">
<rule name="class" class="bookstore.validator.ISBNValidator" message="ISBN does not validate!"/>
</validator>
</table>
<table name="publisher" description="Publisher Table">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Publisher Id" />
<column name="name" required="true" type="VARCHAR" size="128" default="Penguin" description="Publisher Name" />
</table>
<table name="author" description="Author Table">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Author Id" />
<column name="first_name" required="true" type="VARCHAR" size="128" description="First Name" />
<column name="last_name" required="true" type="VARCHAR" size="128" description="Last Name" />
<column name="email" type="VARCHAR" size="128" description="E-Mail Address" />
<column name="age" type="INTEGER" description="The authors age" />
<validator column="last_name" translate="none">
<rule name="required" message="The last name field is required." />
</validator>
<validator column="email" translate="none">
<rule name="match" value="/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/" message="Please enter a valid email address." />
</validator>
<validator column="age" translate="none">
<rule name="minValue" value="0" message="Please enter a positive number." />
<rule name="maxValue" value="100" message="Impressive age! Just kidding, hm?" />
</validator>
</table>
<table name="review" description="Book Review">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Author Id" />
<column name="reviewed_by" required="true" type="VARCHAR" size="128" description="Reviewer Name" />
<column name="review_date" required="true" type="DATE" default="2001-01-01" description="Date of Review" />
<column name="recommended" required="true" type="BOOLEAN" description="Does reviewer recommend book?" />
<column name="status" type="VARCHAR" size="8" description="The status of this review." />
<column name="book_id" required="true" type="INTEGER" description="Book ID for this review" />
<foreign-key foreignTable="book" onDelete="cascade">
<reference local="book_id" foreign="id" />
</foreign-key>
<validator column="reviewed_by" translate="none">
<rule name="required" message="The reviewed by field is required." />
</validator>
<validator column="status" translate="none">
<rule name="validValues" value="new|reviewed|archived" message="Invalid status. (new, reviewed, archived)" />
</validator>
</table>
<!-- This table exists to test the related setters on identical table ("relatedByXXX" issues) and column phpNames -->
<table name="essay" package="relation">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" required="true" primaryString="true" />
<column name="first_author" required="false" type="INTEGER" description="Foreign Key Author" />
<column name="second_author" required="false" type="INTEGER" description="Foreign Key Author" />
<column name="subtitle" type="VARCHAR" phpName="SecondTitle" />
<column name="next_essay_id" required="false" type="INTEGER" description="Book Id" />
<foreign-key foreignTable="author" onDelete="setnull" onUpdate="cascade">
<reference local="first_author" foreign="id" />
</foreign-key>
<foreign-key foreignTable="author" defaultJoin="INNER JOIN" onDelete="setnull" onUpdate="cascade">
<reference local="second_author" foreign="id" />
</foreign-key>
<foreign-key foreignTable="essay" onDelete="setnull" onUpdate="cascade">
<reference local="next_essay_id" foreign="id" />
</foreign-key>
</table>
<!-- This table exists to test the related setters on identical table ("relatedByXXX" issues) when there is more than one self-referential foreign key -->
<table name="composite_essay" package="relation">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="title" type="VARCHAR" required="true" primaryString="true" />
<column name="first_essay_id" required="false" type="INTEGER" description="Book Id" />
<column name="second_essay_id" required="false" type="INTEGER" description="Book Id" />
<foreign-key foreignTable="composite_essay" onDelete="setnull" onUpdate="cascade">
<reference local="first_essay_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="composite_essay" onDelete="setnull" onUpdate="cascade">
<reference local="second_essay_id" foreign="id" />
</foreign-key>
</table>
<!-- This table and the following exist to test the related setters ("relatedByXXX" issues) when two foreign keys exist on symmetrical tables -->
<table name="man" package="relation">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true"/>
<column name="wife_id" type="INTEGER"/>
<foreign-key foreignTable="woman" onDelete="setnull">
<reference local="wife_id" foreign="id"/>
</foreign-key>
</table>
<table name="woman" package="relation">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
<column name="husband_id" type="INTEGER"/>
<foreign-key foreignTable="man">
<reference local="husband_id" foreign="id"/>
</foreign-key>
</table>
<!-- This table exists to explore/test the handling of BLOB/CLOB objects. -->
<table name="media">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Media Id" />
<column name="cover_image" type="BLOB" lazyLoad="true" description="The image of the book cover." />
<column name="excerpt" type="CLOB" lazyLoad="true" description="An excerpt from the book." />
<column name="book_id" required="true" type="INTEGER" description="Book ID for this media collection." />
<foreign-key foreignTable="book" onDelete="cascade">
<reference local="book_id" foreign="id" />
</foreign-key>
</table>
<!-- test many-to-many relationships -->
<table name="book_club_list" description="Reading list for a book club.">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Unique ID for a school reading list." />
<column name="group_leader" required="true" type="VARCHAR" size="100" description="The name of the teacher in charge of summer reading." />
<column name="theme" required="false" type="VARCHAR" size="50" description="The theme, if applicable, for the reading list." />
</table>
<table name="book_x_list" phpName="BookListRel" isCrossRef="true"
description="Cross-reference table for many-to-many relationship between book rows and book_club_list rows.">
<column name="book_id" primaryKey="true" type="INTEGER" description="Fkey to book.id" />
<column name="book_club_list_id" primaryKey="true" type="INTEGER" description="Fkey to book_club_list.id" />
<foreign-key foreignTable="book" onDelete="cascade">
<reference local="book_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="book_club_list" onDelete="cascade">
<reference local="book_club_list_id" foreign="id" />
</foreign-key>
</table>
<!-- test self-referencing foreign keys and inheritance-->
<table name="bookstore_employee"
description="Hierarchical table to represent employees of a bookstore.">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" description="Employee ID number" />
<column name="class_key" type="INTEGER" required="true" default="0" inheritance="single">
<inheritance key="0" class="BookstoreEmployee" />
<inheritance key="1" class="BookstoreManager" extends="BookstoreEmployee" />
<inheritance key="2" class="BookstoreCashier" extends="BookstoreEmployee" />
</column>
<column name="name" type="VARCHAR" size="32" description="Employee name" />
<column name="job_title" type="VARCHAR" size="32" description="Employee job title" />
<column name="supervisor_id" type="INTEGER" description="Fkey to supervisor." />
<column name="photo" type="BLOB" lazyLoad="true" />
<foreign-key foreignTable="bookstore_employee" phpName="Supervisor" refPhpName="Subordinate" onDelete="setnull">
<reference local="supervisor_id" foreign="id" />
</foreign-key>
</table>
<!-- Test one-to-one (1:1) relationship, default values -->
<table name="bookstore_employee_account" reloadOnInsert="true" reloadOnUpdate="true" description="A table that represents a bookstore employees login credentials.">
<column name="employee_id" type="INTEGER" primaryKey="true" description="Primary key for the account ..." />
<column name="login" type="VARCHAR" size="32" />
<column name="password" type="VARCHAR" size="100" default="'@''34&quot;" />
<column name="enabled" type="BOOLEAN" default="true" />
<column name="not_enabled" type="BOOLEAN" default="false" />
<column name="created" type="TIMESTAMP" defaultExpr="CURRENT_TIMESTAMP" />
<column name="role_id" type="INTEGER" required="false" default="null" />
<column name="authenticator" type="VARCHAR" size="32" defaultExpr="'Password'" />
<foreign-key foreignTable="bookstore_employee" onDelete="cascade">
<reference local="employee_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="acct_access_role" onDelete="setnull">
<reference local="role_id" foreign="id" />
</foreign-key>
<unique>
<unique-column name="login" />
</unique>
</table>
<table name="acct_audit_log">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
<column name="uid" type="VARCHAR" size="32" required="true" />
<column name="message" type="VARCHAR" size="255" />
<foreign-key foreignTable="bookstore_employee_account" onDelete="cascade">
<reference local="uid" foreign="login" />
</foreign-key>
</table>
<table name="acct_access_role">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" description="Role ID number" />
<column name="name" type="VARCHAR" size="25" required="true" />
</table>
<!-- book_reader, book_opinion, and reader_favorite test some foreign key issues
(see: http://propel.phpdb.org/trac/ticket/228) -->
<table name="book_reader">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" description="Book reader ID number" />
<column name="name" type="VARCHAR" size="50" />
</table>
<!-- Test composite primary keys -->
<table name="book_opinion">
<column name="book_id" type="INTEGER" primaryKey="true" />
<column name="reader_id" type="INTEGER" primaryKey="true" />
<column name="rating" type="DECIMAL" />
<column name="recommend_to_friend" type="BOOLEAN" />
<foreign-key foreignTable="book" onDelete="cascade">
<reference local="book_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="book_reader" onDelete="cascade">
<reference local="reader_id" foreign="id" />
</foreign-key>
</table>
<!-- Test multiple foreign keys for a single column -->
<table name="reader_favorite">
<column name="book_id" type="INTEGER" primaryKey="true" />
<column name="reader_id" type="INTEGER" primaryKey="true" />
<foreign-key foreignTable="book" onDelete="cascade">
<reference local="book_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="book_reader" onDelete="cascade">
<reference local="reader_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="book_opinion" onDelete="cascade">
<reference local="book_id" foreign="book_id"/>
<reference local="reader_id" foreign="reader_id"/>
</foreign-key>
</table>
<!-- Test some custom php column types. -->
<table name="bookstore">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" description="Book store ID number" />
<column name="store_name" type="VARCHAR" size="50" required="true" />
<column name="location" type="VARCHAR" size="100" />
<column name="population_served" type="BIGINT" />
<column name="total_books" type="INTEGER" />
<column name="store_open_time" type="TIME" />
<column name="website" type="VARCHAR" size="255"/>
<validator column="website">
<rule name="match" value="/^((ht|f)tp(s?)\:\/\/[a-zA-Z0-9\-\._]+(\.[a-zA-Z0-9\-\._]+){2,}(\/?)([a-zA-Z0-9\-\.\?\,'\/\\\+&amp;amp;%\$#_]*)?$|$)/" message="wrong url"/>
</validator>
</table>
<!-- test default values on foreign keys, default expr w/ reloadOnUpdate="true" -->
<table name="bookstore_sale" reloadOnUpdate="true">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
<column name="bookstore_id" type="INTEGER" required="false" default="1" />
<column name="publisher_id" type="INTEGER" required="false" />
<column name="sale_name" type="VARCHAR" size="100" required="false" />
<column name="discount" type="TINYINT" description="Discount percentage" defaultExpr="10" />
<foreign-key foreignTable="bookstore" onDelete="cascade">
<reference local="bookstore_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="publisher" onDelete="setnull">
<reference local="publisher_id" foreign="id" />
</foreign-key>
</table>
<table name="customer" allowPkInsert="true">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
<column name="name" type="VARCHAR" size="255" />
<column name="join_date" type="DATE" />
</table>
<table name="contest">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
<column name="name" type="VARCHAR" size="100" />
</table>
<!-- Test Views (read-only tables) -->
<table name="contest_view" readOnly="true">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
<column name="name" type="VARCHAR" size="100" />
</table>
<table name="bookstore_contest">
<column name="bookstore_id" type="INTEGER" primaryKey="true" />
<column name="contest_id" type="INTEGER" primaryKey="true" />
<column name="prize_book_id" type="INTEGER" />
<foreign-key foreignTable="bookstore" onDelete="cascade">
<reference local="bookstore_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="contest" onDelete="cascade">
<reference local="contest_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="book" onDelete="setnull" phpName="Work">
<reference local="prize_book_id" foreign="id" />
</foreign-key>
</table>
<table name="bookstore_contest_entry" reloadOnInsert="true">
<column name="bookstore_id" type="INTEGER" primaryKey="true" />
<column name="contest_id" type="INTEGER" primaryKey="true" />
<column name="customer_id" type="INTEGER" primaryKey="true" />
<column name="entry_date" type="TIMESTAMP" defaultExpr="CURRENT_TIMESTAMP" />
<foreign-key foreignTable="bookstore" onDelete="cascade">
<reference local="bookstore_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="customer" onDelete="cascade">
<reference local="customer_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="bookstore_contest" onDelete="cascade">
<reference local="bookstore_id" foreign="bookstore_id" />
<reference local="contest_id" foreign="contest_id" />
</foreign-key>
</table>
</database>

View file

@ -0,0 +1,31 @@
# $Id: build.properties 1688 2010-04-19 20:23:27Z francois $
#
# This is a project-specific build.properties file. The properties
# in this file override anything set in Propel's top-level build.properties
# file when *this* project is being built.
#
# See top-level build.properties-sample for explanation of configuration
# options.
#
# Because this file is included before the top-level build.properties file,
# you cannot refer to any properties set therein.
propel.project = bookstore_namespaced
propel.database = mysql
propel.database.url = mysql:dbname=test
propel.mysqlTableType = InnoDB
propel.disableIdentifierQuoting=true
# For MySQL or Oracle, you also need to specify username & password
#propel.database.user = [db username]
#propel.database.password = [db password]
# Note that if you do not wish to specify the database (e.g. if you
# are using multiple databses) you can use the @DB@ token which
# will be replaced with a database at runtime.
# E.g.: propel.database.url = sqlite://localhost/./test/@DB@.db
# This will work for the datadump and the insert-sql tasks.
# propel.database.createUrl = (doesn't apply for SQLite, since db is auto-created)
propel.targetPackage = bookstore

View file

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<!--
#
# L O G G I N G
#
# We use PEAR-compatible Log for all Propel logging and we embed the
# log conf properties within our application configuration.
#
# type - the type of log (default 'file')
# name - the name of log or path to file. (default './propel.log')
# ident - the text used to identify the log messages
# level - the log level
# PEAR_LOG_EMERG 0
# PEAR_LOG_ALERT 1
# PEAR_LOG_CRIT 2
# PEAR_LOG_ERR 3
# PEAR_LOG_WARNING 4
# PEAR_LOG_NOTICE 5
# PEAR_LOG_INFO 6
# PEAR_LOG_DEBUG 7
#
# Note that if you omit the <log> config section, Propel will not attempt to
# configure a logger, and you will need to specify one manually using
# Propel::setLogger() if you want Propel to log debug or error messages.
-->
<log>
<ident>propel-bookstore</ident>
<name>propel.log</name>
<level>7</level>
</log>
<!--
#
# P R O P E L P R O P E R T I E S
#
# Note that you can configure multiple datasources; for example if your
# project uses several databases.
-->
<propel>
<datasources default="bookstore_namespaced">
<datasource id="bookstore_namespaced">
<!-- the Propel adapter to use for this connection -->
<adapter>mysql</adapter>
<!-- Connection parameters. See PDO documentation for DSN format and available option constants. -->
<connection>
<classname>DebugPDO</classname>
<dsn>mysql:dbname=test</dsn>
<!--
For MySQL and Oracle you must specify username + password separate from DSN:
<user>bookstore</user>
<password></password>
-->
<options>
<option id="ATTR_PERSISTENT">false</option>
</options>
<attributes>
<!--
For MySQL, you should also turn on prepared statement emulation,
as prepared statements support is buggy in mysql driver
-->
<option id="ATTR_EMULATE_PREPARES">true</option>
</attributes>
<settings>
<!-- Set the character set for client connection -->
<setting id="charset">utf8</setting>
<!-- you can also execute arbitrary queries after the connection is created
<setting id="queries">
<query>SELECT * FROM foo</query>
<query>INSERT INTO BAR ('hey', 'there')</query>
</setting>
-->
</settings>
</connection>
</datasource>
</datasources>
</propel>
</config>

View file

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="bookstore_namespaced" defaultIdMethod="native"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../generator/resources/xsd/database.xsd">
<table name="book" description="Book Table" phpName="NamespacedBook" namespace="Foo\Bar">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Book Id" />
<column name="title" type="VARCHAR" required="true" description="Book Title" primaryString="true" />
<column name="isbn" required="true" type="VARCHAR" size="24" phpName="ISBN" description="ISBN Number" />
<column name="price" required="false" type="FLOAT" description="Price of the book." />
<column name="publisher_id" required="false" type="INTEGER" description="Foreign Key Publisher" />
<column name="author_id" required="false" type="INTEGER" description="Foreign Key Author" />
<foreign-key foreignTable="publisher" onDelete="setnull">
<reference local="publisher_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="author" onDelete="setnull" onUpdate="cascade">
<reference local="author_id" foreign="id" />
</foreign-key>
<validator column="title" translate="none">
<rule name="unique" message="Book title already in database." />
<rule name="minLength" value="10" message="Book title must be more than ${value} characters long." />
<rule name="maxLength" value="255" message="Book title must not be longer than ${value} characters." />
</validator>
<validator column="isbn" translate="none">
<rule name="class" class="bookstore.validator.ISBNValidator" message="ISBN does not validate!"/>
</validator>
</table>
<table name="publisher" description="Publisher Table" phpName="NamespacedPublisher" namespace="Baz">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Publisher Id" />
<column name="name" required="true" type="VARCHAR" size="128" default="Penguin" description="Publisher Name" />
</table>
<table name="author" description="Author Table" phpName="NamespacedAuthor">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Author Id" />
<column name="first_name" required="true" type="VARCHAR" size="128" description="First Name" />
<column name="last_name" required="true" type="VARCHAR" size="128" description="Last Name" />
<column name="email" type="VARCHAR" size="128" description="E-Mail Address" />
<column name="age" type="INTEGER" description="The authors age" />
<validator column="last_name" translate="none">
<rule name="required" message="The last name field is required." />
</validator>
<validator column="email" translate="none">
<rule name="match" value="/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/" message="Please enter a valid email address." />
</validator>
<validator column="age" translate="none">
<rule name="minValue" value="0" message="Please enter a positive number." />
<rule name="maxValue" value="100" message="Impressive age! Just kidding, hm?" />
</validator>
</table>
<!-- test many-to-many relationships -->
<table name="book_club_list" phpName="NamespacedBookClub" namespace="Baz">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
<column name="group_leader" required="true" type="VARCHAR" size="100" />
<column name="theme" required="false" type="VARCHAR" size="50" />
</table>
<table name="book_x_list" phpName="NamespacedBookListRel" isCrossRef="true">
<column name="book_id" primaryKey="true" type="INTEGER" />
<column name="book_club_list_id" primaryKey="true" type="INTEGER" />
<foreign-key foreignTable="book" onDelete="cascade">
<reference local="book_id" foreign="id" />
</foreign-key>
<foreign-key foreignTable="book_club_list" onDelete="cascade">
<reference local="book_club_list_id" foreign="id" />
</foreign-key>
</table>
<!-- test self-referencing foreign keys and inheritance-->
<table name="bookstore_employee" phpName="NamespacedBookstoreEmployee" namespace="Foo\Bar">
<column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
<column name="class_key" type="INTEGER" required="true" default="0" inheritance="single">
<inheritance key="0" class="NamespacedBookstoreEmployee" />
<inheritance key="1" class="NamespacedBookstoreManager" extends="NamespacedBookstoreEmployee" />
<inheritance key="2" class="NamespacedBookstoreCashier" extends="NamespacedBookstoreEmployee" />
</column>
<column name="name" type="VARCHAR" size="32" />
<column name="job_title" type="VARCHAR" size="32" />
<column name="supervisor_id" type="INTEGER" />
<column name="photo" type="BLOB" lazyLoad="true" />
<foreign-key foreignTable="bookstore_employee" phpName="Supervisor" refPhpName="Subordinate" onDelete="setnull">
<reference local="supervisor_id" foreign="id" />
</foreign-key>
</table>
</database>

View file

@ -0,0 +1,35 @@
# $Id: build.properties 1260 2009-10-26 20:43:51Z francois $
#
# This is a project-specific build.properties file. The properties
# in this file override anything set in Propel's top-level build.properties
# file when *this* project is being built.
#
# See top-level build.properties-sample for explanation of configuration
# options.
#
# Because this file is included before the top-level build.properties file,
# you cannot refer to any properties set therein.
propel.project = nestedset
propel.database = sqlite
propel.database.url = sqlite:/var/tmp/nestedset.db
# For MySQL or Oracle, you also need to specify username & password
# propel.database.user = [db username]
# propel.database.password = [db password]
# Note that if you do not wish to specify the database (e.g. if you
# are using multiple databses) you can use the @DB@ token which
# will be replaced with a database at runtime.
# E.g.: propel.database.url = sqlite://localhost/./test/@DB@.db
# This will work for the datadump and the insert-sql tasks.
# propel.database.createUrl = (doesn't aply for SQLite, since db is auto-created)
propel.targetPackage = nestedset
# The unit tests need to test this stuff
propel.addGenericAccessors = true
propel.addGenericMutators = true
# Use the new PHP 5.2 DateTime class
propel.useDateTimeClass = true

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="treetest" defaultIdMethod="native">
<table name="test" treeMode="NestedSet" description="Test">
<column
name="id"
required="true"
primaryKey="true"
autoIncrement="true"
type="INTEGER"
description="Node Id"/>
<column
name="left"
required="true"
nestedSetLeftKey="true"
type="INTEGER"
description="Node Left Key"/>
<column
name="right"
required="true"
nestedSetRightKey="true"
type="INTEGER"
description="Node Right Key"/>
<column
name="label"
required="true"
type="VARCHAR"
size="10"
description="Label"/>
<unique name="pk">
<unique-column name="label"/>
</unique>
<index name="left">
<index-column name="left"/>
</index>
<index name="right">
<index-column name="right"/>
</index>
</table>
</database>

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- This new XML configuration format is the default format for properties
files. You can also used the old INI-based .properties format, but
support for this will be removed in next major Propel version. -->
<config>
<!--
#
# L O G G I N G
#
# We use PEAR-compatible Log for all Propel logging and we embed the
# log conf properties within our application configuration.
#
# type - the type of log (default 'file')
# name - the name of log or path to file. (default './propel.log')
# ident - the text used to identify the log messages
# level - the log level
# PEAR_LOG_EMERG 0
# PEAR_LOG_ALERT 1
# PEAR_LOG_CRIT 2
# PEAR_LOG_ERR 3
# PEAR_LOG_WARNING 4
# PEAR_LOG_NOTICE 5
# PEAR_LOG_INFO 6
# PEAR_LOG_DEBUG 7 <== DEFAULT
-->
<log>
<ident>propel-nestedset</ident>
<level>7</level>
</log>
<!--
#
# P R O P E L P R O P E R T I E S
#
# Note that you can configure multiple datasources; for example if your
# project uses several databases.
-->
<propel>
<datasources default="nestedset">
<datasource id="nestedset">
<!-- the Propel adapter (usually same as phptype of connection DSN) -->
<adapter>sqlite</adapter>
<!-- Connection DSN. See PEAR DSN format for other supported parameters. -->
<connection>
<phptype>sqlite</phptype>
<dsn>sqlite:/var/tmp/nestedset.db</dsn>
<username></username>
<password></password>
</connection>
</datasource>
</datasources>
</propel>
</config>

View file

@ -0,0 +1,26 @@
# $Id: build.properties 1260 2009-10-26 20:43:51Z francois $
#
# This is a project-specific build.properties file. The properties
# in this file override anything set in Propel's top-level build.properties
# file when *this* project is being built.
#
# See top-level build.properties-sample for explanation of configuration
# options.
#
# Because this file is included before the top-level build.properties file,
# you cannot refer to any properties set therein.
propel.targetPackage = treetest
propel.project = treetest
propel.database = sqlite
propel.database.url = sqlite:/var/tmp/treetest.db
#propel.database = mysql
#propel.database.url = mysql://localhost/test
#propel.database = codebase
#propel.database.url = odbc://localhost/Driver=CodeBaseOdbcStand;DBQ=test;?adapter=CodeBase

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- This new XML configuration format is the default format for properties
files. You can also used the old INI-based .properties format, but
support for this will be removed in next major Propel version. -->
<config>
<!--
#
# L O G G I N G
#
# We use PEAR-compatible Log for all Propel logging and we embed the
# log conf properties within our application configuration.
#
# type - the type of log (default 'file')
# name - the name of log or path to file. (default './propel.log')
# ident - the text used to identify the log messages
# level - the log level
# PEAR_LOG_EMERG 0
# PEAR_LOG_ALERT 1
# PEAR_LOG_CRIT 2
# PEAR_LOG_ERR 3
# PEAR_LOG_WARNING 4
# PEAR_LOG_NOTICE 5
# PEAR_LOG_INFO 6
# PEAR_LOG_DEBUG 7 <== DEFAULT
-->
<log>
<ident>propel-treetest</ident>
<level>7</level>
</log>
<!--
#
# P R O P E L P R O P E R T I E S
#
# Note that you can configure multiple datasources; for example if your
# project uses several databases.
-->
<propel>
<datasources default="treetest">
<datasource id="treetest">
<!-- the Propel adapter (usually same as phptype of connection DSN) -->
<adapter>sqlite</adapter>
<!-- Connection DSN. See PEAR DSN format for other supported parameters. -->
<connection>
<phptype>sqlite</phptype>
<dsn>sqlite:/var/tmp/treetest.db</dsn>
<username></username>
<password></password>
</connection>
</datasource>
</datasources>
</propel>
</config>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="treetest" defaultIdMethod="none">
<table name="test" treeMode="MaterializedPath" description="Test">
<column
name="npath"
required="true"
nodeKey="true"
nodeKeySep="."
primaryKey="true"
type="VARCHAR"
size="80"
description="Node Path"/>
<column
name="label"
required="true"
type="VARCHAR"
size="10"
description="Label"/>
<unique name="pk">
<unique-column name="label"/>
</unique>
<unique name="ck">
<unique-column name="npath"/>
</unique>
</table>
</database>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="columnTest" defaultIdMethod="native">
<table name="columnTestTable">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Book Id" />
<column name="title" type="VARCHAR" required="true" description="Book Title" />
<column name="title" type="VARCHAR" required="true" description="Book Title" />
</table>
</database>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="columnTest" defaultIdMethod="native">
<table name="columnTestTable">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Book Id" />
<column name="title" type="VARCHAR" required="true" description="Book Title" />
</table>
<table name="columnTestTable">
<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Book Id" />
<column name="title" type="VARCHAR" required="true" description="Book Title" />
</table>
</database>