<?php
/**
* GetParent
* Get the parent object from the current document parent id. If there
* is no parent, it will return empty. This snippet will not fetched the
* parent object multiple times when it's called multiple times in the
* document.
*
* Parameters:
* - $field - Name of the document/template variable to be outputed
* - $formatted - Set it to true to output the TV in formatted output, default false
* - $level - Start from 0 to infinity
*/
if(!isset($field)) return '';
else $field = trim($field);
if(!isset($level) || !is_numeric($level)) $level = 0;
else $level = (int) $level;
if(isset($formatted) && $formatted) $formatted = true;
else $formatted = false;
include_once('assets/libs/docapi/docapi.class.inc.php');
if(isset($modx->parentDocObject[$level]) && is_array($modx->parentDocObject[$level])) {
if(isset($modx->parentDocObject[$level][$field])) return ($formatted) ? $modx->parentDocObject[$level][$field.'_output'] : $modx->parentDocObject[$level][$field];
}
else {
$objectDocAPI = new docAPI();
for($i = 0; $i <= $level; $i++) {
if(!isset($modx->parentDocObject[$i]) || !is_array($modx->parentDocObject[$i])) {
if($i == 0) $parent = $modx->documentObject['parent'];
else $parent = $modx->parentDocObject[$i-1]['parent'];
if($parent > 0) {
$docObject = $objectDocAPI->staticGetDocuments($parent);
if(is_array($docObject) && count($docObject) == 1) {
$modx->parentDocObject[$i] = $docObject[0];
}
}
else $i = $level + 1;
}
}
if(isset($modx->parentDocObject[$level][$field])) return ($formatted) ? $modx->parentDocObject[$level][$field.'_output'] : $modx->parentDocObject[$level][$field];
}
return '';
?>