Skip to content

Commit

Permalink
Implemented the Moodle Privacy API
Browse files Browse the repository at this point in the history
Fixes #15 (Moodle 3.3)
  • Loading branch information
scara committed Apr 9, 2018
1 parent 3e40174 commit f0ecb34
Show file tree
Hide file tree
Showing 6 changed files with 118 additions and 9 deletions.
9 changes: 2 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,18 @@ cache:
php:
- 7.0
- 7.1
- 7.2

env:
- DB=pgsql MOODLE_BRANCH=MOODLE_33_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_33_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_34_STABLE
- DB=mysqli MOODLE_BRANCH=master

matrix:
include:
- php: 5.6
env: DB=mysqli MOODLE_BRANCH=MOODLE_33_STABLE # Moodle 3.4+ requires 7.0.0
env: DB=mysqli MOODLE_BRANCH=MOODLE_33_STABLE # Moodle 3.3 is still compatible with PHP 5.6
exclude:
- php: 7.2
- php: 7.1
env: DB=mysqli MOODLE_BRANCH=MOODLE_33_STABLE
- php: 7.2
env: DB=pgsql MOODLE_BRANCH=MOODLE_33_STABLE

before_install:
- phpenv config-rm xdebug.ini
Expand Down
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# v1.3.0.0 (Build: 2018040900)
Starting from this versione the minor number indicates the supported Moodle version:
_x.3.y.z_ means that this version supports Moodle 3.3 but not 3.4+.
- Implemented the Moodle Privacy API

# v1.0.4 (Build: 2017121000)
- Fixed an error when the course summary is not provided.

Expand Down
54 changes: 54 additions & 0 deletions classes/privacy/provider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php
// This file is part of the Twitter Card local plugin for Moodle
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Privacy Subsystem implementation for local_twittercard.
*
* @package local_twittercard
* @copyright 2018 Matteo Scaramuccia <moodle@matteoscaramuccia.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace local_twittercard\privacy;

defined('MOODLE_INTERNAL') || die();

// Backward compat.
interface_exists('\core_privacy\local\metadata\null_provider') || die();

// 3.3 runs even on PHP 5.6 so 'return type declaration' is not supported:
// the privacy null_provider interface has been implemented in 3.3 accordingly.

/**
* Privacy Subsystem implementation for local_twittercard implementing null_provider.
*
* @package local_twittercard
* @copyright 2018 Matteo Scaramuccia <moodle@matteoscaramuccia.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class provider implements
// This plugin does not store any personal user data.
\core_privacy\local\metadata\null_provider {
/**
* Get the language string identifier with the component's language
* file to explain why this plugin stores no data.
*
* @return string
*/
public static function get_reason() {
return 'privacy:metadata';
}
}
1 change: 1 addition & 0 deletions lang/en/local_twittercard.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
$string['enabled'] = 'Enabled';
$string['enabled_help'] = 'Enable a Twitter summary card for courses.';
$string['pluginname'] = 'Twitter card';
$string['privacy:metadata'] = 'The Twitter Card local plugin displays information from the Course, but does not effect or store any data itself.';
$string['twittercard'] = 'Twitter card';
$string['twittersite'] = 'Twitter site';
$string['twittersite_help'] = 'The Twitter @username of website the card should be attributed to.';
49 changes: 49 additions & 0 deletions tests/privacy_test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php
// This file is part of the Twitter Card local plugin for Moodle
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* Tests for the Privacy API implementation in Twitter summary card.
*
* @package local_twittercard
* @copyright 2018 Matteo Scaramuccia <moodle@matteoscaramuccia.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

defined('MOODLE_INTERNAL') || die();

/**
* Class local_twittercard_privacy_testcase
*
* @package local_twittercard
* @copyright 2017 Matteo Scaramuccia <moodle@matteoscaramuccia.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class local_twittercard_privacy_testcase extends advanced_testcase {
/**
* Tests that local_twittercard actually implements the Privacy API null_provider.
*/
public function test_null_provider() {
if (!interface_exists('\core_privacy\local\metadata\null_provider')) {
$this->markTestSkipped('The Moodle code does not implement the Moodle Privacy API');
}

$this->assertTrue(class_exists('\local_twittercard\privacy\provider'));
$this->assertEquals(
[ 'core_privacy\local\metadata\null_provider' => 'core_privacy\local\metadata\null_provider' ],
class_implements('\local_twittercard\privacy\provider')
);
}
}
9 changes: 7 additions & 2 deletions version.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,13 @@
defined('MOODLE_INTERNAL') || die();

$plugin->component = 'local_twittercard';
$plugin->version = 2017121000;
$plugin->release = '1.0.4 (Build: 2017121000)';
// HACK - Do not install this plugin version on Moodle 3.4+.
global $CFG, $branch;
$currentbranch = isset($CFG->branch) ? $CFG->branch : $branch;
if ($currentbranch === '33') {
$plugin->version = 2018040900;
$plugin->release = '1.3.0.0 (Build: 2018040900)';
}
$plugin->requires = 2017051500;
$plugin->maturity = MATURITY_STABLE;
$plugin->cron = 0;
Expand Down

0 comments on commit f0ecb34

Please sign in to comment.