_original->$name)) { return $this->_original->$name; } return NULL; } /** * Gets called when trying to set an undefined property. */ public function __set($name, $value) { $this->_original->$name = $value; } /** * Gets called when calling isset() or empty() on an undefined property. */ public function __isset($name) { return isset($this->_original->$name); } /** * Gets called when calling unser() on an undefined property. */ public function __unset($name) { unset($this->_original->$name); } /** * Gets called when calling an undefined instance method. */ public function __call($name, $args) { if (!method_exists($this->_original, $name)) { trigger_error("tried to call undefined instance method $name", E_USER_ERROR); } return call_user_func_array(array($this->_original, $name), $args); } /** * Gets called when calling an undefined static method. */ public static function __callStatic($name, $args) { $method = array(get_class($this->_original), $name); if (!method_exists($method)) { trigger_error("tried to call undefined static method $name", E_USER_ERROR); } call_user_func_array($method, $args); } /* * "Normal" methods */ /** * Loads the base handler and loads it with the specified definition. * Throws an exception if unsuccessful. */ public function set_definition($definition) { if (empty($definition['apachesolr base handler'])) { watchdog('views', 'no base handler specified for apachesolr field handler', array(), WATCHDOG_ERROR); } $o = $definition['apachesolr base handler']; $this->_original = views_get_handler($o['table'], $o['field'], 'field'); if (empty($this->_original)) { watchdog('views', 'invalid base handler specified for apachesolr field handler: ' . $o['table'] . '/' . $o['field'], array(), WATCHDOG_ERROR); } // Give the original handler the correct definition. $this->_original->set_definition($definition); } /** * Get option form definition. * * NOTE: This method must be defined explicitly since * pass-by-reference doesn't work with call_user_func_array(). */ public function options_form(&$form, &$form_state) { return $this->_original->options_form($form, $form_state); } /** * Construct a new apachesolr field handler. */ public function construct() { $this->_original->construct(); $this->_original->aliases = drupal_map_assoc( array('id', 'site', 'hash', 'url', 'title', 'body', 'type', 'type_name', 'path', 'path_alias', 'uid', 'name', 'created', 'changed', 'last_comment_or_change', 'nid', 'status', 'promote', 'moderate', 'sticky', 'tnid', 'translate', 'language', 'comment_count', 'tid', 'vid', 'timestamp' )); } /** * We don't need to ensure any tables. * So overwrite this method because it might be called by inherited methods. */ public function ensure_my_table() {} /** * Tell the query object to retrieve this field. */ public function query() { $this->_original->field_alias = $this->_original->real_field; $this->_original->query->add_field($this->_original->real_field); $this->add_additional_fields(); } /** * Add additionally required fields. */ public function add_additional_fields($fields = NULL) { if (!empty($fields)) { return $this->_original->add_additional_fields($fields); } foreach ($this->_original->additional_fields as $f) { $this->_original->query->add_field($f); } } /** * Called when click-sorting. */ public function click_sort($order) { /* These fields have a special "*_sort" field for sorting: */ $special_sort_fields = array( 'name' => 'sort_name', 'title' => 'sort_title', ); if (empty($special_sort_fields[$this->real_field])) { $this->_original->query->add_sort( $this->_original->real_field, $order, TRUE); } else { $this->_original->query->add_sort( $special_sort_fields[$this->_original->real_field], $order, TRUE); } } }