Files
Phraseanet/www/prod/prodFeedBack.php
Nicolas Le Goff 8a9e965a3d add twig service
2012-01-06 16:30:12 +01:00

358 lines
11 KiB
PHP

<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2010 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
*
* @package
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com
*/
$Core = require_once __DIR__ . "/../../lib/bootstrap.php";
$appbox = appbox::get_instance();
$session = $appbox->get_session();
$registry = $appbox->get_registry();
$usr_id = $session->get_usr_id();
$user = User_Adapter::getInstance($usr_id, $appbox);
$output = '';
$request = http_request::getInstance();
$parm = $request->get_parms('action');
$action = $parm['action'];
switch ($action)
{
case 'search':
$session->close_storage();
$session->close_storage();
$engine = new searchEngine_adapter_sphinx_engine();
$parm = $request->get_parms("bas", "term"
, "stemme"
, "search_type", "recordtype", "status", "fields", "datemin", "datemax", "datefield");
$options = new searchEngine_options();
$options->set_bases($parm['bas'], $user->ACL());
if (!is_array($parm['fields']))
$parm['fields'] = array();
$options->set_fields($parm['fields']);
if (!is_array($parm['status']))
$parm['status'] = array();
$options->set_status($parm['status']);
$options->set_search_type($parm['search_type']);
$options->set_record_type($parm['recordtype']);
$options->set_min_date($parm['datemin']);
$options->set_max_date($parm['datemax']);
$options->set_date_fields(explode('|', $parm['datefield']));
$options->set_use_stemming($parm['stemme']);
$engine->set_options($options);
$result = $engine->results($parm['term'], 0, 1);
$res = $engine->get_suggestions($session, true);
// $res = array(array('id'=>'oui','label'=>'oui','value'=>'oui'));
$output = p4string::jsonencode($res);
break;
case 'LANGUAGE':
$session->close_storage();
require ($registry->get('GV_RootPath') . 'lib/classes/deprecated/prodUtils.php');
$module_prod = new module_prod();
$output = $module_prod->getLanguage();
break;
case 'CSS':
require ($registry->get('GV_RootPath') . 'lib/classes/deprecated/prodUtils.php');
$parm = $request->get_parms('color');
$output = $user->setPrefs('css', $color);
break;
case 'MYRSS':
require ($registry->get('GV_RootPath') . 'lib/classes/deprecated/prodUtils.php');
$parm = $request->get_parms('renew');
$url = $user->get_protected_rss_url(($parm['renew'] === 'true'))->get_url();
$output = p4string::jsonencode(
array(
'texte' => '<p>' . _('publication::Voici votre fil RSS personnel. Il vous permettra d\'etre tenu au courrant des publications.')
. '</p><p>' . _('publications::Ne le partagez pas, il est strictement confidentiel') . '</p>
<div><input type="text" style="width:100%" value="' . $url . '"/></div>',
'titre' => _('publications::votre rss personnel')
)
);
break;
case 'SAVEPREF':
$parm = $request->get_parms('prop', 'value');
$ret = $user->setPrefs($parm['prop'], $parm['value']);
if (isset($ret[$parm['prop']]) && $ret[$parm['prop']] = $parm['value'])
$output = "1";
else
$output = "0";
break;
case 'SAVETEMPPREF':
$parm = $request->get_parms('prop', 'value');
$session->set_session_prefs($parm['prop'], $parm['value']);
$output = 1;
break;
case 'DELETE':
require ($registry->get('GV_RootPath') . 'lib/classes/deprecated/prodUtils.php');
$parm = $request->get_parms('lst');
$output = whatCanIDelete($parm['lst']);
break;
case 'DODELETE':
require ($registry->get('GV_RootPath') . 'lib/classes/deprecated/prodUtils.php');
$parm = $request->get_parms('lst', 'del_children');
$output = deleteRecord($parm['lst'], $parm['del_children']);
break;
case 'MAIL_REQ':
$parm = $request->get_parms('user', 'contrib', 'message', 'query');
$output = query_phrasea::mail_request($parm['user'], $parm['contrib'], $parm['message'], $parm['query']);
break;
case 'DENY_CGU':
$parm = $request->get_parms('sbas_id');
$output = databox_cgu::denyCgus($parm['sbas_id']);
break;
case 'READ_NOTIFICATIONS':
try
{
$evt_mngr = eventsmanager_broker::getInstance($appbox, $Core);
$parm = $request->get_parms('notifications');
$output = $evt_mngr->read(explode('_', $parm['notifications']), $session->get_usr_id());
$output = p4string::jsonencode(array('error' => false, 'message' => ''));
}
catch (Exception $e)
{
$output = p4string::jsonencode(array('error' => true, 'message' => $e->getMessage()));
}
break;
case 'NOTIFICATIONS_FULL':
$evt_mngr = eventsmanager_broker::getInstance($appbox, $Core);
$parm = $request->get_parms('page');
$output = $evt_mngr->get_json_notifications($parm['page']);
break;
case 'VIDEOTOKEN':
$parm = $request->get_parms('sbas_id', 'record_id');
$sbas_id = (int) $parm['sbas_id'];
$record = new record_adapter($sbas_id, $parm['record_id']);
$output = p4string::jsonencode(array('url' => $record->get_preview()->renew_url()));
break;
case 'ANSWERTRAIN':
$parm = $request->get_parms('pos', 'record_id', 'options_serial', 'query');
$search_engine = null;
if (($options = unserialize($parm['options_serial'])) !== false)
{
$search_engine = new searchEngine_adapter($registry);
$search_engine->set_options($options);
}
$record = new record_preview('RESULT', $parm['pos'], '', '', $search_engine, $parm['query']);
$records = $record->get_train($parm['pos'], $parm['query'], $search_engine);
$core = \bootstrap::getCore();
$twig = $core->getTwig();
$output = p4string::jsonencode(
array('current' =>
$twig->render(
'prod/preview/result_train.html', array(
'records' => $records
, 'selected' => $parm['pos'])
)
)
);
break;
case 'REGTRAIN':
$parm = $request->get_parms('cont', 'pos');
$record = new record_preview('REG', $parm['pos'], $parm['cont']);
$output = $twig->render('prod/preview/reg_train.html', array('container_records' => $record->get_container()->get_children(),
'record' => $record, 'GV_rollover_reg_preview' => $registry->get('GV_rollover_reg_preview')));
break;
case 'GET_ORDERMANAGER':
try
{
$parm = $request->get_parms('sort', 'page');
$orders = new set_ordermanager($parm['sort'], $parm['page']);
$core = \bootstrap::getCore();
$twig = $core->getTwig();
$render = $twig->render('prod/orders/order_box.twig', array('ordermanager' => $orders));
$ret = array('error' => false, 'datas' => $render);
}
catch (Exception $e)
{
$ret = array('error' => true, 'datas' => $e->getMessage());
}
$output = p4string::jsonencode($ret);
break;
case 'GET_ORDER':
try
{
$parm = $request->get_parms('order_id');
$order = new set_order($parm['order_id']);
$core = \bootstrap::getCore();
$twig = $core->getTwig();
$render = $twig->render('prod/orders/order_item.twig', array('order' => $order));
$ret = array('error' => false, 'datas' => $render);
}
catch (Exception $e)
{
$ret = array('error' => true, 'datas' => $e->getMessage());
}
$output = p4string::jsonencode($ret);
break;
case 'SEND_ORDER':
try
{
$parm = $request->get_parms('order_id', 'elements', 'force');
$order = new set_order($parm['order_id']);
$order->send_elements($parm['elements'], $parm['force']);
$ret = array('error' => false, 'datas' => '');
}
catch (Exception $e)
{
$ret = array('error' => true, 'datas' => $e->getMessage());
}
$output = p4string::jsonencode($ret);
break;
case 'DENY_ORDER':
try
{
$parm = $request->get_parms('order_id', 'elements');
$order = new set_order($parm['order_id']);
$order->deny_elements($parm['elements']);
$ret = array('error' => false, 'datas' => '');
}
catch (Exception $e)
{
$ret = array('error' => true, 'datas' => $e->getMessage());
}
$output = p4string::jsonencode($ret);
break;
case "ORDER":
$parm = $request->get_parms('lst', 'ssttid', 'use', 'deadline');
$order = new set_exportorder($parm['lst'], $parm['ssttid']);
if ($order->order_available_elements($session->get_usr_id(), $parm['use'], $parm['deadline']))
{
$ret = array('error' => false, 'message' => _('les enregistrements ont ete correctement commandes'));
}
else
{
$ret = array('error' => true, 'message' => _('Erreur lors de la commande des enregistrements'));
}
$output = p4string::jsonencode($ret);
break;
case "FTP_EXPORT":
$request = http_request::getInstance();
$parm = $request->get_parms(
"addr" // addr du srv ftp
, "login" // login ftp
, "pwd" // pwd ftp
, "passif" // mode passif ou non
, "nbretry" // nb retry
, "ssl" // nb retry
, "obj" // les types d'obj a exporter
, "destfolder"// le folder de destination
, "usr_dest" // le mail dudestinataire ftp
, "lst" // la liste des objets
, "ssttid"
, "sendermail"
, "namecaract"
, "NAMMKDFOLD"
, "logfile"
);
$download = new set_exportftp($parm['lst'], $parm['ssttid']);
if (count($download->get_display_ftp()) == 0)
{
$output = p4string::jsonencode(array('error' => true, 'message' => _('Les documents ne peuvent etre envoyes par FTP')));
}
else
{
try
{
$download->prepare_export($parm['obj']);
$download->export_ftp($parm['usr_dest'], $parm['addr'], $parm['login'], $parm['pwd'], $parm['ssl'], $parm['nbretry'], $parm['passif'], $parm['destfolder'], $parm['NAMMKDFOLD'], $parm['logfile']);
$output = p4string::jsonencode(array('error' => false, 'message' => _('Export enregistre dans la file dattente')));
}
catch (Exception $e)
{
$output = p4string::jsonencode(array('error' => true, 'message' => $e->getMessage()));
}
}
break;
case "FTP_TEST":
$request = http_request::getInstance();
$parm = $request->get_parms(
"addr" // addr du srv ftp
, "login" // login ftp
, "pwd" // pwd ftp
, "ssl" // nb retry
);
$ssl = $parm['ssl'] == '1';
try
{
$ftp_client = new ftpclient($parm['addr'], 21, 90, $ssl = false);
$ftp_client->login($parm['login'], $parm['pwd']);
$ftp_client->close();
$output = _('Connection au FTP avec succes');
}
catch (Exception $e)
{
$output = sprintf(_('Erreur lors de la connection au FTP : %s'), $e->getMessage());
}
break;
}
echo $output;