Skip to content

Commit

Permalink
MDL-69520 core_h5p: add example and tutorial links
Browse files Browse the repository at this point in the history
  • Loading branch information
sarjona committed Oct 14, 2020
1 parent 9aeb59a commit ad28920
Show file tree
Hide file tree
Showing 7 changed files with 75 additions and 6 deletions.
21 changes: 21 additions & 0 deletions h5p/classes/core.php
Expand Up @@ -190,6 +190,13 @@ public function fetch_latest_content_types(): ?\stdClass {
'minorVersion' => $type->version->minor,
'patchVersion' => $type->version->patch,
];
// Add example and tutorial to the library, to store this information too.
if (isset($type->example)) {
$library['example'] = $type->example;
}
if (isset($type->tutorial)) {
$library['tutorial'] = $type->tutorial;
}

$shoulddownload = true;
if ($framework->getLibraryId($type->id, $type->version->major, $type->version->minor)) {
Expand Down Expand Up @@ -221,6 +228,8 @@ public function fetch_latest_content_types(): ?\stdClass {
* @return int|null Returns the id of the content type library installed, null otherwise.
*/
public function fetch_content_type(array $library): ?int {
global $DB;

$factory = new factory();

// Download the latest content type from the H5P official repository.
Expand Down Expand Up @@ -250,6 +259,18 @@ public function fetch_content_type(array $library): ?int {
$librarykey = static::libraryToString($library);
$libraryid = $factory->get_storage()->h5pC->librariesJsonData[$librarykey]["libraryId"];

// Update example and tutorial (if any of them are defined in $library).
$params = ['id' => $libraryid];
if (array_key_exists('example', $library)) {
$params['example'] = $library['example'];
}
if (array_key_exists('tutorial', $library)) {
$params['tutorial'] = $library['tutorial'];
}
if (count($params) > 1) {
$DB->update_record('h5p_libraries', $params);
}

return $libraryid;
}

Expand Down
19 changes: 17 additions & 2 deletions h5p/classes/editor_ajax.php
Expand Up @@ -76,8 +76,23 @@ public function getLatestLibraryVersions(): array {
* @return mixed|null Returns results from querying the database
*/
public function getContentTypeCache($machinename = null) {
// This is to be implemented when the Hub client is used.
return [];
global $DB;

// Added some extra fields to the result because they are expected by functions calling this. They have been
// taken from method getCachedLibsMap() in h5peditor.class.php.
$sql = "SELECT l.id, l.machinename AS machine_name, l.majorversion AS major_version,
l.minorversion AS minor_version, l.patchversion AS patch_version, l.coremajor AS h5p_major_version,
l.coreminor AS h5p_minor_version, l.title, l.tutorial, l.example,
'' AS summary, '' AS description, '' AS icon, 0 AS created_at, 0 AS updated_at, 0 AS is_recommended,
0 AS popularity, '' AS screenshots, '' AS license, '' AS owner
FROM {h5p_libraries} l";
$params = [];
if (!empty($machinename)) {
$sql .= ' WHERE l.machinename = :machine_name';
$params = ['machine_name' => $machinename];
}

return $DB->get_records_sql($sql, $params);
}

/**
Expand Down
6 changes: 4 additions & 2 deletions h5p/classes/editor_framework.php
Expand Up @@ -228,7 +228,7 @@ public function getLibraries($libraries = null): ?array {
if ($libraries !== null) {
// Get details for the specified libraries.
$librariesin = [];
$fields = 'title, runnable, metadatasettings';
$fields = 'title, runnable, metadatasettings, example, tutorial';

foreach ($libraries as $library) {
$params = [
Expand All @@ -243,11 +243,13 @@ public function getLibraries($libraries = null): ?array {
$library->title = $details->title;
$library->runnable = $details->runnable;
$library->metadataSettings = json_decode($details->metadatasettings);
$library->example = $details->example;
$library->tutorial = $details->tutorial;
$librariesin[] = $library;
}
}
} else {
$fields = 'id, machinename as name, title, majorversion, minorversion, metadatasettings';
$fields = 'id, machinename as name, title, majorversion, minorversion, metadatasettings, example, tutorial';
$librariesin = api::get_contenttype_libraries($fields);
}

Expand Down
11 changes: 10 additions & 1 deletion h5p/classes/framework.php
Expand Up @@ -115,7 +115,16 @@ public function fetchExternalData($url, $data = null, $blocking = true, $stream
* @param string $url
*/
public function setLibraryTutorialUrl($libraryname, $url) {
// Tutorial url is currently not being used or stored in libraries.
global $DB;

$sql = 'UPDATE {h5p_libraries}
SET tutorial = :tutorial
WHERE machinename = :machinename';
$params = [
'tutorial' => $url,
'machinename' => $libraryname,
];
$DB->execute($sql, $params);
}

/**
Expand Down
2 changes: 2 additions & 0 deletions lib/db/install.xml
Expand Up @@ -4198,6 +4198,8 @@
<FIELD NAME="coremajor" TYPE="int" LENGTH="4" NOTNULL="false" SEQUENCE="false" COMMENT="H5P core API major version required"/>
<FIELD NAME="coreminor" TYPE="int" LENGTH="4" NOTNULL="false" SEQUENCE="false" COMMENT="H5P core API minor version required"/>
<FIELD NAME="metadatasettings" TYPE="text" NOTNULL="false" SEQUENCE="false" COMMENT="Library metadata settings"/>
<FIELD NAME="tutorial" TYPE="text" NOTNULL="false" SEQUENCE="false" COMMENT="Tutorial URL"/>
<FIELD NAME="example" TYPE="text" NOTNULL="false" SEQUENCE="false" COMMENT="Example URL"/>
</FIELDS>
<KEYS>
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
Expand Down
20 changes: 20 additions & 0 deletions lib/db/upgrade.php
Expand Up @@ -2762,5 +2762,25 @@ function xmldb_main_upgrade($oldversion) {
upgrade_main_savepoint(true, 2020100700.00);
}

if ($oldversion < 2020101300.01) {
// Define fields tutorial and example to be added to h5p_libraries.
$table = new xmldb_table('h5p_libraries');

// Add tutorial field.
$field = new xmldb_field('tutorial', XMLDB_TYPE_TEXT, null, null, null, null, null, 'metadatasettings');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}

// Add example field.
$field = new xmldb_field('example', XMLDB_TYPE_TEXT, null, null, null, null, null, 'tutorial');
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}

// Main savepoint reached.
upgrade_main_savepoint(true, 2020101300.01);
}

return true;
}
2 changes: 1 addition & 1 deletion version.php
Expand Up @@ -29,7 +29,7 @@

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

$version = 2020101300.00; // YYYYMMDD = weekly release date of this DEV branch.
$version = 2020101300.01; // YYYYMMDD = weekly release date of this DEV branch.
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.
$release = '3.10dev+ (Build: 20201013)';// Human-friendly version name
Expand Down

0 comments on commit ad28920

Please sign in to comment.