312 lines
13 KiB
PHP
312 lines
13 KiB
PHP
<?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 8h zjutraj?
|
|
- se lahko zacne sekvenca na npr. 2. anketi (oz. se preskoci anketo 2...?)
|
|
|
|
- besedilo opomnika, ki se posilja v mailu?
|
|
- status "koncano" - mora respondent prikilkati do konca ankete? Drugace ne moremo posiljati opomnika.
|
|
- smtp??
|
|
|
|
*/
|
|
|
|
|
|
class Kolektor {
|
|
|
|
|
|
// Statusi responsa
|
|
private $statuses = array(
|
|
1 => 'proženo',
|
|
2 => 'opozorilo 1',
|
|
3 => 'opozorilo 3',
|
|
4 => 'neodgovorjeno',
|
|
5 => 'končano'
|
|
);
|
|
|
|
|
|
function __construct(){
|
|
global $site_url;
|
|
global $lang;
|
|
|
|
echo '<script src="'.$site_url.'admin/survey/modules/mod_KOLEKTOR/script/script.js" type="text/javascript"></script>';
|
|
}
|
|
|
|
|
|
private function getResponses(){
|
|
global $global_user_id;
|
|
global $admin_type;
|
|
|
|
$data = array();
|
|
|
|
// Admini vidijo vse reposnse
|
|
if($admin_type == '0'){
|
|
$sql = sisplet_query("SELECT sr.*, s.survey_sequence
|
|
FROM kolektor_survey s, kolektor_survey_response sr
|
|
WHERE s.ank_id=sr.ank_id
|
|
ORDER BY sr.insert_time DESC
|
|
");
|
|
|
|
while($row = mysqli_fetch_array($sql)){
|
|
$data[$row['id']] = $row;
|
|
}
|
|
}
|
|
else{
|
|
// 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
|
|
ORDER BY sr.insert_time DESC
|
|
");
|
|
|
|
while($row = mysqli_fetch_array($sql)){
|
|
$data[$row['id']] = $row;
|
|
}
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
private function getSurveys(){
|
|
|
|
$data = array();
|
|
|
|
$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");
|
|
|
|
while($row = mysqli_fetch_array($sql)){
|
|
$data[$row['ank_id']] = $row;
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
|
|
// Osnovni pogled
|
|
public function display(){
|
|
global $site_url;
|
|
global $lang;
|
|
|
|
echo '<button class="large blue kolektor_create_response" onClick="kolektorCreateResponsePopup();">Proži novo anketo</button>';
|
|
|
|
echo '<div id="kolektor_reponses_holder">';
|
|
$this->displayResponses();
|
|
echo '</div>';
|
|
}
|
|
|
|
|
|
public function displayResponses(){
|
|
global $site_url;
|
|
|
|
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>Odgovori</th>';
|
|
echo ' <th>Opomnik</th>';
|
|
echo ' </tr>';
|
|
|
|
// Loop cez vse stranke
|
|
$responses = $this->getResponses();
|
|
$surveys = $this->getSurveys();
|
|
foreach($responses as $response_id => $response){
|
|
|
|
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>'.$this->statuses[$response['status']].'</td>';
|
|
echo ' <td><a href="'.$site_url.'admin/survey/index.php?anketa='.$response['ank_id'].'&a=data">Preglej odgovore</a></td>';
|
|
echo ' <td>Pošlji opomnik</td>'; // TODO
|
|
echo ' </tr>';
|
|
}
|
|
|
|
echo ' </table>';
|
|
}
|
|
|
|
// Prikaze formo za dodajanje novega responsa
|
|
public function displayAddResponse($data=array(), $error=array()){
|
|
|
|
echo '<div class="popup_close"><a href="#" onclick="kolektorCreateResponseClose();">✕</a></div>';
|
|
|
|
echo '<h2>Dodajanje novega respondenta</h2>';
|
|
|
|
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:';
|
|
|
|
echo '<ul>';
|
|
foreach($error as $error_msg){
|
|
echo '<li class="error_message">'.$error_msg.'</li>';
|
|
}
|
|
echo '</ul>';
|
|
|
|
echo '</div>';
|
|
}
|
|
|
|
|
|
// Seznam 6 kolektor anket
|
|
echo '<div class="kolektor_setting '.(isset($error['ank_id']) ? 'error' : '').'">';
|
|
echo ' <div class="setting_line">Anketa:</div>';
|
|
$surveys = $this->getSurveys();
|
|
$sequence = 0;
|
|
foreach($surveys as $kolektor_survey){
|
|
echo '<div class="setting_line">';
|
|
echo ' <input type="radio" id="kolektor_survey_'.$kolektor_survey['survey_sequence'].'" name="kolektor_survey" sequence="'.$kolektor_survey['survey_sequence'].'" value="'.$kolektor_survey['ank_id'].'" '.($data['ank_id'] == $kolektor_survey['ank_id'] ? 'checked="checked"' : '').' onChange="kolektorSelectSurvey();">';
|
|
echo ' <label for="kolektor_survey_'.$kolektor_survey['survey_sequence'].'">'.$kolektor_survey['survey_sequence'].' - '.$kolektor_survey['naslov'].'</label>';
|
|
echo '</div>';
|
|
|
|
if($data['ank_id'] == $kolektor_survey['ank_id'])
|
|
$sequence = $kolektor_survey['survey_sequence'];
|
|
}
|
|
echo '</div>';
|
|
|
|
|
|
echo '<div id="kolektor_respondent_settings" '.(($sequence == 0) ? 'style="display:none;"' : '').'>';
|
|
|
|
// ID projekta
|
|
echo '<div class="kolektor_setting '.(isset($error['respondent_projekt_id']) ? 'error' : '').'">';
|
|
echo ' <div class="setting_line">ID projekta:</div>';
|
|
echo ' <input type="text" class="medium" name="respondent_projekt_id" value="'.$data['respondent_projekt_id'].'">';
|
|
echo '</div>';
|
|
|
|
|
|
// Email
|
|
echo '<div class="kolektor_setting '.(isset($error['respondent_email']) ? 'error' : '').'">';
|
|
echo ' <div class="setting_line">Email respondenta:</div>';
|
|
echo ' <input type="text" class="medium" name="respondent_email" value="'.$data['respondent_email'].'">';
|
|
echo '</div>';
|
|
|
|
|
|
// Funkcija respondenta
|
|
$standard_functions = array('Vodja nabave', 'Vodja projekta', 'Skrbnik pogodbe', 'Nadzornik objekta', 'Član inženirskega tima');
|
|
$other_function = (isset($data['respondent_funkcija']) && $data['respondent_funkcija'] != '' && !in_array($data['respondent_funkcija'], $standard_functions)) ? true : false;
|
|
|
|
echo '<div class="kolektor_setting '.(isset($error['respondent_funkcija']) ? 'error' : '').'">';
|
|
|
|
echo ' <div class="setting_line">Funkcija respondenta v podjetju:</div>';
|
|
echo ' <select name="respondent_funkcija" id="respondent_funkcija_dropdown" class="dropdown medium" '.($other_function ? 'disabled="disabled"' : '').'>';
|
|
foreach($standard_functions as $standard_function){
|
|
echo ' <option value="'.$standard_function.'" '.($data['respondent_funkcija'] == $standard_function ? 'selected="selected"' : '').'>'.$standard_function.'</option>';
|
|
}
|
|
echo ' </select>';
|
|
|
|
echo ' <div class="setting_line"><input type="checkbox" id="respondent_funkcija_other" onClick="kolektorOtherFunction();" '.($other_function ? 'checked="checked"' : '').'><label for="respondent_funkcija_other">Druga funkcija</label></div>';
|
|
echo ' <input type="text" class="medium" name="respondent_funkcija" id="respondent_funkcija_text" '.($other_function ? 'value="'.$data['respondent_funkcija'].'"' : 'style="display:none;" disabled="disabled"').'>';
|
|
|
|
echo '</div>';
|
|
|
|
|
|
// Aktivacija na daljavo - samo za anketi 5 in 6
|
|
echo '<div id="kolektor_setting_activation" class="kolektor_setting '.(isset($error['respondent_remote_activation']) ? 'error' : '').'" '.(($sequence == '5' || $sequence == '6') ? '' : 'style="display:none;"').'>';
|
|
echo ' <div class="setting_line">Aktivacija na daljavo:</div>';
|
|
echo ' <div class="setting_line"><input type="radio" id="respondent_remote_activation_0" name="respondent_remote_activation" value="0" '.($data['respondent_remote_activation'] != '1' ? 'checked="checked"' : '').' '.(($sequence == '5' || $sequence == '6') ? '' : 'disabled="disabled"').'><label for="respondent_remote_activation_0">Ne</label></div>';
|
|
echo ' <div class="setting_line"><input type="radio" id="respondent_remote_activation_1" name="respondent_remote_activation" value="1" '.($data['respondent_remote_activation'] == '1' ? 'checked="checked"' : '').' '.(($sequence == '5' || $sequence == '6') ? '' : 'disabled="disabled"').'><label for="respondent_remote_activation_1">Da</label></div>';
|
|
echo '</div>';
|
|
|
|
|
|
// Sporocilo respondentu
|
|
$text = 'Pozdravljeni, Prosimo vas, če lahko izpolnite anketo. Povezava do ankete: #URL# Lep pozdrav, Kolektor ETRA';
|
|
|
|
echo '<div class="kolektor_setting '.(isset($error['respondent_message']) ? 'error' : '').'">';
|
|
echo ' <div class="setting_line">Spremno besedilo:</div>';
|
|
echo ' <textarea name="respondent_message">'.(isset($data['respondent_message']) && $data['respondent_message'] != '' ? $data['respondent_message'] : $text).'</textarea>';
|
|
echo '</div>';
|
|
|
|
|
|
echo '</div>';
|
|
|
|
|
|
// Gumbi
|
|
echo '<div class="button_holder">';
|
|
echo ' <button class="medium white-blue" type="button" onClick="kolektorCreateResponseClose();">Zapri</button>';
|
|
echo ' <button class="medium blue" type="button" onClick="kolektorCreateResponse();">Sproži anketo in pošlji email respondentu</button>';
|
|
echo '</div>';
|
|
|
|
|
|
echo '</form>';
|
|
}
|
|
|
|
public function displayResponseDetails(){
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
// Ajax klici
|
|
public function ajax(){
|
|
global $lang;
|
|
global $site_path;
|
|
global $global_user_id;
|
|
|
|
|
|
if($_GET['a'] == 'add_repsonse_popup'){
|
|
|
|
echo '<div id="kolektor_add_response">';
|
|
$this->displayAddResponse();
|
|
echo '</div>';
|
|
}
|
|
elseif($_GET['a'] == 'add_repsonse'){
|
|
|
|
$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'] == '' && isset($_POST['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);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
?>
|