1KA_F2F/admin/survey/classes/class.LibraryBranching.php
2022-02-25 08:30:09 +01:00

478 lines
16 KiB
PHP

<?php
class LibraryBranching {
var $ank_id; // Anketa znotraj katere urejamo knjiznico
var $tab = 0; // tip pove v bazi srv_library_folder za kater tip gre - 0->vprasanja, 1->ankete (vprasanja iz anket)
var $folder_id = 0; // Trenutno aktiven folder
public function __construct ($ank_id=0) {
if($ank_id == 0)
die();
$this->ank_id = $ank_id;
}
/**
* @desc prikaze knjiznico znotraj ankete
*/
private function displayLibrary() {
global $admin_type;
global $global_user_id;
global $lang;
// Naslov v oknu
echo '<h2><span class="faicon library"></span>'.$lang['srv_library_survey_title'].'</h2>';
// Tabi (vprasanja, ankete)
echo '<div id="lib_tabs" class="lib_tabs">';
$this->displayTabs();
echo '</div>';
// Vsebina
echo '<div id="tab_content" class="tab_content">';
$this->displayTabContent();
echo '</div>';
}
// Prikazemo tabe - vprasanja / ankete
private function displayTabs(){
global $lang;
// Tab vprasanja
echo '<div id="tab_0" class="tab '.($this->tab == 0 ? 'active' : '').'" onClick="displayLibraryTab(\'0\'); return false;">';
echo $lang['srv_vprasanja'];
echo '</div>';
// Tab ankete
echo '<div id="tab_1" class="tab '.($this->tab == 1 ? 'active' : '').'" onClick="displayLibraryTab(\'1\'); return false;">';
echo $lang['srv_ankete'];
echo '</div>';
echo '<input type="hidden" name="active_tab" id="active_tab" value="'.$this->tab.'">';
}
// Priazemo glavno vsebino glede na aktiven tab
public function displayTabContent(){
global $lang;
// Levi seznam folderjev
echo '<div id="lib_folder_list" class="content_left">';
$this->displayFolderList();
echo '</div>';
// Desna vsebina
echo '<div class="content_right">';
// Seznam vprasanj
echo '<div id="lib_question_list" class="question_list">';
$this->displayQuestionList();
echo '</div>';
// Item counter
echo '<div class="selected_items">'.$lang['srv_library_item_counter'].': <span id="selected_item_counter">0</span></div>';
// Gumbi na dnu
echo '<div class="button_holder">';
$this->displayButtons();
echo '</div>';
echo '</div>';
}
// Prikazemo seznam folderjev na levi
private function displayFolderList(){
global $global_user_id;
global $lang;
// Prikazemo seznam mojih folderjev v knjiznci
echo '<ul class="folder_list user">';
$this->displayFolderParent($parent=0, $uid=$global_user_id);
echo '</ul>';
// Prikazemo seznam javnih folderjev v knjiznci
echo '<ul class="folder_list public">';
$this->displayFolderParent($parent=0, $uid=0);
echo '</ul>';
}
private function displayFolderParent($parent, $uid) {
global $lang;
global $admin_type;
global $global_user_id;
global $site_url;
// Ce gre za root mapo prikazemo z ustreznim jezikom
if ($parent == 0 && $uid == 0) {
$language = " AND lang='".$lang['id']."' ";
}
// Dobimo vse folderje za parenta
$sqlFolders = sisplet_query("SELECT id, naslov
FROM srv_library_folder
WHERE uid='".$uid."' AND parent='".$parent."' AND tip='".$this->tab."' ".$language."
ORDER BY naslov
");
if (!$sqlFolders)
echo mysqli_error($GLOBALS['connect_db']);
// Za prvic ko pride user, da mu dodamo folder
if (mysqli_num_rows($sqlFolders) == 0 && $uid > 0 && $parent == 0){
// Nastavimo naslov mape
$naslov = ($this->tab == 0) ? $lang['srv_moja_vprasanja'] : $lang['srv_moje_ankete'];
sisplet_query("INSERT INTO srv_library_folder
(uid, tip, naslov, parent, lang)
VALUES
('".$uid."', '".$this->tab."', '".$naslov."', '0', '".$lang['id']."')
");
$sqlFolders = sisplet_query("SELECT id, naslov
FROM srv_library_folder
WHERE uid='".$uid."' AND parent='".$parent."' AND tip='".$this->tab."'
ORDER BY naslov
");
if (!$sqlFolders)
echo mysqli_error($GLOBALS['connect_db']);
}
// Loop po vseh mapah znotraj parenta
while ($rowFolders = mysqli_fetch_array($sqlFolders)) {
// Nastavimo default prvi aktiven folder
if($this->folder_id == 0 && $parent == 0){
$this->folder_id = $rowFolders['id'];
}
$this->displayFolderItem($rowFolders['id'], $rowFolders['naslov'], $child_count='11');
echo '<ul id="folder_list_'.$rowFolders['id'].'" class="folder_list" style="display:none;">';
// Rekurzivno izpisemo childe
$this->displayFolderParent($rowFolders['id'], $uid);
// Smo tabu ankete - izpisemo se ankete v tem folderju
if($this->tab == '1'){
$sqlSurvey = sisplet_query("SELECT a.id, a.naslov FROM srv_anketa a, srv_library_anketa l WHERE a.id=l.ank_id AND l.folder='".$rowFolders['id']."' AND l.uid='".$uid."' ORDER BY naslov ASC");
if (!$sqlSurvey) echo mysqli_error($GLOBALS['connect_db']);
if (mysqli_num_rows($sqlSurvey) > 0) {
while ($rowSurvey = mysqli_fetch_array($sqlSurvey)) {
$this->displayFolderItemSurvey($rowSurvey['id'], $rowSurvey['naslov']);
}
}
}
echo '</ul>';
}
}
// Levi item - folder
private function displayFolderItem($id, $title, $child_count) {
global $lang;
echo '<li id="folder_item_'.$id.'" class="folder_item '.($this->folder_id == $id ? 'active' : '').'" onClick="openLibraryFolder(\''.$id.'\');">';
// Ikoni puscice in mape
echo ' <span id="folder_arrow_'.$id.'" class="faicon arrow2_d" onClick="expandLibraryFolder(\''.$id.'\');"></span>';
echo ' <span class="faicon folder_empty"></span>';
// Naslov folderja
echo ' <span class="folder_item_title">'.$title.'</span>';
// Stevilo itemov v folderju
//echo ' <span class="folder_item_child_count">'.$child_count.'</span>';
// Tri pikice za prikaz urejanja folderja
echo ' <span class="faicon dots_ver displayNone"></span>';
// Skrit div za urejanje folderja
echo ' <div class="folder_item_settings displayNone">';
echo ' ';
echo ' </div>';
echo '</li>';
}
// Levi item - anketa
private function displayFolderItemSurvey($id, $title) {
global $lang;
echo '<li id="folder_item_'.$id.'" class="folder_item survey_item '.($this->folder_id == $id ? 'active' : '').'" onClick="openLibrarySurvey(\''.$id.'\');">';
// Ikoni puscice in mape
echo ' <span class="faicon list"></span>';
// Naslov folderja - ankete
echo ' <span class="folder_item_title">'.$title.'</span>';
// Tri pikice za prikaz urejanja folderja
echo ' <span class="faicon dots_ver displayNone"></span>';
// Skrit div za urejanje folderja
echo ' <div class="folder_item_settings displayNone">';
echo ' ';
echo ' </div>';
echo '</li>';
}
// Prikazemo seznam vprasanj v folderju
private function displayQuestionList(){
global $global_user_id;
global $lang;
// Folder ni nastavljen
if($this->folder_id == 0)
return;
// Seznam vprasanj iz anket v knjiznici
if($this->tab == 1){
$sqlFolderSurveys = sisplet_query("SELECT a.id FROM srv_anketa a, srv_library_anketa l WHERE a.id=l.ank_id AND l.folder='".$this->folder_id."' ORDER BY naslov ASC");
while ($rowFolderSurveys = mysqli_fetch_array($sqlFolderSurveys)) {
$sqlQuestions = sisplet_query("SELECT s.id, s.naslov, s.tip FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='".$rowFolderSurveys['id']."' ORDER BY s.naslov ASC");
while ($rowQuestions = mysqli_fetch_array($sqlQuestions)) {
$this->displayQuestionItem($rowQuestions);
}
}
}
// Seznam vprasanj iz knjiznice
else{
$sqlFolderQuestions = sisplet_query("SELECT * FROM srv_spremenljivka WHERE folder='".$this->folder_id."' AND gru_id='-1' ORDER BY naslov ASC");
while ($rowFolderQuestions = mysqli_fetch_array($sqlFolderQuestions)) {
$this->displayQuestionItem($rowFolderQuestions);
}
}
}
// Prikazemo seznam vprasanj v anketah iz knjiznice v folderju
private function displaySurveyQuestionList(){
global $global_user_id;
global $lang;
// Folder ni nastavljen
if($this->folder_id == 0)
return;
$sqlQuestions = sisplet_query("SELECT s.id, s.naslov, s.tip FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='".$this->folder_id."' ORDER BY g.vrstni_red ASC, s.vrstni_red ASC");
while ($rowQuestions = mysqli_fetch_array($sqlQuestions)) {
$this->displayQuestionItem($rowQuestions);
}
}
// Prikazemo 1 vrstico (item, vprasanje) na desni
private function displayQuestionItem($spremenljivka){
global $lang;
echo '<div id="question_item_holder_'.$spremenljivka['id'].'" class="question_item_holder" onClick="selectLibraryItem(\''.$spremenljivka['id'].'\');">';
echo ' <input type="checkbox" id="question_item_check_'.$spremenljivka['id'].'" class="question_item_check" onClick="selectLibraryItem(\''.$spremenljivka['id'].'\');"><label for="question_item_check_'.$spremenljivka['id'].'"></label>';
echo ' <div class="question_item_info">';
echo ' <span class="faicon list"></span>';
echo ' <span class="title">'.substr(strip_tags($spremenljivka['naslov']), 0, 40).'</span>';
echo ' </div>';
echo '</div>';
}
// Prikazemo gumbe
private function displayButtons(){
global $global_user_id;
global $lang;
echo '<button class="medium white-blue" onClick="popupClose();">'.$lang['edit1338'].'</button>';
echo '<button class="medium blue" onClick="insertLibraryItemsIntoSurvey();">'.$lang['srv_library_survey_add'].'</button>';
}
/**
* Popup pri dodajanju itema v knjiznico - potrditev, izbira folderja, urejanje naslova
*
* type
* - 0->anketa
* - 1->vprasanja
* - 2->if/blok
*/
private function displayAddIntoLibrary($id, $type){
global $lang;
// Naslov v oknu
echo '<h2>'.$lang[''].'</h2>';
// Vsebina
echo '<div class="content">';
echo 'Dodajanje...';
echo '</div>';
}
/**
* @desc pohendla ajax klice
*/
public function ajax () {
global $lang;
global $global_user_id;
$this->tab = (isset($_POST['tab'])) ? (int)$_POST['tab'] : 0;
// Odpremo popup s knjiznico
if ($_GET['a'] == 'displayLibraryPopup') {
$this->displayLibrary();
}
// Preklopimo tab v kniznici
elseif ($_GET['a'] == 'displayLibraryTabContent') {
$this->displayTabContent();
}
// Dodamo folder
elseif ($_GET['a'] == 'addFolder') {
$folder_id = $_POST['folder_id'];
$uid = $_POST['uid'];
$s = sisplet_query("INSERT INTO srv_library_folder (uid, tip, naslov, parent) VALUES ('".$uid."', '".$this->tab."', '".$lang['srv_newfolder']."', '".$folder_id."')");
if (!$s) echo mysqli_error($GLOBALS['connect_db']);
$insert_id = mysqli_insert_id($GLOBALS['connect_db']);
// Nastavimo za aktivni folder in izrisemo na novo
$this->folder_id = $insert_id;
$this->displayFolderList();
}
// Brisemo folder
elseif ($_GET['a'] == 'deleteFolder') {
$folder_id = $_POST['folder_id'];
$sql = sisplet_query("SELECT parent FROM srv_library_folder WHERE id = '$folder_id'");
$row = mysqli_fetch_array($sql);
// Prestavimo vse iteme v parent folder
if ($this->tab == 0) {
sisplet_query("UPDATE srv_spremenljivka SET folder='".$row['parent']."' WHERE folder='".$folder_id."'");
sisplet_query("UPDATE srv_if SET folder='".$row['parent']."' WHERE folder='".$folder_id."'");
}
else {
sisplet_query("UPDATE srv_library_anketa SET folder='".$row['parent']."' WHERE folder='".$folder_id."'");
}
// Prestavimo vse child folderje v parent folder
sisplet_query("UPDATE srv_library_folder SET parent='".$row['parent']."' WHERE parent='".$folder_id."'");
// Pobrisemo folder
sisplet_query("DELETE FROM srv_library_folder WHERE id='".$folder_id."'");
// Nastavimo parenta za aktivni folder in izrisemo na novo
$this->folder_id = $row['parent'];
$this->displayFolderList();
}
// Odpremo folder z vprasanji v knjiznici
elseif ($_GET['a'] == 'displayLibraryQuestionList') {
$this->folder_id = $_POST['folder_id'];
$this->displayQuestionList();
}
// Odpremo anketo z vprasanji v knjiznici
elseif ($_GET['a'] == 'displayLibrarySurveyQuestionList') {
$this->folder_id = $_POST['folder_id'];
$this->displaySurveyQuestionList();
}
// Dodajanje itema iz knjiznice v vprasalnik
elseif ($_GET['a'] == 'addIntoSurvey') {
$item_ids = $_POST['item_ids'];
$b = new Branching($this->anketa);
$ba = new BranchingAjax($this->ank_id);
foreach(array_reverse($item_ids) as $item_id){
$last_spr = $b->find_last_spr();
$new_id = $ba->spremenljivka_new($spremenljivka=$last_spr, $if=0, $endif=0, $copy=$item_id, $drop=0);
}
Common::getInstance()->Init($this->ank_id);
Common::getInstance()->prestevilci(0, $all=true);
$b->branching_struktura();
}
// Odpremo popup za dodajanje itema v knjiznico
elseif ($_GET['a'] == 'displayAddIntoLibraryPopup') {
$this->displayAddIntoLibrary();
}
// Dodajanje itema v knjiznico
elseif ($_GET['a'] == 'addIntoLibrary') {
/*$data = array();
$spremenljivka = substr($_POST['spremenljivka'], 10); // odrezemo branching_
$folder = $_POST['folder'];
// v knjiznico dodamo spremenljivko
if ($spremenljivka > 0) {
$id = $this->Branching->nova_spremenljivka(-1, 0, 0, $spremenljivka);
sisplet_query("UPDATE srv_spremenljivka SET folder = '$folder' WHERE id = '$id'");
$data['response'] = $lang['srv_library_q_added'];
// v knjiznico dodamo if/blok
} else {
$if = substr($_POST['spremenljivka'], 12); // odrezemo branching_if
if ($if > 0) {
$id = $this->Branching->if_copy(0, $if, true);
sisplet_query("UPDATE srv_if SET folder = '$folder' WHERE id = '$id'");
$data['response'] = $lang['srv_library_b_added'];
}
}*/
}
}
}
?>