X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FAddress%2FBatchUpdate.php;h=49a8903c18ea1f452ef0c27982f3a8fb47a0600b;hb=95e3f3974e8e214529fbaed0fbd598e20d8ff64c;hp=a6258db8ad78565f0dd2b1d5a320d912a62c7eba;hpb=232624b1bfe3beee7476775b278b9509e1607487;p=civicrm-core.git diff --git a/CRM/Utils/Address/BatchUpdate.php b/CRM/Utils/Address/BatchUpdate.php index a6258db8ad..49a8903c18 100644 --- a/CRM/Utils/Address/BatchUpdate.php +++ b/CRM/Utils/Address/BatchUpdate.php @@ -1,9 +1,9 @@ geocodeMethod)) { - if ($this->geocoding == 'true') { + if (CRM_Utils_String::strtobool($this->geocoding) === TRUE) { $this->returnMessages[] = ts('Error: You need to set a mapping provider under Administer > System Settings > Mapping and Geocoding'); $this->returnError = 1; $this->returnResult(); @@ -68,7 +68,7 @@ class CRM_Utils_Address_BatchUpdate { else { $processGeocode = TRUE; // user might want to over-ride. - if ($this->geocoding == 'false') { + if (CRM_Utils_String::strtobool($this->geocoding) === FALSE) { $processGeocode = FALSE; } } @@ -83,7 +83,7 @@ class CRM_Utils_Address_BatchUpdate { ); $parseStreetAddress = FALSE; if (!$parseAddress) { - if ($this->parse == 'true') { + if (CRM_Utils_String::strtobool($this->parse) === TRUE) { $this->returnMessages[] = ts('Error: You need to enable Street Address Parsing under Administer > Localization > Address Settings.'); $this->returnError = 1; return $this->returnResult(); @@ -92,7 +92,7 @@ class CRM_Utils_Address_BatchUpdate { else { $parseStreetAddress = TRUE; // user might want to over-ride. - if ($this->parse == 'false') { + if (CRM_Utils_String::strtobool($this->parse) === FALSE) { $parseStreetAddress = FALSE; } } @@ -111,12 +111,15 @@ class CRM_Utils_Address_BatchUpdate { function processContacts(&$config, $processGeocode, $parseStreetAddress) { // build where clause. $clause = array('( c.id = a.contact_id )'); + $params = array(); if ($this->start) { - $clause[] = "( c.id >= $this->start )"; + $clause[] = "( c.id >= %1 )"; + $params[1] = array($this->start, 'Integer'); } if ($this->end) { - $clause[] = "( c.id <= $this->end )"; + $clause[] = "( c.id <= %2 )"; + $params[2] = array($this->end, 'Integer'); } if ($processGeocode) { @@ -145,8 +148,7 @@ class CRM_Utils_Address_BatchUpdate { $totalGeocoded = $totalAddresses = $totalAddressParsed = 0; - $dao = CRM_Core_DAO::executeQuery($query, CRM_Core_DAO::$_nullArray); - + $dao = CRM_Core_DAO::executeQuery($query, $params); if ($processGeocode) { require_once (str_replace('_', DIRECTORY_SEPARATOR, $config->geocodeMethod) . '.php'); } @@ -179,15 +181,24 @@ class CRM_Utils_Address_BatchUpdate { $className = $config->geocodeMethod; $className::format( $params, true ); + + // see if we got a geocode error, in this case we'll trigger a fatal + // CRM-13760 + if ( + isset($params['geo_code_error']) && + $params['geo_code_error'] == 'OVER_QUERY_LIMIT' + ) { + CRM_Core_Error::fatal('Aborting batch geocoding. Hit the over query limit on geocoder.'); + } + array_shift($params); $maxTries--; - } while ((!isset($params['geo_code_1'])) && + } while ( + (!isset($params['geo_code_1']) || $params['geo_code_1'] == 'null') && ($maxTries > 1) ); - if (isset($params['geo_code_1']) && - $params['geo_code_1'] != 'null' - ) { + if (isset($params['geo_code_1']) && $params['geo_code_1'] != 'null') { $totalGeocoded++; $addressParams['geo_code_1'] = $params['geo_code_1']; $addressParams['geo_code_2'] = $params['geo_code_2']; @@ -202,9 +213,7 @@ class CRM_Utils_Address_BatchUpdate { $success = TRUE; // consider address is automatically parseable, // when we should found street_number and street_name - if (!CRM_Utils_Array::value('street_name', $parsedFields) || - !CRM_Utils_Array::value('street_number', $parsedFields) - ) { + if (empty($parsedFields['street_name']) || empty($parsedFields['street_number'])) { $success = FALSE; }