<?php

print "Counting...\n";

function recursiveChildCount($parentId = null)
{
  $criteria = new Criteria;

  if ($parentId === null)
  {
    $criteria->add(QubitInformationObject::PARENT_ID, null, Criteria::ISNULL);
  }
  else
  {
    $criteria->add(QubitInformationObject::PARENT_ID, $parentId);
  }

  $result = QubitInformationObject::get($criteria);

  $count = count($result);
  foreach($result as $io)
  {
    if ($io->id != QubitInformationObject::ROOT_ID)
    {
      $count += recursiveChildCount($io->id);
    }
  }

  return $count;
}

$count = recursiveChildCount();

// Subtract the root information object from the count
print "Counted ". ($count - 1) ." information objects with NULL parents and descendants.\n";