* 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(t3lib_extMgm::extPath('nG6').'/lib/class.tx_nG6_utils.php'); /** * Class_nG6_db' for the 'nG6' extension. * This class is in charge of all communication with the database * * @author PF bioinformatique de Toulouse <> */ class tx_nG6_db { /* * Global functions *------------------------------------------------------------*/ /** * Update the specified field of the table * * @param string $table the entity to change * @param string $id the element id to update * @param string $field the field to change * @param string $value the new value */ function update_field($table, $id, $field, $value) { if( $field == 'uid' ) { throw new Exception ("The function 'update_field' cannot change an id.") ; } $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ($table, 'uid='.$id, array($field => $value)); } /* * Project functions *------------------------------------------------------------*/ /** * Select all project for the current user * * @param string $user_id the user id * @return table with all projects */ function select_all_user_projects($user_id, $orderby='', $limit='') { $projects = array(); // If the user is not logged on display demonstration project if ($user_id == null) { $where = 'tx_nG6_project.public=0'; } else { $where = 'fe_rights.fe_user_id='.$user_id; } //First, get the analyzis project-scale $queryParts = array( 'SELECT' => 'tx_nG6_project.uid AS project_id, '. 'tx_nG6_project.name AS project_name, '. 'tx_nG6_project.description AS project_description, '. 'tx_nG6_project.public AS project_public, '. 'tx_nG6_project.crdate AS project_crdate, '. 'tx_nG6_project.hidden AS project_hidden ', 'FROM' => 'tx_nG6_project INNER JOIN fe_rights ON fe_rights.project_id=tx_nG6_project.uid', 'WHERE' => $where, 'GROUPBY' => '', 'ORDERBY' => $orderby, 'LIMIT' => $limit ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $project_id = $row['project_id']; // Is the user allowed to see this project $user_allowed = false; if ($row['project_hidden'] == 0 || $row['project_public'] == 0) { $user_allowed = true; } if (!isset ($projects['project_'.$project_id]) and $user_allowed) { $projects['project_'.$project_id] = array( 'id' => $project_id, 'name' => $row['project_name'], 'hidden' => $row['project_hidden'], 'date' => $row['project_crdate'], 'public' => $row['project_public'], 'description' => $row['project_description']); } } return $projects; } /** * Select a run from the database * * @param string $project_id the project id to return * @return hash table with all project information */ function select_project($project_id) { $queryParts = array( 'SELECT' => '*', 'FROM' => 'tx_nG6_project', 'WHERE' => 'tx_nG6_project.uid = '.$project_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $vals = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); return array('id' => $vals['uid'], 'name' => $vals['name'], 'hidden' => $vals['hidden'], 'date' => $vals['crdate'], 'public' => $vals['public'], 'description' => $vals['description']); } /** * Select all runs linked to the specified project * * @param string $project_id the project id * @return hash table with all runs information */ function get_project_runs($project_id, $orderby='', $limit='') { // First select all runs from the database $queryParts = Array( 'SELECT' => 'tx_nG6_run.uid AS run_id,'. 'tx_nG6_run.directory AS run_directory,'. 'tx_nG6_run.species AS run_species,'. 'tx_nG6_run.description AS run_description, '. 'tx_nG6_run.data_nature AS run_data_nature, '. 'tx_nG6_run.sequencer AS run_sequencer, '. 'tx_nG6_run.type AS run_type, '. 'tx_nG6_run.name AS run_name, '. 'tx_nG6_run.nb_sequences AS run_nb_sequences, '. 'tx_nG6_run.full_seq_size AS run_full_seq_size, '. 'tx_nG6_run.date AS run_date, '. 'tx_nG6_run.hidden AS run_hidden, '. 'tx_nG6_project.uid AS project_id, '. 'tx_nG6_project.name AS project_name ', 'FROM' => 'tx_nG6_project '. 'INNER JOIN tx_nG6_project_run ON tx_nG6_project.uid=tx_nG6_project_run.project_id '. 'INNER JOIN tx_nG6_run ON tx_nG6_project_run.run_id=tx_nG6_run.uid ', 'WHERE' => 'tx_nG6_project.uid='.$project_id, 'GROUPBY' => '', 'ORDERBY' => $orderby, 'LIMIT' => $limit ); // Then create the result hash table $results = array(); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $run_id = $row['run_id']; // Is the user allowed to see this run $user_allowed = false; if ($row['run_hidden'] == 0) { $user_allowed = true; } if (!isset($results['run_'.$run_id]) and $user_allowed) { $results['run_'.$run_id] = array( 'id' => $run_id, 'directory' => $row['run_directory'], 'name' => $row['run_name'], 'project_name' => $row['project_name'], 'hidden' => $row['run_hidden'], 'species' => $row['run_species'], 'nb_sequences' => $row['run_nb_sequences'], 'full_seq_size' => $row['run_full_seq_size'], 'project_id' => $row['project_id'], 'date' => $row['run_date'], 'data_nature' => $row['run_data_nature'], 'sequencer' => $row['run_sequencer'], 'type' => $row['run_type'], 'description' => $row['run_description'] ); } } return $results; } /** * Select all analysis linked to the specified project * * @param string $project_id the project id * @return hash table with all analysis information */ function get_project_analysis($project_id, $orderby='', $limit='') { // First select all analysis from the database $queryParts = array( 'SELECT' => 'tx_nG6_analyze.uid AS analyze_id,'. 'tx_nG6_analyze.directory AS analyze_directory,'. 'tx_nG6_analyze.name AS analyze_name, '. 'tx_nG6_analyze.class AS analyze_class, '. 'tx_nG6_analyze.date AS analyze_date, '. 'tx_nG6_analyze.software AS analyze_software, '. 'tx_nG6_analyze.version AS analyze_version, '. 'tx_nG6_analyze.params AS analyze_params, '. 'tx_nG6_analyze.description AS analyze_description, '. 'tx_nG6_analyze.parent_uid AS analyze_parent_uid, '. 'tx_nG6_analyze.hidden AS analyze_hidden ', 'FROM' => 'tx_nG6_project '. 'INNER JOIN tx_nG6_project_analyze ON tx_nG6_project.uid = tx_nG6_project_analyze.project_id '. 'INNER JOIN tx_nG6_analyze ON tx_nG6_analyze.uid=tx_nG6_project_analyze.analyze_id ', 'WHERE' => 'tx_nG6_project.uid='.$project_id, 'GROUPBY' => '', 'ORDERBY' => $orderby, 'LIMIT' => $limit ); // Then create the result hash table $results = array(); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $analyze_id = $row['analyze_id']; // Is the user allowed to see this analyse $user_allowed = false; if ($row['analyze_hidden'] == 0) { $user_allowed = true; } if (!isset ($results['analyse_'.$analyze_id]) and $user_allowed) { $results['analyse_'.$analyze_id] = array( 'directory' => $row['analyze_directory'], 'name' => $row['analyze_name'], 'class' => $row['analyze_class'], 'id' => $row['analyze_id'], 'hidden' => $row['analyze_hidden'], 'params' => $row['analyze_params'], 'software' => $row['analyze_software'], 'version' => $row['analyze_version'], 'date' => $row['analyze_date'], 'description' => $row['analyze_description'], 'parent_id' => $row['analyze_parent_uid'] ); } } return $results; } /** * Hide a project and sublevels (runs & analyzes) datas from database project * * @param string $p_id the project id to hide * @param string $user_id the current user id */ function hide_project($p_id, $user_id) { // First change all project runs $project_runs = tx_nG6_db::get_project_runs($p_id); foreach($project_runs as $run_id => $run_values) { tx_nG6_db::hide_run($run_values['id'], $user_id); } // Then all project analysis $project_analysis = tx_nG6_db::get_project_analysis($p_id); foreach($project_analysis as $analysis_id => $analysis_values) { tx_nG6_db::hide_analysis($analysis_values['id']); } // Finaly change the project itself $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ('tx_nG6_project', 'uid='.$p_id, array('hidden' => '1')); } /** * Unhide a project and sublevels (runs & analyzes) datas * * @param string $p_id the project id to hide * @param string $user_id the current user id */ function unhide_project($p_id, $user_id) { // First change all project runs $project_runs = tx_nG6_db::get_project_runs($p_id); foreach($project_runs as $run_id => $run_values) { tx_nG6_db::unhide_run($run_values['id'], $user_id); } // Then all project analysis $project_analysis = tx_nG6_db::get_project_analysis($p_id); foreach($project_analysis as $analysis_id => $analysis_values) { tx_nG6_db::unhide_analysis($analysis_values['id']); } // Finaly change the project itself $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ('tx_nG6_project', 'uid='.$p_id, array('hidden' => '0')); } /** * Publish the project * * @param string $p_id the project id to publish * @param int $user_id the current user id */ function publish_project($p_id, $user_id) { // First unhide the project tx_nG6_db::unhide_project($p_id, $user_id); // The set the project as visible $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ('tx_nG6_project', 'uid='.$p_id, array('public' => '0')); } /** * Unpublish the project * * @param string $p_id the project id to publish */ function unpublish_project($p_id) { $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ('tx_nG6_project', 'uid='.$p_id, array('public' => '1')); } /** * Delete a project and sublevels (runs & analyzes) datas from database project * * @param string $user_id the user id * @param string $p_id the project id * @param string $user_login the user login * @param string $user_pwd the user password * @param string $data_folder the data folder */ function delete_project($user_id, $p_id, $user_login, $user_pwd, $data_folder) { $res = 0; // All runs $project_runs = tx_nG6_db::get_project_runs($p_id); foreach($project_runs as $run_id => $run_values) { if ($run_values['id'] != 'undefined' && $run_values['id'] != '') { //delete the run sublevels $res = tx_nG6_db::delete_run($user_id, $run_values['id'], $user_login, $user_pwd, $data_folder); if ($res != 0) { break; } } } // All project_analysis if ($res == 0) { $project_analysis = tx_nG6_db::get_project_analysis($p_id); foreach($project_analysis as $analyse_id => $analyze_values) { if ($analyze_values['id'] != 'undefined' && $analyze_values['id'] != '') { // delete table 'analyze' entries $res = tx_nG6_db::delete_analysis($analyze_values['id'], $user_login, $user_pwd, $data_folder); if ($res != 0) { break; } } } } // Delete DB project entry if ($res == 0) { $table='tx_nG6_project'; $where='tx_nG6_project.uid='.$p_id; $res1 = $GLOBALS['TYPO3_DB']-> exec_DELETEquery ($table, $where); if ($res1 != 1) {$res = 1;} } return $res; } /** * Return the size of the project * * @param string $p_id the project id to return the size * @param string $data_folder the data folder * @param string $user_id the user id */ function get_project_size($p_id, $data_folder, $user_id) { $full_size = 0; // All runs $project_runs = tx_nG6_db::get_project_runs($p_id); foreach($project_runs as $run_id => $run_values) { $full_size += tx_nG6_db::get_run_size($run_values['id'], $data_folder, $user_id); } // All analysis $project_analysis = tx_nG6_db::get_project_analysis($p_id); foreach($project_analysis as $analyse_id => $analyze_values) { $full_size += tx_nG6_db::get_analysis_size($analyze_values['id'], $data_folder); } return $full_size; } /* * Run functions *------------------------------------------------------------*/ /** * Select all run for the specified user * * @param string $user_id the user id * @return table with all projects */ function select_all_user_runs($user_id, $orderby='', $limit='') { // If the user is not logged on display demonstration project if ($user_id == null) { $where = 'tx_nG6_project.public=0'; } else { $where = 'fe_rights.fe_user_id='.$user_id; } // Execute the request $queryParts = Array( 'SELECT' => 'tx_nG6_run.uid AS run_id,'. 'tx_nG6_run.directory AS run_directory,'. 'tx_nG6_run.species AS run_species,'. 'tx_nG6_run.description AS run_description, '. 'tx_nG6_run.data_nature AS run_data_nature, '. 'tx_nG6_run.sequencer AS run_sequencer, '. 'tx_nG6_run.type AS run_type, '. 'tx_nG6_run.name AS run_name, '. 'tx_nG6_run.nb_sequences AS run_nb_sequences, '. 'tx_nG6_run.full_seq_size AS run_full_seq_size, '. 'tx_nG6_run.date AS run_date, '. 'tx_nG6_run.hidden AS run_hidden, '. 'tx_nG6_project.uid AS project_id, '. 'tx_nG6_project.name AS project_name ', 'FROM' => 'fe_rights '. 'INNER JOIN tx_nG6_project ON tx_nG6_project.uid=fe_rights.project_id '. 'INNER JOIN tx_nG6_project_run ON tx_nG6_project.uid=tx_nG6_project_run.project_id '. 'INNER JOIN tx_nG6_run ON tx_nG6_project_run.run_id=tx_nG6_run.uid ', 'WHERE' => $where, 'GROUPBY' => '', 'ORDERBY' => $orderby, 'LIMIT' => $limit ); // Then create the result hash table $results = array(); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $run_id = $row['run_id']; // Is the user allowed to see this run $user_allowed = false; if ($row['run_hidden'] == 0) { $user_allowed = true; } if (!isset($results['run_'.$run_id]) and $user_allowed) { $results['run_'.$run_id] = array( 'id' => $run_id, 'directory' => $row['run_directory'], 'name' => $row['run_name'], 'project_name' => $row['project_name'], 'project_id' => $row['project_id'], 'hidden' => $row['run_hidden'], 'species' => $row['run_species'], 'nb_sequences' => $row['run_nb_sequences'], 'full_seq_size' => $row['run_full_seq_size'], 'date' => $row['run_date'], 'data_nature' => $row['run_data_nature'], 'sequencer' => $row['run_sequencer'], 'type' => $row['run_type'], 'description' => $row['run_description'] ); } } return $results; } /** * Select all information for the specified run * * @param string $run_id the run id * @return hash table with all the run information */ function select_run($run_id) { // First select the run from the database $queryParts = Array( 'SELECT' => 'tx_nG6_project.uid AS project_id,'. 'tx_nG6_project.name AS project_name,'. 'tx_nG6_run.uid AS run_id,'. 'tx_nG6_run.directory AS run_directory,'. 'tx_nG6_run.description AS run_description, '. 'tx_nG6_run.species AS run_species, '. 'tx_nG6_run.name AS run_name, '. 'tx_nG6_run.data_nature AS run_data_nature, '. 'tx_nG6_run.sequencer AS run_sequencer, '. 'tx_nG6_run.type AS run_type, '. 'tx_nG6_run.full_seq_size, '. 'tx_nG6_run.hidden AS run_hidden, '. 'tx_nG6_run.nb_sequences, '. 'tx_nG6_run.date AS run_date', 'FROM' => 'fe_rights '. 'INNER JOIN tx_nG6_project ON tx_nG6_project.uid=fe_rights.project_id '. 'INNER JOIN tx_nG6_project_run ON tx_nG6_project.uid=tx_nG6_project_run.project_id '. 'INNER JOIN tx_nG6_run ON tx_nG6_project_run.run_id=tx_nG6_run.uid ', 'WHERE' => 'tx_nG6_run.uid='.$run_id, 'GROUPBY' => '', 'ORDERBY' => 'tx_nG6_run.date DESC', 'LIMIT' => '' ); // Then create the result hash table $result = array(); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $result = array( 'id' => $row['run_id'], 'project_id' => $row['project_id'], 'project_name' => $row['project_name'], 'directory' => $row['run_directory'], 'name' => $row['run_name'], 'hidden' => $row['run_hidden'], 'species' => $row['run_species'], 'nb_sequences' => $row['nb_sequences'], 'full_seq_size' => $row['full_seq_size'], 'date' => $row['run_date'], 'data_nature' => $row['run_data_nature'], 'sequencer' => $row['run_sequencer'], 'type' => $row['run_type'], 'description' => $row['run_description'] ); } return $result; } /** * Select all mids linked to the specified run * * @param string $run_id the run id * @return hash table with all mids description */ function select_mid_descriptions($run_id) { // First select all analysis from the database $queryParts = array( 'SELECT' => 'mid, description ', 'FROM' => 'tx_nG6_sample ', 'WHERE' => 'run_id='.$run_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $result = array(); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $result[$row["mid"]] = $row["description"]; } return $result; } /** * Select all analysis linked to the specified run * * @param int $user_id the user id * @param string $run_id the run id * @return hash table with all analysis information */ function get_run_analysis($user_id, $run_id, $orderby='', $limit='') { // First select all analysis from the database $queryParts = array( 'SELECT' => 'tx_nG6_analyze.uid AS analyze_id,'. 'tx_nG6_analyze.directory AS analyze_directory,'. 'tx_nG6_analyze.name AS analyze_name, '. 'tx_nG6_analyze.params AS analyze_params, '. 'tx_nG6_analyze.class AS analyze_class, '. 'tx_nG6_analyze.date AS analyze_date, '. 'tx_nG6_analyze.software AS analyze_software, '. 'tx_nG6_analyze.version AS analyze_version, '. 'tx_nG6_analyze.hidden AS analyze_hidden, '. 'tx_nG6_analyze.description AS analyze_description, '. 'tx_nG6_analyze.parent_uid AS analyze_parent_uid ', 'FROM' => 'fe_rights '. 'INNER JOIN tx_nG6_project ON tx_nG6_project.uid=fe_rights.project_id '. 'INNER JOIN tx_nG6_project_run ON tx_nG6_project_run.project_id = tx_nG6_project.uid '. 'INNER JOIN tx_nG6_run ON tx_nG6_run.uid = tx_nG6_project_run.run_id '. 'INNER JOIN tx_nG6_run_analyze ON tx_nG6_run_analyze.run_id = tx_nG6_run.uid '. 'INNER JOIN tx_nG6_analyze ON tx_nG6_analyze.uid = tx_nG6_run_analyze.analyze_id ', 'WHERE' => 'tx_nG6_run_analyze.run_id='.$run_id.' AND fe_rights.fe_user_id='.$user_id, 'GROUPBY' => '', 'ORDERBY' => $orderby, 'LIMIT' => $limit ); // Then create the result hash table $results = array(); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $analyze_id = $row['analyze_id']; // Is the user allowed to see this analyse $user_allowed = false; if ($row['analyze_hidden'] == 0) { $user_allowed = true; } if (!isset ($results['analyse_'.$analyze_id]) and $user_allowed) { $results['analyse_'.$analyze_id] = array( 'directory' => $row['analyze_directory'], 'name' => $row['analyze_name'], 'params' => $row['analyze_params'], 'class' => $row['analyze_class'], 'id' => $row['analyze_id'], 'hidden' => $row['analyze_hidden'], 'software' => $row['analyze_software'], 'version' => $row['analyze_version'], 'date' => $row['analyze_date'], 'description' => $row['analyze_description'], 'parent_id' => $row['analyze_parent_uid'] ); } } return $results; } /** * Delete a run, sample and sublevel (analyzes) datas from database project * * @param int $user_id the user id * @param string $r_id the run id * @param string $user_login the user login * @param string $user_pwd the user password * @param string $data_folder the data folder */ function delete_run($user_id, $r_id, $user_login, $user_pwd, $data_folder) { $res = 0; $run_analysis = tx_nG6_db::get_run_analysis($user_id, $r_id); foreach($run_analysis as $analyse_id => $analyze_values) { if ($analyze_values['id'] != 'undefined' && $analyze_values['id'] != '') { // delete table 'analyze' entries $res = tx_nG6_db::delete_analysis($analyze_values['id'], $user_login, $user_pwd, $data_folder); if ($res != 0) { break; } } } // First select the run $my_run = tx_nG6_db::select_run($r_id); // delete run if ($res == 0) { $table='tx_nG6_project_run'; $where='run_id='.$r_id; $GLOBALS['TYPO3_DB']-> exec_DELETEquery ($table, $where); $table='tx_nG6_run'; $where='tx_nG6_run.uid='.$r_id; $res1 = $GLOBALS['TYPO3_DB']-> exec_DELETEquery ($table, $where); if ($res1 != 1) {$res = 1;} } // delete run samples if ($res == 0) { $table='tx_nG6_sample'; $where='tx_nG6_sample.run_id='.$r_id; $GLOBALS['TYPO3_DB']-> exec_DELETEquery ($table, $where); } if ($res == 0) { // Delete the run directory $res = tx_nG6_utils::delete_directory($user_login, $user_pwd, $data_folder.$my_run['directory']); } return $res; } /** * Return the size of the run * * @param string $r_id the run id to return the size * @param string $data_folder the data folder * @param int $user_id the user id */ function get_run_size($r_id, $data_folder, $user_id) { $full_size = 0; $run_analysis = tx_nG6_db::get_run_analysis($user_id, $r_id); foreach($run_analysis as $analyse_id => $analyze_values) { $full_size += tx_nG6_db::get_analysis_size($analyze_values['id'], $data_folder); } // Then select the run $my_run = tx_nG6_db::select_run($r_id); foreach(scandir($data_folder.$my_run['directory']) as $file) { if (is_file($data_folder.$my_run['directory']."/".$file)) { $full_size += filesize($data_folder.$my_run['directory']."/".$file); } } return $full_size; } /** * Hide a run and sublevels (analysis) * * @param string $r_id the run id to hide * @param int $user_id the current user id */ function hide_run($r_id, $user_id) { // First select all run analysis $run_analysis = tx_nG6_db::get_run_analysis($user_id, $r_id); foreach($run_analysis as $analysis_id => $analysis_values) { tx_nG6_db::hide_analysis($analysis_values['id']); } // Finaly change the project itself $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ('tx_nG6_run', 'uid='.$r_id, array('hidden' => '1')); } /** * Unhide a run and sublevels (analysis) * * @param string $r_id the run id to hide * @param int $user_id the current user id */ function unhide_run($r_id, $user_id) { // Then all run analysis $run_analysis = tx_nG6_db::get_run_analysis($user_id, $r_id); foreach($run_analysis as $analysis_id => $analysis_values) { tx_nG6_db::unhide_analysis($analysis_values['id']); } // Unhide the project $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ( 'tx_nG6_project, tx_nG6_project_run', 'tx_nG6_project.uid = tx_nG6_project_run.project_id AND tx_nG6_project_run.run_id = '.$r_id , array('tx_nG6_project.hidden' => '0') ); // Finaly change the run itself $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ('tx_nG6_run', 'uid='.$r_id, array('hidden' => '0')); } /* * Analysis functions *------------------------------------------------------------*/ /** * Select all information on an analyse * * @param string $analyse_id the analyse id * @return hash table with all analyse information */ function select_analyse($analyse_id) { // First select all analyse information $queryParts = array( 'SELECT' => 'tx_nG6_project.uid AS project_id,'. 'tx_nG6_project.name AS project_name,'. 'tx_nG6_analyze.uid AS analyze_id,'. 'tx_nG6_analyze.directory AS analyze_directory,'. 'tx_nG6_analyze.name AS analyze_name, '. 'tx_nG6_analyze.params AS analyze_params, '. 'tx_nG6_analyze.software AS analyze_software, '. 'tx_nG6_analyze.class AS analyze_class, '. 'tx_nG6_analyze.date AS analyze_date, '. 'tx_nG6_analyze.description AS analyze_description, '. 'tx_nG6_analyze.version AS analyze_version, '. 'tx_nG6_analyze.parent_uid AS analyze_parent_uid ', 'FROM' => 'tx_nG6_project '. 'INNER JOIN tx_nG6_project_analyze ON tx_nG6_project.uid = tx_nG6_project_analyze.project_id '. 'INNER JOIN tx_nG6_analyze ON tx_nG6_analyze.uid=tx_nG6_project_analyze.analyze_id ', 'WHERE' => 'tx_nG6_analyze.uid='.$analyse_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); // If it's a project analyse, add project information if ($GLOBALS['TYPO3_DB']->sql_num_rows($res) > 0) { $result = array(); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $result = array( 'project_name' => $row['project_name'], 'project_id' => $row['project_id'], 'run_name' => 'None', 'run_id' => 'None', 'directory' => $row['analyze_directory'], 'name' => $row['analyze_name'], 'class' => $row['analyze_class'], 'params' => $row['analyze_params'], 'date' => $row['analyze_date'], 'description' => $row['analyze_description'], 'parent_id' => $row['analyze_parent_uid'], 'software' => $row['analyze_software'], 'version' => $row['analyze_version'] ); } return $result; } else { // If it's a run analyse, add run information $queryParts = array( 'SELECT' => 'tx_nG6_project.name AS project_name,'. 'tx_nG6_project.uid AS project_id,'. 'tx_nG6_run.uid AS run_id,'. 'tx_nG6_run.name AS run_name,'. 'tx_nG6_analyze.uid AS analyze_id,'. 'tx_nG6_analyze.directory AS analyze_directory,'. 'tx_nG6_analyze.name AS analyze_name, '. 'tx_nG6_analyze.params AS analyze_params, '. 'tx_nG6_analyze.class AS analyze_class, '. 'tx_nG6_analyze.date AS analyze_date, '. 'tx_nG6_analyze.software AS analyze_software, '. 'tx_nG6_analyze.version AS analyze_version, '. 'tx_nG6_analyze.description AS analyze_description,'. 'tx_nG6_analyze.parent_uid AS analyze_parent_uid ', 'FROM' => 'tx_nG6_project '. 'INNER JOIN tx_nG6_project_run ON tx_nG6_project_run.project_id = pro.uid '. 'INNER JOIN tx_nG6_run ON tx_nG6_run.uid = tx_nG6_project_run.run_id '. 'INNER JOIN tx_nG6_run_analyze ON tx_nG6_run_analyze.run_id = tx_nG6_run.uid '. 'INNER JOIN tx_nG6_analyze ON tx_nG6_analyze.uid = tx_nG6_run_analyze.analyze_id ', 'WHERE' => 'tx_nG6_analyze.uid='.$analyse_id, 'GROUPBY' => '', 'ORDERBY' => 'tx_nG6_analyze.name', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $result = array(); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $result = array( 'project_name' => $row['project_name'], 'project_id' => $row['project_id'], 'run_name' => $row['run_name'], 'run_id' => $row['run_id'], 'directory' => $row['analyze_directory'], 'name' => $row['analyze_name'], 'params' => $row['analyze_params'], 'class' => $row['analyze_class'], 'date' => $row['analyze_date'], 'description' => $row['analyze_description'], 'software' => $row['analyze_software'], 'parent_id' => $row['analyze_parent_uid'], 'version' => $row['analyze_version'] ); } return $result; } } /** * Select all results of an analyse * * @param string $analyse_id the analyse id * @return hash table with all analyse results */ function select_analyse_results($analyse_id) { // First select all analyse information $queryParts = array( 'SELECT' => 'uid,file,rkey,rvalue,rgroup ', 'FROM' => 'tx_nG6_result ', 'WHERE' => 'analyze_id='.$analyse_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $result = array(); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { if (array_key_exists($row['file'], $result)) { if (array_key_exists($row['rgroup'], $result[$row['file']])) { $result[$row['file']][$row['rgroup']][$row['rkey']] = $row['rvalue']; } else { $result[$row['file']][$row['rgroup']] = array($row['rkey'] => $row['rvalue']); } } else { $result[$row['file']] = array($row['rgroup'] => array($row['rkey'] => $row['rvalue'])); } } return $result; } /** * Return the size of the analysis * * @param string $a_id the analysis id to return the size * @param string $data_folder the data folder */ function get_analysis_size($a_id, $data_folder) { // First select the analyse $my_analysis = tx_nG6_db::select_analyse($a_id); $full_size = 0; foreach(scandir($data_folder.$my_analysis['directory']) as $file) { if (is_file($data_folder.$my_analysis['directory']."/".$file)) { $full_size += filesize($data_folder.$my_analysis['directory']."/".$file); } } return $full_size; } /** * Hide an analysis * * @param string $a_id the analysis id to hide */ function hide_analysis($a_id) { // Change the analysis itself $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ('tx_nG6_analyze', 'uid='.$a_id, array('hidden' => '1')); } /** * Unhide an analysis * * @param string $a_id the analysis id to hide */ function unhide_analysis($a_id) { $queryParts = array( 'SELECT' => 'tx_nG6_project_analyze.uid', 'FROM' => 'tx_nG6_project_analyze', 'WHERE' => 'tx_nG6_project_analyze.analyze_id = '.$a_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts) ; $is_project_analyze = $GLOBALS['TYPO3_DB']->sql_num_rows( $res ) ; // If the analyse isn't link to run if( $is_project_analyze ) { // unhide the project $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ( 'tx_nG6_project, tx_nG6_project_analyze', 'tx_nG6_project.uid = tx_nG6_project_analyze.project_id AND tx_nG6_project_analyze.analyze_id = '.$a_id , array('tx_nG6_project.hidden' => '0') ) ; } // If the analyse is link to run else { // unhide the project and the run $GLOBALS['TYPO3_DB']->exec_UPDATEquery ( 'tx_nG6_project, tx_nG6_project_run, tx_nG6_run, tx_nG6_run_analyze', 'tx_nG6_project.uid = tx_nG6_project_run.project_id '. 'AND tx_nG6_project_run.run_id = tx_nG6_run.uid '. 'AND tx_nG6_run.uid = tx_nG6_run_analyze.run_id '. 'AND tx_nG6_run_analyze.analyze_id = '.$a_id , array('tx_nG6_project.hidden' => '0', 'tx_nG6_run.hidden' => '0') ) ; } // Change the analysis itself $GLOBALS['TYPO3_DB']-> exec_UPDATEquery ('tx_nG6_analyze', 'uid='.$a_id, array('hidden' => '0')); } /** * Delete an analyze and results from database project * * @param string $a_id the analyze id * @param string $user_login the user login * @param string $user_pwd the user password * @param string $data_folder the data folder * @return 0=>everything ok, 1=>user right problem, 2=>wrong authentification, 3=>connection error */ function delete_analysis($a_id, $user_login, $user_pwd, $data_folder) { $res = 0; // First select the analyse $my_analysis = tx_nG6_db::select_analyse($a_id); // Delete the analysis results from the database $table='tx_nG6_result'; $where='tx_nG6_result.analyze_id='.$a_id; $GLOBALS['TYPO3_DB']-> exec_DELETEquery ($table, $where); // Intermediate tables $table='tx_nG6_project_analyze'; $where='analyze_id='.$a_id; $GLOBALS['TYPO3_DB']-> exec_DELETEquery ($table, $where); $table='tx_nG6_run_analyze'; $where='analyze_id='.$a_id; $GLOBALS['TYPO3_DB']-> exec_DELETEquery ($table, $where); // Finaly the analysis itself $table='tx_nG6_analyze'; $where='tx_nG6_analyze.uid='.$a_id; $res1 = $GLOBALS['TYPO3_DB']-> exec_DELETEquery ($table, $where); if ($res1 != 1) { $res = 1; } if ($res == 0) { // Delete the analyse directory $res = tx_nG6_utils::delete_directory($user_login, $user_pwd, $data_folder.$my_analysis['directory']); } return $res; } /* * User functions *------------------------------------------------------------*/ /** * Return if the user is authorized or not to access the specified project and run * * @param int $user_id the user id * @param string $project_id the project id * @param string $project_id the run id * @return boolean */ function user_is_authorized ($user_id, $project_id, $run_id) { $authorized = false; // public project ? $queryParts = array( 'SELECT' => 'public', 'FROM' => 'tx_nG6_project', 'WHERE' => 'uid='.$project_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $val = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); $authorized = ($val['public'] == 0); // not a public project if(!$authorized){ // authorized in project ? if ($project_id) { $queryParts = array( 'SELECT' => 'fe_rights.right_id ', 'FROM' => 'fe_rights INNER JOIN tx_nG6_project ON tx_nG6_project.uid=fe_rights.project_id ', 'WHERE' => 'fe_rights.fe_user_id='.$user_id.' AND tx_nG6_project.uid='.$project_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res1 = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $val = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res1); if(isset($val['right_id'])){ $authorized = true; } // authorized in run ? } elseif ($run_id) { $queryParts = array( 'SELECT' => 'fe_rights.right_id ', 'FROM' => 'fe_rights '. 'INNER JOIN tx_nG6_project ON tx_nG6_project.uid=fe_rights.project_id '. 'INNER JOIN tx_nG6_project_run ON tx_nG6_project.uid=tx_nG6_project_run.project_id ', 'WHERE' => 'fe_rights.fe_user_id='.$user_id.' AND tx_nG6_project_run.uid='.$run_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res1 = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $val = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res1); if(isset($val['right_id'])){ $authorized = true; } } } return $authorized; } /** * Return if the user is a superuser (administrator) for the specified project/run/analyse * * @param string $user_id the user id * @param string $type can be project/run/analyse * @param string $uid the [project/run/analyse]'s uid * @return boolean {1 = ok, 0 = nok} */ function is_administrator($user_id, $type, $uid) { $is_admin = false; if(!$user_id == null){ // Project if ($type == 'project') { $is_admin = tx_nG6_db::is_project_administrator($user_id, $uid); // Run } elseif ($type == 'run') { $queryParts = array( 'SELECT' => 'project_id', 'FROM' => 'tx_nG6_project_run', 'WHERE' => 'run_id='.$uid, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res1 = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $val = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res1); $is_admin = tx_nG6_db::is_project_administrator($user_id, $val['project_id']); // Analyze } elseif ($type == 'analyze') { $queryParts = array( 'SELECT' => 'run_id', 'FROM' => 'tx_nG6_run_analyze', 'WHERE' => 'analyze_id='.$uid, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); // Run_analyze if ($GLOBALS['TYPO3_DB']->sql_num_rows($res) > 0) { $val = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); $queryParts = array( 'SELECT' => 'project_id', 'FROM' => 'tx_nG6_project_run', 'WHERE' => 'run_id='.$val['run_id'], 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res2 = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $val = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2); $is_admin = tx_nG6_db::is_project_administrator($user_id, $val['project_id']); // project_analyze } else { $queryParts = array( 'SELECT' => 'project_id', 'FROM' => 'tx_nG6_project_analyze', 'WHERE' => 'analyze_id='.$uid, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res2 = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $val = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2); $is_admin = tx_nG6_db::is_project_administrator($user_id, $val['project_id']); } } } return $is_admin; } /** * Get user's rights on project. * * @param int $project_id the project id * @param int $user_id the user id */ function get_user_right_on_project($user_id, $project_id) { $right_id = -1; $queryParts = array( 'SELECT' => 'fe_rights.right_id AS right_id ', 'FROM' => 'fe_rights', 'WHERE' => 'fe_rights.fe_user_id='. $user_id .' AND fe_rights.project_id='.$project_id ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $right_id = $row['right_id']; } return $right_id; } /** * Return true if the user is a member on the project * * @param int $user_id the user id * @param int $project_id ths project id */ function is_project_member($user_id, $project_id){ $is_member = false; $right = tx_nG6_db::get_user_right_on_project($user_id, $project_id); if ($right == 0) { $is_member = true; } return $is_member; } /** * Return true if the user is a manager on the project * * @param int $user_id the user id * @param int $project_id ths project id */ function is_project_manager($user_id, $project_id){ $is_manager = false; $right = tx_nG6_db::get_user_right_on_project($user_id, $project_id); if ($right == 1) { $is_manager = true; } return $is_manager; } /** * Return true if the user is an administrator on the project * * @param int $user_id the user id * @param int $project_id ths project id */ function is_project_administrator($user_id, $project_id){ $is_admin = false; $right = tx_nG6_db::get_user_right_on_project($user_id, $project_id); if ($right == 2) { $is_admin = true; } return $is_admin; } /** * Get all users with rights on the project. * * @param int $project_id the project id */ function get_all_users_on_project($project_id){ $users = array(); $queryParts = Array( 'SELECT' => 'fe_users.uid, fe_users.username, fe_users.lastlogin, fe_users.first_name, ' .' fe_users.last_name, fe_users.email, fe_rights.right_id, fe_users.cruser_id ', 'FROM' => 'fe_users INNER JOIN fe_rights ON fe_users.uid=fe_rights.fe_user_id ', 'WHERE' => 'fe_rights.project_id='.$project_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '', ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $res_tab = array(); while($res_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $user_id = $res_row['uid']; $lastlogin = date("d-m-Y", $res_row['lastlogin']); $cruser_infos = tx_nG6_db::get_user_informations($res_row['cruser_id']); if (!isset ($users['user_'.$user_id])){ $users['user_'.$user_id] = array( 'id' => $user_id, 'username' => $res_row['username'], 'lastlogin' => $lastlogin, 'first_name' => $res_row['first_name'], 'last_name' => $res_row['last_name'], 'email' => $res_row['email'], 'right_id' => $res_row['right_id'], 'cruser_id' => $res_row['cruser_id'], 'cruser_name' => $cruser_infos['username'] ); } } return $users; } /** * Delete acces from a project to a specific member * * @param int $user_id the user id * @param int $project_id the project id */ function delete_access_to_project($user_id, $project_id){ $GLOBALS['TYPO3_DB']->exec_DELETEquery('fe_rights', 'fe_rights.fe_user_id='.$user_id.' AND fe_rights.project_id='.$project_id); } /** * Change right on project for a member. * * @param int $user_id the user id * @param int $project_id the project id * @param int $right the right id (0=member, 1=manager, 2=admin) */ function change_access_to_project($user_id, $project_id, $right){ $GLOBALS['TYPO3_DB']->exec_UPDATEquery ('fe_rights', 'fe_rights.fe_user_id='.$user_id.' AND fe_rights.project_id='.$project_id, array('fe_rights.right_id' => $right)); } /** * Add a new member to the project. * * @param int $user_id the user id * @param int $project_id the project id * @param int $right the right id (0=member, 1=manager, 2=admin) */ function add_access_to_project($user_id, $project_id, $right_id){ $member_tab = array( 'fe_user_id' => $user_id, 'project_id' => $project_id, 'right_id' => $right_id ); $GLOBALS['TYPO3_DB']->exec_INSERTquery ('fe_rights', $member_tab); } /** * Get all usernames, firstnames and lastnames starting with a string. * * @param string $name_start the string part * @param string $user_col the fe_users column to use * @return array */ function get_all_names_starting_with($name_start, $user_col) { $queryParts = Array( 'SELECT' => 'fe_users.uid, fe_users.username, fe_users.last_name, fe_users.first_name, fe_users.password, fe_users.email, fe_users.cruser_id, fe_groups.title', 'FROM' => 'fe_users INNER JOIN fe_groups ON fe_users.usergroup=fe_groups.uid', 'WHERE' => 'fe_users.'.$user_col.' LIKE "'.$name_start.'%"', 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '', ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $res_tab = array(); while($res_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $res_tab[] = array( 'uid' => $res_row['uid'], 'username' => $res_row['username'], 'first_name' => $res_row['first_name'], 'last_name' => $res_row['last_name'], 'password' => $res_row['password'], 'email' => $res_row['email'], 'group' => $res_row['title'], 'cruser_id' => $res_row['cruser_id'] ); } return $res_tab; } /** * Get all groupnames starting with a string. * * @param string $group_name_start the string part * @return array */ function get_all_group_starting_with($group_name_start) { $queryParts = Array( 'SELECT' => 'fe_groups.uid, fe_groups.title', 'FROM' => 'fe_groups', 'WHERE' => 'fe_groups.title LIKE "'.$group_name_start.'%"', 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '', ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $res_tab = array(); while($res_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $res_tab[] = array( 'uid' => $res_row['uid'], 'title' => $res_row['title'] ); } return $res_tab; } /** * Get user informations. * * @param int $user_id the user id */ function get_user_informations($user_id){ $queryParts = Array( 'SELECT' => 'fe_users.uid, fe_users.username, fe_users.last_name, fe_users.first_name, fe_users.password, fe_users.email, fe_users.cruser_id', 'FROM' => 'fe_users', 'WHERE' => 'fe_users.uid='.$user_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '', ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $res_tab = null; while($res_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $res_tab = array( 'uid' => $res_row['uid'], 'username' => $res_row['username'], 'first_name' => $res_row['first_name'], 'last_name' => $res_row['last_name'], 'password' => $res_row['password'], 'email' => $res_row['email'], 'cruser_id' => $res_row['cruser_id'] ); } return $res_tab; } function get_user_id_by_username($username){ $uid = null; $queryParts = Array( 'SELECT' => 'fe_users.uid', 'FROM' => 'fe_users', 'WHERE' => 'fe_users.username LIKE "'.$username.'" ', 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '', ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($res_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $uid = $res_row['uid']; } return $uid; } /** * Create a new user in the DB. * * @param array $user_datas the user array */ function create_new_user($user_name, $first_name, $last_name, $email, $password, $cruser_id, $group_id, $pid){ // Create new user $user_datas = array( 'username' => $user_name, 'pid' => $pid, 'first_name' => $first_name, 'last_name' => $last_name, 'email' => $email, 'password' => $password, 'cruser_id' => $cruser_id, 'usergroup' => $group_id, 'tstamp' => time(), 'crdate' => time() ); $GLOBALS['TYPO3_DB']->exec_INSERTquery('fe_users', $user_datas); } /** * Tell if the group name exists in the DB. * * @param string $group_name the group name */ function get_group_id($group_name) { $exists = null; $queryParts = Array( 'SELECT' => 'fe_groups.uid', 'FROM' => 'fe_groups', 'WHERE' => 'fe_groups.title="'.$group_name.'" ', 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '', ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($res_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { if(isset($res_row['uid'])){ $exists = $res_row['uid']; } } return $exists; } /** * Found the usergroup of a user. * * @param int $user_id user id * @return the user group, null error */ function get_user_usergroup($user_id){ $usergroup = null; $queryParts = Array( 'SELECT' => 'fe_users.usergroup', 'FROM' => 'fe_users', 'WHERE' => 'fe_users.uid='.$user_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '', ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($res_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $usergroup = $res_row['usergroup']; } return $usergroup; } /** * Number of project the user can access to * * @param int $user_id the user id * @return string the count */ function count_number_of_project_access($user_id) { $queryParts = array( 'SELECT' => 'COUNT(fe_rights.project_id) AS p_number ', 'FROM' => 'fe_rights', 'WHERE' => 'fe_rights.fe_user_id='.$user_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $number = $row['p_number']; } return $number; } /** * Delete a user from database * * @param int $user_id the user id */ function delete_user($user_id){ $GLOBALS['TYPO3_DB']->exec_DELETEquery('fe_users', 'fe_users.uid='.$user_id); } /** * Count user in a group * * @param int $group_id the group id * @return string the count */ function count_users_in_group($group_id){ $queryParts = array( 'SELECT' => 'COUNT(fe_users.usergroup) AS g_count ', 'FROM' => 'fe_users', 'WHERE' => 'fe_users.usergroup='.$group_id, 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '' ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $number = $row['g_count']; } return $number; } /** * Delete a group from database * * @param int $group_id the group id */ function delete_group($group_id){ $GLOBALS['TYPO3_DB']->exec_DELETEquery('fe_groups', 'fe_groups.uid='.$group_id); } /** * Create a new group in the DB. * * @param array $group_datas the group array */ function create_new_group($cruser_id, $group_name) { // Create new user $group_datas = array( 'cruser_id' => $cruser_id, 'title' => $group_name, 'hidden' => 0, 'deleted' => 0, 'description' => '', 'subgroup' => '', 'tstamp' => time(), 'crdate' => time() ); $GLOBALS['TYPO3_DB']->exec_INSERTquery('fe_groups', $group_datas); } /* * DB integrity functions *------------------------------------------------------------*/ /** * Check the integrity of 'fe_rights_levels' table. */ function check_db_rights_level(){ $queryParts = Array( 'SELECT' => 'fe_rights_levels.right_level_id, fe_rights_levels.right_level_label ', 'FROM' => 'fe_rights_levels ', 'WHERE' => '', 'GROUPBY' => '', 'ORDERBY' => '', 'LIMIT' => '', ); $res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts); $res_tab = array(); while($res_row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $res_tab = array( 'id' => $res_row['right_level_id'], 'label' => $res_row['right_level_label'] ); } // insert if( !in_array('member', array_values($res_tab)) ){ $insert_rows = Array( 'right_level_id' => 0, 'right_level_label' => 'member' ); $GLOBALS['TYPO3_DB']->exec_INSERTquery('fe_rights_levels', $insert_rows); } if( !in_array('manager', array_values($res_tab)) ){ $insert_rows = Array( 'right_level_id' => 1, 'right_level_label' => 'manager' ); $GLOBALS['TYPO3_DB']->exec_INSERTquery('fe_rights_levels', $insert_rows); } if( !in_array('administrator', array_values($res_tab)) ){ $insert_rows = Array( 'right_level_id' => 2, 'right_level_label' => 'administrator' ); $GLOBALS['TYPO3_DB']->exec_INSERTquery('fe_rights_levels', $insert_rows); } } } if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/nG6/class.tx_nG6_db.php']) { include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/nG6/class.tx_nG6_db.php']); } ?>