The cbframe system
Copyright Chris Barnes 2006-2012 All rights reserved.
The cbframe system is a code base and database schema designed to facilitate the rapid development of Database Driven Web Applications using PHP.
Aims
To provide a platform which:
- Allows developers to focus on building application logic rather than being caught in the underlying technologies
- Allows developers to write a database driven forms based system as quickly as in Microsoft Access
- Is Database and Platform Agnostic
- Does not limit the developers building on the framework
- Encourages MVC
- Minimizes modifications to the orginal source dependencies in order to facilitate easy upgrades.
- Encourages Application Specific customization
- Makes use of tried and tested open source technologies wherever possible
Server Side Dependencies
Not limited to:

- Apache2 (recommended) or Microsoft IIS (not recommended)
- PHP5.2.1
- MySQL Server 5 (recommended) or Microsoft SQL Server
- ADODBPHP Database Abstraction Layer
- PHPMailer (modified)
- Adriane Boyd's BooleanToSQL Class (to be modified)
- fckeditor
- Scott Mattocks Cascading Menu
- HTMLDOC
- Magpie RSS
- Kevin Roth's RTE Editor
- Securimage (modified)
Please note that the author of cbframe does not claim any ownership of the dependancies. Their inclusion is in accordance with their GNU licenses and should not be construed as an attempt to appropriate them. Our preferred platform is a Debian based LAMP stack. Pretty much all of the code has been written using the "stack trace" concept for error reporting and handling so that buggy applications do not vomit their inner workings at users. The cbframe system was tested on Postgres successfully. It has not been tested on Oracle.
Core Features
Please note that the existence of the cbframe system on your equipment does not mean that you have been granted license to use any part of it unless specifically indicated.
Not limited to:
- Database Backed Session Management via ADODBPHP Session Manager
- User Management and authentication system with Integrated, extendable permissions and forensics
- Automated Session Referer Recording
- Integrated HTTP Logging
- Integrated Error Logging
- Integrated Orders and Products System including Sales Order Generation facility with merge
- Integrated CRM type logging system with file storage
- Integrated CRM type Job Management with billing support
- Integrated Asset Management System support
- Integrated Paypal and Google Checkout APIs
- Integrated Libraries for handling Financial Transactions and documents
- Skinable Admin System with easy to code plugin menus
- Auto Form Handling System with Customizable Automatic Client Side Validation based on Database Schema
- Customizable SQL to HTML Table for quick development of reports and lists from the Database with a host of features
- Customizable SQL to HTML based calendar interfaces for quick development of Database driven Calendar Applications
- An XML RPC system using an XML Protocol similar to SOAP
- A Multipart MIME Message Decoder
- A file download handler for serving secured files
- A basic RSS Reader System
- A basic CMS System*
- A Locale awareness system*
Paths
The cbframe codebase in generally installed in the document root in a folder called cbframe.
Original Code for the cbframe resides in
- /admin
- /cli
- /iris-exchequer
- /lib
- /lib_js
- skins/default
- /winlib
- /ZMAdmin
A few modifications have been made to the Open Source scripts which are clearly marked in the cbframe folder and still contain their GPL license information.
Database Schema
The Schema was designed to be as portable as possible and has been used successfully with MySQL and SQL Server. For best results use MySQL Server 5.
The database schema is part of the original framework. Notice that table and field comments indicate which part of the the framework the table serves. See SHOW CREATE TABLE.
In most cases I have indicated a new field specific to an application built on top of the cbframe by prefixing it with the name of the application. For example "courio_services" indicates a field which is not part of the cbframe framework but which is specific to the Courio system and is thus not part of the cbframe.
In most of my applications you'll find a folder called php_lib in the document root and also "content". This contains code specific to the application and which is not part of the cbframe.
| TABLE_NAME | TABLE_COMMENT |
| bank_accounts | cbframe_finance; InnoDB |
| bank_import_systems | cbframe_lookup |
| bank_import_systems_tt | cbframe_lookup |
| bank_payment_batch | cbframe_finance |
| bank_statement | cbframe_finance; InnoDB |
| batch_process | cbframe_core; InnoDB |
| batch_process_types | cbframe_lookup |
| classification_property_types | cbframe_core |
| classifications | cbframe_core; InnoDB |
| cms_content | cbframe_cms; InnoDB |
| cms_template_tags | cbframe_cms; InnoDB |
| countries | cbframe_lookup |
| crm_jobs | cbframe_crm; InnoDB |
| crm_jobs_change_log | cbframe_crm; InnoDB |
| crm_log | cbframe_crm; InnoDB |
| crm_quality | cbframe_lookup |
| currency_codes | cbframe_lookup |
| entity_permissions | cbframe_core |
| error_log | cbframe_core |
| fixed_asset | cbframe_crm; InnoDB ; (`owner`) REFER `cbframe_dev/users`(`userid |
| fixed_asset_descriptor | cbframe_crm |
| fixed_asset_relationships | cbframe_crm |
| fixed_asset_status | cbframe_lookup |
| ft_header | cbframe_finance; InnoDB |
| ft_trail | cbframe_finance; InnoDB ; (`internal_ref`) REFER `cbframe_dev/ft_ |
| ft_types | cbframe_lookup; InnoDB |
| guestbook | cbframe_core |
| http_log | cbframe_core |
| ipn_log | cbframe_order; InnoDB |
| language_codes | cbframe_lookup |
| lead_sources | cbframe_crm |
| lkp_project_status | cbframe_lookup |
| locations | cbframe_crm; InnoDB |
| multimedia | cbframe_multimedia |
| multimedia_album | cbframe_multimedia |
| naics_codes | cbframe_lookup |
| nominal_codes | cbframe_finance |
| offers | cbframe_order; InnoDB |
| order_line_items | cbframe_order; InnoDB |
| orders | cbframe_order; InnoDB ; (`billing_contact_userid`) REFER `cbframe |
| payment_methods | cbframe_lookup; InnoDB |
| paypal_ipn | cbframe_order; InnoDB |
| permissions | cbframe_lookup |
| products | cbframe_order; InnoDB |
| sessions | cbframe_core |
| tax_codes | cbframe_lookup |
| uk_counties | cbframe_lookup |
| user_attribute_types | cbframe_core |
| user_attributes | cbframe_core; InnoDB |
| user_email_accounts | cbframe_core; InnoDB |
| user_types | cbframe_lookup |
| users | cbframe_core; InnoDB |
| zperiod | cbframe_finance; InnoDB |
| zperiod_nominal_activity | cbframe_finance; InnoDB |
| zperiod_nominal_balances | cbframe_finance; InnoDB |