File: /home/dmstechonline/social.dmstech.online/classes/Social/pinConfig.php
<?php
/* Check the absolute path to the Social Auto Poster directory. */
if ( !defined( 'SAP_APP_PATH' ) ) {
// If SAP_APP_PATH constant is not defined, perform some action, show an error, or exit the script
// Or exit the script if required
exit();
}
/**
* Pinterest posting
*
* @package Social auto poster
* @since 1.0.0
*/
class SAP_Pinterest {
public $pinterest, $settings, $flash, $posts, $common, $logs, $sap_common, $quick_posts;
public function __construct($user_id='') {
global $sap_common;
if (!class_exists('SAP_Quick_Posts')) {
require_once( CLASS_PATH . 'Quick_Posts.php' );
}
if (!class_exists('SAP_Posts')) {
require_once( CLASS_PATH . 'Posts.php' );
}
$this->settings = new SAP_Settings();
$this->flash = new Flash();
$this->posts = new SAP_Posts();
$this->common = new Common();
$this->logs = new SAP_Logs();
$this->quick_posts = new SAP_Quick_Posts();
$this->sap_common = $sap_common;
/* Initialize the function */
$this->sap_pin_data_user_initialize($user_id);
}
/**
* Assign Pinterest User's all Data to session
*
* Handles to assign user's pinterest data
* to sessoin & save to database
*
* @package Mingle
* @since 1.0.0
*/
public function sap_pin_data_user_initialize($user_id=''){
if (( isset($_GET['code']) && isset($_REQUEST['state']) && strpos($_REQUEST['state'], 'pinterestapp') !== false )) {
$this->sap_common->sap_script_logs('Pinterest Grant Extended Permission', $user_id);
//record logs for get parameters set properly
$this->sap_common->sap_script_logs('Pinterest Grant Extended Permission', $user_id);
$code = $_GET['code'];
$state = $_GET['state'];
$app = explode('#', $state);
$pin_app_id = $app[1];
try {
//load pinterest class
$pinterest = $this->sap_load_pinterest($pin_app_id);
} catch (Exception $e) {
//record logs exception generated
$this->sap_common->sap_script_logs('Pinterest error: ' . $e->getMessage(), $user_id);
$pinterest = null;
}
//check pinterest class is exis or not
if (!$pinterest) {
return false;
}
// Pinterest
try {
$token = $this->pinterest->auth->getOAuthToken($code);
} catch (Exception $e) {
//record logs exception generated
$this->sap_common->sap_script_logs('Pinterest error: ' . $e->getMessage(), $user_id);
}
$me = false;
if (!empty($token->access_token)) {
$pin_access_token = $token->access_token;
try {
$grant = $this->pinterest->auth->setOAuthToken($token->access_token);
$me = $this->pinterest->users->me(
array(
'fields' => 'username,first_name,last_name'
)
);
//record logs for user id
$this->sap_common->sap_script_logs('Pinterest User ID : ' . $me->id, $user_id);
} catch (Exception $e) {
//record logs exception generated
$this->sap_common->sap_script_logs('Pinterest error: ' . $e->getMessage(), $user_id);
}
}
//check user is logged in pinterest or not
if ($me) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$sap_pin_user_id = $me->username;
$sap_pin_user_name = $me->username;
$sap_pin_user_url = $me->website_url;
$boards = $this->pinterest->users->getMeBoards(array(
'fields' => 'name,url'
));
$i = 0;
$boardList = $selectBoard = array();
foreach ($boards->items as $boardu) {
$board_user = $boardu['owner']['username'];
$boardList[$boardu['id']] = array(
'id' => $boardu['id'],
'name' => $boardu['name']
);
$selectBoard[$boardu['id']] = array(
'id' => $boardu['id'],
'name' => $boardu['name']
);
}
$available_boards = $boardList;
// For record
$selectedBoards = $selectBoard;
$sap_pinterest_sess_data = $this->settings->get_user_setting('sap_pin_sess_data', $user_id);
if (!isset($sap_pinterest_sess_data[$pin_app_id])) {
$sess_data = array(
'id' => $sap_pin_user_id,
'username' => $sap_pin_user_name,
'boards' => $available_boards,
'auth_type' => 'app',
'pin_access_token' => $pin_access_token,
);
if ($pin_app_id) {
// Save Multiple Accounts
$pinterest_sess = array();
$pinterest_sess[$pin_app_id] = $sess_data;
if(!empty($sap_pinterest_sess_data)){
$sap_pinterest_sess_data = array_replace($sap_pinterest_sess_data, $pinterest_sess);
$this->settings->update_user_setting('sap_pin_sess_data', $sap_pinterest_sess_data);
} else {
// Update session data to options
$this->settings->update_user_setting('sap_pin_sess_data', $pinterest_sess);
}
// Record logs for session data updated to options
$this->sap_common->sap_script_logs('Session Data Updated to Options', $user_id);
} else {
// Record logs when app id is not found
$this->sap_common->sap_script_logs("Pinterest error: The App Id {$pin_app_id} does not exist.", $user_id);
}
}
$this->sap_common->sap_script_logs('Grant Extended Permission Successfully.', $user_id);
} catch (Exception $e) {
//record logs exception generated
$this->logs->wpw_auto_poster_add('Pinterest error: ' . $e->__toString());
//user is null
$me = null;
} //end catch
$_SESSION['sap_active_tab'] = 'pinterest';
header("Location:" . SAP_SITE_URL . "/settings/");
exit;
}
}
}
/**
* Fetching Pinterest
*
* Fetching all the Pinterest app and secret from database
* Pinterest user (site admin).
*
* @package Social Auto Poster
* @since 1.0.0
*/
public function sap_get_pin_apps_with_boards($user_id='') {
//Get pinterest options from pinterest
$sap_pinterest_sess_data = $this->settings->get_user_setting('sap_pin_sess_data', $user_id);
$pin_apps = array();
if (is_array($sap_pinterest_sess_data) && !empty($sap_pinterest_sess_data)) {
foreach ($sap_pinterest_sess_data as $username => $pinSite) {
if (empty($pinSite['boards']))
continue;
foreach ($pinSite['boards'] as $key => $board) {
$key = $username . '|' . $board['id'];
$value = $username . ' - ' . $board['name'];
$pin_apps[$key] = $value;
}
}
}
return $pin_apps;
}
/**
* Fetching Facebook
*
* Fetching all the Pinterest app and secret from database
* Pinterest user (site admin).
*
* @package Social auto poster
* @since 1.0.0
*/
public function sap_get_pinterest_apps($user_id='') {
//Get facebook options from facebook
$sap_pinterest_options = $this->settings->get_user_setting('sap_pinterest_options',$user_id);
$pin_apps = array();
$pin_keys = !empty($sap_pinterest_options['pinterest_keys']) ? $sap_pinterest_options['pinterest_keys'] : array();
if (!empty($pin_keys)) {
foreach ($pin_keys as $pin_key_id => $pin_key_data) {
if (!empty($pin_key_data['app_id']) && !empty($pin_key_data['app_secret'])) {
$pin_apps[$pin_key_data['app_id']] = $pin_key_data['app_secret'];
}
} // End of for each
} // End of main if
return $pin_apps;
}
/**
* Load Pinterest App method
*
* Load Pinterest
* its link within the settings page.
*
* @package Social Auto Poster
* @since 1.0.0
*/
public function sap_load_pinterest( $app_id = false, $user_id = '' ) {
$pin_apps = $this->sap_get_pinterest_apps($user_id);
// If app id is not passed then take first pinterest app data
if (empty($app_id)) {
$pin_apps_keys = array_keys($pin_apps);
$app_id = reset($pin_apps_keys);
}
// Check whether application id and application secret is set or not
if (!empty($app_id) && !empty($pin_apps[$app_id])) {
require_once( LIB_PATH . 'Social' . DS . 'pinterest' . DS . 'autoload.php' );
$this->pinterest = new DirkGroenen\Pinterest\Pinterest($app_id, $pin_apps[$app_id]);
return true;
} else {
return false;
}
}
/**
* Get Login Url for pinterest app method
*
* Login Url - Pinterest
*
* @package Social Auto Poster
* @since 1.0.0
*/
public function sap_pinterest_login_url( $app_id = false, $user_id='' ){
$pinterest = $this->sap_load_pinterest( $app_id, $user_id );
if (!$pinterest) {
return false;
}
$redirect_URL = SAP_SITE_URL.'/settings/';
$this->pinterest->auth->setState('pinterestapp#'.$app_id);
$loginUrl = $this->pinterest->auth->getLoginUrl($redirect_URL, array('pins:write
','pins:read', 'boards:read','boards:write','user_accounts:read'));
return $loginUrl;
}
/**
* Reset Sessions
*
* Resetting the Pinterest sessions from the listing of apps
* its link within the settings page.
*
* @package Social Auto Poster
* @since 1.0.0
*/
public function sap_pin_reset_session_from_apps(){
if (isset($_GET['pin_reset_user']) && $_GET['pin_reset_user'] == '1' && !empty($_GET['sap_pinterest_app_id'])) {
$sap_pin_app_username = $_GET['sap_pinterest_app_id'];
// Getting stored pin app data
$sap_pin_sess_data = $this->settings->get_user_setting('sap_pin_sess_data');
// Unset perticular app value data and update the option
if (isset($sap_pin_sess_data[$sap_pin_app_username])) {
unset($sap_pin_sess_data[$sap_pin_app_username]);
$this->settings->update_user_setting('sap_pin_sess_data', $sap_pin_sess_data);
$this->sap_common->sap_script_logs('Pinterest ' . $sap_pin_app_username . ' Account Reset Successfully.');
$_SESSION['sap_active_tab'] = 'pinterest';
header("Location:" . SAP_SITE_URL . "/settings/");
exit;
}
}
}
/**
* Reset Sessions
*
* Resetting the Pinterest sessions when the admin clicks on
* its link within the settings page.
*
* @package Social Auto Poster
* @since 1.0.0
*/
public function sap_pin_reset_session() {
// Check if pinterest reset user link is clicked and pin_reset_user is set to 1 and pinterest app id is there
if (isset($_GET['pin_reset_user']) && $_GET['pin_reset_user'] == '1' && !empty($_GET['sap_pinterest_username'])) {
$sap_pin_app_username = $_GET['sap_pinterest_username'];
// Getting stored pin app data
$sap_pin_sess_data = $this->settings->get_user_setting('sap_pin_sess_data');
// Unset perticular app value data and update the option
if (isset($sap_pin_sess_data[$sap_pin_app_username])) {
unset($sap_pin_sess_data[$sap_pin_app_username]);
$this->settings->update_user_setting('sap_pin_sess_data', $sap_pin_sess_data);
$this->sap_common->sap_script_logs('Pinterest ' . $sap_pin_app_username . ' Account Reset Successfully.', $user_id);
$_SESSION['sap_active_tab'] = 'pinterest';
header("Location:" . SAP_SITE_URL . "/settings/");
exit;
} else if ( empty( $sap_pin_sess_data[$sap_pin_app_username] ) ) {
$app_id = '';
if( !empty( $sap_pin_sess_data ) && is_array( $sap_pin_sess_data ) ) {
foreach( $sap_pin_sess_data as $key => $pin_sess_data ) {
if( $pin_sess_data['id'] == $sap_pin_app_username ) {
$app_id = $key;
break;
}
}
}
if( isset( $app_id ) ) {
unset($sap_pin_sess_data[$app_id]);
$this->settings->update_user_setting('sap_pin_sess_data', $sap_pin_sess_data);
$this->sap_common->sap_script_logs('Pinterest ' . $app_id . ' Account Reset Successfully.', $user_id);
$_SESSION['sap_active_tab'] = 'pinterest';
header("Location:" . SAP_SITE_URL . "/settings/");
exit;
}
}
}
}
/**
* Post to User Board on Pinterest
*
* Handles to post user wall on pinterest
*
* @package Social Auto Poster
* @since 1.0.0
*/
public function sap_pin_post_to_userwall($post_id) {
global $proxy_url, $proxy_pupw;
$post = $this->posts->get_post($post_id, true);
$user_id = isset( $post->user_id ) ? $post->user_id : '';
//Getting pinterest options
$sap_pin_options = $this->settings->get_user_setting('sap_pinterest_options', $user_id);
$sap_pin_auth_method = !empty( $sap_pin_options['pin_auth_options'] ) ? $sap_pin_options['pin_auth_options'] : 'cookie';
//Getting stored pinterest app data
$sap_pin_sess_data = $this->settings->get_user_setting('sap_pin_sess_data', $user_id);
// General setting
$sap_general_options = $this->settings->get_user_setting('sap_general_options',$user_id);
$link_timestamp = isset($sap_general_options['timestamp_link']) ? "?".time() : '';
//Pinterest proxy setting
$proxy = array();
if (!empty($sap_pin_options['enable_proxy'])) {
if(!empty($sap_pin_options['proxy_url'])) {
$proxy_url = $sap_pin_options['proxy_url'];
}
if(!empty($sap_pin_options['proxy_username']) && !empty($sap_pin_options['proxy_password'])) {
$proxy_pupw = $sap_pin_options['proxy_username'].":".$sap_pin_options['proxy_password'];
}
}
$post_to_users = array();
if (!empty($post_id)) {
$sap_pin_custom_msg = $this->posts->get_post_meta($post_id, '_sap_pin_post_msg');
$sap_pin_custom_accounts = $this->posts->get_post_meta($post_id, '_sap_pin_post_accounts');
$sap_pin_custom_image = $this->posts->get_post_meta($post_id, '_sap_pin_post_image');
$posting_type = $this->posts->get_post_meta($post_id, '_sap_pin_status');
$sap_post_link = $this->posts->get_post_meta($post_id, 'sap_pinterest_custom_link');
$global_img = $sap_pin_options['pin_image'];
}
// Check pinterest grant extended permission is set ot not
if (!empty($sap_pin_sess_data)) {
//convert user ids to single array
$posting_logs_data = array();
if (!empty($sap_pin_custom_msg)) {
$notes = $sap_pin_custom_msg;
} else {
$notes = $post->body;
}
// Post limit 500 character per post
if (!empty($notes))
$notes = $this->posts->sap_limit_character($notes, 500);
$postlink = !empty($post->share_link) ? $post->share_link : $sap_post_link;
if(!empty($postlink)) {
$postlink = $postlink."".$link_timestamp;
}
$customlink = !empty($postlink) ? 'true' : 'false';
$postlink = $this->common->sap_script_short_post_link($postlink, $customlink, 'pin', 'pinterest', $user_id);
//check post image is not empty then pass to pinterest
if (isset($sap_pin_custom_image) && !empty($sap_pin_custom_image)) {
$img_src = SAP_IMG_URL . $sap_pin_custom_image;
$img_path = SAP_APP_PATH . '/uploads/' . $sap_pin_custom_image;
} elseif (!empty($post->img)) {
$img_src = SAP_IMG_URL . $post->img;
$img_path = SAP_APP_PATH . 'uploads/' . $post->img;
} elseif (!empty($global_img)) {
$img_src = SAP_IMG_URL . $global_img;
$img_path = SAP_APP_PATH . 'uploads/' . $global_img;
} else {
$this->flash->setFlash('Post Image required for Pinterest.', 'error','',true);
$this->sap_common->sap_script_logs('Post Image required for Pinterest.', $user_id);
return false;
}
//posting logs data
$posting_logs_data = array(
'notes' => $notes,
'image' => $img_src,
);
if (!empty($postlink)) {
$posting_logs_data['link'] = $postlink;
}
if( $sap_pin_auth_method == 'cookie' ) {
$send = array(
'note' => mb_substr($notes, 0, 499),
'link' => $postlink
);
if (isset($img_path) && !empty($img_path)) {
$send['image'] = $img_path;
}
}
if( $sap_pin_auth_method == 'app' ) {
$send['media_source'] = array(
'source_type' => 'image_url',
'url' => $img_src
);
$send['title'] = mb_substr($notes, 0, 499);
}
//initial value of posting flag
$postflg = false;
$post_to_users = array();
if (!empty($sap_pin_custom_accounts)) {
$post_to_users = $sap_pin_custom_accounts;
} else {
$post_to_users = $sap_pin_options['pin_type_post_user'];
}
if (!empty($post_to_users)) {
$posting_logs_user_details = array();
foreach ($post_to_users as $post_to) {
if( $sap_pin_auth_method == 'cookie' ) {
$allPinData = $this->settings->get_user_setting('sap_pin_sess_data',$user_id);
$pinData = explode('|', $post_to);
$username = isset($pinData[0]) ? $pinData[0] : '';
$boardID = isset($pinData[1]) ? $pinData[1] : '';
$sessID = !empty($allPinData[$username]['sessid']) ? $allPinData[$username]['sessid'] : '';
if (!empty($username) && !empty($boardID) && !empty($sessID)) {
$posted = $this->sap_send_post_to_pin($sessID, $boardID, $send);
$boardName = isset($allPinData[$username]['boards'][$boardID]['name']) ? $allPinData[$username]['boards'][$boardID]['name'] : '';
if (!empty($boardName)) {
$posting_logs_data['display_name'] = $username . " - " . $boardName;
}
$postflg = false;
try {
if (isset($posted['status']) && $posted['status'] == 'success') {
$posting_logs_data['link to post'] = 'https://pinterest.com/' . $username . "/" . str_replace(' ', '-', strtolower($boardName));
$postflg = true;
$this->logs->add_log('pinterest', $posting_logs_data, 1, $user_id);
$this->flash->setFlash('Pinterest : Post successfully posted on - ' . $username . " - " . $boardName, 'success','',true);
$this->sap_common->sap_script_logs('Pinterest : Post successfully posted on - ' . $username . " - " . $boardName, $user_id);
$this->sap_common->sap_script_logs('Pinterest post data : ' . var_export($posting_logs_data, true), $user_id);
}
} catch (Exception $e) {
$this->sap_common->sap_script_logs('Pinterest error : ' . $e->getMessage(), $user_id);
$this->flash->setFlash($e->getMessage(), 'error','',true);
$errorMessage = $posted['message'];
$postflg = false;
}
}
if (!$postflg) {
$this->sap_common->sap_script_logs('Pinterest error : ' . $posted['message'], $user_id);
$this->flash->setFlash('Pinterest Exception : ' . $posted['message'], 'error','',true);
}
}
if( $sap_pin_auth_method == 'app' ) {
$pinData = explode('|', $post_to);
$app_id = isset($pinData[0]) ? $pinData[0] : '';
$username = $sap_pin_sess_data[$app_id]['username'];
$boardID = isset($pinData[1]) ? $pinData[1] : '';
//check there is auth token is set for pinterest user
if (isset($sap_pin_sess_data[$app_id])) {
$auth_token = $sap_pin_sess_data[$app_id]['pin_access_token'];
}
if (!empty($sap_pin_sess_data[$app_id])) {
$account_name = $sap_pin_sess_data[$app_id]['username'];
if (!empty($sap_pin_sess_data[$app_id]['boards'])) {
$board_name = $sap_pin_sess_data[$app_id]['boards'][$boardID]['name'];
}
}
if (!empty($app_id) && !empty($boardID)) {
$send['board_id'] = $boardID;
$pinterest = $this->sap_load_pinterest($app_id, $user_id);
if (!$pinterest) {
return false;
}
$this->pinterest->auth->setOAuthToken($auth_token);
$pub = $this->pinterest->pins->create($send);
if (!empty($board_name)) {
$posting_logs_data['display_name'] = $username . " - " . $board_name;
}
$postflg = false;
try {
if (isset($pub) && !empty($pub->id)) {
$posting_logs_data['link to post'] = 'https://pinterest.com/' . $username . "/" . str_replace(' ', '-', strtolower($board_name));
$postflg = true;
$this->logs->add_log('pinterest', $posting_logs_data, 1, $user_id);
$this->flash->setFlash('Pinterest : Post successfully posted on - ' . $username . " - " . $board_name, 'success','',true);
$this->sap_common->sap_script_logs('Pinterest : Post successfully posted on - ' . $username . " - " . $board_name, $user_id);
$this->sap_common->sap_script_logs('Pinterest post data : ' . var_export($posting_logs_data, true), $user_id);
$this->quick_posts->update_post_meta($post_id, "sap_pin_link_to_post", $posting_logs_data['link to post']);
}
} catch (Exception $e) {
$this->sap_common->sap_script_logs('Pinterest error : ' . $e->getMessage(), $user_id);
$this->flash->setFlash($e->getMessage(), 'error','',true);
$errorMessage = $posted['message'];
$postflg = false;
}
}
if (!$postflg) {
$this->sap_common->sap_script_logs('Pinterest error : ' . $posted['message'], $user_id);
$this->flash->setFlash('Pinterest Exception : ' . $posted['message'], 'error','',true);
}
}
}
}
return $postflg;
} else {
$this->flash->setFlash('Pinterest grant extended permissions not set.', 'error','',true);
$this->sap_common->sap_script_logs('Pinterest grant extended permissions not set.', $user_id);
}
}
/**
* Handles posting on Pinterest method
*
* This method handles to send posting on pinterest portal
*
* @package Social Auto Poster
* @since 1.0.0
*/
public function sap_send_post_to_pin($sessID, $boardId, $data = array()) {
global $proxy_url, $proxy_pupw;
$apiURL = 'https://www.pinterest.com/resource/PinResource/create/';
$imageURL = isset($data['image']) ? $data['image'] : '';
$image_file_name = basename($imageURL);
$imageURL = SAP_IMG_URL . $image_file_name;
$pinData = array(
"options" => array(
"board_id" => $boardId,
"title" => '',
"description" => isset($data['note']) ? $data['note'] : '',
"link" => isset($data['link']) ? $data['link'] : '',
"image_url" => $imageURL,
"method" => "uploaded",
),
"context" => array()
);
$postField = array(
'data' => json_encode($pinData)
);
$fields = http_build_query($postField);
// generated csrf token dynamically
$csrftoken = bin2hex(random_bytes(32));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiURL);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Requested-With: XMLHttpRequest", "X-CSRFToken: {$csrftoken}"));
if($proxy_url !== ''){
curl_setopt($ch, CURLOPT_PROXY, $proxy_url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if($proxy_pupw !== ''){
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_pupw);
}
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_COOKIE, 'csrftoken=' . $csrftoken . '; _pinterest_sess="' . $sessID . '"; c_dpr=1');
$response = curl_exec($ch);
// Get response code
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($response, true);
$status = isset($data['resource_response']['status']) ? $data['resource_response']['status'] : '';
if ($httpCode == '200' && $status == 'success') {
$pinData = isset($data['resource_response']['data']) ? $data['resource_response']['data'] : '';
$respose['status'] = 'success';
$respose['pindata'] = $pinData;
} else {
$respose['status'] = 'error';
$respose['message'] = isset($data['resource_response']['error']['message']) ? $data['resource_response']['error']['message'] : 'Something goes wrong, please try later.';
}
return $respose;
}
/**
* Qucik Post On pinterest
*
* Handles to post user wall on pinterest
*
* @package Social Auto Poster
* @since 1.0.0
*/
public function sap_quick_post_on_pin_post($post_id) {
global $proxy_url, $proxy_pupw;
$status_meta_array = array();
$quick_post = $this->quick_posts->get_post($post_id, true);
$user_id = isset( $quick_post->user_id ) ? $quick_post->user_id : '';
//Getting pinterest options
$sap_pin_options = $this->settings->get_user_setting('sap_pinterest_options', $user_id);
$sap_pin_auth_method = !empty( $sap_pin_options['pin_auth_options'] ) ? $sap_pin_options['pin_auth_options'] : 'cookie';
//Pinterest proxy setting
$proxy = array();
if (!empty($sap_pin_options['enable_proxy'])) {
if(!empty($sap_pin_options['proxy_url'])) {
$proxy_url = $sap_pin_options['proxy_url'];
}
if(!empty($sap_pin_options['proxy_username']) && !empty($sap_pin_options['proxy_password'])) {
$proxy_pupw = $sap_pin_options['proxy_username'].":".$sap_pin_options['proxy_password'];
}
}
// General setting
$sap_general_options = $this->settings->get_user_setting('sap_general_options',$user_id);
$link_timestamp = isset($sap_general_options['timestamp_link']) ? "?".time() : '';
//Getting stored pin app data
$sap_pin_sess_data = $this->settings->get_user_setting('sap_pin_sess_data', $user_id);
if (!empty($sap_pin_sess_data)) {
$sap_networks_meta = $this->quick_posts->get_post_meta($post_id, 'sap_networks');
$sap_networks_accounts = !empty($sap_networks_meta['pin_accounts']) ? $sap_networks_meta['pin_accounts'] : array();
// Pinterest user id on whose wall the post will be posted
$notes = html_entity_decode(strip_tags($quick_post->message),ENT_QUOTES);
// Post limit 500 character per post
if (!empty($notes))
$notes = $this->quick_posts->sap_limit_character($notes, 500);
$postlink = !empty($quick_post->share_link) ? $quick_post->share_link : '';
if(!empty($postlink)) {
$postlink = $postlink."".$link_timestamp;
}
$customlink = !empty($postlink) ? 'true' : 'false';
$postlink = $this->common->sap_script_short_post_link($postlink, $customlink, 'pin', 'pinterest', $user_id);
//check post image is not empty then pass to pinterest
if (isset($sap_pin_options['pin_image'])) {
$pin_general_image = $sap_pin_options['pin_image'];
}
$post_img = !empty($quick_post->image) ? $quick_post->image : $pin_general_image;
if (!empty($post_img)) {
$img_src = SAP_IMG_URL . $post_img;
$img_path = SAP_APP_PATH . '/uploads/' . $post_img;
} else {
$this->flash->setFlash('Post Image required for Pinterest.', 'error','',true);
$this->sap_common->sap_script_logs('Pinterest Post Image required for Pinterest.', $user_id);
$status_meta_array[] = array(
"status" => 'error',
"message" => 'Pinterest Post Image required for Pinterest.'
);
$this->quick_posts->update_post_meta($post_id, "sap_pin_posting_error", $status_meta_array);
return false;
}
$posting_logs_data = array();
//posting logs data
$posting_logs_data = array(
'notes' => $notes,
'image' => $img_src,
);
if (!empty($postlink)) {
$posting_logs_data['link'] = $postlink;
}
if( $sap_pin_auth_method == 'cookie' ) {
$send = array(
'note' => mb_substr($notes, 0, 499),
'link' => $postlink
);
if (isset($img_path) && !empty($img_path)) {
$send['image'] = $img_path;
}
}
if( $sap_pin_auth_method == 'app' ) {
$send['media_source'] = array(
'source_type' => 'image_url',
'url' => $img_src
);
$send['title'] = mb_substr($notes, 0, 499);
}
//initial value of posting flag
$postflg = false;
$post_to_users = array();
if (!empty($sap_networks_accounts)) {
$post_to_users = $sap_networks_accounts;
} else {
if (isset($sap_pin_options['pin_type_post_user'])) {
$post_to_users = $sap_pin_options['pin_type_post_user'];
}
}
if (!empty($post_to_users)) {
$posting_logs_user_details = array();
foreach ($post_to_users as $post_to) {
if( $sap_pin_auth_method == 'cookie' ) {
$allPinData = $this->settings->get_user_setting('sap_pin_sess_data', $user_id);
$pinData = explode('|', $post_to);
$username = isset($pinData[0]) ? $pinData[0] : '';
$boardID = isset($pinData[1]) ? $pinData[1] : '';
$status_meta_key = (!empty($username) ) ? $username : $post_to;
$sessID = !empty($allPinData[$username]['sessid']) ? $allPinData[$username]['sessid'] : '';
if (!empty($username) && !empty($boardID) && !empty($sessID)) {
$posted = $this->sap_send_post_to_pin($sessID, $boardID, $send);
$boardName = isset($allPinData[$username]['boards'][$boardID]['name']) ? $allPinData[$username]['boards'][$boardID]['name'] : '';
if (!empty($boardName)) {
$posting_logs_data['display_name'] = $username . " - " . $boardName;
}
$postflg = false;
try {
if (isset($posted['status']) && $posted['status'] == 'success') {
$posting_logs_data['link to post'] = 'https://pinterest.com/' . $username . "/" . str_replace(' ', '-', strtolower($boardName));
$postflg = true;
$this->logs->add_log('pinterest', $posting_logs_data, 1, $user_id);
$this->flash->setFlash('Pinterest : Post successfully posted on - ' . $username . " - " . $boardName, 'success','',true);
$this->sap_common->sap_script_logs('Pinterest : Post successfully posted on - ' . $username . " - " . $boardName, $user_id);
$this->sap_common->sap_script_logs('Pinterest post data : ' . var_export($posting_logs_data, true), $user_id);
$status_meta_array[$status_meta_key] = array(
"status" => 'success'
);
$this->quick_posts->update_post_meta($post_id, "sap_pin_link_to_post", $posting_logs_data['link to post']);
}
} catch (Exception $e) {
$this->sap_common->sap_script_logs('Pinterest error : ' . $e->getMessage(), $user_id);
$this->flash->setFlash($e->getMessage(), 'error','',true);
$errorMessage = $posted['message'];
$postflg = false;
$status_meta_array[$status_meta_key] = array(
"status" => 'error',
"message" => $e->getMessage()
);
}
}
if (!$postflg) {
$this->sap_common->sap_script_logs('Pinterest Exception : ' . $posted['message'], $user_id);
$this->flash->setFlash('Pinterest Exception: ' . $posted['message'], 'error','',true);
$status_meta_array[$status_meta_key] = array(
"status" => 'error',
"message" => $posted['message']
);
}
}
}
if( $sap_pin_auth_method == 'app' ) {
$pinData = explode('|', $post_to);
$app_id = isset($pinData[0]) ? $pinData[0] : '';
$username = $sap_pin_sess_data[$app_id]['username'];
$boardID = isset($pinData[1]) ? $pinData[1] : '';
//check there is auth token is set for pinterest user
if (isset($sap_pin_sess_data[$app_id])) {
$auth_token = $sap_pin_sess_data[$app_id]['pin_access_token'];
}
if (!empty($sap_pin_sess_data[$app_id])) {
$account_name = $sap_pin_sess_data[$app_id]['username'];
if (!empty($sap_pin_sess_data[$app_id]['boards'])) {
$board_name = $sap_pin_sess_data[$app_id]['boards'][$boardID]['name'];
}
}
if (!empty($app_id) && !empty($boardID)) {
$send['board_id'] = $boardID;
$pinterest = $this->sap_load_pinterest($app_id, $user_id);
if (!$pinterest) {
return false;
}
$this->pinterest->auth->setOAuthToken($auth_token);
try {
$pub = $this->pinterest->pins->create($send);
} catch (Exception $e) {
$status_meta_array[$status_meta_key] = array(
"status" => 'error',
"message" => $e->getMessage()
);
$this->sap_common->sap_script_logs('Pinterest error : ' . $e->getMessage(), $user_id);
$this->flash->setFlash($e->getMessage(), 'error','',true);
}
if (!empty($board_name)) {
$posting_logs_data['display_name'] = $username . " - " . $board_name;
}
$postflg = false;
try {
if (isset($pub) && !empty($pub->id)) {
$posting_logs_data['link to post'] = 'https://pinterest.com/' . $username . "/" . str_replace(' ', '-', strtolower($board_name));
$postflg = true;
$this->logs->add_log('pinterest', $posting_logs_data, 1, $user_id);
$this->flash->setFlash('Pinterest : Post successfully posted on - ' . $username . " - " . $board_name, 'success','',true);
$this->sap_common->sap_script_logs('Pinterest : Post successfully posted on - ' . $username . " - " . $board_name, $user_id);
$this->sap_common->sap_script_logs('Pinterest post data : ' . var_export($posting_logs_data, true), $user_id);
$status_meta_array[$status_meta_key] = array(
"status" => 'success'
);
$this->quick_posts->update_post_meta($post_id, "sap_pin_link_to_post", $posting_logs_data['link to post']);
}
} catch (Exception $e) {
$this->sap_common->sap_script_logs('Pinterest error : ' . $e->getMessage(), $user_id);
$this->flash->setFlash($e->getMessage(), 'error','',true);
$errorMessage = $posted['message'];
$postflg = false;
$status_meta_array[$status_meta_key] = array(
"status" => 'error',
"message" => $e->getMessage()
);
}
}
if (!$postflg) {
$this->sap_common->sap_script_logs('Pinterest Exception : ' . $posted['message'], $user_id);
$this->flash->setFlash('Pinterest Exception: ' . $posted['message'], 'error','',true);
$status_meta_array[$status_meta_key] = array(
"status" => 'error',
"message" => $posted['message']
);
}
}
$this->quick_posts->update_post_meta($post_id, "sap_pin_posting_error", $status_meta_array);
}
return $postflg;
} else {
$this->flash->setFlash('Pinterest grant extended permissions not set.', 'error','',true);
$this->sap_common->sap_script_logs('Pinterest grant extended permissions not set.', $user_id);
$status_meta_array[] = array(
"status" => 'error',
"message" => 'Pinterest grant extended permissions not set.'
);
$this->quick_posts->update_post_meta($post_id, "sap_pin_posting_error", $status_meta_array);
}
}
}