PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
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 / Sql.php
matomo / app / core / Updater / Migration / Db Last commit date
AddColumn.php 2 years ago AddColumns.php 2 years ago AddIndex.php 2 years ago AddPrimaryKey.php 2 years ago AddUniqueKey.php 2 years ago BatchInsert.php 1 year ago BoundSql.php 2 years ago ChangeColumn.php 2 years ago ChangeColumnType.php 2 years ago ChangeColumnTypes.php 2 years ago CreateTable.php 2 months ago DropColumn.php 2 years ago DropColumns.php 2 years ago DropIndex.php 2 years ago DropPrimaryKey.php 2 years ago DropTable.php 2 years ago Factory.php 5 months ago Insert.php 2 years ago Sql.php 1 year ago
Sql.php
90 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 namespace Piwik\Updater\Migration\Db;
10
11 use Piwik\Common;
12 use Piwik\Config;
13 use Piwik\Db;
14 use Piwik\Updater\Migration\Db as DbMigration;
15 /**
16 * Executes a given SQL query.
17 *
18 * @see Factory::sql()
19 * @ignore
20 */
21 class Sql extends DbMigration
22 {
23 /**
24 * @var string
25 */
26 protected $sql;
27 /**
28 * @var false|int|array
29 */
30 private $errorCodesToIgnore;
31 /**
32 * Sql constructor.
33 *
34 * @param string $sql
35 * @param int|int[] $errorCodesToIgnore If no error should be ignored use an empty array.
36 */
37 public function __construct($sql, $errorCodesToIgnore)
38 {
39 if (!is_array($errorCodesToIgnore)) {
40 $errorCodesToIgnore = array($errorCodesToIgnore);
41 }
42 $this->sql = $sql;
43 $globalErrorCodesToIgnore = Config::getInstance()->database['ignore_error_codes'] ?? [];
44 $this->errorCodesToIgnore = array_merge($errorCodesToIgnore, is_array($globalErrorCodesToIgnore) ? $globalErrorCodesToIgnore : []);
45 }
46 public function shouldIgnoreError($exception)
47 {
48 if (empty($this->errorCodesToIgnore)) {
49 return \false;
50 }
51 foreach ($this->errorCodesToIgnore as $code) {
52 if (Db::get()->isErrNo($exception, $code)) {
53 return \true;
54 }
55 }
56 return \false;
57 }
58 /**
59 * @internal
60 * @param int $errorCode
61 * @return $this
62 */
63 public function addErrorCodeToIgnore($errorCode)
64 {
65 $this->errorCodesToIgnore[] = $errorCode;
66 return $this;
67 }
68 /**
69 * @internal
70 */
71 public function getErrorCodesToIgnore()
72 {
73 return $this->errorCodesToIgnore;
74 }
75 public function __toString()
76 {
77 $sql = $this->sql;
78 if (!empty($sql) && !Common::stringEndsWith($sql, ';')) {
79 $sql .= ';';
80 }
81 return $sql;
82 }
83 public function exec()
84 {
85 if (!empty($this->sql)) {
86 Db::exec($this->sql);
87 }
88 }
89 }
90