Sr. Web Developer
mediabistro.com
US-NY-New York

Justtechjobs.com Post A Job | Post A Resume

binarycloud: The Opensource Platform for php Web Applications
docs/
PHPDoc and the written system documentation reside in this directory. The generated API documentation (from code comments) is stored in a module html directory so it can be accessed through the webserver. I intend to convert to an SGML documentation source shortly.
user/conf/
This directory contains all of the systemic configuration files for binarycloud:
  • defined_constants.conf is loaded at startup, and defines all of the necessary path and configuration constants. Be very familiar with this file.
  • file_permissions.conf controls access to files in htdocs. If a file in htdocs isn't listed here, it won't be executed. This file also contains an array of directory names, so breadcrumbs and other apps can use a 'nice' looking string instead of a path.
  • prepend.inc - it all starts with the prepend. Our prepend file loads the execution timer, and defined_constants. Based on the settings in defined_constants it then loads prepend_exclude.conf, and checks to see if the file being executed in htdocs/ is excluded from binarycloud. If it is not, prepend then loads debugging, our error handler, error codes, authentication, and permissions.
  • prepend_exclude.conf contains an array of files in htdocs which should not be controlled by binarycloud.
  • append.inc stops the execution timer, and prints the execution time - it uses append_exclude.conf in the same way that prepend.inc does - we set it up this way because we can foresee the need to append more logic.
  • append_exclude.conf is exactly the same as prepend_exclude.conf, but for the appended logic.
  • php.ini - we like to keep it here, but it isn't strictly necessary.
user/db/schema/
This is where all of the xml schema files for the database are stored. Metabase uses a simple xml format for doing schema definition, which greatly simplifies the task of creating database tables. This directory also contains files with the .before extension - these files are extremely important. When you install a schema file in a database, Metabase writes out a .before file, which is a copy of your current schema definition file. When you change the schema file, and install it in the database a second time, Metabase checks to see if there is a .before file. If the .before file is present, Metabase updates the database table. If no .before file is present, Metabase tries to create the table. If the table doesn't exist in the database, the table is created - but if the table already exists, and there is no .before file present, you'll get errors.
user/db/objects/
This is where all the data access objects are stored. As a general rule, we like to have one .schema file in user/db/schema/ for every table, and one dbobject for every table. However, there are no hard-and-fast rules associated with querying multiple tables from a dbobject. Database access objects are central to the binarycloud system design: because we use Vdbobjects to talk to the database, we can change abstraction layers, revise sql, etc., without ever having to touch application logic.
user/db/dump/
This directory is where db dump files go. Metabase can extract all of the data from a database table, and spit it out into an XML file. That XML file can be loaded back up into another database.
user/mod/
This is where 80% of your work will take place - the directory where modules are stored. A module is a piece of logic, usually fairly simple (we like to keep complex logic in libs) that presents some markup to the client. All modules are stored in subdirectories. An "application" is a group of associated modules that share the same markup templates (the knowledgebase app is a good example of this concept).
If you have a look in a few of the module directories you'll notice modules are always pure logic. They include whatever markup they need, and populate that markup with data, but they never contain markup. If markup was integrated with the module logic, changing the look and feel of a module would be nightmarish, and upgrading to a new version would be nearly impossible. With external template files, we can tell the module to use a different markup template depending on the context in htdocs. For example, if you have sections of your website that use different colors and graphics, but you need to use the same module in three different locations, you can make three markup templates and pass the right template to the module at runtime.
user/tmpl/
This contains an arbitrary hierarchy of markup, which is globally accessible. There is no particular structure imposed, but it's a good idea to keep things in directories. Markup that is stored in module directories should be unique to that module. If you think the markup will be used by more than one module, put it here.
[ Next Page ]

[Page 1]  [Page 2]  


