747 lines
30 KiB
PHP
747 lines
30 KiB
PHP
<?php
|
|
/***************************************
|
|
* Description: Notri so zbrane funkcije, ki jih večkrat lahko uporabimo v vseh razredih
|
|
* Autor: Robert Šmalc
|
|
* Created date: 29.01.2016
|
|
*****************************************/
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Controllers\CheckController as Check;
|
|
use App\Controllers\HelperController as Helper;
|
|
use App\Models\Model;
|
|
use Cache;
|
|
use Common;
|
|
use enkaParameters;
|
|
use Hierarhija\HierarhijaHelper;
|
|
use MailAdapter;
|
|
use SurveyInfo;
|
|
use SurveySetting;
|
|
use SurveyUnsubscribe;
|
|
use UserAccess;
|
|
|
|
class HelperController extends Controller
|
|
{
|
|
|
|
public function __construct()
|
|
{
|
|
parent::getGlobalVariables();
|
|
parent::getAllVariables();
|
|
}
|
|
|
|
/************************************************
|
|
* Get instance
|
|
************************************************/
|
|
private static $_instance;
|
|
|
|
public static function getInstance()
|
|
{
|
|
if (self::$_instance)
|
|
return self::$_instance;
|
|
|
|
return new HelperController();
|
|
}
|
|
|
|
/************************************************
|
|
* Detekcija za katere vrste naprave gre (mobilnik, tablica ali računalnik)
|
|
* 0 - računalnik oz. normalni pogled
|
|
* 1 - mobilnik
|
|
* 2 - tablica
|
|
* @param $_SERVER ['HTTP_USER_AGENT'];
|
|
* @return string
|
|
************************************************/
|
|
public static function mobile()
|
|
{
|
|
$detect = New \Mobile_Detect();
|
|
$mobile = 0; // 0 - klasicna, 1 - mobilna, 2 - dlancniki
|
|
$ismobile = 0;
|
|
|
|
// detektiramo, ce gre za mobilni aparat
|
|
if ($detect->isMobile())
|
|
$ismobile = 1;
|
|
|
|
if ($ismobile == 1) {
|
|
if ($detect->isTablet())
|
|
$mobile = 2;
|
|
else
|
|
$mobile = 1;
|
|
}
|
|
|
|
// prednost pa ima rocno izbrana opcija - ce je nastavljena
|
|
if (isset($_COOKIE['mobile'])) {
|
|
$c = (int)$_COOKIE['mobile'];
|
|
if ($c > 0)
|
|
$mobile = $mobile;
|
|
else
|
|
$mobile = 0;
|
|
}
|
|
|
|
// Ce smo slucajno v preview-ju preverimo kateri preview prikazemo
|
|
if (isset($_GET['preview']) && $_GET['preview'] == 'on') {
|
|
if (isset($_GET['mobile']) && $_GET['mobile'] == 1)
|
|
$mobile = 1;
|
|
elseif (isset($_GET['mobile']) && $_GET['mobile'] == 2)
|
|
$mobile = 2;
|
|
};
|
|
|
|
return $mobile;
|
|
}
|
|
|
|
/**
|
|
* @desc V podanem stringu poisce spremenljivke in jih spajpa z vrednostmi
|
|
*/
|
|
public static function dataPiping($text)
|
|
{
|
|
// V kolikor imamo vključen modul hierarhija potem uporabimo ustrezno pajpanje za hierarhijo
|
|
if (SurveyInfo::getInstance()->checkSurveyModule('hierarhija'))
|
|
return HierarhijaHelper::dataPiping($text, get('anketa'));
|
|
|
|
|
|
Common::getInstance()->Init(get('anketa'));
|
|
|
|
return Common::getInstance()->dataPiping($text, get('usr_id'), get('loop_id'), get('lang_id'));
|
|
|
|
}
|
|
|
|
/**
|
|
* vrne IP naslov (tudi ce gre preko proxyja)
|
|
*
|
|
*/
|
|
public static function remote_address()
|
|
{
|
|
return GetIP();
|
|
}
|
|
|
|
/************************************************
|
|
* Vrnemo ime ankete
|
|
*
|
|
* @param $show_page = 1 - ali prikažemo omenjen naslov na spletni strani
|
|
* @return string
|
|
************************************************/
|
|
public function displayAkronim($show_page = 1)
|
|
{
|
|
$row = SurveyInfo::getInstance()->getSurveyRow();
|
|
$srv_novaanketa_kratkoime = null;
|
|
|
|
SurveySetting::getInstance()->Init(get('anketa'));
|
|
$survey_hide_title = SurveySetting::getInstance()->getSurveyMiscSetting('survey_hide_title');
|
|
|
|
if ($survey_hide_title == 1 /*&& $row['survey_type'] != 0*/)
|
|
return;
|
|
|
|
if (get('lang_id') != null) {
|
|
if (get('lang_id') != null)
|
|
$_lang = '_' . get('lang_id');
|
|
else
|
|
$_lang = '';
|
|
|
|
$srv_novaanketa_kratkoime = SurveySetting::getInstance()->getSurveyMiscSetting('srvlang_srv_novaanketa_kratkoime' . $_lang);
|
|
}
|
|
|
|
if ($show_page == 1 && get('grupa') > 0) {
|
|
$sql1 = sisplet_query("SELECT naslov FROM srv_grupa WHERE id = '" . get('grupa') . "'");
|
|
$row1 = mysqli_fetch_array($sql1);
|
|
$grupa = '<span> - ' . $row1['naslov'] . '</span>';
|
|
} else $grupa = '';
|
|
|
|
if ($srv_novaanketa_kratkoime != '')
|
|
return $srv_novaanketa_kratkoime . $grupa;
|
|
else
|
|
return (($row['akronim'] == null || $row['akronim'] == '') ? $row['naslov'] . $grupa : $row['akronim'] . $grupa);
|
|
}
|
|
|
|
/**
|
|
* @desc vrne array vseh spremenljivk vgnezdenih v podanem ifu
|
|
*/
|
|
public static function getElements($if)
|
|
{
|
|
$elements = get('getElements');
|
|
$anketa = get('anketa');
|
|
|
|
if (array_key_exists($if, $elements)) {
|
|
return $elements[$if];
|
|
}
|
|
|
|
$array = array();
|
|
|
|
Cache::cache_all_srv_branching($anketa);
|
|
|
|
foreach (Cache::srv_branching_parent($anketa, $if) AS $k => $row) {
|
|
|
|
if ($row['element_spr'] > 0)
|
|
array_push($array, $row['element_spr']);
|
|
else
|
|
foreach (self::getElements($row['element_if']) AS $key)
|
|
array_push($array, $key);
|
|
|
|
}
|
|
|
|
return save('getElements[' . $if . ']', $array, 1);
|
|
}
|
|
|
|
/**
|
|
* @desc vrne ce obstaja parent z nastavitvijo horizontal pri blokih da prikazemo vprasanja vodoravno (horizontal==1) ali z razpiranjem (horizontal==2) ce je vklopljena nastavitev
|
|
*/
|
|
public static function checkParentHorizontal($element){
|
|
|
|
Cache::cache_all_srv_branching(get('anketa'));
|
|
|
|
$parent = $element['parent'];
|
|
|
|
$rowb = Cache::srv_if($element['element_if']);
|
|
if ($rowb['horizontal'] == 1 || $rowb['horizontal'] == 2) {
|
|
return $rowb['horizontal'];
|
|
}
|
|
elseif ($parent == 0) {
|
|
return false;
|
|
}
|
|
elseif ($parent == 0) {
|
|
return false;
|
|
}
|
|
else {
|
|
$row = Cache::srv_branching(0, $parent);
|
|
return self::checkParentHorizontal($row);
|
|
}
|
|
}
|
|
|
|
public static function getGrupa($spremenljivka)
|
|
{
|
|
$grupa = get('getGrupa');
|
|
|
|
if (array_key_exists($spremenljivka, $grupa))
|
|
return $grupa[$spremenljivka];
|
|
|
|
$row = Model::select_from_srv_spremenljivka($spremenljivka);
|
|
|
|
return save('getGrupa[' . $spremenljivka . ']', $row['gru_id'], 1);
|
|
}
|
|
|
|
public static function getDatepickerRange($spremenljivka, $date_element)
|
|
{
|
|
# po potrebi pripravimo datum range
|
|
$row = Cache::srv_spremenljivka($spremenljivka);
|
|
$newParams = new enkaParameters($row['params']);
|
|
$min = $newParams->get('date_range_min');
|
|
$max = $newParams->get('date_range_max');
|
|
$range_string = null;
|
|
|
|
# ce imamo spodnji range
|
|
$range = ($min != "") ? $min : '-80';
|
|
|
|
$range .= ':';
|
|
|
|
# ce imamo zgornji range - plus je potrebno dodat posebej
|
|
if ($max == "")
|
|
$range .= '+10';
|
|
else if ($max < 100)
|
|
$range .= '+' . $max;
|
|
else
|
|
$range .= $max;
|
|
|
|
# ce imamo nastavljen spodnji ali zgornji range
|
|
$range_string = "$( \"{$date_element}\" ).datepicker( \"option\", \"yearRange\", \"{$range}\" );";
|
|
|
|
// Ce ni danasnji dan v rangu -> moramo posebej nastavit trenutni datum (zaradi jquery buga)
|
|
if (substr($max, 0, 1) == '-' || substr($min, 0, 1) == '+') {
|
|
$date = '1.1.' . ((int)date("Y") + (int)$min);
|
|
$range_string .= "$( \"{$date_element}\" ).datepicker( \"option\", \"defaultDate\", \"{$date}\" );";
|
|
} elseif ($min > date("Y") || $max < date("Y")) {
|
|
$date = '1.1.' . $min;
|
|
$range_string .= "$( \"{$date_element}\" ).datepicker( \"option\", \"defaultDate\", \"{$date}\" );";
|
|
}
|
|
|
|
// dodamo se, da je prvi dan v tednu ponedeljek
|
|
$range_string .= "$( \"{$date_element}\" ).datepicker( \"option\", \"firstDay\", 1 );";
|
|
|
|
# nastavimo datumski range
|
|
echo $range_string;
|
|
}
|
|
|
|
public static function getCustomCheckbox()
|
|
{
|
|
|
|
//ID skin_profile
|
|
$skin_id = SurveyInfo::getInstance()->getSurveyRow()['skin_profile'];
|
|
|
|
//srv_theme_editor -> velikost PC/mobilne ikone
|
|
$type = 7;
|
|
|
|
if (get('mobile') > 0)
|
|
$type = 8; //če gre za mobilnik ali tablico potem pridobimo ustrezne ikone za tole
|
|
|
|
$sql = sisplet_query("SELECT value FROM srv_theme_editor WHERE profile_id = '$skin_id' AND id='7' AND type='$type'");
|
|
$row = mysqli_fetch_array($sql);
|
|
if (!$row || empty($row) || is_null($row))
|
|
return 0;
|
|
|
|
return $row['value']; //vrnemo velikost custom radio/checkboxa
|
|
}
|
|
|
|
/**
|
|
* @desc poslje alerte o izpolnjeni anketi
|
|
*/
|
|
public function alert()
|
|
{
|
|
global $site_path;
|
|
|
|
# kadar popravljamo obstoječe podatke ne pošiljamo več obvestil o končani anketi (Ajda)
|
|
if ($_GET['urejanje'] == 1) {
|
|
return;
|
|
}
|
|
|
|
// Ce smo v predogledu ali testiranju ne posiljamo obvestila
|
|
if ($_GET['preview'] == 'on') {
|
|
return;
|
|
}
|
|
|
|
// Preverimo ce imamo ustrezen paket kjer je na voljo obvescanje
|
|
$userAccess = UserAccess::getInstance(self::$global_user_id);
|
|
if (!$userAccess->checkUserAccess($what='alert')){
|
|
return;
|
|
}
|
|
|
|
$row = SurveyInfo::getInstance()->getSurveyRow();
|
|
|
|
$sqlAlert = sisplet_query("SELECT * FROM srv_alert WHERE ank_id = '" . get('anketa') . "'");
|
|
$rowAlert = mysqli_fetch_array($sqlAlert);
|
|
|
|
// array z emaili
|
|
$emails = array();
|
|
# TODO
|
|
# dodat tabelo, z emaili, za userje cms-ja če bi se želeli odjavit od obveščanja posamezne ankete
|
|
# ker sedaj nimamo povezave na njihov eemaile in se ne morejo odjaviti
|
|
# not bi blo fajn dat: anketa_id, email, code (kodo za preverjanje istovetnosti)
|
|
# in potem če klikne na link odjaviti in skopirati v tabelo: srv_survey_unsubscribe, da se uporabniku ne pošilja več
|
|
|
|
$ime = '';
|
|
|
|
// alert Avtorja in ostalih v dostopu
|
|
if ($rowAlert['finish_author'] == 1) {
|
|
$sqlInsertUID = Model::db_select_user($row['insert_uid']);
|
|
$rowInsertUID = mysqli_fetch_array($sqlInsertUID);
|
|
|
|
|
|
// polovimo se avtorje katerim je omogocen dostop in imajo nastavljeno da dobivajo obvestila - po novem med njimi ni nujno glavni avtor ankete
|
|
$sqlAlertAuthors = sisplet_query("SELECT u.email, u.id FROM users as u "
|
|
. " RIGHT JOIN (SELECT sd.uid, sd.alert_complete FROM srv_dostop as sd WHERE sd.ank_id='" . get('anketa') . "' AND sd.alert_complete = '1') AS dostop ON u.id = dostop.uid");
|
|
while ($rowAlertAuthors = mysqli_fetch_assoc($sqlAlertAuthors)) {
|
|
|
|
$sql1 = sisplet_query("SELECT alert_complete_if, uid AS id FROM srv_dostop WHERE ank_id='" . get('anketa') . "' AND uid='" . $rowAlertAuthors['id'] . "'");
|
|
$row1 = mysqli_fetch_array($sql1);
|
|
|
|
# kodo preberemo iz srv_users
|
|
$c2s = "SELECT SUBSTRING(cookie,1,6) FROM srv_user where ank_id ='" . get('anketa') . "' AND user_id = '" . $rowAlertAuthors['id'] . "'";
|
|
$c2q = sisplet_query($c2s);
|
|
list($c2) = mysqli_fetch_row($c2q);
|
|
# nastavimo password če še ni
|
|
$strSqlUpd = "UPDATE srv_user SET pass='$c2' WHERE ank_id ='" . get('anketa') . "' AND user_id = '" . $rowAlertAuthors['id'] . "' AND pass IS NULL";
|
|
$qrySqlUpd = sisplet_query($strSqlUpd);
|
|
|
|
// ce imamo if na posiljanje mailov
|
|
if ($row1['alert_complete_if'] > 0) {
|
|
if (Check::getInstance()->checkIf($row1['alert_complete_if'])) {
|
|
$emails[] = array('mail' => $rowAlertAuthors['email'], 'type' => 'author', 'uid' => $rowAlertAuthors['id']);
|
|
}
|
|
} else {
|
|
$emails[] = array('mail' => $rowAlertAuthors['email'], 'type' => 'author', 'uid' => $rowAlertAuthors['id']);
|
|
}
|
|
}
|
|
}
|
|
// alert respondenta (ki vpise svoj mail ob izpolnjevanju)
|
|
if ($rowAlert['finish_respondent'] == 1) {
|
|
// email
|
|
$sql1 = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.variable='email' AND s.gru_id=g.id AND g.ank_id='" . get('anketa') . "'");
|
|
if (!$sql1) echo mysqli_error($GLOBALS['connect_db']);
|
|
$row1 = mysqli_fetch_array($sql1);
|
|
|
|
$sql2 = sisplet_query("SELECT text FROM srv_data_text" . get('db_table') . " WHERE spr_id='$row1[id]' AND usr_id='" . get('usr_id') . "'");
|
|
$row2 = mysqli_fetch_array($sql2);
|
|
|
|
$sql11 = sisplet_query("SELECT finish_respondent_if FROM srv_alert WHERE ank_id='" . get('anketa') . "'");
|
|
$row11 = mysqli_fetch_array($sql11);
|
|
|
|
# kodo preberemo iz srv_users
|
|
$c2s = "SELECT SUBSTRING(cookie,1,6) FROM srv_user where ank_id ='" . get('anketa') . "' AND id = '" . get('usr_id') . "'";
|
|
$c2q = sisplet_query($c2s);
|
|
list($c2) = mysqli_fetch_row($c2q);
|
|
# nastavimo password če še ni
|
|
$strSqlUpd = "UPDATE srv_user SET pass='$c2' WHERE ank_id ='" . get('anketa') . "' AND id = '" . get('usr_id') . "' AND pass IS NULL";
|
|
$qrySqlUpd = sisplet_query($strSqlUpd);
|
|
|
|
// Ce resujemo anketo v drugem jeziku pogledamo ce imamo nastavljen custom mail za tuje jezike
|
|
$sql_ac = sisplet_query("SELECT * FROM srv_alert_custom WHERE ank_id='" . get('anketa') . "' AND type='respondent_lang_" . get('lang_id') . "' AND uid='0'");
|
|
if (mysqli_num_rows($sql_ac) > 0) {
|
|
$row_ac = mysqli_fetch_array($sql_ac);
|
|
$emails[] = array('mail' => $row2['text'], 'type' => $row_ac['type'], 'uid' => '0', 'code' => $c2);
|
|
} // ce imamo if na posiljanje mailov
|
|
elseif ($row11['finish_respondent_if'] > 0) {
|
|
if (Check::getInstance()->checkIf($row11['finish_respondent_if'])) {
|
|
$emails[] = array('mail' => $row2['text'], 'type' => 'respondent', 'uid' => '0', 'code' => $c2);
|
|
}
|
|
} else {
|
|
$emails[] = array('mail' => $row2['text'], 'type' => 'respondent', 'uid' => '0', 'code' => $c2);
|
|
}
|
|
|
|
// ime
|
|
$sql1 = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.variable='ime' AND s.gru_id=g.id AND g.ank_id='" . get('anketa') . "'");
|
|
if (!$sql1) echo mysqli_error($GLOBALS['connect_db']);
|
|
$row1 = mysqli_fetch_array($sql1);
|
|
|
|
$sql2 = sisplet_query("SELECT text FROM srv_data_text" . get('db_table') . " WHERE spr_id='$row1[id]' AND usr_id='" . get('usr_id') . "'");
|
|
$row2 = mysqli_fetch_array($sql2);
|
|
|
|
$ime = $row2['text'];
|
|
|
|
}
|
|
|
|
// alert respondenta prepoznanega iz sispleta
|
|
if ($rowAlert['finish_respondent_cms'] == 1) {
|
|
$sql1 = Model::db_select_user(self::$global_user_id);
|
|
$row1 = mysqli_fetch_array($sql1);
|
|
|
|
if ($row1['email'] != '') {
|
|
|
|
$sql11 = sisplet_query("SELECT finish_respondent_cms_if FROM srv_alert WHERE ank_id='" . get('anketa') . "'");
|
|
$row11 = mysqli_fetch_array($sql11);
|
|
|
|
# kodo preberemo iz srv_users
|
|
$c2s = "SELECT SUBSTRING(cookie,1,6) FROM srv_user where ank_id ='" . get('anketa') . "' AND user_id = '" . get('usr_id') . "'";
|
|
$c2q = sisplet_query($c2s);
|
|
list($c2) = mysqli_fetch_row($c2q);
|
|
|
|
$strSqlUpd = "UPDATE srv_user SET pass='$c2' WHERE ank_id ='" . get('anketa') . "' AND user_id = '" . get('usr_id') . "' AND pass IS NULL";
|
|
$qrySqlUpd = sisplet_query($strSqlUpd);
|
|
|
|
// ce imamo if na posiljanje mailov
|
|
if ($row11['finish_respondent_cms_if'] > 0) {
|
|
if (Check::getInstance()->checkIf($row11['finish_respondent_cms_if'])) {
|
|
$emails[] = array('mail' => $row1['email'], 'type' => 'respondent_cms', 'uid' => '0', 'code' => $c2);
|
|
}
|
|
} else {
|
|
$emails[] = array('mail' => $row1['email'], 'type' => 'respondent_cms', 'uid' => '0', 'code' => $c2);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// alert na ostale maile
|
|
if ($rowAlert['finish_other'] == 1) {
|
|
|
|
$email = explode("\n", str_replace("\r", "", str_replace(",", "\r\n", str_replace(" ", "", $rowAlert['finish_other_emails']))));
|
|
if (count($email) > 0)
|
|
foreach ($email AS $mail) {
|
|
|
|
$sql11 = sisplet_query("SELECT finish_other_if FROM srv_alert WHERE ank_id='" . get('anketa') . "'");
|
|
$row11 = mysqli_fetch_array($sql11);
|
|
|
|
// ce imamo if na posiljanje mailov
|
|
if ($row11['finish_other_if'] > 0) {
|
|
if (Check::getInstance()->checkIf($row11['finish_other_if'])) {
|
|
$emails[] = array('mail' => $mail, 'type' => 'other', 'uid' => '0');
|
|
}
|
|
} else {
|
|
$emails[] = array('mail' => $mail, 'type' => 'other', 'uid' => '0');
|
|
}
|
|
}
|
|
}
|
|
|
|
// sestavimo sporocilo
|
|
if ($row['finish_respondent_cms'] == 1) {
|
|
$sql1 = Model::db_select_user(self::$global_user_id);
|
|
$row1 = mysqli_fetch_array($sql1);
|
|
$ime = '' . $row1['name'] . ' ' . $row1['surname'];
|
|
}
|
|
|
|
# meta_url
|
|
$sql_meta_strings = "SELECT referer FROM srv_user where ank_id ='" . get('anketa') . "' AND id = '" . get('usr_id') . "'";
|
|
$sql_meta_query = sisplet_query($sql_meta_strings);
|
|
list($meta_url) = mysqli_fetch_row($sql_meta_query);
|
|
|
|
// Podpis
|
|
$signature = Common::getEmailSignature();
|
|
|
|
$text = ($rowAlert['finish_text'] == '') ? '[NAME] ' . self::$lang['srv_alert_msg'] . ' [SURVEY] [DATE] ("[URL]")'.$signature : $rowAlert['finish_text'];
|
|
$subject = ($rowAlert['finish_subject'] != '') ? $rowAlert['finish_subject'] : self::$lang['srv_alert_subject'];
|
|
|
|
$sqlu = sisplet_query("SELECT email FROM users WHERE id = '$row[insert_uid]'");
|
|
$rowu = mysqli_fetch_array($sqlu);
|
|
$MailReply = $rowu['email'];
|
|
|
|
if ($rowAlert['reply_to'] != '') $MailReply = $rowAlert['reply_to'];
|
|
|
|
// preprečimo večkratno pošiljanje na iste naslove
|
|
array_unique($emails);
|
|
|
|
# preverimo odjavljenost od prejemanja obvestil
|
|
$su = new SurveyUnsubscribe(get('anketa'));
|
|
|
|
// posljemo maile
|
|
foreach ($emails AS $mail_list) {
|
|
$mail = trim($mail_list['mail']);
|
|
$unsubscribed = $su->isUnsubscribedEmail($mail);
|
|
|
|
|
|
$pdf_url = self::$site_url . 'admin/survey/izvoz.php?dc=' . base64_encode(
|
|
serialize(
|
|
array('a' => 'pdf_results',
|
|
'anketa' => get('anketa'),
|
|
'usr_id' => get('usr_id'),
|
|
'type' => '0',
|
|
'pdf_usr_type' => $mail_list['type'],
|
|
'pdf_usr_id' => $mail_list['uid']
|
|
)));
|
|
|
|
$rtf_url = self::$site_url . 'admin/survey/izvoz.php?dc=' . base64_encode(
|
|
serialize(
|
|
array('a' => 'rtf_results',
|
|
'anketa' => get('anketa'),
|
|
'b' => 'export',
|
|
'usr_id' => get('usr_id'),
|
|
'pdf_usr_type' => $mail_list['type'],
|
|
'pdf_usr_id' => $mail_list['uid']
|
|
)));
|
|
|
|
|
|
if ($mail != '' && $unsubscribed == false && (strlen($mail) > 1)) {
|
|
|
|
$sql_ac = sisplet_query("SELECT subject, text FROM srv_alert_custom WHERE ank_id='" . get('anketa') . "' AND type='{$mail_list['type']}' AND uid='{$mail_list['uid']}'");
|
|
if (mysqli_num_rows($sql_ac) > 0) {
|
|
$row_ac = mysqli_fetch_array($sql_ac);
|
|
$s = $row_ac['subject'];
|
|
$t = $row_ac['text'];
|
|
} else {
|
|
$s = $subject;
|
|
$t = $text;
|
|
}
|
|
// naredimo še data piping za odgovore
|
|
$t = Helper::dataPiping($t);
|
|
|
|
#zamenjamo morebitne sistemske variable
|
|
$t = str_replace(
|
|
array('[NAME]',
|
|
'[SURVEY]',
|
|
'[DATE]',
|
|
'[SITE]',
|
|
'[URL]',
|
|
'[PDF]',
|
|
'[RTF]',
|
|
'[META_REFERER_URL]',
|
|
'[DURATION]'
|
|
),
|
|
array($ime,
|
|
$row['akronim'], #$row['naslov'],
|
|
date("d.m.Y, H:i:s"),
|
|
//'<a href="'.self::$site_url.'a/'.get('anketa').'">'.self::$site_url.'a/'.get('anketa').'</a>',
|
|
'<a href="' . SurveyInfo::getSurveyLink() . '">' . SurveyInfo::getSurveyLink() . '</a>',
|
|
'<a href="' . self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa') . '">' . self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa') . '</a>',
|
|
'<a href="' . $pdf_url . '">' . self::$lang['srv_alert_link_pdf'] . '</a>',
|
|
'<a href="' . $rtf_url . '">' . self::$lang['srv_alert_link_rtf'] . '</a>',
|
|
'<a href="' . $meta_url . '">' . $meta_url . '</a>',
|
|
'<a href="' . self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa') . '&a=trajanje">' . self::$lang['srv_activate_duration'] . '</a>'
|
|
),
|
|
$t);
|
|
|
|
$s = str_replace(
|
|
array('[NAME]',
|
|
'[SURVEY]',
|
|
'[DATE]',
|
|
'[SITE]',
|
|
'[URL]',
|
|
'[PDF]',
|
|
'[RTF]',
|
|
'[DURATION]'),
|
|
array($ime,
|
|
$row['naslov'],
|
|
date("d.m.Y, H:i:s"),
|
|
//self::$site_url.'a/'.get('anketa'),
|
|
SurveyInfo::getSurveyLink(),
|
|
self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa'),
|
|
'<a href="' . $pdf_url . '">' . self::$lang['srv_alert_link_pdf'] . '</a>',
|
|
'<a href="' . $rtf_url . '">' . self::$lang['srv_alert_link_rtf'] . '</a>',
|
|
'<a href="' . self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa') . '&a=trajanje">' . self::$lang['srv_activate_duration'] . '</a>'),
|
|
$s);
|
|
|
|
if ($mail_list['code'] == null || trim($mail_list['code']) == '') {
|
|
# v tabelo srv_survey_unsubscribe_codes dodamo email in kodo za možnost odjave od obveščanja
|
|
$uc = $su->generateCodeForEmail($mail);
|
|
$unsubscribe = self::$site_url . 'admin/survey/unsubscribe.php?anketa=' . get('anketa') . '&uc=' . $uc . '&em=' . base64_encode($mail);
|
|
} else {
|
|
$unsubscribe = self::$site_url . 'admin/survey/unsubscribe.php?anketa=' . get('anketa') . '&code=' . $mail_list['code'];
|
|
}
|
|
|
|
$t = str_replace(
|
|
array('#UNSUBSCRIBE#', '[UNSUBSCRIBE]'),
|
|
array('<a href="' . $unsubscribe . '">' . self::$lang['user_bye_hl'] . '</a>',
|
|
'<a href="' . $unsubscribe . '">' . self::$lang['user_bye_hl'] . '</a>',)
|
|
, $t);
|
|
|
|
|
|
try {
|
|
$MA = new MailAdapter(get('anketa'), $type='alert');
|
|
$MA->addRecipients($mail);
|
|
|
|
// Shranimo email from in reply to (da ju potem nazaj nastavimo - drugace povozimo nastavitve od vabil)
|
|
$mailFromBCK = $MA->getMailFrom();
|
|
$mailReplyToBCK = $MA->getMailReplyTo();
|
|
|
|
// Nastavimo na raziskave - obvescanje je iz raziskave@1ka.si ce se ni nastavljeno posebej v smtp nastavitvah
|
|
$MA->setMailReplyTo($MailReply);
|
|
if ($mailFromBCK == '' || $mailFromBCK == 'info@1ka.si')
|
|
$MA->setMailFrom('raziskave@1ka.si');
|
|
|
|
// Posljemo mail
|
|
$result = $MA->sendMail(stripslashes($t), $s);
|
|
|
|
// Nazaj nastavimo posiljatelja (za nastavitve v vabilih)
|
|
$MA->setMailReplyTo($mailReplyToBCK);
|
|
$MA->setMailFrom($mailFromBCK);
|
|
} catch (Exception $e) {
|
|
}
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @desc poslje alert o dosezeni kvoti za evoli - team meter
|
|
*/
|
|
public function alertTeamMeter()
|
|
{
|
|
global $site_path;
|
|
|
|
# kadar popravljamo obstoječe podatke ne pošiljamo več obvestil o končani anketi (Ajda)
|
|
if ($_GET['urejanje'] == 1) {
|
|
return;
|
|
}
|
|
|
|
// Ce smo v predogledu ali testiranju ne posiljamo obvestila
|
|
if ($_GET['preview'] == 'on') {
|
|
return;
|
|
}
|
|
|
|
|
|
// Preverimo ce smo dosegli kvoto
|
|
$sqlGroupTM = sisplet_query("SELECT d.vre_id FROM srv_data_vrednost_active d, srv_spremenljivka s, srv_grupa g
|
|
WHERE g.ank_id='" . get('anketa') . "' AND d.usr_id='" . get('usr_id') . "' AND s.skupine='1'
|
|
AND s.id=d.spr_id AND g.id=s.gru_id");
|
|
$rowGroupTM = mysqli_fetch_array($sqlGroupTM);
|
|
|
|
$sqlTM = sisplet_query("SELECT tm.*, v.vrstni_red AS skupina FROM srv_evoli_teammeter tm, srv_vrednost v
|
|
WHERE tm.ank_id='" . get('anketa') . "' AND tm.skupina_id='" . $rowGroupTM['vre_id'] . "' AND tm.skupina_id=v.id");
|
|
$rowTM = mysqli_fetch_array($sqlTM);
|
|
|
|
// Preverimo ce smo slucajno ze posiljali porocilo
|
|
$datum_posiljanja = $rowTM['datum_posiljanja'];
|
|
|
|
// Kvota je dosezena - POSLJEMO OBVESTILO
|
|
if ($rowTM['kvota_max'] == $rowTM['kvota_val'] && $datum_posiljanja == '0000-00-00 00:00:00') {
|
|
|
|
$row = SurveyInfo::getInstance()->getSurveyRow();
|
|
|
|
$sqlAlert = sisplet_query("SELECT * FROM srv_alert WHERE ank_id = '" . get('anketa') . "'");
|
|
$rowAlert = mysqli_fetch_array($sqlAlert);
|
|
|
|
// Podpis
|
|
$signature = Common::getEmailSignature();
|
|
|
|
$text = ($rowAlert['finish_text'] == '') ? '[NAME] ' . self::$lang['srv_alert_msg'] . ' [SURVEY] [DATE] ("[URL]")'.$signature : $rowAlert['finish_text'];
|
|
$subject = ($rowAlert['finish_subject'] != '') ? $rowAlert['finish_subject'] : self::$lang['srv_alert_subject'];
|
|
|
|
$MailReply = $rowTM['email'];
|
|
|
|
if ($rowAlert['reply_to'] != '') $MailReply = $rowAlert['reply_to'];
|
|
|
|
// Mail posljemo avtorju skupine (podjetja)
|
|
$mail = $rowTM['email'];
|
|
|
|
$pdf_url = self::$site_url . 'admin/survey/izvoz.php?dc=' . base64_encode(
|
|
serialize(
|
|
array('m' => 'pdf_teammeter',
|
|
'anketa' => get('anketa'),
|
|
'skupina' => $rowTM['skupina']
|
|
)));
|
|
|
|
if ($mail != '' && (strlen($mail) > 1)) {
|
|
|
|
$s = $subject;
|
|
$t = $text;
|
|
|
|
// naredimo še data piping za odgovore
|
|
$t = Helper::dataPiping($t);
|
|
|
|
#zamenjamo morebitne sistemske variable
|
|
$t = str_replace(
|
|
array(
|
|
'[NAME]',
|
|
'[SURVEY]',
|
|
'[DATE]',
|
|
'[SITE]',
|
|
'[URL]',
|
|
'[PDF]',
|
|
'[DURATION]'
|
|
),
|
|
array(
|
|
$ime,
|
|
$row['akronim'], #$row['naslov'],
|
|
date("d.m.Y, H:i:s"),
|
|
'<a href="' . SurveyInfo::getSurveyLink() . '">' . SurveyInfo::getSurveyLink() . '</a>',
|
|
'<a href="' . self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa') . '">' . self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa') . '</a>',
|
|
'<a href="' . $pdf_url . '">' . self::$lang['srv_alert_link_pdf'] . '</a>',
|
|
'<a href="' . self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa') . '&a=trajanje">' . self::$lang['srv_activate_duration'] . '</a>'
|
|
),
|
|
$t);
|
|
|
|
$s = str_replace(
|
|
array(
|
|
'[NAME]',
|
|
'[SURVEY]',
|
|
'[DATE]',
|
|
'[SITE]',
|
|
'[URL]',
|
|
'[PDF]',
|
|
'[DURATION]'
|
|
),
|
|
array(
|
|
$ime,
|
|
$row['naslov'],
|
|
date("d.m.Y, H:i:s"),
|
|
SurveyInfo::getSurveyLink(),
|
|
self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa'),
|
|
'<a href="' . $pdf_url . '">' . self::$lang['srv_alert_link_pdf'] . '</a>',
|
|
'<a href="' . self::$site_url . 'admin/survey/index.php?anketa=' . get('anketa') . '&a=trajanje">' . self::$lang['srv_activate_duration'] . '</a>'
|
|
),
|
|
$s);
|
|
|
|
try {
|
|
$MA = new MailAdapter(get('anketa'), $type='alert');
|
|
$MA->addRecipients($mail);
|
|
|
|
// Shranimo email from in reply to (da ju potem nazaj nastavimo - drugace povozimo nastavitve od vabil)
|
|
$mailFromBCK = $MA->getMailFrom();
|
|
$mailReplyToBCK = $MA->getMailReplyTo();
|
|
|
|
// Nastavimo na raziskave - obvescanje je iz raziskave@1ka.si ce se ni nastavljeno posebej v smtp nastavitvah
|
|
$MA->setMailReplyTo($MailReply);
|
|
if ($mailFromBCK == '' || $mailFromBCK == 'info@1ka.si')
|
|
$MA->setMailFrom('raziskave@1ka.si');
|
|
|
|
// Posljemo mail
|
|
$result = $MA->sendMail(stripslashes($t), $s);
|
|
|
|
// Nazaj nastavimo posiljatelja (za nastavitve v vabilih)
|
|
$MA->setMailReplyTo($mailReplyToBCK);
|
|
$MA->setMailFrom($mailFromBCK);
|
|
}
|
|
catch (Exception $e) {
|
|
}
|
|
|
|
// Updatamo timestamp posiljanja
|
|
$sql = sisplet_query("UPDATE srv_evoli_teammeter SET datum_posiljanja=NOW() WHERE id='".$rowTM['id']."'");
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
} |