diff --git a/main/admin/configure_plugin.php b/main/admin/configure_plugin.php index e55624b281..6e6b8d195c 100755 --- a/main/admin/configure_plugin.php +++ b/main/admin/configure_plugin.php @@ -69,6 +69,10 @@ if (isset($form)) { 1 ); } + if (isset($values['show_main_menu_tab'])) { + $objPlugin = $plugin_info['plugin_class']::create(); + $objPlugin->manageTab($values['show_main_menu_tab']); + } $message = Display::return_message(get_lang('Updated'), 'success'); } } diff --git a/main/inc/lib/plugin.class.php b/main/inc/lib/plugin.class.php index e7a42d0aca..d25c19acc9 100755 --- a/main/inc/lib/plugin.class.php +++ b/main/inc/lib/plugin.class.php @@ -189,6 +189,12 @@ class Plugin $help = null; if ($this->get_lang_plugin_exists($name.'_help')) { $help = $this->get_lang($name.'_help'); + if ($name === "show_main_menu_tab") { + $pluginName = strtolower(str_replace('Plugin', '', get_class($this))); + $pluginUrl = api_get_path(WEB_PATH)."plugin/$pluginName/index.php"; + $pluginUrl = "$pluginUrl"; + $help = sprintf($help, $pluginUrl); + } } switch ($type) { @@ -635,4 +641,37 @@ class Plugin return $resp; } + + /** + * This method shows or hides plugin's tab + * @param boolean Shows or hides the main menu plugin tab + * @param string Plugin starter file path + */ + public function manageTab($showTab, $filePath = 'index.php') + { + $langString = str_replace('Plugin', '', get_class($this)); + $pluginName = strtolower($langString); + $pluginUrl = 'plugin/'.$pluginName.'/'.$filePath; + if ($showTab === 'true') { + $tabAdded = $this->addTab($this->get_lang($langString), $pluginUrl); + if ($tabAdded) { + // The page must be refreshed to show the recently created tab + echo ""; + } + } else { + $settingsCurrentTable = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT); + $conditions = array( + 'where' => array( + "variable = 'show_tabs' AND title = ? AND comment = ? " => array( + $this->get_lang($langString), + $pluginUrl + ) + ) + ); + $result = Database::select('subkey', $settingsCurrentTable, $conditions); + if (!empty($result)) { + $this->deleteTab($result[0]['subkey']); + } + } + } } diff --git a/plugin/buycourses/database.php b/plugin/buycourses/database.php index 10b3221b3e..f1cc054280 100644 --- a/plugin/buycourses/database.php +++ b/plugin/buycourses/database.php @@ -14,7 +14,6 @@ if (!function_exists('api_get_path')) { /** * Create the script context, then execute database queries to enable */ -$objPlugin = BuyCoursesPlugin::create(); $table = Database::get_main_table(TABLE_BUY_SESSION); $sql = "CREATE TABLE IF NOT EXISTS $table ( @@ -407,10 +406,3 @@ $sql = "CREATE TABLE IF NOT EXISTS $table ( status VARCHAR(20) NOT NULL DEFAULT '', date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"; Database::query($sql); - -//Menu main tabs -$rsTab = $objPlugin->addTab($objPlugin->get_lang('BuyCourses'), 'plugin/buycourses/index.php'); - -if ($rsTab) { - echo ""; -} diff --git a/plugin/buycourses/lang/english.php b/plugin/buycourses/lang/english.php index 7d0a0cbe93..ae2408d163 100644 --- a/plugin/buycourses/lang/english.php +++ b/plugin/buycourses/lang/english.php @@ -1,6 +1,8 @@ 0) { $sql = "SELECT 1 FROM $tableSessionRelUser - WHERE id_session='".$rowSession['session_id']."' AND - id_user ='" . $_SESSION['_user']['user_id'] . "';"; + WHERE id_session ='".$rowSession['session_id']."' AND + id_user = $currentUserId"; Database::query($sql); if (Database::affected_rows() > 0) { $rowSession['enrolled'] = "YES"; } else { $sql = "SELECT 1 FROM $tableBuySessionTemporal WHERE session_id ='".$rowSession['session_id']."' AND - user_id='" . $_SESSION['_user']['user_id'] . "';"; + user_id='" . $currentUserId . "';"; Database::query($sql); if (Database::affected_rows() > 0) { $rowSession['enrolled'] = "TMP"; @@ -213,7 +215,7 @@ function userSessionList() } else { $sql = "SELECT 1 FROM $tableBuySessionTemporal WHERE session_id ='".$rowSession['session_id']."' AND - user_id='" . $_SESSION['_user']['user_id'] . "';"; + user_id='" . $currentUserId . "';"; Database::query($sql); if (Database::affected_rows() > 0) { $rowSession['enrolled'] = "TMP"; @@ -230,7 +232,8 @@ function userSessionList() } /** - * + * Lists current user course details + * @return array Course details list */ function userCourseList() { @@ -238,6 +241,7 @@ function userCourseList() $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); $tableCourseRelUser = Database::get_main_table(TABLE_MAIN_COURSE_USER); $tableBuyCourseTemporal = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); + $currentUserId = api_get_user_id(); $sql = "SELECT a.course_id, a.visible, a.price, b.* FROM $tableBuyCourse a, $tableCourse b @@ -255,17 +259,17 @@ function userCourseList() $rowTmp = Database::fetch_assoc($tmp); $row['teacher'] = $rowTmp['firstname'] . ' ' . $rowTmp['lastname']; //check if the user is enrolled - if (isset($_SESSION['_user']) || $_SESSION['_user']['user_id'] != '') { + if ($currentUserId > 0) { $sql = "SELECT 1 FROM $tableCourseRelUser WHERE course_code='" . $row['code'] . "' - AND user_id='" . $_SESSION['_user']['user_id'] . "';"; + AND user_id='" . $currentUserId . "';"; Database::query($sql); if (Database::affected_rows() > 0) { $row['enrolled'] = "YES"; } else { $sql = "SELECT 1 FROM $tableBuyCourseTemporal WHERE course_code='" . $row['code'] . "' - AND user_id='" . $_SESSION['_user']['user_id'] . "';"; + AND user_id='" . $currentUserId . "';"; Database::query($sql); if (Database::affected_rows() > 0) { $row['enrolled'] = "TMP"; @@ -276,7 +280,7 @@ function userCourseList() } else { $sql = "SELECT 1 FROM $tableBuyCourseTemporal WHERE course_code='" . $row['code'] . "' - AND user_id='" . $_SESSION['_user']['user_id'] . "';"; + AND user_id='" . $currentUserId . "';"; Database::query($sql); if (Database::affected_rows() > 0) { $row['enrolled'] = "TMP"; @@ -297,11 +301,15 @@ function userCourseList() } /** - * + * Checks if a session or a course is already bought + * @param string Session id or course code + * @param int User id + * @param string What has to be checked + * @return boolean True if it is already bought, and false otherwise */ function checkUserBuy($parameter, $user, $type = 'COURSE') { - $sql = "SELECT 1 FROM %s WHERE %s ='" . $parameter . "' AND id_user='" . $user . "';"; + $sql = "SELECT 1 FROM %s WHERE %s ='" . Database::escape_string($parameter) . "' AND id_user='" . intval($user) . "';"; $sql = $type === 'SESSION' ? sprintf($sql, Database::get_main_table(TABLE_MAIN_SESSION_USER), 'id_session') : sprintf($sql, Database::get_main_table(TABLE_MAIN_COURSE_USER), 'course_code'); @@ -314,11 +322,15 @@ function checkUserBuy($parameter, $user, $type = 'COURSE') } /** - * + * Checks if a session or a course has already a transfer + * @param string Session id or course code + * @param int User id + * @param string What has to be checked + * @return boolean True if it has already a transfer, and false otherwise */ function checkUserBuyTransfer($parameter, $user, $type = 'COURSE') { - $sql = "SELECT 1 FROM %s WHERE %s ='" . $parameter . "' AND id_user='" . $user . "';"; + $sql = "SELECT 1 FROM %s WHERE %s ='" . Database::escape_string($parameter) . "' AND user_id='" . intval($user) . "';"; $sql = $type === 'SESSION' ? sprintf($sql, Database::get_main_table(TABLE_BUY_SESSION_TEMPORARY), 'session_id') : sprintf($sql, Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL), 'course_code'); @@ -331,7 +343,8 @@ function checkUserBuyTransfer($parameter, $user, $type = 'COURSE') } /** - * + * Returns an array with all the categories + * @return array All the categories */ function listCategories() { @@ -462,6 +475,7 @@ function sessionInfo($code) $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); $tableSessionRelUser = Database::get_main_table(TABLE_MAIN_SESSION_USER); $tableBuySessionTemporal = Database::get_main_table(TABLE_BUY_SESSION_TEMPORARY); + $currentUserId = api_get_user_id(); $code = Database::escape_string($code); $sql = "SELECT a.session_id, a.visible, a.price, b.* @@ -505,15 +519,15 @@ function sessionInfo($code) } } //check if the user is enrolled in the current session - if (isset($_SESSION['_user']) || $_SESSION['_user']['user_id'] != '') { + if ($currentUserId > 0) { $sql = "SELECT 1 FROM $tableSessionRelUser - WHERE user_id='".$_SESSION['_user']['user_id']."';"; + WHERE id_user = $currentUserId"; Database::query($sql); if (Database::affected_rows() > 0) { $rowSession['enrolled'] = "YES"; } else { $sql = "SELECT 1 FROM $tableBuySessionTemporal - WHERE user_id='".$_SESSION['_user']['user_id']."';"; + WHERE user_id='".$currentUserId."';"; Database::query($sql); if (Database::affected_rows() > 0) { $rowSession['enrolled'] = "TMP"; @@ -523,7 +537,7 @@ function sessionInfo($code) } } else { $sql = "SELECT 1 FROM $tableBuySessionTemporal - WHERE user_id='".$_SESSION['_user']['user_id']."';"; + WHERE user_id='".$currentUserId."';"; Database::query($sql); if (Database::affected_rows() > 0) { $rowSession['enrolled'] = "TMP"; @@ -546,6 +560,7 @@ function courseInfo($code) $tableBuyCourse = Database::get_main_table(TABLE_BUY_COURSE); $tableCourseRelUser = Database::get_main_table(TABLE_MAIN_COURSE_USER); $tableUser = Database::get_main_table(TABLE_MAIN_USER); + $currentUserId = api_get_user_id(); $code = Database::escape_string($code); $sql = "SELECT a.course_id, a.visible, a.price, b.* FROM $tableBuyCourse a, course b @@ -564,10 +579,10 @@ function courseInfo($code) $rowTmp = Database::fetch_assoc($tmp); $row['teacher'] = $rowTmp['firstname'] . ' ' . $rowTmp['lastname']; //Check if student is enrolled - if (isset($_SESSION['_user']) || $_SESSION['_user']['user_id'] != '') { + if ($currentUserId > 0) { $sql = "SELECT 1 FROM $tableCourseRelUser WHERE course_code='" . $row['code'] . "' - AND user_id='" . $_SESSION['_user']['user_id'] . "';"; + AND user_id='" . $currentUserId . "';"; Database::query($sql); if (Database::affected_rows() > 0) { $row['enrolled'] = "YES"; diff --git a/plugin/buycourses/src/buy_course_plugin.class.php b/plugin/buycourses/src/buy_course_plugin.class.php index a3e61f9b43..c2f291c7c1 100644 --- a/plugin/buycourses/src/buy_course_plugin.class.php +++ b/plugin/buycourses/src/buy_course_plugin.class.php @@ -31,6 +31,7 @@ class BuyCoursesPlugin extends Plugin Alex Aragón - BeezNest (Design icons and css styles), Imanol Losada - BeezNest (introduction of sessions purchase)', array( + 'show_main_menu_tab' => 'boolean', 'include_sessions' => 'boolean', 'paypal_enable' => 'boolean', 'transfer_enable' => 'boolean', @@ -69,8 +70,6 @@ class BuyCoursesPlugin extends Plugin $sql = "DROP TABLE IF EXISTS $tableToBeDeleted"; Database::query($sql); } - - $objPlugin = BuyCoursesPlugin::create(); - $objPlugin->deleteTab('custom_tab_1'); + $this->manageTab(false); } } diff --git a/plugin/buycourses/src/index.buycourses.php b/plugin/buycourses/src/index.buycourses.php index 3fd88c431c..780b757ef9 100644 --- a/plugin/buycourses/src/index.buycourses.php +++ b/plugin/buycourses/src/index.buycourses.php @@ -11,11 +11,12 @@ $plugin = BuyCoursesPlugin::create(); $guess_enable = $plugin->get('unregistered_users_enable'); if ($guess_enable == "true" || isset($_SESSION['_user'])) { + $isAdmin = api_is_platform_admin(); $title = $plugin->get_lang('CourseListOnSale'); $templateName = $plugin->get_lang('BuyCourses'); $tpl = new Template($templateName); - $tpl->assign('isAdmin', api_is_platform_admin()); + $tpl->assign('isAdmin', $isAdmin); $tpl->assign('title', $title); $tpl->assign('BuySessions', $plugin->get_lang('BuySessions')); $tpl->assign('BuyCourses', $templateName); @@ -25,7 +26,7 @@ if ($guess_enable == "true" || isset($_SESSION['_user'])) { $tpl->assign('OrdersPendingOfPayment', $plugin->get_lang('OrdersPendingOfPayment')); $listing_tpl = 'buycourses/view/index.tpl'; $content = $tpl->fetch($listing_tpl); - $tpl->assign('content', $content); - $tpl->display_one_col_template(); + $tpl->assign('content', $content); + // If the user is NOT an administrator, redirect it to course/session buy list + $isAdmin ? $tpl->display_one_col_template() : header('Location: src/list.php'); } - diff --git a/plugin/buycourses/view/index.tpl b/plugin/buycourses/view/index.tpl index 0169191372..33b894fa1f 100644 --- a/plugin/buycourses/view/index.tpl +++ b/plugin/buycourses/view/index.tpl @@ -19,11 +19,11 @@ {% endif %}
- +
- +
@@ -60,4 +60,4 @@ {% endif %}
-
\ No newline at end of file + diff --git a/plugin/buycourses/view/process.tpl b/plugin/buycourses/view/process.tpl index fea838a738..b2624a50b4 100644 --- a/plugin/buycourses/view/process.tpl +++ b/plugin/buycourses/view/process.tpl @@ -23,7 +23,7 @@
-

{{ title }}

+

{{ title }}

{{ 'From'|get_lang }} {{ session.date_start }} {{ 'To'|get_lang }} {{ session.date_end }}
@@ -65,7 +65,7 @@
{% endfor %} - {% else %} + {% else %}