PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 4.3.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v4.3.0
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Updater / Migration / Db / AddIndex.php
matomo / app / core / Updater / Migration / Db Last commit date
AddColumn.php 5 years ago AddColumns.php 5 years ago AddIndex.php 5 years ago AddPrimaryKey.php 5 years ago AddUniqueKey.php 5 years ago BatchInsert.php 5 years ago BoundSql.php 5 years ago ChangeColumn.php 5 years ago ChangeColumnType.php 5 years ago ChangeColumnTypes.php 5 years ago CreateTable.php 5 years ago DropColumn.php 5 years ago DropColumns.php 5 years ago DropIndex.php 5 years ago DropPrimaryKey.php 5 years ago DropTable.php 5 years ago Factory.php 5 years ago Insert.php 5 years ago Sql.php 5 years ago
AddIndex.php
53 lines
1 <?php
2 /**
3 * Matomo - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 */
8 namespace Piwik\Updater\Migration\Db;
9
10 /**
11 * @see Factory::addIndex()
12 * @ignore
13 */
14 class AddIndex extends Sql
15 {
16 protected $indexType = 'INDEX';
17 protected $indexNamePrefix = 'index';
18
19 /**
20 * AddIndex constructor.
21 * @param string $table
22 * @param array $columnNames
23 * @param string $indexName
24 */
25 public function __construct($table, $columnNames, $indexName)
26 {
27 $columns = array();
28 $columnNamesOnly = array();
29 foreach ($columnNames as $columnName) {
30 $columnName = str_replace(' ', '', $columnName); // eg "column_name (10)" => "column_name(10)"
31 preg_match('/^([\w]+)(\(?\d*\)?)$/', $columnName, $matches); // match "column_name" and "column_name(10)"
32
33 $nameOnly = $matches[1]; // eg "column_name"
34 $columnNamesOnly[] = $nameOnly;
35 $column = "`$nameOnly`";
36 if (!empty($matches[2])) {
37 $column .= ' ' . $matches[2]; // eg "(10)"
38 }
39
40 $columns[] = $column;
41 }
42
43 if (empty($indexName)) {
44 $indexName = $this->indexNamePrefix . '_' . implode('_', $columnNamesOnly);
45 }
46
47 $sql = sprintf("ALTER TABLE `%s` ADD %s %s (%s)", $table, $this->indexType, $indexName, implode(', ', $columns));
48
49 parent::__construct($sql, array(static::ERROR_CODE_DUPLICATE_KEY, static::ERROR_CODE_KEY_COLUMN_NOT_EXISTS));
50 }
51
52 }
53