{"id":376941,"date":"2026-10-03T09:49:48","date_gmt":"2026-10-03T09:49:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/quran-schools-manager\/"},"modified":"2026-10-03T14:55:03","modified_gmt":"2026-10-03T14:55:03","slug":"noon-quran-schools-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/noon-quran-schools-manager\/","author":14451522,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"7.1.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Noon Quran Schools Manager","header_author":"Kouider Bounama","header_description":"Manage Quran schools and hifz circles: students, parents, teachers, attendance, memorization, plans, exams, finance, points, certificates, and a parent portal.","assets_banners_color":"f2eadc","last_updated":"2026-10-03 14:55:03","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/github.com\/kouiderbounama","header_plugin_uri":"https:\/\/github.com\/kouiderbounama\/quran-schools-manager","header_author_uri":"https:\/\/github.com\/kouiderbounama","rating":0,"author_block_rating":0,"active_installs":0,"downloads":68,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"kouiderbounama","date":"2026-10-03 09:49:40","revision":3726056},"1.0.4":{"tag":"1.0.4","author":"kouiderbounama","date":"2026-10-03 14:55:03","revision":3726387}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3726052,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3726052,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3726052,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3726052,"resolution":"772x250","location":"assets","locale":"","width":722,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3","1.0.4"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[5877,284167,10521,10507,284215],"plugin_category":[],"plugin_contributors":[279384],"plugin_business_model":[],"class_list":["post-376941","plugin","type-plugin","status-publish","hentry","plugin_tags-attendance","plugin_tags-hifz","plugin_tags-islamic","plugin_tags-quran","plugin_tags-quran-schools-manager","plugin_contributors-kouiderbounama","plugin_committers-kouiderbounama"],"banners":{"banner":"https:\/\/ps.w.org\/noon-quran-schools-manager\/assets\/banner-772x250.png?rev=3726052","banner_2x":"https:\/\/ps.w.org\/noon-quran-schools-manager\/assets\/banner-1544x500.png?rev=3726052","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/noon-quran-schools-manager\/assets\/icon-128x128.png?rev=3726052","icon_2x":"https:\/\/ps.w.org\/noon-quran-schools-manager\/assets\/icon-256x256.png?rev=3726052","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Noon Quran Schools Manager is a translation-ready WordPress plugin for tahfez centers.<\/p>\n\n<ul>\n<li>Students, parents, and teachers<\/li>\n<li>Daily attendance and recitation tracking<\/li>\n<li>Memorization plans, golden record (khatm\/ijazah), and student files<\/li>\n<li>Exams, reports, and statistics<\/li>\n<li>Fees, payments, salaries, income and expenses<\/li>\n<li>Motivation points and printable certificates<\/li>\n<li>Parent, student, and teacher portals (shortcodes)<\/li>\n<li>CSV export, CSV import, and JSON backup\/restore<\/li>\n<\/ul>\n\n<p>English is the source language: every interface string goes through gettext (Text Domain: noon-quran-schools-manager, Domain Path: \/languages), so the plugin follows the site locale automatically, including right-to-left locales.<\/p>\n\n<p>Database values are stored as locale-independent keys (numeric surah numbers, status keys such as <code>excellent<\/code> or <code>present<\/code>), while the interface always shows translated labels. Existing Arabic installs are upgraded automatically on activation\/update.<\/p>\n\n<p>The admin interface uses the center name and logo from Settings, and supports the Cairo font for right-to-left locales.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the folder to \/wp-content\/plugins\/<\/li>\n<li>Activate the plugin (tables and data migrations run automatically)<\/li>\n<li>Open the Quran Schools menu and complete Settings<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20locales%20are%20supported%3F\"><h3>Which locales are supported?<\/h3><\/dt>\n<dd><p>Any locale with a translation installed. English is the fallback source language.<\/p><\/dd>\n<dt id=\"will%20activating%20the%20plugin%20change%20my%20existing%20data%3F\"><h3>Will activating the plugin change my existing data?<\/h3><\/dt>\n<dd><p>No. Recitations that stored surah names, and localized grade\/relation\/specialization values, are converted to canonical keys automatically. The demo backup in <code>assets\/qsm-demo-backup.json<\/code> uses the same canonical values.<\/p><\/dd>\n<dt id=\"does%20it%20need%20the%20intl%20php%20extension%3F\"><h3>Does it need the intl PHP extension?<\/h3><\/dt>\n<dd><p>No. It is used for accurate Umm al-Qura Hijri dates when available; without it the plugin falls back to an approximate tabular Hijri calendar.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>English-first, translation-ready interface with automatic LTR\/RTL support<\/li>\n<li>Canonical stored values: numeric surahs, grade\/attendance\/plan\/status keys<\/li>\n<li>Automatic migration of localized values (surah names, relations, specializations, grades)<\/li>\n<li>Shared label helpers, translated JavaScript via wp.i18n, and a Cairo font for RTL locales<\/li>\n<li>Umm al-Qura Hijri dates via the intl extension, with a tabular fallback<\/li>\n<li>CSV export includes readable surah names alongside the numeric columns<\/li>\n<li>Converted every screen (golden record, points, certificates, import included) to gettext strings<\/li>\n<li>Fixed legacy <code>wp_qsm_*<\/code> table prefixes when restoring a JSON backup<\/li>\n<li>Teacher account creation now uses the shared WordPress account helper<\/li>\n<li>Uninstall removes every plugin table, option, migration flag, and role<\/li>\n<li>Removed the duplicate parent portal bootstrap call<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Only a site administrator can create WordPress accounts or assign the supervisor role<\/li>\n<li>Remove activation error_log and prefix uninstall globals<\/li>\n<li>Cast and escape database IDs and option values before output<\/li>\n<li>Text domain matches the plugin slug: noon-quran-schools-manager<\/li>\n<li>Prefixes, options, roles, shortcodes, and tables use noonqsm (4+ characters)<\/li>\n<li>Removed the legacy qsm_ migration and old shortcodes<\/li>\n<li>Escaped admin and portal output<\/li>\n<li>Sidebar stays usable on short desktop screens without a visible scrollbar<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Enqueue print\/card\/certificate CSS, sanitize export\/backup nonces, escape card initial, remove load_plugin_textdomain, lower admin menu position<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Distinct Plugin URI (repository) and Author URI (profile)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release for WordPress.org<\/li>\n<li>Author: Kouider Bounama (https:\/\/github.com\/kouiderbounama)<\/li>\n<\/ul>","raw_excerpt":"Manage Quran schools and hifz circles: students, attendance, memorization, finance, and parent access.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376941","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376941"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kouiderbounama"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376941"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376941"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376941"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376941"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376941"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}