summaryrefslogtreecommitdiffstats
path: root/admin/survey/classes/class.SurveySkupine.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/classes/class.SurveySkupine.php')
-rw-r--r--admin/survey/classes/class.SurveySkupine.php462
1 files changed, 462 insertions, 0 deletions
diff --git a/admin/survey/classes/class.SurveySkupine.php b/admin/survey/classes/class.SurveySkupine.php
new file mode 100644
index 0000000..b559adc
--- /dev/null
+++ b/admin/survey/classes/class.SurveySkupine.php
@@ -0,0 +1,462 @@
+<?php
+/**
+* @author Peter Hrvatin
+* @date November 2013
+*
+*/
+
+
+class SurveySkupine {
+
+ public $anketa; # id ankete
+ public $folder = ''; # pot do folderja
+
+ public $uid; # id userja
+
+
+ /**
+ * Konstruktor
+ *
+ * @param int $anketa
+ */
+ function __construct( $anketa = null ) {
+ global $global_user_id, $site_path;
+
+ $this->folder = $site_path . EXPORT_FOLDER.'/';
+
+ // če je podan anketa ID
+ if ((int)$anketa > 0) {
+
+ $this->anketa = $anketa;
+ }
+ else {
+ die("Napaka!");
+ }
+
+ if ( SurveyInfo::getInstance()->SurveyInit($this->anketa)) {
+ $this->uid = $global_user_id;
+ SurveyUserSetting::getInstance()->Init($this->anketa, $this->uid);
+ }
+ }
+
+ function displayEdit(){
+ global $global_user_id;
+ global $lang;
+ global $site_url;
+
+ // Ce je vklopljen evoli team meter se ne sme tukaj urejat skupin (ker se belezijo v dodatno bazo srv_evoli_teammeter z dodatnimi parametri)
+ if(SurveyInfo::getInstance()->checkSurveyModule('evoli_teammeter')
+ || SurveyInfo::getInstance()->checkSurveyModule('evoli_quality_climate')
+ || SurveyInfo::getInstance()->checkSurveyModule('evoli_teamship_meter')
+ || SurveyInfo::getInstance()->checkSurveyModule('evoli_organizational_employeeship_meter')
+ ){
+
+ echo '<fieldset><legend>'.$lang['srv_skupine'].'</legend>';
+ echo '<p class="bold red">Urejanje skupin ni mogoče, ker je vklopljen modul za Evoli!</p>';
+ echo '</fieldset>';
+
+ return;
+ }
+
+ $userAccess = UserAccess::getInstance($global_user_id);
+
+ $spr_id = $this->hasSkupine();
+ echo '<input type="hidden" id="skupine_spr_id" value="'.$spr_id.'"></input>';
+
+ echo '<fieldset><legend>'.$lang['srv_skupine'].'</legend>';
+ echo '<div id="skupine">';
+
+ echo '<br />'.$lang['srv_skupine_insert'].' '.Help::display('srv_skupine');
+
+ if($spr_id != 0){
+
+ // dodajanje skupin za anketo
+ $vrednosti = $this->getVrednosti($spr_id);
+ foreach($vrednosti as $vrednost){
+ echo '<p>';
+
+ echo '<strong>'.$vrednost['naslov'].'</strong>';
+
+ $link = $vrednost['url'];
+ if(isset($vrednost['nice_url']))
+ $link = $vrednost['nice_url'];
+ echo ' (<a href="'.$link.'" target="_blank" title="URL skupine '.$vrednost['naslov'].'">'.$link.'</a>)';
+
+ echo '<span class="faicon delete_circle icon-orange_link spaceLeft" style="margin-bottom:1px;" onclick="delete_skupina(\'1\', \''.$vrednost['id'].'\', \''.$vrednost['naslov'].'\');"></span>';
+
+ echo '</p>';
+ }
+ }
+
+ // Preverimo, ce je funkcionalnost v paketu, ki ga ima uporabnik - ce ni ni gumba za dodajanje skupin
+ if(!$userAccess->checkUserAccess($what='skupine')){
+ echo '<br />';
+ $userAccess->displayNoAccess($what='skupine');
+ }
+ else{
+ echo '<p class="add_skupina_button"><input type="text" name="skupina" autocomplete="off" onKeyUp="add_skupina_enter(\'1\', event);" /> <input type="button" value="'.$lang['add'].'" onclick="add_skupina(\'1\');" /></p>';
+ }
+
+ echo '</div>';
+ echo '</fieldset>';
+ }
+
+ /*
+ * Vrne id spremenljivke ce obstaja skupina
+ * param $skupine -> 1 navadne skupine, 2 -> password skupine
+ */
+ function hasSkupine($skupine=1){
+ global $global_user_id;
+
+ $sql = sisplet_query("SELECT s.id AS id FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='$this->anketa' AND s.skupine='$skupine'");
+
+ if(mysqli_num_rows($sql) > 0){
+ $row = mysqli_fetch_array($sql);
+ return $row['id'];
+ }
+ else
+ return 0;
+ }
+
+ function getVrednosti($spr_id){
+ global $global_user_id;
+ global $site_url;
+
+ $link = SurveyInfo::getSurveyLink();
+ $vrednosti = array();
+
+ $sqlS = sisplet_query("SELECT variable FROM srv_spremenljivka WHERE id='$spr_id'");
+ $rowS = mysqli_fetch_array($sqlS);
+ $variable = $rowS['variable'];
+
+ // Preverimo ce imamo lep url
+ $sql2 = sisplet_query("SELECT id FROM srv_nice_links WHERE ank_id='$this->anketa'");
+
+ $sql = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='$spr_id'");
+ if(mysqli_num_rows($sql) > 0){
+
+ $cnt = 0;
+ while($row = mysqli_fetch_array($sql)){
+ $vrednosti[$cnt] = $row;
+ $vrednosti[$cnt]['url'] = $link.'?'.$variable.'='.$row['id'];
+
+ // Ce imamo nice url za skupine ga tudi shranimo
+ if(mysqli_num_rows($sql2) > 0){
+
+ $sql3 = sisplet_query("SELECT link fROM srv_nice_links_skupine WHERE ank_id='$this->anketa' AND vre_id='$row[id]'");
+ if(mysqli_num_rows($sql3) > 0){
+ $row3 = mysqli_fetch_array($sql3);
+ $vrednosti[$cnt]['nice_url'] = $site_url.$row3['link'];
+ }
+ }
+
+ $cnt++;
+ }
+
+ return $vrednosti;
+ }
+ else
+ return 0;
+ }
+
+ // Vrnemo url za doloceno skupino
+ function getUrl($spr_id, $vre_id){
+ global $global_user_id;
+ global $site_url;
+
+ $link = SurveyInfo::getSurveyLink();
+
+ $sqlS = sisplet_query("SELECT variable FROM srv_spremenljivka WHERE id='$spr_id'");
+ $rowS = mysqli_fetch_array($sqlS);
+ $variable = $rowS['variable'];
+
+ $sql = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='$spr_id' AND id='$vre_id'");
+ if(mysqli_num_rows($sql) > 0){
+
+ $row = mysqli_fetch_array($sql);
+ $url = $link.'?'.$variable.'='.$row['id'];
+
+ // Ce imamo nice url za skupine ga tudi shranimo
+ $sql2 = sisplet_query("SELECT id FROM srv_nice_links WHERE ank_id='$this->anketa'");
+ if(mysqli_num_rows($sql2) > 0){
+
+ $sql3 = sisplet_query("SELECT link fROM srv_nice_links_skupine WHERE ank_id='$this->anketa' AND vre_id='$row[id]'");
+ if(mysqli_num_rows($sql3) > 0){
+ $row3 = mysqli_fetch_array($sql3);
+ $url = $site_url.$row3['link'];
+ }
+ }
+
+ return $url;
+ }
+ else
+ return '';
+ }
+
+
+ /** Funkcije ki skrbijo za ajax del
+ *
+ */
+ public function ajax() {
+ global $global_user_id;
+ global $lang;
+ global $site_path;
+
+ if (isset ($_POST['anketa'])) {
+ $anketa = $_POST['anketa'];
+ $this->anketa = $_POST['anketa'];
+ }
+
+ $spr_id = (isset($_POST['spr_id'])) ? $_POST['spr_id'] : 0;
+
+
+ if ($_GET['a'] == 'add_skupina') {
+
+ $skupine = (isset($_POST['skupine'])) ? $_POST['skupine'] : 1;
+ $variable = ($skupine == 2) ? 'password' : strtolower($lang['srv_skupina']);
+ $naslov = ($skupine == 2) ? 'Password' : $lang['srv_skupina'];
+ $naslov_vrednost = (isset($_POST['text'])) ? $_POST['text'] : '';
+
+ if($naslov_vrednost != ''){
+
+ // Dodatno preverimo ce sigurno nimamo skupine
+ if($spr_id == 0){
+ $spr_id = $this->hasSkupine($skupine);
+ }
+
+ // Na zacetku moramo ustvarit najprej vprasanje
+ if($spr_id == 0){
+
+ $sqlG = sisplet_query("SELECT id FROM srv_grupa WHERE ank_id='$this->anketa' AND vrstni_red='1'");
+ $rowG = mysqli_fetch_array($sqlG);
+ $gru_id = $rowG['id'];
+
+ $b = new Branching($this->anketa);
+ $spr_id = $b->nova_spremenljivka($grupa=$gru_id, $grupa_vrstni_red=1, $vrstni_red=0);
+
+ $sql = sisplet_query("UPDATE srv_spremenljivka SET naslov='$naslov', variable='$variable', variable_custom='1', skupine='$skupine', sistem='1', visible='0', size='0' WHERE id='$spr_id'");
+
+ Vprasanje::change_tip($spr_id, 1);
+ }
+
+
+ $v = new Vprasanje($this->anketa);
+ $v->spremenljivka = $spr_id;
+ $vre_id = $v->vrednost_new($naslov_vrednost);
+
+
+ // Ce gre za password ga dodamo
+ if($skupine == 2){
+ $s = sisplet_query("REPLACE INTO srv_password (ank_id, password) VALUES ('$this->anketa', '$naslov_vrednost')");
+ if (!$s) echo mysqli_error($GLOBALS['connect_db']);
+ }
+
+
+ // Preverimo ce imamo nice URL -> dodamo dodatnega za skupine
+ $sql = sisplet_query("SELECT id, link FROM srv_nice_links WHERE ank_id='$this->anketa'");
+ if($skupine == 1 && mysqli_num_rows($sql) > 0){
+
+ Common::updateEditStamp();
+
+ $row = mysqli_fetch_array($sql);
+
+ $add = false;
+
+ $anketa = $this->anketa;
+ $nice_url = $row['link'];
+
+ $sql2 = sisplet_query("SELECT vrstni_red FROM srv_vrednost WHERE id='$vre_id'");
+ $row2 = mysqli_fetch_array($sql2);
+ $nice_url .= '_'.$row2['vrstni_red'];
+
+ $f = @fopen($site_path.'.htaccess', 'rb');
+ if ($f !== false) {
+ $add = true;
+ while (!feof($f)) {
+ $r = fgets($f);
+ if (strpos($r, "^".$nice_url.'\b') !== false) { // preverimo, da ni tak redirect ze dodan
+ $add = false;
+ }
+ }
+ fclose($f);
+ }
+
+ if (strlen($nice_url) < 3) $add = false;
+
+ 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;
+
+ if ($add) {
+ $f = @fopen($site_path.'.htaccess', 'a');
+ if ($f !== false) {
+ fwrite($f, "\nRewriteRule ^".$nice_url.'\b(.*) '.$link."&foo=\$1&%{QUERY_STRING}");
+ fclose($f);
+
+ $sqlI = sisplet_query("INSERT INTO srv_nice_links_skupine (id,ank_id,nice_link_id,vre_id,link) VALUES ('','$this->anketa','$row[id]','$vre_id','$nice_url')");
+ }
+ }
+ }
+
+
+ // Vrnemo novo geslo, ki ga vstavimo v html
+ echo '<p>';
+
+ echo '<strong>'.$naslov_vrednost.'</strong>';
+ if($skupine == 1){
+ $link = $this->getUrl($spr_id, $vre_id);
+ echo ' (<a href="'.$link.'" target="_blank" title="URL skupine '.$naslov_vrednost.'">'.$link.'</a>)';
+ }
+
+ echo '<span class="faicon delete_circle icon-orange_link spaceLeft" style="margin-bottom:1px;" onclick="delete_skupina(\''.$skupine.'\', \''.$vre_id.'\', \''.$naslov_vrednost.'\');"></span>';
+
+ echo '</p>';
+ }
+ }
+
+ if ($_GET['a'] == 'delete_skupina') {
+
+ $skupine = (isset($_POST['skupine'])) ? $_POST['skupine'] : 1;
+ $vre_id = (isset($_POST['vre_id'])) ? $_POST['vre_id'] : 0;
+ $naslov = (isset($_POST['text'])) ? $_POST['text'] : '';
+
+ $sql2 = sisplet_query("SELECT vrstni_red FROM srv_vrednost WHERE id='$vre_id'");
+ $row2 = mysqli_fetch_array($sql2);
+ $index = $row2['vrstni_red'];
+
+ if($spr_id > 0){
+ $sql = sisplet_query("DELETE FROM srv_vrednost WHERE id='$vre_id' AND spr_id='$spr_id'");
+
+ // Ce smo pobrisali zadnjo vrednost pobrisemo tudi spremenljivko
+ $sql2 = sisplet_query("SELECT id FROM srv_vrednost WHERE spr_id='$spr_id'");
+ if(mysqli_num_rows($sql2) == 0){
+ $sql3 = sisplet_query("DELETE FROM srv_spremenljivka WHERE id='$spr_id'");
+ }
+ }
+
+ // Ce gre za password ga zbrisemo
+ if($skupine == 2){
+ $password = $_POST['text'];
+ if ($password != '') {
+ $s = sisplet_query("DELETE FROM srv_password WHERE ank_id='$this->anketa' AND password = '$password'");
+ if (!$s) echo mysqli_error($GLOBALS['connect_db']);
+ }
+ }
+
+ // Preverimo ce imamo nice URL -> pobrisemo dodatnega za skupine
+ $sql = sisplet_query("SELECT id, link FROM srv_nice_links WHERE ank_id='$this->anketa'");
+ if($skupine == 1 && mysqli_num_rows($sql) > 0){
+
+ Common::updateEditStamp();
+
+ $row = mysqli_fetch_array($sql);
+
+ $anketa = $this->anketa;
+ $nice_url = $row['link'].'_'.$index;
+
+ $f = fopen($site_path.'.htaccess', 'rb');
+ if ($f !== false) {
+ $output = array();
+ while (!feof($f)) {
+ $r = fgets($f);
+ if (strpos($r, "^".$nice_url.'\b(.*) ') !== false && strpos($r, "?anketa=".$anketa."&skupina=".$vre_id."") !== false) {
+ // kao pobrisemo vrstico in vnos v bazi
+ $sqlD = sisplet_query("DELETE FROM srv_nice_links_skupine WHERE ank_id='$anketa' AND nice_link_id='$row[id]' AND vre_id='$vre_id'");
+ }
+ else {
+ $output[] = $r;
+ }
+ }
+ fclose($f);
+ }
+
+ if (count($output) > 0) {
+
+ $f = fopen($site_path.'.htaccess', 'w');
+ if ($f !== false) {
+ foreach ($output AS $line) {
+ fwrite($f, $line);
+ }
+ fclose($f);
+ }
+ }
+ }
+ }
+
+
+ // Popup za masovno dodajanje gesel
+ if ($_GET['a'] == 'show_add_password_mass') {
+
+ // Naslov
+ echo '<h2>' . $lang['srv_password_add_mass'] . '</h2>';
+
+ echo '<div class="popup_close"><a href="#" onClick="popupImportAnketaFromText_close();">✕</a></div>';
+
+ echo '<p class="bold">' . $lang['srv_password_add_mass_instructions'] . '</p>';
+ //echo '<span class="italic">' . $lang['srv_password_add_mass_sample'] . '</span></p>';
+
+ echo '<textarea id="add_passwords_mass" name="add_passwords_mass" style="width:99%; height:300px; box-sizing:border-box; padding:5px;"></textarea>';
+
+ echo '<br /><br />';
+
+ echo '<span class="buttonwrapper floatRight"><a class="ovalbutton ovalbutton_orange" href="#" onClick="execute_add_passwords_mass();">'.$lang['srv_password_add_mass_execute'].'</a></span>';
+ echo '<span class="buttonwrapper floatRight spaceRight"><a class="ovalbutton ovalbutton_gray" href="#" onClick="popupImportAnketaFromText_close();">'.$lang['srv_zapri'].'</a></span>';
+ }
+
+ // Masovno dodajanje gesel
+ if ($_GET['a'] == 'add_password_mass') {
+
+ $skupine = 2;
+ $variable = 'password';
+ $naslov = 'Password';
+
+ $passwords = (isset($_POST['passwords'])) ? $_POST['passwords'] : '';
+
+ if($passwords != ''){
+
+ // Dodatno preverimo ce sigurno nimamo skupine
+ if($spr_id == 0){
+ $spr_id = $this->hasSkupine($skupine);
+ }
+
+ // Na zacetku moramo ustvarit najprej vprasanje
+ if($spr_id == 0){
+
+ $sqlG = sisplet_query("SELECT id FROM srv_grupa WHERE ank_id='$this->anketa' AND vrstni_red='1'");
+ $rowG = mysqli_fetch_array($sqlG);
+ $gru_id = $rowG['id'];
+
+ $b = new Branching($this->anketa);
+ $spr_id = $b->nova_spremenljivka($grupa=$gru_id, $grupa_vrstni_red=1, $vrstni_red=0);
+
+ $sql = sisplet_query("UPDATE srv_spremenljivka SET naslov='$naslov', variable='$variable', variable_custom='1', skupine='$skupine', sistem='1', visible='0', size='0' WHERE id='$spr_id'");
+
+ Vprasanje::change_tip($spr_id, 1);
+ }
+
+
+ $v = new Vprasanje($this->anketa);
+ $v->spremenljivka = $spr_id;
+
+
+ // Loop cez vsa gesla po vrsticah in jih dodamo
+ $passwords_array = explode("\\n", $passwords);
+ foreach($passwords_array as $password){
+
+ // Pocistimo vec presledkov in line breakov
+ $password = trim($password);
+ $password = preg_replace('/\s+/', ' ', $password);
+
+ if($password != ''){
+ $vre_id = $v->vrednost_new($password);
+
+ $s = sisplet_query("REPLACE INTO srv_password (ank_id, password) VALUES ('$this->anketa', '$password')");
+ if (!$s) echo mysqli_error($GLOBALS['connect_db']);
+ }
+ }
+ }
+ }
+ }
+}
+?> \ No newline at end of file