|
|
|
|
@ -24,7 +24,7 @@ |
|
|
|
|
* @package dokeos.survey |
|
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University: cleanup, refactoring and rewriting large parts (if not all) of the code |
|
|
|
|
@author Julio Montoya Armas <gugli100@gmail.com>, Dokeos: Personality Test modification and rewriting large parts of the code |
|
|
|
|
* @version $Id: survey.lib.php 16401 2008-09-21 17:45:28Z elixir_inter $ |
|
|
|
|
* @version $Id: survey.lib.php 16410 2008-09-22 17:43:07Z juliomontoya $ |
|
|
|
|
* |
|
|
|
|
* @todo move this file to inc/lib |
|
|
|
|
* @todo use consistent naming for the functions (save vs store for instance) |
|
|
|
|
@ -33,7 +33,6 @@ $config['survey']['debug'] = false; |
|
|
|
|
require_once(api_get_path(LIBRARY_PATH).'usermanager.lib.php'); |
|
|
|
|
class survey_manager |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
/****************************************************************************************************** |
|
|
|
|
SURVEY FUNCTIONS |
|
|
|
|
*****************************************************************************************************/ |
|
|
|
|
@ -207,14 +206,24 @@ class survey_manager |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
if(strpos($row['survey_version'], '.')===false){ |
|
|
|
|
$row['survey_version'] = $row['survey_version'] + 1; |
|
|
|
|
$additional['values'] .= ",'".$row['survey_version']."'"; |
|
|
|
|
} else { |
|
|
|
|
$row = Database::fetch_array($rs,ASSOC); |
|
|
|
|
$pos = strpos($row['survey_version']); |
|
|
|
|
if($pos===false) |
|
|
|
|
{ |
|
|
|
|
//$new_version= substr($row['survey_version'],$pos, count()) |
|
|
|
|
echo $row['survey_version'] = $row['survey_version'] + 1; |
|
|
|
|
echo $additional['values'] .= ",'".$row['survey_version']."'"; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
$getlast= split('\.',$row['survey_version']); |
|
|
|
|
$lastversion = array_pop($getlast); |
|
|
|
|
$lastversion = $lastversion + 1; |
|
|
|
|
$insertnewversion = implode('.',$getlast).'.'.$lastversion; |
|
|
|
|
$add=implode('.',$getlast); |
|
|
|
|
if ($add!='') |
|
|
|
|
$insertnewversion = $add.'.'.$lastversion; |
|
|
|
|
else |
|
|
|
|
$insertnewversion = $lastversion; |
|
|
|
|
$additional['values'] .= ",'".$insertnewversion."'"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -4241,6 +4250,38 @@ class SurveyUtil { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function display_survey_list_for_coach() |
|
|
|
|
{ |
|
|
|
|
$parameters = array(); |
|
|
|
|
if ($_GET['do_search']) |
|
|
|
|
{ |
|
|
|
|
$message = get_lang('DisplaySearchResults').'<br />'; |
|
|
|
|
$message .= '<a href="'.api_get_self().'">'.get_lang('DisplayAll').'</a>'; |
|
|
|
|
Display::display_normal_message($message, false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Create a sortable table with survey-data |
|
|
|
|
$table = new SortableTable('surveys', 'get_number_of_surveys_for_coach', 'get_survey_data_for_coach',2); |
|
|
|
|
$table->set_additional_parameters($parameters); |
|
|
|
|
$table->set_header(0, '', false); |
|
|
|
|
$table->set_header(1, get_lang('SurveyName')); |
|
|
|
|
$table->set_header(2, get_lang('SurveyCode')); |
|
|
|
|
$table->set_header(3, get_lang('NumberOfQuestions')); |
|
|
|
|
$table->set_header(4, get_lang('Author')); |
|
|
|
|
$table->set_header(5, get_lang('Language')); |
|
|
|
|
//$table->set_header(6, get_lang('Shared')); |
|
|
|
|
$table->set_header(6, get_lang('AvailableFrom')); |
|
|
|
|
$table->set_header(7, get_lang('AvailableUntill')); |
|
|
|
|
$table->set_header(8, get_lang('Invite')); |
|
|
|
|
$table->set_header(9, get_lang('Anonymous')); |
|
|
|
|
$table->set_header(10, get_lang('Modify'), false,'width="120"'); |
|
|
|
|
$table->set_column_filter(9, 'anonymous_filter'); |
|
|
|
|
$table->set_column_filter(10, 'modify_filter_for_coach'); |
|
|
|
|
$table->display(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* This function changes the modify column of the sortable table |
|
|
|
|
* |
|
|
|
|
@ -4254,21 +4295,35 @@ class SurveyUtil { |
|
|
|
|
{ |
|
|
|
|
global $charset; |
|
|
|
|
$survey_id = Security::remove_XSS($survey_id); |
|
|
|
|
if (!api_is_course_coach(false,true)) |
|
|
|
|
$return = '<a href="create_new_survey.php?'.api_get_cidreq().'&action=edit&survey_id='.$survey_id.'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>'; |
|
|
|
|
|
|
|
|
|
if (!api_is_course_coach(false,true)) |
|
|
|
|
$return .= '<a href="survey_list.php?'.api_get_cidreq().'&action=delete&survey_id='.$survey_id.'" onclick="javascript:if(!confirm(\''.addslashes(htmlentities(get_lang("DeleteSurvey").'?',ENT_QUOTES,$charset)).'\')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>'; |
|
|
|
|
$return = '<a href="create_new_survey.php?'.api_get_cidreq().'&action=edit&survey_id='.$survey_id.'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>'; |
|
|
|
|
$return .= '<a href="survey_list.php?'.api_get_cidreq().'&action=delete&survey_id='.$survey_id.'" onclick="javascript:if(!confirm(\''.addslashes(htmlentities(get_lang("DeleteSurvey").'?',ENT_QUOTES,$charset)).'\')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>'; |
|
|
|
|
//$return .= '<a href="create_survey_in_another_language.php?id_survey='.$survey_id.'">'.Display::return_icon('copy.gif', get_lang('Copy')).'</a>'; |
|
|
|
|
//$return .= '<a href="survey.php?survey_id='.$survey_id.'">'.Display::return_icon('add.gif', get_lang('Add')).'</a>'; |
|
|
|
|
$return .= '<a href="preview.php?'.api_get_cidreq().'&survey_id='.$survey_id.'">'.Display::return_icon('preview.gif', get_lang('Preview')).'</a>'; |
|
|
|
|
$return .= '<a href="survey_invite.php?'.api_get_cidreq().'&survey_id='.$survey_id.'">'.Display::return_icon('survey_publish.gif', get_lang('Publish')).'</a>'; |
|
|
|
|
$return .= '<a href="survey_list.php?'.api_get_cidreq().'&action=empty&survey_id='.$survey_id.'" onclick="javascript:if(!confirm(\''.addslashes(htmlentities(get_lang("EmptySurvey").'?')).'\')) return false;">'.Display::return_icon('empty.gif', get_lang('EmptySurvey')).'</a>'; |
|
|
|
|
$return .= '<a href="reporting.php?'.api_get_cidreq().'&survey_id='.$survey_id.'">'.Display::return_icon('statistics.gif', get_lang('Reporting')).'</a>'; |
|
|
|
|
return $return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!api_is_course_coach(false,true)) |
|
|
|
|
$return .= '<a href="reporting.php?'.api_get_cidreq().'&survey_id='.$survey_id.'">'.Display::return_icon('statistics.gif', get_lang('Reporting')).'</a>'; |
|
|
|
|
|
|
|
|
|
function modify_filter_for_coach($survey_id) |
|
|
|
|
{ |
|
|
|
|
global $charset; |
|
|
|
|
$survey_id = Security::remove_XSS($survey_id); |
|
|
|
|
// $return = '<a href="create_new_survey.php?'.api_get_cidreq().'&action=edit&survey_id='.$survey_id.'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>'; |
|
|
|
|
//$return .= '<a href="survey_list.php?'.api_get_cidreq().'&action=delete&survey_id='.$survey_id.'" onclick="javascript:if(!confirm(\''.addslashes(htmlentities(get_lang("DeleteSurvey").'?',ENT_QUOTES,$charset)).'\')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>'; |
|
|
|
|
//$return .= '<a href="create_survey_in_another_language.php?id_survey='.$survey_id.'">'.Display::return_icon('copy.gif', get_lang('Copy')).'</a>'; |
|
|
|
|
//$return .= '<a href="survey.php?survey_id='.$survey_id.'">'.Display::return_icon('add.gif', get_lang('Add')).'</a>'; |
|
|
|
|
$return .= '<a href="preview.php?'.api_get_cidreq().'&survey_id='.$survey_id.'">'.Display::return_icon('preview.gif', get_lang('Preview')).'</a>'; |
|
|
|
|
$return .= '<a href="survey_invite.php?'.api_get_cidreq().'&survey_id='.$survey_id.'">'.Display::return_icon('survey_publish.gif', get_lang('Publish')).'</a>'; |
|
|
|
|
$return .= '<a href="survey_list.php?'.api_get_cidreq().'&action=empty&survey_id='.$survey_id.'" onclick="javascript:if(!confirm(\''.addslashes(htmlentities(get_lang("EmptySurvey").'?')).'\')) return false;">'.Display::return_icon('empty.gif', get_lang('EmptySurvey')).'</a>'; |
|
|
|
|
//$return .= '<a href="reporting.php?'.api_get_cidreq().'&survey_id='.$survey_id.'">'.Display::return_icon('statistics.gif', get_lang('Reporting')).'</a>'; |
|
|
|
|
return $return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns "yes" when given parameter is one, "no" for any other value |
|
|
|
|
* @param integer Whether anonymous or not |
|
|
|
|
@ -4342,9 +4397,31 @@ class SurveyUtil { |
|
|
|
|
$res = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
$obj = Database::fetch_object($res); |
|
|
|
|
return $obj->total_number_of_items; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function get_number_of_surveys_for_coach() |
|
|
|
|
{ |
|
|
|
|
/*global $table_survey; |
|
|
|
|
$search_restriction = SurveyUtil::survey_search_restriction(); |
|
|
|
|
if ($search_restriction) |
|
|
|
|
{ |
|
|
|
|
$search_restriction = 'WHERE '.$search_restriction; |
|
|
|
|
} |
|
|
|
|
$sql = "SELECT count(survey_id) AS total_number_of_items FROM ".$table_survey.' '.$search_restriction; |
|
|
|
|
$res = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
$obj = Database::fetch_object($res); |
|
|
|
|
return $obj->total_number_of_items; |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
//ugly fix |
|
|
|
|
require_once(api_get_path(LIBRARY_PATH).'surveymanager.lib.php'); |
|
|
|
|
$survey_tree = new SurveyTree(); |
|
|
|
|
return count($survey_tree->get_last_children_from_branch($survey_tree->surveylist)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* This function gets all the survey data that is to be displayed in the sortable table |
|
|
|
|
* |
|
|
|
|
@ -4370,8 +4447,6 @@ class SurveyUtil { |
|
|
|
|
$search_restriction = ' AND '.$search_restriction; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$session_condition = intval($_SESSION['id_session'])==0 ? '' : ' AND survey.session_id IN(0,'.intval($_SESSION['id_session']).') '; |
|
|
|
|
|
|
|
|
|
//IF(is_shared<>0,'V','-') AS col6, |
|
|
|
|
$sql = "SELECT |
|
|
|
|
survey.survey_id AS col0, |
|
|
|
|
@ -4389,7 +4464,6 @@ class SurveyUtil { |
|
|
|
|
LEFT JOIN $table_survey_question survey_question ON survey.survey_id = survey_question.survey_id |
|
|
|
|
, $table_user user |
|
|
|
|
WHERE survey.author = user.user_id |
|
|
|
|
$session_condition |
|
|
|
|
$search_restriction |
|
|
|
|
"; |
|
|
|
|
$sql .= " GROUP BY survey.survey_id"; |
|
|
|
|
@ -4404,6 +4478,60 @@ class SurveyUtil { |
|
|
|
|
return $surveys; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function get_survey_data_for_coach($from, $number_of_items, $column, $direction) |
|
|
|
|
{ |
|
|
|
|
//echo '<pre>'; |
|
|
|
|
//echo '----------------'; |
|
|
|
|
require_once(api_get_path(LIBRARY_PATH).'surveymanager.lib.php'); |
|
|
|
|
$survey_tree = new SurveyTree(); |
|
|
|
|
$last_version_surveys = $survey_tree->get_last_children_from_branch($survey_tree->surveylist); |
|
|
|
|
//echo '----------------'; |
|
|
|
|
//print_r($last_version_surveys); |
|
|
|
|
$list=array(); |
|
|
|
|
foreach($last_version_surveys as $survey) |
|
|
|
|
{ |
|
|
|
|
$list[]=$survey['id']; |
|
|
|
|
} |
|
|
|
|
$table_survey = Database :: get_course_table(TABLE_SURVEY); |
|
|
|
|
$table_survey_question = Database :: get_course_table(TABLE_SURVEY_QUESTION); |
|
|
|
|
$table_user = Database :: get_main_table(TABLE_MAIN_USER); |
|
|
|
|
|
|
|
|
|
//print_r($survey_tree->surveylist); |
|
|
|
|
|
|
|
|
|
//IF(is_shared<>0,'V','-') AS col6, |
|
|
|
|
$sql = "SELECT |
|
|
|
|
survey.survey_id AS col0, |
|
|
|
|
survey.title AS col1, |
|
|
|
|
survey.code AS col2, |
|
|
|
|
count(survey_question.question_id) AS col3, |
|
|
|
|
CONCAT(user.firstname, ' ', user.lastname) AS col4, |
|
|
|
|
survey.lang AS col5, |
|
|
|
|
survey.avail_from AS col6, |
|
|
|
|
survey.avail_till AS col7, |
|
|
|
|
CONCAT('<a href=\"survey_invitation.php?view=answered&survey_id=',survey.survey_id,'\">',survey.answered,'</a> / <a href=\"survey_invitation.php?view=invited&survey_id=',survey.survey_id,'\">',survey.invited, '</a>') AS col8, |
|
|
|
|
survey.anonymous AS col9, |
|
|
|
|
survey.survey_id AS col10 |
|
|
|
|
FROM $table_survey survey |
|
|
|
|
LEFT JOIN $table_survey_question survey_question ON survey.survey_id = survey_question.survey_id |
|
|
|
|
, $table_user user |
|
|
|
|
WHERE survey.author = user.user_id AND survey.survey_id IN (".implode(',',$list).") |
|
|
|
|
$search_restriction |
|
|
|
|
"; |
|
|
|
|
$sql .= " GROUP BY survey.survey_id"; |
|
|
|
|
$sql .= " ORDER BY col$column $direction "; |
|
|
|
|
$sql .= " LIMIT $from,$number_of_items"; |
|
|
|
|
|
|
|
|
|
$res = api_sql_query($sql, __FILE__, __LINE__); |
|
|
|
|
$surveys = array (); |
|
|
|
|
while ($survey = Database::fetch_array($res)) |
|
|
|
|
{ |
|
|
|
|
$surveys[] = $survey; |
|
|
|
|
} |
|
|
|
|
return $surveys; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Display all the active surveys for the given course user |
|
|
|
|
* |
|
|
|
|
@ -4699,4 +4827,5 @@ class SurveyUtil { |
|
|
|
|
return $field_list_array; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
?> |
|
|
|
|
|