Example #1
0
 /**
  * questiongroup::import()
  * Function responsible to import a question group.
  *
  * @access public
  * @return void
  */
 function import()
 {
     $action = $_POST['action'];
     $iSurveyID = $surveyid = $aData['surveyid'] = (int) $_POST['sid'];
     if (!Permission::model()->hasSurveyPermission($surveyid, 'surveycontent', 'import')) {
         Yii::app()->user->setFlash('error', gT("Access denied"));
         $this->getController()->redirect(array('admin/survey/sa/listquestiongroups/surveyid/' . $surveyid));
     }
     if ($action == 'importgroup') {
         $importgroup = "\n";
         $importgroup .= "\n";
         $sFullFilepath = Yii::app()->getConfig('tempdir') . DIRECTORY_SEPARATOR . randomChars(20);
         $aPathInfo = pathinfo($_FILES['the_file']['name']);
         $sExtension = $aPathInfo['extension'];
         if ($_FILES['the_file']['error'] == 1 || $_FILES['the_file']['error'] == 2) {
             $fatalerror = sprintf(gT("Sorry, this file is too large. Only files up to %01.2f MB are allowed."), getMaximumFileUploadSize() / 1024 / 1024) . '<br>';
         } elseif (!@move_uploaded_file($_FILES['the_file']['tmp_name'], $sFullFilepath)) {
             $fatalerror = gT("An error occurred uploading your file. This may be caused by incorrect permissions for the application /tmp folder.");
         }
         // validate that we have a SID
         if (!returnGlobal('sid')) {
             $fatalerror .= gT("No SID (Survey) has been provided. Cannot import question.");
         }
         if (isset($fatalerror)) {
             @unlink($sFullFilepath);
             Yii::app()->user->setFlash('error', $fatalerror);
             $this->getController()->redirect(array('admin/questiongroups/sa/importview/surveyid/' . $surveyid));
         }
         Yii::app()->loadHelper('admin/import');
         // IF WE GOT THIS FAR, THEN THE FILE HAS BEEN UPLOADED SUCCESFULLY
         if (strtolower($sExtension) == 'lsg') {
             $aImportResults = XMLImportGroup($sFullFilepath, $iSurveyID);
         } else {
             Yii::app()->user->setFlash('error', gT("Unknown file extension"));
             $this->getController()->redirect(array('admin/questiongroups/sa/importview/surveyid/' . $surveyid));
         }
         LimeExpressionManager::SetDirtyFlag();
         // so refreshes syntax highlighting
         fixLanguageConsistency($iSurveyID);
         if (isset($aImportResults['fatalerror'])) {
             unlink($sFullFilepath);
             Yii::app()->user->setFlash('error', $aImportResults['fatalerror']);
             $this->getController()->redirect(array('admin/questiongroups/sa/importview/surveyid/' . $surveyid));
         }
         unlink($sFullFilepath);
         $aData['display'] = $importgroup;
         $aData['surveyid'] = $iSurveyID;
         $aData['aImportResults'] = $aImportResults;
         $aData['sExtension'] = $sExtension;
         //$aData['display']['menu_bars']['surveysummary'] = 'importgroup';
         $aData['sidemenu']['state'] = false;
         $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo;
         $aData['title_bar']['title'] = $surveyinfo['surveyls_title'] . "(" . gT("ID") . ":" . $iSurveyID . ")";
         $this->_renderWrappedTemplate('survey/QuestionGroups', 'import_view', $aData);
     }
 }
 /**
  * questiongroup::import()
  * Function responsible to import a question group.
  *
  * @access public
  * @return void
  */
 function import()
 {
     $action = $_POST['action'];
     $surveyid = $_POST['sid'];
     $clang = $this->getController()->lang;
     if ($action == 'importgroup') {
         $importgroup = "\n";
         $importgroup .= "\n";
         $sFullFilepath = Yii::app()->getConfig('tempdir') . DIRECTORY_SEPARATOR . randomChars(20);
         $aPathInfo = pathinfo($_FILES['the_file']['name']);
         $sExtension = $aPathInfo['extension'];
         if (!@move_uploaded_file($_FILES['the_file']['tmp_name'], $sFullFilepath)) {
             $fatalerror = sprintf($clang->gT("An error occurred uploading your file. This may be caused by incorrect permissions in your %s folder."), $this->config->item('tempdir'));
         }
         // validate that we have a SID
         if (!returnGlobal('sid')) {
             $fatalerror .= $clang->gT("No SID (Survey) has been provided. Cannot import question.");
         }
         if (isset($fatalerror)) {
             @unlink($sFullFilepath);
             $this->getController()->error($fatalerror);
         }
         Yii::app()->loadHelper('admin/import');
         // IF WE GOT THIS FAR, THEN THE FILE HAS BEEN UPLOADED SUCCESFULLY
         if (strtolower($sExtension) == 'csv') {
             $aImportResults = CSVImportGroup($sFullFilepath, $surveyid);
         } elseif (strtolower($sExtension) == 'lsg') {
             $aImportResults = XMLImportGroup($sFullFilepath, $surveyid);
         } else {
             $this->getController()->error('Unknown file extension');
         }
         LimeExpressionManager::SetDirtyFlag();
         // so refreshes syntax highlighting
         fixLanguageConsistency($surveyid);
         if (isset($aImportResults['fatalerror'])) {
             unlink($sFullFilepath);
             $this->getController()->error($aImportResults['fatalerror']);
         }
         unlink($sFullFilepath);
         $aData['display'] = $importgroup;
         $aData['surveyid'] = $surveyid;
         $aData['aImportResults'] = $aImportResults;
         $aData['sExtension'] = $sExtension;
         //$aData['display']['menu_bars']['surveysummary'] = 'importgroup';
         $this->_renderWrappedTemplate('survey/QuestionGroups', 'import_view', $aData);
         // TMSW Condition->Relevance:  call LEM->ConvertConditionsToRelevance() after import
     }
 }
 /**
  * RPC Routine to import a group - imports lsg,csv
  *
  * @access public
  * @param string $sSessionKey Auth credentials
  * @param int $iSurveyID The id of the survey that the group will belong
  * @param string $sImportData String containing the BASE 64 encoded data of a lsg,csv
  * @param string $sImportDataType  lsg,csv
  * @param string $sNewGroupName  Optional new name for the group
  * @param string $sNewGroupDescription  Optional new description for the group
  * @return array|integer iGroupID  - ID of the new group or status
  */
 public function import_group($sSessionKey, $iSurveyID, $sImportData, $sImportDataType, $sNewGroupName = NULL, $sNewGroupDescription = NULL)
 {
     if ($this->_checkSessionKey($sSessionKey)) {
         $oSurvey = Survey::model()->findByPk($iSurveyID);
         if (!isset($oSurvey)) {
             return array('status' => 'Error: Invalid survey ID');
         }
         if (Permission::model()->hasSurveyPermission($iSurveyID, 'survey', 'update')) {
             if ($oSurvey->getAttribute('active') == 'Y') {
                 return array('status' => 'Error:Survey is active and not editable');
             }
             if (!in_array($sImportDataType, array('csv', 'lsg'))) {
                 return array('status' => 'Invalid extension');
             }
             libxml_use_internal_errors(true);
             Yii::app()->loadHelper('admin/import');
             // First save the data to a temporary file
             $sFullFilePath = Yii::app()->getConfig('tempdir') . DIRECTORY_SEPARATOR . randomChars(40) . '.' . $sImportDataType;
             file_put_contents($sFullFilePath, base64_decode(chunk_split($sImportData)));
             if (strtolower($sImportDataType) == 'lsg') {
                 $sXMLdata = file_get_contents($sFullFilePath);
                 $xml = @simplexml_load_string($sXMLdata, 'SimpleXMLElement', LIBXML_NONET);
                 if (!$xml) {
                     unlink($sFullFilePath);
                     return array('status' => 'Error: Invalid LimeSurvey group structure XML ');
                 }
                 $aImportResults = XMLImportGroup($sFullFilePath, $iSurveyID);
             } else {
                 return array('status' => 'Invalid extension');
             }
             //just for symmetry!
             unlink($sFullFilePath);
             if (isset($aImportResults['fatalerror'])) {
                 return array('status' => 'Error: ' . $aImportResults['fatalerror']);
             } else {
                 $iNewgid = $aImportResults['newgid'];
                 $oGroup = QuestionGroup::model()->findByAttributes(array('gid' => $iNewgid));
                 $slang = $oGroup['language'];
                 if ($sNewGroupName != '') {
                     $oGroup->setAttribute('group_name', $sNewGroupName);
                 }
                 if ($sNewGroupDescription != '') {
                     $oGroup->setAttribute('description', $sNewGroupDescription);
                 }
                 try {
                     $oGroup->save();
                 } catch (Exception $e) {
                     // no need to throw exception
                 }
                 return (int) $aImportResults['newgid'];
             }
         } else {
             return array('status' => 'No permission');
         }
     } else {
         return array('status' => 'Invalid session key');
     }
 }
