<?php
//$google_apikey = 'AIzaSyB3Hfp9pThpP8ttNsNQLddaHwDCmlhfyp0';// Google API Key

echo "Paid review service update disabled";
exit;

$keys = [];


$changeDataCode = <<<T
var GRstars = document.querySelectorAll( '[data-GR="stars"]' );
var GRrating = document.querySelectorAll( '[data-GR="rating"]' );
var GRratings_total_long = document.querySelectorAll( '[data-GR="ratings_total_long"]' );
var GRratings_total_short = document.querySelectorAll( '[data-GR="ratings_total_short"]' );
var GRwrapper = document.querySelectorAll( '[data-GR="wrapper"]' );
var GRwrapper_fam = document.querySelectorAll( '[data-GR="wrapper_fam"]' );
var GRwrapperWhite = document.querySelectorAll( '[data-GR="wrapperWhite"]' );
var GRratings_total_link = document.querySelector( 'a[class="white-reviews__all-reviews w-inline-block"]' );
var GRratings_total_shortWhite = document.querySelector( 'span[class="all-reviews-span"]' );

//var month_names = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var month_names = ['01','02','03','04','05','06','07','08','09','10','11','12'];


GRrating.forEach(
	function( node ){
		node.innerHTML = DataReview.result.rating + "/5";
	}
);


GRratings_total_long.forEach(
	function( node ){
		node.innerHTML = DataReview.result.user_ratings_total + ' reviews on ' + '<a href="' + DataReview.result.url + '" class="idx-service-link" target=_blank>google.com</a>';
	}
);


GRratings_total_short.forEach(
	function( node ){
		node.innerHTML = '<a href="' + DataReview.result.url + '" class="idx-service-link reviews-amount" target=_blank>' + DataReview.result.user_ratings_total + ' reviews</a>';
	}
);


GRstars.forEach(
	function( node ){
		let rate = DataReview.result.rating;
		let innerHTML = "";
		while( rate > 0 ){
			if( rate >= 1 ) innerHTML += `<img src="https://assets.website-files.com/60d40edcb0f7ef64d21125a3/6176a267681c74141865402b_star.svg" loading="lazy" alt="" class="idx-slick-card__star">`;
			else innerHTML += `<img src="https://assets.website-files.com/60d40edcb0f7ef64d21125a3/6177b56bcbe35e6266b2eed9_half-star.png" loading="lazy" alt="" class="idx-slick-card__star">`;
			
			rate--;
		}
		node.innerHTML = innerHTML;
	}
);


//a black version of review slider
let innerHTML_reviews = "";

//a fam version of review slider
let innerHTML_reviews_fam = "";

//count slides
let counter = 0;		

