/**
  * Ritorna l'elenco degli oggetti da caricare
  * @return array
  */
 public function loadDataSource()
 {
     echo 'ITTematicaSyncController - loadDataSource - Enter' . PHP_EOL;
     $_data = array();
     // Lettura di ocrepository.ini
     $ini = eZINI::instance('ocrepository.ini');
     // Elenco dei repository con sync abilitato
     $availableRepositories = $ini->variable('Client', 'AvailableRepositories');
     // Numero di giorni da caricare (Default: 1)
     $days = '1';
     if ($this->options->hasAttribute('Days')) {
         $days = $this->options->attribute('Days');
     }
     // Verifica presenza nodo destinazione e tematiche selezionate
     foreach ($availableRepositories as $repository) {
         $client = 'Client_' . $repository;
         $url = $ini->variable($client, 'Url');
         $tematicaSync = $ini->variable($client, 'TematicaSync');
         if ($tematicaSync == 'true') {
             $itTematicaSync = new ITTematicaSync($repository);
             $nodeID = $itTematicaSync->getDefaultDestinationNodeID();
             if (isset($nodeID)) {
                 $_tags = $itTematicaSync->getTematiche();
                 $tags = implode($_tags, '|');
                 // Chiamata remota con elenco remoteid ( /itobjectsync/tematichequery/$repository/$tags/$days )
                 $remote_call = $url . '/itobjectsync/tematichequery/' . $repository . '/' . urlencode($tags) . '/' . $days;
                 echo 'Remote call: ' . $remote_call . PHP_EOL;
                 $remote_obj_json = file_get_contents($remote_call);
                 $remote_obj = json_decode($remote_obj_json, true);
                 $remote_data = array();
                 foreach ($remote_obj as $obj) {
                     $remote_data[] = array('base_url' => $url, 'parent_node_id' => $nodeID, 'remote_node_id' => $obj);
                 }
                 $_data = array_merge($_data, $remote_data);
             }
         }
     }
     return $_data;
 }
<?php

$module = $Params['Module'];
$http = eZHTTPTool::instance();
$tpl = eZTemplate::factory();
$repository = $Params['repository'];
try {
    $itTematicaSync = new ITTematicaSync($repository);
    $remoteTags = $itTematicaSync->fetchRemoteTags();
    // Tematiche dal sito remoto
    if ($http->hasPostVariable('SelezionaDestinazione')) {
        eZContentBrowse::browse(array('action_name' => 'SelectDestinationNodeID', 'selection' => 'single', 'return_type' => 'NodeID', 'start_node' => 2, 'from_page' => '/itobjectsync/client/' . $repository, 'cancel_page' => '/itobjectsync/client/' . $repository), $module);
        return;
    }
    $itTematicaSync->modifySelection($http);
    // Eventuali modifiche alla selezione
    // Variabili passate al template
    $tpl->setVariable('remote_tags', $remoteTags);
    $tpl->setVariable('repository_url', $itTematicaSync->getRepositoryUrl());
    $tpl->setVariable('default_dest_node_id', $itTematicaSync->getDefaultDestinationNodeID());
    $tpl->setVariable('tematiche', $itTematicaSync->getTematiche());
} catch (Exception $ex) {
    $tpl->setVariable('exception', $ex->getMessage());
}
$Result['content'] = $tpl->fetch("design:itobjectsync/client.tpl");
$Result['path'] = array(array('url' => 'content/dashboard', 'text' => 'Pannello strumenti'), array('url' => false, 'text' => 'Import automatico Tematica'));