Commit 98391d8b authored by Gerald Salin's avatar Gerald Salin
Browse files

Merge branch 'typo3v10' into 'master'

Typo3v10

See merge request !129
parents 1b546e00 fa066cfc
<?php
namespace ng6\Controller;
/***************************************************************
* Copyright notice
*
* (c) 2009 PF bioinformatique de Toulouse <>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Plugin 'nG6' for the 'nG6' extension.
*
* @author PF bioinformatique de Toulouse <>
*/
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/lib/class.tx_nG6_utils.php');
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/lib/class.tx_nG6_db.php');
use TYPO3\CMS\Core\Context\Context;
class tx_nG6_pi6_purge {
static function send_purge_demand_mail($project_ids, $extension_allowed = 1){
$context = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(Context::class);
$user_id = $context->getPropertyFromAspect('frontend.user', 'id');
$project_name="";
$configurationManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Configuration\\BackendConfigurationManager');
//$configurationManager->currentPageId = 1;
$extbaseFrameworkConfiguration = $configurationManager->getTypoScriptSetup();
$email_to_discard = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["email_to_discard"];
$run_link_url = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["run_link_url"];
$min_extension_duration = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["min_extension_duration"];
$delay_purge = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["delay_purge"];
$min_extension_size = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["min_extension_size"];
$extension_url_price = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["extension_url_price"];
$email_from = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["email_from"];
$email_copy = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["email_copy"];
$envelope_sender_address = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["envelope_sender_address"];
$email_warning= $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["email_warning"];
foreach(explode(",", $project_ids) as $project_id){
#retrieve project data
$p=tx_nG6_db::select_a_project_retention_data_info($project_id, FALSE, TRUE);
#retrieve discarded emails
$string_emails_to_discard = $email_to_discard ;
$array_emails_to_discard = explode(',',$string_emails_to_discard);
#build email list of managers
$users_id=array();
$users_emails = array();
foreach ( $p[$project_id]["users"] as $u ){
if (!isset ($users_id[$u["right_level_label"]]) ){
$users_id[$u["right_level_label"]]=Array();
$users_emails[$u["right_level_label"]]=Array();
}
$users_id[$u["right_level_label"]][] = $u["user_id"];
$users_emails[$u["right_level_label"]][] = $u["email"];
}
//Warn if mail is sent to several manager
$email_warn="" ;
$purge_email_to="";
if ( count( $users_emails['manager']) > 1 ) {
$email_warn.="Be aware that every user associated with this project received this email, please send only one answer per purge alert number.\n";
}
$purge_user_id_to = array();
$users_emails_to = array();
if(isset($users_emails['administrator'])){
$users_emails_to = array_merge($users_emails_to, $users_emails['administrator']);
$purge_user_id_to = array_merge($purge_user_id_to, $users_id['administrator']);
}
if(isset($users_emails['manager'])){
$users_emails_to = array_merge($users_emails_to,$users_emails['manager']);
$purge_user_id_to = array_merge($purge_user_id_to, $users_id['manager']);
}
if(isset($users_emails['member'])){
$users_emails_to = array_merge($users_emails_to, $users_emails['member']);
$purge_user_id_to = array_merge($purge_user_id_to, $users_id['member']);
}
$purge_email_to = join(', ',$users_emails_to );
$email_warn.= "Every user associated with this project received this alert.\n";
if( isset($users_emails['administrator']) && count($users_emails['administrator']) > 0 ){
$email_warn.= " - Administrator(s): ".join(', ',$users_emails['administrator']). "\n";
}
if( isset($users_emails['manager']) && count($users_emails['manager']) > 0 ){
$email_warn.= " - Manager(s): ".join(', ',$users_emails['manager']). "\n";
}
if( isset($users_emails['member']) && count($users_emails['member']) > 0 ){
$email_warn.= " - Member(s): ".join(', ',$users_emails['member']). "\n";
}
//Retrieve purgeable information for email
$run_info=Array();
$analyses_info=Array();
$all_purgeable_runs=array_merge($p[$project_id]["state"]["stored"]["run_ids"],$p[$project_id]["state"]["extended"]["run_ids"]);
$all_purgeable_analysis=array_merge($p[$project_id]["state"]["stored"]["analysis_ids"],$p[$project_id]["state"]["extended"]["analysis_ids"]);
$nb_run_purgeable = $p[$project_id]["state"]["stored"]["nb_run"]+ $p[$project_id]["state"]["extended"]["nb_run"];
$nb_analyse_purgeable = $p[$project_id]["state"]["stored"]["nb_analyze"]+ $p[$project_id]["state"]["extended"]["nb_analyze"];
//Retrieve run name
$search=array("###TYPE_OBJECT###","###RUN_ID###","###PROJECT_ID###");
foreach($all_purgeable_runs as $run_id ){
$run = tx_nG6_db::select_run($run_id);
$run_name = $run["name"];
$replace=array("run_id",$run_id,$project_id);
$run_info[] = '<a href="'.str_replace($search, $replace, $run_link_url).'">'.$run["name"].' ('.$run_id.')</a>';
}
foreach($all_purgeable_analysis as $analysis_id ){
$analysis = tx_nG6_db::select_analyse($analysis_id);
$analysis_name = $analysis["name"];
$replace=array("analyze_id",$analysis_id,$project_id);
$analyses_info[] = '<a href="'.str_replace($search, $replace, $run_link_url).'">'.$analysis_name.' ('.$analysis_id.')</a>';
}
if (!$user_id){
http_response_code(401);
return "Nobody seems to be authenticated.";
}
#Add purge demand to get id
$purge_demand_id = tx_nG6_db::add_purge_demand($user_id,$project_id,$p[$project_id]["total_purgeable_size"],$all_purgeable_runs,$all_purgeable_analysis,$purge_user_id_to);
//If the trigger check_demand_insert is triggered, add_purge_demand() returns 0 and the process has to send a mail to warn the admins instead.
if($purge_demand_id > 0){
// We remove the hidden runs and analyzes from $p so they will not appear in the purge alert mail
$p=tx_nG6_db::select_a_project_retention_data_info($project_id, FALSE, FALSE);
//We then need to compute the displayed values once more, to make the hidden elements part of the purge without displaying them in the mail
$all_purgeable_runs=array_merge($p[$project_id]["state"]["stored"]["run_ids"],$p[$project_id]["state"]["extended"]["run_ids"]);
$all_purgeable_analysis=array_merge($p[$project_id]["state"]["stored"]["analysis_ids"],$p[$project_id]["state"]["extended"]["analysis_ids"]);
$nb_run_purgeable = $p[$project_id]["state"]["stored"]["nb_run"]+ $p[$project_id]["state"]["extended"]["nb_run"];
$nb_analyse_purgeable = $p[$project_id]["state"]["stored"]["nb_analyze"]+ $p[$project_id]["state"]["extended"]["nb_analyze"];
//We need to reset those values to only display unhidden elements
$run_info=Array();
$analyses_info=Array();
foreach($all_purgeable_runs as $run_id ){
$run = tx_nG6_db::select_run($run_id);
$run_name = $run["name"];
$replace=array("run_id",$run_id,$project_id);
$run_info[] = '<a href="'.str_replace($search, $replace, $run_link_url).'">'.$run["name"].' ('.$run_id.')</a>';
}
foreach($all_purgeable_analysis as $analysis_id ){
$analysis = tx_nG6_db::select_analyse($analysis_id);
$analysis_name = $analysis["name"];
$replace=array("analyze_id",$analysis_id,$project_id);
$analyses_info[] = '<a href="'.str_replace($search, $replace, $run_link_url).'">'.$analysis_name.' ('.$analysis_id.')</a>';
}
#Build corresponding string array
//We get the project size without any hidden run or analyze
$total_project_size = tx_nG6_db::get_project_size($project_id, true, false);
$mail = tx_nG6_utils::get_purge_mail($p[$project_id]["project_name"],$project_id, $nb_run_purgeable,$nb_analyse_purgeable, $purge_demand_id,
tx_nG6_utils::get_octet_string_representation($p[$project_id]["total_purgeable_size"]), tx_nG6_utils::get_octet_string_representation($total_project_size),
$$delay_purge,
$extension_url_price,$min_extension_duration,
$min_extension_size, $email_warn, join(', ', $run_info), join(', ', $analyses_info), $extension_allowed);
$to = $purge_email_to;
$subject = '[nG6 purge] No '.$purge_demand_id.' - Project '.$p[$project_id]["project_name"];
$headers = array();
$headers[] = 'From: '.$email_from;
$headers[] = 'Errors-To: '.$email_from;
$headers[] = 'X-Mailer: PHP/' . phpversion();
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=utf-8';
$headers[] = 'Cc: '.$email_copy;
mail($to, $subject, $mail, implode("\r\n", $headers), '-f '. $envelope_sender_address);
//TODO check return function mail ok
}else{
//If the demand could not be inserted because another one already exists for the given project, we send a mail to the nG6 admins
$mail = tx_nG6_utils::get_multiple_purge_demand_mail($p[$project_id]["project_name"]);
$to = $email_warning;
$subject = '[nG6 purge] Project '.$p[$project_id]["project_name"].' already has a purge demand';
$headers[] = 'From: '.$email_from;
$headers[] = 'Errors-To: '.$email_from;
$headers[] = 'X-Mailer: PHP/' . phpversion();
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=utf-8';
$headers[] = 'Cc: '.$email_copy;
mail($to, $subject, $mail, implode("\r\n", $headers), '-f '. $envelope_sender_address);
}
}
return "Mail sent";
}
static function resend_purge_demand_mail ($demands_id) {
$configurationManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Configuration\\BackendConfigurationManager');
//$configurationManager->currentPageId = 1;
$extbaseFrameworkConfiguration = $configurationManager->getTypoScriptSetup();
$run_link_url = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["run_link_url"];
$email_to_discard = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["email_to_discard"];
$run_link_url = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["run_link_url"];
$min_extension_duration = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["min_extension_duration"];
$delay_purge = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["delay_purge"];
$min_extension_size = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["min_extension_size"];
$extension_url_price = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["extension_url_price"];
$email_from = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["email_from"];
$email_copy = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["email_copy"];
$envelope_sender_address = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["envelope_sender_address"];
$email_warning= $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["email_warning"];
$res_demands = tx_nG6_db::get_purge_demand_from_id($demands_id);
foreach($res_demands as $res_demand){
$res_project = tx_nG6_db::select_project($res_demand["project_id"]);
//We compute the project size without hidden elements
$total_project_size = tx_nG6_db::get_project_size($res_demand["project_id"], true, false) ;
$run_info=Array();
$analyses_info=Array();
$search=array("###TYPE_OBJECT###","###RUN_ID###","###PROJECT_ID###");
$project_id = $res_demand["project_id"];
$all_purgeable_runs = explode(',',$res_demand["run_ids"]);
$all_purgeable_analysis = explode(',',$res_demand["analyze_ids"]);
$nb_run_purgeable = 0;
$nb_analyse_purgeable = 0;
$displayed_purge_size = 0;
foreach($all_purgeable_runs as $run_id ){
$run = tx_nG6_db::select_run($run_id);
// We exclude hidden runs from the mail
if( $run["hidden"] != 1 && isset($run["name"]) ){
$run_name = $run["name"];
$replace=array("run_id",$run_id,$project_id);
$run_info[] = '<a href="'.str_replace($search, $replace, $run_link_url).'">'.$run["name"].' ('.$run_id.')</a>';
$nb_run_purgeable++;
$displayed_purge_size = $displayed_purge_size + $run["storage_size"];
}
}
foreach($all_purgeable_analysis as $analysis_id ){
$analysis = tx_nG6_db::select_analyse($analysis_id);
// We exclude hidden analyzes from the mail
if( $analysis["hidden"] != 1 && isset($analysis["name"]) ){
$analysis_name = $analysis["name"];
$replace=array("analyze_id",$analysis_id,$project_id);
$analyses_info[] = '<a href="'.str_replace($search, $replace, $run_link_url).'">'.$analysis_name.' ('.$analysis_id.')</a>';
$nb_analyse_purgeable++;
$displayed_purge_size = $displayed_purge_size + $analysis["storage_size"];
}
}
//We now use join(', ', $run_info) and join(', ', $analyses_info) in get_purge_mail().
$extension_allowed = 1;
$mail = tx_nG6_utils::get_purge_mail($res_project["name"],$res_demand["project_id"],
$nb_run_purgeable, $nb_analyse_purgeable, $res_demand["demand_id"],
tx_nG6_utils::get_octet_string_representation($displayed_purge_size), tx_nG6_utils::get_octet_string_representation($total_project_size),
$delay_purge,
$extension_url_price, $min_extension_duration,
$min_extension_size, "This email was send to ". join(', ',$res_demand["emails"]).". ", join(', ', $run_info), join(', ', $analyses_info), $extension_allowed);
$headers = array();
$subject = '[nG6 purge / reminder] No '.$res_demand["demand_id"].' - Project '.$res_project["name"];
$headers[] = 'From: '.$email_from;
$headers[] = 'Errors-To: '.$email_from;
$headers[] = 'X-Mailer: PHP/' . phpversion();
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=utf-8';
$headers[] = 'Cc: '.$email_copy;
$to= join(",",$res_demand["emails"]);
mail($to, $subject, $mail, implode("\r\n", $headers), '-f '. $envelope_sender_address);
}
}
}
?>
\ No newline at end of file
<?php
namespace ng6\Controller;
/***************************************************************
* Copyright notice
*
......@@ -207,6 +208,12 @@ class tx_nG6_utils {
$purgeable_size, $project_size, $purge_delay, $url_price, $min_extention_duration,
$min_extention_size, $emails, $runs_list, $analyse_list, $with_extension) {
$configurationManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Configuration\\BackendConfigurationManager');
//$configurationManager->currentPageId = 1;
$extbaseFrameworkConfiguration = $configurationManager->getTypoScriptSetup();
$reinitPasswordURL = $extbaseFrameworkConfiguration['plugin.']['tx_nG6_pi6.']["reinit_password_url"];
$reinit_password_message = "<p>You can visit the following address to (re)init your password, linked to your email : ".$reinitPasswordURL.".</p>";
$template_mail='
<html>
<head>
......@@ -236,9 +243,11 @@ class tx_nG6_utils {
$template_mail .= '<p>###EMAILS###</p>';
}
$template_mail.='The nG6 purge process is undergoing an important overhaul.</br>
You can visit our FAQ at the following address : https://ng6.toulouse.inra.fr/faq .</br>
If you have any question or demand, do not hesitate to contact our support team at ng6-support@groupes.renater.fr.</br>';
$template_mail.='The nG6 purge process is undergoing an important overhaul.<br />
You can visit our FAQ at the following address : https://ng6.toulouse.inra.fr/faq .<br />
If you have any question or demand, do not hesitate to contact our support team at ng6-support@groupes.renater.fr.<br />';
$template_mail .= $reinit_password_message.'<br />';
$template_mail.='<p>Yours sincerely</p>
<p>nG6 team (for GeT-Genotoul and Bioinfo-Genotoul facilities)</p>
......@@ -301,7 +310,7 @@ $template_mail.='<p>Yours sincerely</p>
* @return hashed password
*/
static function hash_password($password){
$hashInstance = TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory::class)->getDefaultHashInstance('FE');
$hashInstance = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory::class)->getDefaultHashInstance('FE');
$hashedPassword = $hashInstance->getHashedPassword($password);
return $hashedPassword;
}
......
<?php
declare(strict_types=1);
namespace ng6\Controller;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use TYPO3\CMS\Core\Http\JsonResponse;
use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Http\HtmlResponse;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'Classes/Controller/tx_nG6_db.php');
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'Classes/Controller/class.tx_nG6_utils.php');
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'lib/class.tx_nG6_process.php');
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'Classes/Controller/class.tx_nG6_pi6_purge.php');
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'res/smarty/libs/Smarty.class.php');
/**
* Class NG6
*/
class NG6
{
/**
* @param ServerRequestInterface $request
* @param ResponseInterface $response
* @return ResponseInterface
*/
public function processRequest(ServerRequestInterface $request)
{
$context = GeneralUtility::makeInstance(Context::class);
$user_id = $context->getPropertyFromAspect('frontend.user', 'id');
$type = (string)$request->getQueryParams()['type'] ;
//error_log("processRequest, type= $type\n", 3, "/work/tmp/mes-erreurs.log");
if ($type == 'project') {
error_log("processRequest, type=project $project_id\n", 3, "/work/tmp/mes-erreurs.log");
$project_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('object_id'));
// Select all runs linked to the project
$project_runs = tx_nG6_db::get_user_project_runs($user_id, $project_id, 'tx_nG6_run.date DESC');
// for each run
$html_tree = '';
foreach($project_runs as $run_id => $run_values) {
//error_log("processRequest, type=project ".var_dump($run_values)."\n", 3, "/work/tmp/mes-erreurs.log");
$date = $run_values['date'];
settype($date,'int');
$html_tree .= '<li class="jstree-closed" name=\''.str_replace(array('###SPAN_NAME###', '###SPAN_DATE###'), array($run_values['name'], strftime('%d-%m-%y',$date)), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('run_short_description'))).'\' id=\''.$run_id.'\'> <a href=\'#\'>'.str_replace(array('###SPAN_NAME###', '###SPAN_DATE###', '###SPAN_NB_SEQ###', '###SPAN_SPECIES###'), array($run_values['name'], strftime('%d-%m-%y',$date), $run_values['nb_sequences'], $run_values['species']), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('run_description'))).'</a></li>';
}
// Then all project analysis
$project_analysis = tx_nG6_db::get_user_project_analysis($user_id, $project_id, 'tx_nG6_analyze.name');
foreach($project_analysis as $analyse_id => $analyse_values) {
$html_tree .= '<li name=\''.str_replace(array('###SPAN_NAME###'), array($analyse_values["name"]), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('analyse_description'))).'\' id=\''.$analyse_id.'\'> <a href=\'#\'>'.str_replace(array('###SPAN_NAME###'), array($analyse_values["name"]), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('analyse_description'))).'</a></li>';
}
error_log("processRequest, type=project $html_tree\n", 3, "/work/tmp/mes-erreurs.log");
// Return the html_tree
return GeneralUtility::makeInstance(HtmlResponse::class, $html_tree);
// If the type of data requested is run
}
elseif ($type == 'run'){
$run_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('object_id'));
// Select all analysis linked to the run and the run information
$run_analysis = tx_nG6_db::get_user_run_analysis($user_id, $run_id, 'tx_nG6_analyze.name');
$run_info = tx_nG6_db::select_run($run_id);
// for each analysis
$html_tree = '';
$html_tree .= '<li name=\'run_'.$run_id.'_'.trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP("raw_data_description")).'\' id=\'data_'.$run_id.'\'> <a href=\'#\'>'.trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP("raw_data_description")).'</a></li>';
foreach($run_analysis as $analyse_id => $analyse_values) {
$html_tree .= '<li name=\'run_'.$run_id.'_'.str_replace(array('###SPAN_NAME###'), array($analyse_values["name"]), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('analyse_description'))).'\' id=\''.$analyse_id.'\'> <a href=\'#\'>'.str_replace(array('###SPAN_NAME###'), array($analyse_values["name"]), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('analyse_description'))).'</a></li>';
}
// Return the html_tree
return GeneralUtility::makeInstance(HtmlResponse::class, $html_tree);
// If asked to check a job status
}
elseif($type == 'check_status') {
$pid = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('pid'));
$archive_path = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('archive_path'));
$process = new Process();
$process->setPid($pid);
// If the job is done
if ($process->status()) {
return GeneralUtility::makeInstance(HtmlResponse::class,"pid=0&archive_path=".$archive_path);
// If the job is still runing
} else {
return GeneralUtility::makeInstance(HtmlResponse::class,"pid=".$process->getPid()."&archive_path=".$archive_path);
}
// If asked to hide a {project/run}
} elseif ($type == 'hide') {
$ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ids'));
// {project/run}_id to array (1;2;3;...) -> [1;2;3;...]
$tab_ids = explode(";",$ids);
$hide_level = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('hide_level'));
if ($hide_level == 'project') {
foreach($tab_ids as $id => $value) {
tx_nG6_db::hide_project($value);
}
} elseif ($hide_level == 'run') {
foreach($tab_ids as $id => $value) {
tx_nG6_db::hide_run($value, $user_id);
}
} elseif ($hide_level == 'analysis') {
foreach($tab_ids as $id => $value) {
tx_nG6_db::hide_analysis($value, $user_id);
}
}
return GeneralUtility::makeInstance(HtmlResponse::class,1);
// If asked to unhide a {project/run}
} elseif ($type == 'unhide') {
$ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ids'));
error_log("processRequest ids $ids\n", 3, "/work/tmp/mes-erreurs.log");
// {project/run}_id to array (1;2;3;...) -> [1;2;3;...]
$tab_ids = explode(";",$ids);
$unhide_level = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('unhide_level'));
error_log("processRequest unhide_level $unhide_level\n", 3, "/work/tmp/mes-erreurs.log");
if ($unhide_level == 'project') {
foreach($tab_ids as $id => $value) {
tx_nG6_db::unhide_project($value);
}
} elseif ($unhide_level == 'run') {
foreach($tab_ids as $id => $value) {
tx_nG6_db::unhide_run($value, true);
}
} elseif ($unhide_level == 'analysis') {
foreach($tab_ids as $id => $value) {
tx_nG6_db::unhide_analysis($value, true);
}
}
return GeneralUtility::makeInstance(HtmlResponse::class,1);
// If asked to delete a {project/run/analyze}
}
elseif ($type == 'delete') {
$ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ids'));
// {project/run}_id to array (1;2;3;...) -> [1;2;3;...]
$tab_ids = explode(";",$ids);
$delete_level = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('del_level'));
$data_folder = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('data_folder'));
$user_login = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('user_login'));
$user_pwd = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('user_pwd'));
$res = 0;
// check login and password
if (isset($user_login) && isset($user_pwd) && $user_login != 'undefined' && $user_pwd != 'undefined') {
$res = 0;
$connection = ssh2_connect('127.0.0.1', 22);
if (!$connection) { $res = 3; }
if (!ssh2_auth_password($connection, $user_login, $user_pwd)) { $res=2;}
} else {
$res = 3;
}
if ($res == 0) {
if ($delete_level == 'project') {
foreach($tab_ids as $id => $value) {
$res = tx_nG6_db::delete_project($value, $user_login, $user_pwd, $data_folder);
if ($res != 0) { break; }
}
} elseif ($delete_level == 'run') {
foreach($tab_ids as $id => $value) {
$res = tx_nG6_db::delete_run($value, $user_login, $user_pwd, $data_folder);
if ($res != 0) { break; }
}
} elseif ($delete_level == 'analysis') {
foreach($tab_ids as $id => $value) {
$res = tx_nG6_db::delete_analysis($value, $user_login, $user_pwd, $data_folder);
if ($res != 0) { break; }
}
}
}
return GeneralUtility::makeInstance(HtmlResponse::class,$res);
// If asked to publish a project
} elseif ($type == 'publish') {
$ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ids'));
// project_id to array (1;2;3;...) -> [1;2;3;...]
$tab_ids = explode(";",$ids);
foreach($tab_ids as $id => $value) {
tx_nG6_db::publish_project($value);
}
return GeneralUtility::makeInstance(HtmlResponse::class,1);
// If asked to unpublish a project
} elseif ($type == 'unpublish') {
$ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ids'));
// project_id to array (1;2;3;...) -> [1;2;3;...]
$tab_ids = explode(";",$ids);
foreach($tab_ids as $id => $value) {
tx_nG6_db::unpublish_project($value);
}
// If asked the size
} elseif ($type == 'get_size') {
$ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ids'));
$view = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('view'));
$tab_ids = explode(",",$ids);
$full_size = 0;
foreach($tab_ids as $id => $value) {
if ($view == "run") {
$full_size += tx_nG6_db::get_run_size($value, true);
} elseif ($view == "project") {
$full_size += tx_nG6_db::get_project_size($value, true);
}
}
return GeneralUtility::makeInstance(HtmlResponse::class,tx_nG6_utils::get_octet_string_representation($full_size));
// data size
}elseif ($type == 'get_data_size'){
$run_ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('run_ids'));
$data_ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('data_ids'));
$analysis_ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('analysis_ids'));
$full_size = 0;
if ($run_ids){
$data = explode(',', $run_ids);
foreach($data as $id => $value) {
$full_size += tx_nG6_db::get_run_size($value, true);
}
}
if ($data_ids){
$data = explode(',', $data_ids);
foreach($data as $id => $value) {
$full_size += tx_nG6_db::get_run_size($value, false);
}
}
if ($analysis_ids){
$data = explode(',', $analysis_ids);
foreach($data as $id => $value) {
$full_size += tx_nG6_db::get_analysis_size($value);
}
}
return GeneralUtility::makeInstance(HtmlResponse::class,$full_size . ":::" . tx_nG6_utils::get_octet_string_representation($full_size));
// If update a field
} elseif ($type == 'update_db_field') {
//Retrieve infomation
$table = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('table'));