You are here

function pm_get_parent in Drupal PM (Project Management) 8

Same name and namespace in other branches
  1. 7.3 pm.module \pm_get_parent()
  2. 7.2 pm.module \pm_get_parent()

Helper function to return nid of particular bundle in hierarchy.

Parameters

object $node: The node whose parent's should be hunted for.

string $type: The parent node type that is being hunted for.

int $iteration: Number of maximum iterations to try for.

Return value

int Node id of the required parent.

File

./pm.module, line 690
Main module file for the Project Management module.

Code

function pm_get_parent($node, $type = 'pmorganization', $iteration = 10) {
  try {
    $wrapper = entity_metadata_wrapper('node', $node);
    while ($iteration) {
      $iteration--;
      $bundle = $wrapper
        ->getBundle();
      if ($bundle == $type) {
        return $wrapper
          ->getIdentifier();
      }
      if ($wrapper
        ->__isset($bundle . '_parent')) {
        $parent_field = $bundle . '_parent';
      }
      elseif ($wrapper
        ->__isset('field_' . $bundle . '_parent')) {
        $parent_field = 'field_' . $bundle . '_parent';
      }
      else {
        return FALSE;
      }
      $wrapper = $wrapper->{$parent_field};
    }
  } catch (EntityMetadataWrapperException $exc) {
    watchdog('pm', 'See ' . __FUNCTION__ . '() <pre>' . $exc
      ->getTraceAsString() . '</pre>', NULL, WATCHDOG_ERROR);
  }
}