Skip to content
Snippets Groups Projects
Commit 39c5eaee authored by Guillaume Heurtier's avatar Guillaume Heurtier
Browse files

FEAT #15673 TIME 1:45 added subentities_id keyword

parent 93f6bae4
No related branches found
No related tags found
No related merge requests found
...@@ -242,6 +242,26 @@ abstract class EntityModelAbstract ...@@ -242,6 +242,26 @@ abstract class EntityModelAbstract
return $entities; return $entities;
} }
public static function getEntityChildrenById(array $args)
{
ValidatorModel::notEmpty($args, ['id']);
ValidatorModel::intVal($args, ['id']);
$aReturn = DatabaseModel::select([
'select' => ['id'],
'table' => ['entities'],
'where' => ['parent_entity_id in (select entity_id from entities where id = ?)'],
'data' => [$args['id']]
]);
$entities = [$args['id']];
foreach ($aReturn as $value) {
$entities = array_merge($entities, EntityModel::getEntityChildrenById(['id' => $value['id']]));
}
return $entities;
}
public static function getEntityChildrenSubLevel(array $aArgs) public static function getEntityChildrenSubLevel(array $aArgs)
{ {
ValidatorModel::notEmpty($aArgs, ['entitiesId']); ValidatorModel::notEmpty($aArgs, ['entitiesId']);
......
...@@ -118,6 +118,41 @@ class PreparedClauseController ...@@ -118,6 +118,41 @@ class PreparedClauseController
$clause = str_replace("@all_entities", $allEntitiesClause, $clause); $clause = str_replace("@all_entities", $allEntitiesClause, $clause);
} }
$total = preg_match_all("|@subentities_id\[([^\]]*)\]|", $clause, $subEntities, PREG_PATTERN_ORDER);
if ($total > 0) {
for ($i = 0; $i < $total; $i++) {
$aEntities = [];
$tmpSubEntities = str_replace("'", '', $subEntities[1][$i]);
if (preg_match('/,/', $tmpSubEntities)) {
$aEntities = preg_split('/,/', $tmpSubEntities);
} else {
$aEntities[] = $tmpSubEntities;
}
$allSubEntities = [];
foreach ($aEntities as $entity) {
if (!empty($entity)) {
$subEntitiesForEntity = EntityModel::getEntityChildrenById(['id' => trim($entity)]);
unset($subEntitiesForEntity[0]);
$allSubEntities = array_merge($allSubEntities, $subEntitiesForEntity);
}
}
$allSubEntitiesClause = '';
foreach ($allSubEntities as $key => $allSubEntity) {
if ($key > 0) {
$allSubEntitiesClause .= ", ";
}
$allSubEntitiesClause .= "'{$allSubEntity}'";
}
if (empty($allSubEntitiesClause)) {
$allSubEntitiesClause = "''";
}
$clause = preg_replace("|@subentities_id\[[^\]]*\]|", $allSubEntitiesClause, $clause, 1);
}
}
$total = preg_match_all("|@subentities\[('[^\]]*')\]|", $clause, $subEntities, PREG_PATTERN_ORDER); $total = preg_match_all("|@subentities\[('[^\]]*')\]|", $clause, $subEntities, PREG_PATTERN_ORDER);
if ($total > 0) { if ($total > 0) {
for ($i = 0; $i < $total; $i++) { for ($i = 0; $i < $total; $i++) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment