mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-18 06:48:50 +02:00
Allow browsing developed OQL class tree
This commit is contained in:
@@ -128,6 +128,19 @@ class OQLClassNode
|
||||
return $sOQL;
|
||||
}
|
||||
|
||||
public function Browse(Closure $callback)
|
||||
{
|
||||
$callback($this);
|
||||
foreach ($this->GetJoins() as $aJoins)
|
||||
{
|
||||
/** @var \OQLJoin $oJoin */
|
||||
foreach ($aJoins as $oJoin)
|
||||
{
|
||||
$oJoin->GetOOQLClassNode()->Browse($callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function GetExternalKeys()
|
||||
{
|
||||
return $this->aExtKeys;
|
||||
@@ -318,4 +331,4 @@ class OQLJoin
|
||||
return $this->sRightField;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class OQLClassTreeBuilder
|
||||
* @param \DBObjectSearch $oDBObjetSearch
|
||||
* @param \QueryBuilderContext $oBuild
|
||||
*/
|
||||
public function __construct($oDBObjetSearch, $oBuild)
|
||||
protected function __construct($oDBObjetSearch, $oBuild)
|
||||
{
|
||||
$this->oBuild = $oBuild;
|
||||
$this->oDBObjectSearch = $oDBObjetSearch;
|
||||
@@ -36,6 +36,25 @@ class OQLClassTreeBuilder
|
||||
$this->oOQLClassNode = new OQLClassNode($oBuild, $this->sClass, $this->sClassAlias);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DBObjectSearch $oDBObjetSearch
|
||||
* @param \QueryBuilderContext $oBuild
|
||||
*
|
||||
* @return \OQLClassNode
|
||||
* @throws \CoreException
|
||||
*/
|
||||
public static function GetOQLClassTree($oDBObjetSearch, $oBuild)
|
||||
{
|
||||
$oOQLClassTreeBuilder = new OQLClassTreeBuilder($oDBObjetSearch, $oBuild);
|
||||
$oOQLClassNode = $oOQLClassTreeBuilder->DevelopOQLClassNode();
|
||||
$oOQLClassTreeOptimizer = new OQLClassTreeOptimizer($oOQLClassNode, $oBuild);
|
||||
$oOQLClassTreeOptimizer->OptimizeClassTree();
|
||||
$oOQLActualClassTreeResolver = new OQLActualClassTreeResolver($oOQLClassNode, $oBuild);
|
||||
$oOQLClassNode = $oOQLActualClassTreeResolver->Resolve();
|
||||
|
||||
return $oOQLClassNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Develop OQL.
|
||||
* Add joins from OQL (outgoing and incoming)
|
||||
|
||||
Reference in New Issue
Block a user