You are here

linkchecker.redirect.inc in Link checker 7

Same filename and directory in other branches
  1. 8 linkchecker.redirect.inc

Redirect interface to linkchecker functionalities.

File

linkchecker.redirect.inc
View source
<?php

/**
 * @file
 * Redirect interface to linkchecker functionalities.
 */

/**
 * Implements hook_redirect_insert().
 */
function linkchecker_redirect_insert($redirect) {
  linkchecker_redirect_update($redirect);
}

/**
 * Implements hook_redirect_update().
 */
function linkchecker_redirect_update($redirect) {

  // It's unknown if this is a redirect for HTTP/HTTPS or the encoded urls.
  $url_http = url($redirect->source, array(
    'absolute' => TRUE,
    $redirect->source_options,
  ));
  $url_https = url($redirect->source, array(
    'absolute' => TRUE,
    'https' => TRUE,
    $redirect->source_options,
  ));
  $urls = array(
    $url_http,
    $url_https,
    rawurldecode($url_http),
    rawurldecode($url_https),
  );
  _linkchecker_redirect_reset($urls);
}

/**
 * Reset last_checked status.
 *
 * @param array $urls
 *   An array of urls that should be checked on next cron run.
 */
function _linkchecker_redirect_reset($urls = array()) {
  $urls = array_unique($urls);
  $num_updated = db_update('linkchecker_link')
    ->condition('urlhash', array_map('drupal_hash_base64', $urls))
    ->condition('fail_count', 0, '>')
    ->condition('status', 1)
    ->fields(array(
    'last_checked' => 0,
  ))
    ->execute();
  if ($num_updated) {
    drupal_set_message(t('The link %url will be checked again on the next cron run.', array(
      '%url' => $urls[0],
    )));
  }
}

Functions