[svn r15846] optimization

skala
Daniel Perales 17 years ago
parent 7ca041a812
commit c2fdbf7504
  1. 37
      main/survey/create_new_survey.php
  2. 7
      main/survey/question.php
  3. 91
      main/survey/survey.lib.php
  4. 24
      main/survey/survey.php

@ -24,7 +24,7 @@
* @package dokeos.survey
* @author unknown, the initial survey that did not make it in 1.8 because of bad code
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University: cleanup, refactoring and rewriting large parts (if not all) of the code
* @version $Id: create_new_survey.php 15840 2008-07-23 22:59:44Z dperales $
* @version $Id: create_new_survey.php 15846 2008-07-24 20:29:41Z dperales $
*
* @todo only the available platform languages should be used => need an api get_languages and and api_get_available_languages (or a parameter)
*/
@ -124,8 +124,14 @@ $form = new FormValidator('survey', 'post', api_get_self().'?action='.$_GET['act
if ($_GET['action'] == 'edit' AND isset($_GET['survey_id']) AND is_numeric($_GET['survey_id']))
{
$form->addElement('hidden', 'survey_id');
}
$form->addElement('text', 'survey_code', get_lang('SurveyCode'), array('size' => '40'));
}
$survey_code = $form->addElement('text', 'survey_code', get_lang('SurveyCode'), array('size' => '40'));
if ($_GET['action'] == 'edit') {
$survey_code->freeze();
$form->applyFilter('survey_code', 'strtoupper');
}
$fck_attribute['Width'] = '100%';
$fck_attribute['Height'] = '100';
$fck_attribute['ToolbarSet'] = 'Survey';
@ -156,25 +162,28 @@ $surveytypes[1] = get_lang('Conditional');
if ($_GET['action'] == 'add'){
$form->addElement('select', 'survey_type', get_lang('SelectType'), $surveytypes);
$sql = 'SELECT survey_id,title FROM '.$table_survey.' WHERE type = 1';
$rs = api_sql_query($sql,__FILE__,__LINE__);
$list_surveys[0] = '';
while($row = Database::fetch_array($rs,NUM)){
$list_surveys[$row[0]] = $row[1];
}
if(count($list_surveys)>1)$form->addElement('select', 'parent_id', get_lang('ParentId'), $list_surveys);
$sql = 'SELECT survey_id,title FROM '.$table_survey.' WHERE survey_type = 1 AND author = '.$_SESSION['_user']['user_id'];
$rs = api_sql_query($sql,__FILE__,__LINE__);
if(Database::num_rows($rs)>0){
$list_surveys[0] = '';
while($row = Database::fetch_array($rs,NUM)){
$list_surveys[$row[0]] = $row[1];
}
$form->addElement('select', 'parent_id', get_lang('ParentSurvey'), $list_surveys);
}
}
if ($survey_data['type']==1 || $_GET['action'] == 'add' ){
$form->addElement('checkbox', 'one_question_page', get_lang('OneQuestionPerPage'));
if ($survey_data['survey_type']==1 || $_GET['action'] == 'add' ){
$form->addElement('checkbox', 'one_question_per_page', get_lang('OneQuestionPerPage'));
$form->addElement('checkbox', 'shuffle', get_lang('ActivateShuffle'));
}
$form->addElement('submit', 'submit_survey', get_lang('Ok'));
// setting the rules
$form->addRule('survey_code', '<div class="required">'.get_lang('ThisFieldIsRequired'), 'required');
if ($_GET['action'] == 'add'){
$form->addRule('survey_code', '<div class="required">'.get_lang('ThisFieldIsRequired'), 'required');
}
$form->addRule('survey_title', '<div class="required">'.get_lang('ThisFieldIsRequired'), 'required');
$form->addRule('start_date', get_lang('InvalidDate'), 'date');
$form->addRule('end_date', get_lang('InvalidDate'), 'date');

@ -23,7 +23,7 @@
* @package dokeos.survey
* @author unknown, the initial survey that did not make it in 1.8 because of bad code
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University: cleanup, refactoring and rewriting large parts of the code
* @version $Id: question.php 15840 2008-07-23 22:59:44Z dperales $
* @version $Id: question.php 15846 2008-07-24 20:29:41Z dperales $
*/
// name of the language file that needs to be included
@ -63,11 +63,10 @@ if (strlen(strip_tags($survey_data['title'])) > 40)
$urlname .= '...';
}
if($survey_data['type']==1){
if($survey_data['survey_type']==1){
$sql = 'SELECT id FROM '.Database :: get_course_table(TABLE_SURVEY_GROUP).' WHERE survey_id = '.(int)$_GET['survey_id'].' LIMIT 1';
$rs = api_sql_query($sql,__FILE__,__LINE__);
$row = Database::fetch_array($rs,NUM);
if($row==false) {
if(Database::num_rows($rs)===0) {
header('Location: survey.php?survey_id='.(int)$_GET['survey_id'].'&message='.'YouNeedToCreateGroups');
exit;
}

@ -23,7 +23,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
* @version $Id: survey.lib.php 15840 2008-07-23 22:59:44Z dperales $
* @version $Id: survey.lib.php 15846 2008-07-24 20:29:41Z dperales $
*
* @todo move this file to inc/lib
* @todo use consistent naming for the functions (save vs store for instance)
@ -77,11 +77,11 @@ class survey_manager
$return['survey_share'] = $return['is_shared'];
$return['survey_introduction'] = $return['intro'];
$return['survey_thanks'] = $return['surveythanks'];
$return['survey_type'] = $return['type'];
$return['one_question_page'] = $return['one_question_page'];
$return['survey_type'] = $return['survey_type'];
$return['one_question_per_page'] = $return['one_question_per_page'];
$return['shuffle'] = $return['shuffle'];
$return['parent_id'] = $return['parent_id'];
$return['version'] = $return['version'];
$return['survey_version'] = $return['survey_version'];
return $return;
}
@ -107,19 +107,20 @@ class survey_manager
}*/
$shared_survey_id=0;
// check if the code doesn't soon exists in this language
$sql = 'SELECT 1 FROM '.$table_survey.' WHERE code="'.Database::escape_string($values['survey_code']).'" AND lang="'.Database::escape_string($values['survey_language']).'"';
$rs = api_sql_query($sql, __FILE__, __LINE__);
if(Database::num_rows($rs)>0)
{
$return['message'] = 'ThisSurveyCodeSoonExistsInThisLanguage';
$return['type'] = 'error';
$return['id'] = isset($values['survey_id']) ? $values['survey_id'] : 0;
return $return;
}
if (!$values['survey_id'] OR !is_numeric($values['survey_id']))
{
// check if the code doesn't soon exists in this language
$sql = 'SELECT 1 FROM '.$table_survey.' WHERE code="'.Database::escape_string($values['survey_code']).'" AND lang="'.Database::escape_string($values['survey_language']).'"';
$rs = api_sql_query($sql, __FILE__, __LINE__);
if(Database::num_rows($rs)>0)
{
$return['message'] = 'ThisSurveyCodeSoonExistsInThisLanguage';
$return['type'] = 'error';
$return['id'] = isset($values['survey_id']) ? $values['survey_id'] : 0;
return $return;
}
if ($values['anonymous']=='')
{
$values['anonymous']=0;
@ -128,40 +129,40 @@ class survey_manager
$additional['columns'] = '';
$additional['values'] = '';
if($values['survey_type']==1){
$additional['columns'] = ', type';
$additional['columns'] = ', survey_type';
$additional['values'] .= ",'1'";
$additional['columns'] .= ', shuffle';
$additional['values'] .= ",'".Database::escape_string($values['shuffle'])."'";
$additional['columns'] .= ', one_question_page';
$additional['values'] .= ",'".Database::escape_string($values['one_question_page'])."'";
$additional['columns'] .= ', one_question_per_page';
$additional['values'] .= ",'".Database::escape_string($values['one_question_per_page'])."'";
$additional['columns'] .= ', parent_id';
$additional['values'] .= ",'".Database::escape_string($values['parent_id'])."'";
// logic for versioning surveys
if(!empty($values['parent_id'])){
$additional['columns'] .= ', version';
$sql = 'SELECT version FROM '.$table_survey.' WHERE parent_id = '.$values['parent_id'].' ORDER BY version DESC LIMIT 1';
$additional['columns'] .= ', survey_version';
$sql = 'SELECT survey_version FROM '.$table_survey.' WHERE parent_id = '.$values['parent_id'].' ORDER BY survey_version DESC LIMIT 1';
$rs = api_sql_query($sql,__FILE__,__LINE__);
$row = Database::fetch_array($rs,ASSOC);
if($row==false) {
$sql = 'SELECT version FROM '.$table_survey.' WHERE survey_id = '.$values['parent_id'];
if(Database::num_rows($rs)===0) {
$sql = 'SELECT survey_version FROM '.$table_survey.' WHERE survey_id = '.$values['parent_id'];
$rs = api_sql_query($sql,__FILE__,__LINE__);
$getversion = Database::fetch_array($rs,ASSOC);
if(empty($getversion['version'])){
$additional['values'] .= ",'".++$getversion['version']."'";
if(empty($getversion['survey_version'])){
$additional['values'] .= ",'".++$getversion['survey_version']."'";
} else {
$additional['values'] .= ",'".$getversion['version'].".1'";
$additional['values'] .= ",'".$getversion['survey_version'].".1'";
}
} else {
if(strpos($row['version'], '.')===false){
$additional['values'] .= ",'".($row['version']+1)."'";
if(strpos($row['survey_version'], '.')===false){
$row['survey_version'] = $row['survey_version'] + 1;
$additional['values'] .= ",'".$row['survey_version']."'";
} else {
$getlast= split('\.',$row['version']);
$getlast= split('\.',$row['survey_version']);
$lastversion = array_pop($getlast);
$lastversion++;
$lastversion = $lastversion + 1;
$insertnewversion = implode('.',$getlast).'.'.$lastversion;
$additional['values'] .= ",'".$insertnewversion."'";
}
@ -205,10 +206,9 @@ class survey_manager
}
$additionalsets = ", shuffle = '".Database::escape_string($values['shuffle'])."'";
$additionalsets .= ", one_question_page = '".Database::escape_string($values['one_question_page'])."'";
$additionalsets .= ", one_question_per_page = '".Database::escape_string($values['one_question_per_page'])."'";
$sql = "UPDATE $table_survey SET
code = '".Database::escape_string($values['survey_code'])."',
title = '".Database::escape_string($values['survey_title'])."',
subtitle = '".Database::escape_string($values['survey_subtitle'])."',
author = '".Database::escape_string($_user['user_id'])."',
@ -328,7 +328,9 @@ class survey_manager
//get groups
$sql = "SELECT * from $table_survey_group WHERE survey_id='".$parent_survey."'";
$res = api_sql_query($sql, __FILE__, __LINE__);
$res = api_sql_query($sql, __FILE__, __LINE__);
if(Database::num_rows($res)===0) return true;
while($row = Database::fetch_array($res,ASSOC)){
$sql1 = 'INSERT INTO '.$table_survey_group.' (name,description,survey_id) VALUES (\''.Database::escape_string($row['name']).'\',\''.Database::escape_string($row['description']).'\',\''.$new_survey_id.'\')';
$res1 = api_sql_query($sql1, __FILE__, __LINE__);
@ -339,9 +341,9 @@ class survey_manager
$sql = "SELECT * FROM $table_survey_question WHERE survey_id='".$parent_survey."'";
$res = api_sql_query($sql, __FILE__, __LINE__);
while($row = Database::fetch_array($res,ASSOC)){
$sql2 = 'INSERT INTO '.$table_survey_question.' (survey_id,survey_question,survey_question_comment,type,display,sort,shared_question_id,max_value,cond_group_basic,cond_group_sec1,cond_group_sec2) VALUES '.
$sql2 = 'INSERT INTO '.$table_survey_question.' (survey_id,survey_question,survey_question_comment,type,display,sort,shared_question_id,max_value,survey_group_pri,survey_group_sec1,survey_group_sec2) VALUES '.
'(\''.$new_survey_id.'\',\''.Database::escape_string($row['survey_question']).'\',\''.Database::escape_string($row['survey_comment']).'\',\''.$row['type'].'\',\''.$row['display'].'\',\''.$row['sort'].'\',\''.$row['shared_question_id'].'\',\''.$row['max_value'].
'\',\''.$group_id[$row['cond_group_basic']].'\',\''.$group_id[$row['cond_group_sec1']].'\',\''.$group_id[$row['cond_group_sec2']].'\')';
'\',\''.$group_id[$row['survey_group_pri']].'\',\''.$group_id[$row['survey_group_sec1']].'\',\''.$group_id[$row['survey_group_sec2']].'\')';
$res2 = api_sql_query($sql2, __FILE__, __LINE__);
$question_id[$row['question_id']] = Database::insert_id();
}
@ -519,12 +521,12 @@ class survey_manager
$return['shared_question_id'] = $row['shared_question_id'];
$return['maximum_score'] = $row['max_value'];
if($row['cond_group_basic']!=0){
$return['assigned'] = $row['cond_group_basic'];
if($row['survey_group_pri']!=0){
$return['assigned'] = $row['survey_group_pri'];
$return['choose'] = 1;
} else {
$return['assigned1'] = $row['cond_group_sec1'];
$return['assigned2'] = $row['cond_group_sec2'];
$return['assigned1'] = $row['survey_group_sec1'];
$return['assigned2'] = $row['survey_group_sec2'];
$return['choose'] = 2;
}
@ -669,13 +671,12 @@ class survey_manager
$additional['value'] = '';
if($_POST['choose']==1)
{
$additional['column'] = ',cond_group_basic';
$additional['column'] = ',survey_group_pri';
$additional['value'] = ",'".Database::escape_string($_POST['assigned'])."'";
} elseif($_POST['choose']==2) {
$additional['column'] = ',cond_group_sec1, cond_group_sec2';
$additional['column'] = ',survey_group_sec1, survey_group_sec2';
$additional['value'] = ",'".Database::escape_string($_POST['assigned1'])."'".",'".Database::escape_string($_POST['assigned2'])."'";
}
// adding the question to the survey_question table
$sql = "INSERT INTO $tbl_survey_question (survey_id,survey_question,survey_question_comment,type,display, sort, shared_question_id, max_value".$additional['column'].") VALUES (
@ -700,9 +701,9 @@ class survey_manager
$additionalsets = '';
if($_POST['choose']==1){
$additionalsets = ',cond_group_basic = \''.Database::escape_string($_POST['assigned']).'\', cond_group_sec1 = \'0\', cond_group_sec2 = \'0\' ';
$additionalsets = ',survey_group_pri = \''.Database::escape_string($_POST['assigned']).'\', survey_group_sec1 = \'0\', survey_group_sec2 = \'0\' ';
} elseif($_POST['choose']==2) {
$additionalsets = ',cond_group_basic = \'0\', cond_group_sec1 = \''.Database::escape_string($_POST['assigned1']).'\', cond_group_sec2 = \''.Database::escape_string($_POST['assigned2']).'\' ';
$additionalsets = ',survey_group_pri = \'0\', survey_group_sec1 = \''.Database::escape_string($_POST['assigned1']).'\', survey_group_sec2 = \''.Database::escape_string($_POST['assigned2']).'\' ';
}
$setadditionals = $additional['set'][1].$additional['set'][2].$additional['set'][3];
@ -1246,7 +1247,7 @@ class question
$this->html .=' <tr><td colspan="">
<fieldset style="border:1px solid black"><legend>'.get_lang('Condition').'</legend>
<b>'.get_lang('Basic').'</b><br />
<b>'.get_lang('Primary').'</b><br />
'.'<input type="radio" name="choose" value="1" '.(($form_content['choose']==1)?'checked':'').
'><select name="assigned">'.$grouplist.'</select><br />';

@ -21,7 +21,7 @@ Tel. +32 (2) 211 34 56
* @package dokeos.survey
* @author unknown
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University: cleanup, refactoring and rewriting large parts of the code
* @version $Id: survey.php 15840 2008-07-23 22:59:44Z dperales $
* @version $Id: survey.php 15846 2008-07-24 20:29:41Z dperales $
*
* @todo use quickforms for the forms
*/
@ -61,13 +61,13 @@ $interbreadcrumb[] = array ("url" => "survey_list.php", "name" => get_lang('Surv
// getting the survey information
$survey_data = survey_manager::get_survey($_GET['survey_id']);
$tool_name = substr(html_entity_decode($survey_data['title'],ENT_QUOTES,$charset), 0, 40);
$is_survey_type_1 = ($survey_data['survey_type']==1)?true:false;
if (strlen(strip_tags($survey_data['title'])) > 40)
{
$tool_name .= '...';
}
if(($_GET['action']=='addgroup')||($_GET['action']=='deletegroup')){
if($is_survey_type_1 && ($_GET['action']=='addgroup')||($_GET['action']=='deletegroup')){
$table_survey_group = Database::get_course_table(TABLE_SURVEY_GROUP);
$_POST['name'] = trim($_POST['name']);
if(($_GET['action']=='addgroup')){
@ -126,7 +126,7 @@ if (isset($_GET['message']))
Display::display_warning_message(get_lang($_GET['message']), false);
}
}
if(!empty($survey_data['version'])) echo '<b>'.get_lang('Version').': '.$survey_data['version'].'</b>';
if(!empty($survey_data['survey_version'])) echo '<b>'.get_lang('Version').': '.$survey_data['survey_version'].'</b>';
// We exit here is the first or last question is a pagebreak (which causes errors)
SurveyUtil::check_first_last_question($_GET['survey_id']);
@ -161,7 +161,7 @@ echo ' <th>'.get_lang('Title').'</th>';
echo ' <th>'.get_lang('Type').'</th>';
echo ' <th>'.get_lang('NumberOfOptions').'</th>';
echo ' <th width="100">'.get_lang('Modify').'</th>';
if($survey_data['type']==1) echo '<th width="100">'.get_lang('Condition').'</th>';
if($is_survey_type_1) echo '<th width="100">'.get_lang('Condition').'</th>';
echo ' </tr>';
// Displaying the table contents with all the questions
$question_counter = 1;
@ -208,12 +208,12 @@ while ($row = mysql_fetch_assoc($result))
echo ' </td>';
$question_counter++;
if($survey_data['type']==1) echo '<td>'.(($survey_data['cond_group_basic']==0)?get_lang('Basic'):get_lang('Secondary')).'</td>';
if($is_survey_type_1) echo '<td>'.(($row['survey_group_pri']==0)?get_lang('Secondary'):get_lang('Primary')).'</td>';
echo '</tr>';
}
echo '</table>';
if($survey_data['type']==1)
if($is_survey_type_1)
{
echo '<br /><br /><b>'.get_lang('ManageGroups').'</b><br /><br />';
@ -242,7 +242,7 @@ if($survey_data['type']==1)
echo '<input type="submit" value="'.get_lang('Save').'"'.'<input type="button" value="'.get_lang('Cancel').'" onclick="window.location.href = \'survey.php?survey_id='.(int)$_GET['survey_id'].'\';" />';
} else {
echo '<input type="text" maxlength="20" name="name" value="" size="10">';
echo '<input type="text" maxlength="150" name="description" value="" size="40">';
echo '<input type="text" maxlength="250" name="description" value="" size="80">';
echo '<input type="submit" value="'.get_lang('Create').'"';
}
echo '</form><br />';
@ -256,11 +256,11 @@ if($survey_data['type']==1)
$sql = 'SELECT id,name,description FROM '.$table_surve_group.' WHERE survey_id = '.Database::escape_string($_GET['survey_id']);
$rs = api_sql_query($sql,__FILE__,__LINE__);
while($row = Database::fetch_array($rs,NUM)){
$grouplist .= '<tr><td>'.$row[1].'</td><td>'.$row[2].'</td><td>'.
'<a href="survey.php?survey_id='.(int)$_GET['survey_id'].'&gid='.$row[0].'&action=editgroup">'.
while($row = Database::fetch_array($rs,ASSOC)){
$grouplist .= '<tr><td>'.$row['name'].'</td><td>'.$row['description'].'</td><td>'.
'<a href="survey.php?survey_id='.(int)$_GET['survey_id'].'&gid='.$row['id'].'&action=editgroup">'.
Display::return_icon('edit.gif', get_lang('Edit')).'</a> '.
'<a href="survey.php?survey_id='.(int)$_GET['survey_id'].'&gid='.$row[0].'&action=deletegroup" onclick="javascript:if(!confirm(\''.addslashes(htmlentities(sprintf(get_lang('DeleteSurveyGroup'),$row[1]).'?',ENT_QUOTES,$charset)).'\')) return false;">'.
'<a href="survey.php?survey_id='.(int)$_GET['survey_id'].'&gid='.$row['id'].'&action=deletegroup" onclick="javascript:if(!confirm(\''.addslashes(htmlentities(sprintf(get_lang('DeleteSurveyGroup'),$row['name']).'?',ENT_QUOTES,$charset)).'\')) return false;">'.
Display::return_icon('delete.gif', get_lang('Delete')).'</a>'.
'</td></tr>';
}

Loading…
Cancel
Save