From ec9ebfe3f0680b6f451829bf0111eb69fe092b24 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 20 Dec 2013 15:36:31 -0500 Subject: release v1.0 --- .../protected/pages/Day2/CreateAR.page | 252 +++++++++---------- demos/quickstart/protected/controls/TopicList.tpl | 220 ++++++++--------- .../quickstart/protected/controls/es/TopicList.tpl | 220 ++++++++--------- .../quickstart/protected/controls/fr/TopicList.tpl | 216 ++++++++-------- .../quickstart/protected/controls/id/TopicList.tpl | 218 ++++++++--------- .../quickstart/protected/controls/ja/TopicList.tpl | 218 ++++++++--------- .../quickstart/protected/controls/pl/TopicList.tpl | 218 ++++++++--------- .../quickstart/protected/controls/zh/TopicList.tpl | 216 ++++++++-------- .../pages/GettingStarted/CommandLine.page | 272 ++++++++++----------- nbproject/project.properties | 7 + nbproject/project.xml | 13 + 11 files changed, 1045 insertions(+), 1025 deletions(-) create mode 100644 nbproject/project.properties create mode 100644 nbproject/project.xml diff --git a/demos/blog-tutorial/protected/pages/Day2/CreateAR.page b/demos/blog-tutorial/protected/pages/Day2/CreateAR.page index 99e91d5a..0cf28bdd 100644 --- a/demos/blog-tutorial/protected/pages/Day2/CreateAR.page +++ b/demos/blog-tutorial/protected/pages/Day2/CreateAR.page @@ -1,127 +1,127 @@ - - -

Creating Active Record Classes

- -

-We need to create two Active Record classes, UserRecord and PostRecord, to represent data records in the users and posts tables, respectively. Active Record classes must extend from the base class ActiveRecord, and must define property names that matches with the field names of the corresponding table. -

- -

-To better organize our directories, we create a new directory protected/database to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory protected/database to PHP include_path, which allows us to use the classes without explicitly including them. -

- - - - - - - -

-Instead of writing the classes manually, we will use the PRADO Web Site Administration Tool to generate the classes for us. -So we need to modify again our application configuration in the services section like follows: -

- -

- - - ... - - - -

- -

- Then you are ready to go to: http://localhost/yoursite/index.php?wsat=TWsatLogin where you should see - the following page: -

- -

- In the text field you need to type the password previosly specified in the service inclusion. This - is part of a basic security system to avoid undesirable persons to use this tool. -

- -

- In order to generate AR classes you need to go to: http://localhost/divermania/index.php?wsat=TWsatGenerateAR - by clicking the proper links in the welcome page. Then you should see the following page: -

- - -

- In the Output Folder field we used the namespace format again, the path Application.database indicates that we want to put our class's files in the protected/database/ folder. - The * in the Table Name field means that we want to generate all AR classes, you can specify a table name instead if you want to generate just a specific AR class. -

- -

-Afterward we should see the following directory structure with two new files under protected/database: -

- - - -

-If we check the PostRecord class file, we should see something similar to the following content: -

- - -class PostRecord extends TActiveRecord -{ - const TABLE='posts'; - - public $post_id; - public $author_id; - public $create_time; - public $title; - public $content; - public $status; - - public static function finder($className=__CLASS__) - { - return parent::finder($className); - } - - public static $RELATIONS = array ( - 'author' => array(self::BELONGS_TO, 'UserRecord', 'author_id') - ); - - public function __toString() - { - return $this->title; - } -} - - -

-As we see, for each field in the posts table, the class has a corresponding data member. The constant TABLE specifies the table name for the PostRecord. The static method finder() allows us to perform query and retrieve post data in terms of PostRecord objects. -

- -

Relationship Between Posts and Users

-

-Recall that there was a foreign key relationship between the users and posts table. The entity-relationship diagram is shown below for convienence. -

- - - -

