From dd0f48f2fd852ecf9ebc7d969c4116196904dab0 Mon Sep 17 00:00:00 2001 From: pero1203 Date: Mon, 8 Aug 2022 10:36:10 +0200 Subject: [PATCH] Brsanje vprasanj - sql in ustrezno kopiranje vprasanja pri brisanju --- admin/survey/Branching.php | 22 +++++-- admin/survey/SurveyAdmin.php | 4 ++ .../survey/classes/class.VprasanjeDeleted.php | 63 ++++++++++++++++--- lang/1.php | 3 + lang/2.php | 3 + sql/update2.sql | 3 +- 6 files changed, 84 insertions(+), 14 deletions(-) diff --git a/admin/survey/Branching.php b/admin/survey/Branching.php index 16095d52f..232370f24 100644 --- a/admin/survey/Branching.php +++ b/admin/survey/Branching.php @@ -329,7 +329,7 @@ class Branching { } // Knjiznica - echo '
'.$lang['srv_library'].'
'; + echo '
'.$lang['srv_library'].'
'; echo '
'; // normalna anketa @@ -342,8 +342,15 @@ class Branching { echo '
'; echo '
'.$lang['srv_block_random_blocks'].'
'; - //echo '
'; - } + } + + // Pobrisana vprasanja + $vd = new VprasanjeDeleted($this->anketa); + $deleted_vrasanja_count = $vd->countDeletedVprasanja(); + if($deleted_vrasanja_count > 0){ + echo '
'; + echo '
'.$lang['srv_deleted_vprasanja'].' ('.$deleted_vrasanja_count.')
'; + } } else { @@ -391,8 +398,15 @@ class Branching { echo '
'; echo '
'.$lang['srv_block_random_blocks'].'
'; - //echo '
'; } + + // Pobrisana vprasanja + $vd = new VprasanjeDeleted($this->anketa); + $deleted_vrasanja_count = $vd->countDeletedVprasanja(); + if($deleted_vrasanja_count > 0){ + echo '
'; + echo '
'.$lang['srv_deleted_vprasanja'].' ('.$deleted_vrasanja_count.')
'; + } } echo ''; diff --git a/admin/survey/SurveyAdmin.php b/admin/survey/SurveyAdmin.php index 0893767ee..8a62385f8 100644 --- a/admin/survey/SurveyAdmin.php +++ b/admin/survey/SurveyAdmin.php @@ -4830,6 +4830,10 @@ class SurveyAdmin $rowg = Cache::srv_spremenljivka($spremenljivka); + // Preden vprasanje zbrisemo po novem ustvarimo kopijo vprasanja med zbrisanimi (knjiznica zbrisanih vprasanj) + $vd = new VprasanjeDeleted($this->anketa); + $vd->createDeletedVprasanje($spremenljivka); + // pri brisanju multiple grid vprasanja, moramo pobrisate tudi vse child spremenljivke (ker kljuci niso nastavljeni) if ($rowg['tip'] == 24) { $sqld = sisplet_query("SELECT spr_id FROM srv_grid_multiple WHERE parent='$spremenljivka'"); diff --git a/admin/survey/classes/class.VprasanjeDeleted.php b/admin/survey/classes/class.VprasanjeDeleted.php index a73e7c2ef..fddd7f381 100644 --- a/admin/survey/classes/class.VprasanjeDeleted.php +++ b/admin/survey/classes/class.VprasanjeDeleted.php @@ -8,28 +8,73 @@ class VprasanjeDeleted { - var $anketa; // trenutna anketa - var $spremenljivka; // spremenljivka + var $ank_id; // trenutna anketa public function __construct ($anketa = 0) { if (isset ($_GET['anketa'])) - $this->anketa = $_GET['anketa']; + $this->ank_id = $_GET['anketa']; elseif (isset ($_POST['anketa'])) - $this->anketa = $_POST['anketa']; + $this->ank_id = $_POST['anketa']; elseif ($anketa != 0) - $this->anketa = $anketa; - - SurveyInfo::getInstance()->SurveyInit($this->anketa); + $this->ank_id = $anketa; } - // Prikazemo seznam pobrisanih vprasanj uporabnika - public function displayDeletedVprasanja(){ + private function displayDeletedVprasanja(){ + global $lang; + global $global_user_id; + global $admin_type; + + // Loop po vseh pobrisanih vprasanjih v anketi + $sql = sisplet_query("SELECT sd.*, s.naslov + FROM srv_spremenljivka_deleted sd, srv_spremenljivka s + WHERE sd.ank_id='".$this->ank_id."' AND sd.spr_id=s.id + ORDER BY sd.delete_time DESC + "); + if(mysqli_num_rows($sql) == 0){ + return; + } + + while($row = mysqli_fetch_array($sql)){ + + echo '
'; + + echo ' '; + + echo '
'; + + echo ' '; + echo ' '.substr(strip_tags($row['naslov']), 0, 40).''; + + echo '
'; + + echo '
'; + } + } + + + // Pri brisanju najprej skopiramo vprasanje ki ga brisemo + public function createDeletedVprasanje($spr_id){ global $global_user_id; + // Skopiramo spremenljivko + $b = new Branching($this->ank_id); + $new_spr_id = $b->nova_spremenljivka(-3, 0, 0, $spr_id); + + // Zabelezimo v bazi povezavo z anketo in cas brisanja + $sql1 = sisplet_query("INSERT INTO srv_spremenljivka_deleted (spr_id, ank_id, delete_time) VALUES ('".$new_spr_id."', '".$this->ank_id."', NOW())"); + } + + // Vrnemo stevilo pobrisanih vprasanj v anketi + public function countDeletedVprasanja(){ + + $sql = sisplet_query("SELECT COUNT(id) AS cnt FROM srv_spremenljivka_deleted WHERE ank_id='".$this->ank_id."'"); + $row = mysqli_fetch_array($sql); + + return $row['cnt']; } } diff --git a/lang/1.php b/lang/1.php index d90c7fba6..4ef88223f 100644 --- a/lang/1.php +++ b/lang/1.php @@ -2431,6 +2431,9 @@ $lang = array ( "srv_library_add_to_lib_success_block" => "Blok je bil uspešno dodan v knjižnico.", "srv_library_add_to_lib_success_loop" => "Zanka je bila uspešno dodana v knjižnico.", "srv_library_add_to_lib_success_err" => "Prišlo je do napake pri dodajanju v knjižnico!", + + "srv_deleted_vprasanja" => "Pobrisana vprašanja", + "srv_nadzor" => "Nadzor", "srv_knjiznica_add" => "Če želite dodati spremenljivko v knjižnico, jo povlecite v to polje", "srv_knjiznica_copy" => "Če želite kopirati vprašanje, ga označite z ikono COPY", diff --git a/lang/2.php b/lang/2.php index 0231af67b..b328d7172 100644 --- a/lang/2.php +++ b/lang/2.php @@ -2412,6 +2412,9 @@ $lang = array ( "srv_library_add_to_lib_name_loop" => "Loop name", "srv_library_add_to_lib_folder" => "Add to folder", "srv_library_add_to_lib" => "Add to library", + + "srv_deleted_vprasanja" => "Deleted questions", + "srv_nadzor" => "Supervise", "srv_knjiznica_add" => "To add a question to a library, drag it to this field", "srv_knjiznica_copy" => "To copy a question, click on COPY icon", diff --git a/sql/update2.sql b/sql/update2.sql index bc13c40a4..baa0d9214 100644 --- a/sql/update2.sql +++ b/sql/update2.sql @@ -9646,12 +9646,13 @@ UPDATE misc SET value='22.07.13' WHERE what="version"; INSERT INTO srv_grupa (id, ank_id, naslov, vrstni_red) VALUES (-3, 0, 'system', 0); CREATE TABLE IF NOT EXISTS srv_spremenljivka_deleted ( + id INT(11) NOT NULL auto_increment, spr_id INT(11) NOT NULL, ank_id INT(11) NOT NULL, delete_time DATETIME(3) NOT NULL, CONSTRAINT fk_srv_spremenljivka_deleted_ank_id FOREIGN KEY (ank_id) REFERENCES srv_anketa (id) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT fk_srv_spremenljivka_deleted_spr_id FOREIGN KEY (spr_id) REFERENCES srv_spremenljivka (id) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY (id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8;; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; UPDATE misc SET value='22.08.05' WHERE what="version";