Esempio n. 1
0
 /**
  * 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;
 }