Skip to content

Commit 7771219

Browse files
Merge pull request #187 from matomo-org/spice-psr
Adds test for PHPCS
2 parents f735b61 + 117d7de commit 7771219

31 files changed

+207
-67
lines changed

.github/workflows/phpcs.yml

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: PHPCS check
2+
3+
on: pull_request
4+
5+
permissions:
6+
actions: read
7+
checks: read
8+
contents: read
9+
deployments: none
10+
issues: read
11+
packages: none
12+
pull-requests: read
13+
repository-projects: none
14+
security-events: none
15+
statuses: read
16+
17+
jobs:
18+
phpcs:
19+
name: PHPCS
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
lfs: false
25+
persist-credentials: false
26+
- name: Setup PHP
27+
uses: shivammathur/setup-php@v2
28+
with:
29+
php-version: '7.4'
30+
tools: cs2pr
31+
- name: Install dependencies
32+
run:
33+
composer init --name=matomo/customalerts --quiet;
34+
composer --no-plugins config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true -n;
35+
composer config repositories.matomo-coding-standards vcs https://github.com/matomo-org/matomo-coding-standards -n;
36+
composer require matomo-org/matomo-coding-standards:dev-master;
37+
composer install --dev --prefer-dist --no-progress --no-suggest
38+
- name: Check PHP code styles
39+
id: phpcs
40+
run: ./vendor/bin/phpcs --report-full --standard=phpcs.xml --report-checkstyle=./phpcs-report.xml
41+
- name: Show PHPCS results in PR
42+
if: ${{ always() && steps.phpcs.outcome == 'failure' }}
43+
run: cs2pr ./phpcs-report.xml --prepend-filename

API.php

-3
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ private function filterAdditionalEmails($additionalEmails)
158158
}
159159

