📄 general.php
字号:
if (!$checkprivs = zen_check_database_privs('INDEX')) return sprintf(REASON_NO_PRIVILEGES,'INDEX');
//this is only slightly different from the ALTER TABLE DROP INDEX command
global $db;
if (!zen_not_null($param)) return "Empty SQL Statement";
$index = $param[2];
$sql = "show index from " . DB_PREFIX . $param[4];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Key_name'].'<br />';
if ($result->fields['Key_name'] == $index) {
// if (!$checkprivs = zen_check_database_privs('INDEX')) return sprintf(REASON_NO_PRIVILEGES,'INDEX');
return; // if we get here, the index exists, and we have index privileges, so return with no error
}
$result->MoveNext();
}
// if we get here, then the index didn't exist
return sprintf(REASON_INDEX_DOESNT_EXIST_TO_DROP,$index,$param[4]);
}
function zen_create_index_command($param) {
//this is only slightly different from the ALTER TABLE CREATE INDEX command
if (!$checkprivs = zen_check_database_privs('INDEX')) return sprintf(REASON_NO_PRIVILEGES,'INDEX');
global $db;
if (!zen_not_null($param)) return "Empty SQL Statement";
$index = (strtoupper($param[1])=='INDEX') ? $param[2] : $param[3];
if (in_array('USING',$param)) return 'USING parameter found. Cannot validate syntax. Please run manually in phpMyAdmin.';
$table = (strtoupper($param[2])=='INDEX' && strtoupper($param[4])=='ON') ? $param[5] : $param[4];
$sql = "show index from " . DB_PREFIX . $table;
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Key_name'].'<br />';
if (strtoupper($result->fields['Key_name']) == strtoupper($index)) {
return sprintf(REASON_INDEX_ALREADY_EXISTS,$index,$table);
}
$result->MoveNext();
}
/*
* @TODO: verify that individual columns exist, by parsing the index_col_name parameters list
* Structure is (colname(len)),
* or (colname),
*/
}
function zen_check_alter_command($param) {
global $db;
if (!zen_not_null($param)) return "Empty SQL Statement";
if (!$checkprivs = zen_check_database_privs('ALTER')) return sprintf(REASON_NO_PRIVILEGES,DB_SERVER_USERNAME, DB_SERVER, 'ALTER');
switch (strtoupper($param[3])) {
case ("ADD"):
if (strtoupper($param[4]) == 'INDEX') {
// check that the index to be added doesn't already exist
$index = $param[5];
$sql = "show index from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo 'KEY: '.$result->fields['Key_name'].'<br />';
if ($result->fields['Key_name'] == $index) {
return sprintf(REASON_INDEX_ALREADY_EXISTS,$index,$param[2]);
}
$result->MoveNext();
}
} elseif (strtoupper($param[4])=='PRIMARY') {
// check that the primary key to be added doesn't exist
if ($param[5] != 'KEY') return;
$sql = "show index from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Key_name'].'<br />';
if ($result->fields['Key_name'] == 'PRIMARY') {
return sprintf(REASON_PRIMARY_KEY_ALREADY_EXISTS,$param[2]);
}
$result->MoveNext();
}
} elseif (!in_array(strtoupper($param[4]),array('CONSTRAINT','UNIQUE','PRIMARY','FULLTEXT','FOREIGN','SPATIAL') ) ) {
// check that the column to be added does not exist
$colname = ($param[4]=='COLUMN') ? $param[5] : $param[4];
$sql = "show fields from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Field'].'<br />';
if ($result->fields['Field'] == $colname) {
return sprintf(REASON_COLUMN_ALREADY_EXISTS,$colname);
}
$result->MoveNext();
}
} elseif (strtoupper($param[5])=='AFTER') {
// check that the requested "after" field actually exists
$colname = ($param[6]=='COLUMN') ? $param[7] : $param[6];
$sql = "show fields from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Field'].'<br />';
if ($result->fields['Field'] == $colname) {
return; // exists, so return with no error
}
$result->MoveNext();
}
} elseif (strtoupper($param[6])=='AFTER') {
// check that the requested "after" field actually exists
$colname = ($param[7]=='COLUMN') ? $param[8] : $param[7];
$sql = "show fields from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Field'].'<br />';
if ($result->fields['Field'] == $colname) {
return; // exists, so return with no error
}
$result->MoveNext();
}
/*
* @TODO -- add check for FIRST parameter, to check that the FIRST colname specified actually exists
*/
}
break;
case ("DROP"):
if (strtoupper($param[4]) == 'INDEX') {
// check that the index to be dropped exists
$index = $param[5];
$sql = "show index from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Key_name'].'<br />';
if ($result->fields['Key_name'] == $index) {
return; // exists, so return with no error
}
$result->MoveNext();
}
// if we get here, then the index didn't exist
return sprintf(REASON_INDEX_DOESNT_EXIST_TO_DROP,$index,$param[2]);
} elseif (strtoupper($param[4])=='PRIMARY') {
// check that the primary key to be dropped exists
if ($param[5] != 'KEY') return;
$sql = "show index from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Key_name'].'<br />';
if ($result->fields['Key_name'] == 'PRIMARY') {
return; // exists, so return with no error
}
$result->MoveNext();
}
// if we get here, then the primary key didn't exist
return sprintf(REASON_PRIMARY_KEY_DOESNT_EXIST_TO_DROP,$param[2]);
} elseif (!in_array(strtoupper($param[4]),array('CONSTRAINT','UNIQUE','PRIMARY','FULLTEXT','FOREIGN','SPATIAL'))) {
// check that the column to be dropped exists
$colname = ($param[4]=='COLUMN') ? $param[5] : $param[4];
$sql = "show fields from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Field'].'<br />';
if ($result->fields['Field'] == $colname) {
return; // exists, so return with no error
}
$result->MoveNext();
}
// if we get here, then the column didn't exist
return sprintf(REASON_COLUMN_DOESNT_EXIST_TO_DROP,$colname);
}//endif 'DROP'
break;
case ("ALTER"):
case ("MODIFY"):
case ("CHANGE"):
// just check that the column to be changed 'exists'
$colname = ($param[4]=='COLUMN') ? $param[5] : $param[4];
$sql = "show fields from " . DB_PREFIX . $param[2];
$result = $db->Execute($sql);
while (!$result->EOF) {
if (ZC_UPG_DEBUG3==true) echo $result->fields['Field'].'<br />';
if ($result->fields['Field'] == $colname) {
return; // exists, so return with no error
}
$result->MoveNext();
}
// if we get here, then the column didn't exist
return sprintf(REASON_COLUMN_DOESNT_EXIST_TO_CHANGE,$colname);
break;
default:
// if we get here, then we're processing an ALTER command other than what we're checking for, so let it be processed.
return;
break;
} //end switch
}
function zen_check_config_key($line) {
global $db;
$values=array();
$values=explode("'",$line);
//INSERT INTO configuration blah blah blah VALUES ('title','key', blah blah blah);
//[0]=INSERT INTO.....
//[1]=title
//[2]=,
//[3]=key
//[4]=blah blah
$title = $values[1];
$key = $values[3];
$sql = "select configuration_title from " . DB_PREFIX . "configuration where configuration_key='".$key."'";
$result = $db->Execute($sql);
if ($result->RecordCount() >0 ) return sprintf(REASON_CONFIG_KEY_ALREADY_EXISTS,$key);
}
function zen_check_product_type_layout_key($line) {
global $db;
$values=array();
$values=explode("'",$line);
$title = $values[1];
$key = $values[3];
$sql = "select configuration_title from " . DB_PREFIX . "product_type_layout where configuration_key='".$key."'";
$result = $db->Execute($sql);
if ($result->RecordCount() >0 ) return sprintf(REASON_PRODUCT_TYPE_LAYOUT_KEY_ALREADY_EXISTS,$key);
}
function zen_check_cfggroup_key($line) {
global $db;
$values=array();
$values=explode("'",$line);
$id = $values[1];
$title = $values[3];
$sql = "select configuration_group_title from " . DB_PREFIX . "configuration_group where configuration_group_title='".$title."'";
$result = $db->Execute($sql);
if ($result->RecordCount() >0 ) return sprintf(REASON_CONFIGURATION_GROUP_KEY_ALREADY_EXISTS,$title);
$sql = "select configuration_group_title from " . DB_PREFIX . "configuration_group where configuration_group_id='".$id."'";
$result = $db->Execute($sql);
if ($result->RecordCount() >0 ) return sprintf(REASON_CONFIGURATION_GROUP_ID_ALREADY_EXISTS,$id);
}
function zen_write_to_upgrade_exceptions_table($line, $reason, $sql_file) {
global $db;
zen_create_exceptions_table();
$sql="INSERT INTO " . DB_PREFIX . TABLE_UPGRADE_EXCEPTIONS . " VALUES (0,'". $sql_file."','".$reason."', now(), '".addslashes($line)."')";
if (ZC_UPG_DEBUG3==true) echo '<br />sql='.$sql.'<br />';
$result = $db->Execute($sql);
return $result;
}
function zen_purge_exceptions_table() {
global $db;
zen_create_exceptions_table();
$result = $db->Execute("TRUNCATE TABLE " . DB_PREFIX . TABLE_UPGRADE_EXCEPTIONS );
return $result;
}
function zen_create_exceptions_table() {
global $db;
if (!zen_table_exists(TABLE_UPGRADE_EXCEPTIONS)) {
$result = $db->Execute("CREATE TABLE `" . DB_PREFIX . TABLE_UPGRADE_EXCEPTIONS ."` (
`upgrade_exception_id` smallint(5) NOT NULL auto_increment,
`sql_file` varchar(50) default NULL,
`reason` varchar(200) default NULL,
`errordate` datetime default '0001-01-01 00:00:00',
`sqlstatement` text, PRIMARY KEY (`upgrade_exception_id`)
) TYPE=MyISAM");
return $result;
}
}
function zen_check_exceptions($result, $line) {
// note: table-prefixes are ignored here, since they are not added if this is an exception
//echo '<br /><strong>RESULT_CODE: </strong>' . $result . '<br /><strong>LINE:</strong>' . $line;
if (strstr($result,'EZ-Pages Settings') && strstr(strtolower($line), 'insert into configuration_group')) return true;
if (strstr($result,'DEFINE_SITE_MAP_STATUS') && strstr(strtolower($line), 'insert into configuration')) return true;
//echo '<br /><strong>NO EXCEPTIONS </strong>TO IGNORE<br />';
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -