You are here

function tweet_feed_run_import in Tweet Feed 7.3

Same name and namespace in other branches
  1. 7.2 tweet_feed_admin.inc \tweet_feed_run_import()

Run the Import

Handled through the web interface using the batch API

1 string reference to 'tweet_feed_run_import'
tweet_feed_menu in ./tweet_feed.module
Implements hook_menu().

File

./tweet_feed_admin.inc, line 635

Code

function tweet_feed_run_import($fid) {

  // Get all of the tweets to be imported
  $tweets = tweet_feed_pull_data_from_feed($fid, TRUE);

  // Get the feed info for our display
  $feed = tweet_feed_get_feed_object($fid);
  switch ($feed->query_type) {
    case QUERY_SEARCH:
      $query_type = 'Timeline Search';
      $feed_criteria = $feed->search_term;
      break;
    case QUERY_TIMELINE:
      $query_type = 'User Timeline';
      $feed_criteria = $feed->timeline_id;
      break;
    case QUERY_LIST:
      $query_type = 'User List';
      $feed_criteria = $feed->timeline_id . '/' . $feed->list_name;
      break;
    default:
      $query_type = t('Unknown');
      $feed_criteria = t('Unknown');
  }

  // Now that we have the tweets, put them in the queue
  $batch = array(
    'title' => t('Tweet Feed Import Batch: Feed: ' . $query_type . ': ' . $feed_criteria),
    'init_message' => t('Loading tweets...'),
    'operations' => array(),
    'finished' => 'tweet_feed_run_import_finish',
  );
  foreach ($tweets as $key => $tweet) {

    // Initialize our update_node_id
    $update_node_id = 0;
    $hash = NULL;

    // find out if we already have this tweet, if we do, add the update primary key (pk)
    $result = db_select('tweet_hashes', 't')
      ->fields('t', array(
      'nid',
      'tid',
      'hash',
    ))
      ->condition('t.tid', $tweet->id)
      ->execute();
    if ($result
      ->rowCount() > 0) {
      $tdata = $result
        ->fetchObject();
      $hash = md5(serialize($tweet));

      // If our hashes are equal, we have nothing to update and can move along
      if ($hash == $tdata->hash) {
        continue;
      }
      else {
        $update_node_id = $tdata->nid;
      }
    }
    $batch['operations'][] = array(
      'tweet_feed_save_tweet',
      array(
        $tweet,
        $feed,
        $update_node_id,
        $hash,
      ),
    );
  }
  batch_set($batch);
  batch_process('admin/config/services/tweet_feed/feeds');
}