Skip to content

Commit

Permalink
Add error handling in ajax request to get meeting details from DB for…
Browse files Browse the repository at this point in the history
… editing even options
  • Loading branch information
weilai-irl committed Dec 22, 2023
1 parent ee99bbd commit 957dc7d
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 6 deletions.
52 changes: 48 additions & 4 deletions ajax.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,55 @@
$url = required_param('url', PARAM_URL);
$result = '';
if (!empty($url)) {
$record = $DB->get_record_sql('SELECT * FROM {atto_teamsmeeting} WHERE ' . $DB->sql_compare_text('link') . ' = ' .
$DB->sql_compare_text(':url'), ['url' => $url]);
$result = json_encode([$CFG->wwwroot . '/lib/editor/atto/plugins/teamsmeeting/result.php', $record->title, $record->link,
$record->options]);
$record = atto_teamsmeeting_get_meeting($url);
$result = atto_teamsmeeting_meeting_url($record);
}

echo $result;
die();

/**
* Gets data from the database about the meeting.
*
* @param string $url The URL of the meeting.
* @return object|null The meeting data or null if meeting not found.
*/
function atto_teamsmeeting_get_meeting($url) {
global $DB;
$sql = 'SELECT *
FROM {atto_teamsmeeting}
WHERE ' . $DB->sql_compare_text('link') . ' = ' . $DB->sql_compare_text(':url') . ' ORDER BY id ASC';
$records = $DB->get_records_sql($sql, ['url' => $url]);

$count = count($records);
if ($count == 0) {
return null;
}

$result = reset($records);
if ($count > 1) {
array_shift($records);
$ids = [];
foreach ($records as $record) {
$ids[] = $record->id;
}
$DB->delete_records_list('atto_teamsmeeting', 'id', $ids);
}

return $result;
}

/**
* Gets the meeting URL from the given record.
*
* @param object|null $record The record containing meeting data.
* @return string Returns the JSON-encoded meeting URL and related data.
*/
function atto_teamsmeeting_meeting_url($record) {
if (is_null($record)) {
return json_encode([(new moodle_url('/lib/editor/atto/plugins/teamsmeeting/error.php'))->out(), '', '', '']);
}

return json_encode([(new moodle_url('/lib/editor/atto/plugins/teamsmeeting/result.php'))->out(), $record->title, $record->link,
$record->options]);
}
43 changes: 43 additions & 0 deletions error.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// 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/>.

/**
* A script that displays an error message in iframe when meeting is not found.
*
* @package tiny_teamsmeeting
* @copyright 2023 Enovation Solutions
* @author Oliwer Banach <[email protected]>
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

require_once(__DIR__ . '/../../../../../config.php');

require_login();

echo '<div style="display: flex; flex-direction: column; margin-top: 2rem;padding: 2rem;font-family: sans-serif;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" xml:space="preserve" xmlns:xlink="http://www.w3.org/1999/xlink"
style="width:100px; align-self: center; display: flex; margin-bottom: 1.5rem;">
<g><g id="Error_1_"><g id="Error">
<circle cx="16" cy="16" id="BG" r="16" style="fill:#D72828;"/>
<path d="M14.5,25h3v-3h-3V25z M14.5,6v13h3V6H14.5z" id="Exclamatory_x5F_Sign" style="fill:#E6E6E6;"/>
</g></g></g>
</svg>
<span class="meetingcreatedheader" style="font-size: 20px; font-weight: 600; display: block; text-align: center;">' .
get_string('iframe_not_found', 'atto_teamsmeeting') .
'</span>';

exit;
1 change: 1 addition & 0 deletions lang/en/atto_teamsmeeting.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,4 @@
$string['settings'] = 'Teams Meeting Settings';
$string['legacy_setting_warning'] = '<br/>
<span style="color:red">WARNING: The Meetings app deployed at https://enovation.ie/msteams is deprecated and will be removed soon. A new app has been created at https://enomsteams.z16.web.core.windows.net.</span>';
$string['iframe_not_found'] = 'Meeting not found!';
1 change: 1 addition & 0 deletions lang/pl/atto_teamsmeeting.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,4 @@
$string['pluginname'] = 'Teams Meeting';
$string['privacy:metadata'] = 'atto_teamsmeeting plugin nie przechowuje żadnych danych osobowych.';
$string['settings'] = 'Ustawienia Teams Meeting';
$string['iframe_not_found'] = 'Nie znaleziono spotkania!';
4 changes: 2 additions & 2 deletions version.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@

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

$plugin->version = 2020032706;
$plugin->version = 2020032707;
$plugin->requires = 2016052318;
$plugin->component = 'atto_teamsmeeting';
$plugin->maturity = MATURITY_STABLE;
$plugin->release = 'v1.2.6';
$plugin->release = 'v1.2.7';

0 comments on commit 957dc7d

Please sign in to comment.