+
+function twitter_cron($a,$b) {
+ $last = get_config('twitter','last_poll');
+
+ $poll_interval = intval(get_config('twitter','poll_interval'));
+ if(! $poll_interval)
+ $poll_interval = TWITTER_DEFAULT_POLL_INTERVAL;
+
+ if($last) {
+ $next = $last + ($poll_interval * 60);
+ if($next > time()) {
+ logger('twitter: poll intervall not reached');
+ return;
+ }
+ }
+ logger('twitter: cron_start');
+
+ $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'twitter' AND `k` = 'mirror_posts' AND `v` = '1' ORDER BY RAND() ");
+ if(count($r)) {
+ foreach($r as $rr) {
+ logger('twitter: fetching for user '.$rr['uid']);
+ twitter_fetchtimeline($a, $rr['uid']);
+ }
+ }
+
+ logger('twitter: cron_end');
+
+ set_config('twitter','last_poll', time());
+}
+
+function twitter_fetchtimeline($a, $uid) {
+ $ckey = get_config('twitter', 'consumerkey');
+ $csecret = get_config('twitter', 'consumersecret');
+ $otoken = get_pconfig($uid, 'twitter', 'oauthtoken');
+ $osecret = get_pconfig($uid, 'twitter', 'oauthsecret');
+ $lastid = get_pconfig($uid, 'twitter', 'lastid');
+
+ $application_name = get_config('twitter', 'application_name');
+
+ if ($application_name == "")
+ $application_name = $a->get_hostname();
+
+ require_once('library/twitteroauth.php');
+ $connection = new TwitterOAuth($ckey,$csecret,$otoken,$osecret);
+
+ $parameters = array("exclude_replies" => true, "trim_user" => true, "contributor_details" => false, "include_rts" => false);
+
+ $first_time = ($lastid == "");
+
+ if ($lastid <> "")
+ $parameters["since_id"] = $lastid;
+
+ $items = $connection->get('statuses/user_timeline', $parameters);
+
+ if (!is_array($items))
+ return;
+
+ $posts = array_reverse($items);
+
+ if (count($posts)) {
+ foreach ($posts as $post) {
+ if ($post->id_str > $lastid)
+ $lastid = $post->id_str;
+
+ if ($first_time)
+ continue;
+
+ if (!strpos($post->source, $application_name)) {
+ $_SESSION["authenticated"] = true;
+ $_SESSION["uid"] = $uid;
+
+ $_REQUEST["type"] = "wall";
+ $_REQUEST["api_source"] = true;
+ $_REQUEST["profile_uid"] = $uid;
+ $_REQUEST["source"] = "Twitter";
+
+ //$_REQUEST["date"] = $post->created_at;
+
+ $_REQUEST["body"] = $post->text;
+ if (is_string($post->place->name))
+ $_REQUEST["location"] = $post->place->name;
+
+ if (is_string($post->place->full_name))
+ $_REQUEST["location"] = $post->place->full_name;
+
+ if (is_array($post->geo->coordinates))
+ $_REQUEST["coord"] = $post->geo->coordinates[0]." ".$post->geo->coordinates[1];
+
+ if (is_array($post->coordinates->coordinates))
+ $_REQUEST["coord"] = $post->coordinates->coordinates[1]." ".$post->coordinates->coordinates[0];
+
+ //print_r($_REQUEST);
+ logger('twitter: posting for user '.$uid);
+
+ require_once('mod/item.php');
+ item_post($a);
+
+ }
+ }
+ }
+ set_pconfig($uid, 'twitter', 'lastid', $lastid);
+}