-From the entity-relationship diagram above, we see that the posts table contains a field named author_id. This author_id field is a foreign key to the reference table users. In particular, the values in the author_id field should be of that from the users table's username field. One of the consequence of this relationship, thinking in terms of objects, is that each "post" belongs to an "author" and one "author" may have many "posts". -

- -

-The static $RELATIONS property of PostRecord defines that the property $author belongs to an UserRecord. In array(self::BELONGS_TO, 'UserRecord'), the first element defines the relationship type, in this case self::BELONGS_TO. The second element is the name of related record, in this case an UserRecord. -

- -

-An array of UserRecord with and its corresponding posts may be fetched as follows. -

- - -$users = UserRecord::finder()->withPosts()->findAll(); - - - -The method withXXX() (where XXX is the relationship property name, in this case, Posts) fetches the corresponding PostRecords using a second query (not by using a join). The withXXX() method accepts the same arguments as other finder methods of TActiveRecord, e.g. withPosts('status = ?', 0). - - -

-Further detailed documentation can be found in the quickstart Active Record docs. -

- + + +

Creating Active Record Classes

+ +

+We need to create two Active Record classes, UserRecord and PostRecord, to represent data records in the users and posts tables, respectively. Active Record classes must extend from the base class ActiveRecord, and must define property names that matches with the field names of the corresponding table. +

+ +

+To better organize our directories, we create a new directory protected/database to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory protected/database to PHP include_path, which allows us to use the classes without explicitly including them. +

+ + + + + + + +

+Instead of writing the classes manually, we will use the PRADO Web Site Administration Tool to generate the classes for us. +So we need to modify again our application configuration in the services section like follows: +

+ +

+ + + ... + + + +

+ +

+ Then you are ready to go to: http://localhost/yoursite/index.php?wsat=TWsatLogin where you should see + the following page: +

+ +

+ In the text field you need to type the password previosly specified in the service inclusion. This + is part of a basic security system to avoid undesirable persons to use this tool. +

+ +

+ In order to generate AR classes you need to go to: http://localhost/divermania/index.php?wsat=TWsatGenerateAR + by clicking the proper links in the welcome page. Then you should see the following page: +

+ + +

+ In the Output Folder field we used the namespace format again, the path Application.database indicates that we want to put our class's files in the protected/database/ folder. + The * in the Table Name field means that we want to generate all AR classes, you can specify a table name instead if you want to generate just a specific AR class. +

+ +

+Afterward we should see the following directory structure with two new files under protected/database: +

+ + + +

+If we check the PostRecord class file, we should see something similar to the following content: +

+ + +class PostRecord extends TActiveRecord +{ + const TABLE='posts'; + + public $post_id; + public $author_id; + public $create_time; + public $title; + public $content; + public $status; + + public static function finder($className=__CLASS__) + { + return parent::finder($className); + } + + public static $RELATIONS = array ( + 'author' => array(self::BELONGS_TO, 'UserRecord', 'author_id') + ); + + public function __toString() + { + return $this->title; + } +} + + +

+As we see, for each field in the posts table, the class has a corresponding data member. The constant TABLE specifies the table name for the PostRecord. The static method finder() allows us to perform query and retrieve post data in terms of PostRecord objects. +

+ +

Relationship Between Posts and Users

+

+Recall that there was a foreign key relationship between the users and posts table. The entity-relationship diagram is shown below for convienence. +

+ + + +

+From the entity-relationship diagram above, we see that the posts table contains a field named author_id. This author_id field is a foreign key to the reference table users. In particular, the values in the author_id field should be of that from the users table's username field. One of the consequence of this relationship, thinking in terms of objects, is that each "post" belongs to an "author" and one "author" may have many "posts". +

+ +

+The static $RELATIONS property of PostRecord defines that the property $author belongs to an UserRecord. In array(self::BELONGS_TO, 'UserRecord'), the first element defines the relationship type, in this case self::BELONGS_TO. The second element is the name of related record, in this case an UserRecord. +

+ +

+An array of UserRecord with and its corresponding posts may be fetched as follows. +

