From 09ebce3098fa67b87c5b067036a5cd6bd934c343 Mon Sep 17 00:00:00 2001 From: pero1203 Date: Tue, 20 Oct 2020 10:02:50 +0200 Subject: [PATCH] Dodana nastavitev za preprecevanje naknadnega izpolnjevanja ankete (npr. ce klikne uporabnik "nazaj") --- admin/survey/SurveyAdminAjax.php | 5 ++++- admin/survey/SurveyAdminSettings.php | 6 ++++++ lang/1.php | 3 +++ lang/2.php | 3 +++ main/survey/app/Controllers/BodyController.php | 13 ++++++++++++- main/survey/app/Controllers/CheckController.php | 14 ++++++++++++++ main/survey/app/Controllers/JsController.php | 16 ++++++++++++++++ main/survey/app/Models/SaveSurvey.php | 11 +++++++++++ sql/update2.sql | 4 ++++ 9 files changed, 73 insertions(+), 2 deletions(-) diff --git a/admin/survey/SurveyAdminAjax.php b/admin/survey/SurveyAdminAjax.php index 634f945c2..4891ce366 100644 --- a/admin/survey/SurveyAdminAjax.php +++ b/admin/survey/SurveyAdminAjax.php @@ -318,7 +318,9 @@ class SurveyAdminAjax { if (isset ($_POST['state'])) $state = $_POST['state']; if (isset ($_POST['return_finished'])) - $return_finished = $_POST['return_finished']; + $return_finished = $_POST['return_finished']; + if (isset ($_POST['subsequent_answers'])) + $subsequent_answers = $_POST['subsequent_answers']; if (isset ($_POST['cookie_continue'])) $cookie_continue = $_POST['cookie_continue']; if (isset ($_POST['block_ip'])) @@ -1084,6 +1086,7 @@ class SurveyAdminAjax { 'cookie', 'cookie_return', 'return_finished', + 'subsequent_answers', 'cookie_continue', 'user_from_cms', 'user_base', diff --git a/admin/survey/SurveyAdminSettings.php b/admin/survey/SurveyAdminSettings.php index a7bf114c5..e945ebce1 100644 --- a/admin/survey/SurveyAdminSettings.php +++ b/admin/survey/SurveyAdminSettings.php @@ -494,6 +494,12 @@ class SurveyAdminSettings { echo '' . "\n\r"; + echo '
'; + + // Nikoli ne more popravljati svojih odgovorov (tudi ce se npr. vrne na prejsnjo stran) + echo '
'; + echo ' ' . "\n\r"; + echo '
' . "\n\r"; echo '
'; // Ce ni sprejel piskotka lahko/ne more nadaljevati diff --git a/lang/1.php b/lang/1.php index 3af2c5beb..10059c9b9 100644 --- a/lang/1.php +++ b/lang/1.php @@ -2358,6 +2358,9 @@ $lang = array ( "srv_return_finished" => "Uporabnik, ki je zaključil anketo", "srv_return_finished_yes" => "Lahko kasneje ureja svoje odgovore", "srv_return_finished_no" => "Ne more več urejati svojih odgovorov", + "srv_subsequent_answers" => "Uporabnik med izpolnjevanjem", + "srv_subsequent_answers_no" => "Ne more naknadno urejati svojih odgovorov", + "srv_subsequent_answers_yes" => "Lahko naknadno ureja svoje odgovore", "srv_cookie_continue" => "Uporabnik, ki ne sprejme piškotka", "srv_cookie_continue_yes" => "Lahko vseeno nadaljuje z izpolnjevanjem", "srv_cookie_continue_no" => "Ne more odgovarjati na anketo", diff --git a/lang/2.php b/lang/2.php index 3ae9a315f..f961822c2 100644 --- a/lang/2.php +++ b/lang/2.php @@ -2339,6 +2339,9 @@ $lang = array ( "srv_return_finished" => "User, that finished his survey", "srv_return_finished_yes" => "Can later edit their answers", "srv_return_finished_no" => "Cannot edit their answers", + "srv_subsequent_answers" => "User during answering", + "srv_subsequent_answers_no" => "Cannot subseqently edit their answers", + "srv_subsequent_answers_yes" => "Can subseqently edit their answers", "srv_cookie_continue" => "User does not accept cookies", "srv_cookie_continue_yes" => "Can still answer survey questions", "srv_cookie_continue_no" => "Cannot respond to survey", diff --git a/main/survey/app/Controllers/BodyController.php b/main/survey/app/Controllers/BodyController.php index 03527df56..f87dac488 100644 --- a/main/survey/app/Controllers/BodyController.php +++ b/main/survey/app/Controllers/BodyController.php @@ -7,6 +7,7 @@ namespace App\Controllers; +use App\Controllers\CheckController as Check; use App\Controllers\DisplayController as Display; use App\Controllers\FindController as Find; use App\Controllers\HeaderController as Header; @@ -1758,7 +1759,9 @@ class BodyController extends Controller * @desc prikaze trenutno grupo */ public function displayGrupa(){ - + global $admin_type; + + // Ce imamo vklopljene napredne parapodatke zabelezimo id-strani if(SurveyAdvancedParadataLog::getInstance()->paradataEnabled()){ SurveyAdvancedParadataLog::getInstance()->displayGrupa(get('grupa')); @@ -1872,6 +1875,14 @@ class BodyController extends Controller echo '' . "\n"; Js::getInstance()->generateBranchingJS(); + + // Disable odgovorov, ce je ze izpolnjeval to stran in ima vklopljeno nastavitev, da ni dovoljeno naknadno vnasanje odogovorov + if($rowa['subsequent_answers'] == '0' && $admin_type != '0'){ + + // Preverimo, ce je uporabnik ze bil na strani + if(Check::getInstance()->check_subsequent_visit()) + Js::getInstance()->disableSubsequentAnswers(); + } // nov zgornji link pri uporabnosti $link = SurveySetting::getInstance()->getSurveyMiscSetting('uporabnost_link_' . get('grupa')); diff --git a/main/survey/app/Controllers/CheckController.php b/main/survey/app/Controllers/CheckController.php index f6b84ff94..b16e31d12 100644 --- a/main/survey/app/Controllers/CheckController.php +++ b/main/survey/app/Controllers/CheckController.php @@ -730,4 +730,18 @@ class CheckController extends Controller } return $missing; } + + // Preverimo, ce je uporabnik ze bil na strani + public function check_subsequent_visit(){ + + $sql = sisplet_query("SELECT g.id + FROM srv_user_grupa".get('db_table')." u, srv_grupa g + WHERE u.gru_id=g.id AND u.usr_id='".get('usr_id')."' AND g.id='".get('grupa')."' + "); + + if(mysqli_num_rows($sql) > 0) + return true; + else + return false; + } } \ No newline at end of file diff --git a/main/survey/app/Controllers/JsController.php b/main/survey/app/Controllers/JsController.php index 7b68473be..581c34565 100644 --- a/main/survey/app/Controllers/JsController.php +++ b/main/survey/app/Controllers/JsController.php @@ -2803,4 +2803,20 @@ class JsController extends Controller return '(' . $expression . ')'; } + + + // Disable odgovorov, ce je ze izpolnjeval to stran in ima vklopljeno nastavitev, da ni dovoljeno naknadno vnasanje odogovorov + public static function disableSubsequentAnswers(){ + + echo ''; + } + } \ No newline at end of file diff --git a/main/survey/app/Models/SaveSurvey.php b/main/survey/app/Models/SaveSurvey.php index c475653be..9d5ba9472 100644 --- a/main/survey/app/Models/SaveSurvey.php +++ b/main/survey/app/Models/SaveSurvey.php @@ -67,6 +67,7 @@ class SaveSurvey extends Model global $lang; global $admin_type; + // Modul panel - status - shranimo v cookie, ker drugace se vcasih ne ohrani do konca ce so strani preskocene if(isset($_POST['panel_status']) && $_POST['panel_status'] != ''){ setcookie('panel_status', $_POST['panel_status'], 0, '/'); @@ -111,6 +112,16 @@ class SaveSurvey extends Model SurveySetting::getInstance()->Init(get('anketa')); $question_resp_comment = SurveySetting::getInstance()->getSurveyMiscSetting('question_resp_comment'); + + // Disable odgovorov, ce je ze izpolnjeval to stran in ima vklopljeno nastavitev, da ni dovoljeno naknadno vnasanje odogovorov + if($rowa['subsequent_answers'] == '0' && $admin_type != '0'){ + + // Preverimo, ce je uporabnik ze bil na strani + if(Check::getInstance()->check_subsequent_visit()) + return; + } + + /** * Tele spremenljivke so za vse INSERTe, ki se vnasajo v tabele (z imenom spremenljivke) * Namen je ta, da se vnosi kesirajo in naenkrat vnesejo v bazo, kar pohitri celotno zadevo diff --git a/sql/update2.sql b/sql/update2.sql index e95ba5aac..d3dcf97af 100644 --- a/sql/update2.sql +++ b/sql/update2.sql @@ -9327,3 +9327,7 @@ CREATE TABLE srv_clicks ( UPDATE misc SET value='20.09.21' WHERE what="version"; +ALTER TABLE srv_anketa ADD subsequent_answers ENUM('0', '1') NOT NULL DEFAULT '1' AFTER return_finished; +INSERT INTO srv_help (help, what) VALUES ('Uporabnik ne more nikoli naknadno urejati svojih odgovorov (npr. s klikom nazaj)', 'srv_subsequent_answers'); + +UPDATE misc SET value='20.10.20' WHERE what="version";