function instagram_feeds_get_tasks in Instagram Feeds 7
Creates tasks for instagram_feeds_cron() and for batch operations.
Parameters
string $delta: Node nid for creating (if not exist) tasks for this settings. If not set all tasks will be created.
Return value
array An array with jobs.
2 calls to instagram_feeds_get_tasks()
- instagram_feeds_cron in ./
instagram_feeds.module - Implements hook_cron().
- instagram_feeds_import_tab_form_submit in includes/
instagram_feeds.pages.inc - Submit handler for instagram_feeds_import_tab_form().
File
- ./
instagram_feeds.module, line 378
Code
function instagram_feeds_get_tasks($delta = NULL) {
$job = array();
$nids_to_delete = array();
$images_to_delete = array();
$existing = instagram_feeds_get_existing_feeds();
$existing_urls = array_keys($existing);
$must_have = instagram_feeds_get_all_conditions();
$missed_imgs = variable_get('instagram_feeds_missed_imgs', array());
if (is_null($delta)) {
$must_have_urls = array_keys($must_have);
$urls_to_delete = array_diff($existing_urls, $must_have_urls);
}
else {
$must_have_urls = instagram_feeds_urls_from_feed($delta);
$urls_to_delete = array();
}
$urls_to_create = array_diff($must_have_urls, $existing_urls);
if (count($urls_to_delete)) {
foreach ($urls_to_delete as $url_to_delete) {
$nids_to_delete[] = $existing[$url_to_delete]->feed_nid;
}
}
if (is_null($delta)) {
$expiration_time = variable_get('instagram_feeds_items_expiration_time', 2592000);
$limit_imgs_per_feed = variable_get('instagram_feeds_limit_imgs_per_feed', 0);
if ($expiration_time || $limit_imgs_per_feed) {
$feeds_nids = array();
if (count($existing)) {
foreach ($existing as $feed) {
$feeds_nids[] = $feed->feed_nid;
}
}
$images_to_delete = _instagram_feeds_get_images_to_delete($expiration_time, $feeds_nids);
// Delete unnecessary images.
if (count($images_to_delete)) {
$items_to_delete_array = array_chunk($images_to_delete, 50);
foreach ($items_to_delete_array as $items_to_delete_chunk) {
$job[] = array(
'type' => 'delete_items',
'data' => $items_to_delete_chunk,
);
}
}
}
$remove_unused_terms = variable_get('instagram_feeds_remove_unused_terms', min(array(
1,
max($expiration_time, $limit_imgs_per_feed),
)));
if (($expiration_time || $limit_imgs_per_feed) && $remove_unused_terms) {
$terms_to_delete = _instagram_feeds_get_taxonomy_terms_to_delete();
// Delete unnecessary terms.
if (count($terms_to_delete)) {
$items_to_delete_array = array_chunk($terms_to_delete, 50);
foreach ($items_to_delete_array as $items_to_delete_chunk) {
$job[] = array(
'type' => 'delete_taxonomy_terms',
'data' => $items_to_delete_chunk,
);
}
}
}
}
// Try to import missed images again.
if (count($missed_imgs) && is_null($delta)) {
foreach ($missed_imgs as $id => $feed) {
$job[] = array(
'type' => 'import_attempt_images',
'data' => array(
'items' => array_values($feed['items']),
'id' => $id,
),
);
}
}
elseif (!is_null($delta) && isset($missed_imgs[INSTAGRAM_FEEDS_FEED_ID . '__' . $delta]['items'])) {
$job[] = array(
'type' => 'import_attempt_images',
'data' => array(
'items' => array_values($missed_imgs[INSTAGRAM_FEEDS_FEED_ID . '__' . $delta]['items']),
'id' => INSTAGRAM_FEEDS_FEED_ID . '__' . $delta,
),
);
}
// Delete unnecessary Feeds URLs.
if (count($nids_to_delete)) {
$job[] = array(
'type' => 'delete_feeds_urls',
'data' => $nids_to_delete,
);
}
// Create the necessary URLs for importing images from Instagram.
if (count($urls_to_create)) {
foreach ($urls_to_create as $url_to_create) {
$job[] = array(
'type' => 'create_node',
'data' => $must_have[$url_to_create],
);
}
}
// Manage Instagram blocks: delete unnecessary, create new Instagram blocks
// if needed.
$job[] = array(
'type' => 'check_block_deltas',
'data' => $delta,
);
return $job;
}