+ + +$users = UserRecord::finder()->withPosts()->findAll(); + + + +The method withXXX() (where XXX is the relationship property name, in this case, Posts) fetches the corresponding PostRecords using a second query (not by using a join). The withXXX() method accepts the same arguments as other finder methods of TActiveRecord, e.g. withPosts('status = ?', 0). + + +

+Further detailed documentation can be found in the quickstart Active Record docs. +

+
\ No newline at end of file diff --git a/demos/quickstart/protected/controls/TopicList.tpl b/demos/quickstart/protected/controls/TopicList.tpl index a1f3411d..edc0ff3b 100644 --- a/demos/quickstart/protected/controls/TopicList.tpl +++ b/demos/quickstart/protected/controls/TopicList.tpl @@ -1,111 +1,111 @@ -
- - - - - - - - - - - -
-
Service Reference
- -
- - - - - - - + \ No newline at end of file diff --git a/demos/quickstart/protected/controls/es/TopicList.tpl b/demos/quickstart/protected/controls/es/TopicList.tpl index 88143f8a..c2725733 100644 --- a/demos/quickstart/protected/controls/es/TopicList.tpl +++ b/demos/quickstart/protected/controls/es/TopicList.tpl @@ -1,111 +1,111 @@ -
- - - - - - - - - - - -
-
Referencia de Servicios
- -
- - - - - - - +
+ + + + + + + + + + + +
+
Referencia de Servicios
+ +
+ + + + + + +
\ No newline at end of file diff --git a/demos/quickstart/protected/controls/fr/TopicList.tpl b/demos/quickstart/protected/controls/fr/TopicList.tpl index cf2aa763..3020b24f 100644 --- a/demos/quickstart/protected/controls/fr/TopicList.tpl +++ b/demos/quickstart/protected/controls/fr/TopicList.tpl @@ -1,109 +1,109 @@ -
- - - - - - - - - - - -
-
Réference des services
- -
- - - - - - - + \ No newline at end of file diff --git a/demos/quickstart/protected/controls/id/TopicList.tpl b/demos/quickstart/protected/controls/id/TopicList.tpl index b9550221..75fa8614 100644 --- a/demos/quickstart/protected/controls/id/TopicList.tpl +++ b/demos/quickstart/protected/controls/id/TopicList.tpl @@ -1,110 +1,110 @@ -
- - - - - -
-
Fundamental
- -
- - - - - -
-
Referensi Layanan
- -
- - - - - - - + \ No newline at end of file diff --git a/demos/quickstart/protected/controls/ja/TopicList.tpl b/demos/quickstart/protected/controls/ja/TopicList.tpl index 2c22641c..dbfc7eb4 100644 --- a/demos/quickstart/protected/controls/ja/TopicList.tpl +++ b/demos/quickstart/protected/controls/ja/TopicList.tpl @@ -1,110 +1,110 @@ -
- - - - - - - - - - - -
-
サービスリファレンス
- -
- - - - - - - +
+ + + + + + + + + + + +
+
サービスリファレンス
+ +
+ + + + + + +
\ No newline at end of file diff --git a/demos/quickstart/protected/controls/pl/TopicList.tpl b/demos/quickstart/protected/controls/pl/TopicList.tpl index e4cb586b..33d8a126 100644 --- a/demos/quickstart/protected/controls/pl/TopicList.tpl +++ b/demos/quickstart/protected/controls/pl/TopicList.tpl @@ -1,110 +1,110 @@ -
- - - - - - - - - - - - - - - - - - - +
+ + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/demos/quickstart/protected/controls/zh/TopicList.tpl b/demos/quickstart/protected/controls/zh/TopicList.tpl index 5273f313..6a4c6e17 100644 --- a/demos/quickstart/protected/controls/zh/TopicList.tpl +++ b/demos/quickstart/protected/controls/zh/TopicList.tpl @@ -1,109 +1,109 @@ -
- - - - - -
-
基础概念
- -
- - - - - -
-
服务使用参考
- -
- - - - - - - + \ No newline at end of file diff --git a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page index 31509338..bc8f2f55 100644 --- a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page +++ b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page @@ -1,136 +1,136 @@ - -

