/**
  * Returns an unordered list of city links
  *
  * @param int|string the id of the city list to pull cities from
  * @param bool $columns if true adds column classes to the ul tags
  * @param int $number_of_columns optional total number of columns to split the links into
  */
 public static function city_list_links($list_id, $idx_id, $columns = 0, $number_columns = 4)
 {
     $idx_api = new \IDX\Idx_Api();
     $cities = $idx_api->city_list($list_id);
     if (!$cities) {
         return false;
     }
     $column_class = '';
     if (true == $columns) {
         // Max of four columns
         $number_columns = $number_columns > 4 ? 4 : (int) $number_columns;
         $number_links = count($cities);
         $column_size = $number_links / $number_columns;
         // if more columns than links make one column for every link
         if ($column_size < 1) {
             $number_columns = $number_links;
         }
         // round the column size up to a whole number
         $column_size = ceil($column_size);
         // column class
         switch ($number_columns) {
             case 0:
                 $column_class = 'columns small-12 large-12';
                 break;
             case 1:
                 $column_class = 'columns small-12 large-12';
                 break;
             case 2:
                 $column_class = 'columns small-12 medium-6 large-6';
                 break;
             case 3:
                 $column_class = 'columns small-12 medium-4 large-4';
                 break;
             case 4:
                 $column_class = 'columns small-12 medium-3 large-3';
                 break;
         }
     }
     $output = '<div class="impress-city-list-links impress-city-list-links-' . $list_id . ' impress-row">' . "\n\t";
     $output .= true == $columns ? '<ul class="impress-' . $column_class . '">' : '<ul>';
     $count = 0;
     $cities_list = array();
     foreach ($cities as $city) {
         $count++;
         $href = $idx_api->subdomain_url() . 'city-' . $idx_id . '-' . rawurlencode($city->name) . '-' . $city->id;
         //do not add empty city names, ids, duplicates, or 'Other' cities
         if (!empty($city->name) && !empty($city->id) && !in_array($city->id, $cities_list) && $city->name !== 'Other' && $city->name !== 'Out of State' && $city->name !== 'Out of Area') {
             //avoid duplicates by keeping track of cities already used
             array_push($cities_list, $city->id);
             $output .= "\n\t\t" . '<li>' . "\n\t\t\t" . '<a href="' . $href . '">' . $city->name . '</a>' . "\n\t\t" . '</li>';
         }
         if (true == $columns && $count % $column_size == 0 && $count != 1 && $count != $number_links) {
             $output .= "\n\t" . '</ul>' . "\n\t" . '<ul class="impress-' . $column_class . '">';
         }
     }
     $output .= "\n\t" . '</ul>' . "\n" . '</div><!-- .city-list-links -->';
     return $output;
 }