Esempio n. 1
0
 public function load_by_facebook_id($facebook_id, $message_data, $type, $debug = false)
 {
     $access_token = $this->facebook_page ? $this->facebook_page->get('facebook_token') : '';
     // get the machine id from the parent facebook_account
     $machine_id = $this->facebook_account ? $this->facebook_account->get('machine_id') : '';
     if (!$message_data) {
         $facebook_api = new ucm_facebook();
         $data = $facebook_api->graph($facebook_id, array('access_token' => $access_token, 'machine_id' => $machine_id));
         if ($data && isset($data['id'])) {
             $message_data = $data;
         } else {
             return false;
         }
     }
     // check if exists already
     $existing = get_single('social_facebook_message', 'facebook_id', $facebook_id);
     if ($existing) {
         // load it up.
         $this->load($existing['social_facebook_message_id']);
     } else {
         // ignore if status and feeds match a user
         if (isset($message_data['type']) && $message_data['type'] == 'status' && $message_data['from']['id'] == $this->facebook_page->get('page_id') && isset($message_data['story_tags']) && $message_data['story_tags']) {
             $tags = current($message_data['story_tags']);
             if ($tags[0]['type'] == 'user') {
                 return false;
             }
         }
         // create
         $this->create_new();
     }
     // wack out message data into the database.
     if ($type == 'conversation') {
         $message_time = strtotime(isset($message_data['updated_time']) && strlen($message_data['updated_time']) ? $message_data['updated_time'] : $message_data['created_time']);
         $this->update('last_active', $message_time);
         $this->update('facebook_id', $message_data['id']);
         $this->update('summary', $message_data['snippet']);
         $this->update('comments', isset($message_data['messages']) ? json_encode($message_data['messages']) : '');
         if (isset($message_data['messages']['data'][0]['from']['id']) && $this->facebook_page && $message_data['messages']['data'][0]['from']['id'] == $this->facebook_page->get('page_id')) {
             // was the last comment from us?
             $this->update('status', _SOCIAL_MESSAGE_STATUS_ANSWERED);
         } else {
             $this->update('status', _SOCIAL_MESSAGE_STATUS_UNANSWERED);
         }
         $this->update('data', json_encode($message_data));
         $this->update('type', isset($message_data['type']) ? $message_data['type'] : $type);
         if ($this->facebook_page) {
             $this->update('social_facebook_page_id', $this->facebook_page->get('social_facebook_page_id'));
         }
         if ($this->facebook_account) {
             $this->update('social_facebook_id', $this->facebook_account->get('social_facebook_id'));
         }
     } else {
         $message_time = strtotime(isset($message_data['updated_time']) && strlen($message_data['updated_time']) ? $message_data['updated_time'] : $message_data['created_time']);
         $this->update('last_active', $message_time);
         $this->update('facebook_id', $message_data['id']);
         $this->update('summary', isset($message_data['message']) ? $message_data['message'] : (isset($message_data['story']) ? $message_data['story'] : 'N/A'));
         // grab the comments rom the api again.
         $facebook_api = new ucm_facebook();
         $data = $facebook_api->graph($message_data['id'] . '/comments', array('fields' => 'from,message,id,attachment,created_time,comments.fields(from,message,id,attachment,created_time)', 'access_token' => $access_token, 'machine_id' => $machine_id));
         $comments = isset($data) ? $data : (isset($message_data['comments']) ? $message_data['comments'] : false);
         $this->update('comments', json_encode($comments));
         if (isset($message_data['comments']['data'][0]['from']['id']) && $this->facebook_page && $message_data['comments']['data'][0]['from']['id'] == $this->facebook_page->get('page_id')) {
             // was the last comment from us?
             $this->update('status', _SOCIAL_MESSAGE_STATUS_ANSWERED);
         } else {
             $this->update('status', _SOCIAL_MESSAGE_STATUS_UNANSWERED);
         }
         if (isset($message_data['messages']['data'][0]['from']['id']) && $this->facebook_page && $message_data['messages']['data'][0]['from']['id'] == $this->facebook_page->get('page_id')) {
             // was the last comment from us?
             $this->update('status', _SOCIAL_MESSAGE_STATUS_ANSWERED);
         } else {
             $this->update('status', _SOCIAL_MESSAGE_STATUS_UNANSWERED);
         }
         $this->update('data', json_encode($message_data));
         $this->update('type', isset($message_data['type']) ? $message_data['type'] : $type);
         if ($this->facebook_page) {
             $this->update('social_facebook_page_id', $this->facebook_page->get('social_facebook_page_id'));
         }
         if ($this->facebook_account) {
             $this->update('social_facebook_id', $this->facebook_account->get('social_facebook_id'));
         }
     }
     // work out if this message is answered or not.
     return $this->social_facebook_message_id;
 }