1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/limesurvey_ynh.git synced 2024-09-03 19:36:32 +02:00
limesurvey_ynh/sources/application/models/SurveyLanguageSetting.php

256 lines
9.2 KiB
PHP

<?php if ( ! defined('BASEPATH')) die('No direct script access allowed');
/*
* LimeSurvey
* Copyright (C) 2007-2011 The LimeSurvey Project Team / Carsten Schmitz
* All rights reserved.
* License: GNU/GPL License v2 or later, see LICENSE.php
* LimeSurvey is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*
*/
class SurveyLanguageSetting extends LSActiveRecord
{
/**
* Returns the table's name
*
* @access public
* @return string
*/
public function tableName()
{
return '{{surveys_languagesettings}}';
}
/**
* Returns the table's primary key
*
* @access public
* @return array
*/
public function primaryKey()
{
return array('surveyls_survey_id', 'surveyls_language');
}
/**
* Returns the static model of Settings table
*
* @static
* @access public
* @param string $class
* @return SurveyLanguageSetting
*/
public static function model($class = __CLASS__)
{
return parent::model($class);
}
/**
* Returns the relations of this model
*
* @access public
* @return array
*/
public function relations()
{
$alias = $this->getTableAlias();
return array(
'survey' => array(self::BELONGS_TO, 'Survey', '', 'on' => "$alias.surveyls_survey_id = survey.sid"),
'owner' => array(self::BELONGS_TO, 'User', '', 'on' => 'survey.owner_id = owner.uid'),
);
}
/**
* 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','LSYii_Validators'),
array('surveyls_email_invite','LSYii_Validators'),
array('surveyls_email_remind_subj','LSYii_Validators'),
array('surveyls_email_remind','LSYii_Validators'),
array('surveyls_email_confirm_subj','LSYii_Validators'),
array('surveyls_email_confirm','LSYii_Validators'),
array('surveyls_email_register_subj','LSYii_Validators'),
array('surveyls_email_register','LSYii_Validators'),
array('email_admin_notification_subj','LSYii_Validators'),
array('email_admin_notification','LSYii_Validators'),
array('email_admin_responses_subj','LSYii_Validators'),
array('email_admin_responses','LSYii_Validators'),
array('surveyls_title','LSYii_Validators'),
array('surveyls_description','LSYii_Validators'),
array('surveyls_welcometext','LSYii_Validators'),
array('surveyls_endtext','LSYii_Validators'),
array('surveyls_url','LSYii_Validators','isUrl'=>true),
array('surveyls_urldescription','LSYii_Validators'),
array('surveyls_dateformat', 'numerical', 'integerOnly'=>true, 'min'=>'1', 'max'=>'12', 'allowEmpty'=>true),
array('surveyls_numberformat', 'numerical', 'integerOnly'=>true, 'min'=>'0', 'max'=>'1', 'allowEmpty'=>true),
);
}
/**
* Defines the customs validation rule lsdefault
*
* @param mixed $attribute
* @param mixed $params
*/
public function lsdefault($attribute,$params)
{
$oLanguageTranslator = new Limesurvey_lang($this->surveyls_language);
$oSurvey=Survey::model()->findByPk($this->surveyls_survey_id);
$sEmailFormat=$oSurvey->htmlemail=='Y'?'html':'';
$aDefaultTexts=templateDefaultTexts($oLanguageTranslator,'unescaped', $sEmailFormat);
$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 ($sEmailFormat == "html")
{
$aDefaultTextData['admin_detailed_notification']=$aDefaultTexts['admin_detailed_notification_css'].$aDefaultTexts['admin_detailed_notification'];
}
if (empty($this->$attribute)) $this->$attribute=$aDefaultTextData[$attribute];
}
/**
* Returns the token's captions
*
* @access public
* @return array
*/
public function getAttributeCaptions()
{
$captions = @json_decode($this->surveyls_attributecaptions,true);
return $captions !== false ? $captions : array();
}
function getAllRecords($condition=FALSE, $return_query = TRUE)
{
$query = Yii::app()->db->createCommand()->select('*')->from('{{surveys_languagesettings}}');
if ($condition != FALSE)
{
$query->where($condition);
}
return ( $return_query ) ? $query->queryAll() : $query;
}
function getDateFormat($surveyid,$languagecode)
{
return Yii::app()->db->createCommand()->select('surveyls_dateformat')
->from('{{surveys_languagesettings}}')
->join('{{surveys}}','{{surveys}}.sid = {{surveys_languagesettings}}.surveyls_survey_id AND surveyls_survey_id = :surveyid')
->where('surveyls_language = :langcode')
->bindParam(":langcode", $languagecode, PDO::PARAM_STR)
->bindParam(":surveyid", $surveyid, PDO::PARAM_INT)
->queryScalar();
}
function getAllSurveys($hasPermission = FALSE)
{
$this->db->select('a.*, surveyls_title, surveyls_description, surveyls_welcometext, surveyls_url');
$this->db->from('surveys AS a');
$this->db->join('surveys_languagesettings','surveyls_survey_id=a.sid AND surveyls_language=a.language');
if ($hasPermission)
{
$this->db->where('a.sid IN (SELECT sid FROM {{permissions}} WHERE uid=:uid AND permission=\'survey\' and read_p=1) ')->bindParam(":uid", $this->session->userdata("loginID"), PDO::PARAM_INT);
}
$this->db->order_by('active DESC, surveyls_title');
return $this->db->get();
}
function getAllData($sid,$lcode)
{
$query = 'SELECT * FROM {{surveys}}, {{surveys_languagesettings}} WHERE sid=? AND surveyls_survey_id=? AND surveyls_language=?';
return $this->db->query($query, array($sid, $sid, $lcode));
}
function insertNewSurvey($data)
{
if (isset($data['surveyls_url']) && $data['surveyls_url']== 'http://') {$data['surveyls_url']="";}
return $this->insertSomeRecords($data);
}
/**
* Updates a single record identified by $condition with the
* key/value pairs in the $data array.
*
* @param type $data
* @param type $condition
* @param type $xssfiltering
* @return boolean
*/
function updateRecord($data,$condition='', $xssfiltering = false)
{
if (isset($data['surveyls_url']) && $data['surveyls_url']== 'http://') {$data['surveyls_url']="";}
/*
* Mdekker: don't think we need this anymore
if($xssfiltering)
{
$filter = new CHtmlPurifier();
$filter->options = array('URI.AllowedSchemes'=>array(
'http' => true,
'https' => true,
));
if (isset($data["description"]))
$data["description"] = $filter->purify($data["description"]);
if (isset($data["title"]))
$data["title"] = $filter->purify($data["title"]);
if (isset($data["welcome"]))
$data["welcome"] = $filter->purify($data["welcome"]);
if (isset($data["endtext"]))
$data["endtext"] = $filter->purify($data["endtext"]);
}
*/
$record = $this->findByPk($condition);
foreach ($data as $key => $value)
{
$record->$key = $value;
}
$record->save($xssfiltering);
return true;
}
function insertSomeRecords($data)
{
$lang = new self;
foreach ($data as $k => $v)
$lang->$k = $v;
return $lang->save();
}
}