/**
     * @return array
     */
    public static function selectionList()
    {
        $userSelections = array();

        $selections = MMSelections::fetchUserSelection(null, null, false);

        /* @type $selection MMSelections */
        while ( list(, $selection) = each($selections) )
        {
            $object = eZContentObject::fetchByRemoteID($selection->attribute('remote_id'));
            if ( $object instanceof eZContentObject )
            {
                $node = $object->mainNode();
                /* @type $dataMap eZContentObjectAttribute[] */
                $dataMap = $node->dataMap();

                // Get first promo_image
                $image = false;
                if ( isset($dataMap['promo_image']) && $dataMap['promo_image']->hasContent() )
                {
                    $content = $dataMap['promo_image']->content();
                    $relationList = $content['relation_list'];
                    if ( isset($relationList[0]['node_id']) )
                    {
                        /* @type $imageDataMap eZContentObjectAttribute[] */
                        $imageNode = eZContentObjectTreeNode::fetch($relationList[0]['node_id']);
                        $imageDataMap = $imageNode->dataMap();
                        if ( isset($imageDataMap['file']) && $imageDataMap['file']->hasContent() )
                        {
                            /* @type $imageFileContent eZImageAliasHandler */
                            $imageFileContent = $imageDataMap['file']->content();
                            $imageFileAlias = $imageFileContent->imageAlias('original');
                            $image = $imageFileAlias['url'];
                        }
                    }
                }

                $applicationLocalized = CacheApplicationTool::buildLocalizedApplicationByIdentifier($selection->attribute('application'));
                $applicationObject = $applicationLocalized->applicationObject();

                $userSelections[] = array(
                    'headline'        => $node->getName(),
                    'nodeId'          => $selection->attribute('node_id'),
                    'date'            => date(DATE_ATOM, $selection->attribute('add_date')),
                    'application'     => $applicationObject->attribute('id'),
                    'applicationName' => $applicationLocalized->attribute("name"),
                    'description'     => $selection->attribute('description'),
                    'image'           => '/' . $image,
                    'url'             => NodeOperatorHelper::getUrlNode($selection->attribute('application'), $node)
                );
            }
        }

        return array(
            'selection' => $userSelections,
            'count'     => MMSelections::countTotalFromUserSelection()
        );
    }
    /**
     * @return int
     */
    protected function startCourse()
    {
        $nodeId = ( isset( $_POST['nid'] ) && filter_var($_POST['nid'], FILTER_VALIDATE_INT) ) ? $_POST['nid'] : null;

        if( is_null($nodeId) )
            return null;

        $node = eZContentObjectTreeNode::fetch($nodeId);

        if( !$node )
            return null;

        /* @type $dataMap eZContentObjectAttribute[] */
        $dataMap        = $node->dataMap();
        $description    = '';

        if( $dataMap['promo_description']->hasContent() )
        {
            $description = $dataMap['promo_description']->content();
        }

        $application    = $this->applicationObject()->attribute( 'identifier' );
        $applicationId  = $this->applicationObject()->attribute( 'id' );
        $url            = NodeOperatorHelper::getUrlNode( $application, $node );

        return MMSelections::addToMySelection( $node->object()->remoteID(), ClusterTool::clusterIdentifier(), $description, $url, $applicationId );
    }
 /**
  * @param eZTemplate $tpl
  * @param string $operatorName
  * @param array $operatorParameters
  * @param string $rootNamespace
  * @param string $currentNamespace
  * @param mixed $operatorValue
  * @param array $namedParameters
  */
 function modify($tpl, $operatorName, $operatorParameters, $rootNamespace, $currentNamespace, &$operatorValue, $namedParameters)
 {
     switch ($operatorName)
     {
         case 'getUrlNode':
             $operatorValue = NodeOperatorHelper::getUrlNode(
                 $namedParameters['applicationName'],
                 $namedParameters['node']
             );
             break;
         case 'getMediaContent':
             $operatorValue = NodeOperatorHelper::getMediaContent($namedParameters['node']);
             break;
         case 'getPictosMedia':
             $operatorValue = NodeOperatorHelper::getPictosMedia(
                 $namedParameters['node'],
                 $namedParameters['with_media_duration']
             );
             break;
         case 'getMediaDuration':
             $operatorValue = NodeOperatorHelper::getMediaDuration($namedParameters['media_object_id']);
             break;
         case 'getOverridePath':
             $operatorValue = NodeOperatorHelper::getOverridePath(
                 $namedParameters['node'],
                 $namedParameters['path']
             );
             break;
         case 'getApplicationIdentifierFromNode':
             $operatorValue = NodeOperatorHelper::getApplicationIdentifierFromNode($namedParameters['node']);
             break;
         case 'getPublisherFolder':
             $operatorValue = NodeOperatorHelper::getPublisherFolder(
                 $namedParameters['node'],
                 $namedParameters['application'],
                 $namedParameters['is_solr_data']
             );
             break;
         case 'sortNodesByMainPriority':
             $operatorValue = NodeOperatorHelper::sortNodesByMainPriority($namedParameters['nodes']);
             break;
         case 'hasImageArticle':
             $operatorValue = NodeOperatorHelper::hasImageArticle(
                 $namedParameters['node'],
                 $namedParameters['media_case']
             );
             break;
         case 'getCurrentNodeLanguage':
             $operatorValue = NodeOperatorHelper::getCurrentNodeLanguage($namedParameters['node']);
             break;
         case 'getMediaCount':
             $operatorValue = NodeOperatorHelper::getMediaCount($namedParameters['node']);
             break;
         case 'getPublisherNodeIdFromArticleNode':
             $operatorValue = NodeOperatorHelper::getPublisherNodeIdFromArticleNode(
                 $namedParameters['article_node']
             );
             break;
         case 'getRemoteComuniti':
             $operatorValue = NodeOperatorHelper::getRemoteComuniti(
                 $namedParameters['object_id'],
                 $namedParameters['remote_id']
             );
             break;
         case 'isHierarchyNode':
             $operatorValue = NodeOperatorHelper::isHierarchyNode(
                 $namedParameters['node']
             );
             break;
     }
 }