Brsanje vprasanj - sql in ustrezno kopiranje vprasanja pri brisanju

This commit is contained in:
pero1203 2022-08-08 10:36:10 +02:00
parent 54de175cf2
commit dd0f48f2fd
6 changed files with 84 additions and 14 deletions

View File

@ -329,7 +329,7 @@ class Branching {
}
// Knjiznica
echo '<div class="toolbox_item open_lib" onClick="displayLibraryPopup();"><span class="item_icon faicon library"></span><span class="item_text">'.$lang['srv_library'].'</span></div>';
echo '<div class="toolbox_item open_lib"><span class="item_icon faicon library"></span><span class="item_text">'.$lang['srv_library'].'</span></div>';
echo '<div class="toolbox_border open_lib"></div>';
// normalna anketa
@ -342,7 +342,14 @@ class Branching {
echo '<div class="toolbox_border new_if"></div>';
echo '<div class="toolbox_item new_block '.(!$userAccess->checkUserAccess($what='block') ? 'user_access_locked' : '').'" tip="9998"><span class="item_icon faicon icon-white block_32"></span> <span class="item_text">'.$lang['srv_block_random_blocks'].'</span></div>';
//echo '<div class="toolbox_border new_block"></div>';
}
// Pobrisana vprasanja
$vd = new VprasanjeDeleted($this->anketa);
$deleted_vrasanja_count = $vd->countDeletedVprasanja();
if($deleted_vrasanja_count > 0){
echo '<div class="toolbox_border"></div>';
echo '<div class="toolbox_item open_deleted"><span class="item_icon faicon delete"></span><span class="item_text">'.$lang['srv_deleted_vprasanja'].' ('.$deleted_vrasanja_count.')</span></div>';
}
}
else {
@ -391,7 +398,14 @@ class Branching {
echo '<div class="toolbox_border new_if '.(!$userAccess->checkUserAccess($what='if') ? 'user_access_locked' : '').'"></div>';
echo '<div class="toolbox_item new_block '.(!$userAccess->checkUserAccess($what='block') ? 'user_access_locked' : '').'" tip="9998"><span class="item_icon faicon icon-white block_32"></span> <span class="item_text">'.$lang['srv_block_random_blocks'].'</span></div>';
//echo '<div class="toolbox_border new_block"></div>';
}
// Pobrisana vprasanja
$vd = new VprasanjeDeleted($this->anketa);
$deleted_vrasanja_count = $vd->countDeletedVprasanja();
if($deleted_vrasanja_count > 0){
echo '<div class="toolbox_border"></div>';
echo '<div class="toolbox_item open_deleted" onClick="displayDeletedVprasanjaPopup();"><span class="item_icon faicon delete"></span><span class="item_text">'.$lang['srv_deleted_vprasanja'].' ('.$deleted_vrasanja_count.')</span></div>';
}
}

View File

@ -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'");

View File

@ -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 '<div id="question_item_holder_'.$row['spr_id'].'" class="question_item_holder" onClick="selectLibraryItem(\''.$row['spr_id'].'\');">';
echo ' <input type="checkbox" id="question_item_check_'.$row['id'].'" item-type="1" item-subtype="1" class="question_item_check" onClick="selectLibraryItem(\''.$row['spr_id'].'\');"><label for="question_item_check_'.$row['spr_id'].'"></label>';
echo ' <div id="question_item_info_'.$row['spr_id'].'" item-type="1" item-subtype="1" item-id="'.$row['spr_id'].'" class="question_item_info">';
echo ' <span class="faicon list"></span>';
echo ' <span class="title">'.substr(strip_tags($row['naslov']), 0, 40).'</span>';
echo ' </div>';
echo '</div>';
}
}
// 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'];
}
}

View File

@ -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" => "&#268;e &#382;elite dodati spremenljivko v knji&#382;nico, jo povlecite v to polje",
"srv_knjiznica_copy" => "&#268;e &#382;elite kopirati vpra&#154;anje, ga označite z ikono COPY",

View File

@ -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",

View File

@ -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";