//fist slide should be active
let active = ` slick-active`;
DataReview.result.reviews.forEach(
	function( review ){
		var date_review = new Date( review.time * 1000 );

//Skip a review if rating lower then 4.5				
		if( review.rating < 4.5 ) return;

//else add a review to the wrapper div
		innerHTML_reviews += `
<div class="slick-slide-wrapper slick-slide slick-current` + active + `" data-slick-index="` + counter + `" aria-hidden="false" tabindex="` + counter + `">
	<div class="idx-slick-card">
		<div class="idx-review-content">
			<div class="idx-slick-card--top">
				<img src="https://assets.website-files.com/60d40edcb0f7ef64d21125a3/6155fd93824c9c2a73aac055_Ellipse%20google.png" loading="lazy" alt="" class="slick-avatar">
				<div class="idx-slick-card__personal-data">
					
					<div class="slick-name">
` + review.author_name + `
					</div>

					<div class="idx-slick-card__stars-wrap">
`;

				let rate = review.rating;
				while( rate > 0 ){
					if( rate >= 1 ) innerHTML_reviews += `<img src="https://assets.website-files.com/60d40edcb0f7ef64d21125a3/6176a267681c74141865402b_star.svg" loading="lazy" alt="" class="idx-slick-card__star">`;
					else innerHTML_reviews += `<img src="https://assets.website-files.com/60d40edcb0f7ef64d21125a3/6177b56bcbe35e6266b2eed9_half-star.png" loading="lazy" alt="" class="idx-slick-card__star">`;

					rate--;
				}

		innerHTML_reviews += `
						<div class="stars-text">
5 of ` + review.rating + `
						</div>
					</div>
					
					<div class="review-date">
` + month_names[date_review.getMonth()] + `-` + date_review.getDate() + `-` + date_review.getFullYear() + `
					</div>
				</div>
			</div>
			
			<div class="idx-review-text-wrap">
				<div class="review-text-idx white">
` + review.text + `
				</div>
			</div>
		</div>
		
		<div class="idx-review-overlay"></div>
	</div>
</div>
		`;


		innerHTML_reviews_fam += `
                  <div class="reviews__slide w-slide">
                    <div class="reviews-slide__content-wrapper">
                      <div class="reviews-slide__content">
                        <div class="reviews-slide__img-wrapper">
                          <div class="reviews-slide__img-white-circle">
                          	<img src="` + review.profile_photo_url + `" loading="lazy" alt="" class="reviews-slide__img">
                          	<img src="https://assets.website-files.com/62398b81b1a982d05618c759/6239b691fe05209d1a338e77_quote-icon.0f66101d.svg" loading="lazy" alt="" class="reviews-slide__quote-img">
                          </div>
                          <img src="https://assets.website-files.com/62398b81b1a982d05618c759/6239b692f8c8f72a3d2c695c_google-review-logo.ef0e1e30.svg" loading="lazy" alt="" class="reviews-slide__logo">
                        </div>
                        <div class="reviews___name">` + review.author_name + `</div>
                        <div class="reviews__text">` + review.text + `</div>
                        <div class="reviews__info">
                          <div class="reviews-info__item">
                            <div class="info-item__subtitle">Recommendation</div>
                            <div class="reviews-info__value">` + month_names[date_review.getMonth()] + `-` + date_review.getDate() + `-` + date_review.getFullYear() + `</div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
		`;

		counter++;
		active = '';
	}
);


GRwrapper.forEach(
	function( node ){
		node.innerHTML = innerHTML_reviews;
	}
);


GRwrapper_fam.forEach(
	function( node ){
		node.innerHTML = innerHTML_reviews_fam;
	}
);

if( GRwrapper_fam.length )
{
	window.Webflow && window.Webflow.destroy();
	window.Webflow && window.Webflow.ready();
	window.Webflow && window.Webflow.require('ix2').init();
	document.dispatchEvent(new Event('readystatechange'));
}


//a white version of review slider
let innerHTML_reviewsWhite = "";

//count slides
let counterWhite = 0;		

DataReview.result.reviews.forEach(
	function( review ){
		var date_review = new Date( review.time * 1000 );

//Skip a review if rating lower then 4.5				
		if( review.rating < 4.5 ) return;

//else add a review to the wrapper div
		counterWhite++;
//aria-label="slide #` + counterWhite + `" 
		innerHTML_reviewsWhite += `
<div class="partner-slide w-slide">
	<div class="partner-slide-content">
		<div class="idx-slick-card--top">
			<img alt="" class="slick-avatar slick-avatar--white-reviews" loading="lazy" src="https://assets.website-files.com/60d40edcb0f7ef64d21125a3/6155fd93824c9c2a73aac055_Ellipse%20google.png"/>
			<div class="idx-slick-card__personal-data">
				<div class="slick-name slick-name--white-reviews">
` + review.author_name + `
				</div>
				<div class="idx-slick-card__stars-wrap">
		`;

		let rate = review.rating;
		while( rate > 0 ){
			if( rate >= 1 ) innerHTML_reviewsWhite += `<img src="https://assets.website-files.com/60d40edcb0f7ef64d21125a3/6176a267681c74141865402b_star.svg" loading="lazy" alt="" class="idx-slick-card__star">`;
			else innerHTML_reviewsWhite += `<img src="https://assets.website-files.com/60d40edcb0f7ef64d21125a3/6177b56bcbe35e6266b2eed9_half-star.png" loading="lazy" alt="" class="idx-slick-card__star">`;

			rate--;
		}

		innerHTML_reviewsWhite += `
					<div class="stars-text">
5 of ` + review.rating + `
					</div>
				</div>
				<div class="review-date review-date--white-reviews">
` + month_names[date_review.getMonth()] + `-` + date_review.getDate() + `-` + date_review.getFullYear() + `
				</div>
			</div>
		</div>
		<div class="partner-text-core">
			<div>“</div>
			<div>
` + review.text + `
			</div>
		</div>
		<div class="partner-slide__white-gradient"></div>
	</div>
</div>
		`;
	}
);



