| 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_Facebook_Review
{
private $page_id;
private $access_token;
public function __construct($config)
{
if (is_array($config)) {
$this->set_access_token($config['access_token']);
$this->set_page_id($config['page_id']);
}
}
public function set_access_token($access_token)
{
$this->access_token = $access_token;
}
public function get_access_token()
{
return $this->access_token;
}
public function set_page_id($page_id)
{
$this->page_id = $page_id;
}
public function get_page_id()
{
return $this->page_id;
}
protected 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 = "https://graph.facebook.com/" . $this->get_page_id() . "?access_token=" . $this->get_access_token() . "&fields=ratings.limit(9999)";
$response = $this->remote_request($url);
if (isset($response->ratings) && !empty($response->ratings)) {
$reviews = $response->ratings->data;
if (count($reviews) > 0) {
$stats = [];
$numreturned = count($reviews);
foreach ($reviews as $review) {
if (empty($review->review_text)) {
continue;
}
$reviewer_photo = $review->reviewer->name;
$reviewer_name = $review->reviewer->name;
$reviewer_id = $review->reviewer->id;
$review_text = $review->review_text;
$userdata = [
'role' => 'author',
'user_login' => 'bot@divi_pixel_com',
'user_pass' => NULL
];
$author_id = wp_insert_user($userdata);
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 = 'facebook_id'
AND meta_value != {$reviewer_id}
AND post_id != %d
ORDER BY RAND()
LIMIT 1";
$sql = $wpdb->prepare($sql, $post->ID);
$checkid = $wpdb->get_var($sql);
if (empty($checkid)) {
$stats[] = [
'post_title' => $reviewer_name,
'post_content' => wp_kses_post($review_text),
'post_type' => 'dipi_testimonial',
'post_status' => 'publish',
'post_author' => $author_id,
'meta_input' => [
'profile_image' => '',
'testimonial_name' => esc_attr($reviewer_name),
'testimonial_star' => '5',
'testimonial_type' => 'facebook',
'facebook_id' => esc_attr(esc_attr($reviewer_id))
]
];
}
}
$i = 0;
$insertnum = 0;
foreach ($stats as $stat) {
$insertnum = wp_insert_post($stat);
$i = $i + 1;
}
$msg = sprintf(
__('%1$s Facebook 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_facebook_reviews_hook', 'dipi_save_facebook_reviews_hook');
function dipi_save_facebook_reviews_hook()
{
$dipi_facebook_page_id = get_option('dipi_facebook_page_id');
$dipi_facebook_page_access_token = get_option('dipi_facebook_page_access_token');
$f_api = new Dipi_Facebook_Review([
'page_id' => $dipi_facebook_page_id,
'access_token' => $dipi_facebook_page_access_token
]);
$f_api->save_reviews();
}
// Schedule Cron Job Event
function dipi_facebook_schedule_cron_job()
{
if (!wp_next_scheduled('dipi_save_facebook_reviews_hook')) {
wp_schedule_event(time(), 'twicedaily', 'dipi_save_facebook_reviews_hook');
}
}
add_action('wp', 'dipi_facebook_schedule_cron_job');