@ -24,7 +24,7 @@
* @package dokeos.survey
* @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 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
@author Julio Montoya Armas < gugli100 @ gmail . com > , Dokeos: Personality Test modification and rewriting large parts of the code
* @version $Id: survey.lib.php 15884 2008-08-01 08:02:10Z yannoo $
* @version $Id: survey.lib.php 15947 2008-08-07 16:12:49Z juliomontoya $
*
*
* @todo move this file to inc/lib
* @todo move this file to inc/lib
* @todo use consistent naming for the functions (save vs store for instance)
* @todo use consistent naming for the functions (save vs store for instance)
@ -80,6 +80,10 @@ class survey_manager
$return['survey_thanks'] = $return['surveythanks'];
$return['survey_thanks'] = $return['surveythanks'];
$return['survey_type'] = $return['survey_type'];
$return['survey_type'] = $return['survey_type'];
$return['one_question_per_page']= $return['one_question_per_page'];
$return['one_question_per_page']= $return['one_question_per_page'];
$return['show_form_profile'] = $return['show_form_profile'];
$return['input_name_list'] = $return['input_name_list'];
$return['shuffle'] = $return['shuffle'];
$return['shuffle'] = $return['shuffle'];
$return['parent_id'] = $return['parent_id'];
$return['parent_id'] = $return['parent_id'];
$return['survey_version'] = $return['survey_version'];
$return['survey_version'] = $return['survey_version'];
@ -110,7 +114,6 @@ class survey_manager
if (!$values['survey_id'] OR !is_numeric($values['survey_id']))
if (!$values['survey_id'] OR !is_numeric($values['survey_id']))
{
{
// check if the code doesn't soon exists in this language
// 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']).'"';
$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__);
$rs = api_sql_query($sql, __FILE__, __LINE__);
@ -130,6 +133,45 @@ class survey_manager
$additional['columns'] = '';
$additional['columns'] = '';
$additional['values'] = '';
$additional['values'] = '';
if ($values['anonymous']==0)
{
// input_name_list
$additional['columns'] .= ', show_form_profile';
$additional['values'] .= ",'".Database::escape_string($values['show_form_profile'])."'";
if ($values['show_form_profile']==1)
{
// input_name_list
$fields=explode(',',$values['input_name_list']);
$field_values='';
foreach ($fields as $field )
{
if ($field!='')
{
if ($values[$field]=='')
$values[$field]=0;
$field_values.= $field.':'.$values[$field].'@';
}
}
$additional['columns'] .= ', form_fields';
$additional['values'] .= ",'".Database::escape_string($field_values)."'";
}
else
{
$additional['columns'] .= ', form_fields';
$additional['values'] .= ",''";
}
}
else
{
// input_name_list
$additional['columns'] .= ', show_form_profile';
$additional['values'] .= ",'0'";
$additional['columns'] .= ', form_fields';
$additional['values'] .= ",''";
}
if($values['survey_type']==1)
if($values['survey_type']==1)
{
{
$additional['columns'] = ', survey_type';
$additional['columns'] = ', survey_type';
@ -162,7 +204,9 @@ class survey_manager
{
{
$additional['values'] .= ",'".$getversion['survey_version'].".1'";
$additional['values'] .= ",'".$getversion['survey_version'].".1'";
}
}
} else {
}
else
{
if(strpos($row['survey_version'], '.')===false){
if(strpos($row['survey_version'], '.')===false){
$row['survey_version'] = $row['survey_version'] + 1;
$row['survey_version'] = $row['survey_version'] + 1;
$additional['values'] .= ",'".$row['survey_version']."'";
$additional['values'] .= ",'".$row['survey_version']."'";
@ -215,6 +259,37 @@ class survey_manager
$additionalsets = ", shuffle = '".Database::escape_string($values['shuffle'])."'";
$additionalsets = ", shuffle = '".Database::escape_string($values['shuffle'])."'";
$additionalsets .= ", one_question_per_page = '".Database::escape_string($values['one_question_per_page'])."'";
$additionalsets .= ", one_question_per_page = '".Database::escape_string($values['one_question_per_page'])."'";
if ($values['anonymous']==0)
{
$additionalsets .= ", show_form_profile = '".Database::escape_string($values['show_form_profile'])."'";
if ($values['show_form_profile']==1)
{
$fields=explode(',',$values['input_name_list']);
$field_values='';
foreach ($fields as $field )
{
if ($field!='')
{
if ($values[$field]=='')
$values[$field]=0;
$field_values.= $field.':'.$values[$field].'@';
}
}
$additionalsets .= ", form_fields = '".Database::escape_string($field_values)."'";
}
else
{
$additionalsets .= ", form_fields = '' ";
}
}
else
{
$additionalsets .= ", show_form_profile = '0'";
$additionalsets .= ", form_fields = '' ";
}
$sql = "UPDATE $table_survey SET
$sql = "UPDATE $table_survey SET
title = '".Database::escape_string($values['survey_title'])."',
title = '".Database::escape_string($values['survey_title'])."',
subtitle = '".Database::escape_string($values['survey_subtitle'])."',
subtitle = '".Database::escape_string($values['survey_subtitle'])."',
@ -997,7 +1072,6 @@ class survey_manager
$counter=1;
$counter=1;
if(is_array($form_content['answers']))
if(is_array($form_content['answers']))
{
{
//foreach ($form_content['answers'] as $key=>$answer) {
//foreach ($form_content['answers'] as $key=>$answer) {
for ($i=0;$i< count ( $ form_content [ ' answers ' ] ) ; $ i + + )
for ($i=0;$i< count ( $ form_content [ ' answers ' ] ) ; $ i + + )
{
{
@ -4362,5 +4436,247 @@ class SurveyUtil {
}
}
echo '< / table > ';
echo '< / table > ';
}
}
/**
* Creates a multi array with the user fields that we can show. We look the visibility with the api_get_setting function
* The username is always NOT able to change it.
* @author Julio Montoya Armas < gugli100 @ gmail . com > , Dokeos: Personality Test modification
* @return array[value_name][name]
* array[value_name][visibilty]
*
*/
function make_field_list()
{
// LAST NAME and FIRST NAME
$field_list_array=array();
$field_list_array['lastname']['name']=get_lang('Lastname');
$field_list_array['firstname']['name']=get_lang('Firstname');
if (api_get_setting('profile', 'name') !== 'true')
{
$field_list_array['firstname']['visibility']=0;
$field_list_array['lastname']['visibility']=0;
}
else
{
$field_list_array['firstname']['visibility']=1;
$field_list_array['lastname']['visibility']=1;
}
$field_list_array['username']['name']=get_lang('Username');
$field_list_array['username']['visibility']=0;
// OFFICIAL CODE
$field_list_array['official_code']['name']=get_lang('OfficialCode');
if (api_get_setting('profile', 'officialcode') !== 'true')
{
$field_list_array['official_code']['visibility']=1;
}
else
{
$field_list_array['official_code']['visibility']=0;
}
// EMAIL
$field_list_array['email']['name']=get_lang('Email');
if (api_get_setting('profile', 'email') !== 'true')
{
$field_list_array['email']['visibility']=1;
}
else
{
$field_list_array['email']['visibility']=0;
}
// OPENID URL
//$field_list_array[]='openid_authentication';
/*
if(is_profile_editable() & & api_get_setting('openid_authentication')=='true')
{
$form->addElement('text', 'openid', get_lang('OpenIDURL'), array('size' => 40));
if (api_get_setting('profile', 'openid') !== 'true')
$form->freeze('openid');
$form->applyFilter('openid', 'trim');
//if (api_get_setting('registration', 'openid') == 'true')
// $form->addRule('openid', get_lang('ThisFieldIsRequired'), 'required');
}*/
// PHONE
$field_list_array['phone']['name']=get_lang('Phone');
if (api_get_setting('profile', 'phone') !== 'true')
{
$field_list_array['phone']['visibility']=0;
}
else
{
$field_list_array['phone']['visibility']=1;
}
// LANGUAGE
$field_list_array['language']['name']=get_lang('Language');
if (api_get_setting('profile', 'language') !== 'true')
{
$field_list_array['language']['visibility']=0;
}
else
{
$field_list_array['language']['visibility']=1;
}
// EXTRA FIELDS
$extra = UserManager::get_extra_fields(0,50,5,'ASC');
$extra_data = UserManager::get_extra_user_data(api_get_user_id(),true);
foreach($extra as $id => $field_details)
{
if($field_details[6] == 0)
{
continue;
}
switch($field_details[2])
{
case USER_FIELD_TYPE_TEXT:
$field_list_array['extra_'.$field_details[1]]['name']=$field_details[3];
if ($field_details[7] == 0)
{
$field_list_array['extra_'.$field_details[1]]['visibility']=0;
}
else
{
$field_list_array['extra_'.$field_details[1]]['visibility']=1;
}
break;
case USER_FIELD_TYPE_TEXTAREA:
$field_list_array['extra_'.$field_details[1]]['name']=$field_details[3];
if ($field_details[7] == 0)
{
$field_list_array['extra_'.$field_details[1]]['visibility']=0;
}
else
{
$field_list_array['extra_'.$field_details[1]]['visibility']=1;
}
break;
case USER_FIELD_TYPE_RADIO:
$field_list_array['extra_'.$field_details[1]]['name']=$field_details[3];
if ($field_details[7] == 0)
{
$field_list_array['extra_'.$field_details[1]]['visibility']=0;
}
else
{
$field_list_array['extra_'.$field_details[1]]['visibility']=1;
}
break;
case USER_FIELD_TYPE_SELECT:
$field_list_array['extra_'.$field_details[1]]['name']=$field_details[3];
if ($field_details[7] == 0)
{
$field_list_array['extra_'.$field_details[1]]['visibility']=0;
}
else
{
$field_list_array['extra_'.$field_details[1]]['visibility']=1;
}
break;
case USER_FIELD_TYPE_SELECT_MULTIPLE:
$field_list_array['extra_'.$field_details[1]]['name']=$field_details[3];
if ($field_details[7] == 0)
{
$field_list_array['extra_'.$field_details[1]]['visibility']=0;
}
else
{
$field_list_array['extra_'.$field_details[1]]['visibility']=1;
}
break;
case USER_FIELD_TYPE_DATE:
$field_list_array['extra_'.$field_details[1]]['name']=$field_details[3];
if ($field_details[7] == 0)
{
$field_list_array['extra_'.$field_details[1]]['visibility']=0;
}
else
{
$field_list_array['extra_'.$field_details[1]]['visibility']=1;
}
break;
case USER_FIELD_TYPE_DATETIME:
$field_list_array['extra_'.$field_details[1]]['name']=$field_details[3];
if ($field_details[7] == 0)
{
$field_list_array['extra_'.$field_details[1]]['visibility']=0;
}
else
{
$field_list_array['extra_'.$field_details[1]]['visibility']=1;
}
break;
case USER_FIELD_TYPE_DOUBLE_SELECT:
$field_list_array['extra_'.$field_details[1]]['name']=$field_details[3];
if ($field_details[7] == 0)
{
$field_list_array['extra_'.$field_details[1]]['visibility']=0;
}
else
{
$field_list_array['extra_'.$field_details[1]]['visibility']=1;
}
/*
foreach ($field_details[8] as $key=>$element)
{
if ($element[2][0] == '*')
{
$values['*'][$element[0]] = str_replace('*','',$element[2]);
}
else
{
$values[0][$element[0]] = $element[2];
}
}
$group='';
$group[] =& HTML_QuickForm::createElement('select', 'extra_'.$field_details[1],'',$values[0],'');
$group[] =& HTML_QuickForm::createElement('select', 'extra_'.$field_details[1].'*','',$values['*'],'');
$form->addGroup($group, 'extra_'.$field_details[1], $field_details[3], ' ');
if ($field_details[7] == 0) $form->freeze('extra_'.$field_details[1]);
// recoding the selected values for double : if the user has selected certain values, we have to assign them to the correct select form
if (key_exists('extra_'.$field_details[1], $extra_data))
{
// exploding all the selected values (of both select forms)
$selected_values = explode(';',$extra_data['extra_'.$field_details[1]]);
$extra_data['extra_'.$field_details[1]] =array();
// looping through the selected values and assigning the selected values to either the first or second select form
foreach ($selected_values as $key=>$selected_value)
{
if (key_exists($selected_value,$values[0]))
{
$extra_data['extra_'.$field_details[1]]['extra_'.$field_details[1]] = $selected_value;
}
else
{
$extra_data['extra_'.$field_details[1]]['extra_'.$field_details[1].'*'] = $selected_value;
}
}
}*/
break;
case USER_FIELD_TYPE_DIVIDER:
//$form->addElement('static',$field_details[1], '< br / > < strong > '.$field_details[3].'< / strong > ');
break;
}
}
return $field_list_array;
}
}
}
?>
?>