📄 ifunctions.php
字号:
<?
################################################################################
# phpQuestionnaire Version 2.2 #
# Copyright 2003-2005 chumpsoft, inc. March 28, 2005 #
################################################################################
# SCRiPTMAFiA 2005 - THE DiRTY HANDS ON YOUR SCRiPTS #
################################################################################
function ImportSurvey ($fp, $type, $flag) {
global $phpQlang;
$action = ($type == 'SWAP') ? $phpQlang['ImportFailed'] : $phpQlang['RestoreFailed'];
$header = fgets($fp, 80);
if (!preg_match("/<!--(PERL|PHP)QBACKUP ([\d\.]+) ((PERL|PHP)QBACKUP|SURVEYBACKUP|SURVEYSWAP)-->/", $header, $matches)) {
echo $header;
$GLOBALS["message"] = $action.$phpQlang['ImportBadHeader'];
return 0;
}
$lang = $matches[1];
$version = (float)$matches[2];
$btype = $matches[3];
if (strtolower($lang) != 'php') {
$btype = str_replace($lang, 'PHP', $btype);
}
if ($version < 1.2 || $version > $GLOBALS["PHPQVERSION"]) {
$GLOBALS["message"] = $action.sprintf($phpQlang['ImportBadVersion'], $version, $GLOBALS["PHPQVERSION"]);
return 0;
}
if ($type == 'SWAP' && $btype != 'SURVEYSWAP') {
$GLOBALS["message"] = $action.sprintf($phpQlang['ImportSurveyBadFormat'], ProtectHTML($btype));
return 0;
}
elseif ($type == 'BACKUP' && $btype != 'PHPQBACKUP' && $btype != 'SURVEYBACKUP') {
$GLOBALS["message"] = $action.sprintf($phpQlang['RestoreSurveyBadFormat'], ProtectHTML($btype));
return 0;
}
if ($btype == 'SURVEYSWAP') {
$phpQF['phpQSurvey'] = array('Name','SurveyUsers','SurveyResults','Width','Indent','QuestionNumb','QuestionStyle','AnswerInputStyle','AnswerTextStyle','AnswerStyle','ErrorStyle','VerifyEmail','EmailFrom','EmailSubject','Template','Language','OnComplete','RedirectURL','Completed','Description','AdminNotes','Active','StartDate','EndDate','AdvanceInterface','ResultsWidth','ResultsBorder','ResultsAnswer','ResultsStats','ResultsGraph','SubmitImageSrc','SubmitImageWidth','SubmitImageHeight','SubmitImageText','ResultImageSrc','ResultImageWidth','ResultImageHeight','ResultImageText','NextImageSrc','NextImageWidth','NextImageHeight','NextImageText','ResponseNotice','ResponseEmail');
$phpQF['phpQQuestion'] = array('SortOrder','Question','Type','Mult','QuestionStyle','Instructions','Answer','Choose','DefaultAnswer','LargestAID','ColNumb','AnswerInputStyle','AnswerTextStyle','AnswerStyle','Attributes','Required','Summary');
}
else {
if ($btype == 'PHPQBACKUP') {
$phpQF['phpQAdmin'] = array('phpQID','Version','Template','Language','AdminLanguage','SummaryLimit','TextareaLimit','PopupLimit','AdvanceInterface','ListSurvey','TimeOut','CookieDomain');
$phpQC['phpQAdmin'] = "CREATE TABLE phpQAdmin (phpQID BIGINT UNSIGNED NOT NULL, Version CHAR(10) NOT NULL, Passwd VARCHAR(20) NOT NULL, Template VARCHAR(50) NOT NULL, Language VARCHAR(50) NOT NULL, AdminLanguage VARCHAR(50) NOT NULL, SummaryLimit INT UNSIGNED NOT NULL DEFAULT 10, TextareaLimit INT UNSIGNED NOT NULL DEFAULT 5, PopupLimit INT UNSIGNED NOT NULL DEFAULT 5, AdvanceInterface ENUM('y','n') NOT NULL DEFAULT 'n', ListSurvey ENUM('y','n') NOT NULL DEFAULT 'y', TimeOut BIGINT UNSIGNED NOT NULL, CookieDomain VARCHAR(255) NOT NULL)";
}
# phpQF is the format of our columns for each table. This ensures that no
# extra columns that don't exist will attempt to be inserted. phpQC is the
# create statement for a specific table. phpQR is a list of the references
# in each table that may change and the change will be noted in $idmap.
# phpQU is the unique field in a given table which we may have to change
# if there is a collision.
$phpQF['phpQAnswer'] = array('UID','SID','QID','Answer');
$phpQC['phpQAnswer'] = "CREATE TABLE phpQAnswer (UID BIGINT UNSIGNED NOT NULL, SID BIGINT UNSIGNED NOT NULL, QID BIGINT UNSIGNED NOT NULL, Answer TEXT NOT NULL, UNIQUE uniqids (SID, QID, UID), INDEX index_uid (UID))";
$phpQR['phpQAnswer'] = array(0, 'UID', 1, 'SID', 2, 'QID');
$phpQF['phpQQuestion'] = array('SID','QID','SortOrder','Question','Type','Mult','QuestionStyle','Instructions','Answer','Choose','DefaultAnswer','LargestAID','ColNumb','AnswerInputStyle','AnswerTextStyle','AnswerStyle','Attributes','Required','Summary');
$phpQC['phpQQuestion'] = "CREATE TABLE phpQQuestion (SID BIGINT UNSIGNED NOT NULL, QID BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, SortOrder INT UNSIGNED NOT NULL, Question TEXT NOT NULL, Type ENUM('radio','checkbox','textfield','textarea','select','selectmult','pagebreak','htmlcontent') NOT NULL DEFAULT 'radio', Mult INT UNSIGNED NOT NULL DEFAULT 1, QuestionStyle VARCHAR(255) NOT NULL, Instructions TEXT NOT NULL, Answer TEXT NOT NULL, Choose VARCHAR(11) NOT NULL, DefaultAnswer TEXT NOT NULL, LargestAID INT UNSIGNED NOT NULL, ColNumb INT UNSIGNED NOT NULL DEFAULT 1, AnswerInputStyle VARCHAR(255) NOT NULL, AnswerTextStyle VARCHAR(255) NOT NULL, AnswerStyle VARCHAR(255) NOT NULL, Attributes TEXT NOT NULL, Required ENUM('y','n') NOT NULL DEFAULT 'y', Summary ENUM('y','n') NOT NULL DEFAULT 'n')";
$phpQR['phpQQuestion'] = array(0, 'SID');
$phpQU['phpQQuestion'] = array(1, 'QID');
$phpQF['phpQSurvey'] = array('SID','AddDate','Name','SurveyUsers','SurveyResults','Width','Indent','QuestionNumb','QuestionStyle','AnswerInputStyle','AnswerTextStyle','AnswerStyle','ErrorStyle','VerifyEmail','EmailFrom','EmailSubject','Template','Language','OnComplete','RedirectURL','Completed','Description','AdminNotes','Active','StartDate','EndDate','AdvanceInterface','ResultsWidth','ResultsBorder','ResultsAnswer','ResultsStats','ResultsGraph','SubmitImageSrc','SubmitImageWidth','SubmitImageHeight','SubmitImageText','ResultImageSrc','ResultImageWidth','ResultImageHeight','ResultImageText','NextImageSrc','NextImageWidth','NextImageHeight','NextImageText','ResponseNotice','ResponseEmail');
$phpQC['phpQSurvey'] = "CREATE TABLE phpQSurvey (SID BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(255) NOT NULL, AddDate DATETIME NOT NULL DEFAULT '0000-00-00', SurveyUsers CHAR(3) NOT NULL DEFAULT '000', SurveyResults TINYINT NOT NULL, Width VARCHAR(255) NOT NULL, Indent INT UNSIGNED NOT NULL DEFAULT 20, QuestionNumb ENUM('y','n') NOT NULL DEFAULT 'y', QuestionStyle VARCHAR(255) NOT NULL, AnswerInputStyle VARCHAR(255) NOT NULL, AnswerTextStyle VARCHAR(255) NOT NULL, AnswerStyle VARCHAR(255) NOT NULL, ErrorStyle VARCHAR(255) NOT NULL, VerifyEmail TEXT NOT NULL, EmailFrom VARCHAR(255) NOT NULL, EmailSubject VARCHAR(255) NOT NULL, Template VARCHAR(50) NOT NULL, Language VARCHAR(50) NOT NULL, OnComplete TINYINT NOT NULL, RedirectURL TEXT NOT NULL, Completed TEXT NOT NULL, Description TEXT NOT NULL, AdminNotes TEXT NOT NULL, Active ENUM('y','n') NOT NULL DEFAULT 'n', StartDate DATETIME NOT NULL DEFAULT '0000-00-00', EndDate DATETIME NOT NULL DEFAULT '0000-00-00', AdvanceInterface ENUM('y','n') NOT NULL DEFAULT 'n', ResultsWidth VARCHAR(255) NOT NULL, ResultsBorder VARCHAR(255) NOT NULL, ResultsAnswer VARCHAR(255) NOT NULL, ResultsStats VARCHAR(255) NOT NULL, ResultsGraph VARCHAR(255) NOT NULL, SubmitImageSrc VARCHAR(255) NOT NULL, SubmitImageWidth INT UNSIGNED NOT NULL, SubmitImageHeight INT UNSIGNED NOT NULL, SubmitImageText VARCHAR(255) NOT NULL, ResultImageSrc VARCHAR(255) NOT NULL, ResultImageWidth INT UNSIGNED NOT NULL, ResultImageHeight INT UNSIGNED NOT NULL, ResultImageText VARCHAR(255) NOT NULL,NextImageSrc VARCHAR(255) NOT NULL, NextImageWidth INT UNSIGNED NOT NULL, NextImageHeight INT UNSIGNED NOT NULL, NextImageText VARCHAR(255) NOT NULL, ResponseNotice TINYINT NOT NULL, ResponseEmail TEXT NOT NULL)";
$phpQU['phpQSurvey'] = array(0, 'SID');
$phpQF['phpQUser'] = array('UID','SID','IPAddr','BlockDupe','CheckType','Email','Confirm','EmailConfirm','CompleteDate');
$phpQC['phpQUser'] = "CREATE TABLE phpQUser (UID BIGINT UNSIGNED NOT NULL PRIMARY KEY DEFAULT 0, SID BIGINT UNSIGNED NOT NULL, IPAddr VARCHAR(100) NOT NULL, BlockDupe VARCHAR(40) NOT NULL, CheckType CHAR(3) NOT NULL DEFAULT '000', Email VARCHAR(255) NOT NULL, Confirm VARCHAR(50) NOT NULL, EmailConfirm ENUM('y','n') NOT NULL DEFAULT 'n', CompleteDate DATETIME NOT NULL DEFAULT '0000-00-00')";
$phpQR['phpQUser'] = array(1, 'SID');
$phpQU['phpQUser'] = array(0, 'UID');
$tcreated = array();
$idmap = array();
}
while ($line = fgets($fp, '65536')) {
$line = rtrim($line);
# This will convert any other language (such as perlQuestionnaire formats) appropriately.
if (strtolower($lang) != 'php') {
$pos = strpos($line, strtolower($lang));
if ($pos !== false) {
$line = substr_replace($line, 'php', $pos, strlen($lang));
}
}
$linevals = explode("|", $line);
$table = $linevals[1];
if ($linevals[0] == 'TABLE' && $linevals[2] == 'COLUMNS') {
if (!isset($phpQF[$table])) {
$GLOBALS["message"] = $action.$phpQlang['ImportMissingTableColumn'];
return 0;
}
$columnorder[$table] = explode(",", $linevals[3]);
}
elseif ($linevals[0] == 'TABLE' && $linevals[2] == 'VALUES') {
$values = explode("&", $linevals[3]);
$valuenames = array();
if (!isset($columnorder[$table])) {
$GLOBALS["message"] = $action.$phpQlang['ImportMissingTableValue'];
return 0;
}
# If exported version is less than 2.0, it will be missing these fields.
# So we provide default values so the results appear like they would have.
if ($version < 2.0 && $table == 'phpQSurvey') {
$valuenames['ResultsWidth'] = '500';
$valuenames['ResultsBorder'] = 'background-color: #333366; color: #FFFFFF; text-decoration: none;';
$valuenames['ResultsAnswer'] = 'background-color: #FFFFFF; color: #333366;';
$valuenames['ResultsStats'] = 'background-color: #DDEEFF; color: #333366;';
$valuenames['ResultsGraph'] = 'background-color: #333366; height: 8px;';
$valuenames['Language'] = FindILanguage('english');
}
if ($version < 2.1 && $table == 'phpQSurvey') {
$valuenames['SubmitImageText'] = $phpQlang['Submit'];
$valuenames['ResultImageText'] = $phpQlang['ShowResults'];
$valuenames['NextImageText'] = $phpQlang['Next'];
}
# This loop extracts the values from the lines and places them in an
# array according to $columnorder[]
for ($i = 0; $i < count($values); $i++) {
$field = $columnorder[$table][$i];
# If no other action is taken below, the value for this field should be:
$valuenames[$field] = $values[$i];
if ($table == 'phpQSurvey') {
# On a survey swap, we make the status inactive on import.
if ($field == 'Active' && $btype == 'SURVEYSWAP') {
$valuenames['Active'] = 'n';
}
# Make sure that if a template is defined, this user has it.
# Otherwise, we set it to the default or first available template.
if ($field == 'Template') {
$valuenames['Template'] = FindITemplate($values[$i]);
}
elseif ($field == 'Language') {
$valuenames['Language'] = FindILanguage($values[$i]);
}
}
}
# Here we make each value SQL-safe and also order them according to our
# own table definitions. This will exclude any fake fields.
$sqlvalues = array();
for ($i = 0; $i < count($phpQF[$table]); $i++) {
$sqlvalues[] = PHPQ2SQL($valuenames[$phpQF[$table][$i]]);
}
if ($btype == 'SURVEYSWAP') {
if ($table == 'phpQSurvey') {
$mqinsert = mysql_query("INSERT INTO phpQSurvey (SID,AddDate,".join(',',$phpQF[$table]).") VALUES (NULL,NOW(),".join(',',$sqlvalues).")");
$sid = $mqinsert ? mysql_insert_id() : 0;
if (!$sid) {
$GLOBALS["message"] = $action.$phpQlang['ImportCreateSurvey'];
return 0;
}
}
elseif ($table == 'phpQQuestion') {
if (!$sid) {
$GLOBALS["message"] = $action.$phpQlang['ImportQuestionPreSurvey'];
return 0;
}
mysql_query("INSERT INTO phpQQuestion (SID,QID,".join(',',$phpQF[$table]).") VALUES ($sid,NULL,".join(',',$sqlvalues).")");
}
continue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -