Example #1
0
 /**
  * Statically callable method to determine if given object has children
  *
  * @param midgard_object &$object object to get children for
  * @param boolean $deleted whether to count (only) deleted or not-deleted objects
  * @return array multidimensional array (keyed by classname) of objects or false on failure
  */
 function has_child_objects(&$object, $deleted = false)
 {
     // PONDER: Check for some generic user privilege instead  ??
     if ($deleted && !midcom_connection::is_admin()) {
         debug_add('Non-admins are not allowed to list deleted objects', MIDCOM_LOG_ERROR);
         return false;
     }
     $resolver = new midcom_helper_reflector_tree($object);
     $child_classes = $resolver->get_child_classes();
     if (!$child_classes) {
         debug_add('resolver returned false (critical failure) from get_child_classes()', MIDCOM_LOG_ERROR);
         return false;
     }
     foreach ($child_classes as $schema_type) {
         $qb = $resolver->_child_objects_type_qb($schema_type, $object, $deleted);
         if (!$qb) {
             debug_add('resolver returned false (critical failure) from _child_objects_type_qb()', MIDCOM_LOG_ERROR);
             return false;
         }
         $qb->set_limit(1);
         if ($qb->count()) {
             unset($child_classes, $schema_type, $qb, $resolver);
             return true;
         }
     }
     unset($child_classes, $schema_type, $qb, $resolver);
     return false;
 }