コード例 #1
0
    public function process()
    {
        if ("save_facebook" == $_REQUEST['_process']) {
            $social_facebook_id = isset($_REQUEST['social_facebook_id']) ? (int) $_REQUEST['social_facebook_id'] : 0;
            $facebook = new ucm_facebook_account($social_facebook_id);
            if (isset($_POST['butt_del']) && module_social::can_i('delete', 'Facebook', 'Social', 'social')) {
                if (module_form::confirm_delete('social_facebook_id', "Really delete this Facebook account from the system? All messages will be lost.", self::link_open($_REQUEST['social_facebook_id']))) {
                    $facebook->delete();
                    set_message("Facebook account deleted successfully");
                    redirect_browser(self::link_open(false));
                }
            }
            $facebook->save_data($_POST);
            $social_facebook_id = $facebook->get('social_facebook_id');
            if (isset($_POST['butt_save_connect'])) {
                $redirect = $this->link_open($social_facebook_id, false, false, 'facebook_account_connect');
            } else {
                set_message('Facebook account saved successfully');
                $redirect = $this->link_open($social_facebook_id);
            }
            redirect_browser($redirect);
            exit;
        } else {
            if ("send_facebook_message" == $_REQUEST['_process']) {
                if (module_form::check_secure_key()) {
                    $social_facebook_id = isset($_REQUEST['social_facebook_id']) ? (int) $_REQUEST['social_facebook_id'] : 0;
                    $facebook = new ucm_facebook_account($social_facebook_id);
                    if ($social_facebook_id && $facebook->get('social_facebook_id') == $social_facebook_id) {
                        // queue the message into the facebook_message table
                        // if there's a scheduled date in the past we send it in the past, no date we send straight away, date in the future we leave it in the db table for the cron job to pick up.
                        //print_r($_POST);exit;
                        $send_time = false;
                        // default: now
                        if (isset($_POST['schedule_date']) && isset($_POST['schedule_time']) && !empty($_POST['schedule_date']) && !empty($_POST['schedule_time'])) {
                            $date = $_POST['schedule_date'];
                            $time_hack = $_POST['schedule_time'];
                            $time_hack = str_ireplace('am', '', $time_hack);
                            $time_hack = str_ireplace('pm', '', $time_hack);
                            $bits = explode(':', $time_hack);
                            if (strpos($_POST['schedule_time'], 'pm')) {
                                $bits[0] += 12;
                            }
                            // add the time if it exists
                            $date .= ' ' . implode(':', $bits) . ':00';
                            $send_time = strtotime(input_date($date, true));
                        } else {
                            if (isset($_POST['schedule_date']) && !empty($_POST['schedule_date'])) {
                                $send_time = strtotime(input_date($_POST['schedule_date'], true));
                            }
                        }
                        //echo print_date($send_time,true);
                        //echo '<br>';
                        //echo date('c',$send_time);
                        //exit;
                        /* @var $available_pages ucm_facebook_page[] */
                        $available_pages = $facebook->get('pages');
                        $send_pages = isset($_POST['compose_page_id']) && is_array($_POST['compose_page_id']) ? $_POST['compose_page_id'] : array();
                        $page_count = 0;
                        if ($send_pages) {
                            foreach ($send_pages as $facebook_page_id => $tf) {
                                if (!$tf) {
                                    continue;
                                }
                                // see if this is an available page.
                                if (isset($available_pages[$facebook_page_id])) {
                                    // push to db! then send.
                                    $facebook_message = new ucm_facebook_message($facebook, $available_pages[$facebook_page_id], false);
                                    $facebook_message->create_new();
                                    $facebook_message->update('social_facebook_page_id', $available_pages[$facebook_page_id]->get('social_facebook_page_id'));
                                    $facebook_message->update('social_facebook_id', $facebook->get('social_facebook_id'));
                                    $facebook_message->update('summary', isset($_POST['message']) ? $_POST['message'] : '');
                                    $facebook_message->update('type', 'pending');
                                    $facebook_message->update('link', isset($_POST['link']) ? $_POST['link'] : '');
                                    $facebook_message->update('data', json_encode($_POST));
                                    $facebook_message->update('user_id', module_security::get_loggedin_id());
                                    // do we send this one now? or schedule it later.
                                    $facebook_message->update('status', _SOCIAL_MESSAGE_STATUS_PENDINGSEND);
                                    if ($send_time) {
                                        // schedule for sending at a different time (now or in the past)
                                        $facebook_message->update('last_active', $send_time);
                                    } else {
                                        // send it now.
                                        $facebook_message->update('last_active', 0);
                                    }
                                    if (isset($_FILES['picture']['tmp_name']) && is_uploaded_file($_FILES['picture']['tmp_name'])) {
                                        $facebook_message->add_attachment($_FILES['picture']['tmp_name']);
                                    }
                                    $facebook_message->send_queued(isset($_POST['debug']));
                                    $page_count++;
                                } else {
                                    // log error?
                                }
                            }
                        }
                        set_message(_l('Message delivered successfully to %s Facebook pages', $page_count));
                        $redirect = $this->link_open_message_view($social_facebook_id);
                        redirect_browser($redirect);
                    }
                }
            } else {
                if ("ajax_facebook_url_info" == $_REQUEST['_process']) {
                    header('Content-type: text/javascript');
                    $url = isset($_REQUEST['url']) ? $_REQUEST['url'] : false;
                    if (strlen($url) > 4 && preg_match('#https?://#', $url)) {
                        // pass this into graph api debugger to get some information back about the URL
                        $facebook = new ucm_facebook();
                        $data = $facebook->get_url_info($url);
                        // return the data formatted in json ready to be added into the relevant input boxes.
                        $data['link_picture'] = isset($data['image'][0]['url']) ? $data['image'][0]['url'] : '';
                        $data['link_name'] = isset($data['title']) ? $data['title'] : '';
                        $data['link_caption'] = isset($data['caption']) ? $data['caption'] : '';
                        $data['link_description'] = isset($data['description']) ? $data['description'] : '';
                        echo json_encode($data);
                    }
                    exit;
                } else {
                    if ("ajax_social_facebook" == $_REQUEST['_process']) {
                        // ajax functions from wdsocial. copied from the datafeed.php sample files.
                        header('Content-type: text/javascript');
                        if (module_form::check_secure_key()) {
                            // todo: check user has access to this message.
                            $social_facebook_id = isset($_REQUEST['social_facebook_id']) ? (int) $_REQUEST['social_facebook_id'] : 0;
                            //$facebook = new ucm_facebook_account($social_facebook_id);
                            //if($social_facebook_id && $facebook->get('social_facebook_id') == $social_facebook_id){
                            $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : false;
                            $message_id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
                            $facebook_message = new ucm_facebook_message();
                            $facebook_message->load($message_id);
                            //if($facebook_message->get('social_facebook_id') == $social_facebook_id){
                            switch ($action) {
                                case "send-message-reply":
                                    if (module_social::can_i('create', 'Facebook Comments', 'Social', 'social')) {
                                        $return = array();
                                        $message = isset($_POST['message']) && $_POST['message'] ? $_POST['message'] : '';
                                        $facebook_id = isset($_POST['facebook_id']) && $_POST['facebook_id'] ? $_POST['facebook_id'] : false;
                                        $debug = isset($_POST['debug']) && $_POST['debug'] ? $_POST['debug'] : false;
                                        if ($message) {
                                            if ($debug) {
                                                ob_start();
                                            }
                                            $facebook_message->send_reply($facebook_id, $message, $debug);
                                            if ($debug) {
                                                $return['message'] = ob_get_clean();
                                            } else {
                                                // todo - option to ask the user if they want to archive a message during the send.
                                                set_message(_l('Message sent and conversation archived.'));
                                                if ($social_facebook_id) {
                                                    $return['redirect'] = module_social_facebook::link_open_message_view($social_facebook_id);
                                                } else {
                                                    // return to the 'combined' view:
                                                }
                                            }
                                        }
                                        echo json_encode($return);
                                    }
                                    break;
                                case "set-answered":
                                    if (module_social::can_i('edit', 'Facebook Comments', 'Social', 'social')) {
                                        $facebook_message->update('status', _SOCIAL_MESSAGE_STATUS_ANSWERED);
                                        ?>

									$('.facebook_message_row[data-id=<?php 
                                        echo $message_id;
                                        ?>
]').hide();
									<?php 
                                    }
                                    break;
                                case "set-unanswered":
                                    if (module_social::can_i('edit', 'Facebook Comments', 'Social', 'social')) {
                                        $facebook_message->update('status', _SOCIAL_MESSAGE_STATUS_UNANSWERED);
                                        ?>

					                $('.facebook_message_row[data-id=<?php 
                                        echo $message_id;
                                        ?>
]').hide();
					                <?php 
                                    }
                                    break;
                            }
                            //echo 'The status is '.$facebook_message->get('status');
                            //}
                        }
                        // }
                        exit;
                    }
                }
            }
        }
    }