Comments:
Text files conversionkaruna07/29/05 06:24
connection à BD oracle8iahmed12/17/04 10:06
Licensing (RE: Duplicate project)James01/02/04 15:30
Nice idea, wouldn't use it commercially tho..Icerunner09/18/02 16:49
"make depend" problemOzgur07/17/02 06:20
about php nafiseh shabib04/02/02 04:39
Binary to text convertionabhay03/26/02 09:27
RE: Automatic Database CreationMatthew Black01/18/02 22:57
RE: phpShop ripoff?Alex Black03/31/01 18:07
Error at the beginnig..Tony03/20/01 07:25
RE: databaseAlex Black03/09/01 03:33
Automatic Database Creationcarlos urbieta03/07/01 21:35
databasecarlos urbieta03/07/01 21:25
RE: Instalation problemMarcel03/01/01 09:09
install problempavlos02/27/01 22:39
RE: Support for IIS John02/26/01 15:36
phpShop ripoff?Brian Quentin 02/23/01 08:37
RE: Support for IIS R.Talis02/20/01 11:11
install.php stuckChuck02/20/01 05:55
Licensing (RE: Duplicate project)Alex Black02/17/01 18:57
Licensing (RE: Duplicate project)Cameron S Watters02/15/01 12:17
RE: ugh.. still why?Alex Black02/14/01 14:35
RE: Why BinaryCloud versus PHPLib?Alex Black02/14/01 14:34
RE: Worked, but didn't work...Angel Hernandez02/13/01 16:55
RE: Support for IIS David Stubbs02/12/01 14:51
ugh.. still why?soellman02/08/01 20:37
Why BinaryCloud versus PHPLib?David Phillips02/08/01 09:08
Grumpin' before testin'Jared Smith02/08/01 07:03
RE: Too soonAlex Black02/05/01 16:48
RE: Workaround for auto_prependAlex Black02/05/01 16:44
RE: Coder vs. marketingAlex Black02/05/01 16:39
Coder vs. marketingJan Lehnardt02/03/01 04:06
RE: Worked, but didn't work...Alex Black02/02/01 21:09
RE: Too soonStephen VanDyke02/02/01 16:10
Workaround for auto_prependled_belly02/02/01 14:11
RE: Sounds Great... uhhhRick02/02/01 13:27
Worked, but didn't work...Angel Hernandez02/02/01 01:25
RE: Sounds Great... uhhhAlex Black02/01/01 13:44
RE: Show me it works, Please.Alex Black02/01/01 13:40
RE: separating markup and codeAlex Black02/01/01 13:38
RE: Too soonAlex Black02/01/01 13:36
RE: separating markup and codeDavid Fischer02/01/01 11:58
separating markup and codebrian01/31/01 15:46
RE: Sounds Great... uhhhDerek Piper01/31/01 14:09
Show me it works, Please.Ocedeco01/31/01 12:52
Too soonBrian Quentin 01/31/01 11:01
RE: Instalation problemAlex Black01/30/01 20:13
RE: FreeBSD+php+OracleAlex Black01/30/01 20:11
RE: Sounds Great... uhhhAlex Black01/30/01 20:08
RE: Duplicate projectAlex Black01/30/01 20:07
RE: Support for IIS Alex Black01/30/01 20:04
RE: Instalation problemAlex Black01/30/01 20:03
RE: Any samples? Showing too early?Alex Black01/30/01 20:02
RE: Instalation problemSam Barnum01/30/01 16:58
FreeBSD+php+OracleSteffen01/30/01 16:20
RE: Duplicate projectmadbilly01/30/01 14:43
RE: Instalation problemIgnacio Galmarino01/30/01 11:35
Sounds Great... uhhhOcedeco01/30/01 09:24
Duplicate projectSeek3r01/29/01 19:01
Support for IIS Ciaran01/29/01 16:18
Instalation problemIgnacio Galmarino01/29/01 15:14
Any samples? Showing too early?Brian Quentin01/29/01 13:32
 

If you are looking for help, please post on the appropriate forum here. Your questions will be answered much more quickly.

Add A Comment:

Name:

Email:

Subject:

Message:

To reduce spam posts, messages are now manually approved

You are not [logged in]. That means your account will not get credit for this post.