Ejemplo n.º 1
0
/**
 * Helper for the global list and the details of a given class
 */
function DisplayRelatedClassesBestInClass($oPage, $sClass, $iLevels = 20, &$aVisitedClasses = array(), $bSubtree = true, $sContext)
{
    if ($iLevels <= 0) {
        return;
    }
    $iLevels--;
    if (array_key_exists($sClass, $aVisitedClasses)) {
        return;
    }
    $aVisitedClasses[$sClass] = true;
    if ($bSubtree) {
        $oPage->add("<ul class=\"treeview\">\n");
    }
    foreach (MetaModel::EnumParentClasses($sClass) as $sParentClass) {
        DisplayRelatedClassesBestInClass($oPage, $sParentClass, $iLevels, $aVisitedClasses, false, $sContext);
    }
    ////$oPage->add("<div style=\"background-color:#ccc; border: 1px dashed #333;\">");
    foreach (MetaModel::EnumReferencedClasses($sClass) as $sExtKeyAttCode => $sRemoteClass) {
        $sVisited = array_key_exists($sRemoteClass, $aVisitedClasses) ? " ..." : "";
        if (MetaModel::GetAttributeOrigin($sClass, $sExtKeyAttCode) == $sClass) {
            $oPage->add("<li>{$sClass}| <em>{$sExtKeyAttCode}</em> =&gt;" . MakeClassHLink($sRemoteClass, $sContext) . "{$sVisited}</li>\n");
            DisplayRelatedClassesBestInClass($oPage, $sRemoteClass, $iLevels, $aVisitedClasses, true, $sContext);
        }
    }
    foreach (MetaModel::EnumReferencingClasses($sClass) as $sRemoteClass => $aRemoteKeys) {
        foreach ($aRemoteKeys as $sExtKeyAttCode => $oExtKeyAttDef) {
            $sVisited = array_key_exists($sRemoteClass, $aVisitedClasses) ? " ..." : "";
            $oPage->add("<li>{$sClass}| &lt;=" . MakeClassHLink($sRemoteClass, $sContext) . "::<em>{$sExtKeyAttCode}</em>{$sVisited}</li>\n");
            DisplayRelatedClassesBestInClass($oPage, $sRemoteClass, $iLevels, $aVisitedClasses, true, $sContext);
        }
    }
    ////$oPage->add("</div>");
    if ($bSubtree) {
        $oPage->add("</ul>\n");
    }
}
Ejemplo n.º 2
0
 public function GetReferencingObjects($bAllowAllData = false)
 {
     $aDependentObjects = array();
     $aRererencingMe = MetaModel::EnumReferencingClasses(get_class($this));
     foreach ($aRererencingMe as $sRemoteClass => $aExtKeys) {
         foreach ($aExtKeys as $sExtKeyAttCode => $oExtKeyAttDef) {
             // skip if this external key is behind an external field
             if (!$oExtKeyAttDef->IsExternalKey(EXTKEY_ABSOLUTE)) {
                 continue;
             }
             $oSearch = new DBObjectSearch($sRemoteClass);
             $oSearch->AddCondition($sExtKeyAttCode, $this->GetKey(), '=');
             if ($bAllowAllData) {
                 $oSearch->AllowAllData();
             }
             $oSet = new CMDBObjectSet($oSearch);
             if ($oSet->Count() > 0) {
                 $aDependentObjects[$sRemoteClass][$sExtKeyAttCode] = array('attribute' => $oExtKeyAttDef, 'objects' => $oSet);
             }
         }
     }
     return $aDependentObjects;
 }
Ejemplo n.º 3
0
 function test_linksinfo()
 {
     echo "<h4>Enum links</h4>";
     self::DumpVariable(MetaModel::EnumReferencedClasses("cmdbTeam"));
     self::DumpVariable(MetaModel::EnumReferencingClasses("Organization"));
     self::DumpVariable(MetaModel::EnumLinkingClasses());
     self::DumpVariable(MetaModel::EnumLinkingClasses("cmdbContact"));
     self::DumpVariable(MetaModel::EnumLinkingClasses("cmdWorkshop"));
     self::DumpVariable(MetaModel::GetLinkLabel("Liens_entre_contacts_et_workshop", "toworkshop"));
 }