Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-conte.../plugins/smart-sl.../Nextend/SmartSli.../Install
File: Tables.php
<?php
[0] Fix | Delete
[1] Fix | Delete
[2] Fix | Delete
namespace Nextend\SmartSlider3\Install;
[3] Fix | Delete
[4] Fix | Delete
[5] Fix | Delete
use Nextend\Framework\Database\Database;
[6] Fix | Delete
use Nextend\Framework\Notification\Notification;
[7] Fix | Delete
[8] Fix | Delete
class Tables {
[9] Fix | Delete
[10] Fix | Delete
protected $tables = array(
[11] Fix | Delete
'nextend2_image_storage' => "(
[12] Fix | Delete
`id` INT(11) NOT NULL AUTO_INCREMENT,
[13] Fix | Delete
`hash` VARCHAR(32) NOT NULL,
[14] Fix | Delete
`image` TEXT NOT NULL,
[15] Fix | Delete
`value` MEDIUMTEXT NOT NULL,
[16] Fix | Delete
PRIMARY KEY (`id`),
[17] Fix | Delete
UNIQUE KEY `hash` (`hash`)
[18] Fix | Delete
)",
[19] Fix | Delete
'nextend2_section_storage' => "(
[20] Fix | Delete
`id` INT(11) NOT NULL AUTO_INCREMENT,
[21] Fix | Delete
`application` VARCHAR(20) NOT NULL,
[22] Fix | Delete
`section` VARCHAR(128) NOT NULL,
[23] Fix | Delete
`referencekey` VARCHAR(128) DEFAULT '',
[24] Fix | Delete
`value` MEDIUMTEXT NOT NULL,
[25] Fix | Delete
`isSystem` INT(11) NOT NULL DEFAULT '0',
[26] Fix | Delete
`editable` INT(11) NOT NULL DEFAULT '1',
[27] Fix | Delete
PRIMARY KEY (`id`),
[28] Fix | Delete
KEY `application` (`application`, `section`(50), `referencekey`(50)),
[29] Fix | Delete
KEY `application_2` (`application`, `section`(50)),
[30] Fix | Delete
INDEX (`isSystem`),
[31] Fix | Delete
INDEX (`editable`)
[32] Fix | Delete
)
[33] Fix | Delete
AUTO_INCREMENT = 10000",
[34] Fix | Delete
'nextend2_smartslider3_generators' => "(
[35] Fix | Delete
`id` INT(11) NOT NULL AUTO_INCREMENT,
[36] Fix | Delete
`group` VARCHAR(254) NOT NULL,
[37] Fix | Delete
`type` VARCHAR(254) NOT NULL,
[38] Fix | Delete
`params` TEXT NOT NULL,
[39] Fix | Delete
PRIMARY KEY (`id`)
[40] Fix | Delete
)",
[41] Fix | Delete
'nextend2_smartslider3_sliders' => "(
[42] Fix | Delete
`id` INT(11) NOT NULL AUTO_INCREMENT,
[43] Fix | Delete
`alias` TEXT NULL DEFAULT NULL,
[44] Fix | Delete
`title` TEXT NOT NULL,
[45] Fix | Delete
`type` VARCHAR(30) NOT NULL,
[46] Fix | Delete
`params` MEDIUMTEXT NOT NULL,
[47] Fix | Delete
`slider_status` VARCHAR(50) NOT NULL DEFAULT 'published',
[48] Fix | Delete
`time` DATETIME NOT NULL,
[49] Fix | Delete
`thumbnail` TEXT NOT NULL,
[50] Fix | Delete
`ordering` INT NOT NULL DEFAULT '0',
[51] Fix | Delete
INDEX (`slider_status`),
[52] Fix | Delete
INDEX (`time`),
[53] Fix | Delete
PRIMARY KEY (`id`)
[54] Fix | Delete
)",
[55] Fix | Delete
'nextend2_smartslider3_sliders_xref' => "(
[56] Fix | Delete
`group_id` int(11) NOT NULL,
[57] Fix | Delete
`slider_id` int(11) NOT NULL,
[58] Fix | Delete
`ordering` int(11) NOT NULL DEFAULT '0',
[59] Fix | Delete
PRIMARY KEY (`group_id`,`slider_id`),
[60] Fix | Delete
INDEX (`ordering`)
[61] Fix | Delete
)",
[62] Fix | Delete
'nextend2_smartslider3_slides' => "(
[63] Fix | Delete
`id` INT(11) NOT NULL AUTO_INCREMENT,
[64] Fix | Delete
`title` TEXT NOT NULL,
[65] Fix | Delete
`slider` INT(11) NOT NULL,
[66] Fix | Delete
`publish_up` DATETIME NOT NULL default '1970-01-01 00:00:00',
[67] Fix | Delete
`publish_down` DATETIME NOT NULL default '1970-01-01 00:00:00',
[68] Fix | Delete
`published` TINYINT(1) NOT NULL,
[69] Fix | Delete
`first` INT(11) NOT NULL,
[70] Fix | Delete
`slide` LONGTEXT,
[71] Fix | Delete
`description` TEXT NOT NULL,
[72] Fix | Delete
`thumbnail` TEXT NOT NULL,
[73] Fix | Delete
`params` TEXT NOT NULL,
[74] Fix | Delete
`ordering` INT(11) NOT NULL,
[75] Fix | Delete
`generator_id` INT(11) NOT NULL,
[76] Fix | Delete
PRIMARY KEY (`id`),
[77] Fix | Delete
INDEX (`published`),
[78] Fix | Delete
INDEX (`publish_up`),
[79] Fix | Delete
INDEX (`publish_down`),
[80] Fix | Delete
INDEX (`generator_id`),
[81] Fix | Delete
KEY `thumbnail` (`thumbnail`(100)),
[82] Fix | Delete
INDEX (`ordering`),
[83] Fix | Delete
INDEX (`slider`)
[84] Fix | Delete
)"
[85] Fix | Delete
);
[86] Fix | Delete
[87] Fix | Delete
[88] Fix | Delete
public function install() {
[89] Fix | Delete
foreach ($this->tables as $tableName => $structure) {
[90] Fix | Delete
$this->installTable($tableName, $structure);
[91] Fix | Delete
}
[92] Fix | Delete
[93] Fix | Delete
self::dropIndex('#__nextend2_section_storage', 'system');
[94] Fix | Delete
[95] Fix | Delete
$this->renameColumn('#__nextend2_section_storage', 'system', 'isSystem', 'INT(11) NOT NULL DEFAULT \'0\'');
[96] Fix | Delete
[97] Fix | Delete
self::dropIndex('#__nextend2_section_storage', 'application');
[98] Fix | Delete
self::dropIndex('#__nextend2_section_storage', 'application_2');
[99] Fix | Delete
[100] Fix | Delete
$this->fixColumn('#__nextend2_section_storage', 'section', 'VARCHAR(128)', 'NOT NULL');
[101] Fix | Delete
$this->fixColumn('#__nextend2_section_storage', 'referencekey', 'VARCHAR(128)', 'NOT NULL');
[102] Fix | Delete
[103] Fix | Delete
$this->query("ALTER TABLE `#__nextend2_section_storage` ADD INDEX `application` (`application`, `section`(50), `referencekey`(50))");
[104] Fix | Delete
$this->query("ALTER TABLE `#__nextend2_section_storage` ADD INDEX `application_2` (`application`, `section`(50))");
[105] Fix | Delete
[106] Fix | Delete
self::fixIndex('#__nextend2_section_storage', 'isSystem');
[107] Fix | Delete
self::fixIndex('#__nextend2_section_storage', 'editable');
[108] Fix | Delete
[109] Fix | Delete
$this->fixColumn('#__nextend2_smartslider3_sliders', 'ordering', 'INT', 'NOT NULL DEFAULT \'0\'');
[110] Fix | Delete
[111] Fix | Delete
self::dropIndex('#__nextend2_smartslider3_sliders', 'status');
[112] Fix | Delete
[113] Fix | Delete
$this->renameColumn('#__nextend2_smartslider3_sliders', 'status', 'slider_status', 'VARCHAR(50) NOT NULL DEFAULT \'published\'');
[114] Fix | Delete
[115] Fix | Delete
$this->fixColumn('#__nextend2_smartslider3_sliders', 'title', 'TEXT', 'NOT NULL');
[116] Fix | Delete
$this->fixColumn('#__nextend2_smartslider3_sliders', 'alias', 'TEXT', 'NULL DEFAULT NULL');
[117] Fix | Delete
$this->fixColumn('#__nextend2_smartslider3_sliders', 'thumbnail', 'TEXT', 'NOT NULL');
[118] Fix | Delete
[119] Fix | Delete
$this->fixColumn('#__nextend2_smartslider3_slides', 'title', 'TEXT');
[120] Fix | Delete
$this->fixColumn('#__nextend2_smartslider3_slides', 'thumbnail', 'TEXT');
[121] Fix | Delete
[122] Fix | Delete
$this->fixColumn('#__nextend2_smartslider3_slides', 'publish_up', 'DATETIME', 'NOT NULL DEFAULT \'1970-01-01 00:00:00\'');
[123] Fix | Delete
$this->fixColumn('#__nextend2_smartslider3_slides', 'publish_down', 'DATETIME', 'NOT NULL DEFAULT \'1970-01-01 00:00:00\'');
[124] Fix | Delete
[125] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_sliders', 'slider_status');
[126] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_sliders', 'time');
[127] Fix | Delete
[128] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_sliders_xref', 'ordering');
[129] Fix | Delete
[130] Fix | Delete
$this->query("DELETE FROM `#__nextend2_section_storage` WHERE `application` LIKE 'smartslider' AND `section` LIKE 'sliderChanged'");
[131] Fix | Delete
[132] Fix | Delete
[133] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_slides', 'published');
[134] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_slides', 'publish_up');
[135] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_slides', 'publish_down');
[136] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_slides', 'generator_id');
[137] Fix | Delete
[138] Fix | Delete
[139] Fix | Delete
self::dropIndex('#__nextend2_smartslider3_slides', 'thumbnail');
[140] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_slides', 'thumbnail', 100);
[141] Fix | Delete
[142] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_slides', 'ordering');
[143] Fix | Delete
self::fixIndex('#__nextend2_smartslider3_slides', 'slider');
[144] Fix | Delete
[145] Fix | Delete
if (Notification::hasErrors()) {
[146] Fix | Delete
Notification::displayPlainErrors();
[147] Fix | Delete
exit;
[148] Fix | Delete
}
[149] Fix | Delete
}
[150] Fix | Delete
[151] Fix | Delete
private function installTable($tableName, $structure) {
[152] Fix | Delete
$query = 'CREATE TABLE IF NOT EXISTS `' . Database::getPrefix() . $tableName . '` ';
[153] Fix | Delete
[154] Fix | Delete
$query .= $structure;
[155] Fix | Delete
$query .= ' ' . Database::getCharsetCollate();
[156] Fix | Delete
[157] Fix | Delete
$this->query($query);
[158] Fix | Delete
}
[159] Fix | Delete
[160] Fix | Delete
private function query($query) {
[161] Fix | Delete
[162] Fix | Delete
Database::query(Database::parsePrefix($query));
[163] Fix | Delete
}
[164] Fix | Delete
[165] Fix | Delete
private function hasColumn($table, $col) {
[166] Fix | Delete
return !!Database::queryRow(Database::parsePrefix("SHOW COLUMNS FROM `" . $table . "` LIKE '" . $col . "'"));
[167] Fix | Delete
}
[168] Fix | Delete
[169] Fix | Delete
public static function repair() {
[170] Fix | Delete
[171] Fix | Delete
self::fixPrimaryKey('#__nextend2_section_storage', 'id', true);
[172] Fix | Delete
[173] Fix | Delete
self::fixPrimaryKey('#__nextend2_image_storage', 'id', true);
[174] Fix | Delete
[175] Fix | Delete
self::fixPrimaryKey('#__nextend2_smartslider3_generators', 'id', true);
[176] Fix | Delete
[177] Fix | Delete
self::fixPrimaryKey('#__nextend2_smartslider3_sliders', 'id', true);
[178] Fix | Delete
[179] Fix | Delete
self::fixPrimaryKey('#__nextend2_smartslider3_slides', 'id', true);
[180] Fix | Delete
[181] Fix | Delete
self::fixPrimaryKey('#__nextend2_smartslider3_sliders_xref', array(
[182] Fix | Delete
'slider_id',
[183] Fix | Delete
'group_id'
[184] Fix | Delete
));
[185] Fix | Delete
}
[186] Fix | Delete
[187] Fix | Delete
[188] Fix | Delete
public function reindexOrders() {
[189] Fix | Delete
$query = "SELECT
[190] Fix | Delete
sliders.*
[191] Fix | Delete
FROM
[192] Fix | Delete
`#__nextend2_smartslider3_sliders` AS sliders
[193] Fix | Delete
LEFT JOIN `#__nextend2_smartslider3_sliders_xref` AS xref
[194] Fix | Delete
ON
[195] Fix | Delete
xref.slider_id = sliders.id
[196] Fix | Delete
WHERE
[197] Fix | Delete
(
[198] Fix | Delete
xref.group_id IS NULL OR xref.group_id = 0
[199] Fix | Delete
)
[200] Fix | Delete
ORDER BY ordering";
[201] Fix | Delete
$sliders = Database::queryAll(Database::parsePrefix($query));
[202] Fix | Delete
foreach ($sliders as $idx => $slider) {
[203] Fix | Delete
$this->query("UPDATE `#__nextend2_smartslider3_sliders` SET `ordering` = '" . $idx . "' WHERE `id` = " . $slider['id'] . " ");
[204] Fix | Delete
}
[205] Fix | Delete
[206] Fix | Delete
}
[207] Fix | Delete
[208] Fix | Delete
[209] Fix | Delete
/**
[210] Fix | Delete
* @param string $tableName
[211] Fix | Delete
* @param array|string $colNames
[212] Fix | Delete
* @param bool $autoIncrement
[213] Fix | Delete
*/
[214] Fix | Delete
private static function fixPrimaryKey($tableName, $colNames, $autoIncrement = false) {
[215] Fix | Delete
if (!is_array($colNames)) {
[216] Fix | Delete
$colNames = array($colNames);
[217] Fix | Delete
}
[218] Fix | Delete
$tableName = Database::parsePrefix($tableName);
[219] Fix | Delete
[220] Fix | Delete
Database::query('DELETE FROM ' . $tableName . ' WHERE ' . $colNames[0] . ' = 0;');
[221] Fix | Delete
$hasIndex = Database::queryRow("SHOW INDEXES FROM " . $tableName . " WHERE Key_name = 'PRIMARY'");
[222] Fix | Delete
if (!$hasIndex) {
[223] Fix | Delete
Database::query('ALTER TABLE ' . $tableName . ' ADD PRIMARY KEY(' . implode(', ', $colNames) . ');');
[224] Fix | Delete
}
[225] Fix | Delete
[226] Fix | Delete
if (count($colNames) == 1 && $autoIncrement) {
[227] Fix | Delete
Database::query('ALTER TABLE ' . $tableName . ' MODIFY `' . $colNames[0] . '` INT NOT NULL AUTO_INCREMENT;');
[228] Fix | Delete
}
[229] Fix | Delete
}
[230] Fix | Delete
[231] Fix | Delete
private static function fixIndex($tableName, $colName, $limit = null) {
[232] Fix | Delete
$tableName = Database::parsePrefix($tableName);
[233] Fix | Delete
[234] Fix | Delete
if (!self::hasIndex($tableName, $colName)) {
[235] Fix | Delete
Database::query("ALTER TABLE " . $tableName . " ADD INDEX `" . $colName . "` (`" . $colName . "`" . (isset($limit) ? '(' . $limit . ')' : '') . ")");
[236] Fix | Delete
}
[237] Fix | Delete
}
[238] Fix | Delete
[239] Fix | Delete
private static function dropIndex($tableName, $colName) {
[240] Fix | Delete
$tableName = Database::parsePrefix($tableName);
[241] Fix | Delete
[242] Fix | Delete
if (self::hasIndex($tableName, $colName)) {
[243] Fix | Delete
Database::query("ALTER TABLE " . $tableName . " DROP INDEX `" . $colName . "`");
[244] Fix | Delete
}
[245] Fix | Delete
[246] Fix | Delete
}
[247] Fix | Delete
[248] Fix | Delete
private static function hasIndex($tableName, $colName) {
[249] Fix | Delete
return Database::queryRow("SHOW INDEXES FROM " . $tableName . " WHERE Key_name = '" . $colName . "'");
[250] Fix | Delete
}
[251] Fix | Delete
[252] Fix | Delete
private static function fixType($tableName, $colName, $type, $default = '') {
[253] Fix | Delete
$tableName = Database::parsePrefix($tableName);
[254] Fix | Delete
[255] Fix | Delete
$column = Database::queryRow(Database::parsePrefix("SHOW COLUMNS FROM " . $tableName . " LIKE '" . $colName . "'"));
[256] Fix | Delete
[257] Fix | Delete
if ($column['Type'] != $type) {
[258] Fix | Delete
Database::query("ALTER TABLE " . $tableName . " MODIFY `" . $colName . "` " . $type . " " . $default);
[259] Fix | Delete
}
[260] Fix | Delete
}
[261] Fix | Delete
[262] Fix | Delete
//Create column if doesn't exists. If column exists, fix its type.
[263] Fix | Delete
private function fixColumn($tableName, $colName, $type, $default = '') {
[264] Fix | Delete
if (!$this->hasColumn($tableName, $colName)) {
[265] Fix | Delete
$this->query("ALTER TABLE " . $tableName . " ADD `" . $colName . "` " . $type . " " . $default);
[266] Fix | Delete
[267] Fix | Delete
} else {
[268] Fix | Delete
self::fixType($tableName, $colName, $type, $default);
[269] Fix | Delete
}
[270] Fix | Delete
}
[271] Fix | Delete
[272] Fix | Delete
private function renameColumn($tableName, $colFrom, $colTo, $typeAndDefault) {
[273] Fix | Delete
if (!$this->hasColumn($tableName, $colTo)) {
[274] Fix | Delete
if ($this->hasColumn($tableName, $colFrom)) {
[275] Fix | Delete
$this->query("ALTER TABLE " . $tableName . " CHANGE `" . $colFrom . "` `" . $colTo . "` " . $typeAndDefault);
[276] Fix | Delete
[277] Fix | Delete
} else {
[278] Fix | Delete
$this->query("ALTER TABLE " . $tableName . " ADD `" . $colTo . "` " . $typeAndDefault);
[279] Fix | Delete
}
[280] Fix | Delete
}
[281] Fix | Delete
}
[282] Fix | Delete
}
[283] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function