diff --git a/plugin/tour/ajax/save.ajax.php b/plugin/tour/ajax/save.ajax.php new file mode 100644 index 0000000000..33dec1bf6a --- /dev/null +++ b/plugin/tour/ajax/save.ajax.php @@ -0,0 +1,22 @@ + + * @package chamilo.plugin.tour + */ +require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/main/inc/global.inc.php'; +require_once dirname((__DIR__)) . '/config.php'; + +if (!api_is_anonymous()) { + $currentPageClass = isset($_POST['page_class']) ? $_POST['page_class'] : ''; + + if (!empty($currentPageClass)) { + $userId = api_get_user_id(); + + $tourPlugin = Tour::create(); + $tourPlugin->saveCompletedTour($currentPageClass, $userId); + } +} \ No newline at end of file diff --git a/plugin/tour/config.php b/plugin/tour/config.php index f4b78195eb..8935755ab7 100644 --- a/plugin/tour/config.php +++ b/plugin/tour/config.php @@ -9,6 +9,8 @@ */ //require_once '../../main/inc/global.inc.php'; +define('TABLE_TOUR_LOG', 'plugin_tour_log'); + require_once api_get_path(SYS_PATH) . 'main/inc/global.inc.php'; require_once api_get_path(LIBRARY_PATH) . 'plugin.class.php'; require_once api_get_path(PLUGIN_PATH) . 'tour/src/tour_plugin.class.php'; diff --git a/plugin/tour/index.php b/plugin/tour/index.php index 03999b2276..1a316983c1 100644 --- a/plugin/tour/index.php +++ b/plugin/tour/index.php @@ -12,6 +12,8 @@ require_once dirname(__FILE__) . '/config.php'; $pluginPath = api_get_path(PLUGIN_PATH) . 'tour/'; $pluginWebPath = api_get_path(WEB_PLUGIN_PATH) . 'tour/'; +$userId = api_get_user_id(); + $tourPlugin = Tour::create(); $jsonContent = file_get_contents($pluginPath . 'config/tour.json'); @@ -21,16 +23,20 @@ $json = json_decode($jsonContent, true); $pages = array(); foreach ($json as $pageContent) { - $pages[] = $pageContent['pageClass']; + $pages[] = array( + 'pageClass' => $pageContent['pageClass'], + 'show' => $tourPlugin->checkTourForUser($pageContent['pageClass'], $userId) + ); } -$_template['pagesClassName'] = json_encode($pages); +$_template['pages'] = json_encode($pages); $_template['web_path'] = array( 'intro_css' => "{$pluginWebPath}intro.js/introjs.min.css", 'intro_theme_css' => "{$pluginWebPath}intro.js/introjs-nassim.css", 'intro_js' => "{$pluginWebPath}intro.js/intro.min.js", - 'steps_ajax' => "{$pluginWebPath}ajax/steps.ajax.php" + 'steps_ajax' => "{$pluginWebPath}ajax/steps.ajax.php", + 'save_ajax' => "{$pluginWebPath}ajax/save.ajax.php" ); $_template['text'] = array( diff --git a/plugin/tour/src/tour_plugin.class.php b/plugin/tour/src/tour_plugin.class.php index 94680ec8af..0cc4488ce6 100644 --- a/plugin/tour/src/tour_plugin.class.php +++ b/plugin/tour/src/tour_plugin.class.php @@ -37,12 +37,65 @@ class Tour extends Plugin public function install() { - + $this->installDatabase(); } public function uninstall() { - + $this->unistallDatabase(); + } + + private function installDatabase() + { + $pluginTourLogTable = Database::get_main_table(TABLE_TOUR_LOG); + + $sql = "CREATE TABLE IF NOT EXISTS $pluginTourLogTable (" + . "id int UNSIGNED NOT NULL AUTO_INCREMENT, " + . "page_class varchar(255) NOT NULL, " + . "user_id int UNSIGNED NOT NULL, " + . "visualization_datetime datetime NOT NULL, " + . "PRIMARY KEY PK_tour_log (id))"; + + Database::query($sql); + } + + private function unistallDatabase() + { + $pluginTourLogTable = Database::get_main_table(TABLE_TOUR_LOG); + + $sql = "DROP TABLE IF EXISTS $pluginTourLogTable"; + + Database::query($sql); + } + + public function checkTourForUser($currentPageClass, $userId) + { + $pluginTourLogTable = Database::get_main_table(TABLE_TOUR_LOG); + + $checkResult = Database::select('count(1) as qty', $pluginTourLogTable, array( + 'where' => array( + "page_class = '?' AND " => $currentPageClass, + "user_id = ?" => $userId + )), 'first'); + + if ($checkResult != false) { + if ($checkResult['qty'] > 0) { + return false; + } + } + + return true; + } + + public function saveCompletedTour($currentPageClass, $userId) + { + $pluginTourLogTable = Database::get_main_table(TABLE_TOUR_LOG); + + Database::insert($pluginTourLogTable, array( + 'page_class' => $currentPageClass, + 'user_id' => $userId, + 'visualization_datetime' => api_get_utc_datetime() + )); } } diff --git a/plugin/tour/views/script.tpl b/plugin/tour/views/script.tpl index 7ac2bac429..5c38f06484 100644 --- a/plugin/tour/views/script.tpl +++ b/plugin/tour/views/script.tpl @@ -1,19 +1,30 @@