/** * Load element params * bit of a hack to set join_db_name in params * * @return object default element params */ public function getParams() { $params = parent::getParams(); if (empty($params->join_db_name)) { $params->set('join_db_name', '#__users'); } // $$$ hugh - think we need to default key column as well, otherwise // when creating user element, we end up setting field to VARCHAR 255 if (empty($params->join_key_column)) { $params->set('join_key_column', 'id'); } return $params; }
/** * Cache method to populate auto-complete options * * @param PlgFabrik_ElementDatabasejoin $elementModel element model * @param string $search search string * @param array $opts options, 'label' => field to use for label (db join) * * @since 3.0.7 * * @return string json encoded search results */ public static function cacheAutoCompleteOptions($elementModel, $search, $opts = array()) { $params = $elementModel->getParams(); $c = $elementModel->getLabelOrConcatVal(); if (!strstr($c, 'CONCAT')) { $c = FabrikString::safeColName($c); } $filterMethod = $elementModel->getFilterBuildMethod(); if ($filterMethod == 1) { $join = $elementModel->getJoin(); $joinTable = $join->table_join_alias; $opts = array(); if (!strstr($c, 'CONCAT')) { $opts['label'] = strstr($c, '.') ? $c : $joinTable . '.' . $c; } else { $opts['label'] = $c; } return parent::cacheAutoCompleteOptions($elementModel, $search, $opts); } // $$$ hugh - added 'autocomplete_how', currently just "starts_with" or "contains" // default to "contains" for backward compat. $elementModel->autocomplete_where = $elementModel->_autocompleteWhere($params->get('dbjoin_autocomplete_how', 'contains'), $c, $search); $opts = array('mode' => 'filter'); $tmp = $elementModel->_getOptions(array(), 0, true, $opts); return json_encode($tmp); }