Skip to content

Commit

Permalink
Merge branch 'Yii' of https://github.com/LimeSurvey/LimeSurvey into Yii
Browse files Browse the repository at this point in the history
  • Loading branch information
jcleeland committed Jul 11, 2012
2 parents c251bcd + 9f6f81b commit 5d909dc
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 79 deletions.
25 changes: 1 addition & 24 deletions application/controllers/admin/database.php
Original file line number Diff line number Diff line change
Expand Up @@ -1070,42 +1070,19 @@ function index($sa = null)
$usresult = Surveys_languagesettings::model()->findAllByPk(array('surveyls_survey_id'=>$surveyid, 'surveyls_language'=>$langname));
if (count($usresult)==0)
{
$bplang = $this->getController()->lang;
$aDefaultTexts=templateDefaultTexts($bplang,'unescaped');
if (getEmailFormat($surveyid) == "html")
{
$ishtml=true;
$aDefaultTexts['admin_detailed_notification']=$aDefaultTexts['admin_detailed_notification_css'].$aDefaultTexts['admin_detailed_notification'];
}
else
{
$ishtml=false;
}

$languagedetails=getLanguageDetails($langname);

$insertdata = array(
'surveyls_survey_id' => $surveyid,
'surveyls_language' => $langname,
'surveyls_title' => '',
'surveyls_email_invite_subj' => $aDefaultTexts['invitation_subject'],
'surveyls_email_invite' => $aDefaultTexts['invitation'],
'surveyls_email_remind_subj' => $aDefaultTexts['reminder_subject'],
'surveyls_email_remind' => $aDefaultTexts['reminder'],
'surveyls_email_confirm_subj' => $aDefaultTexts['confirmation_subject'],
'surveyls_email_confirm' => $aDefaultTexts['confirmation'],
'surveyls_email_register_subj' => $aDefaultTexts['registration_subject'],
'surveyls_email_register' => $aDefaultTexts['registration'],
'email_admin_notification_subj' => $aDefaultTexts['admin_notification_subject'],
'email_admin_notification' => $aDefaultTexts['admin_notification'],
'email_admin_responses_subj' => $aDefaultTexts['admin_detailed_notification_subject'],
'email_admin_responses' => $aDefaultTexts['admin_detailed_notification'],
'surveyls_dateformat' => $languagedetails['dateformat']
);
$setting= new Surveys_languagesettings;
foreach ($insertdata as $k => $v)
$setting->$k = $v;
$setting->save();
unset($bplang);
}
}
}
Expand Down
79 changes: 52 additions & 27 deletions application/controllers/admin/remotecontrol.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,17 @@ public function test()
{
echo 'Added Arabian as additional language'.'<br>';
}
$aResult=$myJSONRPCClient->modify_survey_locale_settings($sSessionKey, $iSurveyID,array('surveyls_welcometext'=>'An Arabian welcome text!'),'ar');
if ($aResult['status']=='OK')
{
echo 'Modified survey locale setting welcometext for Arabian in survey ID '.$iSurveyID.'<br>';
}

$aResult=$myJSONRPCClient->delete_survey_language($sSessionKey, $iSurveyID,'ar');
if ($aResult['status']=='OK')
{
echo 'Removed Arabian as additional language'.'<br>';
}
die();
$aResult=$myJSONRPCClient->delete_survey($sSessionKey, $iSurveyID);
echo 'Deleted survey SID:'.$iSurveyID.'-'.$aResult['status'].'<br>';