160160
foreach ($additionalEmails as &$email) {
161-
162161
$email = trim($email);
163162
if (empty($email)) {
164163
$email = false;
@@ -173,7 +172,6 @@ private function filterPhoneNumbers($phoneNumbers)
173172
$availablePhoneNumbers = (new \Piwik\Plugins\MobileMessaging\Model())->getActivatedPhoneNumbers(Piwik::getCurrentUserLogin());
174173

175174
foreach ($phoneNumbers as $key => &$phoneNumber) {
176-
177175
$phoneNumber = trim($phoneNumber);
178176

179177
if (!in_array($phoneNumber, $availablePhoneNumbers)) {
@@ -278,5 +276,4 @@ public function getTriggeredAlerts($idSites)
278276

279277
return $this->getModel()->getTriggeredAlerts($idSites, $login);
280278
}
281-
282279
}

Controller.php

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*
@@ -105,7 +106,6 @@ private function findSiteName($alert)
105106
$idSite = $this->findSiteId($alert);
106107

107108
if (!empty($idSite)) {
108-
109109
return Site::getNameFor($idSite);
110110
}
111111
}
@@ -157,14 +157,12 @@ public function formatAlerts($triggeredAlerts, $format)
157157
return $view->render();
158158

159159
case 'sms':
160-
161160
$view = new View('@CustomAlerts/smsTriggeredAlerts');
162161
$view->triggeredAlerts = $this->enrichTriggeredAlerts($triggeredAlerts);
163162

164163
return $view->render();
165164

166165
case 'text':
167-
168166
$view = new View('@CustomAlerts/textTriggeredAlerts');
169167
$view->triggeredAlerts = $this->enrichTriggeredAlerts($triggeredAlerts);
170168

CustomAlerts.php

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
use Piwik\Common;
1313
use Piwik\Container\StaticContainer;
14-
use Piwik\Option;
1514
use Piwik\Piwik;
1615
use Piwik\Plugins\SitesManager\API as SitesManagerApi;
1716
use Piwik\Scheduler\Task;

Menu.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Model.php

-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
*/
2121
class Model
2222
{
23-
2423
public static function install()
2524
{
2625
$tableAlert = "`idalert` INT NOT NULL PRIMARY KEY ,
@@ -434,5 +433,4 @@ public function deleteTriggeredAlertsForSite($idSite)
434433
{
435434
$this->getDb()->query("DELETE FROM " . Common::prefixTable("alert_triggered") . " WHERE idsite = ?", $idSite);
436435
}
437-
438436
}

Notifier.php

-2
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ private function groupAlertsPerEmailRecipient($triggeredAlerts)
7272
$alertsPerEmail = array();
7373

7474
foreach ($triggeredAlerts as $triggeredAlert) {
75-
7675
$emails = $this->getEmailRecipientsForAlert($triggeredAlert);
7776

7877
foreach ($emails as $mail) {
@@ -189,7 +188,6 @@ private function groupAlertsPerSmsRecipient($triggeredAlerts)
189188
$recipients = array();
190189

191190
foreach ($triggeredAlerts as $triggeredAlert) {
192-
193191
$phoneNumbers = $triggeredAlert['phone_numbers'];
194192

195193
if (empty($phoneNumbers)) {

Processor.php

-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use Piwik\Context;
1616
use Piwik\DataTable;
1717
use Piwik\Date;
18-
use Piwik\Option;
1918
use Piwik\Piwik;
2019
use Piwik\Plugins\API\ProcessedReport;
2120
use Piwik\Scheduler\RetryableException;
@@ -453,5 +452,4 @@ protected function triggerAlert($alert, $idSite, $valueNew, $valueOld)
453452
{
454453
$this->getModel()->triggerAlert($alert['idalert'], $idSite, $valueNew, $valueOld, Date::now()->getDatetime());
455454
}
456-
457455
}

Tasks.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*
@@ -67,4 +68,4 @@ private function runAlerts($period, $idSite)
6768
$this->processor->processAlerts($period, (int) $idSite);
6869
$this->notifier->sendNewAlerts($period, (int) $idSite);
6970
}
70-
}
71+
}

Updates/0.0.2.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Updates/0.0.3.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Updates/0.0.4.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Updates/0.0.5.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Updates/0.0.6.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Updates/0.0.7.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Updates/0.0.8.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*
@@ -39,8 +40,10 @@ public function getMigrations(Updater $updater)
3940
$triggeredTable = Common::prefixTable('alert_triggered');
4041

4142
return array(
42-
$this->migration->db->sql("RENAME TABLE `" . Common::prefixTable('alert_log') . "` TO `" . Common::prefixTable('alert_triggered') . "`",
43-
array(DbMigration::ERROR_CODE_DUPLICATE_COLUMN, DbMigration::ERROR_CODE_TABLE_NOT_EXISTS, DbMigration::ERROR_CODE_TABLE_EXISTS)),
43+
$this->migration->db->sql(
44+
"RENAME TABLE `" . Common::prefixTable('alert_log') . "` TO `" . Common::prefixTable('alert_triggered') . "`",
45+
array(DbMigration::ERROR_CODE_DUPLICATE_COLUMN, DbMigration::ERROR_CODE_TABLE_NOT_EXISTS, DbMigration::ERROR_CODE_TABLE_EXISTS)
46+
),
4447
$this->migration->db->addColumns('alert_triggered', array(
4548
'name' => 'VARCHAR(100) NOT NULL',
4649
'login' => 'VARCHAR(100) NOT NULL',

Updates/0.1.10.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Updates/0.1.17.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Updates/0.1.8.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

Validator.php

-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ public function filterPhoneNumbers($phoneNumbers)
4444
$availablePhoneNumbers = (new \Piwik\Plugins\MobileMessaging\Model())->getActivatedPhoneNumbers(Piwik::getCurrentUserLogin());
4545

4646
foreach ($phoneNumbers as $key => &$phoneNumber) {
47-
4847
$phoneNumber = trim($phoneNumber);
4948

5049
if (!in_array($phoneNumber, $availablePhoneNumbers)) {

phpcs.xml

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?xml version="1.0"?>
2+
<ruleset name="customAlerts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd">
3+
4+
<description>Matomo Coding Standard for CustomAlerts plugin</description>
5+
6+
<arg name="extensions" value="php" />
7+
8+
<file>.</file>
9+
10+
<exclude-pattern>tests/javascript/*</exclude-pattern>
11+
<exclude-pattern>*/vendor/*</exclude-pattern>
12+
13+
<rule ref="Matomo"></rule>
14+
15+
<rule ref="Generic.Files.LineLength">
16+
<properties>
17+
<property name="lineLimit" value="250" />
18+
</properties>
19+
<exclude-pattern>tests/*</exclude-pattern>
20+
</rule>
21+
22+
<rule ref="Squiz.Classes.ValidClassName.NotCamelCaps">
23+
<!-- Classnames for our update files don't match PascalCase, this can't be changed easily -->
24+
<exclude-pattern>Updates/*</exclude-pattern>
25+
</rule>
26+
27+
<rule ref="PSR1.Methods.CamelCapsMethodName.NotCamelCaps">
28+
<!-- Allow using method name without camel caps in tests as long as some methods are named test_* -->
29+
<exclude-pattern>tests/*</exclude-pattern>
30+
</rule>
31+
32+
<rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
33+
<!-- Allow using multiple classes in one file for tests -->
34+
<exclude-pattern>tests/*</exclude-pattern>
35+
</rule>
36+
</ruleset>

tests/Fixtures/CustomAlerts.php

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*

tests/Integration/ApiTest.php

+36-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* Matomo - free/libre analytics platform
45
*
@@ -18,7 +19,6 @@
1819
*/
1920
class ApiTest extends BaseTest
2021
{
21-
2222
public function setUp(): void
2323
{
2424
parent::setUp();
@@ -39,17 +39,29 @@ protected function createAlert(
3939
$reportCondition = 'matches_exactly',
4040
$emails = array('[email protected]', '[email protected]'),
4141
$comparedTo = 1
42-
)
43-
{
42+
) {
4443
if (is_null($idSites)) {
4544
$idSites = $this->idSite;
4645
}
4746

4847
// those should be dropped by the api as they do not exist in Piwik
4948
$phoneNumbers = array('+1234567890', '1234567890');
5049

51-
$id = $this->api->addAlert($name, $idSites, $period, 0, $emails, $phoneNumbers, $metric, $metricCondition,
52-
$metricMatched = 5, $comparedTo, $report, $reportCondition, 'Piwik');
50+
$id = $this->api->addAlert(
51+
$name,
52+
$idSites,
53+
$period,
54+
0,
55+
$emails,
56+
$phoneNumbers,
57+
$metric,
58+
$metricCondition,
59+
$metricMatched = 5,
60+
$comparedTo,
61+
$report,
62+
$reportCondition,
63+
'Piwik'
64+
);
5365
return $id;
5466
}
5567

@@ -164,8 +176,7 @@ protected function assertIsAlert(
164176
$report = 'MultiSites_getOne',
165177
$reportCondition = 'matches_exactly',
166178
$reportMatched = 'Piwik'
167-
)
168-
{
179+
) {
169180
if (is_null($idSites)) {
170181
$idSites = array($this->idSite);
171182
}
@@ -211,8 +222,7 @@ protected function editAlert(
211222
$metricCondition = 'less_than',
212223
$reportCondition = 'matches_exactly',
213224
$emails = array('[email protected]', '[email protected]')
214-
)
215-
{
225+
) {
216226
if (is_null($idSites)) {
217227
$idSites = $this->idSite;
218228
}
@@ -221,8 +231,22 @@ protected function editAlert(
221231
$phoneNumbers = array('+1234567890', '1234567890');
222232
$comparedTo = 1;
223233

224-
$id = $this->api->editAlert($id, $name, $idSites, $period, 0, $emails, $phoneNumbers, $metric, $metricCondition,
225-
$metricMatched = 5, $comparedTo, $report, $reportCondition, 'Piwik');
234+
$id = $this->api->editAlert(
235+
$id,
236+
$name,
237+
$idSites,
238+
$period,
239+
0,
240+
$emails,
241+
$phoneNumbers,
242+
$metric,
243+
$metricCondition,
244+
$metricMatched = 5,
245+
$comparedTo,
246+
$report,
247+
$reportCondition,
248+
'Piwik'
249+
);
226250
return $id;
227251
}
228252

@@ -571,4 +595,4 @@ public function test_getTriggeredAlerts_ShouldReturnAllThatMatchesLoginAndIdSite
571595
$triggeredAlerts = $this->api->getTriggeredAlerts(array(1));
572596
$this->assertCount(0, $triggeredAlerts);
573597
}
574-
}
598+
}

0 commit comments

Comments
 (0)