Skip to content

Commit

Permalink
🍗 Simple EEL-Helper to filter nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
darmstaedter committed Aug 1, 2017
1 parent 29a5c2d commit f2aae75
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 0 deletions.
69 changes: 69 additions & 0 deletions Classes/Fusion/Helper/FilterNodesByReferenceHelper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?php

namespace ZuTeilen\NeosHelper\Fusion\Helper;

use Neos\Eel\ProtectedContextAwareInterface;
use Neos\ContentRepository\Domain\Model\NodeInterface;

class FilterNodesByReferenceHelper implements ProtectedContextAwareInterface
{

/**
* @param Array|NodeInterface $nodes
* @param Array|NodeInterface $filterReferences
* @param String $referenceProperty
* @return string
*/
public function filterNodes($nodes, $filterReferences, $referenceProperty)
{
$filters = array();
$filteredNodes = array();

foreach ($filterReferences as $filter)
{
array_push($filters, $filter->getIdentifier());
}

foreach ($nodes as $node) {
if ($this->isNodeConnectedToReference($node, $filters, $referenceProperty))
{
array_push($filteredNodes, $node);
}

}
return $filteredNodes;
}

/**
* @param $node
* @param $filters
* @return bool
*/
public function isNodeConnectedToReference($node, $filters, $referenceProperty)
{
$nodeReferences = $node->getProperty($referenceProperty);
if (!is_null($nodeReferences)) {
foreach ($nodeReferences as $nodeReference)
{
if (in_array($nodeReference->getIdentifier(), $filters))
{
return true;
}
}
}
return false;
}


/**
* All methods are considered safe, i.e. can be executed from within Eel
*
* @param string $methodName
* @return boolean
*/
public function allowsCallOfMethod($methodName)
{
return TRUE;
}

}
4 changes: 4 additions & 0 deletions Configuration/Settings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Neos:
Fusion:
defaultContext:
'ZuTeilen.NeosHelper': 'ZuTeilen\NeosHelper\Fusion\Helper\FilterNodesByReferenceHelper'
18 changes: 18 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"description": "",
"type": "neos-package",
"name": "zuteilen/neoshelper",
"require": {
"neos/flow": "*"
},
"autoload": {
"psr-4": {
"ZuTeilen\\NeosHelper\\": "Classes/"
}
},
"extra": {
"neos": {
"package-key": "ZuTeilen.NeosHelper"
}
}
}

0 comments on commit f2aae75

Please sign in to comment.