advanced search: ShorthandExpansion on conversion To SQL

- plus tests
- plus implementation of ExternalFieldExpression->Render()

SVN:b1312[5760]
This commit is contained in:
Bruno Da Silva
2018-04-27 16:15:08 +00:00
parent d57fb3e24e
commit 59c9a98b87
4 changed files with 223 additions and 27 deletions

View File

@@ -843,13 +843,56 @@ class FalseExpression extends ScalarExpression
class ExternalFieldExpression extends UnaryExpression
{
protected $m_aFieldExpressions = array();
/**
* @var array[] array containing the shorthand chained fields & their classes
* ['sClass'] string the Class
* ['sAlias'] string the Class alias
* ['sAttCode'] string the attribute code
*/
protected $m_aFields = array();
protected $m_sName;
public function __construct($sName, $aExpressions)
public function __construct($sName, $aFields)
{
parent::__construct($sName);
$this->SetFields($aFields);
}
public function SetFields($aFields)
{
$this->m_aFields = $aFields;
}
public function GetFields()
{
return $this->m_aFields;
}
public function Translate($aTranslationData, $bMatchAll = true, $bMarkFieldsAsResolved = true)
{
$aFields = $this->GetFields();
$aLastField = end($aFields);
$oRet = new FieldExpression($aLastField['sAttCode'], $aLastField['sAlias']);
// $oRet->Translate($aTranslationData, $bMatchAll, $bMarkFieldsAsResolved);
return $oRet;
}
public function Render(&$aArgs = null, $bRetrofitParams = false)
{
$aAttCode = array();
$aFields = $this->GetFields();
foreach ($aFields as $field) {
$aAttCode[] = $field['sAttCode'];
}
return $aFields[0]['sAlias'] . '.' . implode('->', $aAttCode);
}
}
class FieldExpression extends UnaryExpression