164 lines
5.0 KiB
PHP
164 lines
5.0 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Preverjanje ankete - limiti velikosti, vabil, preverjanmje phishinga...
|
|
*
|
|
* Zaenkrat samo preverjamo in posljemo mail adminu
|
|
*
|
|
*/
|
|
|
|
class SurveyCheck {
|
|
|
|
|
|
var $anketa;
|
|
|
|
public function __construct($anketa){
|
|
|
|
if($anketa == null || $anketa <= 0)
|
|
return 'ID ankete ne obstaja!';
|
|
|
|
$this->anketa = $anketa;
|
|
}
|
|
|
|
|
|
// Preverimo stevilo vprasanj v anketi
|
|
public function checkLimitSpremenljivke(){
|
|
global $app_limits;
|
|
|
|
// Ce limit ni nastavljen ignoriramo
|
|
if(!isset($app_limits['question_count_limit']) || $app_limits['question_count_limit'] <= 0)
|
|
return true;
|
|
|
|
// Dobimo stevilo vprasanj v anketi
|
|
$stevilo_vprasanj = SurveyInfo::getInstance()->getSurveyQuestionCount();
|
|
|
|
// Ce je v anketi ze vec vprasanj kot je limit
|
|
if($stevilo_vprasanj > $app_limits['question_count_limit']){
|
|
|
|
// Posljemo mail adminu
|
|
$this->sendAlert($alert_type='limit_spremenljivke', $stevilo_vprasanj);
|
|
|
|
return true;
|
|
}
|
|
else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Preverimo stevilo poslanih vabil
|
|
public function checkLimitVabila(){
|
|
global $app_limits;
|
|
|
|
// Ce limit ni nastavljen ignoriramo
|
|
if(!isset($app_limits['invitation_count_limit']) || $app_limits['invitation_count_limit'] <= 0)
|
|
return true;
|
|
|
|
// Prestejemo poslana vabila
|
|
$sql = sisplet_query("SELECT count(id) AS stevilo_vabil
|
|
FROM srv_invitations_recipients
|
|
WHERE ank_id='".$this->anketa."' AND sent='1'
|
|
");
|
|
$row = mysqli_fetch_array($sql);
|
|
|
|
$stevilo_vabil = $row['stevilo_vabil'];
|
|
|
|
// Ce je poslanih ze vec vabil kot je limit
|
|
if($stevilo_vabil > $app_limits['invitation_count_limit']){
|
|
|
|
// Posljemo mail adminu
|
|
$this->sendAlert($alert_type='limit_vabila', $stevilo_vabil);
|
|
|
|
return true;
|
|
}
|
|
else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Preverimo ce je anketa potencialno phishing
|
|
public function checkPhishing(){
|
|
global $global_user_id;
|
|
|
|
|
|
// Dobimo stevilo vprasanj v anketi
|
|
$stevilo_vprasanj = SurveyInfo::getInstance()->getSurveyQuestionCount();
|
|
|
|
// Ce imamo v anketi 0 ali vec kot 5 vprasanj je vse ok
|
|
if($stevilo_vprasanj >= 5 || $stevilo_vprasanj == 0){
|
|
return false;
|
|
}
|
|
|
|
|
|
// Dobimo stevilo anket uporabnika
|
|
$sqlA = sisplet_query("SELECT count(id) AS count_surveys FROM srv_anketa WHERE insert_uid='".$global_user_id."'");
|
|
$rowA = mysqli_fetch_array($sqlA);
|
|
|
|
// Ce ima uporabnik ze vec anket je vse ok
|
|
if($rowA['count_surveys'] > 1){
|
|
return false;
|
|
}
|
|
|
|
|
|
// Prestejemo vprasanja po tipu
|
|
$sql = sisplet_query("SELECT count(s.id) AS count_questions
|
|
FROM srv_spremenljivka s, srv_grupa g
|
|
WHERE g.ank_id='".$this->anketa."' AND g.id=s.gru_id
|
|
AND (tip='21' OR tip='5')
|
|
");
|
|
$row = mysqli_fetch_array($sql);
|
|
|
|
// Ce imamo v anketi manj kot 5 vprasanj in so vsa tipa nagovor ali text je potencialen phishing
|
|
if($row['count_questions'] == $stevilo_vprasanj){
|
|
|
|
// Posljemo mail adminu
|
|
$this->sendAlert($alert_type='phishing');
|
|
|
|
return true;
|
|
}
|
|
else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
// Posljemo obvestilo adminu o prebitem limitu, phishing anketi...
|
|
private function sendAlert($alert_type, $count=0){
|
|
global $site_url;
|
|
|
|
switch($alert_type){
|
|
|
|
case 'limit_spremenljivke':
|
|
$title = 'Opozorilo - prekoračena omejitev vprašanj';
|
|
$content = '<a href="'.$site_url.'admin/survey/index.php?anketa='.$this->anketa.'">Anketa '.$this->anketa.'</a> ima prekoračeno omejitev števila vprašanj ('.$count.')!';
|
|
|
|
break;
|
|
|
|
case 'limit_vabila':
|
|
$title = 'Opozorilo - prekoračena omejitev vabil';
|
|
$content = '<a href="'.$site_url.'admin/survey/index.php?anketa='.$this->anketa.'">Anketa '.$this->anketa.'</a> ima prekoračeno omejitev poslanih vabil ('.$count.')!';
|
|
|
|
break;
|
|
|
|
case 'phishing':
|
|
$title = 'Opozorilo - potencialna phishing anketa';
|
|
$content = '<a href="'.$site_url.'admin/survey/index.php?anketa='.$this->anketa.'">Anketa '.$this->anketa.'</a> - potencialen phishing!';
|
|
|
|
break;
|
|
}
|
|
|
|
try{
|
|
$MA = new MailAdapter($anketa=null, $type='admin');
|
|
$MA->addRecipients('info@1ka.si');
|
|
$resultX = $MA->sendMail($content, $title);
|
|
}
|
|
catch (Exception $e){
|
|
}
|
|
|
|
// Zalogiramo opozorilo
|
|
$SL = new SurveyLog();
|
|
$SL->addMessage(SurveyLog::ERROR, $title.' - anketa '.$this->anketa);
|
|
$SL->write();
|
|
}
|
|
}
|
|
|
|
?>
|