diff options
Diffstat (limited to 'main/survey/app/Controllers/HelperController.php')
-rw-r--r-- | main/survey/app/Controllers/HelperController.php | 747 |
1 files changed, 747 insertions, 0 deletions
diff --git a/main/survey/app/Controllers/HelperController.php b/main/survey/app/Controllers/HelperController.php new file mode 100644 index 0000000..58e6784 --- /dev/null +++ b/main/survey/app/Controllers/HelperController.php @@ -0,0 +1,747 @@ +<?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;
+ }
+}
\ No newline at end of file |