| Server IP : 213.186.33.4 / Your IP : 216.73.216.146 Web Server : Apache System : Linux webm005.cluster103.gra.hosting.ovh.net 6.18.39-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Tue Jul 21 12:03:15 CEST 2026 x86_64 User : karinebmkh ( 644538) PHP Version : 8.4.22 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/karinebmkh/www/wp-content/plugins/divi-pixel/includes/modules/Testimonial/ |
Upload File : |
<?php
class Dipi_Google_Review
{
const API_URL = 'https://maps.googleapis.com/maps/api/place';
private $api_key;
private $place_id;
public function __construct($config)
{
if (is_array($config)) {
$this->set_api_key($config['api_key']);
$this->set_place_id($config['place_id']);
}
}
public function set_api_key($api_key)
{
$this->api_key = $api_key;
}
public function get_api_key()
{
return $this->api_key;
}
public function set_place_id($place_id)
{
$this->place_id = $place_id;
}
public function get_place_id()
{
return $this->place_id;
}
public function remote_request($url)
{
$url = esc_url_raw($url);
if (empty($url)) {
return false;
}
$request = wp_safe_remote_request($url);
if (is_wp_error($request)) {
echo $request->get_error_message();
return false;
}
$data = json_decode($request['body']);
if ($request['response']['code'] == 200) {
return $data;
} else {
print_r($request['response']['code']);
}
if (isset($data->error)) {
print_r($data->error);
}
return false;
}
public function save_reviews()
{
$url = add_query_arg(
[
'placeid' => $this->get_place_id(),
'key' => $this->get_api_key()
],
self::API_URL . '/details/json'
);
$response = $this->remote_request($url);
if (isset($response->result) && !empty($response->result)) {
$reviews = $response->result->reviews;
if (count($reviews) > 0) {
$stats = [];
$numreturned = count($reviews);
foreach ($reviews as $review) {
if (empty($review->text)) continue;
$review_profile_photo_url = $review->profile_photo_url;
$review_name = $review->author_name;
$review_text = $review->text;
$review_time = $review->time;
$review_rating = $review->rating;
global $post, $wpdb;
$sql = "SELECT post_id
FROM {$wpdb->postmeta} pm
JOIN {$wpdb->posts} p
ON p.ID = pm.post_id
AND post_status = 'publish'
AND post_type = 'dipi_testimonial'
WHERE meta_key = 'created_time_stamp'
AND meta_value != {$review_time}
AND post_id != %d
ORDER BY RAND()
LIMIT 1";
$sql = $wpdb->prepare($sql, $post->ID);
$checktime = $wpdb->get_var($sql);
$userdata = [
'role' => 'author',
'user_login' => 'bot@divi_pixel_com',
'user_pass' => NULL
];
$author_id = wp_insert_user($userdata);
if (empty($checktime)) {
$stats[] = [
'post_title' => $review_name,
'post_content' => wp_kses_post($review_text),
'post_type' => 'dipi_testimonial',
'post_status' => 'publish',
'post_author' => $author_id,
'meta_input' => [
'profile_image' => esc_attr($review_profile_photo_url),
'testimonial_name' => esc_attr($review_name),
'testimonial_star' => esc_attr($review_rating),
'testimonial_type' => 'google',
'created_time_stamp' => esc_attr($review_time)
]
];
}
}
$i = 0;
$insertnum = 0;
foreach ($stats as $stat) {
$insertnum = wp_insert_post($stat);
$i = $i + 1;
}
$msg = sprintf(
__('%1$s Google Reviews Returned from API. %2$s New Reviews Saved.', 'dipi-divi-pixel'),
$numreturned,
$i
);
echo $msg;
return;
}
}
}
public function getFirstPara($content) {
$content = html_entity_decode(strip_tags($content));
$pos = strpos($content, '.');
if ($pos === false) {
return $content;
} else {
return substr($content, 0, $pos + 1);
}
}
}
// Scheduled Action Hook
add_action('dipi_save_google_reviews_hook', 'dipi_save_google_reviews_hook');
function dipi_save_google_reviews_hook()
{
$dipi_google_place_id = get_option('dipi_google_place_id');
$dipi_google_api_key = get_option('dipi_google_api_key');
$g_api = new Dipi_Google_Review([
'place_id' => $dipi_google_place_id,
'api_key' => $dipi_google_api_key
]);
$g_api->save_reviews();
}
// Schedule Cron Job Event
function dipi_google_schedule_cron_job()
{
if (!wp_next_scheduled('dipi_save_google_reviews_hook')) {
wp_schedule_event(time(), 'twicedaily', 'dipi_save_google_reviews_hook');
}
}
add_action('wp', 'dipi_google_schedule_cron_job');