Expand Down Expand Up @@ -392,6 +397,18 @@ public function add_survey_language($sSessionKey, $iSurveyID, $sLanguage)
try
{
$oSurvey->save(); // save the change to database
$languagedetails=getLanguageDetails($sLanguage);

$insertdata = array(
'surveyls_survey_id' => $iSurveyID,
'surveyls_language' => $sLanguage,
'surveyls_title' => '',
'surveyls_dateformat' => $languagedetails['dateformat']
);
$setting= new Surveys_languagesettings;
foreach ($insertdata as $k => $v)
$setting->$k = $v;
$setting->save();
fixLanguageConsistency($iSurveyID,$sLanguage);
return array('status' => 'OK');
}
Expand Down Expand Up @@ -446,6 +463,7 @@ public function delete_survey_language($sSessionKey, $iSurveyID, $sLanguage)
try
{
$oSurvey->save(); // save the change to database
Surveys_languagesettings::model()->deleteByPk(array('surveyls_survey_id' => $iSurveyID, 'surveyls_language' => $sLanguage));
cleanLanguagesFromSurvey($iSurveyID,$oSurvey->additional_languages);
return array('status' => 'OK');
}
Expand Down Expand Up @@ -510,8 +528,7 @@ public function activate_tokens($sSessionKey, $iSurveyID, $aAttributeFields=arra
* @access public
* @param string $sSessionKey
* @param int $iSurveyID
* @return string
* @throws Zend_XmlRpc_Server_Exception
* @return array
*/
public function delete_survey($sSessionKey, $iSurveyID)
{
Expand All @@ -528,45 +545,54 @@ public function delete_survey($sSessionKey, $iSurveyID)
}

/**
* RPC routine to add a response to the survey table
* RPC routine to add a response to the survey response table
* Returns the id of the inserted survey response
*
* @access public
* @param string $sSessionKey
* @param int $iSurveyID
* @param struct $aResponseData
* @return int
* @throws Zend_XmlRpc_Server_Exception
* @return int The response ID
*/
public function add_response($sSessionKey, $iSurveyID, $aResponseData)
{
if ($this->_checkSessionKey($sSessionKey))
{
if (hasSurveyPermission($iSurveyID, 'response', 'create'))
$oSurvey=Survey::model()->findByPk($iSurveyID);
if (is_null($oSurvey))
{
return array('status' => 'Error: Invalid survey ID');
}

if (hasSurveyPermission($iSurveyID, 'responses', 'create'))
{
if (!Yii::app()->db->schema->getTable('{{survey_' . $iSurveyID . '}}'))
return array('status' => 'No survey response table');

//set required values if not set

// @todo: This is part of the validation and should be done in the model instead
// @todo: Some of this is part of the validation and should be done in the model instead
if (!isset($aResponseData['submitdate']))
$aResponseData['submitdate'] = date("Y-m-d H:i:s");
if (!isset($aResponseData['datestamp']))
$aResponseData['datestamp'] = date("Y-m-d H:i:s");
if (!isset($aResponseData['startdate']))
$aResponseData['startdate'] = date("Y-m-d H:i:s");
if (!isset($aResponseData['startlanguage']))
$aResponseData['startlanguage'] = getBaseLanguageFromSurveyID($iSurveyID);

if ($oSurvey->datestamp=='Y')
{
if (!isset($aResponseData['datestamp']))
$aResponseData['datestamp'] = date("Y-m-d H:i:s");
if (!isset($aResponseData['startdate']))
$aResponseData['startdate'] = date("Y-m-d H:i:s");
}

Survey_dynamic::sid($iSurveyID);
$survey_dynamic = new Survey_dynamic;
$result = $survey_dynamic->insert($aResponseData);

if ($result)
return $survey_dynamic->primaryKey;
else
return array('status' => 'Unable to add survey');
return array('status' => 'Unable to add response');
}
else
return array('status' => 'No permission');
Expand All @@ -580,12 +606,12 @@ public function add_response($sSessionKey, $iSurveyID, $aResponseData)
* @access public
* @param string $sSessionKey
* @param int $iSurveyID
* @param struct $participant_data
* @param bool $create_token
* @param struct $aParticipantData
* @param bool Optional - Defaults to true and determins if the access token automatically created
* @return array
* @throws Zend_XmlRpc_Server_Exception
*/
public function add_participants($sSessionKey, $iSurveyID, $participant_data, $create_token)
public function add_participants($sSessionKey, $iSurveyID, $aParticipantData, $bCreateToken=true)
{
if ($this->_checkSessionKey($sSessionKey))
{
Expand All @@ -600,35 +626,34 @@ public function add_participants($sSessionKey, $iSurveyID, $participant_data, $c
if (!Yii::app()->db->schema->getTable('{{tokens_' . $iSurveyID . '}}'))
return array('status' => 'No token table');

$field_names = Yii::app()->db->schema->getTable('{{tokens_' . $iSurveyID . '}}')->getColumnNames();
$field_names = array_flip($field_names);
$aDestinationFields = Yii::app()->db->schema->getTable('{{tokens_' . $iSurveyID . '}}')->getColumnNames();
$aDestinationFields = array_flip($field_names);

foreach ($participant_data as &$participant)
foreach ($aParticipantData as &$aParticipant)
{
foreach ($participant as $field_name => $value)
if (!isset($field_names[$field_name]))
unset($participant[$field_name]);
$aParticipant=array_intersect_key($aParticipant,$aDestinationFields);

Tokens_dynamic::sid($iSurveyID);

Tokens_dynamic::sid($iSurveyID);
$token = new Tokens_dynamic;

if ($token->insert($participant))
if ($token->insert($aParticipant))
{
$new_token_id = $token->primaryKey;

if ($create_token)
if ($bCreateToken)
$token_string = Tokens_dynamic::model()->createToken($new_token_id);
else
$token_string = '';

$participant = array_merge($participant, array(
$aParticipant = array_merge($aParticipant, array(
'tid' => $new_token_id,
'token' => $token_string,
));
}
}

return $participant_data;
return $aParticipantData;
}
else
return array('status' => 'No permission');
Expand Down
27 changes: 0 additions & 27 deletions application/controllers/admin/surveyadmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -1619,23 +1619,8 @@ function insert($iSurveyId=null)
$sDescription = fixCKeditorText($sDescription);
$sWelcome = fixCKeditorText($sWelcome);

// Load default email templates for the chosen language
$oLanguage = new Limesurvey_lang($_POST['language']);
$aDefaultTexts = templateDefaultTexts($oLanguage, 'unescaped');
unset($oLanguage);

if ($_POST['htmlemail'] && $_POST['htmlemail'] == "Y")
{
$bIsHTMLEmail = true;
$aDefaultTexts['admin_detailed_notification'] = $aDefaultTexts['admin_detailed_notification_css'] . conditionalNewlineToBreak($aDefaultTexts['admin_detailed_notification'], $bIsHTMLEmail, 'unescaped');
}
else
{
$bIsHTMLEmail = false;
}

// Insert base language into surveys_language_settings table

$aInsertData = array('surveyls_survey_id' => $iNewSurveyid,
'surveyls_title' => $sTitle,
'surveyls_description' => $sDescription,
Expand All @@ -1644,18 +1629,6 @@ function insert($iSurveyId=null)
'surveyls_urldescription' => $_POST['urldescrip'],
'surveyls_endtext' => $_POST['endtext'],
'surveyls_url' => $_POST['url'],
'surveyls_email_invite_subj' => $aDefaultTexts['invitation_subject'],
'surveyls_email_invite' => conditionalNewlineToBreak($aDefaultTexts['invitation'], $bIsHTMLEmail, 'unescaped'),
'surveyls_email_remind_subj' => $aDefaultTexts['reminder_subject'],
'surveyls_email_remind' => conditionalNewlineToBreak($aDefaultTexts['reminder'], $bIsHTMLEmail, 'unescaped'),
'surveyls_email_confirm_subj' => $aDefaultTexts['confirmation_subject'],
'surveyls_email_confirm' => conditionalNewlineToBreak($aDefaultTexts['confirmation'], $bIsHTMLEmail, 'unescaped'),
'surveyls_email_register_subj' => $aDefaultTexts['registration_subject'],
'surveyls_email_register' => conditionalNewlineToBreak($aDefaultTexts['registration'], $bIsHTMLEmail, 'unescaped'),
'email_admin_notification_subj' => $aDefaultTexts['admin_notification_subject'],
'email_admin_notification' => conditionalNewlineToBreak($aDefaultTexts['admin_notification'], $bIsHTMLEmail, 'unescaped'),
'email_admin_responses_subj' => $aDefaultTexts['admin_detailed_notification_subject'],
'email_admin_responses' => $aDefaultTexts['admin_detailed_notification'],
'surveyls_dateformat' => (int) $_POST['dateformat'],
'surveyls_numberformat' => (int) $_POST['numberformat']
);
Expand Down
98 changes: 97 additions & 1 deletion application/models/Surveys_languagesettings.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,102 @@ public function relations()
);
}


/**
* Returns this model's validation rules
*
*/
public function rules()
{
return array(
array('surveyls_email_invite_subj','lsdefault'),
array('surveyls_email_invite','lsdefault'),
array('surveyls_email_remind_subj','lsdefault'),
array('surveyls_email_remind','lsdefault'),
array('surveyls_email_confirm_subj','lsdefault'),
array('surveyls_email_confirm','lsdefault'),
array('surveyls_email_register_subj','lsdefault'),
array('surveyls_email_register','lsdefault'),
array('email_admin_notification_subj','lsdefault'),
array('email_admin_notification','lsdefault'),
array('email_admin_responses_subj','lsdefault'),
array('email_admin_responses','lsdefault'),

array('surveyls_email_invite_subj','xssfilter'),
array('surveyls_email_invite','xssfilter'),
array('surveyls_email_remind_subj','xssfilter'),
array('surveyls_email_remind','xssfilter'),
array('surveyls_email_confirm_subj','xssfilter'),
array('surveyls_email_confirm','xssfilter'),
array('surveyls_email_register_subj','xssfilter'),
array('surveyls_email_register','xssfilter'),
array('email_admin_notification_subj','xssfilter'),
array('email_admin_notification','xssfilter'),
array('email_admin_responses_subj','xssfilter'),
array('email_admin_responses','xssfilter'),

array('surveyls_title','xssfilter'),
array('surveyls_description','xssfilter'),
array('surveyls_welcometext','xssfilter'),
array('surveyls_endtext','xssfilter'),
array('surveyls_urldescription','xssfilter')
);
}


/**
* Defines the customs validation rule lsdefault
*
* @param mixed $attribute
* @param mixed $params
*/
public function lsdefault($attribute,$params)
{

$oLanguageTranslator = new Limesurvey_lang($this->surveyls_language);
$aDefaultTexts=templateDefaultTexts($oLanguageTranslator,'unescaped');

$aDefaultTextData=array('surveyls_email_invite_subj' => $aDefaultTexts['invitation_subject'],
'surveyls_email_invite' => $aDefaultTexts['invitation'],
'surveyls_email_remind_subj' => $aDefaultTexts['reminder_subject'],
'surveyls_email_remind' => $aDefaultTexts['reminder'],
'surveyls_email_confirm_subj' => $aDefaultTexts['confirmation_subject'],
'surveyls_email_confirm' => $aDefaultTexts['confirmation'],
'surveyls_email_register_subj' => $aDefaultTexts['registration_subject'],
'surveyls_email_register' => $aDefaultTexts['registration'],
'email_admin_notification_subj' => $aDefaultTexts['admin_notification_subject'],
'email_admin_notification' => $aDefaultTexts['admin_notification'],
'email_admin_responses_subj' => $aDefaultTexts['admin_detailed_notification_subject'],
'email_admin_responses' => $aDefaultTexts['admin_detailed_notification']);
if (getEmailFormat($this->surveyls_survey_id) == "html")
{
$aDefaultTextData['admin_detailed_notification']=$aDefaultTexts['admin_detailed_notification_css'].$aDefaultTexts['admin_detailed_notification'];
}

if (empty($this->$attribute)) $this->$attribute=$aDefaultTextData[$attribute];
}


/**
* Defines the customs validation rule xssfilter
*
* @param mixed $attribute
* @param mixed $params
*/
public function xssfilter($attribute,$params)
{
if(Yii::app()->getConfig('filterxsshtml') && Yii::app()->session['USER_RIGHT_SUPERADMIN'] != 1)
{
$filter = new CHtmlPurifier();
$filter->options = array('URI.AllowedSchemes'=>array(
'http' => true,
'https' => true,
));
$this->$attribute = $filter->purify($this->$attribute);
}
}


/**
* Returns the token's captions
*
Expand Down Expand Up @@ -136,7 +232,7 @@ function insertNewSurvey($data, $xssfiltering = false)
return $this->insertSomeRecords($data);
}


function getSurveyNames($surveyid)
{
$lang = Yii::app()->session['adminlang'];
Expand Down

0 comments on commit 5d909dc

Please sign in to comment.