Mojavi CHANGELOG for 2.0 ------------------------------------ ----- BUG FIXES ---------------------------------------------------------------- - Path variables would not be retrievable because REQUEST_URI does not exist - Stripping slashes on request parameters that are arrays - Controller::getDefaultView() can return VIEW_NONE without breaking - ValidatorManager handled required messages incorrectly ----- NOTABLE MODIFICATIONS ---------------------------------------------------- If you need help making the following changes, check out this upgrade forum: http://www.mojavi.org/forum/viewtopic.php?t=145 1. All custom sub-classes constructors no longer need to take a &$controller parameter and do not need to call the parent constructor this includes Actions and Views OLD class MyAction extends Action { function & MyAction (&$controller) { parent::Action($controller); } } NEW class MyAction extends Action { } 2. All methods that would take no parameters such as execute() and the like, must now take three required parameters. This includes practically any method where you would need access directly to $controller, $request or $user. OLD class MyAction extends Action { function execute () { } } NEW class MyAction extends Action { function execute (&$controller, &$request, &$user) { } } 3. Renderer constructors now take the three most common parameters, $controller, $request, and $user. A template must be specified with setTemplate(), instead of being set in the constructor. 4. Removed all constructor params from all renderers. Initialization is now done by calling $renderer->getEngine() and altering the engine settings directly. 5. SmartyRenderer and SmartTemplatesRenderer don't require a constant to be set defining the path to the class files. Now, you must include the class manually before you create the renderer instance. 6. Controller now caches filter lists. View the GlobalFilterList source to see how it's caching Filter implementations on a request level. 7. All parameters GET/PATH/POST are stripped of slashes if magic_quotes_gpc is on. 8. When returning a view it is now possible to optionally return an array to specify a separate action and view to use, instead of the default of the current action. The array must have three indices: Index one: Module name Index two: Action name Index three: View e.g.: return array('Default', 'PageNotFound', VIEW_SUCCESS) 9. A module can contain its own configuration file. If the file 'config.php' exists in a root module directory, it is executed a single time before any requests to that module are made. 10. Provided support for module named actions and views. e.g. class: _Action in file: Action.class.php Same works with views, but replace Action with View. 11. Index action classes no longer need to be named ModuleNameIndexAction, they're now named ModuleName_IndexAction. The filename remains the same. e.g. class: _IndexAction in file: /IndexAction.class.php to be finished ... ----- DIRECTORY STRUCTURE ------------------------------------------------------ lib/ - Source to all classes included in mojavi-all-classes.php - - *NOTE* this is included for your convenience, but is not - required to run Mojavi lib/filter/ - Filter system lib/logging/ - Logging system opt/ - Optional classes that must be included manually - Do NOT put custom classes in this directory otherwise they - will be overridden when you get a new Mojavi version opt/auth/ - Custom authentication handlers opt/filters/ - Custom filters opt/logging/ - Custom logging utilities opt/renderers/ - Custom renderers opt/session/ - Custom session handlers opt/sql/ - SQL utilities opt/user/ - Custom user containers and members opt/util/ - Utility classes opt/validators/ - Custom validators webapp/ - Base directory structure for your web application ----- NEW CONFIG SETTINGS ------------------------------------------------------ AVAILABLE - Allows you to specify the status of your website as being - available or unavailable. DISPLAY_ERRORS - Whether or not to display errors. Used for development - and debugging purposes. LOG_DIR - Absolute file-system path to a world-writable log directory MOJAVI_FILE - Absolute file-system path to the - mojavi/mojavi-all-classes.php file - - *NOTE* this file contains all lib classes OPT_DIR - Absolute file-system path to the opt directory MODULE_ACCESSOR - The parameter name used to specify a module. ACTION_ACCESSOR - The parameter name used to specify an action. PATH_INFO_ARRAY - Associative array that may contain a key that hOLDs path PATH_INFO_KEY - information for a request, and the key name SCRIPT_PATH - Absolute web path to the index.php script UNAVAILABLE_MODULE - Allows you to specify an action to be executed when the UNAVAILABLE_ACTION - site is unavailable - - *NOTE* works with AVAILABLE config setting ----- NEW CLASSES -------------------------------------------------------------- lib/ActionChain lib/logging/Appender lib/logging/ErrorLogger lib/logging/FileAppender lib/logging/Layout lib/logging/Logger lib/logging/LogManager lib/logging/Message lib/logging/PatternLayout lib/logging/StdoutAppender opt/auth/AuthorizationHandler opt/auth/PrivilegeAuthorizationHandler opt/session/MySQLSessionHandler opt/session/PgSQLSessionHandler opt/session/SessionHandler opt/session/SQLSessionHandler opt/sql/SQLStatement opt/user/Container opt/user/PrivilegeUser opt/user/SessionContainer opt/util/ConversionPattern ----- MOVED FILES ------------------------------------------------------------- GlobalFilterList: OLD: lib/standard_filters/GlobalFilterList.class.php NEW: lib/GlobalFilterList.class.php YourModuleFilterList: OLD: webapp/modules/YourModule/filters/YourModuleFilterList.class.php NEW: webapp/modules/YourModule/YourModuleFilterList.class.php SmartTemplatesRenderer: OLD: lib/SmartTemplatesRenderer.class.php NEW: opt/renderers/SmartTemplatesRenderer.class.php SmartyRenderer: OLD: lib/SmartyRenderer.class.php NEW: opt/renderers/SmartyRenderer.class.php to be finished ... ----- NEW CONSTANTS ------------------------------------------------------------ AUTH_DIR - Custom authentication handlers reside here - Defined as: OPT_DIR/auth/ FILTER_DIR - Custom filters reside here - Defined as: OPT_DIR/filters/ - - *NOTE* used to be STANDARD_FILTER_DIR LIB_DIR - Custom library files reside here - Defined as: BASE_DIR/lib/ LOGGING_DIR - Custom logging utilities reside here - Defined as: OPT_DIR/loggers/ MODULE_DIR - Modules reside here - Defined as: BASE_DIR/modules/ RENDERER_DIR - Custom renderers reside here - Defined as: OPT_DIR/renderers/ SESSION_DIR - Custom session handlers reside here - Defined as: OPT_DIR/session_handlers/ SQL_DIR - SQL utilities reside here - Defined as: OPT_DIR/sql/ TEMPLATE_DIR - Globally available templates reside here - Defined as: BASE_DIR/templates/ USER_DIR - Custom user containers and members reside here - Defined as: OPT_DIR/user/ UTIL_DIR - Utility classes reside here - Defined as: OPT_DIR/util/ VALIDATOR_DIR - Custom validators reside here - Defined as: OPT_DIR/validators/ - - *NOTE* used to be STANDARD_VALIDATOR_DIR ----- NEW METHODS -------------------------------------------------------------- Action::initialize() Controller::forward() Controller::getRenderMode() Controller::redirect() Controller::setRenderMode() Renderer::clearResult() Renderer::getEngine() Renderer::fetchResult() Renderer::getMode() Renderer::getTemplateDir() Renderer::setArray() Renderer::setArrayByRef() Renderer::setMode() Renderer::setTemplateDir() Renderer::templateExists() Request::getAttributeNames() Request::getAttributes() Request::getCookie() Request::getCookieNames() Request::getCookies() Request::getParameterNames() Request::getParameters() Request::hasAttribute() Request::hasCookie() Request::hasError() Request::hasParameter() Request::setErrors() Request::setParameter() Request::setParameterByRef() User::clearAttributes() User::getAttributeNames () User::getAttributes() User::mergeAttributes() Validator::getErrorMessage() Validator::getParameter() Validator::setErrorMessage() Validator::setParameter() Validator::setParameterByRef() ValidatorManager::setRequired() to be finished ... ----- MODIFIED METHODS --------------------------------------------------------- Action::getDefaultView() Action::getPrivilege() Controller::dispatch() Controller::genURL() Request::removeAttribute() Validator::initialize() ValidatorManager::register() to be finished ... ----- RENAMED METHODS ---------------------------------------------------------- * Denotes a modified function definition OLD Controller::handleRequest() NEW Controller::forward() OLD Renderer::isTemplateAbsolute() NEW * Renderer::isPathAbsolute() to be finished ... ----- REMOVED METHODS ---------------------------------------------------------- Controller::handleError() ExecutionChain::getIndex() ExecutionChain::setIndex() Renderer::Renderer(); Request::getMethod() Request::setMethod() SmartTemplatesRenderer::getSmartTemplate() SmartTemplatesRenderer::SmartTemplatesRenderer(); SmartyRenderer::getSmarty() SmartyRenderer::SmartyRenderer() to be finished ..