You are here

function _instagram_feeds_get_images_to_delete in Instagram Feeds 7

Helper function to get all images nids that must be deleted.

Return images nids that must be deleted when instagram feeds cron will be run.

Parameters

string $expiration_time: unix time. Number of seconds (1 month by default)

array $feeds_nids: an array of feeds_nids for wich needs to remove old images.

Return value

array() an array of term tids.

1 call to _instagram_feeds_get_images_to_delete()
instagram_feeds_get_tasks in ./instagram_feeds.module
Creates tasks for instagram_feeds_cron() and for batch operations.

File

./instagram_feeds.module, line 1319

Code

function _instagram_feeds_get_images_to_delete($expiration_time = 2592000, $feeds_nids = array()) {
  $result = array();
  $limit_imgs_per_feed = variable_get('instagram_feeds_limit_imgs_per_feed', 0);
  if (!is_array($feeds_nids)) {
    $feeds_nids = array(
      $feeds_nids,
    );
  }
  if ($expiration_time) {
    $result = db_select('node', 'n')
      ->fields('n', array(
      'nid',
    ))
      ->condition('n.type', INSTAGRAM_FEEDS_IMAGE_NODE_TYPE)
      ->condition('created', time() - $expiration_time, '<=')
      ->range(0, 500)
      ->execute()
      ->fetchCol();
  }
  if ($limit_imgs_per_feed && count($feeds_nids)) {
    $source = feeds_source(INSTAGRAM_FEEDS_FEED_ID);
    $config = $source->importer
      ->getConfig();
    if (isset($config['fetcher']['config']['number_of_images']) && $config['fetcher']['config']['number_of_images']) {
      $select_limit = (int) $config['fetcher']['config']['number_of_images'] * 2;
    }
    else {
      $select_limit = 50;
    }
    foreach ($feeds_nids as $feed_nid) {
      $query = db_select('feeds_item', 'fi');
      $query
        ->innerJoin('node', 'n', 'fi.entity_id = n.nid AND fi.entity_type = :type', array(
        ':type' => 'node',
      ));
      $query
        ->innerJoin('field_data_field_instf_created', 'd', 'fi.entity_id = d.entity_id AND d.entity_type = :type AND d.bundle = :bundle', array(
        ':type' => 'node',
        ':bundle' => INSTAGRAM_FEEDS_IMAGE_NODE_TYPE,
      ));
      $query
        ->addField('n', 'nid', 'nid');
      $query
        ->condition('n.sticky', NODE_NOT_STICKY);
      $query
        ->condition('fi.feed_nid', $feed_nid);
      $query
        ->orderBy('d.field_instf_created_value', 'DESC');
      $query
        ->range($limit_imgs_per_feed, $select_limit);
      $result = array_merge($result, $query
        ->execute()
        ->fetchCol());
    }
  }
  return array_unique($result);
}