protected function init() { $this->actions = array_key_exists('actions', $this->params) ? $this->params['actions'] : array('index', '_new', 'show', 'edit', 'delete', 'update', 'create', 'destroy'); $this->resource = moojon_inflect::pluralize($this->pattern); $this->params['resource'] = $this->resource; $this->app = array_key_exists('app', $this->params) ? $this->params['app'] : moojon_config::get_or_null('default_app'); $this->params['app'] = $this->app; $this->params['controller'] = array_key_exists('controller', $this->params) ? $this->params['controller'] : $this->resource; $this->id_property = array_key_exists('id_property', $this->params) ? $this->params['id_property'] : moojon_primary_key::NAME; $this->method = strtolower(moojon_server::method()); $this->custom_collection_routes = array_key_exists('custom_collection_routes', $this->params) ? $this->params['custom_collection_routes'] : array(); $this->custom_member_routes = array_key_exists('custom_member_routes', $this->params) ? $this->params['custom_member_routes'] : array(); $model_class = moojon_inflect::singularize($this->pattern); $model = new $model_class(); $this->relationship_routes = $model->get_relationship_names(); }
private function __construct() { $db_driver = moojon_config::get('db_driver'); if (substr($db_driver, -1) == ':') { $db_driver = substr($db_driver, -1); } if (moojon_config::has('db_dsn')) { $db_dsn = moojon_config::get('db_dsn'); } else { if (moojon_config::has('cli_db_dsn')) { $db_dsn = moojon_config::get('cli_db_dsn'); } else { $keys = array(); switch ($db_driver) { case 'sybase': case 'mssql': case 'dblib': $keys['host'] = 'db_host'; $keys['dbname'] = 'db_dbname'; $keys['charset'] = 'db_charset'; $keys['appname'] = 'db_appname'; $keys['secure'] = 'db_secure'; break; case 'firebird': $keys['dbname'] = 'db_dbname'; $keys['charset'] = 'db_charset'; $keys['role'] = 'db_role'; break; case 'ibm': $keys['database'] = 'db_database'; $keys['hostname'] = 'db_hostname'; $keys['port'] = 'db_port'; $keys['username'] = UI == 'CLI' ? 'cli_db_username' : 'db_username'; $keys['password'] = UI == 'CLI' ? 'cli_db_password' : 'db_password'; break; case 'informix': case 'sqlite': case 'sqlite2': throw new moojon_exception("db_driver ({$db_driver}) requires db_dsn config key"); break; case 'mysql': $keys['host'] = 'db_host'; $keys['port'] = 'db_port'; $keys['dbname'] = 'db_dbname'; $keys['unix_socket'] = 'db_unix_socket'; $keys['username'] = UI == 'CLI' ? 'cli_db_username' : 'db_username'; $keys['password'] = UI == 'CLI' ? 'cli_db_password' : 'db_password'; break; case 'oci': $keys['dbname'] = 'db_dbname'; $keys['charset'] = 'db_charset'; break; case 'odbc': $keys['dsn'] = 'db_dsn_name'; $keys['uid'] = UI == 'CLI' ? 'cli_db_uid' : 'db_uid'; $keys['pwd'] = UI == 'CLI' ? 'cli_db_pwd' : 'db_pwd'; break; case 'pgsql': $keys['host'] = 'db_host'; $keys['port'] = 'db_port'; $keys['dbname'] = 'db_dbname'; $keys['user'] = UI == 'CLI' ? 'cli_db_user' : 'db_user'; $keys['password'] = UI == 'CLI' ? 'cli_db_password' : 'db_password'; break; case '4D': $keys['host'] = 'db_host'; $keys['port'] = 'db_port'; $keys['dbname'] = 'db_dbname'; $keys['chars_set'] = 'db_chars_set'; break; default: throw new moojon_exception("Unsupported database driver ({$db_driver})"); break; } $db_dsn = ''; foreach ($keys as $key => $value) { if (moojon_config::has($value)) { $db_dsn .= "{$key}=" . moojon_config::get($value) . ';'; } } $db_dsn = substr($db_dsn, 0, strlen($db_dsn) - 1); } } $db_username = moojon_config::get_or_null(moojon_config::get_or_null('username', $keys)); $db_password = moojon_config::get_or_null(moojon_config::get_or_null('password', $keys)); $db_driver_options = moojon_config::get_or_null('db_driver_options'); $this->data = new PDO("{$db_driver}:{$db_dsn}", $db_username, $db_password, $db_driver_options); $this->data->setAttribute(self::ATTR_ERRMODE, self::ERRMODE_EXCEPTION); }