2022-02-22 10:27:32 +01:00
< ? php
2022-02-22 12:18:33 +01:00
2022-02-22 10:27:32 +01:00
class LibraryBranching {
2022-02-23 12:48:17 +01:00
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
2022-02-22 10:27:32 +01:00
2022-02-24 13:42:39 +01:00
public function __construct ( $ank_id = 0 ) {
if ( $ank_id == 0 )
die ();
2022-02-23 12:48:17 +01:00
2022-02-24 13:42:39 +01:00
$this -> ank_id = $ank_id ;
2022-02-22 10:27:32 +01:00
}
/**
2022-02-22 12:18:33 +01:00
* @ desc prikaze knjiznico znotraj ankete
2022-02-22 10:27:32 +01:00
*/
2022-02-22 12:18:33 +01:00
private function displayLibrary () {
2022-02-22 10:27:32 +01:00
global $admin_type ;
global $global_user_id ;
global $lang ;
2022-02-22 12:18:33 +01:00
// Naslov v oknu
2022-02-23 12:48:17 +01:00
echo '<h2><span class="faicon library"></span>' . $lang [ 'srv_library_survey_title' ] . '</h2>' ;
2022-02-22 12:18:33 +01:00
// Tabi (vprasanja, ankete)
2022-02-23 12:48:17 +01:00
echo '<div id="lib_tabs" class="lib_tabs">' ;
2022-02-22 12:18:33 +01:00
$this -> displayTabs ();
echo '</div>' ;
2022-02-22 10:27:32 +01:00
2022-02-22 12:18:33 +01:00
// Vsebina
2022-02-23 12:48:17 +01:00
echo '<div id="tab_content" class="tab_content">' ;
$this -> displayTabContent ();
2022-02-22 12:18:33 +01:00
echo '</div>' ;
2022-02-22 10:27:32 +01:00
}
2022-02-22 12:18:33 +01:00
// Prikazemo tabe - vprasanja / ankete
private function displayTabs (){
2022-02-22 10:27:32 +01:00
global $lang ;
2022-02-22 12:18:33 +01:00
// 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>' ;
2022-02-24 13:42:39 +01:00
echo '<input type="hidden" name="active_tab" id="active_tab" value="' . $this -> tab . '">' ;
2022-02-22 10:27:32 +01:00
}
2022-02-23 12:48:17 +01:00
// Priazemo glavno vsebino glede na aktiven tab
public function displayTabContent (){
// Levi seznam folderjev
2022-02-24 13:42:39 +01:00
echo '<div id="lib_folder_list" class="content_left">' ;
2022-02-23 12:48:17 +01:00
$this -> displayFolderList ();
echo '</div>' ;
// Desna vsebina
echo '<div class="content_right">' ;
// Seznam vprasanj
echo '<div id="lib_question_list" class="question_list">' ;
2022-02-24 13:42:39 +01:00
$this -> displayQuestionList ();
2022-02-23 12:48:17 +01:00
echo '</div>' ;
// Gumbi na dnu
echo '<div class="button_holder">' ;
$this -> displayButtons ();
echo '</div>' ;
echo '</div>' ;
}
2022-02-22 12:18:33 +01:00
// Prikazemo seznam folderjev na levi
private function displayFolderList (){
2022-02-22 10:27:32 +01:00
global $global_user_id ;
global $lang ;
2022-02-22 12:18:33 +01:00
// Prikazemo seznam mojih folderjev v knjiznci
2022-02-24 13:42:39 +01:00
echo '<ul class="folder_list user">' ;
2022-02-22 12:18:33 +01:00
$this -> displayFolderParent ( $parent = 0 , $uid = $global_user_id );
2022-02-24 13:42:39 +01:00
echo '</ul>' ;
2022-02-22 10:27:32 +01:00
2022-02-22 12:18:33 +01:00
// Prikazemo seznam javnih folderjev v knjiznci
2022-02-24 13:42:39 +01:00
echo '<ul class="folder_list public">' ;
2022-02-22 12:18:33 +01:00
$this -> displayFolderParent ( $parent = 0 , $uid = 0 );
2022-02-24 13:42:39 +01:00
echo '</ul>' ;
2022-02-22 10:27:32 +01:00
}
2022-02-22 12:18:33 +01:00
private function displayFolderParent ( $parent , $uid ) {
2022-02-22 10:27:32 +01:00
global $lang ;
global $admin_type ;
global $global_user_id ;
global $site_url ;
2022-02-22 12:18:33 +01:00
// Ce gre za root mapo prikazemo z ustreznim jezikom
if ( $parent == 0 && $uid == 0 ) {
$language = " AND lang=' " . $lang [ 'id' ] . " ' " ;
2022-02-22 10:27:32 +01:00
}
2022-02-22 12:18:33 +01:00
// Dobimo vse folderje za parenta
$sqlFolders = sisplet_query ( " SELECT id, naslov
FROM srv_library_folder
2022-02-23 12:48:17 +01:00
WHERE uid = '".$uid."' AND parent = '".$parent."' AND tip = '".$this->tab."' " . $language . "
2022-02-22 12:18:33 +01:00
ORDER BY naslov
" );
if ( ! $sqlFolders )
2022-02-22 10:27:32 +01:00
echo mysqli_error ( $GLOBALS [ 'connect_db' ]);
2022-02-22 12:18:33 +01:00
// Za prvic ko pride user, da mu dodamo folder
if ( mysqli_num_rows ( $sqlFolders ) == 0 && $uid > 0 && $parent == 0 ){
2022-02-22 10:27:32 +01:00
2022-02-22 12:18:33 +01:00
// Nastavimo naslov mape
$naslov = ( $this -> tab == 0 ) ? $lang [ 'srv_moja_vprasanja' ] : $lang [ 'srv_moje_ankete' ];
2022-02-22 10:27:32 +01:00
2022-02-22 12:18:33 +01:00
sisplet_query ( " INSERT INTO srv_library_folder
( uid , tip , naslov , parent , lang )
VALUES
( '".$uid."' , '".$this->tab."' , '".$naslov."' , '0' , '".$lang[' id ']."' )
" );
2022-02-22 10:27:32 +01:00
2022-02-22 12:18:33 +01:00
$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 )
2022-02-22 10:27:32 +01:00
echo mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
2022-02-22 12:18:33 +01:00
// Loop po vseh mapah znotraj parenta
2022-02-23 12:48:17 +01:00
while ( $rowFolders = mysqli_fetch_array ( $sqlFolders )) {
// Nastavimo default prvi aktiven folder
if ( $this -> folder_id == 0 && $parent == 0 ){
$this -> folder_id = $rowFolders [ 'id' ];
}
2022-02-24 13:42:39 +01:00
$this -> displayFolderItem ( $rowFolders [ 'id' ], $rowFolders [ 'naslov' ], $child_count = '11' );
2022-02-23 12:48:17 +01:00
2022-02-24 13:42:39 +01:00
echo '<ul id="folder_list_' . $rowFolders [ 'id' ] . '" class="folder_list" style="display:none;">' ;
2022-02-23 12:48:17 +01:00
// Rekurzivno izpisemo childe
$this -> displayFolderParent ( $rowFolders [ 'id' ], $uid );
2022-02-22 10:27:32 +01:00
2022-02-24 13:42:39 +01:00
// 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 )) {
2022-02-23 12:48:17 +01:00
2022-02-24 13:42:39 +01:00
$this -> displayFolderItemSurvey ( $rowSurvey [ 'id' ], $rowSurvey [ 'naslov' ]);
}
}
}
echo '</ul>' ;
2022-02-22 10:27:32 +01:00
}
2022-02-22 12:18:33 +01:00
}
2022-02-22 10:27:32 +01:00
2022-02-24 13:42:39 +01:00
// Levi item - folder
private function displayFolderItem ( $id , $title , $child_count ) {
2022-02-22 12:18:33 +01:00
global $lang ;
2022-02-22 10:27:32 +01:00
2022-02-24 13:42:39 +01:00
echo '<li id="folder_item_' . $id . '" class="folder_item ' . ( $this -> folder_id == $id ? 'active' : '' ) . '" onClick="openLibraryFolder(\'' . $id . '\');">' ;
2022-02-22 12:18:33 +01:00
// Ikoni puscice in mape
2022-02-24 13:42:39 +01:00
echo ' <span id="folder_arrow_' . $id . '" class="faicon arrow2_d" onClick="expandLibraryFolder(\'' . $id . '\');"></span>' ;
2022-02-23 12:48:17 +01:00
echo ' <span class="faicon folder"></span>' ;
2022-02-22 12:18:33 +01:00
// 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
2022-02-23 12:48:17 +01:00
echo ' <span class="faicon dots_ver displayNone"></span>' ;
2022-02-22 12:18:33 +01:00
// Skrit div za urejanje folderja
2022-02-23 12:48:17 +01:00
echo ' <div class="folder_item_settings displayNone">' ;
echo ' ' ;
2022-02-22 12:18:33 +01:00
echo ' </div>' ;
2022-02-24 13:42:39 +01:00
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>' ;
2022-02-22 12:18:33 +01:00
}
2022-02-23 12:48:17 +01:00
// Prikazemo seznam vprasanj v folderju
private function displayQuestionList (){
global $global_user_id ;
2022-02-22 10:27:32 +01:00
global $lang ;
2022-02-23 12:48:17 +01:00
// Folder ni nastavljen
if ( $this -> folder_id == 0 )
return ;
2022-02-22 10:27:32 +01:00
2022-02-24 13:42:39 +01:00
// 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 );
2022-02-22 10:27:32 +01:00
}
}
2022-02-23 12:48:17 +01:00
// Prikazemo 1 vrstico (item, vprasanje) na desni
private function displayQuestionItem ( $spremenljivka ){
2022-02-22 10:27:32 +01:00
global $lang ;
2022-02-24 13:42:39 +01:00
echo '<div id="question_item_holder_' . $spremenljivka [ 'id' ] . '" class="question_item_holder" onClick="selectLibraryItem(\'' . $spremenljivka [ 'id' ] . '\');">' ;
2022-02-22 10:27:32 +01:00
2022-02-24 13:42:39 +01:00
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>' ;
2022-02-22 10:27:32 +01:00
2022-02-23 12:48:17 +01:00
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>' ;
2022-02-22 10:27:32 +01:00
2022-02-23 12:48:17 +01:00
echo '</div>' ;
2022-02-22 10:27:32 +01:00
}
2022-02-23 12:48:17 +01:00
// Prikazemo gumbe
private function displayButtons (){
global $global_user_id ;
global $lang ;
2022-02-22 10:27:32 +01:00
2022-02-23 12:48:17 +01:00
echo '<button class="medium white-blue" onClick="popupClose();">' . $lang [ 'edit1338' ] . '</button>' ;
2022-02-24 13:42:39 +01:00
echo '<button class="medium blue" onClick="insertLibraryItemsIntoSurvey();">' . $lang [ 'srv_library_survey_add' ] . '</button>' ;
2022-02-22 10:27:32 +01:00
}
2022-02-23 12:48:17 +01:00
/**
* Popup pri dodajanju itema v knjiznico - potrditev , izbira folderja , urejanje naslova
*
* type
* - 0 -> anketa
* - 1 -> vprasanja
* - 2 -> if / blok
*/
private function displayAddIntoLibrary ( $id , $type ){
2022-02-22 10:27:32 +01:00
global $lang ;
2022-02-23 12:48:17 +01:00
// Naslov v oknu
echo '<h2>' . $lang [ '' ] . '</h2>' ;
2022-02-22 10:27:32 +01:00
2022-02-23 12:48:17 +01:00
// Vsebina
echo '<div class="content">' ;
echo 'Dodajanje...' ;
echo '</div>' ;
2022-02-22 10:27:32 +01:00
}
2022-02-23 12:48:17 +01:00
2022-02-22 10:27:32 +01:00
/**
2022-02-23 12:48:17 +01:00
* @ desc pohendla ajax klice
2022-02-22 10:27:32 +01:00
*/
2022-02-23 12:48:17 +01:00
public function ajax () {
2022-02-24 13:42:39 +01:00
global $lang ;
global $global_user_id ;
$this -> tab = ( isset ( $_POST [ 'tab' ])) ? ( int ) $_POST [ 'tab' ] : 0 ;
2022-02-22 10:27:32 +01:00
2022-02-23 12:48:17 +01:00
// Odpremo popup s knjiznico
if ( $_GET [ 'a' ] == 'displayLibraryPopup' ) {
$this -> displayLibrary ();
}
2022-02-22 10:27:32 +01:00
2022-02-23 12:48:17 +01:00
// Preklopimo tab v kniznici
2022-02-24 13:42:39 +01:00
elseif ( $_GET [ 'a' ] == 'displayLibraryTabContent' ) {
2022-02-23 12:48:17 +01:00
$this -> displayTabContent ();
}
2022-02-22 10:27:32 +01:00
2022-02-24 13:42:39 +01:00
// 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 ();
}
2022-02-23 12:48:17 +01:00
// Odpremo folder z vprasanji v knjiznici
elseif ( $_GET [ 'a' ] == 'displayLibraryQuestionList' ) {
2022-02-22 10:27:32 +01:00
2022-02-23 12:48:17 +01:00
$this -> folder_id = $_POST [ 'folder_id' ];
2022-02-24 13:42:39 +01:00
2022-02-23 12:48:17 +01:00
$this -> displayQuestionList ();
}
2022-02-22 10:27:32 +01:00
2022-02-24 13:42:39 +01:00
// 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 ( $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 );
}
$b -> branching_struktura ();
}
2022-02-23 12:48:17 +01:00
// Odpremo popup za dodajanje itema v knjiznico
elseif ( $_GET [ 'a' ] == 'displayAddIntoLibraryPopup' ) {
$this -> displayAddIntoLibrary ();
}
2022-02-24 13:42:39 +01:00
// 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' ];
}
} */
}
2022-02-22 10:27:32 +01:00
}
}
?>