Command Line Tool

-

The optional prado-cli.php PHP script file in the framework -directory provides command line tools to perform various tedious takes in Prado. -The prado-cli.php can be used to create Prado project skeletons, create -initial test fixtures, and access to an interactive PHP shell. -

-

Requirements

-

-To use the command line tool, you need to use your command prompt, command console -or terminal. In addition, PHP must be able to execute PHP scripts from -the command line. -

- -

Usage

-

-If you type php path/to/framework/prado-cli.php, you should see -the following information. Alternatively, if you are not on Windows, -you may try to change the prado-cli.php into an executable -and execute it as a script

- -Command line tools for Prado 3.0.5. -usage: php prado-cli.php action [optional] -example: php prado-cli.php -c mysite - -actions: - -c - Creates a Prado project skeleton for the given . - - -t - Create test fixtures in the given . - - shell [directory] - Runs a PHP interactive interpreter. Initializes the Prado - application in the given [directory]. - - -

The <parameter> are required parameters and [optional] -are optional parameters.

- -

Creating a new Prado project skeleton

- -

To create a Prado project skeleton, do the following:

-
    -
  1. Change to the directory where you want to create the project skeleton.
  2. -
  3. Type, php ../prado/framework/prado-cli.php -c helloworld, where - helloworld is the directory name that you want to create the project skeleton files.
  4. -
  5. Type, php ../prado/framework/prado-cli.php -t helloworld to create - the test fixtures for the helloworld project.
  6. -
- -

Interactive Shell

-

-The interactive shell allows you to evaluate PHP statements from the command line. -The prado-cli.php script can be used to start the shell and load an existing -Prado project. For example, let us load the blog demo project. Assume that your -command line is in the prado distribution directory and you type. -

-

- -$: php framework/prado-cli.php shell demos/blog - -The output should be - -Command line tools for Prado 3.0.5. -** Loaded Prado application in directory "demos\blog\protected". -PHP-Shell - Version 0.3.1 -(c) 2006, Jan Kneschke - ->> use '?' to open the inline help - ->> - -Then we will get an instance of the Prado blog application, and from -that instance we want an instance of the 'data' module. Notice that -a semicolon at the end of the line suppresses the output. - - ->> $app = Prado::getApplication(); - ->> $db = $app->getModule('data'); - -Lastly, we want to use the data module to query for a post with ID=1. Notice that -we leave out the semicolon to show the results. - ->> $db->queryPostByID(1) - -There should not be any errors and you should see the following. - -PostRecord#1 -( - [ID] => 1 - [AuthorID] => 1 - [AuthorName] => 'Prado User' - [CreateTime] => 1148819691 - [ModifyTime] => 0 - [Title] => 'Welcome to Prado Weblog' - [Content] => 'Congratulations! You have successfully installed Prado Blog -- - a PRADO-driven weblog system. A default administrator account has been created. - Please login with admin/prado and update your password as soon as possible.' - [Status] => 0 - [CommentCount] => 0 -) - -

- -

Creating Active Record Classes

-

-In the blog demo project, we need to create two Active Record classes, UserRecord and PostRecord, to represent data records in the users and posts tables, respectively. Active Record classes must extend from the base class ActiveRecord, and must define property names that matches with the field names of the corresponding table. -

- -

-To better organize our directories, we create a new directory protected/database to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory protected/database to PHP include_path, which allows us to use the classes without explicitly including them. -

- - - - - - - -

-At the prompt, enter the following two commands to create UserRecord and PostRecord classes: -

- - ->> generate users Application.database.UserRecord - ->> generate posts Application.database.PostRecord - - -

-Here we used the namespace format again to specify the classes to be created. The path Application.database.UserRecord indicates that we want the UserRecord class file to be protected/database/UserRecord.php. -

- -
+ +

Command Line Tool

+

The optional prado-cli.php PHP script file in the framework +directory provides command line tools to perform various tedious takes in Prado. +The prado-cli.php can be used to create Prado project skeletons, create +initial test fixtures, and access to an interactive PHP shell. +

