current_folder = array( 'id' => 0, 'naslov' => $lang['srv_mySurvey_all_surveys'] ); echo '
'; // Levi meni s folderji echo '
'; $this->displayLeftContent(); echo '
'; // Desna vsebina echo '
'; $this->displayRightContent(); echo '
'; echo '
'; // JS za drag/drop echo ''; } // Izpisemo levo stran - seznam folderjev private function displayLeftContent(){ global $lang; echo '
'.$lang['srv_mySurvey_your_folders'].'
'; // Izpisemo seznam folder s seznamom childov v rootu echo ''; // Prikazemo se skrit div za dodaten popup (rename, add - title) echo '
'; // Klik izven "Vec" - zapremo okno echo ''; } // Izpisemo seznam folderjev za posameznega parenta private function displayFolderList($folder_id){ global $global_user_id; // Izpisemo folder box $folder_open = $this->displayFolder($folder_id); // Izpisemo se vse subfolderje echo ''; } // Izpisemo posamezen folder private function displayFolder($folder_id){ global $lang; global $global_user_id; // Ce gre za root folder dobimo stevilo anket brez folderja if($folder_id == '0'){ // Prestejemo ankete, ki niso v nobenem notranjem folderju - so v rootu // Poiscemo vse ankete v custom folderjih $sql = sisplet_query("SELECT ank_id FROM srv_mysurvey_anketa WHERE usr_id='$global_user_id'"); // Vrnemo razliko v stevilu anket (odstejemo ankete v custom folderjih) $survey_count = count($this->surveys_ids); if(mysqli_num_rows($sql) > 0) $survey_count -= mysqli_num_rows($sql); $this->current_folder['survey_count'] = $survey_count; // Preverimo, ce ni noben drug folder aktiviran - potem je aktiviran root $sql = sisplet_query("SELECT COUNT(id) AS active_count FROM srv_mysurvey_folder WHERE active='1' AND usr_id='".$global_user_id."'"); $row = mysqli_fetch_array($sql); $folder_active = ($row['active_count'] == 0) ? 'active' : ''; $folder_open = 'open'; } // Ce ne gre za root folder dobimo podatke o folderju else{ // Dobimo podatke folderja $sql = sisplet_query("SELECT f.*, COUNT(a.ank_id) AS survey_count FROM srv_mysurvey_folder f LEFT JOIN srv_mysurvey_anketa a ON f.id=a.folder WHERE id='".$folder_id."' GROUP BY 1 "); if (!$sql) echo mysqli_error($GLOBALS['connect_db']); $row = mysqli_fetch_array($sql); $survey_count = $row['survey_count']; // Nastavimo, ce je to trenutno odprt folder if($row['active'] == '1') $this->current_folder = $row; $folder_active = ($row['active'] == '1') ? 'active' : ''; $folder_open = ($row['open'] == '1') ? 'open' : ''; } // Izrisemo folder box // Ce je root if($folder_id == '0'){ echo '
  • '; echo ''; echo '
    '.$lang['srv_mySurvey_all_surveys'].'
    '; echo ''.$survey_count.''; // Urejanje folderja // Tri pikice za prikaz urejanja folderja echo ' '; // Skrit div za urejanje folderja echo '
    '; echo ' '; echo '
    '; } else{ echo '
  • '; echo ''; echo ''; echo '
    '.$row['naslov'].'
    '; echo ''.$survey_count.''; // Urejanje folderja // Tri pikice za prikaz urejanja folderja echo ' '; // Skrit div za urejanje folderja echo '
    '; echo ' '; echo '
    '; } echo '
  • '; // Vrnemo, ce je folder odprt ali ne if($folder_open == 'open') return true; else return false; } // Dodaten popup za ime direktorija pri dodajanju private function displayAddFolderPopup($folder_id){ global $lang; echo '

    '.$lang['srv_library_folder_name'].'

    '; echo '
    '; echo ' '; echo '
    '; echo '
    '; echo ' '; echo ' '; echo '
    '; } // Dodaten popup za ime direktorija pri preimenovanju private function displayRenameFolderPopup($folder_id, $folder_name){ global $lang; echo '

    '.$lang['srv_library_folder_name'].'

    '; echo '
    '; echo ' '; echo '
    '; echo '
    '; echo ' '; echo ' '; echo '
    '; } // Izpisemo desnostran - vsebino odprtega folderja private function displayRightContent(){ // Naslov trenutnega folderja echo '
    '; $this->displayFolderTitle(); echo '
    '; // Vrstica z gumbi, filtri - niso prikazane pri searchu echo '
    '; if($this->isSearch != 1){ $this->displayButtonsRow(); } else{ // Okno z nastavitvami searcha echo '
    '; $this->displaySearchSettings(); echo '
    '; } echo '
    '; # koliko imamo strani $this->max_pages = (int)$this->rec_per_page > 0 ? ceil($this->current_folder['survey_count'] / $this->rec_per_page) : 1; # katera je trenutna stran if (isset($_GET['pageno']) && (int)$_GET['pageno'] > 0) { # izbrana stran ne more biti večja, kot pa imamo vseh strani $this->pageno = min((int)$_GET['pageno'], $this->max_pages); } // Izris seznama anket echo '
    '; $this->displayNewSurveyList(); echo '
    '; // Paginacija - se na dnu - ni prikazana pri searchu if($this->isSearch != 1){ echo '
    '; echo ' '; echo '
    '; } // Footer echo ''; } // Naslov folderja na vrhu private function displayFolderTitle(){ echo ''; echo $this->current_folder['naslov']; } // Izpisemo vrstico z gombi na vrhu (ustvari novo anketo, filtri...) private function displayButtonsRow(){ // Gumb za ustvarjanje ankete echo '
    '; $this->new_anketa_div(); echo '
    '; // Filtri na desni echo '
    '; // Okno za search po mojeih anketah echo '
    '; $this->displaySearch(); echo '
    '; // Preklop na pogled s folderji (samo ce imamo nov vmesnik) //echo '
    '; $this->displayFolderSwitch(); //echo '
    '; // Gumb za filtriranje //echo '
    '; $this->displayFilterButton(); //echo '
    '; // Gumb za sortiranje echo '
    '; $this->displaySortButton(); echo '
    '; echo '
    '; } // Prikazemo gumb za sortiranje seznama anket protected function displaySortButton(){ global $lang, $site_url; echo ''; echo '
    '; echo ''; echo '
    '; } // Prikazemo gumb za filtriranje seznama anket protected function displayFilterButton(){ global $lang, $site_url, $admin_languages; echo '
    user_id || $this->lang_id != 0 || $this->gdpr != 0) ? 'class="active"' : '').'>'; echo ''; echo '
    '; echo ''; echo '
    '; echo '
    '; } // Izpisemo footer private function displayFooter(){ global $lang; global $site_frontend; global $mysql_database_name; // Leva stran footerja echo ''; // Desna stran footerja - report a bug echo ''; } // Izposemo tabelo z anketami public function displayNewSurveyList($folder=0) { global $lang; global $site_url; global $global_user_id; $ankete = $this->getSurveysAsListNew($folder); echo ''; echo ''; if ($count = count($ankete)) { // Naslov za search if($this->isSearch == 1){ if($count == 1) $hits = $lang['s_hits_1']; elseif($count == 2) $hits = $lang['s_hits_2']; elseif($count == 3 || $count == 4) $hits = $lang['s_hits_34']; else $hits = $lang['s_hits']; // Ce imamo vec kot 1000 zadetkov izpisemo samo 1000 in opozorilo if($count < 1000) $cnt_text = '('.$count.' '.$hits.')'; else $cnt_text = '('.$lang['s_hits_1000'].')'; echo ''.$lang['s_search_mySurvey_title'].' '.$cnt_text.':'; } echo ''; // HEADER VRSTICA echo ''; // Naslov echo ''; // Trajanje - status echo ''; // Ustvarjeno echo ''; // Zadnji vnos echo ''; // Sprememba echo ''; // Ostalo echo ''; echo ''; // VRSTICE Z ANKETAMI foreach ( $ankete as $anketa ) { echo ''; // Naslov echo ''; // Trajanje - status echo ''; // Ustvarjeno echo ''; // Zadnji vnos echo ''; // Sprememba echo ''; // Ostalo echo ''; echo ''; } echo '
    '; echo $this->createOrderUrlNew(1, $lang['title']); echo ''; echo $this->createOrderUrlNew(18, 'Status'); echo ''; echo $this->createOrderUrlNew(10, $lang['srv_created']); echo ''; echo $this->createOrderUrlNew(16, $lang['srv_last_insrt']); echo ''; echo $this->createOrderUrlNew(14, $lang['change']); echo ''; echo $lang['more2']; echo '
    '; if(strlen($anketa['naslov']) > 60) $text = substr($anketa['naslov'],0,60); else $text = $anketa['naslov']; // Ce gre za search moramo ustrezno pobarvati najden del besede $text_searched = $text; if($this->isSearch == 1 && $this->searchSettings['stype'] == '0'){ foreach($this->searchStringProcessed as $search_word){ // Pobarvamo najden niz v naslovu ankete preg_match_all("/$search_word+/i", $text_searched, $matches); if (is_array($matches[0]) && count($matches[0]) >= 1) { // Drugace vcasih pobrise presledek, ne vem kako drugace resit:) $text_searched = str_replace(' ', ' ', $text_searched); $text_searched = str_replace($matches[0][0], ''.$matches[0][0].'', $text_searched); } } } // Zgornja vrstica echo '
    '; echo ' '.$text_searched.''; echo '
    '; // Spodnja vrstica echo '
    '; if($anketa['mobile_created'] == '1') echo 'M'; if($anketa['survey_type'] == 0) echo $lang['srv_vrsta_survey_type_0']; elseif($anketa['survey_type'] == 1) echo $lang['srv_vrsta_survey_type_1']; elseif(SurveyInfo::checkSurveyModule('hierarhija', $anketa['id'])) echo $lang['srv_vrsta_survey_type_10']; else echo $lang['srv_vrsta_survey_type_2']; echo ', '.$lang['srv_h_sl_stvprasanj'].': '. $anketa['variables']; echo '
    '; echo '
    '; if ($anketa['active'] == 1) { $now = time(); $do = explode('.', $anketa['trajanjedo']); $do = strtotime($do[0].'.'.$do[1].'.20'.$do[2]); $trajanje = $do - $now; $trajanje = floor($trajanje/60/60/24) + 1; if($trajanje >= 0){ // Ce je aktivna za vec kot 2000 dni je trajna if($trajanje > 2000){ $status_text = $lang['srv_trajna_anketa']; } else{ $status_text = $lang['more'].' '.$trajanje.' '.$lang['hour_days']; } } else{ $status_text = $lang['srv_trajna_anketa']; } $status_color = 'green'; } else { $sqlA = sisplet_query("SELECT sid FROM srv_activity WHERE sid='".$anketa['id']."'"); if (mysqli_num_rows($sqlA) > 0) { # anketa je zaključena $status_text = $lang['srv_survey_list_closed']; $status_color = 'blue'; } else { # anketa je neaktivna $status_text = $lang['srv_survey_list_inpreparation']; $status_color = 'gray'; } } echo '
    '.$status_text.'
    '; echo '
    '; // Ce gre za search moramo ustrezno pobarvati najden del besede $name_searched = $anketa['i_name']; $surname_searched = $anketa['i_surname']; if($this->isSearch == 1 && $this->searchSettings['stype'] == '1'){ foreach($this->searchStringProcessed as $search_word){ // Pobarvamo najden niz v imenu preg_match_all("/$search_word+/i", $name_searched, $matches); if (is_array($matches[0]) && count($matches[0]) >= 1) { foreach ($matches[0] as $match) { $name_searched = str_replace($match, ''.$match.'', $name_searched); } } // Pobarvamo najden niz v priimku preg_match_all("/$search_word+/i", $surname_searched, $matches); if (is_array($matches[0]) && count($matches[0]) >= 1) { foreach ($matches[0] as $match) { $surname_searched = str_replace($match, ''.$match.'', $surname_searched); } } } } $i_time = substr($anketa['i_time'], 0, 8); $i_time = explode('.', $i_time); echo '
    '; echo $i_time[0].'.'.$i_time[1].'.20'.$i_time[2]; echo '
    '; echo '
    '; echo $name_searched.' '.$surname_searched; echo '
    '; echo '
    '; echo '
    '; if($anketa['answers'] > 0){ $v_time = substr($anketa['v_time_last'], 0, 8); $v_time = explode('.', $v_time); // Nimamo parapodatkov if($anketa['v_time_last'] == '00.00.00 0:00') echo $lang['srv_survey_list_no_paradata']; else echo $v_time[0].'.'.$v_time[1].'.20'.$v_time[2]; } else{ echo '/'; } echo '
    '; echo '
    '; echo $lang['srv_info_answers_no'].': '.$anketa['answers']; echo '
    '; echo '
    '; echo '
    '; $e_time = substr($anketa['e_time'], 0, 8); $e_time = explode('.', $e_time); echo $e_time[0].'.'.$e_time[1].'.20'.$e_time[2]; echo '
    '; echo '
    '; echo ' '.$anketa['e_email'].''; echo '
    '; echo '
    '; } else{ // Naslov za prazen search if($this->isSearch == 1) echo ''.$lang['s_search_mySurvey_nothing'].'.'; } } // Dobimo seznam anket za nov prikaz (starega se naceloma ne uporablja vec) private function getSurveysAsListNew() { $result = array(); // ce imas hkrati dostop do ankete (srv_dostop) in preko managerskega dostopa (srv_dostop_manage) se brez DISTINCT podvajajo ankete $stringSurveyList = "SELECT DISTINCT sa.id, sa.folder, '1' as del, sa.naslov, sa.active, sa.mobile_created, sa.edit_time, "; $stringSurveyList .= 'sal.lib_glb AS lib_glb, '; $stringSurveyList .= 'sal.lib_usr AS lib_usr, '; $stringSurveyList .= "sa.edit_uid, sal.e_name AS e_name, sal.e_surname AS e_surname, sal.e_email AS e_email, "; $stringSurveyList .= "sa.insert_uid, sal.i_name AS i_name, sal.i_surname AS i_surname, sal.i_email AS i_email, "; $stringSurveyList .= "date_format(edit_time, '%d.%m.%y %k:%i') AS e_time, "; $stringSurveyList .= "date_format(insert_time, '%d.%m.%y %k:%i') AS i_time, "; $stringSurveyList .= "date_format(sal.a_first, '%d.%m.%y %k:%i') AS v_time_first, date_format(sal.a_last, '%d.%m.%y %k:%i') AS v_time_last, "; $stringSurveyList .= "sal.answers as answers, "; // vedno prestejemo odgovore $stringSurveyList .= "sal.variables as variables, "; $stringSurveyList .= "date_format(sa.starts, '%d.%m.%y') as trajanjeod, "; $stringSurveyList .= "date_format(sa.expire, '%d.%m.%y') as trajanjedo, "; $stringSurveyList .= "approp, "; $stringSurveyList .= "sd.canEdit, sa.survey_type "; // tega pustim tukaj, da ni problemov z vejico // Ce searchamo po besedah dodamo se uvod, zakljucek, naslove vprasanj in vrednosti vprasanj if($this->isSearch == 1 && $this->searchSettings['stype'] == '2'){ $stringSurveyList .= ", sa.introduction AS introduction, sa.conclusion AS conclusion "; $stringSurveyList .= ", sg.id AS sg_id, sg.ank_id AS sg_ank_id "; $stringSurveyList .= ", ss.id AS ss_id, ss.naslov AS ss_naslov, ss.gru_id AS ss_gru_id "; $stringSurveyList .= ", sv.id AS sv_id, sv.naslov AS sv_naslov, sv.spr_id AS sv_spr_id "; } $stringSurveyList .= "FROM srv_anketa sa "; $stringSurveyList .= "LEFT OUTER JOIN srv_survey_list AS sal ON sal.id = sa.id " ; $stringSurveyList .= "LEFT OUTER JOIN srv_library_anketa AS sla ON sla.ank_id = sa.id " ; # kdo lahko ureja anketo (briše) // tega substringy se ne da dodatno razbit z prepareSubquery, ker selectamo 2 elementa... $stringSurveyList .= "LEFT OUTER JOIN (SELECT 1 AS canEdit, ank_id FROM srv_dostop WHERE FIND_IN_SET('edit', dostop ) ='1' AND aktiven = '1' AND uid = '$this->g_uid' OR uid IN (".SurveyCopy::prepareSubquery(sisplet_query("SELECT user FROM srv_dostop_manage WHERE manager = '".$this->g_uid."'")).")) AS sd ON sd.ank_id = sa.id " ; if($this->current_folder['id'] > 0) $stringSurveyList .= "LEFT OUTER JOIN srv_mysurvey_anketa AS sf ON sf.ank_id = sa.id "; // Ce iscemo po kljucnih besedah moramo dodat se tabele srv_grupa, srv_spremenljivka in srv_vrednost if($this->isSearch == 1 && $this->searchSettings['stype'] == '2'){ $stringSurveyList .= "LEFT OUTER JOIN srv_grupa AS sg ON sg.ank_id = sa.id "; $stringSurveyList .= "LEFT OUTER JOIN srv_spremenljivka AS ss ON ss.gru_id = sg.id "; $stringSurveyList .= "LEFT OUTER JOIN srv_vrednost AS sv ON sv.spr_id = ss.id "; } // Ce iscemo po imenu ankete moramo dodat se tabele srv_nice_links za lepe linke if($this->isSearch == 1 && $this->searchSettings['stype'] == '0'){ $stringSurveyList .= "LEFT OUTER JOIN srv_nice_links AS nl ON sa.id = nl.ank_id "; } $stringSurveyList .= "WHERE sa.backup='0' AND sa.id>0 AND active >= '0' AND invisible = '0' "; if($this->current_folder['id'] > 0) $stringSurveyList .= "AND sf.usr_id='$this->g_uid' AND sf.folder='".$this->current_folder['id']."' "; elseif($this->current_folder['id'] == 0) $stringSurveyList .= "AND NOT EXISTS (SELECT * FROM srv_mysurvey_anketa sma WHERE sma.ank_id=sa.id AND sma.usr_id='$this->g_uid') "; // GDPR filter if($this->gdpr == 1) $stringSurveyList .= "AND EXISTS (SELECT * FROM srv_gdpr_anketa sgdpr WHERE sgdpr.ank_id=sa.id) "; elseif($this->gdpr == 2) $stringSurveyList .= "AND NOT EXISTS (SELECT * FROM srv_gdpr_anketa sgdpr WHERE sgdpr.ank_id=sa.id) "; // Ce izvajamo search po anketah if($this->isSearch == 1){ // Filter glede na search $stringSurveyList .= $this->getSearchString(); // Filter glede na jezik ankete $stringSurveyList .= $this->getLanguageLimit(); // Filter glede na dostop do ankete $stringSurveyList .= $this->getDostopAnketa(); // Vrstni red anket $stringSurveyList .= $this->getOrderString(); // Ce iscemo po kljucnih besedah moramo na koncu grupirat po anketi if($this->searchSettings['stype'] == '2'){ //$stringSurveyList .= " GROUP BY id"; //$stringSurveyList .= " LIMIT 1000"; } else{ // Limit anket //$stringSurveyList .= $this->getLimitString(); $stringSurveyList .= " LIMIT 1000"; } } else{ // Filter glede na jezik ankete $stringSurveyList .= $this->getLanguageLimit(); // Filter glede na dostop do ankete $stringSurveyList .= $this->getDostopAnketa(); // Vrstni red anket $stringSurveyList .= $this->getOrderString(); // Limit anket $stringSurveyList .= $this->getLimitString(); } $sqlSurveyList = sisplet_query($stringSurveyList); if (!$sqlSurveyList) { print_r("ERROR in query:"); print_r($stringSurveyList); echo mysqli_error($GLOBALS['connect_db']); } while ($rowSurveyList = mysqli_fetch_assoc($sqlSurveyList)) { $result[$rowSurveyList['id']] = $rowSurveyList; } return $result; } /** Funkcija ki kiče podfunkcije za ajax del * * */ public function ajax() { global $global_user_id; global $lang; // Aktiviramo folder in prikazemo ankete v tem folderju if($_GET['a'] == 'mysurvey_folder_activate'){ $folder_id = isset($_POST['folder_id']) ? $_POST['folder_id'] : '0'; // Nastavimo vse folderje na neaktivne $sql = sisplet_query("UPDATE srv_mysurvey_folder SET active='0' WHERE usr_id='".$global_user_id."'"); // Nastavimo izbran folder na aktivnega if($folder_id > '0') $sql = sisplet_query("UPDATE srv_mysurvey_folder SET active='1' WHERE usr_id='".$global_user_id."' AND id='".$folder_id."'"); // Nastavimo current folder if($folder_id == '0'){ // Prestejemo ankete, ki niso v nobenem notranjem folderju - so v rootu // Poiscemo vse ankete v custom folderjih $sql = sisplet_query("SELECT ank_id FROM srv_mysurvey_anketa WHERE usr_id='$global_user_id'"); // Vrnemo razliko v stevilu anket (odstejemo ankete v custom folderjih) $survey_count = count($this->surveys_ids); if(mysqli_num_rows($sql) > 0) $survey_count -= mysqli_num_rows($sql); $this->current_folder = array( 'id' => 0, 'naslov' => $lang['srv_mySurvey_all_surveys'] ); $this->current_folder['survey_count'] = $survey_count; } else{ // Dobimo podatke folderja $sql = sisplet_query("SELECT f.*, COUNT(a.ank_id) AS survey_count FROM srv_mysurvey_folder f LEFT JOIN srv_mysurvey_anketa a ON f.id=a.folder WHERE id='".$folder_id."' GROUP BY 1 "); if (!$sql) echo mysqli_error($GLOBALS['connect_db']); $row = mysqli_fetch_array($sql); $this->current_folder = $row; } // Na novo prikazemo desno stran $this->displayRightContent(); // JS za drag/drop echo ''; } // Razsirimo/skrcimo folder if($_GET['a'] == 'mysurvey_folder_toggle'){ $folder_id = isset($_POST['folder_id']) ? $_POST['folder_id'] : '0'; $open = isset($_POST['open']) ? $_POST['open'] : '0'; // Nastavimo izbran folder na odprtega $sql = sisplet_query("UPDATE srv_mysurvey_folder SET open='".$open."' WHERE usr_id='".$global_user_id."' AND id='".$folder_id."'"); } // Pokazemo popup za poimenovanje novega subfolderja if($_GET['a'] == 'mysurvey_folder_add_popup'){ $folder_id = $_POST['folder_id']; $this->displayAddFolderPopup($folder_id); } // Ustvarimo nov subfolder if($_GET['a'] == 'mysurvey_folder_add'){ $folder_id = $_POST['folder_id']; $folder_name = $_POST['folder_name']; // Razpremo parent folder $sql = sisplet_query("UPDATE srv_mysurvey_folder SET open='1' WHERE id='".$folder_id."' AND usr_id='$global_user_id'"); $sql = sisplet_query("INSERT INTO srv_mysurvey_folder (usr_id, parent, naslov) VALUES ('".$global_user_id."','".$folder_id."', '".$folder_name."')"); $new_folder_id = mysqli_insert_id($GLOBALS['connect_db']); $this->displayLeftContent(); // JS za drag/drop echo ''; } // Pokazemo popup za preimenovanje folderja if($_GET['a'] == 'mysurvey_folder_rename_popup'){ $folder_id = $_POST['folder_id']; $folder_name = $_POST['folder_name']; $this->displayRenameFolderPopup($folder_id, $folder_name); } // Preimenujemo folder if($_GET['a'] == 'mysurvey_folder_rename'){ $folder_id = isset($_POST['folder_id']) ? $_POST['folder_id'] : '0'; $folder_name = isset($_POST['folder_name']) ? $_POST['folder_name'] : ''; $folder_name = strip_tags($folder_name); $sql = sisplet_query("UPDATE srv_mysurvey_folder SET naslov='".$folder_name."' WHERE id='".$folder_id."' AND usr_id='".$global_user_id."'"); $this->displayLeftContent(); // JS za drag/drop echo ''; } // Pobrisemo folder if($_GET['a'] == 'mysurvey_folder_delete'){ $folder_id = isset($_POST['folder_id']) ? $_POST['folder_id'] : 0; if($folder_id > 0){ // Dobimo parent folderja $sqlParent = sisplet_query("SELECT parent, active FROM srv_mysurvey_folder WHERE id='".$folder_id."' AND usr_id='".$global_user_id."'"); $rowParent = mysqli_fetch_array($sqlParent); // Ce je parent root, pobrisemo ankete ki so bile znotraj folderja if($rowParent['parent'] == '0'){ $sql = sisplet_query("DELETE FROM srv_mysurvey_anketa WHERE folder='".$folder_id."' AND usr_id='".$global_user_id."'"); } // Drugace jih prestavimo v parenta else{ $sql = sisplet_query("UPDATE srv_mysurvey_anketa SET folder='".$rowParent['parent']."' WHERE folder='".$folder_id."' AND usr_id='".$global_user_id."'"); // Ce je bil active, nastavimo parenta za active if($rowParent['active'] == '1'){ $sql2 = sisplet_query("UPDATE srv_mysurvey_folder SET active='1' WHERE id='".$rowParent['parent']."' AND usr_id='".$global_user_id."'"); } } // Nastavimo subfolderjem novega parenta $sql3 = sisplet_query("UPDATE srv_mysurvey_folder SET parent='".$rowParent['parent']."' WHERE parent='".$folder_id."' AND usr_id='".$global_user_id."'"); // Na koncu se pobrisemo prazen folder $sql4 = sisplet_query("DELETE FROM srv_mysurvey_folder WHERE id='".$folder_id."' AND usr_id='".$global_user_id."'"); } $this->getSurveys(); } // Drop folderja if($_GET['a'] == 'mysurvey_folder_drop'){ $drag_folder_id = isset($_POST['drag_folder_id']) ? $_POST['drag_folder_id'] : 0; $parent_folder_id = isset($_POST['parent_folder_id']) ? $_POST['parent_folder_id'] : 0; if($drag_folder_id > 0){ // Preverimo, ce nismo droppali folder v svojega childa - tega nikoli ne pustimo, ker potem vse izgine if(!$this->checkFolderIsChild($parent_folder_id, $drag_folder_id)){ // Nastavimo folderju novega parenta $sql = sisplet_query("UPDATE srv_mysurvey_folder SET parent='".$parent_folder_id."' WHERE id='".$drag_folder_id."' AND usr_id='".$global_user_id."'"); // Parenta razpremo $sql = sisplet_query("UPDATE srv_mysurvey_folder SET open='1' WHERE id='".$parent_folder_id."' AND usr_id='".$global_user_id."'"); } } $this->getSurveys(); } // Drop ankete if($_GET['a'] == 'mysurvey_survey_drop'){ $drag_survey_id = isset($_POST['drag_survey_id']) ? $_POST['drag_survey_id'] : 0; $parent_folder_id = isset($_POST['parent_folder_id']) ? $_POST['parent_folder_id'] : 0; if($drag_survey_id > 0){ // Ce prestavimo v root, samo pobrisemo anketo iz srv_mysurvey_anketa if($parent_folder_id == '0'){ $sql = sisplet_query("DELETE FROM srv_mysurvey_anketa WHERE ank_id='".$drag_survey_id."' AND usr_id='".$global_user_id."'"); } // Prestavimo anketo v subfolder else{ $sql = sisplet_query("INSERT INTO srv_mysurvey_anketa (ank_id, usr_id, folder) VALUES ('".$drag_survey_id."', '".$global_user_id."', '".$parent_folder_id."') ON DUPLICATE KEY UPDATE folder='".$parent_folder_id."'"); } } $this->getSurveys(); } } // Rekurzivno preverimo, ce je nek folder child drugega folderja private function checkFolderIsChild($folder_id, $parent_folder_id){ // Ce je parent 0, je root in koncamo - folder ni child if($folder_id == '0') return false; $sql = sisplet_query("SELECT parent FROM srv_mysurvey_folder WHERE id='".$folder_id."'"); $row = mysqli_fetch_array($sql); if($row['parent'] == $parent_folder_id){ return true; } else{ return $this->checkFolderIsChild($row['parent'], $parent_folder_id); } } } ?>