Skip to content

Commit

Permalink
Dev: added a new static function to enforce theme configuration entri…
Browse files Browse the repository at this point in the history
…es in DB
  • Loading branch information
LouisGac committed Dec 22, 2017
1 parent 13f11b1 commit 54c3fee
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 8 deletions.
16 changes: 8 additions & 8 deletions application/controllers/admin/surveyadmin.php
Expand Up @@ -331,15 +331,16 @@ public function changetemplate($iSurveyID, $template)
$oTemplateConfiguration->template_name = $sTemplate;
$oTemplateConfiguration->save();

TemplateConfiguration::getInstanceFromSurveyId($iSurveyID, $sTemplate); // This will force the generation of the entry for survey group
// This will force the generation of the entry for survey group
TemplateConfiguration::checkAndcreateSurveyConfig($iSurveyId);
}

public function togglequickaction()
{
$quickactionstate = (int) SettingsUser::getUserSettingValue('quickaction_state');

switch ($quickactionstate) {
//
//
case null:
$save = SettingsUser::setUserSetting('quickaction_state', 1);
break;
Expand Down Expand Up @@ -433,8 +434,8 @@ public function view($iSurveyID, $gid = null, $qid = null)
$aData['showLastQuestion'] = false;
}
$aData['templateapiversion'] = Template::model()->getTemplateConfiguration(null, $iSurveyID)->getApiVersion();


$this->_renderWrappedTemplate('survey', array(), $aData);
}

Expand Down Expand Up @@ -1821,11 +1822,11 @@ public function getUrlParamsJSON($iSurveyID)
foreach ($aSurveyParameters as $oSurveyParameter) {
$row = $oSurveyParameter->attributes;
$row['questionTitle'] = $oSurveyParameter->question->title;

if ($oSurveyParameter->targetsqid != '') {
$row['subQuestionTitle'] = $oSurveyParameter->subquestion->title;
}

$row['qid'] = $oSurveyParameter->targetqid;
$row['sqid'] = $oSurveyParameter->targetsqid;
$aData['rows'][] = $row;
Expand Down Expand Up @@ -2011,8 +2012,7 @@ public function insert($iSurveyID = null)
Permission::model()->giveAllSurveyPermissions(Yii::app()->session['loginID'], $iNewSurveyid);

// This will force the generation of the entry for survey group
TemplateConfiguration::getInstanceFromSurveyId($iNewSurveyid, App()->request->getPost('template'));

TemplateConfiguration::checkAndcreateSurveyConfig($iNewSurveyid);
$createSample = ((int) App()->request->getPost('createsample', 0)) === 1;

// Figure out destination
Expand Down
53 changes: 53 additions & 0 deletions application/models/TemplateConfiguration.php
Expand Up @@ -238,6 +238,59 @@ public static function getInstanceFromSurveyId($iSurveyId, $sTemplateName = null
return $oTemplateConfigurationModel;
}

/**
* For a given survey, it checks if its theme have a all the needed configuration entries (survey + survey group). Else, it will create it.
* @TODO: recursivity for survey group
* @param int $iSurveyId
* @return TemplateConfiguration the template configuration for the survey group
*/
public static function checkAndcreateSurveyConfig($iSurveyId)
{
//if a template name is given also check against that
$oSurvey = Survey::model()->findByPk($iSurveyId);
$sTemplateName = $oSurvey->template;
$iSurveyGroupId = $oSurvey->gsid;

$criteria = new CDbCriteria();
$criteria->addCondition('sid=:sid');
$criteria->addCondition('template_name=:template_name');
$criteria->params = array('sid' => $iSurveyId, 'template_name' => $sTemplateName);

$oTemplateConfigurationModel = TemplateConfiguration::model()->find($criteria);


// TODO: Move to SurveyGroup creation, right now the 'lazy loading' approach is ok.
if (!is_a($oTemplateConfigurationModel, 'TemplateConfiguration') && $sTemplateName != null) {
$oTemplateConfigurationModel = TemplateConfiguration::getInstanceFromTemplateName($sTemplateName);
$oTemplateConfigurationModel->bUseMagicInherit = false;
$oTemplateConfigurationModel->id = null;
$oTemplateConfigurationModel->isNewRecord = true;
$oTemplateConfigurationModel->gsid = null;
$oTemplateConfigurationModel->sid = $iSurveyId;
$oTemplateConfigurationModel->setToInherit();
$oTemplateConfigurationModel->save();
}

$criteria = new CDbCriteria();
$criteria->addCondition('gsid=:gsid');
$criteria->addCondition('template_name=:template_name');
$criteria->params = array('gsid' => $iSurveyGroupId, 'template_name' => $sTemplateName);
$oTemplateConfigurationModel = TemplateConfiguration::model()->find($criteria);

if (!is_a($oTemplateConfigurationModel, 'TemplateConfiguration') && $sTemplateName != null) {
$oTemplateConfigurationModel = TemplateConfiguration::getInstanceFromTemplateName($sTemplateName);
$oTemplateConfigurationModel->bUseMagicInherit = false;
$oTemplateConfigurationModel->id = null;
$oTemplateConfigurationModel->isNewRecord = true;
$oTemplateConfigurationModel->sid = null;
$oTemplateConfigurationModel->gsid = $iSurveyGroupId;
$oTemplateConfigurationModel->setToInherit();
$oTemplateConfigurationModel->save();
}

return $oTemplateConfigurationModel;
}

/**
* Get an instance of a fitting TemplateConfiguration
*
Expand Down

0 comments on commit 54c3fee

Please sign in to comment.