コード例 #2
0
ファイル: facebook.class.php プロジェクト: sgh1986915/php-crm
    public function graph_load_latest_page_data($debug = false)
    {
        // serialise this result into facebook_data.
        if (!$this->facebook_account) {
            echo 'No facebook account linked, please try again';
            return;
        }
        $access_token = $this->get('facebook_token');
        // get the machine id from the parent facebook_account
        $machine_id = $this->facebook_account->get('machine_id');
        if (!$access_token) {
            echo 'No access token for facebook page found';
            return;
        }
        $facebook_page_id = $this->get('page_id');
        if (!$facebook_page_id) {
            echo 'No facebook page id found';
            return;
        }
        if ($debug) {
            echo "Getting the latest page data for FB Page: " . $facebook_page_id . "<br>";
        }
        // we keep a record of the last message received so we know where to stop checking in the FB feed
        $last_message_received = (int) $this->get('last_message');
        if ($debug) {
            echo "The last message we received for this page was on: " . print_date($last_message_received, true) . '<br>';
        }
        $newest_message_received = 0;
        if ($debug) {
            echo "Getting /tagged page posts... <br>";
        }
        $facebook_api = new ucm_facebook();
        $page_feed = $facebook_api->graph('/' . $facebook_page_id . '/tagged', array('access_token' => $access_token, 'machine_id' => $machine_id));
        $count = 0;
        if (isset($page_feed['error']) && !empty($page_feed['error'])) {
            if ($debug) {
                echo " FACEBOOK ERROR : " . $page_feed['error']['message'] . "<br>";
            }
        }
        if (isset($page_feed['data']) && !empty($page_feed['data'])) {
            foreach ($page_feed['data'] as $page_feed_message) {
                if (!$page_feed_message['id']) {
                    continue;
                }
                $message_time = strtotime(isset($page_feed_message['updated_time']) && strlen($page_feed_message['updated_time']) ? $page_feed_message['updated_time'] : $page_feed_message['created_time']);
                $newest_message_received = max($message_time, $newest_message_received);
                if ($last_message_received && $last_message_received >= $message_time) {
                    // we've already processed messages after this time.
                    if ($debug) {
                        echo " - Skipping this message because it was received on " . print_date($message_time, true) . ' and we only want ones after ' . print_date($last_message_received, true) . '<br>';
                    }
                    break;
                } else {
                    if ($debug) {
                        echo ' - storing message received on ' . print_date($message_time, true) . '<br>';
                    }
                }
                // check if we have this message in our database already.
                $facebook_message = new ucm_facebook_message($this->facebook_account, $this, false);
                if ($facebook_message->load_by_facebook_id($page_feed_message['id'], $page_feed_message, 'feed')) {
                    $count++;
                }
                if ($debug) {
                    ?>
					<div>
					<pre> <?php 
                    echo $facebook_message->get('facebook_id');
                    ?>
						<?php 
                    print_r($facebook_message->get('data'));
                    ?>
					</pre>
					</div>
				<?php 
                }
            }
        }
        if ($debug) {
            echo " got {$count} new posts <br>";
        }
        // instead of /feed
        if ($debug) {
            echo "Getting /posts page posts... <br>";
        }
        $facebook_api = new ucm_facebook();
        $page_feed = $facebook_api->graph('/' . $facebook_page_id . '/posts', array('access_token' => $access_token, 'machine_id' => $machine_id));
        $count = 0;
        if (isset($page_feed['error']) && !empty($page_feed['error'])) {
            if ($debug) {
                echo " FACEBOOK ERROR: " . $page_feed['error']['message'] . "<br>";
            }
        }
        if (isset($page_feed['data']) && !empty($page_feed['data'])) {
            foreach ($page_feed['data'] as $page_feed_message) {
                if (!$page_feed_message['id']) {
                    continue;
                }
                $message_time = strtotime(isset($page_feed_message['updated_time']) && strlen($page_feed_message['updated_time']) ? $page_feed_message['updated_time'] : $page_feed_message['created_time']);
                $newest_message_received = max($message_time, $newest_message_received);
                if ($last_message_received && $last_message_received >= $message_time) {
                    // we've already processed messages after this time.
                    if ($debug) {
                        echo " - Skipping this message because it was received on " . print_date($message_time, true) . ' and we only want ones after ' . print_date($last_message_received, true) . '<br>';
                    }
                    break;
                } else {
                    if ($debug) {
                        echo ' - storing message received on ' . print_date($message_time, true) . '<br>';
                    }
                }
                // check if we have this message in our database already.
                $facebook_message = new ucm_facebook_message($this->facebook_account, $this, false);
                if ($facebook_message->load_by_facebook_id($page_feed_message['id'], $page_feed_message, 'feed')) {
                    $count++;
                }
                if ($debug) {
                    ?>
					<div>
					<pre> <?php 
                    echo $facebook_message->get('facebook_id');
                    ?>
						<?php 
                    print_r($facebook_message->get('data'));
                    ?>
					</pre>
					</div>
				<?php 
                }
            }
        }
        if ($debug) {
            echo " got {$count} new posts <br>";
        }
        if ($debug) {
            echo "Getting /conversations inbox messages... <br>";
        }
        // get conversations (inbox) from fb:
        $conversation_feed = $facebook_api->graph('/' . $facebook_page_id . '/conversations', array('access_token' => $access_token, 'machine_id' => $machine_id));
        $count = 0;
        if (isset($conversation_feed['error']) && !empty($conversation_feed['error'])) {
            if ($debug) {
                echo " FACEBOOK ERROR: " . $conversation_feed['error']['message'] . "<br>";
            }
        }
        if (isset($conversation_feed['data']) && !empty($conversation_feed['data'])) {
            foreach ($conversation_feed['data'] as $conversation) {
                if (!$conversation['id']) {
                    continue;
                }
                $message_time = strtotime(isset($conversation['updated_time']) && strlen($conversation['updated_time']) ? $conversation['updated_time'] : $conversation['created_time']);
                $newest_message_received = max($message_time, $newest_message_received);
                if ($last_message_received && $last_message_received >= $message_time) {
                    // we've already processed messages after this time.
                    if ($debug) {
                        echo " - Skipping this message because it was received on " . print_date($message_time, true) . ' and we only want ones after ' . print_date($last_message_received, true) . '<br>';
                    }
                    break;
                } else {
                    if ($debug) {
                        echo ' - storing message received on ' . print_date($message_time, true) . '<br>';
                    }
                }
                // check if we have this message in our database already.
                $facebook_message = new ucm_facebook_message($this->facebook_account, $this, false);
                if ($facebook_message->load_by_facebook_id($conversation['id'], $conversation, 'conversation')) {
                    $count++;
                }
            }
        }
        if ($debug) {
            echo " got {$count} new messages <br>";
        }
        if ($debug) {
            echo "The last message we received for this page was now on: " . print_date($newest_message_received, true) . '<br>';
        }
        if ($debug) {
            echo "Finished checking this page messages at " . print_date(time(), true) . "<br>";
        }
        $this->update('last_message', $newest_message_received);
        $this->update('last_checked', time());
    }
