Commit f4858415 authored by mattwire's avatar mattwire
Browse files

Code cleanup

parent fb56fc17
......@@ -46,12 +46,8 @@ class CRM_Civicrmpostcodelookup_Page_Civipostcode extends CRM_Civicrmpostcodeloo
$querystring = self::getCivipostcodeCredentials(1);
$querystring = $querystring . "&postcode=" . urlencode($postcode) . "&property=" . $number;
###############
#File Handling
###############
##Open the JSON Document##
$filetoparse = fopen("$querystring","r") or die("Error reading JSON data.");
// Open the JSON document
$filetoparse = fopen("$querystring", "r") or die("Error reading JSON data.");
$data = stream_get_contents($filetoparse);
$simpleJSONData = json_decode($data);
......@@ -59,15 +55,12 @@ class CRM_Civicrmpostcodelookup_Page_Civipostcode extends CRM_Civicrmpostcodeloo
if ($simpleJSONData->is_error == 1) {
$addresslist[0]['value'] = '';
$addresslist[0]['label'] = $simpleJSONData->error;
} else {
}
else {
$addresslist = self::getAddressList($simpleJSONData, $postcode);
}
}
// highlight search results
//$addresslist = CRM_Civicrmpostcodelookup_Utils::apply_highlight($addresslist, $postcode);
##Close the JSON source##
// Close the JSON source
fclose($filetoparse);
echo json_encode($addresslist);
......@@ -82,15 +75,16 @@ class CRM_Civicrmpostcodelookup_Page_Civipostcode extends CRM_Civicrmpostcodeloo
$addressLineArray = self::formatAddressLines($addressItem, TRUE);
$addressLineArray = array_filter($addressLineArray);
$addressRow["id"] = (string) $addressItem->id;
$addressRow["value"] = $postcode;
$addressRow["label"] = @implode(', ', $addressLineArray);
$addressRow['id'] = (string) $addressItem->id;
$addressRow['value'] = $postcode;
$addressRow['label'] = @implode(', ', $addressLineArray);
$addressRow['lineArray'] = $addressLineArray;
array_push($addressList, $addressRow);
}
if (empty($addressList)) {
$addressRow["id"] = '';
$addressRow["value"] = '';
$addressRow['id'] = '';
$addressRow['value'] = '';
$addressRow["label"] = 'Postcode Not Found';
array_push($addressList, $addressRow);
}
......@@ -102,42 +96,37 @@ class CRM_Civicrmpostcodelookup_Page_Civipostcode extends CRM_Civicrmpostcodeloo
* Function to get address details based on the Civipostcode address id
*/
public static function getaddress() {
$moniker = CRM_Utils_Request::retrieve('id', 'String');
if (empty($moniker)) {
$selectedId = CRM_Utils_Request::retrieve('id', 'String');
if (empty($selectedId)) {
exit;
}
$address = self::getAddressByMoniker($moniker);
$response = [
'address' => $address
];
echo json_encode($response);
exit;
}
private static function getAddressByMoniker($moniker) {
$querystring = self::getCivipostcodeCredentials(2);
$querystring = $querystring . "&id=" . urlencode($moniker);
###############
#File Handling
###############
$querystring = $querystring . "&id=" . urlencode($selectedId);
##Open the JSON Document##
// Open the JSON Document
$filetoparse = fopen("$querystring","r") or die("Error reading JSON data.");
$data = stream_get_contents($filetoparse);
$simpleJSONData = json_decode($data);
$addressObj = $simpleJSONData->results[0];
$address = self::formatAddressLines($addressObj);
##Close the JSON source##
// Close the JSON source
fclose($filetoparse);
return $address;
$response = [
'address' => $address
];
echo json_encode($response);
exit;
}
/**
* @param Object $addressObj
* @param bool $forList
*
* @return array|void
*/
private static function formatAddressLines($addressObj, $forList = FALSE) {
if (empty($addressObj)) {
return;
......
......@@ -9,6 +9,7 @@ class CRM_Civicrmpostcodelookup_Page_GetAddressIo extends CRM_Civicrmpostcodeloo
}
return parent::isValidPostcode($postcode);
}
/*
* Function to get address list based on a Post code
*/
......@@ -195,23 +196,29 @@ class CRM_Civicrmpostcodelookup_Page_GetAddressIo extends CRM_Civicrmpostcodeloo
$addressLineArray = self::formatAddressLines($addressId, $addressItem);
$addressLineArray['postcode'] = $postcode;
$addressRow["id"] = $addressId;
$addressRow["value"] = $postcode;
$addressRow["label"] = @implode(', ', $addressLineArray);
$addressRow['id'] = $addressId;
$addressRow['value'] = $postcode;
$addressRow['label'] = @implode(', ', $addressLineArray);
$addressRow['lineArray'] = $addressLineArray;
array_push($addressList, $addressRow);
}
if (empty($addressList)) {
$addressRow["id"] = '';
$addressRow["value"] = '';
$addressRow["label"] = 'Postcode Not Found';
$addressRow['id'] = '';
$addressRow['value'] = '';
$addressRow['label'] = 'Postcode Not Found';
array_push($addressList, $addressRow);
}
return $addressList;
}
/**
* @param string $addressId
* @param array $addressItem
*
* @return array|void
*/
private static function formatAddressLines($addressId, $addressItem) {
if (empty($addressItem)) {
return;
......
<?php
require_once 'CRM/Core/Page.php';
class CRM_Civicrmpostcodelookup_Utils {
/**
* mb_stripos all occurences
* based on http://www.php.net/manual/en/function.strpos.php#87061
*
* Find all occurrences of a needle in a haystack
*
* @param string $haystack
* @param string $needle
* @return array or false
*/
public static function mb_stripos_all($haystack, $needle) {
$s = 0;
$i = 0;
while(is_integer($i)) {
$i = mb_stripos($haystack, $needle, $s);
if(is_integer($i)) {
$aStrPos[] = $i;
$s = $i + mb_strlen($needle);
}
}
if(isset($aStrPos)) {
return $aStrPos;
} else {
return false;
}
}
/**
* Apply highlight to row label
*
* @param string $a_json json data
* @param array $parts strings to search
* @return array
*/
public static function apply_highlight($a_json, $parts) {
$p = count($parts);
$rows = count($a_json);
for($row = 0; $row < $rows; $row++) {
$label = $a_json[$row]["label"];
$a_label_match = [];
for($i = 0; $i < $p; $i++) {
$part_len = mb_strlen($parts[$i]);
$a_match_start = self::mb_stripos_all($label, $parts[$i]);
foreach($a_match_start as $part_pos) {
$overlap = false;
foreach($a_label_match as $pos => $len) {
if($part_pos - $pos >= 0 && $part_pos - $pos < $len) {
$overlap = true;
break;
}
}
if(!$overlap) {
$a_label_match[$part_pos] = $part_len;
}
}
}
if(count($a_label_match) > 0) {
ksort($a_label_match);
$label_highlight = '';
$start = 0;
$label_len = mb_strlen($label);
foreach($a_label_match as $pos => $len) {
if($pos - $start > 0) {
$no_highlight = mb_substr($label, $start, $pos - $start);
$label_highlight .= $no_highlight;
}
$highlight = '<span class="hl_results">' . mb_substr($label, $pos, $len) . '</span>';
$label_highlight .= $highlight;
$start = $pos + $len;
}
if($label_len - $start > 0) {
$no_highlight = mb_substr($label, $start);
$label_highlight .= $no_highlight;
}
$a_json[$row]["label"] = $label_highlight;
}
}
return $a_json;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment