Skip to content

Commit

Permalink
DEV: clean out survey->surveyinfo VOL1 (#761)
Browse files Browse the repository at this point in the history
Fixed issue #12394: Adding question to quota shoult order questions in display order add quoteColumnName for order. Put the grouping criteria in separate method (reusable)
DEV: implement Survey->currentLanguageSettings
DEV: clean out survey->surveyinfo 1
DEV: clean out survey->surveyinfo dataentry 2
DEV: clean out survey->surveyinfo questions
DEV: clean out survey->surveyinfo tokens
DEV: clean out survey->surveyinfo tokens 2
DEV: clean out survey->surveyinfo questions
DEV: clean out survey->surveyinfo questions 2, remerge Survey
  • Loading branch information
TonisOrmisson authored and LouisGac committed Jul 10, 2017
1 parent d960a20 commit bfea6fa
Show file tree
Hide file tree
Showing 20 changed files with 299 additions and 315 deletions.
6 changes: 3 additions & 3 deletions application/controllers/admin/assessments.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,9 @@ protected function _renderWrappedTemplate($sAction = 'assessments', $aViewUrls =
{
$aData['sidemenu']['state'] = false;
$iSurveyID=$aData['surveyid'];
$surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo;
$survey = Survey::model()->findByPk($iSurveyID);
$aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$iSurveyID; // Close button
$aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")";
$aData['title_bar']['title'] = $survey->currentLanguageSettings->surveyls_title." (".gT("ID").":".$iSurveyID.")";
$aData['surveybar']['savebutton']['form'] = true;
$aData['surveybar']['saveandclosebutton']['form'] = true;
$aData['gid']=null;
Expand All @@ -92,6 +92,7 @@ protected function _renderWrappedTemplate($sAction = 'assessments', $aViewUrls =

private function _showAssessments($iSurveyID, $action)
{
$oSurvey = Survey::model()->findByPk($iSurveyID);
$oCriteria = new CDbCriteria(array('order' => 'id ASC'));
$oAssessments = Assessment::model()->findAllByAttributes(array('sid' => $iSurveyID), $oCriteria);
$aData = $this->_collectGroupData($iSurveyID);
Expand All @@ -103,7 +104,6 @@ private function _showAssessments($iSurveyID, $action)
if ($action == "assessmentedit" && Permission::model()->hasSurveyPermission($iSurveyID, 'assessments', 'update')) {
$aData = $this->_collectEditData($aData);
}
$oSurvey = Survey::model()->findByPk($iSurveyID);
$surveyinfo = getSurveyInfo($iSurveyID);
$aData['surveyinfo'] = $surveyinfo;
$aData['imageurl'] = Yii::app()->getConfig('adminimageurl');
Expand Down
81 changes: 27 additions & 54 deletions application/controllers/admin/dataentry.php
Original file line number Diff line number Diff line change
Expand Up @@ -270,31 +270,24 @@ public function import($surveyid)
{
$iSurveyId = sanitize_int($surveyid);

if(!Permission::model()->hasSurveyPermission($iSurveyId,'responses','create'))
{
if(!Permission::model()->hasSurveyPermission($iSurveyId,'responses','create')) {
Yii::app()->setFlashMessage(gT("No permission"), 'error');
return;
}

if (!App()->getRequest()->isPostRequest || App()->getRequest()->getPost('table') == 'none')
{
if (!App()->getRequest()->isPostRequest || App()->getRequest()->getPost('table') == 'none') {

// Schema that serves as the base for compatibility checks.
$baseSchema = SurveyDynamic::model($iSurveyId)->getTableSchema();
$tables = App()->getApi()->getOldResponseTables($iSurveyId);
$compatible = array();
$coercible = array();
foreach ($tables as $table)
{
foreach ($tables as $table) {
$schema = PluginDynamic::model($table)->getTableSchema();
if (PluginDynamic::model($table)->count() > 0)
{
if ($this->isCompatible($baseSchema, $schema))
{
if (PluginDynamic::model($table)->count() > 0) {
if ($this->isCompatible($baseSchema, $schema)) {
$compatible[] = $table;
}
elseif ($this->isCompatible($baseSchema, $schema, false))
{
} elseif ($this->isCompatible($baseSchema, $schema, false)) {
$coercible[] = $table;
}
}
Expand All @@ -319,61 +312,50 @@ public function import($surveyid)

//Get the menubar
$aData['display']['menu_bars']['browse'] = gT("Quick statistics");
$survey = Survey::model()->findByPk($iSurveyId);

$surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo;
$aData["surveyinfo"] = $surveyinfo;
$aData['title_bar']['title'] = gT('Browse responses').': '.$surveyinfo['surveyls_title'];

$aData['title_bar']['title'] = gT('Browse responses').': '.$survey->currentLanguageSettings->surveyls_title;
$aData['sidemenu']['state'] = false;
$aData['menu']['edition'] = true;
$aData['menu']['import'] = true;
$aData['menu']['close'] = true;

$this->_renderWrappedTemplate('dataentry', 'import', $aData);
}
else
{
} else {
$aSRIDConversions=array();
$targetSchema = SurveyDynamic::model($iSurveyId)->getTableSchema();
$sourceTable = PluginDynamic::model($_POST['table']);
$sourceSchema = $sourceTable->getTableSchema();

$fieldMap = array();
$pattern = '/([\d]+)X([\d]+)X([\d]+.*)/';
foreach ($sourceSchema->getColumnNames() as $name)
{
foreach ($sourceSchema->getColumnNames() as $name) {
// Skip id field.
if ($name == 'id')
{
if ($name == 'id') {
continue;
}

$matches = array();
// Exact match.
if ($targetSchema->getColumn($name))
{
if ($targetSchema->getColumn($name)) {
$fieldMap[$name] = $name;
}
elseif(preg_match($pattern, $name, $matches)) // Column name is SIDXGIDXQID
{
} elseif(preg_match($pattern, $name, $matches)) {
// Column name is SIDXGIDXQID
$qid = $matches[3];
$targetColumn = $this->getQidColumn($targetSchema, $qid);
if (isset($targetColumn))
{
if (isset($targetColumn)) {
$fieldMap[$name] = $targetColumn->name;
}
}
}
$imported = 0;
$sourceResponses = new CDataProviderIterator(new CActiveDataProvider($sourceTable), 500);
foreach ($sourceResponses as $sourceResponse)
{
foreach ($sourceResponses as $sourceResponse) {
$iOldID=$sourceResponse->id;
// Using plugindynamic model because I dont trust surveydynamic.
$targetResponse = new PluginDynamic("{{survey_$iSurveyId}}");

foreach($fieldMap as $sourceField => $targetField)
{
foreach($fieldMap as $sourceField => $targetField) {
$targetResponse[$targetField] = $sourceResponse[$sourceField];
}

Expand All @@ -394,8 +376,7 @@ public function import($surveyid)
$sOldTimingsTable=substr(substr($sourceTable->tableName(),0,strrpos($sourceTable->tableName(),'_')).'_timings'.substr($sourceTable->tableName(),strrpos($sourceTable->tableName(),'_')),strlen(Yii::app()->db->tablePrefix));
$sNewTimingsTable = "survey_{$surveyid}_timings";

if (isset($_POST['timings']) && $_POST['timings'] == 1 && tableExists($sOldTimingsTable) && tableExists($sNewTimingsTable))
{
if (isset($_POST['timings']) && $_POST['timings'] == 1 && tableExists($sOldTimingsTable) && tableExists($sNewTimingsTable)) {
// Import timings
$aFieldsOldTimingTable=array_values(Yii::app()->db->schema->getTable('{{'.$sOldTimingsTable.'}}')->columnNames);
$aFieldsNewTimingTable=array_values(Yii::app()->db->schema->getTable('{{'.$sNewTimingsTable.'}}')->columnNames);
Expand All @@ -405,10 +386,8 @@ public function import($surveyid)
$sQueryOldValues = "SELECT ".implode(", ",$aValidTimingFields)." FROM {{{$sOldTimingsTable}}} ";
$aQueryOldValues = Yii::app()->db->createCommand($sQueryOldValues)->query()->readAll(); //Checked
$iRecordCountT=0;
foreach ($aQueryOldValues as $sRecord)
{
if (isset($aSRIDConversions[$sRecord['id']]))
{
foreach ($aQueryOldValues as $sRecord) {
if (isset($aSRIDConversions[$sRecord['id']])) {
$sRecord['id']=$aSRIDConversions[$sRecord['id']];
}
else continue;
Expand Down Expand Up @@ -1949,26 +1928,20 @@ public function insert()
* view a dataentry
* @param mixed $surveyid
* @param mixed $lang
* @return
*/
public function view($surveyid, $lang=NULL)
{
$surveyid = sanitize_int($surveyid);
$survey = Survey::model()->findByPk($surveyid);
$lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
if(isset($lang)) $lang=sanitize_languagecode($lang);
$aViewUrls = array();

if (Permission::model()->hasSurveyPermission($surveyid, 'responses', 'create'))
{
$sDataEntryLanguage = Survey::model()->findByPk($surveyid)->language;
$surveyinfo=getSurveyInfo($surveyid);

$slangs = Survey::model()->findByPk($surveyid)->additionalLanguages;
if (Permission::model()->hasSurveyPermission($surveyid, 'responses', 'create')) {
$baselang = Survey::model()->findByPk($surveyid)->language;
array_unshift($slangs,$baselang);
$slangs = $survey->allLanguages;

if(is_null($lang) || !in_array($lang,$slangs))
{
if(is_null($lang) || !in_array($lang,$slangs)) {
$sDataEntryLanguage = $baselang;
} else {
$sDataEntryLanguage = $lang;
Expand All @@ -1981,6 +1954,7 @@ public function view($surveyid, $lang=NULL)
LimeExpressionManager::StartSurvey($surveyid, 'survey', NULL, false, LEM_PRETTY_PRINT_ALL_SYNTAX);
$moveResult = LimeExpressionManager::NavigateForwards();

$aData['survey'] = $survey;
$aData['thissurvey'] = $thissurvey;
$aData['langlistbox'] = $langlistbox;
$aData['surveyid'] = $surveyid;
Expand Down Expand Up @@ -2500,10 +2474,9 @@ protected function _renderWrappedTemplate($sAction = 'dataentry', $aViewUrls = a
if(isset($_POST['sid']))
$iSurveyId = $_POST['sid'];


$aData['display']['menu_bars']['browse'] = gT("Data entry");
$surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo;
$aData["surveyinfo"] = $surveyinfo;
$survey = Survey::model()->findByPk($iSurveyId);
$aData["survey"] = $survey;
$aData['title_bar']['title'] = gT("Data entry");
}
parent::_renderWrappedTemplate($sAction, $aViewUrls, $aData);
Expand Down
5 changes: 1 addition & 4 deletions application/controllers/admin/export.php
Original file line number Diff line number Diff line change
Expand Up @@ -1369,12 +1369,10 @@ private function _exportPrintableHtmls($iSurveyID,$readFile = true){
$fullAssetsDir = Template::getTemplatePath($oSurvey->template);
$aLanguages = $oSurvey->getAllLanguages();

$aSurveyInfo = $oSurvey->getSurveyinfo();

$tempdir = Yii::app()->getConfig("tempdir");
$zipdir = $this->_tempdir($tempdir);

$fn = "printable_survey_".CHtml::encode($aSurveyInfo['surveyls_title'])."_{$oSurvey->primaryKey}.zip";
$fn = "printable_survey_".CHtml::encode($oSurvey->currentLanguageSettings->surveyls_title)."_{$oSurvey->primaryKey}.zip";
$zipfile = "$tempdir/".$fn;

Yii::app()->loadLibrary('admin.pclzip');
Expand Down Expand Up @@ -1419,7 +1417,6 @@ private function _exportPrintableHtml($oSurvey, $language, $tempdir){
$printableSurvey->index($oSurvey->primaryKey,$language);
$response = ob_get_contents(); //Grab output
ob_end_clean(); //Discard output buffer
$aSurveyInfo = $oSurvey->getSurveyinfo();

$file = "$tempdir/questionnaire_{$oSurvey->getPrimaryKey()}_{$language}.html";

Expand Down
Loading

0 comments on commit bfea6fa

Please sign in to comment.