/** * Adds tweets in JSON format to the database and saves the sender as a new * Reporter if they don't already exist unless the message is a TWitter Search result * @param string $data - Twitter JSON results */ private function add_json_tweets($data) { $services = new Service_Model(); $service = $services->where('service_name', 'Twitter')->find(); if (!$service) { return false; } $tweets = json_decode($data, false); if (!$tweets) { return false; } if (array_key_exists('results', $tweets)) { $tweets = $tweets->{'results'}; } foreach ($tweets as $tweet) { $tweet_user = null; if (array_key_exists('user', $tweet)) { $tweet_user = $tweet->{'user'}; } //XXX For Twitter Search, should we curl Twitter for a full tweet? $reporter = null; if ($tweet_user) { $reporter_model = new Reporter_Model(); $reporters = $reporter_model->where('service_id', $service->id)->where('service_userid', $tweet_user->{'id'})->find_all(); if (count($reporters) < 1) { // Add new reporter $names = explode(' ', $tweet_user->{'name'}, 2); $last_name = ''; if (count($names) == 2) { $last_name = $names[1]; } // get default reporter level (Untrusted) $levels = new Level_Model(); $default_level = $levels->where('level_weight', 0)->find(); $reporter = new Reporter_Model(); $reporter->service_id = $service->id; $reporter->service_userid = $tweet_user->{'id'}; $reporter->service_account = $tweet_user->{'screen_name'}; $reporter->reporter_level = $default_level; $reporter->reporter_first = $names[0]; $reporter->reporter_last = $last_name; $reporter->reporter_email = null; $reporter->reporter_phone = null; $reporter->reporter_ip = null; $reporter->reporter_date = date('Y-m-d'); $reporter->save(); } else { // reporter already exists $reporter = $reporters[0]; } } if (count(ORM::factory('message')->where('service_messageid', $tweet->{'id'})->find_all()) == 0) { // Save Tweet as Message $message = new Message_Model(); $message->parent_id = 0; $message->incident_id = 0; $message->user_id = 0; if ($reporter) { $message->reporter_id = $reporter->id; } else { $message->reporter_id = 0; } if ($tweet_user) { $message->message_from = $tweet_user->{'screen_name'}; } elseif (array_key_exists('from_user', $tweet)) { // Twitter Search tweets $message->message_from = $tweet->{'from_user'}; } $message->message_to = null; $message->message = $tweet->{'text'}; $message->message_detail = null; $message->message_type = 1; // Inbox $tweet_date = date("Y-m-d H:i:s", strtotime($tweet->{'created_at'})); $message->message_date = $tweet_date; $message->service_messageid = $tweet->{'id'}; $message->save(); } } return true; }