Example #4
0
    $surveyid = returnglobal('sid');
}
if (isset($fatalerror)) {
    $importgroup .= "<div class='warningheader'>" . $clang->gT("Error") . "</div><br />\n";
    $importgroup .= $fatalerror . "<br /><br />\n";
    $importgroup .= "<input type='submit' value='" . $clang->gT("Main Admin Screen") . "' onclick=\"window.open('{$scriptname}', '_self')\" /><br /><br />\n";
    $importgroup .= "</div>\n";
    @unlink($sFullFilepath);
    return;
}
// IF WE GOT THIS FAR, THEN THE FILE HAS BEEN UPLOADED SUCCESFULLY
$importgroup .= "<div class='successheader'>" . $clang->gT("Success") . "</div>&nbsp;<br />\n" . $clang->gT("File upload succeeded.") . "<br /><br />\n" . $clang->gT("Reading file..") . "<br /><br />\n";
if (strtolower($sExtension) == 'csv') {
    $aImportResults = CSVImportGroup($sFullFilepath, $surveyid);
} elseif (strtolower($sExtension) == 'lsg') {
    $aImportResults = XMLImportGroup($sFullFilepath, $surveyid);
} else {
    die('Unknown file extension');
}
FixLanguageConsistency($surveyid);
if (isset($aImportResults['fatalerror'])) {
    $importgroup .= "<div class='warningheader'>" . $clang->gT("Error") . "</div><br />\n";
    $importgroup .= $aImportResults['fatalerror'] . "<br /><br />\n";
    $importgroup .= "<input type='submit' value='" . $clang->gT("Main Admin Screen") . "' onclick=\"window.open('{$scriptname}', '_self')\" />\n";
    $importgroup .= "</div>\n";
    unlink($sFullFilepath);
    return;
}
$importgroup .= "<div class='successheader'>" . $clang->gT("Success") . "</div><br />\n" . "<strong><u>" . $clang->gT("Question group import summary") . "</u></strong><br />\n" . "<ul style=\"text-align:left;\">\n" . "\t<li>" . $clang->gT("Groups") . ": " . $aImportResults['groups'] . "</li>\n" . "\t<li>" . $clang->gT("Questions") . ": " . $aImportResults['questions'] . "</li>\n" . "\t<li>" . $clang->gT("Subquestions") . ": " . $aImportResults['subquestions'] . "</li>\n" . "\t<li>" . $clang->gT("Answers") . ": " . $aImportResults['answers'] . "</li>\n" . "\t<li>" . $clang->gT("Conditions") . ": " . $aImportResults['conditions'] . "</li>\n";
if (strtolower($sExtension) == 'csv') {
    $importgroup .= "\t<li>" . $clang->gT("Label sets") . ": " . $aImportResults['labelsets'] . " (" . $aImportResults['labels'] . ")</li>\n";