本文整理汇总了PHP中LimeExpressionManager::getLEMqcode2sgqa方法的典型用法代码示例。如果您正苦于以下问题:PHP LimeExpressionManager::getLEMqcode2sgqa方法的具体用法?PHP LimeExpressionManager::getLEMqcode2sgqa怎么用?PHP LimeExpressionManager::getLEMqcode2sgqa使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LimeExpressionManager
的用法示例。
在下文中一共展示了LimeExpressionManager::getLEMqcode2sgqa方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: CSVImportResponses
/**
* This function import CSV file to responses table
*
* @param string $sFullFilePath
* @param integer $iSurveyId
* @param array $aOptions
* Return array $result ("errors","warnings","success")
*/
function CSVImportResponses($sFullFilePath, $iSurveyId, $aOptions = array())
{
$clang = Yii::app()->lang;
// Default optional
if (!isset($aOptions['bDeleteFistLine'])) {
$aOptions['bDeleteFistLine'] = true;
}
// By default delete first line (vvimport)
if (!isset($aOptions['sExistingId'])) {
$aOptions['sExistingId'] = "ignore";
}
// By default exclude existing id
if (!isset($aOptions['bNotFinalized'])) {
$aOptions['bNotFinalized'] = false;
}
// By default don't change finalized part
if (!isset($aOptions['sCharset']) || !$aOptions['sCharset']) {
$aOptions['sCharset'] = "utf8";
}
if (!isset($aOptions['sSeparator'])) {
$aOptions['sSeparator'] = "\t";
}
if (!isset($aOptions['sQuoted'])) {
$aOptions['sQuoted'] = "\"";
}
// Fix some part
if (!array_key_exists($aOptions['sCharset'], aEncodingsArray())) {
$aOptions['sCharset'] = "utf8";
}
// Prepare an array of sentence for result
$CSVImportResult = array();
// Read the file
$handle = fopen($sFullFilePath, "r");
// Need to be adapted for Mac ? in options ?
while (!feof($handle)) {
$buffer = fgets($handle);
//To allow for very long lines . Another option is fgetcsv (0 to length), but need mb_convert_encoding
$aFileResponses[] = mb_convert_encoding($buffer, "UTF-8", $aOptions['sCharset']);
}
// Close the file
fclose($handle);
if ($aOptions['bDeleteFistLine']) {
array_shift($aFileResponses);
}
$aRealFieldNames = Yii::app()->db->getSchema()->getTable(SurveyDynamic::model($iSurveyId)->tableName())->getColumnNames();
//$aCsvHeader=array_map("trim",explode($aOptions['sSeparator'], trim(array_shift($aFileResponses))));
$aCsvHeader = str_getcsv(array_shift($aFileResponses), $aOptions['sSeparator'], $aOptions['sQuoted']);
$aLemFieldNames = LimeExpressionManager::getLEMqcode2sgqa($iSurveyId);
$aKeyForFieldNames = array();
// An array assicated each fieldname with corresponding responses key
if (!$aCsvHeader) {
$CSVImportResult['errors'][] = $clang->gT("File seems empty or has only one line");
return $CSVImportResult;
}
// Assign fieldname with $aFileResponses[] key
foreach ($aRealFieldNames as $sFieldName) {
if (in_array($sFieldName, $aCsvHeader)) {
// First pass : simple associated
$aKeyForFieldNames[$sFieldName] = array_search($sFieldName, $aCsvHeader);
} elseif (in_array($sFieldName, $aLemFieldNames)) {
// Second pass : LEM associated
$sLemFieldName = array_search($sFieldName, $aLemFieldNames);
if (in_array($sLemFieldName, $aCsvHeader)) {
$aKeyForFieldNames[$sFieldName] = array_search($sLemFieldName, $aCsvHeader);
} elseif ($aOptions['bForceImport']) {
// as fallback just map questions in order of apperance
// find out where the answer data columns start in CSV
if (!isset($csv_ans_start_index)) {
foreach ($aCsvHeader as $i => $name) {
if (preg_match('/^\\d+X\\d+X\\d+/', $name)) {
$csv_ans_start_index = $i;
break;
}
}
}
// find out where the answer data columns start in destination table
if (!isset($table_ans_start_index)) {
foreach ($aRealFieldNames as $i => $name) {
if (preg_match('/^\\d+X\\d+X\\d+/', $name)) {
$table_ans_start_index = $i;
break;
}
}
}
// map answers in order
if (isset($table_ans_start_index, $csv_ans_start_index)) {
$csv_index = array_search($sFieldName, $aRealFieldNames) - $table_ans_start_index + $csv_ans_start_index;
if ($csv_index < sizeof($aCsvHeader)) {
$aKeyForFieldNames[$sFieldName] = $csv_index;
} else {
$force_import_failed = true;
break;
//.........这里部分代码省略.........