diff options
-rw-r--r-- | include/hubloc.php | 16 | ||||
-rw-r--r-- | include/text.php | 28 |
2 files changed, 29 insertions, 15 deletions
diff --git a/include/hubloc.php b/include/hubloc.php index d5abda7fb..0d1a2e560 100644 --- a/include/hubloc.php +++ b/include/hubloc.php @@ -266,25 +266,11 @@ function hubloc_mark_as_down($posturl) { function locations_by_netid($netid) { - $strloc = ''; - $locs = q("select hubloc_addr as location from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s' and hubloc_deleted = 0 and site_dead = 0", dbesc($netid) ); - if($locs) { - foreach($locs as $l) { - if(!($l['location'])) - continue; - if(strpos($strloc,$l['location']) !== false) - continue; - if(strlen($strloc)) - $strloc .= ', '; - $strloc .= $l['location']; - } - } - - return $strloc; + return array_elm_to_str($locs,'location',', '); } diff --git a/include/text.php b/include/text.php index 8ec6ebace..10bbc751a 100644 --- a/include/text.php +++ b/include/text.php @@ -3261,3 +3261,31 @@ function purify_filename($s) { return ''; return $s; } + + +/** + * @brief array_elm_to_str($arr,$elm,$delim = ',') extract unique individual elements from an array of arrays and return them as a string separated by a delimiter + * + * empty elements (evaluated after trim()) are ignored. + * @param $arr array + * @param $elm array key to extract from sub-array + * @param $delim string default ',' + * @returns string + */ + +function array_elm_to_str($arr,$elm,$delim = ',') { + + $tmp = []; + if($arr && is_array($arr)) { + foreach($arr as $x) { + if(is_array($x) && array_key_exists($elm,$x)) { + $z = trim($x[$elm]); + if(($z) && (! in_array($z,$tmp))) { + $tmp[] = $z; + } + } + } + } + return implode($tmp,$delim); +} + |