From 8f66bab55d39b491767225365cec991623663242 Mon Sep 17 00:00:00 2001
From: pimteam
Date: Fri, 3 Dec 2021 13:02:51 +0200
Subject: [PATCH] working on "manage reviews"
---
controllers/multiuser.php | 3 ++-
controllers/reviews.php | 43 ++++++++++++++++++++++++++++++++++++++
models/namaste-model.php | 19 +++++++++++++----
views/multiuser.html.php | 7 ++++++-
views/reviews.html.php | 44 +++++++++++++++++++++++++++++++++++++++
5 files changed, 110 insertions(+), 6 deletions(-)
create mode 100644 views/reviews.html.php
diff --git a/controllers/multiuser.php b/controllers/multiuser.php
index 1e0ac04..5d0cdc1 100644
--- a/controllers/multiuser.php
+++ b/controllers/multiuser.php
@@ -17,7 +17,8 @@ static function manage() {
"students_access" => sanitize_text_field($_POST['students_access']),
"gradebook_access" => sanitize_text_field($_POST['gradebook_access']),
"no_mycourses" => $no_mycourses, "mass_enroll_access" => sanitize_text_field($_POST['mass_enroll_access']),
- "help_access" => sanitize_text_field($_POST['help_access']), "plugins_access" => sanitize_text_field($_POST['plugins_access']));
+ "help_access" => sanitize_text_field($_POST['help_access']), "plugins_access" => sanitize_text_field($_POST['plugins_access']),
+ 'reviews_access' => sanitize_text_field($_POST['reviews_access']));
update_option('namaste_role_settings', serialize($role_settings));
do_action('namaste-role-settings-saved', $_POST['role_key']);
diff --git a/controllers/reviews.php b/controllers/reviews.php
index 2c5234a..431eac6 100644
--- a/controllers/reviews.php
+++ b/controllers/reviews.php
@@ -1,6 +1,49 @@
query($wpdb->prepare("UPDATE ".NAMASTE_COURSE_REVIEWS." SET is_approved=1 WHERE id=%d", intval($_POST['id']) ));
+ }
+
+ // delete a review
+ if(!empty($_POST['del']) and check_admin_referer('namaste_reviews')) {
+ if(class_exists('NamastePROReviews') and method_exists(['NamastePROReviews', 'has_access'])) NamastePROReviews :: has_access($_POST['id']);
+
+ $wpdb->query($wpdb->prepare("DELETE FROM ".NAMASTE_COURSE_REVIEWS." WHERE id=%d", intval($_POST['id']) ));
+ }
+
+ // list reviews
+ $course_filter = $status_filter = '';
+
+ if(!empty($_GET['course_id'])) $course_filter = $wpdb->prepare(" AND course_id=%d ", intval($_GET['course_id']));
+ if(isset($_GET['status']) and $_GET['status'] !== '') $status_filter = $wpdb->prepare(" AND is_approved=%d ", intval($_GET['status']));
+
+ $offset = empty($_GET['offset']) ? 0 : intval($_GET['offset']);
+ $limit = 20;
+
+ $reviews = $wpdb->get_results($wpdb->prepare("SELECT tR.*, tP.post_title as course_name, tU.display_name as user_name
+ FROM ".NAMASTE_COURSE_REVIEWS." tR JOIN {$wpdb->posts} tP ON tP.ID = tR.course_id AND tP.post_type = 'namaste_course'
+ JOIN {$wpdb->users} tU ON tU.ID = tR.student_id
+ WHERE 1 $course_filter $status_filter ORDER BY tR.id DESC LIMIT %d, %d", $offset, $limit));
+
+ // add filter to allow Pro to reduce by class
+ $reviews = apply_filters('namaste-filter-reviews', $reviews);
+
+ // select courses for the drop-down
+ $_course = new NamasteLMSCourseModel();
+ $courses = $_course->select();
+
+ if(@file_exists(get_stylesheet_directory().'/namaste/reviews.html.php')) include get_stylesheet_directory().'/namaste/reviews.html.php';
+ else include(NAMASTE_PATH."/views/reviews.html.php");
+ } // end manage
+
// submits a review
// access for the student is checked before calling the function
public static function submit($vars) {
diff --git a/models/namaste-model.php b/models/namaste-model.php
index 0c788c9..2546a7e 100644
--- a/models/namaste-model.php
+++ b/models/namaste-model.php
@@ -279,10 +279,11 @@ static function install($update = false) {
// main menu
static function menu() {
-
+ global $wpdb;
+
$namaste_cap = current_user_can('namaste_manage') ? 'namaste_manage' : 'namaste';
$use_grading_system = get_option('namaste_use_grading_system');
- $homework_menu = $students_menu = $certificates_menu = $gradebook_menu = $settings_menu = $massenroll_menu = $help_menu = $plugins_menu = true;
+ $homework_menu = $students_menu = $certificates_menu = $gradebook_menu = $settings_menu = $massenroll_menu = $help_menu = $plugins_menu = $reviews_menu = true;
if(!current_user_can('administrator') and current_user_can('namaste_manage')) {
// perform these checks only for managers that are not admins, otherwise it's pointless use of resourses
global $user_ID, $wp_roles;
@@ -305,6 +306,7 @@ static function menu() {
$settings_menu = NamasteLMSMultiUser :: item_access('settings_access', $role_settings, $user, $enabled_roles);
$help_menu = NamasteLMSMultiUser :: item_access('help_access', $role_settings, $user, $enabled_roles);
$plugins_menu = NamasteLMSMultiUser :: item_access('plugins_access', $role_settings, $user, $enabled_roles);
+ $reviews_menu = NamasteLMSMultiUser :: item_access('reviews_access', $role_settings, $user, $enabled_roles);
}
// if a manager has no access to the settings page, let's turn the to-do into the main menu
@@ -323,9 +325,18 @@ static function menu() {
add_submenu_page('namaste_options', __("Certificates", 'namaste'), __("Certificates", 'namaste'), 'namaste_manage', 'namaste_certificates', array('NamasteLMSCertificatesController', "manage"));
add_submenu_page(NULL, __("Students Earned Certificate", 'namaste'), __("Students Earned Certificate", 'namaste'), 'namaste_manage', 'namaste_student_certificates', array('NamasteLMSCertificatesController', "student_certificates"));
}
+
+ if($reviews_menu) {
+ // display only if there's at least one review in the system
+ $has_reviews = $wpdb->get_var("SELECT id FROM ".NAMASTE_COURSE_REVIEWS." WHERE id>0 LIMIT 1");
+ if($has_reviews) add_submenu_page('namaste_options', __("Student Reviews", 'namaste'), __("Student Reviews", 'namaste'), 'namaste_manage', 'namaste_reviews', ['NamasteLMSReviews', 'manage']);
+ }
+
+
if($gradebook_menu and !empty($use_grading_system)) add_submenu_page('namaste_options', __("Gradebook", 'namaste'), __("Gradebook", 'namaste'), 'namaste_manage', 'namaste_gradebook', array('NamasteLMSGradebookController', "manage"));
- if($settings_menu) add_submenu_page('namaste_options', __("Namaste! Settings", 'namaste'), __("Settings", 'namaste'), 'namaste_manage', 'namaste_options', array(__CLASS__, "options"));
-
+ if($settings_menu) add_submenu_page('namaste_options', __("Namaste! Settings", 'namaste'), __("Settings", 'namaste'), 'namaste_manage', 'namaste_options', array(__CLASS__, "options"));
+
+
if(class_exists('WP_Experience_API')) {
add_submenu_page('namaste_options', __("xAPI / Tin Can", 'namaste'), __("xAPI / Tin Can", 'namaste'), 'manage_options', 'namaste_xapi', array('NamasteXAPI', "options"));
}
diff --git a/views/multiuser.html.php b/views/multiuser.html.php
index 3c11f31..4ec5faa 100644
--- a/views/multiuser.html.php
+++ b/views/multiuser.html.php
@@ -48,6 +48,11 @@
+
+