コード例 #3
0
						       data-action="set-answered" data-id="<?php 
                    echo (int) $message['facebook_message']->get('social_facebook_message_id');
                    ?>
"><?php 
                    _e('Archive');
                    ?>
</a>
					    <?php 
                }
                ?>
			        <?php 
            }
        });
        $table_manager->set_columns($columns);
        $table_manager->row_callback = function ($message) use(&$facebook, &$table_manager) {
            $facebook_message = new ucm_facebook_message($facebook, $message['page'], $message['social_facebook_message_id']);
            $table_manager->row_class = 'facebook_message_row' . (!isset($message['read_time']) || !$message['read_time'] ? ' message_row_unread' : '');
            $table_manager->row_attributes = array('data-id' => (int) $message['social_facebook_message_id']);
            return array('facebook_message' => $facebook_message, 'comments' => $facebook_message->get_comments());
        };
        $table_manager->set_rows($all_messages);
        $table_manager->pagination = true;
        $table_manager->print_table();
        ?>
	    </form>
	    <script type="text/javascript">
		    $(function () {
			    ucm.social.init();
			    ucm.social.facebook.api_url = '<?php 
        echo module_social_facebook::link_social_ajax_functions($social_facebook_id);
        ?>
コード例 #4
0
/** 
 * Copyright: dtbaker 2012
 * Licence: Please check CodeCanyon.net for licence details. 
 * More licence clarification available here:  http://codecanyon.net/wiki/support/legal-terms/licensing-terms/ 
 * Deploy: 9809 f200f46c2a19bb98d112f2d32a8de0c4
 * Envato: 4ffca17e-861e-4921-86c3-8931978c40ca
 * Package Date: 2015-11-25 02:55:20 
 * IP Address: 67.79.165.254
 */
$social_facebook_id = isset($_REQUEST['social_facebook_id']) ? (int) $_REQUEST['social_facebook_id'] : 0;
$social_facebook_message_id = isset($_REQUEST['social_facebook_message_id']) ? (int) $_REQUEST['social_facebook_message_id'] : 0;
if ($social_facebook_id && $social_facebook_message_id && module_social::can_i('view', 'Facebook Comments', 'Social', 'social')) {
    $facebook = new ucm_facebook_account($social_facebook_id);
    if ($social_facebook_id && $facebook->get('social_facebook_id') == $social_facebook_id) {
        $facebook_message = new ucm_facebook_message($facebook, false, $social_facebook_message_id);
        if ($social_facebook_message_id && $facebook_message->get('social_facebook_message_id') == $social_facebook_message_id && $facebook_message->get('social_facebook_id') == $social_facebook_id) {
            $module->page_title = $facebook->get('facebook_name');
            $comments = $facebook_message->get_comments();
            $facebook_message->mark_as_read();
            ?>

			<form action="" method="post" id="facebook_edit_form">
				<div id="facebook_message_header">
					<div style="float:right; text-align: right; margin-top:-4px;">
						<small><?php 
            echo print_date($facebook_message->get('last_active'), true);
            ?>
 </small><br/>
						<?php 
            if (module_social::can_i('edit', 'Facebook Comments', 'Social', 'social')) {