2020-08-14 13:36:36 +02:00
< ? 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' ),
2021-07-06 08:29:06 +02:00
'skupina' => $rowTM [ 'skupina' ],
'lang_id' => $rowTM [ 'lang_id' ]
2020-08-14 13:36:36 +02:00
)));
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 ;
}
}