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/controllers/admin/emailtemplates.php

174 lines
7.3 KiB
PHP

<?php
/*
* LimeSurvey
* Copyright (C) 2013 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.
*
*
*/
/**
* emailtemplates
*
* @package LimeSurvey
* @copyright 2011
* @access public
*/
class emailtemplates extends Survey_Common_Action {
/**
* Load edit email template screen.
* @param mixed $iSurveyId
* @return
*/
function index($iSurveyId)
{
$clang = $this->getController()->lang;
$iSurveyId = sanitize_int($iSurveyId);
App()->getClientScript()->registerPackage('jquery-superfish');
Yii::app()->loadHelper('admin.htmleditor');
Yii::app()->loadHelper('surveytranslator');
Yii::app()->session['FileManagerContext'] = "edit:emailsettings:{$iSurveyId}";
initKcfinder();
if(isset($iSurveyId) && getEmailFormat($iSurveyId) == 'html')
{
$ishtml = true;
}
else
{
$ishtml = false;
}
$grplangs = Survey::model()->findByPk($iSurveyId)->additionalLanguages;
$baselang = Survey::model()->findByPk($iSurveyId)->language;
array_unshift($grplangs,$baselang);
$sEditScript = PrepareEditorScript(false, $this->getController());
$aData['attrib'] = array();
$aData['bplangs'] = array();
$aData['defaulttexts'] = array();
if ($ishtml)
{
$sEscapeMode='html';
}
else
{
$sEscapeMode='unescaped';
}
foreach ($grplangs as $key => $grouplang)
{
$aData['bplangs'][$key] = new limesurvey_lang($grouplang);
$aData['attrib'][$key] = SurveyLanguageSetting::model()->find('surveyls_survey_id = :ssid AND surveyls_language = :ls', array(':ssid' => $iSurveyId, ':ls' => $grouplang));
$aData['attrib'][$key]['attachments'] = unserialize($aData['attrib'][$key]['attachments']);
$aData['defaulttexts'][$key] = templateDefaultTexts($aData['bplangs'][$key],$sEscapeMode);
}
$aData['surveyid'] = $iSurveyId;
$aData['ishtml'] = $ishtml;
$aData['grplangs'] = $grplangs;
$this->_renderWrappedTemplate('emailtemplates', array('output' => $sEditScript, 'emailtemplates_view'), $aData);
}
/**
* Function responsible to process any change in email template.
* @return
*/
function update($iSurveyId)
{
$uploadUrl = Yii::app()->getBaseUrl(true) . substr(Yii::app()->getConfig('uploadurl'),strlen(Yii::app()->getConfig('publicurl'))-1);
// We need the real path since we check that the resolved file name starts with this path.
$uploadDir = realpath(Yii::app()->getConfig('uploaddir'));
$save=Yii::app()->request->getPost('save','');
$clang = $this->getController()->lang;
if (Permission::model()->hasSurveyPermission($iSurveyId, 'surveylocale','update'))
{
$languagelist = Survey::model()->findByPk($iSurveyId)->additionalLanguages;
$languagelist[] = Survey::model()->findByPk($iSurveyId)->language;
array_filter($languagelist);
foreach ($languagelist as $langname)
{
if (isset($_POST['attachments'][$langname]))
{
foreach ($_POST['attachments'][$langname] as $template => &$attachments)
{
foreach ($attachments as $index => &$attachment)
{
// We again take the real path.
$localName = realpath(urldecode(str_replace($uploadUrl, $uploadDir, $attachment['url'])));
if ($localName !== false)
{
if (strpos($localName, $uploadDir) === 0)
{
$attachment['url'] = $localName;
$attachment['size'] = filesize($localName);
}
else
{
unset($attachments[$index]);
}
}
else
{
unset($attachments[$index]);
}
}
unset($attachments);
}
}
else
{
$_POST['attachments'][$langname] = array();
}
$attributes = array(
'surveyls_email_invite_subj' => $_POST['email_invitation_subj_'.$langname],
'surveyls_email_invite' => $_POST['email_invitation_'.$langname],
'surveyls_email_remind_subj' => $_POST['email_reminder_subj_'.$langname],
'surveyls_email_remind' => $_POST['email_reminder_'.$langname],
'surveyls_email_register_subj' => $_POST['email_registration_subj_'.$langname],
'surveyls_email_register' => $_POST['email_registration_'.$langname],
'surveyls_email_confirm_subj' => $_POST['email_confirmation_subj_'.$langname],
'surveyls_email_confirm' => $_POST['email_confirmation_'.$langname],
'email_admin_notification_subj' => $_POST['email_admin_notification_subj_'.$langname],
'email_admin_notification' => $_POST['email_admin_notification_'.$langname],
'email_admin_responses_subj' => $_POST['email_admin_detailed_notification_subj_'.$langname],
'email_admin_responses' => $_POST['email_admin_detailed_notification_'.$langname],
'attachments' => serialize($_POST['attachments'][$langname])
);
$usquery = SurveyLanguageSetting::model()->updateAll($attributes,'surveyls_survey_id = :ssid AND surveyls_language = :sl', array(':ssid' => $iSurveyId, ':sl' => $langname));
}
Yii::app()->session['flashmessage'] = $clang->gT("Email templates successfully saved.");
}
if($save=='saveclose')
$this->getController()->redirect(array('admin/survey/sa/view/surveyid/'.$iSurveyId));
else
self::index($iSurveyId);
}
/**
* Renders template(s) wrapped in header and footer
*
* @param string $sAction Current action, the folder to fetch views from
* @param string|array $aViewUrls View url(s)
* @param array $aData Data to be passed on. Optional.
*/
protected function _renderWrappedTemplate($sAction = 'emailtemplates', $aViewUrls = array(), $aData = array())
{
App()->getClientScript()->registerScriptFile(Yii::app()->getConfig('adminscripts') . 'emailtemplates.js');
$aData['display']['menu_bars']['surveysummary'] = 'editemailtemplates';
parent::_renderWrappedTemplate($sAction, $aViewUrls, $aData);
}
}