<?php

if (!class_exists('TopAffiliatesList')){

	class TopAffiliatesList{

		private $args = array();

		private $total_pages = 0;

		private $users = array();

		private $div_parent_id = '';

		private $li_width = '';

		private $user_fields = array();

		private $total_users;

		private $single_item_template = '';

		private $general_settings = array();

		private $link_user_page = '';

		private $fields_label = array();

		private $permalink_type = '';

		private $currency = '';



		public function __construct($input=array()){

			/*

			 * @param array

			 * @return none

			 */

			if (empty($input)){

				return;

			} else {

				global $indeed_db;

				$this->args = $input;

				$this->general_settings = $indeed_db->return_settings_from_wp_option('top_affiliate_list');

			}

		}



		public function run(){

			/*

			 * @param none

			 * @return string

			 */

			if (empty($this->args)){

				return;

			}



			$this->currency = get_option('uap_currency');

			$output = '';

			$html = '';

			$js = '';

			$css = '';

			$js_after_html = '';

			$pagination = '';

			if (empty($this->args['entries_per_page'])){

				 $this->args['entries_per_page'] = 25;

			}

			if (empty($this->args['num_of_entries'])){

				 $this->args['num_of_entries'] = 100;

			}

			////// FILTER BY RANKS

			$ranks_list = array();

			if (!empty($this->args['filter_by_rank']) && !empty($this->args['ranks_in'])){

				if (strpos($this->args['ranks_in'], ',')!==FALSE){

					$ranks_list = explode(',', $this->args['ranks_in']);

				} else {

					$ranks_list = array($this->args['ranks_in']);

				}

			}



			////////// ORDER

			$order_by = $this->args['order_by'];

			$order_type = $this->args['order_type'];



			//////////TOTAL USERS

			$this->total_users = $this->get_total_affiliates($ranks_list);

			if ($this->total_users>$this->args['num_of_entries']){

				$this->total_users = $this->args['num_of_entries'];

			}



			//limit && offset

			if (empty($this->args['slider_set'])){

				//// NO SLIDER + PAGINATION

				if (!empty($this->args['current_page'])){

					$current_page = $this->args['current_page'];

					$offset = ( $current_page - 1 ) * $this->args['entries_per_page']; //start from

				} else {

					$offset = 0;

				}

				$limit = $this->args['entries_per_page'];

				if ($offset + $limit>$this->total_users){

					$limit = $this->total_users - $offset;

				}

			} else {

				////SLIDER

				$offset = 0;

				$limit = $this->args['num_of_entries'];

			}



			///GETTING USER IDS

			$user_ids = $this->get_affiliates($order_by, $order_type, (int)$offset, (int)$limit, $ranks_list);

			if (empty($user_ids)){

				return;//no users available

			}



			////SET USERS DATA

			$this->set_users_data($user_ids);



			$this->single_item_template = UAP_PATH .'public/listing_users/themes/' . $this->args['theme'] . "/index.php";



			///SET FIELDS LABEL

			$this->set_fields_label();



			if (!empty($this->users) && file_exists($this->single_item_template)){

				$html .= $this->create_the_html();

				$js .= $this->create_the_js();

				$css .= $this->create_the_css();

				$js_after_html .= $this->create_the_js_after_html();

			}



			if (empty($this->args['slider_set']) && $this->args['entries_per_page']<$this->total_users){

				///adding pagination

				$pagination .= $this->print_pagination();

			}



			$output = $css . $js . $pagination . $html . $js_after_html;

			return $output;

		}



		private function set_users_data($user_ids){

			/*

			 * @param array

			 * @return none

			 */

			$this->user_fields = explode(',', $this->args['user_fields']);

			if ($this->args['order_by']=='random'){

				shuffle($user_ids);

			}



			foreach ($user_ids as $k=>$id){

				foreach ($this->user_fields as $field){

					if (empty($users[$id][$field])){

						$user_data = get_userdata($id);

						if (isset($user_data->$field)){

							$this->users[$id][$field] = $user_data->$field;

						} else {

							if(!empty(get_user_meta($id, $field, TRUE))){

								$this->users[$id][$field] = get_user_meta($id, $field, TRUE);

							}

						}

					}

				}

				$this->users[$id]['earnings'] = $this->get_earnings_by_wpuid($id);

				$this->users[$id]['visits'] = $this->get_visits_by_wpuid($id);

				$this->users[$id]['referrals'] = $this->get_referrals_by_wpuid($id);

			}

		}



		private function get_earnings_by_wpuid($uid=0){

			/*

			 * @param int

			 * @return float

			 */

			 if ($uid){

			 	 global $wpdb;

				 $a = $wpdb->prefix . 'uap_affiliates';

			 	 $r = $wpdb->prefix . 'uap_referrals';

				 $q = $wpdb->prepare( "SELECT SUM(r.amount) as amount

							FROM

							$r r

							INNER JOIN $a a

								ON r.affiliate_id=a.id

							WHERE 1=1

							AND a.uid=%d

				 ", $uid );

				 $data = $wpdb->get_row($q);

				 if ($data && isset($data->amount)){

				 	return $data->amount;

				 }

			 }

			 return 0;

		}



		private function get_visits_by_wpuid($uid=0){

			/*

			 * @param int

			 * @return float

			 */

			 if ($uid){

			 	 global $wpdb;

				 $a = $wpdb->prefix . 'uap_affiliates';

			 	 $v = $wpdb->prefix . 'uap_visits';

				 $q = $wpdb->prepare("SELECT COUNT(v.id) as visits

							FROM

							$v v

							INNER JOIN $a a

								ON v.affiliate_id=a.id

							WHERE 1=1

							AND a.uid=%d

				 ", $uid );

				 $data = $wpdb->get_row($q);

				 if ($data && isset($data->visits)){

				 	return $data->visits;

				 }

			 }

			 return 0;

		}



		private function get_referrals_by_wpuid($uid=0){

			/*

			 * @param int

			 * @return float

			 */

			 if ($uid){

			 	 global $wpdb;

				 $a = $wpdb->prefix . 'uap_affiliates';

			 	 $r = $wpdb->prefix . 'uap_referrals';

				 $q = $wpdb->prepare("SELECT COUNT(r.id) as referrals

							FROM

							$r r

							INNER JOIN $a a

								ON r.affiliate_id=a.id

							WHERE 1=1

							AND a.uid=%d

				 ", $uid );

				 $data = $wpdb->get_row($q);

				 if ($data && isset($data->referrals)){

				 	return $data->referrals;

				 }

			 }

			 return 0;

		}



		private function set_fields_label(){

			/*

			 * @param none

			 * @return none

			 */

			global $indeed_db;

			$fields_data = $indeed_db->register_get_custom_fields();

			foreach ($this->user_fields as $field){

				$key = uap_array_value_exists($fields_data, $field, 'name');

				if ($key!==FALSE && !empty($fields_data[$key]) && !empty($fields_data[$key]['label'])){

					$this->fields_label[$field] = $fields_data[$key]['label'];

				}

			}

		}





		private function get_total_affiliates($ranks=array()){

			/*

			 * @param array

			 * @return int

			 */

			global $wpdb;

			$ranks_str = (empty($ranks)) ? '' : implode(',', $ranks);

			$a = $wpdb->prefix . 'uap_affiliates';

			$u = $wpdb->base_prefix . 'users';

			$q = "SELECT COUNT(a.id) as v FROM

					$a a

					INNER JOIN $u u

					ON a.uid=u.ID

					WHERE 1=1";

			if ($ranks){

				$q .= " AND a.rank_id IN($ranks_str)";

			}

			$data = $wpdb->get_row($q);

			if ($data && isset($data->v)){

				return $data->v;

			}

			return 0;

		}



		private function get_affiliates($order_by='', $order_type='', $offset=0, $limit=5, $ranks_str=''){

			/*

			 * @param string, string, int, int, string

			 * @return array

			 */

			 global $wpdb;

			 $a = $wpdb->prefix . 'uap_affiliates';

			 $v = $wpdb->prefix . 'uap_visits';

			 $r = $wpdb->prefix . 'uap_referrals';

			 $u = $wpdb->base_prefix . 'users';

			 $um = $wpdb->base_prefix . 'usermeta';

			 $ranks = (empty($ranks_str)) ? '' : implode(',', $ranks_str);

	 		 $q = '';



			 switch ($order_by){

			 	case 'visits':

					$q = "SELECT COUNT(v.id) as visits_count,

										a.uid as id

										FROM

										$a a

										LEFT JOIN $v v

										ON v.affiliate_id=a.id

										WHERE 1=1";

					if ($ranks){

						$q .= " AND rank_id IN ($ranks)";

					}

					$q .= $wpdb->prepare(" GROUP BY a.id

						    ORDER BY visits_count $order_type

						    LIMIT %d OFFSET %d", $limit, $offset );

					$data = $wpdb->get_results($q);

					break;

				case 'referrals':

					$q = "SELECT COUNT(r.id) as referrals_count,

										a.uid as id

										FROM

										$a a

										LEFT JOIN $r r

										ON r.affiliate_id=a.id

										WHERE 1=1";

					if ($ranks){

						$q .= " AND rank_id IN ($ranks)";

					}

					$q .= $wpdb->prepare(" GROUP BY a.id

							ORDER BY referrals_count $order_type

							LIMIT %d OFFSET %d

					;", $limit, $offset );

					$data = $wpdb->get_results($q);

					break;

				case 'earnings':

					$q = "SELECT SUM(r.amount) as referrals_amount,

										a.uid as id

										FROM

										$a a

										LEFT JOIN $r r

										ON r.affiliate_id=a.id

										WHERE 1=1";

					if ($ranks){

						$q .= " AND rank_id IN ($ranks)";

					}

					$q .= $wpdb->prepare(" GROUP BY a.id

										ORDER BY referrals_amount $order_type

										LIMIT %d OFFSET %d

					;", $limit, $offset );

					break;

				case 'user_registered':

				case 'user_login':

				case 'user_email':

					if ($order_type=='random'){

						$order_type = '';

					}

					$q = "SELECT u.ID as id

							FROM $u u

							INNER JOIN $a a ON a.uid=u.ID

							WHERE 1=1";

					if ($ranks){

						$q .= " AND a.rank_id IN ($ranks)";

					}

					if ($order_type && $order_by){

						$q .= " ORDER BY u." . $order_by . " " . $order_type;

					}

					$q .= " LIMIT $limit OFFSET $offset";

					break;

				case 'random':

					if ($order_type=='random'){

						$order_type = '';

					}

					$q = "SELECT a.id

							FROM $u u

							INNER JOIN $a a ON a.uid=u.ID

							WHERE 1=1";

					if ($ranks){

						$q .= " AND a.rank_id IN ($ranks)";

					}

					if ($order_type && $order_by){

						$q .= " ORDER BY RAND() ";

					}

					$q .= " LIMIT $limit OFFSET $offset";

					break;

			 }

			 if ($q){

				 $data = $wpdb->get_results($q);

			 }



			 $array = array();

			 if (!empty($data)){

				foreach ($data as $object){

					if (isset($object->id)){

						$array[] = $object->id;

					}

				}

			 }

			 return $array;

		}





		private function create_the_js_after_html(){

			/*

			 * @param

			 * @return string

			 */

			$str = '';

			if (!empty($this->args['slider_set'])){

				$total_pages = count($this->users) / $this->args['items_per_slide'];



				if ($total_pages>1){

					$navigation = (empty($this->args['nav_button'])) ? 'false' : 'true';

					$bullets = (empty($this->args['bullets'])) ? 'false' : 'true';

					if (empty($this->args['autoplay'])){

						$autoplay = 'false';

						$autoplayTimeout = 5000;

					} else {

						$autoplay = 'true';

						$autoplayTimeout = $this->args['speed'];

					}

					$autoheight = (empty($this->args['autoheight'])) ? 'false' : 'true';

					$stop_hover = (empty($this->args['stop_hover'])) ? 'false' : 'true';

					$loop = (empty($this->args['loop'])) ? 'false' : 'true';

					$responsive = (empty($this->args['responsive'])) ? 'false' : 'true';

					$lazy_load = (empty($this->args['lazy_load'])) ? 'false' : 'true';

					$animation_in = (($this->args['animation_in'])=='none') ? 'false' : "'{$this->args['animation_in']}'";

					$animation_out = (($this->args['animation_out'])=='none') ? 'false' : "'{$this->args['animation_out']}'";

					$slide_pagination_speed = $this->args['pagination_speed'];



					$str .= "

										<span class='uap-js-owl-settings-data'

												data-selector='#" . $this->div_parent_id . "'

												data-autoHeight='$autoheight'

												data-animateOut='$animation_out'

												data-animateIn='$animation_in'

												data-lazyLoad='$lazy_load'

												data-loop='$loop'

												data-autoplay='$autoplay'

												data-autoplayTimeout='$autoplayTimeout'

												data-autoplayHoverPause='$stop_hover'

												data-autoplaySpeed='$slide_pagination_speed'

												data-nav='$navigation'

												data-navSpeed='$slide_pagination_speed'

												data-dots='$bullets'

												data-dotsSpeed='$slide_pagination_speed'

												data-responsiveClass='$responsive'

												data-navigation='$navigation'

										></span>";

				}

			}

			return $str;

		}



		private function create_the_css(){

			/*

			 * @param none

			 * @return string

			 */

			//add the themes and the rest of CSS here...

			$str = '';

			$custom_css = '';



			if (!empty($this->args['slider_set']) && !defined('UAP_SLIDER_LOAD_CSS')){

				///// SLIDER CSS

				$str .= '<link rel="stylesheet" type="text/css" href="' . UAP_URL . 'public/listing_users/assets/css/owl.carousel.css">';

				$str .= '<link rel="stylesheet" type="text/css" href="' . UAP_URL . 'public/listing_users/assets/css/owl.theme.css">';

				$str .= '<link rel="stylesheet" type="text/css" href="' . UAP_URL . 'public/listing_users/assets/css/owl.transitions.css">';

				define('UAP_SLIDER_LOAD_CSS', TRUE);

			}

			if (!empty($this->args['theme'])){

				///// THEME

				$str .= '<link rel="stylesheet" type="text/css" href="' . UAP_URL . 'public/listing_users/themes/' . $this->args['theme'] . '/style.css">';

			}

			if (!defined('UAP_COLOR_CSS_FILE')){

				////// COLOR EXTERNAL CSS

				$str .= '<link rel="stylesheet" type="text/css" href="' . UAP_URL . 'public/listing_users/assets/css/layouts.css">';

				define('UAP_COLOR_CSS_FILE', TRUE);

			}



			///// SLIDER COLORS

			if (!empty($this->args['color_scheme']) && !empty($this->args['slider_set'])){

				$custom_css .= '

							.style_'.$this->args['color_scheme'].' .owl-uap-theme .owl-uap-dots .owl-uap-dot.active span, .style_'.$this->args['color_scheme'].'  .owl-uap-theme .owl-uap-dots .owl-uap-dot:hover span { background: #'.$this->args['color_scheme'].' !important; }

							.style_'.$this->args['color_scheme'].' .pag-theme1 .owl-uap-theme .owl-uap-nav [class*="owl-uap-"]:hover{ background-color: #'.$this->args['color_scheme'].'; }

							.style_'.$this->args['color_scheme'].' .pag-theme2 .owl-uap-theme .owl-uap-nav [class*="owl-uap-"]:hover{ color: #'.$this->args['color_scheme'].'; }

							.style_'.$this->args['color_scheme'].' .pag-theme3 .owl-uap-theme .owl-uap-nav [class*="owl-uap-"]:hover{ background-color: #'.$this->args['color_scheme'].';}

						';

			}

			////// ALIGN CENTER

			if (!empty($this->args['align_center'])) {

				$custom_css .= '#'.$this->div_parent_id.' ul{text-align: center;}';

			}

			///// CUSTOM CSS

			if (!empty($this->general_settings['uap_listing_users_custom_css'])){

				$custom_css .= stripslashes($this->general_settings['uap_listing_users_custom_css']);

			}

			//// RESPONSIVE

			if (!empty($this->general_settings['uap_listing_users_responsive_small'])){

				$width = 100 / $this->general_settings['uap_listing_users_responsive_small'];

				$custom_css .= '

						@media only screen and (max-width: 479px){

							#' . $this->div_parent_id . ' ul li{

								width: calc(' . $width . '% - 1px) !important;

							}

						}

				';

			}

			if (!empty($this->general_settings['uap_listing_users_responsive_medium'])){

				$width = 100 / $this->general_settings['uap_listing_users_responsive_medium'];

				$custom_css .= '

						@media only screen and (min-width: 480px) and (max-width: 767px){

							#' . $this->div_parent_id . ' ul li{

								width: calc(' . $width . '% - 1px) !important;

							}

						}

				';

			}

			if (!empty($this->general_settings['uap_listing_users_responsive_large'])){

				$width = 100 / $this->general_settings['uap_listing_users_responsive_large'];

				$custom_css .= '

						@media only screen and (min-width: 768px) and (max-width: 959px){

							#' . $this->div_parent_id . ' ul li{

								width: calc(' . $width . '% - 1px) !important;

							}

						}

				';

			}





			wp_register_style( 'dummy-handle', false );

			wp_enqueue_style( 'dummy-handle' );

			wp_add_inline_style( 'dummy-handle', $custom_css );



			return $str;

		}



		private function create_the_js(){

			/*

			 * @param

			 * @return string

			 */

			$str = '';

			if (!empty($this->args['slider_set']) && !defined('UAP_SLIDER_LOAD_JS')){

				wp_enqueue_script( 'uap-owl-carousel', UAP_URL . 'public/listing_users/assets/js/owl.carousel.js', ['jquery'], 8.3 );

				define('UAP_SLIDER_LOAD_JS', TRUE);

			}

			return $str;

		}



		private function print_pagination(){

			/*

			 * @param none

			 * @return string

			 */

			$str = '';

			$current_page = (empty($this->args['current_page'])) ? 1 : $this->args['current_page'];

			$this->total_pages = ceil($this->total_users/$this->args['entries_per_page']);

			$url = UAP_PROTOCOL . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

			$str = '';



			if ($this->total_pages<=5){

				//show all the links

				for ($i=1; $i<=$this->total_pages; $i++){

					$show_links[] = $i;

				}

			} else {

				// we want to show only first, last, and the first neighbors of current page

				$show_links = array(1, $this->total_pages, $current_page, $current_page+1, $current_page-1);

			}



			for ($i=1; $i<=$this->total_pages; $i++){

				if (in_array($i, $show_links)){

					$href = (defined('IS_PREVIEW')) ? '#' : add_query_arg('uapUserList_p', $i, $url);

					$selected = ($current_page==$i) ? '-selected' : '';

					$str .= "<a href='$href' class='uap-user-list-pagination-item" . $selected . "'>" . $i . '</a>';

					$dots_on = TRUE;

				} else {

					if (!empty($dots_on)){

						$str .= '<span class="uap-user-list-pagination-item-break">...</span>';

						$dots_on = FALSE;

					}

				}

			}

			/// Back link

			if ($current_page>1){

				$prev_page = $current_page - 1;

				$href = (defined('IS_PREVIEW')) ? '#' : add_query_arg('uapUserList_p', $prev_page, $url);

				$str = "<a href='" . $href . "' class='uap-user-list-pagination-item'> < </a>" . $str;

			}

			///Forward link

			if ($current_page<$this->total_pages){

				$next_page = $current_page + 1;

				$href = (defined('IS_PREVIEW')) ? '#' : add_query_arg('uapUserList_p', $next_page, $url);

				$str = $str . "<a href='" . $href . "' class='uap-user-list-pagination-item'> > </a>";

			}



			//Wrappers

			$str = "<div class='uap-user-list-pagination'>" . $str . "</div><div class='uap-clear'></div>";

			return $str;

		}



		private function create_the_html(){

			/*

			 * @param

			 * @return string

			 */

			$str = '';

			$total_items = count($this->users);



			$items_per_slide = (empty($this->args['slider_set'])) ? $total_items : $this->args['items_per_slide'];



			include $this->single_item_template;

			if (empty($list_item_template)){

				return '';

			}



			$this->li_width = 'calc(' . 100/$this->args['columns'] . '% - 1px)';

			$i = 1;

			$breaker_div = 1;

			$new_div = 1;

			$color_class = (empty($this->args['color_scheme'])) ? 'style_0a9fd8' : 'style_' . $this->args['color_scheme'];

			$parent_class = (empty($this->args['slider_set'])) ? 'uap-content-user-list' : 'uap-carousel-view';//carousel_view

			$num = rand(1, 10000);

			$this->div_parent_id = 'indeed_carousel_view_widget_' . $num;

			$arrow_wrapp_id = 'wrapp_arrows_widget_' . $num;

			$ul_id = 'uap_list_users_ul_' . rand(1, 10000);



			///// WRAPPERS

			$extra_class = (empty($this->args['pagination_theme'])) ? '' : $this->args['pagination_theme'];

			$str .= "<div  id='uap_public_list_users_" . rand(1, 10000) . "'>";

			$str .= "<div class='$color_class'>";

			$str .= "<div class='" . $this->args['theme'] . " " . $extra_class . "'>";

			$str .= "<div class='uap-wrapp-list-users'>";

			$str .= "<div class='$parent_class' id='$this->div_parent_id' >";



			////// ITEMS

			foreach ($this->users as $uid=>$arr){

				if (!empty($new_div)){

					$div_id = $ul_id . '_' . $breaker_div;

					$str .= "<ul id='$div_id' >"; /////ADDING THE UL

				}



				$str .= $this->print_item($uid, $list_item_template);///// PRINT SINGLE ITEM



				if ($i % $items_per_slide==0 || $i==$total_items){

					$breaker_div++;

					$new_div = 1;

					$str .= "<div class='uap-clear'></div></ul>";

				} else {

					$new_div = 0;

				}

				$i++;

			}



			///// CLOSE WRAPPERS

			$str .= '</div>'; /// end of $parent_class

			$str .= '</div>'; /// end of uap-wrapp-list-users

			$str .= '</div>'; /// end of $args['theme'] . " " . $args['pagination_theme']

			$str .= '</div>'; /// end of $color_class

			$str .= '</div>'; //// end of uap_public_list_users_



			return $str;

		}



		private function print_item($uid, $template){

			/*

			 * SINGLE ITEM

			 * @param int, string

			 * @return string

			 */

			$fields = $this->user_fields;



			$str = '';

			$str .= "<li style = ' width: $this->li_width ' >";



			//AVATAR

			$this->users[$uid]['uap_avatar'] = uap_get_avatar_for_uid($uid);



			///STANDARD FIELDS

			$standard_fields = array(

										"user_login" => "UAP_USERNAME",

										"first_name" => "UAP_FIRST_NAME",

										"last_name" => "UAP_LAST_NAME",

										"user_email" => "UAP_EMAIL",

										"uap_avatar" => "UAP_AVATAR",

 			);



			foreach ($standard_fields as $k=>$v){

				$data = '';

				if (in_array($k, $fields)){

					$data = isset( $this->users[$uid][$k] ) ? $this->users[$uid][$k] : '';

				}

				$template = str_replace($v, $data, $template);

				$key = array_search($k, $fields);

				if ($key!==FALSE){

					unset($fields[$key]);

				}

			}





			///AFFILIATES SPECIAL DATA EARNINGS, REFERRALS AND VISITS

			if ($key=array_search('earnings', $fields)){

				unset($fields[$key]);

				$html_str = '<div class="uap-top-counts">' .  uap_format_price_and_currency($this->currency, $this->users[$uid]['earnings']) . ' ' .  esc_html__(' Earnings ', 'uap') .'</div>';

				$template = str_replace('EARNINGS', $html_str, $template);

			} else {

				$template = str_replace('EARNINGS', '', $template);

			}

			if ($key=array_search('referrals', $fields)){

				unset($fields[$key]);

				$html_str = '<div class="uap-top-counts">' . $this->users[$uid]['referrals'] . esc_html__(' Referrals', 'uap') . '</div>';

				$template = str_replace('REFERRALS', $html_str, $template);

			} else {

				$template = str_replace('REFERRALS', '', $template);

			}

			if ($key=array_search('visits', $fields)){

				unset($fields[$key]);

				$html_str = '<div class="uap-top-counts">' . $this->users[$uid]['visits'] . esc_html__(' Visits', 'uap') .'</div>';

				$template = str_replace('VISITS', $html_str, $template);

			} else {

				$template = str_replace('VISITS', '', $template);

			}

			///AFFILIATES SPECIAL DATA EARNINGS, REFERRALS AND VISITS





			/// SOME EXTRA FIELDS

			$extra_fields = '';

			if ($fields){

				foreach ($fields as $value){

					$extra_fields_str = '';

					if (!empty($this->users[$uid][$value])){

						if (!empty($this->args['include_fields_label']) && !empty($this->fields_label[$value])){

							$extra_fields_str .= '<span class="uap-user-list-label">' . $this->fields_label[$value] . ' </span>';

							$extra_fields_str .= '<span class="uap-user-list-label-result">';

						}else{

							$extra_fields_str .= '<span class="uap-user-list-result">';

						}

						if (is_array($this->users[$uid][$value])){

							$extra_fields_str .= implode(',', $this->users[$uid][$value]);

						} else {

							$extra_fields_str .= $this->users[$uid][$value];

						}

						$extra_fields_str .= '</span>';

						$extra_fields_str .= '<div class="uap-clear"></div>';

						if (!empty($extra_fields_str)){

							$extra_fields .= '<div class="member-extra-single-field">' . $extra_fields_str . '</div>';

						}

					}

				}

			}

			$template = str_replace('UAP_EXTRA_FIELDS', $extra_fields, $template);



			$str .= $template;

			$str .= '</li>';

			return $str;

		}





	}

}

