_cast_data) AND $id) { if (is_array($id)) { // Passing an array of column => values foreach ($id as $column => $value) $this->where($column, '=', $value); $this->find(); } else { // Passing the primary key $this->base($id)->find(); } } } /** * Initializes the Database Builder to given query type * * @param integer $type Type of Database query * @return ORM */ protected function _build($type) { // Construct new builder object based on query type switch ($type) { case Database::SELECT: $this->_db_builder = new Database_LDAP_Search($this->_db,NULL); break; default: throw HTTP_Exception::factory(501,'Unknown type :type',array(':type'=>$type)); } // Process pending database method calls foreach ($this->_db_pending as $method) { $name = $method['name']; $args = $method['args']; $this->_db_applied[$name] = $name; call_user_func_array(array($this->_db_builder, $name), $args); } return $this; } protected function _initialize() { parent::_initialize(); // Check if this model has already been initialized if ($init = Arr::get(ORM::$_init_cache, $this->_object_name, FALSE)) { // We need to make sure that our _db is an LDAP DB source. if ( ! is_object($this->_db) OR ! $this->_db instanceof LDAP) { // Get database instance $init['_db'] = LDAP::factory('user',NULL,$this->_db_group); } ORM::$_init_cache[$this->_object_name] = $init; $this->_db = $init['_db']; } } public function base($value) { // Add pending database call which is executed after query type is determined $this->_db_pending[] = array( 'name' => 'base', 'args' => array(array($value)), ); return $this; } } ?>