+

Requirements

+

+To use the command line tool, you need to use your command prompt, command console +or terminal. In addition, PHP must be able to execute PHP scripts from +the command line. +

+ +

Usage

+

+If you type php path/to/framework/prado-cli.php, you should see +the following information. Alternatively, if you are not on Windows, +you may try to change the prado-cli.php into an executable +and execute it as a script

+ +Command line tools for Prado 3.0.5. +usage: php prado-cli.php action [optional] +example: php prado-cli.php -c mysite + +actions: + -c + Creates a Prado project skeleton for the given . + + -t + Create test fixtures in the given . + + shell [directory] + Runs a PHP interactive interpreter. Initializes the Prado + application in the given [directory]. + + +

The <parameter> are required parameters and [optional] +are optional parameters.

+ +

Creating a new Prado project skeleton

+ +

To create a Prado project skeleton, do the following:

+
    +
  1. Change to the directory where you want to create the project skeleton.
  2. +
  3. Type, php ../prado/framework/prado-cli.php -c helloworld, where + helloworld is the directory name that you want to create the project skeleton files.
  4. +
  5. Type, php ../prado/framework/prado-cli.php -t helloworld to create + the test fixtures for the helloworld project.
  6. +
+ +

Interactive Shell

+

+The interactive shell allows you to evaluate PHP statements from the command line. +The prado-cli.php script can be used to start the shell and load an existing +Prado project. For example, let us load the blog demo project. Assume that your +command line is in the prado distribution directory and you type. +

+

+ +$: php framework/prado-cli.php shell demos/blog + +The output should be + +Command line tools for Prado 3.0.5. +** Loaded Prado application in directory "demos\blog\protected". +PHP-Shell - Version 0.3.1 +(c) 2006, Jan Kneschke + +>> use '?' to open the inline help + +>> + +Then we will get an instance of the Prado blog application, and from +that instance we want an instance of the 'data' module. Notice that +a semicolon at the end of the line suppresses the output. + + +>> $app = Prado::getApplication(); + +>> $db = $app->getModule('data'); + +Lastly, we want to use the data module to query for a post with ID=1. Notice that +we leave out the semicolon to show the results. + +>> $db->queryPostByID(1) + +There should not be any errors and you should see the following. + +PostRecord#1 +( + [ID] => 1 + [AuthorID] => 1 + [AuthorName] => 'Prado User' + [CreateTime] => 1148819691 + [ModifyTime] => 0 + [Title] => 'Welcome to Prado Weblog' + [Content] => 'Congratulations! You have successfully installed Prado Blog -- + a PRADO-driven weblog system. A default administrator account has been created. + Please login with admin/prado and update your password as soon as possible.' + [Status] => 0 + [CommentCount] => 0 +) + +

+ +

Creating Active Record Classes

+

+In the blog demo project, we need to create two Active Record classes, UserRecord and PostRecord, to represent data records in the users and posts tables, respectively. Active Record classes must extend from the base class ActiveRecord, and must define property names that matches with the field names of the corresponding table. +

+ +

+To better organize our directories, we create a new directory protected/database to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory protected/database to PHP include_path, which allows us to use the classes without explicitly including them. +

+ + + + + + + +

+At the prompt, enter the following two commands to create UserRecord and PostRecord classes: +

+ + +>> generate users Application.database.UserRecord + +>> generate posts Application.database.PostRecord + + +

+Here we used the namespace format again to specify the classes to be created. The path Application.database.UserRecord indicates that we want the UserRecord class file to be protected/database/UserRecord.php. +

+ +
diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 00000000..94429c9b --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,7 @@ +include.path=${php.global.include.path} +php.version=PHP_53 +source.encoding=UTF-8 +src.dir=. +tags.asp=false +tags.short=true +web.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 00000000..f4a5db2d --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,13 @@ + + + org.netbeans.modules.php.project + + + prado + + + namespace + previosly + + + -- cgit v1.2.3