2022-07-06 12:37:25 +02:00
< ? php
/*
VPRASANJA
- lahko razlicni userji aktivirajo razlicne faze iste stranke ? Potem vidjo vse ankete te stranke ?
- kaj povezuje ankete stranke - porjekt id ? potem se ga vnese samo pri prvi anketi
- je lahko vec faz istocasno aktivnih ( npr . anketa 1 in anketa 2 ) ?
- kdaj se poslje sporocilo ? ob 8 h zjutraj ?
- se lahko zacne sekvenca na npr . 2. anketi ( oz . se preskoci anketo 2. .. ? )
*/
class Kolektor {
function __construct (){
global $site_url ;
global $lang ;
2022-07-25 12:21:16 +02:00
echo '<script src="' . $site_url . 'admin/survey/modules/mod_KOLEKTOR/script/script.js" type="text/javascript"></script>' ;
2022-07-06 12:37:25 +02:00
}
2022-07-25 12:21:16 +02:00
private function getResponses (){
2022-07-06 12:37:25 +02:00
global $global_user_id ;
global $admin_type ;
2022-07-25 12:21:16 +02:00
$data = array ();
// Admini vidijo vse reposnse
2022-07-06 12:37:25 +02:00
if ( $admin_type == '0' ){
2022-07-25 12:21:16 +02:00
$sql = sisplet_query ( " SELECT sr.*, s.survey_sequence
FROM kolektor_survey s , kolektor_survey_response sr
WHERE s . ank_id = sr . ank_id
2022-07-26 10:14:04 +02:00
ORDER BY sr . insert_time DESC
2022-07-25 12:21:16 +02:00
" );
2022-07-06 12:37:25 +02:00
while ( $row = mysqli_fetch_array ( $sql )){
2022-07-25 12:21:16 +02:00
$data [ $row [ 'id' ]] = $row ;
2022-07-06 12:37:25 +02:00
}
}
else {
2022-07-25 12:21:16 +02:00
// Uporabnik vidi samo svoje reponse
$sql = sisplet_query ( " SELECT sr.*, s.survey_sequence
FROM kolektor_survey s , kolektor_survey_response sr
WHERE sr . usr_id = '".$global_user_id."' AND s . ank_id = sr . ank_id
2022-07-26 10:14:04 +02:00
ORDER BY sr . insert_time DESC
2022-07-25 12:21:16 +02:00
" );
2022-07-06 12:37:25 +02:00
while ( $row = mysqli_fetch_array ( $sql )){
2022-07-25 12:21:16 +02:00
$data [ $row [ 'id' ]] = $row ;
2022-07-06 12:37:25 +02:00
}
}
2022-07-25 12:21:16 +02:00
return $data ;
}
private function getSurveys (){
$data = array ();
2022-07-26 10:14:04 +02:00
$sql = sisplet_query ( " SELECT ks.*, a.hash, a.naslov, a.akronim FROM kolektor_survey ks, srv_anketa a WHERE a.id=ks.ank_id ORDER BY ks.survey_sequence ASC " );
2022-07-25 12:21:16 +02:00
while ( $row = mysqli_fetch_array ( $sql )){
2022-07-26 10:14:04 +02:00
$data [ $row [ 'ank_id' ]] = $row ;
2022-07-25 12:21:16 +02:00
}
return $data ;
2022-07-06 12:37:25 +02:00
}
// Osnovni pogled
public function display (){
2022-07-25 12:21:16 +02:00
global $site_url ;
global $lang ;
2022-07-06 12:37:25 +02:00
2022-07-26 10:14:04 +02:00
echo '<button class="medium blue" onClick="createKolektorResponsePopup();">Proži novo anketo</button>' ;
2022-07-25 12:21:16 +02:00
2022-07-26 10:14:04 +02:00
echo '<div id="kolektor_reponses_holder">' ;
2022-07-25 12:21:16 +02:00
$this -> displayResponses ();
2022-07-26 10:14:04 +02:00
echo '</div>' ;
2022-07-06 12:37:25 +02:00
}
2022-07-25 12:21:16 +02:00
public function displayResponses (){
2022-07-13 10:40:19 +02:00
2022-07-26 10:14:04 +02:00
echo ' <table class="kolektor_reponses">' ;
echo ' <tr>' ;
echo ' <th>Anketa</th>' ;
echo ' <th>ID projekta</th>' ;
echo ' <th>Email respondenta</th>' ;
echo ' <th>Funkcija respondenta</th>' ;
echo ' <th>Čas proženja</th>' ;
echo ' <th>Status</th>' ;
echo ' <th></th>' ;
echo ' </tr>' ;
2022-07-13 10:40:19 +02:00
// Loop cez vse stranke
2022-07-25 12:21:16 +02:00
$responses = $this -> getResponses ();
2022-07-26 10:14:04 +02:00
$surveys = $this -> getSurveys ();
foreach ( $responses as $response_id => $response ){
2022-07-13 10:40:19 +02:00
2022-07-26 10:14:04 +02:00
echo ' <tr class="kolektor_response">' ;
echo ' <td>' . $surveys [ $response [ 'ank_id' ]][ 'naslov' ] . '</td>' ;
echo ' <td>' . $response [ 'respondent_projekt_id' ] . '</td>' ;
echo ' <td>' . $response [ 'respondent_email' ] . '</td>' ;
echo ' <td>' . $response [ 'respondent_funkcija' ] . '</td>' ;
echo ' <td>' . date ( 'j.n.Y H:i:s' , strtotime ( $response [ 'insert_time' ])) . '</td>' ;
echo ' <td>' . $response [ 'status' ] . '</td>' ;
echo ' <td>Pošlji opomnik</td>' ;
echo ' </tr>' ;
2022-07-13 10:40:19 +02:00
}
2022-07-26 10:14:04 +02:00
echo ' </table>' ;
2022-07-06 12:37:25 +02:00
}
2022-07-06 13:37:06 +02:00
// Prikaze formo za dodajanje novega responsa
2022-07-25 12:21:16 +02:00
public function displayAddResponse ( $data = array (), $error = array ()){
2022-07-26 10:14:04 +02:00
echo '<div class="popup_close"><a href="#" onclick="createKolektorResponseClose();">✕</a></div>' ;
echo '<h2>Dodajanje novega respondenta</h2>' ;
2022-07-25 12:21:16 +02:00
echo '<form id="kolektor_add_response_form" name="kolektor_add_response_form">' ;
// Izpisemo napake, ce kaksno polje manjka
if ( ! empty ( $error )){
echo '<div class="error_messages">' ;
echo 'Prosimo izpolnite vsa obvezna polja:' ;
foreach ( $error as $error_msg ){
echo '<div class="error_message">' . $error_msg . '</div>' ;
}
echo '</div>' ;
}
// Seznam 6 kolektor anket
echo '<div class="kolektor_setting ' . ( isset ( $error [ 'ank_id' ]) ? 'error' : '' ) . '">' ;
$surveys = $this -> getSurveys ();
foreach ( $surveys as $kolektor_survey ){
echo ' <input type="radio" id="kolektor_survey_' . $kolektor_survey [ 'survey_sequence' ] . '" name="kolektor_survey" value="' . $kolektor_survey [ 'ank_id' ] . '" ' . ( $data [ 'ank_id' ] == $kolektor_survey [ 'ank_id' ] ? 'checked="checked"' : '' ) . '>' ;
echo ' <label for="kolektor_survey_' . $kolektor_survey [ 'survey_sequence' ] . '">' . $kolektor_survey [ 'survey_sequence' ] . ' - ' . $kolektor_survey [ 'naslov' ] . '</label>' ;
}
echo '</div>' ;
2022-07-06 12:37:25 +02:00
2022-07-25 12:21:16 +02:00
// ID projekta
echo '<div class="kolektor_setting ' . ( isset ( $error [ 'respondent_projekt_id' ]) ? 'error' : '' ) . '">' ;
echo ' ID projekta: <input type="text" name="respondent_projekt_id" value="' . $data [ 'respondent_projekt_id' ] . '">' ;
echo '</div>' ;
// Email
echo '<div class="kolektor_setting ' . ( isset ( $error [ 'respondent_email' ]) ? 'error' : '' ) . '">' ;
echo ' Email respondenta: <input type="text" name="respondent_email" value="' . $data [ 'respondent_email' ] . '">' ;
echo '</div>' ;
// Funkcija respondenta
echo '<div class="kolektor_setting ' . ( isset ( $error [ 'respondent_funkcija' ]) ? 'error' : '' ) . '">' ;
echo ' Funkcija respondenta v podjetju: ' ;
echo ' <select name="respondent_funkcija">' ;
echo ' <option value="Vodja nabave" ' . ( $data [ 'respondent_funkcija' ] == 'Vodja nabave' ? 'selected="selected"' : '' ) . '>Vodja nabave</option>' ;
echo ' <option value="Vodja projekta" ' . ( $data [ 'respondent_funkcija' ] == 'Vodja projekta' ? 'selected="selected"' : '' ) . '>Vodja projekta</option>' ;
echo ' <option value="Skrbnik pogodbe" ' . ( $data [ 'respondent_funkcija' ] == 'Skrbnik pogodbe' ? 'selected="selected"' : '' ) . '>Skrbnik pogodbe</option>' ;
echo ' <option value="Nadzornik objekta" ' . ( $data [ 'respondent_funkcija' ] == 'Nadzornik objekta' ? 'selected="selected"' : '' ) . '>Nadzornik objekta</option>' ;
echo ' <option value="Član inženirskega tima" ' . ( $data [ 'respondent_funkcija' ] == 'Član inženirskega tima' ? 'selected="selected"' : '' ) . '>Član inženirskega tima</option>' ;
echo ' </select>' ;
echo '</div>' ;
// Aktivacija na daljavo - samo za anketi 5 in 6
if ( true ){
echo '<div class="kolektor_setting ' . ( isset ( $error [ 'respondent_remote_activation' ]) ? 'error' : '' ) . '">' ;
echo ' Aktivacija na daljavo:' ;
echo ' <input type="radio" id="respondent_remote_activation_0" name="respondent_remote_activation" value="0" ' . ( $data [ 'respondent_remote_activation' ] == '0' ? 'checked="checked"' : '' ) . '><label for="respondent_remote_activation_0">Ne</label>' ;
echo ' <input type="radio" id="respondent_remote_activation_1" name="respondent_remote_activation" value="1" ' . ( $data [ 'respondent_remote_activation' ] == '1' ? 'checked="checked"' : '' ) . '><label for="respondent_remote_activation_1">Da</label>' ;
echo '</div>' ;
}
// Sporocilo respondentu
echo '<div class="kolektor_setting ' . ( isset ( $error [ 'respondent_message' ]) ? 'error' : '' ) . '">' ;
echo ' Spremno besedilo: <textarea name="respondent_message">' . $data [ 'respondent_message' ] . '</textarea>' ;
echo '</div>' ;
2022-07-26 10:14:04 +02:00
// Gumbi
echo '<div class="button_holder">' ;
echo ' <button class="medium white-blue" type="button" onClick="createKolektorResponseClose();">Zapri</button>' ;
echo ' <button class="medium blue" type="button" onClick="createKolektorResponse();">Sproži anketo in pošlji email respondentu</button>' ;
echo '</div>' ;
2022-07-06 12:37:25 +02:00
2022-07-25 12:21:16 +02:00
echo '</form>' ;
2022-07-06 12:37:25 +02:00
}
2022-07-06 13:37:06 +02:00
public function displayResponseDetails (){
2022-07-06 12:37:25 +02:00
2022-07-25 12:21:16 +02:00
}
// Ajax klici
public function ajax (){
global $lang ;
global $site_path ;
global $global_user_id ;
2022-07-26 10:14:04 +02:00
if ( $_GET [ 'a' ] == 'add_repsonse_popup' ){
echo '<div id="kolektor_add_response">' ;
$this -> displayAddResponse ();
echo '</div>' ;
}
elseif ( $_GET [ 'a' ] == 'add_repsonse' ){
2022-07-25 12:21:16 +02:00
$response_data [ 'ank_id' ] = ( isset ( $_POST [ 'kolektor_survey' ])) ? $_POST [ 'kolektor_survey' ] : '' ;
$response_data [ 'respondent_email' ] = ( isset ( $_POST [ 'respondent_email' ])) ? $_POST [ 'respondent_email' ] : '' ;
$response_data [ 'respondent_funkcija' ] = ( isset ( $_POST [ 'respondent_funkcija' ])) ? $_POST [ 'respondent_funkcija' ] : '' ;
$response_data [ 'respondent_projekt_id' ] = ( isset ( $_POST [ 'respondent_projekt_id' ])) ? $_POST [ 'respondent_projekt_id' ] : '' ;
$response_data [ 'respondent_remote_activation' ] = ( isset ( $_POST [ 'respondent_remote_activation' ])) ? $_POST [ 'respondent_remote_activation' ] : '' ;
$response_data [ 'respondent_message' ] = ( isset ( $_POST [ 'respondent_message' ])) ? $_POST [ 'respondent_message' ] : '' ;
// Pohendlamo errorje
$error = array ();
if ( $response_data [ 'ank_id' ] == '' ){
$error [ 'ank_id' ] = 'Izberite anketo.' ;
}
if ( $response_data [ 'respondent_email' ] == '' ){
$error [ 'respondent_email' ] = 'Vnesite email respondenta.' ;
}
if ( $response_data [ 'respondent_funkcija' ] == '' ){
$error [ 'respondent_funkcija' ] = 'Vnesite funkcijo respondenta.' ;
}
if ( $response_data [ 'respondent_projekt_id' ] == '' ){
$error [ 'respondent_projekt_id' ] = 'Vnesite ID projekta oz. krovnega projekta.' ;
}
if ( $response_data [ 'respondent_remote_activation' ] == '' ){
$error [ 'respondent_remote_activation' ] = 'Izberite, če gre za aktivacijo na daljavo.' ;
}
if ( $response_data [ 'respondent_message' ] == '' ){
$error [ 'respondent_message' ] = 'Vnesite spremno besedilo.' ;
}
// Imamo napake
if ( ! empty ( $error )){
$this -> displayAddResponse ( $response_data , $error );
}
else {
// Dodamo nov response
KolektorResponse :: addResponse ( $response_data );
}
}
2022-07-06 12:37:25 +02:00
}
}
?>