GRwrapperWhite.forEach(
	function( node ){
		const restartWfScripts = () => {
			window.Webflow && window.Webflow.destroy();
			window.Webflow && window.Webflow.ready();
			window.Webflow && window.Webflow.require('ix2').init();
			document.dispatchEvent(new Event('readystatechange'));
		}

		node.innerHTML = innerHTML_reviewsWhite;

		restartWfScripts();
	}
);


if( GRratings_total_link ){
	GRratings_total_link.href = DataReview.result.url;
}

if( GRratings_total_shortWhite ){
	GRratings_total_shortWhite.innerText = DataReview.result.user_ratings_total;
}

T;


if( $_REQUEST['key'] ){
	$key = trim( $_REQUEST['key'] );
	$key = substr( $key , 0 , 69 );
	$key = str_replace( "." , '' , $key );
	$key = str_replace( "/" , '' , $key );
	$key = str_replace( "\\" , '' , $key );
	
	$keys[] = $key;
}else{
	$filesList = scandir( "json" );
	$filesList = array_diff( $filesList , array( '..' , '.' ) );
	
	foreach( $filesList as $f ){
		$ext = explode( '.' , $f );
		$ext = end( $ext );
		$name = substr( $f , 0 , -strlen( $ext ) - 1 );

		if( $ext != "json" || strlen( $name) < 13 ) continue;

		$keys[] = $name;
	}

}


foreach( $keys as $key){
	$data = getReviews( $google_apikey , $key );

	if( $data ) updateReviews( $key , $data , $changeDataCode );
}

echo "Done";


function getReviews( $google_apikey , $google_place_id ) {
	$url = "https://maps.googleapis.com/maps/api/place/details/json?place_id={$google_place_id}&key={$google_apikey}";

	if( function_exists( 'curl_version' ) ){
		$ch = curl_init();
		curl_setopt( $ch , CURLOPT_URL , $url );
		curl_setopt( $ch , CURLOPT_HTTPHEADER , array( 'Accept-Language: en' ) );
		curl_setopt( $ch , CURLOPT_USERAGENT , 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36');
		curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER , false );
		curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true );
		$result = curl_exec( $ch );
		curl_close( $ch );
	}else{
		$arrContextOptions = array(
        'ssl' => array(
          'verify_peer' => false,
          'verify_peer_name' => false,
        ),
        'http' => array(
          'method' => 'GET',
          'header' => 'Accept-language: '.$option['your_language_for_tran']."\r\n" .
          "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36\r\n"
        )
		);  
		
		$result = file_get_contents( $url , false , stream_context_create( $arrContextOptions ) );
	}

	return $result;
}


function updateReviews( $key , $data , $changeDataCode ){
	@mkdir( "json" , 0777 );
	file_put_contents( "json/{$key}.json" , $data );

	@mkdir( "js" , 0777 );
	$data_js = str_replace( "\\" , "\\\\" , $data );
	file_put_contents( "js/{$key}.js" , "var DataReview = JSON.parse( `{$data_js}` );" . "\n\n\n" . $changeDataCode );
}

?>