'Apc')); /** * The settings below can be used to set additional paths to models, views and controllers. * * App::build(array( * 'Model' => array('/path/to/models/', '/next/path/to/models/'), * 'Model/Behavior' => array('/path/to/behaviors/', '/next/path/to/behaviors/'), * 'Model/Datasource' => array('/path/to/datasources/', '/next/path/to/datasources/'), * 'Model/Datasource/Database' => array('/path/to/databases/', '/next/path/to/database/'), * 'Model/Datasource/Session' => array('/path/to/sessions/', '/next/path/to/sessions/'), * 'Controller' => array('/path/to/controllers/', '/next/path/to/controllers/'), * 'Controller/Component' => array('/path/to/components/', '/next/path/to/components/'), * 'Controller/Component/Auth' => array('/path/to/auths/', '/next/path/to/auths/'), * 'Controller/Component/Acl' => array('/path/to/acls/', '/next/path/to/acls/'), * 'View' => array('/path/to/views/', '/next/path/to/views/'), * 'View/Helper' => array('/path/to/helpers/', '/next/path/to/helpers/'), * 'Console' => array('/path/to/consoles/', '/next/path/to/consoles/'), * 'Console/Command' => array('/path/to/commands/', '/next/path/to/commands/'), * 'Console/Command/Task' => array('/path/to/tasks/', '/next/path/to/tasks/'), * 'Lib' => array('/path/to/libs/', '/next/path/to/libs/'), * 'Locale' => array('/path/to/locales/', '/next/path/to/locales/'), * 'Vendor' => array('/path/to/vendors/', '/next/path/to/vendors/'), * 'Plugin' => array('/path/to/plugins/', '/next/path/to/plugins/'), * )); * */ /** * Custom Inflector rules can be set to correctly pluralize or singularize table, model, controller names or whatever other * string is passed to the inflection functions * * Inflector::rules('singular', array('rules' => array(), 'irregular' => array(), 'uninflected' => array())); * Inflector::rules('plural', array('rules' => array(), 'irregular' => array(), 'uninflected' => array())); * */ /** * Plugins need to be loaded manually, you can either load them one by one or all of them in a single call * Uncomment one of the lines below, as you need. Make sure you read the documentation on CakePlugin to use more * advanced ways of loading plugins * * CakePlugin::loadAll(); // Loads all plugins at once * CakePlugin::load('DebugKit'); //Loads a single plugin named DebugKit * */ CakePlugin::load('Crud'); /** * You can attach event listeners to the request lifecycle as Dispatcher Filter. By default CakePHP bundles two filters: * * - AssetDispatcher filter will serve your asset files (css, images, js, etc) from your themes and plugins * - CacheDispatcher filter will read the Cache.check configure variable and try to serve cached content generated from controllers * * Feel free to remove or add filters as you see fit for your application. A few examples: * * Configure::write('Dispatcher.filters', array( * 'MyCacheFilter', // will use MyCacheFilter class from the Routing/Filter package in your app. * 'MyCacheFilter' => array('prefix' => 'my_cache_'), // will use MyCacheFilter class from the Routing/Filter package in your app with settings array. * 'MyPlugin.MyFilter', // will use MyFilter class from the Routing/Filter package in MyPlugin plugin. * array('callable' => $aFunction, 'on' => 'before', 'priority' => 9), // A valid PHP callback type to be called on beforeDispatch * array('callable' => $anotherMethod, 'on' => 'after'), // A valid PHP callback type to be called on afterDispatch * * )); */ Configure::write('Dispatcher.filters', array( 'AssetDispatcher', 'CacheDispatcher' )); /** * Configures default file logging options */ App::uses('CakeLog', 'Log'); CakeLog::config('debug', array( 'engine' => 'File', 'types' => array('notice', 'info', 'debug'), 'file' => 'cake_debug', 'path' => '@ZM_LOGDIR@/' )); CakeLog::config('error', array( 'engine' => 'File', 'types' => array('warning', 'error', 'critical', 'alert', 'emergency'), 'file' => 'cake_error', 'path' => '@ZM_LOGDIR@/' )); CakeLog::config('custom_path', array( 'engine' => 'File', 'path' => '@ZM_LOGDIR@/' )); Configure::write('ZM_CONFIG', '@ZM_CONFIG@'); Configure::write('ZM_CONFIG_SUBDIR', '@ZM_CONFIG_SUBDIR@'); Configure::write('ZM_VERSION', '@VERSION@'); Configure::write('ZM_API_VERSION', '@API_VERSION@'); # Process name, value pairs from the main config file first $configvals = process_configfile(Configure::read('ZM_CONFIG')); # Search for user created config files. If one or more are found then # update our config value array with those values $configSubFolder = Configure::read('ZM_CONFIG_SUBDIR'); if ( is_dir($configSubFolder) ) { if ( is_readable($configSubFolder) ) { foreach ( glob("$configSubFolder/*.conf") as $filename ) { $configvals = array_replace($configvals, process_configfile($filename) ); } } else { error_log( "WARNING: ZoneMinder configuration subfolder found but is not readable. Check folder permissions on $configSubFolder." ); } } # Now that our array our finalized, define each key => value # pair in the array as a constant foreach( $configvals as $key => $value) { define( $key, $value ); Configure::write( $key, $value ); } function process_configfile($configFile) { if ( is_readable( $configFile ) ) { $configvals = array(); $cfg = fopen( $configFile, "r") or die("Could not open config file."); while ( !feof($cfg) ) { $str = fgets( $cfg, 256 ); if ( preg_match( '/^\s*$/', $str )) continue; elseif ( preg_match( '/^\s*#/', $str )) continue; elseif ( preg_match( '/^\s*([^=\s]+)\s*=\s*(.*?)\s*$/', $str, $matches )) $configvals[$matches[1]] = $matches[2]; } fclose( $cfg ); return( $configvals ); } else { error_log( "WARNING: ZoneMinder configuration file found but is not readable. Check file permissions on $configFile." ); return( false ); } }