/** * Display instance questions report * * @param Application $app * @param Request $request * @return JsonResponse */ public function doReportQuestions(Application $app, Request $request) { $questions = new \module_report_question($app, $request->request->get('dmin'), $request->request->get('dmax'), $request->request->get('sbasid'), $request->request->get('collection')); $conf = ['user' => [$app->trans('report:: utilisateur'), 1, 1, 1, 1], 'search' => [$app->trans('report:: question'), 1, 0, 1, 1], 'ddate' => [$app->trans('report:: date'), 1, 0, 1, 1], 'fonction' => [$app->trans('report:: fonction'), 1, 1, 1, 1], 'activite' => [$app->trans('report:: activite'), 1, 1, 1, 1], 'pays' => [$app->trans('report:: pays'), 1, 1, 1, 1], 'societe' => [$app->trans('report:: societe'), 1, 1, 1, 1]]; if ($request->request->get('printcsv') == 'on') { $questions->setHasLimit(false); $questions->setPrettyString(false); $this->doReport($app, $request, $questions, $conf); return $this->getCSVResponse($app, $questions, 'questions'); } $report = $this->doReport($app, $request, $questions, $conf); if ($report instanceof Response) { return $report; } return $app->json(['rs' => $app['twig']->render('report/ajax_data_content.html.twig', ['result' => isset($report['report']) ? $report['report'] : $report, 'is_infouser' => false, 'is_nav' => false, 'is_groupby' => false, 'is_plot' => false, 'is_doc' => false]), 'display_nav' => $report['display_nav'], 'next' => $report['next_page'], 'prev' => $report['previous_page'], 'page' => $report['page'], 'filter' => sizeof($report['filter']) > 0 ? serialize($report['filter']) : '', 'col' => $report['active_column'], 'limit' => $report['nb_record']]); }
/** * Display information about a user * * @param Request $request * @return JsonResponse */ public function doReportInformationUser(Request $request) { $conf = ['config' => ['photo' => [$this->app->trans('report:: document'), 0, 0, 0, 0], 'record_id' => [$this->app->trans('report:: record id'), 0, 0, 0, 0], 'date' => [$this->app->trans('report:: date'), 0, 0, 0, 0], 'type' => [$this->app->trans('phrseanet:: sous definition'), 0, 0, 0, 0], 'titre' => [$this->app->trans('report:: titre'), 0, 0, 0, 0], 'taille' => [$this->app->trans('report:: poids'), 0, 0, 0, 0]], 'conf' => ['identifiant' => [$this->app->trans('report:: identifiant'), 0, 0, 0, 0], 'nom' => [$this->app->trans('report:: nom'), 0, 0, 0, 0], 'mail' => [$this->app->trans('report:: email'), 0, 0, 0, 0], 'adresse' => [$this->app->trans('report:: adresse'), 0, 0, 0, 0], 'tel' => [$this->app->trans('report:: telephone'), 0, 0, 0, 0]], 'config_cnx' => ['ddate' => [$this->app->trans('report:: date'), 0, 0, 0, 0], 'appli' => [$this->app->trans('report:: modules'), 0, 0, 0, 0]], 'config_dl' => ['ddate' => [$this->app->trans('report:: date'), 0, 0, 0, 0], 'record_id' => [$this->app->trans('report:: record id'), 0, 1, 0, 0], 'final' => [$this->app->trans('phrseanet:: sous definition'), 0, 0, 0, 0], 'coll_id' => [$this->app->trans('report:: collections'), 0, 0, 0, 0], 'comment' => [$this->app->trans('report:: commentaire'), 0, 0, 0, 0]], 'config_ask' => ['search' => [$this->app->trans('report:: question'), 0, 0, 0, 0], 'ddate' => [$this->app->trans('report:: date'), 0, 0, 0, 0]]]; $report = null; $html = $html_info = ''; $from = $request->request->get('from', ''); $on = $request->request->get('on', ''); $selectValue = $request->request->get('user', ''); if ('' === $selectValue) { $this->app->abort(400); } if ('' !== $on && $this->getConf()->get(['registry', 'modules', 'anonymous-report']) == true) { $conf['conf'] = [$on => [$on, 0, 0, 0, 0], 'nb' => [$this->app->trans('report:: nombre'), 0, 0, 0, 0]]; } if ($from == 'CNXU' || $from == 'CNX') { $report = new \module_report_connexion($this->app, $request->request->get('dmin'), $request->request->get('dmax'), $request->request->get('sbasid'), $request->request->get('collection')); $conf_array = $conf['config_cnx']; $title = $this->app->trans('report:: historique des connexions'); } elseif ($from == 'USR' || $from == 'GEN') { $report = new \module_report_download($this->app, $request->request->get('dmin'), $request->request->get('dmax'), $request->request->get('sbasid'), $request->request->get('collection')); $conf_array = $conf['config_dl']; $title = $this->app->trans('report:: historique des telechargements'); } elseif ($from == 'ASK') { $report = new \module_report_question($this->app, $request->request->get('dmin'), $request->request->get('dmax'), $request->request->get('sbasid'), $request->request->get('collection')); $conf_array = $conf['config_ask']; $title = $this->app->trans('report:: historique des questions'); } if ($report) { $mapColumnTitleToSqlField = $report->getTransQueryString(); $currentfilter = []; if ('' !== ($serializedFilter = $request->request->get('liste_filter', ''))) { $currentfilter = @unserialize(urldecode($serializedFilter)); } $filter = new \module_report_filter($this->app, $currentfilter, $mapColumnTitleToSqlField); if ('' !== ($filterColumn = $request->request->get('filter_column', ''))) { $field = current(explode(' ', $filterColumn)); $value = $request->request->get('filter_value', ''); if ($request->request->get('liste') == 'on') { return $this->app->json(['diag' => $this->render('report/colFilter.html.twig', ['result' => $report->colFilter($field), 'field' => $field]), 'title' => $this->app->trans('filtrer les resultats sur la colonne %colonne%', ['%colonne%' => $field])]); } if ($field === $value) { $filter->removeFilter($field); } else { $filter->addFilter($field, '=', $value); } } if ('' !== $selectValue && '' !== $from) { $filter->addfilter('usrid', '=', $selectValue); } elseif ('' !== $on && '' !== $selectValue) { $filter->addfilter($on, '=', $selectValue); } if ($report instanceof \module_report_download) { $report->setIsInformative(true); } $report->setFilter($filter->getTabFilter()); $report->setOrder('ddate', 'DESC'); $report->setConfig(false); $report->setTitle($title); $report->setHasLimit(false); $reportArray = $report->buildReport($conf_array); if ($request->request->get('printcsv') == 'on') { $report->setPrettyString(false); return $this->getCSVResponse($report, 'info_user'); } $html = $this->render('report/ajax_data_content.html.twig', ['result' => isset($reportArray['report']) ? $reportArray['report'] : $reportArray, 'is_infouser' => $report instanceof \module_report_download, 'is_nav' => false, 'is_groupby' => false, 'is_plot' => false, 'is_doc' => false]); } $info = new \module_report_nav($this->app, $request->request->get('dmin'), $request->request->get('dmax'), $request->request->get('sbasid'), $request->request->get('collection')); $info->setPeriode(''); $info->setCsv(false); $infoArray = $info->buildTabGrpInfo(null !== $report ? $report->getReq() : '', null !== $report ? $report->getParams() : [], $selectValue, $conf['conf'], $on); if (false == $this->app['conf']->get(['registry', 'modules', 'anonymous-report'])) { $html_info = $this->render('report/ajax_data_content.html.twig', ['result' => isset($infoArray['report']) ? $infoArray['report'] : $infoArray, 'is_infouser' => false, 'is_nav' => false, 'is_groupby' => false, 'is_plot' => false, 'is_doc' => false]); $title = '' === $on && isset($infoArray['result']) ? $infoArray['result'][0]['identifiant'] : $selectValue; } else { $title = $selectValue; } return $this->app->json(['rs' => sprintf('%s%s', $html_info, $html), 'display_nav' => false, 'title' => $title]); }