* 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! ***************************************************************/ //require_once(PATH_t3lib.'class.t3lib_befunc.php'); //require_once(PATH_t3lib.'stddb/tables.php'); //require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('cms','ext_tables.php')); //require_once(PATH_t3lib.'class.t3lib_db.php'); require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/lib/class.tx_nG6_db.php'); 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_process.php'); require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/libs/Smarty.class.php'); /** * Class 'tx_nG6_eid' for the 'nG6' extension. * This class is in charge of all communication between the client and the server using AJAX * * @author PF bioinformatique de Toulouse <> */ class tx_nG6_eid { /** * The main function of the tx_nG6_eid, this function is the one called when using ajax */ function main() { // Connect to the databse //\TYPO3\CMS\Frontend\Utility\EidUtility::connectDB(); $type = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('type')); $user_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('user_id')); //error_log("tx_nG6_eid ".$type." \n ", 3, "/work/tmp/mes-erreurs.log"); // If the type of data requested is project if ($type == 'project') { $project_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('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) { $html_tree .= '
  • '.str_replace(array('###SPAN_NAME###', '###SPAN_DATE###', '###SPAN_NB_SEQ###', '###SPAN_SPECIES###'), array($run_values['name'], strftime('%d-%m-%y',$run_values['date']), $run_values['nb_sequences'], $run_values['species']), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('run_description'))).'
  • '; } // 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 .= '
  • '.str_replace(array('###SPAN_NAME###'), array($analyse_values["name"]), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('analyse_description'))).'
  • '; } // Return the html_tree print $html_tree; // If the type of data requested is run } else if ($type == 'run'){ $run_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('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 .= '
  • '.trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP("raw_data_description")).'
  • '; foreach($run_analysis as $analyse_id => $analyse_values) { $html_tree .= '
  • '.str_replace(array('###SPAN_NAME###'), array($analyse_values["name"]), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('analyse_description'))).'
  • '; } // Return the html_tree print $html_tree; // If asked to check a job status } else if($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()) { print "pid=0&archive_path=".$archive_path; // If the job is still runing } else { print "pid=".$process->getPid()."&archive_path=".$archive_path; } // If asked to hide a {project/run} } else if ($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); } } else if ($hide_level == 'run') { foreach($tab_ids as $id => $value) { tx_nG6_db::hide_run($value, $user_id); } } else if ($hide_level == 'analysis') { foreach($tab_ids as $id => $value) { tx_nG6_db::hide_analysis($value, $user_id); } } // If asked to unhide a {project/run} } else if ($type == 'unhide') { $ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ids')); // {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')); if ($unhide_level == 'project') { foreach($tab_ids as $id => $value) { tx_nG6_db::unhide_project($value); } } else if ($unhide_level == 'run') { foreach($tab_ids as $id => $value) { tx_nG6_db::unhide_run($value, true); } } else if ($unhide_level == 'analysis') { foreach($tab_ids as $id => $value) { tx_nG6_db::unhide_analysis($value, true); } } // If asked to delete a {project/run/analyze} } else if ($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; } } } else if ($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; } } } else if ($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; } } } } print $res; // If asked to publish a project } else if ($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); } // If asked to unpublish a project } else if ($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 } else if ($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); } else if ($view == "project") { $full_size += tx_nG6_db::get_project_size($value, true); } } print tx_nG6_utils::get_octet_string_representation($full_size); // data size }else if ($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); } } print $full_size . ":::" . tx_nG6_utils::get_octet_string_representation($full_size); // If update a field } else if ($type == 'update_db_field') { //Retrieve infomation $table = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('table')); $id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('pk')); $field = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('field')); $value = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('value')); //If change concernes a date if( $field == "date" || $field == "crdate" ) { //Change date format $date = explode('-', $value); $timestamp = mktime (0, 0, 1, $date[1], $date[2], $date[0]); //Update the entity tx_nG6_db::update_field($table, $id, $field, $timestamp); } else { //Update the entity tx_nG6_db::update_field($table, $id, $field, $value); } print $value; } // add comment else if ($type == 'add_comment') { $view = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('view')); $view_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('view_id')); // project_id or run_id or analyze_id $new_comment = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('new_comment')); $cruser_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('cruser_id')); $res = 0 ; if ($new_comment){ if($view == 'project'){ $res = tx_nG6_db::add_project_comment($view_id, $cruser_id, $new_comment) ; } elseif ($view == 'run') { $res = tx_nG6_db::add_run_comment($view_id, $cruser_id, $new_comment) ; } elseif ($view == 'analyze') { $res = tx_nG6_db::add_analyze_comment($view_id, $cruser_id, $new_comment) ; } } print $res; } //delete comment else if ($type == 'delete_comment') { $view = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('view')); $view_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('view_id')); // project_id or run_id or analyze_id $comment_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('comment_id')); $res = 0 ; if($view == 'project'){ $res = tx_nG6_db::delete_project_comment($view_id, $comment_id); } elseif ($view == 'run') { $res = tx_nG6_db::delete_run_comment($view_id, $comment_id); } elseif ($view == 'analyze') { $res = tx_nG6_db::delete_analyze_comment($view_id, $comment_id); } print $res; } //update comment else if ($type == 'update_comment') { $comment_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('comment_id')); $new_comment = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('new_comment')); $res = 0; $new_comment = urldecode($new_comment); $res = tx_nG6_db::update_comment($comment_id, $new_comment); print $res; // If asked the krona page } else if ($type == 'get_krona') { $data_folder = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('data_folder')); $file_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('file_name')); $sequence_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('sequence_name')); $doc = new DomDocument(); $data_root = $doc->createElement('data'); $doc->appendChild($data_root); $attr_data_root = $doc->createAttribute("xml:id"); $data_root->appendChild($attr_data_root); $t_data_root = $doc->createTextNode('data_root'); $attr_data_root->appendChild($t_data_root); $data_root->setIdAttribute("xml:id", true); $magnitude = $doc->createElement('magnitude'); $magnitude->setAttribute("attribute", "g"); $magnitude = $data_root->appendChild($magnitude); $magnitudet = $doc->createTextNode(''); $magnitudet = $magnitude->appendChild($magnitudet); $color = $doc->createElement('color'); $color = $data_root->appendChild($color); $colort = $doc->createTextNode(''); $colort = $color->appendChild($colort); $attributes = $doc->createElement('attributes'); $attributes->setAttribute("g", $sequence_name); $attributes = $data_root->appendChild($attributes); $attributest = $doc->createTextNode(''); $attributest = $attributes->appendChild($attributest); $datasets = $doc->createElement('datasets'); $datasets->setAttribute("names", $file_name); $datasets = $data_root->appendChild($datasets); $datasetst = $doc->createTextNode(''); $datasetst = $datasets->appendChild($datasetst); $file_path = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('file_path')); $file_path = $data_folder."/".$file_path; // If the file exists $total = 0; if (file_exists($file_path)) { $lines = file($file_path); // Loop through our array foreach ($lines as $line_num => $line) { if ($line != "") { $mparts = explode("\t", trim($line)); if ($mparts[0] != "taxlevel" and $mparts[0] != "0") { // If this guy doesnt exist yet $id_searched = str_replace(".", "_", "node_".$mparts[1]); if (is_null($doc->getElementById($id_searched))) { $parentl = implode("_", array_slice(explode(".", $mparts[1]), 0, -1)); // If no parent yet, this is the root if (is_null($doc->getElementById("node_".$parentl))) { $current_node = $doc->createElement('node'); $current_node->setAttribute("name", $mparts[2]); $current_node->setAttribute("g", $mparts[4]); $id = $doc->getElementById("data_root"); $id->appendChild($current_node); $attr_current_node = $doc->createAttribute("xml:id"); $current_node->appendChild($attr_current_node); $t_current_node = $doc->createTextNode("node_".str_replace(".", "_", $mparts[1])); $attr_current_node->appendChild($t_current_node); $current_node->setIdAttribute("xml:id", true); $current_nodet = $doc->createTextNode(''); $current_nodet = $current_node->appendChild($current_nodet); } else { $current_node = $doc->createElement('node'); $current_node->setAttribute("name", $mparts[2]); $current_node->setAttribute("g", $mparts[4]); $id = $doc->getElementById("node_".$parentl); $id->appendChild($current_node); $attr_current_node = $doc->createAttribute("xml:id"); $current_node->appendChild($attr_current_node); $t_current_node = $doc->createTextNode("node_".str_replace(".", "_", $mparts[1])); $attr_current_node->appendChild($t_current_node); $current_node->setIdAttribute("xml:id", true); $current_nodet = $doc->createTextNode(''); $current_nodet = $current_node->appendChild($current_nodet); } } } if ($mparts[0] == "1") { $total += (int)$mparts[4]; } } } } $color->setAttribute("attribute", "g"); $color->setAttribute("valueStart", "0"); $color->setAttribute("valueEnd", (string)$total); $color->setAttribute("hueStart", "120"); $color->setAttribute("hueEnd", "360"); $xml_string = $doc->saveXML(); $xml_parts = explode("\n", $xml_string); $val = ''; $val .= ''; $val .= ''; $val .= ''; $val .= ''; $val .= '
    '; $val .= '
    '; $val .= 'This browser does not support HTML5
    '; $val .= ''; $val .= ''; $val .= $xml_parts[1]; $val .= '
    '; $val .= ''; $val .= ''; print $val; } else if ($type == 'delete_users') { $ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ids')); // users_id to array (1;2;3;...) -> [1;2;3;...] $tab_ids = explode(";",$ids); $project_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('project_id')); // try to delete users in project ... if($project_id != "") { $none_access = ""; foreach($tab_ids as $id => $del_user_id) { tx_nG6_db::delete_access_to_project($del_user_id, $project_id); // find if user can't access to any project $users_access = tx_nG6_db::count_number_of_project_access($del_user_id); if($users_access == '0'){ $none_access .= $del_user_id.";"; } } if($none_access == ""){ // everybody has at least one access to a project $others_access = '0'; }else{ // list separate by coma of users who can't access to any project $others_access = substr($none_access, 0, -1); } print $others_access; // delete users of DB... }else{ foreach($tab_ids as $k_id => $v_id){ // delete group $gid = tx_nG6_db::get_user_usergroup($v_id); // delete user tx_nG6_db::delete_user($v_id); if(tx_nG6_db::count_users_in_group($gid) == 0){ tx_nG6_db::delete_group($gid); } } } // to change users' right on project } else if ($type == 'change_right') { $project_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('project_id')); $c_user_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('c_user_id')); $right_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('right_id')); tx_nG6_db::change_access_to_project($c_user_id, $project_id, $right_id); // jquery autocomplete } else if ($type == 'autocomplete') { $col = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('gender')); $project_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('project_id')); $name_start = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('name_start')); // user search if($col != 'title' && $col != 'location' && $col != 'organism'){ $res = tx_nG6_db::get_all_names_starting_with($name_start, $col); foreach($res as $res_id => $res_val){ // find right on project $res[$res_id]['right_id'] = tx_nG6_db::get_user_right_on_project($res_val['uid'], $project_id); // find creator username $cruser_infos = tx_nG6_db::get_user_informations($res[$res_id]['cruser_id']); $res[$res_id]['cruser_username'] = $cruser_infos['username']; } // group search }else{ if ($col == "location" || $col == "organism") { $col = "tx_nG6_".$col; } $res = tx_nG6_db::get_all_starts_with_in_group($name_start, $col); } $json_res = json_encode($res); print $json_res; // add a new member on project } else if ($type == 'add_user') { $part = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('part')); $user_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('username')); $project_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('project_id')); $right_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('right')); $group_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('title')); $location = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('location')); $organism = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('organism')); $email = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('email')); $first_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('first_name')); $last_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('last_name')); $password = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('password')); $cruser_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('creator')); $from_email = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('from_email')); $pid = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('pid')); $project_url = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('project_url')); $send_an_email = filter_var(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('send_an_email')), FILTER_VALIDATE_BOOLEAN); // if group not exists, create group $group_id = tx_nG6_db::get_group_id($group_name); if( !isset($group_id) ){ $cruser_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('creator')); tx_nG6_db::create_new_group($cruser_id, $group_name, $organism, $location); $group_id = tx_nG6_db::get_group_id($group_name); } $user = tx_nG6_db::select_user_by_username($user_name); // if user does not exists in DB if(!isset($user)){ $create_user_email = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('create_user_email')); $create_user_title = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('create_user_title')); $res_code = tx_nG6_db::add_user($user_name, $first_name, $last_name, $email, tx_nG6_utils::hash_password($password), $cruser_id, $group_id, $pid); if ($res_code == 0) { // find the new user id $user = tx_nG6_db::select_user_by_username($user_name); // authorize new access tx_nG6_db::add_access_to_project($user["uid"], $project_id, $right_id); if ($send_an_email) { // send an email to the new user $message = str_replace("###USER_FIRST_NAME###", $first_name, $create_user_email); $message = str_replace("###USER_LAST_NAME###", $last_name, $message); $message = str_replace("###USER_LOGIN###", $user_name, $message); $message = str_replace("###USER_PASSWORD###", $password, $message); $message = str_replace("###PROJECT_LINK###", $project_url, $message); $msg_table = explode('\n', $message); $message = implode("\n", $msg_table); mail($email, $create_user_title, $message, "From: <".$from_email.">"); } print '2'; // ok } else if ($res_code == 1) { print '4'; // username exists } else if ($res_code == 2) { print '5'; // email exists } // user exists in DB } else if ($user["username"] != $user_name || $user["email"] != $email || $user["first_name"] != $first_name || $user["last_name"] != $last_name) { // there is difference between information provided and the user account print '3'; } else { // can user access to the project ? if(tx_nG6_db::get_user_right_on_project($user["uid"], $project_id) == -1){ // authorize new access tx_nG6_db::add_access_to_project($user["uid"], $project_id, $right_id); // send an email to the user if ($email != "" && $send_an_email) { $add_user_email = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('add_user_email')); $add_user_title = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('add_user_title')); $project = tx_nG6_db::select_project($project_id); $message = str_replace("###USER_FIRST_NAME###", $first_name, $add_user_email); $message = str_replace("###USER_LAST_NAME###", $last_name, $message); $message = str_replace("###PROJECT_NAME###", $project["name"], $message); $message = str_replace("###PROJECT_DESCRIPTION###", $project["description"], $message); $message = str_replace("###PROJECT_LINK###", $project_url, $message); $msg_table = explode('\n', $message); $message = implode("\n", $msg_table); mail($email, $add_user_title, $message, "From: <".$from_email.">"); } print '0'; } else { print '1'; // already access to the project } } } else if ( $type == 'add_to_ng6_admin'){ $userid = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('userid')); tx_nG6_db::add_to_ng6_admin($userid); } else if ( $type == 'delete_from_ng6_admin'){ $userids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('userids')); $userids = explode(',', $userids); tx_nG6_db::remove_from_ng6_admin($userids); } else if($type == 'update_user'){ $email = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('email')); $first_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('first_name')); $last_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('last_name')); $group_name = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('title')); $location = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('location')); $organism = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('organism')); $user_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id')); $password = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('password')); $cruser_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('creator')); $send_an_email = filter_var(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('send_an_email')), FILTER_VALIDATE_BOOLEAN); $from_email = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('from_email')); $updated = tx_nG6_db::update_user($user_id, $first_name, $last_name, $email, $group_name, $organism, $location, tx_nG6_utils::hash_password($password)) ; $nb_updated = count($updated); if ( $nb_updated > 0 && $send_an_email){ $user_infos = tx_nG6_db::get_user_informations($user_id); $email = $user_infos['email']; $first_name = $user_infos['first_name']; $last_name = $user_infos['last_name']; $username = $user_infos['username']; $mail_title = "[NG6]Your user informations have been updated."; $mail_content = "Dear " . $first_name . " " . $last_name . " (user name : ".$username."),\n\nSome of your personnal informations have been updated : \n\n"; if ($email != ''){ foreach($updated as $key => $value){ if($key == 'password'){ $mail_content .= 'password' . "\t: " . $password . "\n" ; } elseif ($key == 'usergroup'){ $mail_content .= 'title' . "\t: " . $group_name . "\n" ; $mail_content .= 'location' . "\t: " . $location . "\n" ; $mail_content .= 'organism' . "\t: " . $organism . "\n" ; } else { $mail_content .= ucwords(str_replace("_", " ", $key)) . "\t: " . $value . "\n" ; } } $mail_content .= "\nThe NG6 team"; mail($email, $mail_title, $mail_content, "From: <".$from_email.">"); } } print $nb_updated; } else if ($type == 'get_user_group'){ $id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id')); print json_encode(tx_nG6_db::get_group_informations(tx_nG6_db::get_user_usergroup($id))); } elseif($type == 'runs_table') { $smarty = new Smarty(); $smarty->setTemplateDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/pi1'); $smarty->setCompileDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/templates_c'); $smarty->setCacheDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/cache'); $smarty->setConfigDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/configs'); $smarty->security = true; $smarty->security_settings['MODIFIER_FUNCS'] = array('count'); $project_id = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('project_id'))); $user_id = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('user_id'))); $login_user = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('login_user'))); $page_id = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('page_id'))); $project_runs = tx_nG6_db::get_project_runs($project_id); $is_project_admin = tx_nG6_db::is_administrator($user_id, 'project', $project_id); $is_at_least_admin_of_1_run = false; foreach($project_runs as $run_id => $run_values) { $is_admin = tx_nG6_db::is_administrator($user_id, 'run', $run_values['id']); $project_runs[$run_id]['is_admin'] = $is_admin; if ($is_admin) { $is_at_least_admin_of_1_run = true; } $href = ''.$run_values['name'].''; $project_runs[$run_id]['href'] = $href; } $smarty->assign('runs', $project_runs); $smarty->assign('is_project_admin', $is_project_admin); $smarty->assign('is_at_least_admin_of_1_run', $is_at_least_admin_of_1_run); $smarty->assign('login_user', $login_user); print $smarty->fetch('run_table.tpl'); } elseif($type == 'projects_table') { $smarty = new Smarty(); $smarty->setTemplateDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/pi1'); $smarty->setCompileDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/templates_c'); $smarty->setCacheDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/cache'); $smarty->setConfigDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/configs'); $smarty->security = true; $smarty->security_settings['MODIFIER_FUNCS'] = array('count'); $user_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('user_id')); $login_user = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('login_user'))); $page_id = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('page_id'))); $projects = tx_nG6_db::select_all_user_projects($user_id, 'tx_nG6_project.uid DESC'); //$projects = tx_nG6_db::select_all_user_projects($user_id, 'tx_nG6_project.name'); $is_at_least_admin_of_1_project = false; foreach($projects as $project_id => $project_values) { $is_admin = tx_nG6_db::is_project_administrator($user_id, $project_values['id']); if ($is_admin) { $is_at_least_admin_of_1_project = true; } $projects[$project_id]['is_admin'] = $is_admin; $projects[$project_id]['is_manager'] = tx_nG6_db::is_project_manager($user_id, $project_values['id']); $projects[$project_id]['is_member'] = tx_nG6_db::is_project_member($user_id, $project_values['id']); $href = ''.$project_values['name'].''; $projects[$project_id]['href'] = $href; } $smarty->assign('projects', $projects); $smarty->assign('is_at_least_admin_of_1_project', $is_at_least_admin_of_1_project); $smarty->assign('login_user', $login_user); $smarty->assign('is_ng6_admin', tx_nG6_db::is_ng6_administrator($user_id) ? true : false); print $smarty->fetch('project_table.tpl'); } elseif($type == 'analyses_table') { $smarty = new Smarty(); $smarty->setTemplateDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/pi1'); $smarty->setCompileDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/templates_c'); $smarty->setCacheDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/cache'); $smarty->setConfigDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('nG6').'/res/smarty/configs'); $smarty->security = true; $smarty->security_settings['MODIFIER_FUNCS'] = array('count'); $user_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('user_id')); $login_user = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('login_user'))); $page_id = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('page_id'))); $project_id = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('project_id'))); $run_id = intVal(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('run_id'))); if ($run_id != "") { $analysis = tx_nG6_db::get_run_analysis($run_id); } else { $analysis = tx_nG6_db::get_project_analysis($project_id); } // Add some information to the table foreach($analysis as $analysis_id => $analysis_values) { if (tx_nG6_db::is_administrator($user_id, 'analyze', $analysis_values['id'])) { $is_admin = true; } $analysis[$analysis_id]['is_admin'] = tx_nG6_db::is_administrator($user_id, 'analyze', $analysis_values['id']); if ($run_id != "") { $href = ''.$analysis_values['name'].''; } else { $href = ''.$analysis_values['name'].''; } $analysis[$analysis_id]['href'] = $href; } $smarty->assign('display_analysis_result', $is_admin); $smarty->assign('is_admin', $is_admin); $smarty->assign('h_analysis', tx_nG6_utils::trace_hierarchy($analysis)); $smarty->assign('login_user', $login_user); print $smarty->fetch('analysis_table.tpl'); } elseif($type == 'install') { $res = tx_nG6_db::select_user_by_username("admin_install"); if ($res != null){ $res2 = tx_nG6_db::finalize_installation($res["uid"], trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('username')), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('first_name')), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('last_name')), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('email')), tx_nG6_utils::hash_password(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('password'))), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('pid')), "Demo project", "This project presents demonstration workflows", trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('title')), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('organism')), trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('location')) ); // if there is a result, then log the user if ($res2) { $GLOBALS['TSFE'] = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tslib_fe', $GLOBALS['TYPO3_CONF_VARS'], \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id'), ''); $GLOBALS['TSFE']->initFEuser(); $GLOBALS['TSFE']->fe_user->createUserSession(array('uid' =>$res["uid"])); } } print $res; } elseif($type == 'project_data_repartition') { $role = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('role')); $by = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('by')); print json_encode(tx_nG6_db::select_projects_repartition($role, $by)); } elseif($type == 'project_distribution') { $values = split(",", trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('values'))); $by = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('by')); $role = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('role')); print json_encode(tx_nG6_db::select_projects_distribution($values, $by, $role)); } elseif($type == 'project_evolution') { $values = split(",", trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('values'))); $by = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('by')); $role = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('role')); $cumulate = false; if(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('cumulate')) == '1'){ $cumulate = true; } print json_encode(tx_nG6_db::select_projects_evolution($values, $by, $role, $cumulate)); } elseif($type == 'data_distribution'){ $values = split(",", trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('values'))); $by = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('by')); $role = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('role')); $get_analyzes = false; if(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('get_analyzes')) == '1'){ $get_analyzes = true; } $octet = true; if(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('bases')) == '1'){ $octet = false; } print json_encode(tx_nG6_db::select_storage_distribution($values, $by, $role, $get_analyzes, $octet)); } elseif($type == 'data_evolution'){ $values = split(",", trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('values'))); $by = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('by')); $role = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('role')); $get_analyzes = false; if(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('get_analyzes')) == '1'){ $get_analyzes = true; } $octet = true; if(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('bases')) == '1'){ $octet = false; } $cumulate = false; if(trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('cumulate')) == '1'){ $cumulate = true; } print json_encode(tx_nG6_db::select_storage_evolution($values, $by, $role, $get_analyzes, $octet, $cumulate)); } elseif ($type == 'purge_managment_mail') { $all_projects = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('project')); print json_encode(tx_nG6_pi6::send_purge_demand_mail($all_projects)); } elseif ($type == 'purge_managment_resend_mail') { $purge_ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('purge_demand')); print json_encode(tx_nG6_pi6::resend_purge_demand_mail($purge_ids)); } elseif ($type == 'refresh_purge_demand') { $purge_delay = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('purge_delay')); print json_encode(tx_nG6_db::get_purge_demand_list($purge_delay)); } elseif ($type == 'refresh_purge_list') { $max_retention_date = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('max_retention_date')); $filter_size = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('filter_size')); $without_laboratories_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('without_lab')); $with_laboratories_id = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('with_lab')); $create_users = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('create_users')); //Change date format print json_encode(tx_nG6_db::filter_list_retention_data_info($filter_size,$max_retention_date,$create_users, $without_laboratories_id,$with_laboratories_id)); } elseif ($type == 'delete_purge_data') { //Delete data link to the list of purge demand $purge_ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('purge_demand')); $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 = tx_nG6_db::delete_purge_demand($purge_ids,$user_login, $user_pwd, $data_folder); print $res; } elseif ($type == 'extend_retention_date_from_demand') { //Extend the retention date for the $purge_ids = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('purge_demand')); $value = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('date_value')); $type_extend = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('type_extend')); //all project or only run/analyse obsolete //Change date format $date = explode('/', $value); $timestamp = mktime (0, 0, 1, $date[1], $date[0], $date[2]); print json_encode(tx_nG6_db::extend_retention_date_from_demand(explode(',',$purge_ids),$timestamp,$type_extend)); } elseif ($type == 'extend_retention_date_from_project') { //Extend the retention date for the $projects_id_str = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('projects_id')); $value = trim(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('date_value')); //Change date format $date = explode('/', $value); $timestamp = mktime (0, 0, 1, $date[1], $date[0], $date[2]); //TODO project print json_encode(tx_nG6_db::extend_retention_date_from_project($projects_id_str,$timestamp, TRUE)); } elseif ($type == 'get_all_project') { print json_encode(tx_nG6_db::select_all_projects()); } } } if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/nG6/class.tx_nG6_eid.php']) { include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/nG6/class.tx_nG6_eid.php']); } // Instanciation $SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tx_nG6_eid'); $SOBE->main(); ?>