diff --git a/admin/survey/SurveyAdmin.php b/admin/survey/SurveyAdmin.php index 1362f7a71..58abb9044 100644 --- a/admin/survey/SurveyAdmin.php +++ b/admin/survey/SurveyAdmin.php @@ -211,6 +211,7 @@ class SurveyAdmin echo '
'; - */ } // tole je, ce se inicializira v branhingu z $action=-1 (pa mogoce/najbrz se kje), da se ne prikazujejo 2x te meta podatki in redirecta... @@ -5412,7 +5401,7 @@ class SurveyAdminAjax { if (SurveyInfo::getInstance()->checkSurveyModule('uporabnost')) $link = 'main/survey/uporabnost.php?anketa=' . $anketa ; else - $link = 'main/survey/index.php?anketa=' . $anketa ; + $link = 'main/survey/index.php?anketa=' . SurveyInfo::getInstance()->getSurveyHash(); // Dodamo nice url diff --git a/admin/survey/SurveyAdminSettings.php b/admin/survey/SurveyAdminSettings.php index a837fd501..5e333f77f 100644 --- a/admin/survey/SurveyAdminSettings.php +++ b/admin/survey/SurveyAdminSettings.php @@ -2351,7 +2351,7 @@ class SurveyAdminSettings { $base_lang_resp = $lang['language']; $p->include_base_lang(); - $link1 = $site_url.'a/'.Common::encryptAnketaID($this->anketa); + $link1 = $site_url.'a/'.$row['hash']; echo ''.$link1.''.(count($lang_array) > 0 ? ' - '.$base_lang_resp : '').''; echo '' @@ -2648,7 +2648,6 @@ class SurveyAdminSettings { SurveyInfo::getInstance()->SurveyInit($this->anketa); $row = SurveyInfo::getInstance()->getSurveyRow(); - //return '<iframe id="1ka" src="'.$site_url.'main/survey/index.php?anketa='.$this->anketa.'" scrolling="auto" frameborder="0" width="100%"></iframe><script type="text/javascript">function r(){var a=window.location.hash.replace("#","");if(a.length==0)return;document.getElementById("1ka").style.height=a+"px";window.location.hash=""};window.setInterval(\\\'r()\\\',100);</script>'; $iframe = ''; $javascript = ''; diff --git a/admin/survey/api/class.ApiSurvey.php b/admin/survey/api/class.ApiSurvey.php index 93eddc249..b3d765409 100644 --- a/admin/survey/api/class.ApiSurvey.php +++ b/admin/survey/api/class.ApiSurvey.php @@ -2144,12 +2144,14 @@ class ApiSurvey { $res = sisplet_query("SELECT value FROM misc WHERE what='SurveyCookie'"); list ($SurveyCookie) = mysqli_fetch_row($res); + // Nastavimo se hash + $hash = Common::generateSurveyHash(); // GLASOVANJE if ($survey_type == 0) { - $sql = sisplet_query("INSERT INTO srv_anketa (id, naslov, akronim, db_table, starts, expire, dostop, insert_uid, insert_time, edit_uid, edit_time, cookie, text, url, intro_opomba, survey_type, lang_admin, lang_resp, active, skin, show_intro, show_concl, locked, mobile_created) " . - "VALUES ('', '$naslov', '$akronim', '1', $starts, $expire, '0', '$global_user_id', NOW(), '$global_user_id', NOW(), '$SurveyCookie', '', '$url', '', '0', '$lang_admin', '$lang_resp', '0', '1kaBlue', '0', '0', '0', '$mobile_created')"); + $sql = sisplet_query("INSERT INTO srv_anketa (id, hash, naslov, akronim, db_table, starts, expire, dostop, insert_uid, insert_time, edit_uid, edit_time, cookie, text, url, intro_opomba, survey_type, lang_admin, lang_resp, active, skin, show_intro, show_concl, locked, mobile_created) " . + "VALUES ('', '".$hash."', $naslov', '$akronim', '1', $starts, $expire, '0', '$global_user_id', NOW(), '$global_user_id', NOW(), '$SurveyCookie', '', '$url', '', '0', '$lang_admin', '$lang_resp', '0', '1kaBlue', '0', '0', '0', '$mobile_created')"); if (!$sql) { $error = mysqli_error($GLOBALS['connect_db']); @@ -2158,7 +2160,8 @@ class ApiSurvey { if ($anketa > 0) { - $url .= 'a/' . $anketa; + + $url .= 'a/' . $hash; // vnesemo tudi 1. grupo aka page $sql = sisplet_query("INSERT INTO srv_grupa (id, ank_id, naslov, vrstni_red) VALUES ('', '$anketa', '$lang[srv_stran] 1', '1')"); @@ -2219,8 +2222,8 @@ class ApiSurvey { $zakljucek_besedilo = $purifier->purify_DB($zakljucek['besedilo']); $show_concl = ($zakljucek['hide_zakljucek'] == '1') ? 0 : 1; - $sql = sisplet_query("INSERT INTO srv_anketa (id, naslov, akronim, db_table, starts, expire, dostop, insert_uid, insert_time, edit_uid, edit_time, cookie, text, url, intro_opomba, survey_type, lang_admin, lang_resp, active, skin, introduction, conclusion, show_intro, show_concl, locked, mobile_created) " . - "VALUES ('', '$naslov', '$akronim', '1', $starts, $expire, '0', '$global_user_id', NOW(), '$global_user_id', NOW(), '$SurveyCookie', '', '$url', '', '2', '$lang_admin', '$lang_resp', '$autoActiveSurvey', '1ka', '$uvod_besedilo', '$zakljucek_besedilo', '$show_intro', '$show_concl', '1', '$mobile_created')"); + $sql = sisplet_query("INSERT INTO srv_anketa (id, hash, naslov, akronim, db_table, starts, expire, dostop, insert_uid, insert_time, edit_uid, edit_time, cookie, text, url, intro_opomba, survey_type, lang_admin, lang_resp, active, skin, introduction, conclusion, show_intro, show_concl, locked, mobile_created) " . + "VALUES ('', '".$hash."', $naslov', '$akronim', '1', $starts, $expire, '0', '$global_user_id', NOW(), '$global_user_id', NOW(), '$SurveyCookie', '', '$url', '', '2', '$lang_admin', '$lang_resp', '$autoActiveSurvey', '1ka', '$uvod_besedilo', '$zakljucek_besedilo', '$show_intro', '$show_concl', '1', '$mobile_created')"); if (!$sql) { $error = mysqli_error($GLOBALS['connect_db']); } @@ -2228,7 +2231,8 @@ class ApiSurvey { if ($anketa > 0) { - $url .= 'a/' . $anketa; + + $url .= 'a/' . $hash; // vnesemo tudi 1. grupo aka page $sql = sisplet_query("INSERT INTO srv_grupa (id, ank_id, naslov, vrstni_red) VALUES ('', '$anketa', '$lang[srv_stran] 1', '1')"); @@ -2267,7 +2271,8 @@ class ApiSurvey { $json_array['id'] = $anketa; $json_array['note'] = 'Survey created'; - } else { + } + else { $json_array['error'] = 'Error creating survey'; } @@ -3521,7 +3526,7 @@ class ApiSurvey { if (SurveyInfo::getInstance()->checkSurveyModule('uporabnost')) $link = 'main/survey/uporabnost.php?anketa=' . $anketa . '&skupina=' . $vre_id; else - $link = 'main/survey/index.php?anketa=' . $anketa . '&skupina=' . $vre_id; + $link = 'main/survey/index.php?anketa=' . SurveyInfo::getInstance()->getSurveyHash() . '&skupina=' . $vre_id; if ($add) { $f = @fopen($site_path . '.htaccess', 'a'); @@ -3628,7 +3633,7 @@ class ApiSurvey { if (SurveyInfo::getInstance()->checkSurveyModule('uporabnost')) $link = 'main/survey/uporabnost.php?anketa=' . $anketa . '&skupina=' . $vre_id; else - $link = 'main/survey/index.php?anketa=' . $anketa . '&skupina=' . $vre_id; + $link = 'main/survey/index.php?anketa=' . SurveyInfo::getInstance()->getSurveyHash() . '&skupina=' . $vre_id; if ($add) { $f = @fopen($site_path . '.htaccess', 'a'); diff --git a/admin/survey/classes/class.AppSettings.php b/admin/survey/classes/class.AppSettings.php index 6a0fec04b..cae79a4ca 100644 --- a/admin/survey/classes/class.AppSettings.php +++ b/admin/survey/classes/class.AppSettings.php @@ -93,7 +93,7 @@ class AppSettings { private static $instance = null; - private static $settings = array(); + private $settings = array(); private function __construct(){ diff --git a/admin/survey/classes/class.Common.php b/admin/survey/classes/class.Common.php index 5127e963a..081365687 100644 --- a/admin/survey/classes/class.Common.php +++ b/admin/survey/classes/class.Common.php @@ -2063,29 +2063,23 @@ class Common { return $help_url; } - // Nov algoritem za id ankete v url-ju (ni vec stevilka ampak string - vsako liho stevilko zamenjamo z ustrezno crko npr. 1234 -> A2C4) - public static function encryptAnketaID($anketa_id){ + // Nov algoritem za id ankete v url-ju za izpolnjevanje + public static function generateSurveyHash(){ + + $unique = false; - // Ali imamo vklopljeno sifriranje id-ja anket v url-ju - ZENKRAT UGASNJENO - //if(true){ - if(false){ - $anketa_arr = str_split($anketa_id); - $anketa_string = ''; + while(!$unique){ - foreach($anketa_arr as $pos => $num){ + // Zgeneriramo random string z 8 znaki + $hash = substr(md5(uniqid(mt_rand(), true)), 0, 8); - // Na lihih mestih pretvorimo stevilko v crko - if($pos % 2 == 0) - $anketa_string .= chr(97 + $num); - else - $anketa_string .= $num; - } - //$anketa_string = strtolower($anketa_string); - } - else - $anketa_string = $anketa_id; - - return $anketa_string; + // Preverimo ce slucajno ze obstaja v bazi + $sql = sisplet_query("SELECT 1 FROM srv_anketa WHERE hash='".$hash."' LIMIT 1"); + if (mysqli_num_rows($sql) == 0) + $unique = true; + } + + return $hash; } // Algoritem, ki iz texta ustvari strukturo vprasanj in variabel (za uvoz anekte iz texta) diff --git a/admin/survey/classes/class.Library.php b/admin/survey/classes/class.Library.php index 4b5b67e26..88d653362 100644 --- a/admin/survey/classes/class.Library.php +++ b/admin/survey/classes/class.Library.php @@ -301,7 +301,10 @@ class Library { // nova anketa kot template iz knjiznice echo ' '.$lang['srv_anketacopy'].' '; - echo ' '.$lang['srv_poglejanketo2'].' '; + if(SurveyInfo::getInstance()->checkSurveyModule('uporabnost')) + echo ' '.$lang['srv_poglejanketo2'].' '; + else + echo ' '.$lang['srv_poglejanketo2'].' '; // brisi iz knjiznice if ($admin_type == 0) { @@ -317,7 +320,11 @@ class Library { } } else { - echo ''; + if(SurveyInfo::getInstance()->checkSurveyModule('uporabnost')) + echo ''; + else + echo ''; + // moznost da povozi anketo z anketo iz knjiznice //TEGA NE DOVOLIMO KER NI OK DA SE KAR PREPISE OBSTOJECO ANKETO - anketo iz knjiznice se lahko po novem dodaja samo iz mojih anket oz. pri ustvarjanju echo ' '; @@ -484,7 +491,11 @@ class Library { echo ' '.$lang['srv_anketacopy'].' '; // Preview - echo ' '.$lang['srv_poglejanketo2'].' '; + + if(SurveyInfo::getInstance()->checkSurveyModule('uporabnost')) + echo ' '.$lang['srv_poglejanketo2'].' '; + else + echo ' '.$lang['srv_poglejanketo2'].' '; // Urejanje - admin if ($admin_type == 0) diff --git a/admin/survey/classes/class.SurveyCopy.php b/admin/survey/classes/class.SurveyCopy.php index d894d5948..c6bc8429d 100644 --- a/admin/survey/classes/class.SurveyCopy.php +++ b/admin/survey/classes/class.SurveyCopy.php @@ -215,13 +215,6 @@ class SurveyCopy { $arr_src = array(); - // subqueryji mysql cist ubijejo zato sem razbil v 2 locena queryja... v bistvu si zakesiramo seznam spremenljivk in ifov - // TODO ko se MySQL upgrada na 5.6 mogoce prestavit nazaj na navaden subquery, ali pa tut ne - bo za sprobat - - - $qry_src_survey = sisplet_query("SELECT * FROM srv_anketa WHERE id = '".self :: $src_survey."'", self :: $src_connect_db); - $anketa_array = self::sql2array($qry_src_survey); - //Če imamo vklopljeno hierarhijo, potem vrednosti spremenljivk od hierarhije ne kopiramo // V kolikor imamo vklopljeno hierarhijo potem ne kopiramo spremenljivke od hierarhije $hierarhija_sql = null; @@ -491,8 +484,12 @@ class SurveyCopy { // iz izvorne ankete preberemo vsa polja if ( count($arr_src['srv_anketa']) > 0) { + // Nastavimo se hash nove ankete + $hash = Common::generateSurveyHash(); + // predefinirana polja (vsilimo vrednosti) $pre_set = array('id' => "NULL", + 'hash' => "'".$hash."'", 'backup' => "'0'", 'active' => "'0'", 'locked' => "'0'", diff --git a/admin/survey/classes/class.SurveyCustomReport.php b/admin/survey/classes/class.SurveyCustomReport.php index 8d0f6168b..011890635 100644 --- a/admin/survey/classes/class.SurveyCustomReport.php +++ b/admin/survey/classes/class.SurveyCustomReport.php @@ -1989,10 +1989,11 @@ class SurveyCustomReport { $row = mysqli_fetch_array($sql); $titleString = $row['value']; } - //echo ''.$lang['srv_nextins'].' | '.$lang['srv_insend'].'
'; + echo '' . $lang['srv_nextins'] . ' | ' . $lang['srv_insend'] . '
'; } @@ -1404,9 +1403,9 @@ class BodyController extends Controller //ce statistike ne prikazujemo skocimo na zakljucek (ce imammo izklopljeno ali nastavleno na samo urednike in ni urednik) if ($rows['stat'] == 0 || ($rows['stat'] == 2 && self::$admin_type != 0 && self::$admin_type != 1)) { - //header('Location: '.self::$site_url.'a/'.get('anketa').'&grupa='.get('grupa').'&glas_end=1'.get('cookie_url').''); header('Location: ' . SurveyInfo::getSurveyLink() . '&grupa=' . get('grupa') . (isset($_GET['language']) ? '&language=' . $_GET['language'] : '') . '&glas_end=1' . get('cookie_url') . ''); - } else { + } + else { echo '