{"id":49888300,"url":"https://github.com/boxlinknet/moodle-local_kwtsms","last_synced_at":"2026-05-15T19:33:49.746Z","repository":{"id":347184702,"uuid":"1192376685","full_name":"boxlinknet/moodle-local_kwtsms","owner":"boxlinknet","description":"Moodle plugin for sending SMS notifications through the kwtSMS gateway (kwtsms.com). Automates messages for enrollment, grading, course completion, quiz and assignment submissions. Bilingual templates","archived":false,"fork":false,"pushed_at":"2026-04-19T01:08:59.000Z","size":193,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-19T01:31:31.295Z","etag":null,"topics":["arabic","kuwait","kwtsms","lms","moodle","moodle-plugin","notifications","php","sms","sms-gateway"],"latest_commit_sha":null,"homepage":"https://www.kwtsms.com/integrations.html","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/boxlinknet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-26T06:40:50.000Z","updated_at":"2026-04-19T01:09:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/boxlinknet/moodle-local_kwtsms","commit_stats":null,"previous_names":["boxlinknet/kwtsms-moodle","boxlinknet/moodle-local_kwtsms"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/boxlinknet/moodle-local_kwtsms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxlinknet%2Fmoodle-local_kwtsms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxlinknet%2Fmoodle-local_kwtsms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxlinknet%2Fmoodle-local_kwtsms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxlinknet%2Fmoodle-local_kwtsms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boxlinknet","download_url":"https://codeload.github.com/boxlinknet/moodle-local_kwtsms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boxlinknet%2Fmoodle-local_kwtsms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33076222,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arabic","kuwait","kwtsms","lms","moodle","moodle-plugin","notifications","php","sms","sms-gateway"],"created_at":"2026-05-15T19:33:48.963Z","updated_at":"2026-05-15T19:33:49.736Z","avatar_url":"https://github.com/boxlinknet.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kwtSMS for Moodle\n\n[![Moodle Plugin Directory](https://img.shields.io/badge/Moodle.org-local__kwtsms-orange.svg)](https://moodle.org/plugins/local_kwtsms)\n[![Moodle](https://img.shields.io/badge/Moodle-4.3+-orange.svg)](https://moodle.org)\n[![PHP](https://img.shields.io/badge/PHP-8.1+-777BB4.svg)](https://www.php.net)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![GitHub issues](https://img.shields.io/github/issues/boxlinknet/moodle-local_kwtsms)](https://github.com/boxlinknet/moodle-local_kwtsms/issues)\n[![GitHub release](https://img.shields.io/github/v/release/boxlinknet/moodle-local_kwtsms?include_prereleases)](https://github.com/boxlinknet/moodle-local_kwtsms/releases)\n\nSend SMS notifications to students and administrators via the kwtSMS gateway (kwtsms.com).\n\nAvailable on the official [Moodle Plugins Directory](https://moodle.org/plugins/local_kwtsms).\n\n## About kwtSMS\n\n[kwtSMS](https://www.kwtsms.com) is a Kuwait-based SMS gateway providing reliable message delivery across the Middle East and internationally. Features include:\n\n- SMS delivery to 200+ countries\n- Transactional and promotional sender IDs\n- Real-time balance and delivery tracking\n- Arabic and English message support\n- REST/JSON API with client libraries for PHP, Python, JavaScript, and more\n\n**[Sign up for a kwtSMS account](https://www.kwtsms.com/account/signup/)** to get your API credentials and start sending SMS from your Moodle site.\n\nFor more integrations, visit the [kwtSMS Integrations page](https://www.kwtsms.com/integrations.html).\n\n## Features\n\n- **Event-driven SMS:** Automatic notifications for enrollment, unenrollment, grading, course completion, quiz submission, assignment submission, and new user registration\n- **7-tab admin interface:** Dashboard, Settings, Gateway, Templates, Integrations, Logs, Help\n- **Multilingual templates:** English + Arabic with placeholder support ({firstname}, {coursename}, {grade}, etc.)\n- **Gateway management:** Login/logout, balance monitoring, sender ID selection, country code configuration\n- **SMS logging:** Full log with status tracking, phone masking, filtering, pagination, and CSV export\n- **Daily sync:** Automatic refresh of balance, sender IDs, and coverage data\n- **RTL support:** Right-to-left layout support for Arabic interfaces\n- **Test mode:** Send to API without delivery for development and testing\n\n## Requirements\n\n- **Moodle:** 4.3 or later (tested on 4.3, 4.4, 4.5, 5.0, 5.1, 5.2)\n- **PHP:** 8.1 or later (tested on 8.1, 8.2, 8.3)\n- **Database:** PostgreSQL or MariaDB/MySQL (both verified in CI)\n- A kwtSMS account (sign up at https://www.kwtsms.com)\n\n### Tested compatibility matrix\n\nEvery push runs the Moodle Plugin CI across the full matrix below. All jobs green as of v1.0.2.\n\n| Moodle | PHP | Database |\n|--------|-----|----------|\n| 4.3    | 8.1 | PostgreSQL |\n| 4.4    | 8.1 | MariaDB |\n| 4.5    | 8.2 | PostgreSQL |\n| 4.5    | 8.3 | MariaDB |\n| 5.0    | 8.2 | PostgreSQL |\n| 5.1    | 8.3 | MariaDB |\n| 5.2    | 8.3 | PostgreSQL |\n\n## Installation\n\nPick whichever option suits your workflow. All three install the same version.\n\n### Option 1: Install from Moodle.org (recommended)\n\n1. Sign in to your Moodle site as an administrator.\n2. Go to **Site administration \u003e Plugins \u003e Install plugins**.\n3. Click **Install plugins from the Moodle plugins directory**.\n4. Search for `kwtSMS` or go to https://moodle.org/plugins/local_kwtsms.\n5. Click **Install now** and follow the prompts.\n\n### Option 2: Upload a ZIP\n\n1. Download the latest release ZIP from the\n   [GitHub releases page](https://github.com/boxlinknet/moodle-local_kwtsms/releases)\n   or from the [Moodle plugins directory](https://moodle.org/plugins/local_kwtsms).\n2. In Moodle, go to **Site administration \u003e Plugins \u003e Install plugins**.\n3. Drag the ZIP into the installer and click **Install plugin from the ZIP file**.\n4. Follow the prompts to complete the upgrade.\n\n### Option 3: Install from source\n\n1. Clone or extract the plugin into `local/kwtsms/` under your Moodle directory:\n   ```bash\n   git clone https://github.com/boxlinknet/moodle-local_kwtsms.git local/kwtsms\n   ```\n2. Visit **Site administration \u003e Notifications** to complete the installation.\n\n### After installing\n\n1. Go to **Site administration \u003e Plugins \u003e Local plugins \u003e kwtSMS**.\n2. Open the **Gateway** tab and log in with your kwtSMS API credentials.\n\n## Configuration\n\n1. **Gateway tab:** Enter your API username and password, click Login. Select your Sender ID and default country code.\n2. **Settings tab:** Enable the gateway, configure test mode, set admin phone numbers, and set the low balance alert threshold.\n3. **Integrations tab:** Enable the events you want to trigger SMS notifications.\n4. **Templates tab:** Customize the English and Arabic SMS message templates for each event.\n\n## Supported Events\n\n| Event | Recipient | Description |\n|-------|-----------|-------------|\n| User Enrolled | Student | Sent when a user is enrolled in a course |\n| User Unenrolled | Student | Sent when a user is removed from a course |\n| Grade Posted | Student | Sent when a grade is published |\n| Course Completed | Student | Sent when a user completes a course |\n| Quiz Submitted | Student | Sent when a quiz attempt is submitted |\n| Assignment Submitted | Student | Sent when an assignment file is uploaded |\n| New User Registered | Admin | Sent to admin phones when a new user registers |\n\n## Template Placeholders\n\n| Placeholder | Available In | Description |\n|-------------|-------------|-------------|\n| `{firstname}` | All events | User's first name |\n| `{lastname}` | All events | User's last name |\n| `{coursename}` | Course events | Course full name |\n| `{grade}` | Grade Posted | The grade value |\n| `{activityname}` | Quiz/Assignment | Activity name |\n| `{sitename}` | All events | Moodle site name |\n\n## Sender ID\n\n`KWT-SMS` is a shared testing sender ID. For production use, register a private sender ID through your kwtSMS account:\n\n- **Transactional:** Required for OTP and alerts, bypasses DND filtering\n- **Promotional:** For announcements and marketing, subject to DND filtering\n\n## Support\n\n- kwtSMS account support: https://www.kwtsms.com/support.html\n- Plugin issues: https://github.com/boxlinknet/moodle-local_kwtsms/issues\n\n## License\n\nThis plugin is licensed under the GNU GPL v3 or later.\nSee https://www.gnu.org/copyleft/gpl.html for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboxlinknet%2Fmoodle-local_kwtsms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboxlinknet%2Fmoodle-local_kwtsms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboxlinknet%2Fmoodle-local_kwtsms/lists"}