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 = 'Anketa '.$this->anketa.' ima prekoračeno omejitev števila vprašanj ('.$count.')!'; break; case 'limit_vabila': $title = 'Opozorilo - prekoračena omejitev vabil'; $content = 'Anketa '.$this->anketa.' ima prekoračeno omejitev poslanih vabil ('.$count.')!'; break; case 'phishing': $title = 'Opozorilo - potencialna phishing anketa'; $content = 'Anketa '.$this->anketa.' - 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(); } } ?>