List all the Node ids which do not have images from my domain

September 04, 2017

Problem Statement

I use drupal-7 in my website. I used to write articles and put images in that from google or from free image sources. Initially, I usually put image urls from their website only. i.e. I have img tag on my website, and source of image as external url of image from their website.

Example

``` My website: https://www.gyanbyte.com

Image tags (example image tag):

Now, manytimes, external sources removed their images, and my website/page left with no image, which is not a good impression for my users. This article is to find those articles/blogs which have this issue.

<h2>Code</h2>
```php
/**
 * See if a drupal node has images within my domain or not
 **/
function requireModification($nid) {
  $nd = node_load($nid);

  //read body of node
  $body = $nd->body['und'][0]['value'];

  $doc = new DOMDocument();
  $doc->loadHTML($body);

  //fetch all images in body of node
  $tags = $doc->getElementsByTagName('img');
  $imgArr = array();
  foreach ($tags as $tag) {
      //read src tag, source of image
      $imgSrc = $tag->getAttribute('src');

      //checking if image path is an http path and not in my domain
      if ((strpos($imgSrc, 'http') === 0) && (strpos($imgSrc, 'https://s3.amazonaws.com/images.MYDOMAIN.com') !== 0)) {
            return true;
      }
  }
  return false;
}

//My node type name
$node_type = "article";
$result = db_query("SELECT nid FROM node WHERE type = :nodeType ", array(':nodeType'=>$node_type));

$nids = array();
foreach ($result as $obj) {
  if (requireModification($obj->nid) === true) {
    $nids[] = $obj->nid;
  }
}

//printing node ids, which have images apart from my domain
print_r($nids);

Sample Output

``` ( [0] => 16 [1] => 26 [2] => 2235 [3] => 2236 [4] => 2349 [5] => 2350 [6] => 2351 [7] => 2352 [8] => 2353 [9] => 2354 [10] => 2355 [11] => 2356 [12] => 2357 [13] => 2358 [14] => 2359 [15] => 2360 [16] => 2361 [17] => 2362 [18] => 2363 [19] => 2364 [20] => 2365 ) ```

Drupal version

Drupal 7

See related articles


Similar Posts

Latest Posts