Download the latest version:
contentigo-80.zip
Contentigocontentigo-80.zip
...the ultra light, super flexible, zero database CMS
version: 96 date: 31-07-2014 changes: - Improved zone url matching - now '/' is a valid zone url prefix - Changed DomainClass::entityData to default to an empty array (not null) and removed duplicate $entityData variable from DAODomainClass - Modified the basic get/set methods of DomainClass and added a propertyExists() method. - Added a getID() function to DAODomainClass ================================================ version: 95 date: 28-07-2014 changes: - Created a 'classes' directory to store framework/supporting classes. - Updated DAODomainClass will now only save to DB fields that have 'changed'. - Fixed bug whereby prepareEntityCreateData() was not being called upon entity create ================================================ version: 94 date: 23-07-2014 changes: - Added $CONTENTIGO_HOME to the include path so that contentigo scripts can be included in a static way, ie require('foo/bar.php') directly from anywhere. ================================================ version: 93 date: 22-07-2014 changes: - Added DomainClass.php and DAODomainClass.php and also added the loadObject function which looks inside the /site/classes folder for classes these changes allow support of proper data encapsulation objects for object model implementation. ================================================ version: 92 date: 18-07-2014 changes: - Changes to Database module DAO for better transaction handling support - added functions: startTransaction(), completeTransaction(), commitTransaction() and rollbackTransaction() Generally commitTransaction() should not be required to be called. - Also updated DAO::executeScript function with modified/improved transaction handling. - Included latest adodb library - version 519 (2014-04-30), but not yet brought online. ================================================ version: 91 date: 14-06-2014 changes: - Updated ContentigoUtils::doPost2 to support an added $headerFields parameter to allow the caller to specify header fields - Changed the EndPoint response data handling. Now the $dataCollector['endpoint_response'] is used to return data from EndPoints As $dataCollector is GLOBAL any function in the call stack can add data to this variable. ================================================ version: 90 date: 25-06-2014 changes: - Modified the callEndPoint() function to better handle response when endpoint is 'unauthorized'. It now calls an overridable function EndPoint::unauthorizedResponse(); which returns and object in the same format as a standard EndPoint function, which contains an http code (in this case will typically be 403 Forbidden) - Added the following line to contentigo to allow for relative includes of scripts, ie: require_once('site.php'); this will make rich class/object models much easier to manage. set_include_path( get_include_path() . PATH_SEPARATOR . $SITE_LOCATION); - Change to callEndPoint(), now the response string defaults to '{}' (a valid JSON string), this is done to avoid jQuery ajax firing the 'error' function when datatype set to 'JSON'. ================================================ version: 89 date: 30-05-2014 changes: - Introduction of the EndPoint functionality for implementation of RESTful APIs. Essentially you create a CSM_ZONES entry for your API, eg: $site[CSM_ZONES] = array ( '/api' => array('ENDPOINT_CONTEXT' => true) ); then define your endpoints as below in the $site[CSM_URL_CONTENT_MAP]: '/api/some-entity' => array( 'endpoint' => 'SomeEntity_EndPoint'), the 'SomeEntity_EndPoint' live in the /end_points directory and extends 'EndPoint' ================================================ version: 88 date: 13-03-2014 changes: - Improved Redirect action to handle invalid urls, by returning a 400 Bad Request - Improved exitWithHTTPCode() funtion to handle: 400, 404 and 429 errors ================================================ version: 87 date: 13-03-2014 changes: - Module class changed - the module_init function takes a $moduleNamespace by default and sets to a protected $moduleNamespace variable this gives all Modules the ability to be 'namespace aware'. ================================================ version: 86 date: 04-03-2014 changes: - Fixed bug with 'catch-all' url processing ================================================ version: 85 date: 04-03-2014 changes: - Fixed bug with catch-all urls incorrectly matching urls at same directory level; - Fixed bug when CSM_URL_CONTENT_MAP cdef is an empty array, eg: '/' => array(), ================================================ version: 84 date: 04-03-2014 changes: - Added function exitWithHTTPCode() which takes an error code (as an integer) and returns appropriate http response THIS IS NOT FINISHED AND IS ONLY IMPLEMENTED FOR 404 ERRORS, eg: exitWithHTTPCode(404); - Major rewrite of url matching code in contentigo - should be more efficient and by default returns 404 responses when urls not matched. for "catch-all" urls (for APIs etc) they must be listed in a new $site[CSM_CATCH_ALL_URLS] array. BEWARE: NOW default behaviour is to return 404 response if request not an exact match found in url map. typically effected urls have actions that use the $pathParts array to read individual path parts. - Big change to Database module - dbconnections are now instance variables, allowing to connect to multiple databases at the same time (as it should be) - Also changes made to DAO.php to allow a dbconnection to be passed in at creation time. - Improved the CSM_SUBMISSION_REPEAT_PROTECTION algorithm to work correctly on sequential requests for same URL ================================================ version: 83 date: 27-02-2014 changes: - Added a 'getSmarty' function, but really need a neat way to register custom modifiers etc (and a neat way to define site-wide constants - MAJOR: changed the main flow order - loadBlocks now gets called before we call actions. This means actions can override block content like page titles etc. ================================================ version: 82 date: 02-02-2014 changes: - Added $site[CSM_POSTPROCESSOR_ACTIONS] to specify common actions that will run after url specific actions - Added ability to CSM_EXIT_TO_LOCATION from the return array in actions which returns after chained actions and post processing actions complete. - The additional "CSM_EXIT_NOW => true" parameter means the script will exit to location immediately and not run chained or post processing actions. - Added extention 'ico' to resource type map - to correctly render ico (favicons) as PNGs (beware, not all favicons are PNGs) - 'domain' property now available in the $dataCollector['environment'] array. ================================================ version: 81 date: 28-01-2014 changes: - MAJOR SITE CONFIG CHANGE, sites now require a /site/domains.php file and a /site/domains/ folder. In addition, the site index.php file is simplified (see "tuvanco" as an implementation example). - Minor change to Mandrill module to return the response object - Minor change to ContentigoUtils::downloadToFile to avoid an undefined variable warning ================================================ version: 80 date: 13-01-2014 changes: - Added the "Madrill" module for sending emails via the Mandrill API ================================================ version: 79 date: 10-01-2014 changes: - Refactored Email module to split sendEmail into a second renderEmail() function, so emails can be send via a 3rd party API (eg: mandrill) - Updated ContentigoUtils::doPost2 to allow for single payload data with the $postDataIsPayload param ================================================ version: 78 date: 21-11-2013 changes: - Added new parameter function 'requestParamsWithPrefix' that returns a list of parameters whose name starts with a given prefix. Useful when prefixing form input names with a 'namespace' prefix. - Added a new CSM_SUBMISSION_REPEAT_PROTECTION site property that allows specification of a minimum url submission rate in seconds. This is to help prevent brute force attempts on login forms etc. - Small update to ContentigoUtils function 'urlProxy' to check for existance of 'path' value in $urlParts ================================================ version: 77 date: 25-07-2013 changes: - Added CURL header curl_setopt( $ch, CURLOPT_ENCODING, ''); to ContentigoUtils to handle gzipped content ================================================ version: 76 date: 13-07-2013 changes: - Changes to the resource_handler to better handle cacheing and implement a 'CSM_SITE_CHANGE_DATE' site change date to control browser caching and make cached resources 'stale'. ================================================ version: 75 date: 04-07-2013 changes: - Changes to the resource_handler to better handle cacheing and implement a 'CSM_SITE_CHANGE_DATE' site change date to control browser caching and make cached resources 'stale'. - Added the JobManager module to run and control threaded processes (very cool). Change JobManager to use the WorkerCacheDAO class found within the module directory ================================================ version: 74 date: 27-06-2013 changes: - Added function "downloadToFile()" to ContentigoUtils (does not implement the max download limit arg) ================================================ version: 73 date: 26-05-2013 changes: - Added 'apk' => 'application/vnd.android.package-archive' as a known content type ================================================ version: 72 date: 17-05-2013 changes: - Created two new helper functions 'arrayVal' and 'booleanArrayVal' which do the same as 'requestParam' and 'booleanRequestParam', but you can pass in the specific array, ie not tied to $_REQUEST array ================================================ version: 71 date: 06-05-2013 changes: - Added the 'textToHTML' function to ContentigoUtils module. It converts line breaks to <br> and links to <a> tags ================================================ version: 70 date: 29-04-2013 changes: - Added ability to override content-type for a given URL in the $site[CSM_URL_CONTENT_MAP], eg: '/rss' => array( 'actions' => array('LoadRSS'), 'template' => 'rss', 'content_type' => 'application/rss+xml') - Updated Email module - the rendered template email subject now available in the email body template as variable "__subject__" eg: {$data.view.__subject__}. This is because a valid <title> tag must exist in the <head>, so makes sense to use the actual email subject as the title. ================================================ version: 69 date: 15-04-2013 changes: - Moved the $zoneDef['ZONE_TEMPLATE'] template override block so that Zones can be defined JUST for the purposes of templates (no special session keys required) ================================================ version: 68 date: 01-04-2013 changes: - Updated Email module - only attempts to send emails if there is more than 1 recipient - Updated Email module to filter out all invalid email addresses ================================================ version: 67 date: 31-03-2013 changes: - Altered ContentigoUtils method doUnproxyGet() to handle when url paths are empty *NEEDS TESTING* - Placed 'local handling' code before 'resource' handling code (resource handlers look at $_SESSION['locale'] ================================================ version: 66 date: 19-03-2013 changes: - Specified the HTTP_REDIRECT for aliases to be a 301 permanent redirect - Introduced a new 'Test' module to perform simple module testing (implemented in cQuery) Tests can now be defined using the CSM_RUN_TESTS and CSM_TESTS site properties - Added a '301 Moved Permanently' header when doing a 'CSM_FORCE_HTTPS' redirect - Improved resource handling and added some audio mime types ================================================ version: 65 date: 17-01-2013 changes: - Fixed 'Undefined index: path' notice when accessing site root - Created function purgeSiteSession() that emptys site session data, for use when 'logging out' ================================================ version: 64 date: 08-01-2013 changes: - Removed old ADODB and Smarty 2 libraries to reduce footprint ================================================ version: 63 date: 05-01-2013 changes: - Added the 'ParamViewAction' to simply pass url params through to the view context - *** Included and now using Smarty 3.1.12 *** Beware, there maybe template compatibility issues. - Included smarty 2.6.27 to replace old Smarty 2.6.26 - not used in this version of Contentigo ================================================ version: 62 date: 04-12-2012 changes: - Changed Email module to content type text/html, not text/plain - Updated Email module to allow common email headers and footers ================================================ version: 61 date: 27-11-2012 changes: - Updated Email module to base64 encode email subject so that UTF-8 characters are correctly displayed. - Added 'startsWith' and 'endsWith' string functions to Utils module ================================================ version: 60 date: 23-11-2012 changes: - Improved the util function 'textToURLText' and added an optional '$ampersandReplacement' argument ================================================ version: 59 date: 17-11-2012 changes: - Added function 'actionErrorRedirect' to redirect user back to a defined referer page to handle application errors referer pages are defined in '$site[CSM_URL_REFERERS]' ================================================ version: 58 date: 17-11-2012 changes: - Modifications to 'FieldValidatorAction' (check SupplierBox and Jivewall work before versioning) - Change the login redirect behaviour to store GET and POST (REQUEST) data while performing the login process ================================================ version: 57 date: 12-11-2012 changes: - Added the 'Favicon' action to load favicons from site/resources/images location - Copied the Jivewall function 'textToURLText' to ContentigoUtils (turns arbitrary text into URL friendly SEO text) ================================================ version: 56 date: 09-10-2012 changes: - Property REDIRECT_ON_AUTHERIZATION_FAILURE can now be defined in a CSM_ZONE definition to override global 'CSM_AUTHENTICATION' value per zone (useful to force a user to login to a '/secured' url, but directly return a 403 if attempt a '/secured/admin' url) - Added site property 'CSM_JAVASCRIPT_DISABLE_OPTIMIZATION' to allow to bypass javascript minification - Fixed a bug with util function 'doPost2' ================================================ version: 55 date: 01-11-2012 changes: - Now using newer jsmin library version 1.1.2 - Now using latest ADODB version 'adodb518a' - Utils now implemented as the module 'ContentigoUtils' (beware, must change all sites to use new class) ================================================ version: 54 date: 14-10-2012 changes: - Added support for internal url alias redirect with $site[CSM_URL_ALIASES] - 'HTTP_REDIRECT' => true CSM_URL_ALIASES correctly causes a redirect of an aliased URL - Added 'svg' as a known content type in resources.config.php - Added 'generateRandomKey' function to Utils class - generates strings of random letters & numbers ================================================ version: 53 date: 13-06-2012 changes: - Updated 'outputFile' core function - now returns false if file does not exist - Added site variable 'CSM_CSS_DISABLE_OPTIMIZATION' to turn off cssTidy if causes problems with CSS (-webkit-xxx stuff) ================================================ version: 0.1.52 date: 26-04-2012 changes: - Added the 'CSM_DEBUG_EMAIL_FILE_EXTENSION' option to site.php to allow custom file extentions (default is .txt) - Changed the Email module headers ================================================ version: 0.1.51 date: 30-01-2012 changes: - Added saveData2() a far more convenient way to save JSON content data (saveData() should be deprecated) - Changed Database module to allow for multiple schemas to be defined in the database JSON config - Added an optional 'namespace' to loadModule to allow multple instances of differently configered modules (eg: multiple database modules that connect to different databases) - Fixed some incorrect references to locale parameters being passed to 'getLocaleFileName' - Fixed that block data was not getting derived from locale. - removed more unrequired files from ADODB - removed csstidy (original) and left the modified version ================================================ version: 0.1.49 date: 25-10-2011 changes: - updated Email module to create debug email directory if doesn't exist. - added CSM_FIELD_VALIDATORS to $site to define site field validators - added 'FieldValidatorAction' as a system action to load site field validators ================================================ version: 0.1.48 date: 23-11-2011 changes: - upgraded adodb from 511 to 514 (DELETE the previous version when done) - added a 'CSM_FORCE_HTTPS' option, that redirects all HTTP pages to its HTTPS equivilent. ================================================ version: 0.1.47 date: 18-10-2011 changes: - added 3rd parameter to 'outputFile' which allows to download a file with an alternative name - added a few more resource types to the resources.config.php to handle docx files etc ================================================ version: 0.1.46 date: 16-10-2011 changes: - added SORT_ASCENDING and SORT_DESCENDING constants to DAO class ================================================ version: 0.1.45 date: 14-10-2011 changes: - small change to 'doRedirectOnAutherization' function - non-functional - small change to doRedirectOnAutherization function - only appends param string if param data not empty - fixed bug in Redirect action ================================================ version: 0.1.44 date: 06-10-2011 changes: - added support of the $site[CSM_AUTHENTICATION] config item which allows configuration of redirect to login pages if authentication is required - changed 'booleanRequestParam' to remove the 3rd '$valueIfNotFound' parameter! It was wrong to add it. ================================================ version: 0.1.43 date: 30-09-2011 changes: - changed 'requestParam' to handle when values are arrays (from the html form input "foo[]" convention) - changed 'booleanRequestParam' to take a 3rd '$valueIfNotFound' parameter ================================================ version: 0.1.42 date: 28-09-2011 changes: - added helper function 'requestParamExists()' useful for checking if request parameters exist and have a non-zero string length ================================================ version: 0.1.41 date: 26-09-2011 changes: - added function existsRequestParam() to contentigo to allow a defined value to be returned if a request param does or doesn't exist ================================================ version: 0.1.40 date: 23-09-2011 changes: - moved 'requestParam()' and 'booleanRequestParam()' into Contentigo class from Action class - for universal access ================================================ version: 0.1.39 date: 22-09-2011 changes: - Removed the 'return by reference' "&" of Database::&getDAO( $daoName) - added 'arrayValue' to the Utils library ================================================ version: 0.1.38 date: 20-09-2011 changes: - added 'audio' as a resource type in 'resources.config.php' (although not sure if needed) - added a 'truncate' string function to 'Utils' ================================================ version: 0.1.37 date: 10-09-2011 changes: - Added new system action 'Sitemap' which looks for a 'sitemap.xml' file under site environement - Altered Database module to attempt to disconnect before establishing a new connection - fixed small bug with caching of css files - an extra ';' was added which broke the CSS optimizer - created a new version of the CSS optimizer that does not produce loads of output errors ================================================ version: 0.1.36 date: 08-09-2011 changes: - placed Action under /contentigo/actions/ - system now looks for a system action if one not found in user site - created 'Robots' as a system action that looks for a 'robots.txt' file under environment directories - moved 'Redirect' action from Femtoo to system action ================================================ version: 0.1.35 date: 04-09-2011 changes: - mb_trim declared as 'static' - removed 'CSM_BLOCKS_DEFINITIONS' and all related functionality - was only used in one site and was easily circumvented - removed 'CSM_BLOCK_DATA_MAP' and all related functionality - beware of any sites still using this... - added Action::booleanRequestParam( $paramName, $valueForTrue) to help parse request parameters to true/false values; ================================================ version: 0.1.34 date: 01-09-2011 changes: - Changed Email::sendMail function not to assume there is a 'toEmailAddresses' parameter - Removed need for CSM_DATABASE_ENABLED site variable - Database module established own connection when first loaded - All modules now have an inherited Module::module_init() function to perform one-time initialization ================================================ version: 0.1.33 date: 29-08-2011 changes: - Slightly changed Action::requestParam() and automatically handles slashes ================================================ version: 0.1.32 date: 29-08-2011 changes: - Environment specific site.php config file now loaded and overrides default site.php - Slightly changed Action:: ================================================ version: 0.1.31 date: 28-08-2011 changes: - Implemented automatic javascript minifying - Implemented automatic CSS minifying/tidying ================================================ version: 0.1.29 date: 24-08-2011 changes: - updated Contentigo::returnTemplateContent() to combine existing '$dataCollector' into template data ================================================ version: 0.1.28 date: 24-08-2011 changes: - Added the 'sendPlainMail()' function to the Email module to help send quick and simple emails - fixed a bug so that environment defaults are present even if no environment specific content exists - Changed Action::requestParam() - now checks it not an empty string, even after trimming ================================================ version: 0.1.27 date: 25-07-2011 changes: - $ENVIRONMENT no longer accessible globally, but should now be accessed via the dataCollector - Added environment defualts, specifaically 'server_name' to the $dataCollector['environment'] array - a ZONE can now specify 'SERVER_RESTRICTED' => true to only allow requests originating from the server - added 'loadValidator' function to load field validators from the /site/field_validators directory ================================================ version: 0.1.26 date: 14-07-2011 changes: - CSM_SCRIPT_SETS to allow script files to be bundled together under a single name - CSM_CSS_SETS to allow css files to be bundled together under a single name - added 'requestParam()' to action superclass - trims params if they exist and allows a default if param not found - added the Module super class for modules, although has not method or properties at the moment - fixed a bug with i18n for CSS files - made $dataCollector accesible globally - added logMessage and logVar global functions ================================================ version: 0.1.25 date: 26-06-2011CSM_SCRIPT_SETSme changes: - fixed small bug in Email module - fixed bug that 'contentigo' wasn't available as a global variable ================================================ version: 0.1.24 date: 04-06-2011 changes: - Removed some of the unrequired files from the Adodb library (Database module) - Added 'pptx' as a resource type so pptx files can be correctly handled by the browser ================================================ version: 0.1.23 date: 30-05-2011 changes: - improved the DAO->executeScript() function to take optional 'tokens' and 'replacements' array to allow sql script substitutions (database ids etc) ================================================ version: 0.1.22 date: 27-05-2011 changes: - added new function: loadJSONDataFile( $jsonDataFile, $assoc = true) - to load any arbitary json data file. ================================================ version: 0.1.21 date: 14-05-2011 changes: - deprecated $CONTENTIGO_LOCATION variable and replaced with $CONTENTIGO_HOME - altered standard index.php - now looks for $CONTENTIGO_HOME which is a full path to the contentigo installation - changed DAO->getFieldValueForField() - no longer throws an exception, but returns false ================================================ version: 0.1.20 date: 12-05-2011 changes: - block data is now loaded for 'template' output for both cdef blocks and template blocks (could do with some refactoring) - block data follows the alias naming in the sitemap ('>>>' notation) - fixed bug that content type was not being set when serving up image resources ================================================ version: 0.1.19 date: 05-05-2011 changes: - blocks may now contain other blocks - if more than one block is specified in a cdef and 'response_type' is SINGLE_BLOCK, the first block is the 'main' block that gets displayed by Smarty ================================================ version: 0.1.18 date: 30-04-2011 changes: - fixed bug in 'loadData()' function to correctly use the session locale - all url site map entries must start with '/' - $pathDepth now start from 0, ie the path '/' = 0, '/foo' = 1 '/foo/bar = 2 etc - the $pathParts array now includes the 0th element '/' (so array is one element larger for all urls) - CSM_ROOT now defaults to '/' not '' ================================================ version: 0.1.17 date: 17-04-2011 changes: - fixed a bug with template blocks ================================================ version: 0.1.16 date: 13-04-2011 changes: - added convenience method to the DAO object of database module ================================================ version: 0.1.15 date: 31-03-2011 changes: - introduced 'ZONE_TEMPLATE' property of a CSM_ZONE entry. So now each 'zone' can have its own template - changed the data structure of the email template data ================================================ version: 0.1.14 date: 18-03-2011 changes: - improved i18n support for both URL or custom schemes. ================================================ version: 0.1.13 date: 12-03-2011 changes: - renamed and added constants for the site.php file - fixes to the email module ================================================ version: 0.1.12 date: 05-03-2011 changes: - added the Email module for template based, content driven email sending. very flexible - added the contentigo 'returnTemplateContent' method and a movement toward class methods ================================================ version: 0.1.11 date: 12-12-2010 changes: - added url 'zones' for restricting user access to parts of sites. this is a neat feature, simply checks a url against an entry in sites['ZONES'] to see if the defined key is 'true' in the session['ZONES'] array ================================================ version: 0.1.10 date: 26-11-2010 changes: - block content now merged with view data. site -> template -> block - $dataCollector['block'] context removed. - added DEFAULT_TIMEZONE parameter to the $site file, ie $site['DEFAULT_TIMEZONE'], which calls "date_default_timezone_set[...]" ================================================ version: 0.1.9 date: 26-11-2010 changes: - introduced the Database module and database support :-) ================================================ version: 0.1.8 date: 11-11-2010 changes: - introduced 'content caching' ================================================ version: 0.1.7 date: 07-11-2010 changes: - merged $data.template with $data.site to allow overriding for things like page titles, meta tags etc - refactoring (re-ordered the process flow in contentigo ================================================ version: 0.1.6 date: 02-11-2010 changes: - refactored loading of blocks - introduced: $site['BLOCKS_DEFINITIONS'] to allow actions to be called whenever a block is loaded ================================================ version: 0.1.5 date: 01-11-2010 changes: - introduced environment data (live, staging etc) for databases and services... ================================================ version: 0.1.4 date: 14-10-2010 changes: - introduced site modules ================================================ version: 0.1.2 date: 14-10-2010 changes: - improve action interface - added 'PREPROCESSOR_ACTIONS' - added 'BLOCK_DATA_MAP' - added 'ACTION_RESPONSE_MAP' ================================================ version: 0.1.1 date: 21-09-2010 changes: - added request 'response types' (TEMPLATE, SINGLE_BLOCK, RAW) - added 'actions' to handle data processing and business logic functions ================================================ version: 0.1.0 date: 13-09-2010 changes: Initial release ================================================