/** * Used with the Cargo extension */ public static function getAllValuesForCargoField($tableName, $fieldName) { $limitStr = 200; $sqlQuery = CargoSQLQuery::newFromValues($tableName, $fieldName, $whereStr = null, $joinOnStr = null, $fieldName, $fieldName, $limitStr); $queryResults = $sqlQuery->run(); $values = array(); $fieldAlias = str_replace('_', ' ', $fieldName); foreach ($queryResults as $row) { $values[] = $row[$fieldAlias]; } return $values; }
/** * Used with the Cargo extension */ public static function getValuesForCargoField($tableName, $fieldName, $whereStr = null) { $limitStr = 200; try { $sqlQuery = CargoSQLQuery::newFromValues($tableName, $fieldName, $whereStr, $joinOnStr = null, $fieldName, $havingStr = null, $fieldName, $limitStr); } catch (Exception $e) { return array(); } $queryResults = $sqlQuery->run(); $values = array(); // Field names starting with a '_' are special fields - // all other fields will have had their underscores // replaced with spaces in $queryResults. if ($fieldName[0] == '_') { $fieldAlias = $fieldName; } else { $fieldAlias = str_replace('_', ' ', $fieldName); } foreach ($queryResults as $row) { $values[] = $row[$fieldAlias]; } return $values; }
private static function getAllValuesForCargoField($cargoTable, $cargoField, $fieldIsArray, $substring, $baseCargoTable = null, $baseCargoField = null, $baseValue = null) { global $sfgMaxAutocompleteValues, $sfgCacheAutocompleteValues, $sfgAutocompleteCacheTimeout; global $sfgAutocompleteOnAllChars; $values = array(); $tablesStr = $cargoTable; $fieldsStr = $cargoField; $joinOnStr = ''; $whereStr = ''; // Use cache if allowed if ($sfgCacheAutocompleteValues) { $cache = SFFormUtils::getFormCache(); // Remove trailing whitespace to avoid unnecessary database selects $cacheKeyString = $cargoTable . '|' . $cargoField . '|' . rtrim($substring); if (!is_null($baseCargoTable)) { $cacheKeyString .= '|' . $baseCargoTable . '|' . $baseCargoField . '|' . $baseValue; } $cacheKey = wfMemcKey('sf-autocomplete', md5($cacheKeyString)); $values = $cache->get($cacheKey); if (!empty($values)) { // Return with results immediately return $values; } } if (!is_null($baseCargoTable) && !is_null($baseCargoField)) { if ($baseCargoTable != $cargoTable) { $tablesStr .= ", {$baseCargoTable}"; $joinOnStr = "{$cargoTable}._pageName = {$baseCargoTable}._pageName"; } $whereStr = "{$baseCargoTable}.{$baseCargoField} = \"{$baseValue}\""; } if (!is_null($substring)) { if ($whereStr != '') { $whereStr .= " AND "; } $operator = $fieldIsArray ? "HOLDS LIKE" : "LIKE"; if ($sfgAutocompleteOnAllChars) { $whereStr .= "({$cargoField} {$operator} \"%{$substring}%\")"; } else { $whereStr .= "({$cargoField} {$operator} \"{$substring}%\" OR {$cargoField} {$operator} \"% {$substring}%\")"; } } $sqlQuery = CargoSQLQuery::newFromValues($tablesStr, $fieldsStr, $whereStr, $joinOnStr, $cargoField, $havingStr = null, $cargoField, $sfgMaxAutocompleteValues); $cargoFieldAlias = str_replace('_', ' ', $cargoField); $queryResults = $sqlQuery->run(); foreach ($queryResults as $row) { // @TODO - this check should not be neceaary. if (($value = $row[$cargoFieldAlias]) != '') { $values[] = $value; } } if ($sfgCacheAutocompleteValues) { // Save to cache. $cache->set($cacheKey, $values, $sfgAutocompleteCacheTimeout); } return $values; }