2020-08-14 13:36:36 +02:00
< ? php
/**
*
* Class , ki naj bi imel stvari glede dostopa uporabnikov do anket
* Ampak dejansko je se ogromno stvari , ki grejo mimo classa in direktno na bazo
*
*/
class Dostop {
var $anketa ; // trenutna anketa
function __construct ( $anketa = NULL )
{
// polovimo anketa ID
if ( isset ( $_GET [ 'anketa' ])) {
$this -> anketa = $_GET [ 'anketa' ];
} elseif ( isset ( $_POST [ 'anketa' ])) {
$this -> anketa = $_POST [ 'anketa' ];
} elseif ( $anketa != 0 ) {
$this -> anketa = $anketa ;
}
}
/**
* preveri dostop do ankete
*
* @ param mixed $anketa
*/
function checkDostop ( $anketa = 0 )
{
global $admin_type ;
global $global_user_id ;
if ( $anketa == 0 ) {
$anketa = $this -> anketa ;
}
$uid = $global_user_id ;
SurveyInfo :: getInstance () -> SurveyInit ( $anketa );
$rowa = SurveyInfo :: getInstance () -> getSurveyRow ();
// meta admin vidi kao spet vse
if ( self :: isMetaAdmin ()) {
return TRUE ;
}
// za demonstracijsko je posebno preverjanje
if ( $rowa [ 'invisible' ] == 1 ) {
return TRUE ;
}
// posebej dostop za vsazga userja posebej
$sql = sisplet_query ( " SELECT ank_id, uid FROM srv_dostop WHERE ank_id = ' $anketa ' AND uid=' $uid ' " );
if ( mysqli_num_rows ( $sql ) > 0 ) {
return TRUE ;
}
// dodatno imamo se ce je manager ali admin, potem vidi ankete podrejenih userjev
if ( $admin_type == 1 || $admin_type == 0 ) {
$sql = sisplet_query ( " SELECT COUNT(*) FROM srv_dostop WHERE ank_id=' $anketa ' AND uid IN (SELECT user FROM srv_dostop_manage WHERE manager=' $uid ') " );
$row = mysqli_fetch_array ( $sql );
if ( $row [ 0 ] > 0 ) {
return TRUE ;
}
}
// ce imajo administratorji poseben dostop do ankete za help
if ( $admin_type == 0 && strtotime ( $rowa [ 'dostop_admin' ]) >= strtotime ( date ( " Y-m-d " ))) {
return TRUE ;
}
return FALSE ;
}
/**
2021-08-02 12:07:34 +02:00
* Meta admin , ki vidi vse ankete
2020-08-14 13:36:36 +02:00
*/
2021-08-02 12:07:34 +02:00
static function isMetaAdmin (){
global $global_user_id ;
2020-08-14 13:36:36 +02:00
global $admin_type ;
2021-08-02 12:07:34 +02:00
// Ce ni admin ni nikoli metaadmin
if ( $admin_type != '0' ){
return FALSE ;
}
2020-08-14 13:36:36 +02:00
2021-11-22 10:13:40 +01:00
$meta_admin_ids = AppSettings :: getInstance () -> getSetting ( 'meta_admin_ids' );
2021-08-02 12:07:34 +02:00
// Ce imamo nastavljene id-je za metaadmine v settings_optional
if ( isset ( $meta_admin_ids ) && ! empty ( $meta_admin_ids )){
if ( in_array ( $global_user_id , $meta_admin_ids )) {
2020-08-14 13:36:36 +02:00
return TRUE ;
}
2021-08-02 12:07:34 +02:00
}
2020-08-14 13:36:36 +02:00
// Gorenje ima svoje metaadmine
2021-08-02 12:07:34 +02:00
elseif ( Common :: checkModule ( 'gorenje' )){
2020-08-14 13:36:36 +02:00
global $meta_admin_emails ;
$sql = sisplet_query ( " SELECT email FROM users WHERE id = ' $global_user_id ' " );
$row = mysqli_fetch_array ( $sql );
if ( in_array ( $row [ 'email' ], $meta_admin_emails )){
return TRUE ;
}
}
return FALSE ;
}
/**
* preveri , ce ima uporabnik aktiven dostop do ankete
* zdaj ko nimamo vec aktivnih in pasivnih uporabnikov , gledamo ali ima edit
* dostop do ankete
*
* ta funkcija je v bistvu deprecated , naj se raje uporablja
* checkDostopSub ( 'edit' ... ); ostaja za zdruzljivost za nazaj
*
* @ param mixed $anketa
*/
function checkDostopAktiven ( $anketa = 0 )
{
global $admin_type ;
global $global_user_id ;
return $this -> checkDostopSub ( 'edit' , $anketa );
}
/**
* preveri tocen dostop do podstoritev
*
* @ param mixed $anketa
*/
function checkDostopSub ( $type , $anketa = 0 )
{
global $admin_type ;
global $global_user_id ;
if ( $anketa == 0 ) {
$anketa = $this -> anketa ;
}
$uid = $global_user_id ;
SurveyInfo :: getInstance () -> SurveyInit ( $anketa );
$rowa = SurveyInfo :: getInstance () -> getSurveyRow ();
// meta admin vidi kao spet vse
if ( self :: isMetaAdmin ()) {
return TRUE ;
}
// za demonstracijsko je posebno preverjanje
if ( $rowa [ 'invisible' ] == 1 ) {
return TRUE ;
}
$sql = sisplet_query ( " SELECT dostop FROM srv_dostop WHERE ank_id = ' $anketa ' AND uid=' $uid ' " );
if ( mysqli_num_rows ( $sql ) > 0 ) {
$row = mysqli_fetch_array ( $sql );
$dostop = explode ( ',' , $row [ 'dostop' ]);
if ( in_array ( $type , $dostop )) {
return TRUE ;
}
// managerji in admini majo vedno lepe linke in maile
if ( $admin_type <= 1 && in_array ( $type , [ 'link' , 'mail' ])) {
return TRUE ;
}
}
// administratorji in managerji imajo do max kar imajo njegovi podrejeni userji
if ( $admin_type <= 1 ) {
$sql = sisplet_query ( " SELECT dostop FROM srv_dostop WHERE ank_id=' $anketa ' AND uid IN (SELECT user FROM srv_dostop_manage WHERE manager=' $uid ') " );
while ( $row = mysqli_fetch_array ( $sql )) {
$dostop = explode ( ',' , $row [ 'dostop' ]);
if ( in_array ( $type , $dostop )) {
return TRUE ;
}
// managerji in admini majo vedno lepe linke in maile
if ( $admin_type <= 1 && in_array ( $type , [ 'link' , 'mail' ])) {
return TRUE ;
}
}
}
// ce imajo administratorji poseben dostop do ankete za help
if ( $admin_type == 0 && strtotime ( $rowa [ 'dostop_admin' ]) >= strtotime ( date ( " Y-m-d " ))) {
return TRUE ;
}
return FALSE ;
}
2021-03-02 09:59:52 +01:00
function ajax (){
2020-08-14 13:36:36 +02:00
if ( $_GET [ 'a' ] == 'manager_add_user' ) {
$this -> ajax_manager_add_user ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'add_new_user' ){
2020-08-14 13:36:36 +02:00
$this -> ajax_add_new_user ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'anketa_user_dostop' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_anketa_user_dostop ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'anketa_user_dostop_save' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_anketa_user_dostop_save ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'edit_user' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_edit_user ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'edit_user_save' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_edit_user_save ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'admin_add_user' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_admin_add_user ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'admin_add_user_popup' ) {
$this -> ajax_admin_add_user_popup ();
}
elseif ( $_GET [ 'a' ] == 'find_user' ){
2020-08-14 13:36:36 +02:00
$this -> ajax_find_user ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'edit_remove_user' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_edit_remove_user ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'edit_remove_user_manager' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_edit_remove_user_manager ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'edit_remove_user_admin' ) {
$this -> ajax_edit_remove_user_admin ();
}
elseif ( $_GET [ 'a' ] == 'all_users_list' ) {
if ( $_GET [ 'm' ] == 'delete' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_all_users_list_delete ();
2020-12-10 13:09:02 +01:00
}
2021-03-02 09:59:52 +01:00
2020-12-10 13:09:02 +01:00
if ( $_GET [ 'm' ] == 'ban' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_all_users_list_ban ();
2020-12-10 13:09:02 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$this -> ajax_all_users_list ();
}
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'my_users_list' ){
2020-12-10 13:09:02 +01:00
$this -> ajax_all_users_list_my ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'delete_users_list' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_delete_users_list ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'unsigned_users_list' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_unsigned_users_list ();
2021-03-02 09:59:52 +01:00
}
elseif ( $_GET [ 'a' ] == 'unconfirmed_mail_user_list' ) {
if ( $_GET [ 'm' ] == 'delete' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_unconfirmed_mail_user_list_delet_user ();
2020-12-10 13:09:02 +01:00
}
elseif ( $_GET [ 'm' ] == 'accept' ) {
2020-08-14 13:36:36 +02:00
$this -> ajax_confirm_user_email ();
2020-12-10 13:09:02 +01:00
}
else {
2020-08-14 13:36:36 +02:00
$this -> ajax_unconfirmed_mail_user_list ();
}
}
2021-03-02 09:59:52 +01:00
elseif ( $_GET [ 'a' ] == 'dodeljeni_uporabniki_display' ) {
$this -> ajax_dodeljeni_uporabniki_display ();
}
2020-08-14 13:36:36 +02:00
}
/**
* Dodamo novega uporabnika v 1 KA sistem
*/
public function ajax_add_new_user ()
{
2021-09-29 10:37:17 +02:00
global $pass_salt , $site_url , $site_domain , $lang ;
2020-08-14 13:36:36 +02:00
$email = $_POST [ 'email' ];
$name = $_POST [ 'name' ];
$surnname = $_POST [ 'surname' ];
$password = $_POST [ 'password' ];
$password2 = $_POST [ 'password2' ];
$jezik = $_POST [ 'jezik' ];
include root_dir ( 'lang/' . $jezik . '.php' );
if ( $email != '' ) {
$sqlu = sisplet_query ( " SELECT id FROM users WHERE email=' $email ' " );
if ( mysqli_num_rows ( $sqlu ) == 0 ) {
if ( $password == '' || $password == $password2 ) {
$s = sisplet_query ( " INSERT INTO users (name, surname, email, pass, type, when_reg, came_from, lang) VALUES (' $name ', ' $surnname ', ' $email ', ' " . base64_encode (( hash ( SHA256 , $password . $pass_salt ))) . " ', '3', DATE_FORMAT(NOW(), '%Y-%m-%d'), '1', $jezik ) " );
$id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
} else {
$error = 'pass' ;
}
} else {
// ne more si dodati že obstoječega uporabnika, ker potem bi si lahko kar kogarkoli dodal in bi videl njegove ankete
$id = 0 ;
$error = 'email' ;
}
if ( $id > 0 ) {
$UserContent = $lang [ 'add_new_user_content' ];
// Podpis
$signature = Common :: getEmailSignature ();
$UserContent .= $signature ;
$UserContent .= $lang [ 'register_add_user_content_edit' ];
2021-09-29 10:37:17 +02:00
$PageName = AppSettings :: getInstance () -> getSetting ( 'app_settings-app_name' );
2020-08-14 13:36:36 +02:00
$change = '<a href="' . $site_url . 'admin/survey/index.php?a=nastavitve&m=global_user_myProfile">' ;
$out = '<a href="' . $this -> page_urls [ 'page_unregister' ] . '?email=' . $email . '">' ;
// Ce gre slucajno za virtualko
2021-09-29 10:37:17 +02:00
$Subject = ( isVirtual ()) ? $lang [ 'register_user_subject_virtual' ] : $lang [ 'register_user_subject' ];
2020-08-14 13:36:36 +02:00
$UserContent = str_replace ( " SFNAME " , $name , $UserContent );
$UserContent = str_replace ( " SFMAIL " , $email , $UserContent );
$UserContent = str_replace ( " SFWITH " , $email , $UserContent );
$UserContent = str_replace ( " SFPAGENAME " , $PageName , $UserContent );
$UserContent = str_replace ( " SFCHANGE " , $change , $UserContent );
$UserContent = str_replace ( " SFOUT " , $out , $UserContent );
$UserContent = str_replace ( " SFEND " , '</a>' , $UserContent );
$Subject = str_replace ( " SFPAGENAME " , $PageName , $Subject );
// Ce gre slucajno za virtualko
2021-09-29 10:37:17 +02:00
if ( isVirtual ())
2020-08-14 13:36:36 +02:00
$Subject = str_replace ( " SFVIRTUALNAME " , $site_domain , $Subject );
if ( $password2 == " " ) {
$UserContent = str_replace ( " SFPASS " , " ( " . $lang [ 'without' ] . " ) " , $UserContent );
}
else {
$UserContent = str_replace ( " SFPASS " , $password2 . " ( " . $lang [ 'register_add_user_password' ] . " ) " , $UserContent );
}
if ( $name == " " ) {
$UserContent = str_replace ( " SFNAME " , $lang [ 'mr_or_mrs' ], $UserContent );
}
else {
$UserContent = str_replace ( " SFNAME " , $name , $UserContent );
}
$ZaMail = '<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN">' . '<html><head><title>' . $Subject . '</title><meta content="text/html; charset=utf-8" http-equiv=Content-type></head><body>' ;
$ZaMail .= $UserContent ;
if ( isDebug ()){
echo $ZaMail ;
die ();
}
// Posljemo mail vsakemu uporabniku posebej
try {
$MA = new MailAdapter ( null , 'account' );
$MA -> addRecipients ( $email );
$resultX = $MA -> sendMail ( stripslashes ( $ZaMail ), $Subject );
}
catch ( Exception $e ) {
}
if ( $resultX ) {
$status = 1 ; // poslalo ok
}
else {
$status = 2 ; // ni poslalo
}
}
} else {
$error = 'email' ;
}
header ( " Location: index.php?a=diagnostics&t=uporabniki&m=all&add=new&error= " . ( $error !== FALSE ? $error : '' ));
}
/**
* Manager : dodajanje svojih novih uporabnikov
*
*/
function ajax_manager_add_user ()
{
global $pass_salt ;
global $lang ;
2021-01-05 10:47:52 +01:00
global $global_user_id , $site_path , $site_domain ;
2020-08-14 13:36:36 +02:00
global $admin_type ;
$error = FALSE ;
$sqlu = sisplet_query ( " SELECT email, type FROM users WHERE id = ' " . $global_user_id . " ' " );
list ( $MailReply ) = mysqli_fetch_row ( $sqlu );
$aktiven = $_POST [ 'aktiven' ];
$email = $_POST [ 'email' ];
$name = $_POST [ 'name' ];
$surnname = $_POST [ 'surname' ];
$password = $_POST [ 'password' ];
$password2 = $_POST [ 'password2' ];
if ( $email != '' ) {
$sqlu = sisplet_query ( " SELECT id FROM users WHERE email=' $email ' " );
if ( mysqli_num_rows ( $sqlu ) == 0 ) {
if ( $password == '' || $password == $password2 ) {
$s = sisplet_query ( " INSERT INTO users (name, surname, email, pass, type, when_reg, came_from) VALUES (' $name ', ' $surnname ', ' $email ', ' " . base64_encode (( hash ( SHA256 , $password . $pass_salt ))) . " ', '3', DATE_FORMAT(NOW(), '%Y-%m-%d'), '1') " );
$id = mysqli_insert_id ( $GLOBALS [ 'connect_db' ]);
} else {
$error = 'pass' ;
}
} else {
// ne more si dodati že obstoječega uporabnika, ker potem bi si lahko kar kogarkoli dodal in bi videl njegove ankete
$id = 0 ;
$error = 'email' ;
}
if ( $id > 0 ) {
$s = sisplet_query ( " INSERT INTO srv_dostop_manage (manager, user) VALUES (' $global_user_id ', ' $id ') " );
if ( ! $s ) {
echo mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
2021-01-05 10:47:52 +01:00
$subject = sprintf ( $lang [ 'srv_dodanmail_1' ], $site_domain );
$content = sprintf ( $lang [ 'srv_dodanmail_2' ], $MailReply , $site_domain ) . '<br /><br />' ;
$content .= $lang [ 'srv_dodanmail_3' ];
$content .= '<ul>' ;
$content .= '<li>' . $lang [ 'srv_dodanmail_3_email' ] . ' <b>' . $email . '</b></li>' ;
$content .= '<li>' . $lang [ 'srv_dodanmail_3_pass_1' ] . ' <b>' . $password . '</b> (' . $lang [ 'srv_dodanmail_3_pass_2' ] . ')</li>' ;
$content .= '</ul>' ;
2020-08-14 13:36:36 +02:00
// Podpis
$signature = Common :: getEmailSignature ();
$content .= $signature ;
2021-01-05 10:47:52 +01:00
2020-08-14 13:36:36 +02:00
// Posljemo mail vsakemu uporabniku posebej
try {
$MA = new MailAdapter ( $this -> anketa , $type = 'account' );
$MA -> addRecipients ( $email );
$MA -> addRecipients ( $MailReply );
$resultX = $MA -> sendMail ( stripslashes ( $content ), $subject );
} catch ( Exception $e ) {
}
if ( $resultX ) {
$status = 1 ; // poslalo ok
} else {
$status = 2 ; // ni poslalo
}
}
} else {
$error = 'email' ;
}
header ( " Location: index.php?a=diagnostics&t=uporabniki&m=my&error= " . ( $error !== FALSE ? $error : '' ));
}
/**
* Urejanje natančnega dostopa uporabnikov v nastavitvah ankete
*
*/
function ajax_anketa_user_dostop ()
{
global $admin_type ;
global $lang ;
$uid = $_POST [ 'uid' ];
$s = sisplet_query ( " SELECT name, surname, email, type FROM users WHERE id=' $uid ' " );
$r = mysqli_fetch_array ( $s );
$sqla = sisplet_query ( " SELECT naslov FROM srv_anketa WHERE id = ' $this->anketa ' " );
$rowa = mysqli_fetch_array ( $sqla );
echo '<h2>' . $lang [ 'srv_anketa' ] . ' ' . $rowa [ 'naslov' ] . '</h2>' ;
2020-08-17 10:17:37 +02:00
echo '<div class="popup_close"><a href="#" onClick="anketa_user_dostop_close(); return false;">✕</a></div>' ;
2020-08-14 13:36:36 +02:00
echo '<h3><span class="bold">' ;
2020-12-10 13:09:02 +01:00
if ( $r [ 'type' ] == 2 || $r [ 'type' ] == 3 ) {
2020-08-14 13:36:36 +02:00
echo $lang [ 'admin_narocnik' ];
}
elseif ( $r [ 'type' ] == 1 ) {
echo $lang [ 'manager' ];
}
elseif ( $r [ 'type' ] == 0 ) {
echo $lang [ 'administrator' ];
}
$r [ 'email' ] = iconv ( " iso-8859-2 " , " utf-8 " , $r [ 'email' ]);
echo ': ' . $r [ 'name' ] . ' ' . $r [ 'surname' ] . ' (' . $r [ 'email' ] . ')</span></h3>' ;
if ( $r [ 'type' ] >= 2 ) {
$sql = sisplet_query ( " SELECT dostop FROM srv_dostop WHERE ank_id=' $this->anketa ' AND uid=' $uid ' " );
$row = mysqli_fetch_array ( $sql );
$dostop = explode ( ',' , $row [ 'dostop' ]);
echo '<form id="dostop">' ;
echo '<input type="hidden" name="uid" value="' . $uid . '">' ;
echo '<input type="hidden" name="aktiven" value="1" id="aktiven_1">' ;
echo '<p><input type="checkbox" name="dostop[dashboard]" value="dashboard" id="dashboard" ' . ( in_array ( 'dashboard' , $dostop ) ? 'checked' : '' ) . ' ' . ( in_array ( 'phone' , $dostop ) ? ' disabled="disabled"' : '' ) . '> <label for="dashboard">' . $lang [ 'srv_dostop_dashboard' ] . '</label></p>' ;
echo '<p><input type="checkbox" name="dostop[edit]" value="edit" id="edit" ' . ( in_array ( 'edit' , $dostop ) ? 'checked' : '' ) . ' ' . ( in_array ( 'phone' , $dostop ) ? ' disabled="disabled"' : '' ) . ' onchange="dostop_language(this);"> <label for="edit">' . $lang [ 'srv_dostop_edit' ] . '</label></p>' ;
echo '<p><input type="checkbox" name="dostop[test]" value="test" id="test" ' . ( in_array ( 'test' , $dostop ) ? 'checked' : '' ) . ' ' . ( in_array ( 'phone' , $dostop ) ? ' disabled="disabled"' : '' ) . ' onchange="dostop_language(this);"> <label for="test">' . $lang [ 'srv_dostop_test' ] . '</label></p>' ;
echo '<p><input type="checkbox" name="dostop[publish]" value="publish" id="publish" ' . ( in_array ( 'publish' , $dostop ) ? 'checked' : '' ) . ' ' . ( in_array ( 'phone' , $dostop ) ? ' disabled="disabled"' : '' ) . ' onchange="dostop_language(this);"> <label for="publish">' . $lang [ 'srv_dostop_publish' ] . '</label></p>' ;
echo '<p><input type="checkbox" name="dostop[data]" value="data" id="data" ' . ( in_array ( 'data' , $dostop ) ? 'checked' : '' ) . ' ' . ( in_array ( 'phone' , $dostop ) ? ' disabled="disabled"' : '' ) . '> <label for="data">' . $lang [ 'srv_dostop_data' ] . '</label></p>' ;
echo '<p><input type="checkbox" name="dostop[analyse]" value="analyse" id="analyse" ' . ( in_array ( 'analyse' , $dostop ) ? 'checked' : '' ) . ' ' . ( in_array ( 'phone' , $dostop ) ? ' disabled="disabled"' : '' ) . '> <label for="analyse">' . $lang [ 'srv_dostop_analyse' ] . '</label></p>' ;
echo '<p><input type="checkbox" name="dostop[export]" value="export" id="export" ' . ( in_array ( 'export' , $dostop ) ? 'checked' : '' ) . ' ' . ( in_array ( 'phone' , $dostop ) ? ' disabled="disabled"' : '' ) . '> <label for="export">' . $lang [ 'srv_dostop_export' ] . '</label></p>' ;
// Nastavitev, da ne more odklenit ankete
echo '<p><input type="checkbox" name="dostop[lock]" value="lock" id="lock" ' . ( in_array ( 'lock' , $dostop ) ? 'checked' : '' ) . ' ' . ( in_array ( 'phone' , $dostop ) ? ' disabled="disabled"' : '' ) . '> <label for="lock">' . $lang [ 'srv_dostop_lock' ] . '</label></p>' ;
// Je anketar - ne more poceti nicesar razen izvajati telefonsko anketo (ob kliku se ostale avtomatsko ugasnejo in disablajo)
echo '<p><input type="checkbox" name="dostop[phone]" value="phone" id="phone" ' . ( in_array ( 'phone' , $dostop ) ? 'checked' : '' ) . ' onchange="dostop_anketar(this);"> <label for="phone">' . $lang [ 'srv_dostop_phone' ] . '</label></p>' ;
// Če gre za Hierarhijo
if ( SurveyInfo :: checkSurveyModule ( 'hierarhija' , $this -> anketa )) {
$tip = sisplet_query ( " SELECT type FROM srv_hierarhija_users WHERE user_id=' " . $uid . " ' AND anketa_id=' " . $this -> anketa . " ' " , " obj " );
if ( ! empty ( $tip ) && ! empty ( $tip -> type )) {
echo '<p><label>Uporabnik hierarhije s pravicami: </label>' ;
echo ' < select name = " hierarchy_type " id = " hierarchy-type-change " onchange = " hierarhijaPravice() " >
< option value = " 10 " ' . ($tip->type == 10 ? ' selected ' : NULL) . ' > Učitelj </ option >
< option value = " 2 " ' . ($tip->type == 2 ? ' selected ' : NULL) . ' > Administrator </ option >
</ select ></ p > ' ;
}
}
echo '<div style="position: absolute; right: 10px; top: 50px; width: 200px;">' ;
// Ce je katerikoli od treh checkboxou ugasnjen imamo enablano editiranje samo posameznega jezik
$enable_lang = ( ! in_array ( 'edit' , $dostop ) || ! in_array ( 'test' , $dostop ) || ! in_array ( 'publish' , $dostop )) ? TRUE : FALSE ;
$sqll = sisplet_query ( " SELECT * FROM srv_language WHERE ank_id = ' $this->anketa ' " );
if ( mysqli_num_rows ( $sqll ) > 0 ) {
echo '<p><b>' . $lang [ 'srv_passive_multilang' ] . '</b></p>' ;
echo '<input type="hidden" name="dostop_language_edit" id="dostop_language_edit" value="' . ( $enable_lang ? '1' : '0' ) . '">' ;
}
while ( $rowl = mysqli_fetch_array ( $sqll )) {
$sqldl = sisplet_query ( " SELECT * FROM srv_dostop_language WHERE ank_id = ' $this->anketa ' AND uid = ' $uid ' AND lang_id=' $rowl[lang_id] ' " );
if ( ! $sqldl ) {
echo mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
if ( mysqli_num_rows ( $sqldl ) > 0 ) {
$checked = ' checked' ;
} else {
$checked = '' ;
}
echo '<label><input class="dostop_language" type="checkbox" name="dostop_language[]" value="' . $uid . '-' . $rowl [ 'lang_id' ] . '" ' . $checked . ' ' . ( $enable_lang ? '' : ' disabled="disabled"' ) . ' > ' . $rowl [ 'language' ] . '</label> <br>' ;
}
echo '</div>' ;
echo '</form>' ;
echo '<div class="buttonwrapper floatLeft spaceRight"><a class="ovalbutton ovalbutton_orange" onclick="anketa_user_dostop_save(\'' . $this -> anketa . '\'); return false;" href="#"><span>' . $lang [ 'edit1337' ] . '</span></a></div>' ;
}
// Manager - brez moznosti uporabe 1ka streznika
elseif ( $r [ 'type' ] == 1 ) {
$sql = sisplet_query ( " SELECT dostop FROM srv_dostop WHERE ank_id=' $this->anketa ' AND uid=' $uid ' " );
$row = mysqli_fetch_array ( $sql );
$dostop = explode ( ',' , $row [ 'dostop' ]);
// Admin lahko managerju spreminja samo posiljanje vabil preko 1ka streznika
if ( $admin_type == 0 ) {
echo '<form id="dostop">' ;
echo '<input type="hidden" name="uid" value="' . $uid . '">' ;
echo '<input type="hidden" name="aktiven" value="1" id="aktiven_1">' ;
if ( in_array ( 'dashboard' , $dostop )) {
echo '<input type="hidden" name="dostop[dashboard]" value="dashboard" id="dashboard">' ;
}
if ( in_array ( 'edit' , $dostop )) {
echo '<input type="hidden" name="dostop[edit]" value="edit" id="edit">' ;
}
if ( in_array ( 'test' , $dostop )) {
echo '<input type="hidden" name="dostop[test]" value="test" id="test">' ;
}
if ( in_array ( 'publish' , $dostop )) {
echo '<input type="hidden" name="dostop[publish]" value="publish" id="publish">' ;
}
if ( in_array ( 'data' , $dostop )) {
echo '<input type="hidden" name="dostop[data]" value="data" id="data">' ;
}
if ( in_array ( 'analyse' , $dostop )) {
echo '<input type="hidden" name="dostop[analyse]" value="analyse" id="analyse">' ;
}
if ( in_array ( 'export' , $dostop )) {
echo '<input type="hidden" name="dostop[export]" value="export" id="export">' ;
}
if ( in_array ( 'lock' , $dostop )) {
echo '<input type="hidden" name="dostop[lock]" value="lock" id="lock">' ;
}
if ( in_array ( 'phone' , $dostop )) {
echo '<input type="hidden" name="dostop[phone]" value="phone" id="phone">' ;
}
echo '</form>' ;
echo '<p>(' . $lang [ 'srv_dostop_edit' ] . ', ' . $lang [ 'srv_dostop_data' ] . ', ' . $lang [ 'srv_dostop_export' ] . ')</p>' ;
echo '<div class="buttonwrapper floatLeft spaceRight"><a class="ovalbutton ovalbutton_orange" onclick="anketa_user_dostop_save(\'' . $this -> anketa . '\'); return false;" href="#"><span>' . $lang [ 'edit1337' ] . '</span></a></div>' ;
}
// Ostali ne morejo managerju nicesar spreminjati
else {
echo '<p>(' . $lang [ 'srv_dostop_edit' ] . ', ' . $lang [ 'srv_dostop_data' ] . ', ' . $lang [ 'srv_dostop_export' ] . ' )</p>' ;
}
}
// Admin
else {
echo '<p>(' . $lang [ 'srv_dostop_edit' ] . ', ' . $lang [ 'srv_dostop_data' ] . ', ' . $lang [ 'srv_dostop_export' ] . ')</p>' ;
}
2020-08-17 10:17:37 +02:00
echo '<div class="buttonwrapper floatRight"><a class="ovalbutton ovalbutton_gray" onclick="anketa_user_dostop_close(); return false;" href="#"><span>' . $lang [ 'srv_zapri' ] . '</span></a></div>' ;
2020-08-14 13:36:36 +02:00
}
function ajax_anketa_user_dostop_save () {
$uid = $_POST [ 'uid' ];
$aktiven = $_POST [ 'aktiven' ];
$dostop = implode ( ',' , $_POST [ 'dostop' ]);
$sql = sisplet_query ( " UPDATE srv_dostop SET aktiven=' $aktiven ', dostop=' $dostop ' WHERE uid = ' $uid ' AND ank_id=' $this->anketa ' " );
if ( isset ( $_POST [ 'dostop_language_edit' ]) && $_POST [ 'dostop_language_edit' ] == '1' ) {
sisplet_query ( " DELETE FROM srv_dostop_language WHERE ank_id = ' $this->anketa ' AND uid=' $uid ' " );
foreach ( $_POST [ 'dostop_language' ] AS $val ) {
$val = explode ( '-' , $val );
$uid = $val [ 0 ];
$lang_id = $val [ 1 ];
sisplet_query ( " INSERT INTO srv_dostop_language (ank_id, uid, lang_id) VALUES (' $this->anketa ', ' $uid ', ' $lang_id ') " );
}
}
if ( isset ( $_POST [ 'hierarchy_type' ]) && SurveyInfo :: checkSurveyModule ( 'hierarhija' , $this -> anketa )) {
$tip = ( ! empty ( $_POST [ 'hierarchy_type' ]) ? $_POST [ 'hierarchy_type' ] : NULL );
$result = sisplet_query ( " SELECT id FROM srv_hierarhija_users WHERE user_id=' " . $uid . " ' AND anketa_id=' " . $this -> anketa . " ' " , " obj " );
if ( ! empty ( $result ) && ! empty ( $result -> id ) && ! is_null ( $tip )) {
sisplet_query ( " UPDATE srv_hierarhija_users SET type=' " . $tip . " ' WHERE id=' " . $result -> id . " ' " );
}
}
}
function ajax_edit_user (){
global $lang ;
global $global_user_id ;
global $admin_type ;
$uid = $_POST [ 'uid' ];
echo '<div class="edit_user_content">' ;
// NASTAVITVE UPORABNIKA
echo '<div class="user_settings">' ;
$sql = sisplet_query ( " SELECT name, surname, email, type, status, gdpr_agree FROM users WHERE id =' " . $uid . " ' " );
$row = mysqli_fetch_array ( $sql );
echo '<form class="manager_add_user" name="manager_edit_user" action="ajax.php?t=dostop&a=edit_user_save&uid=' . $uid . '" method="post">' ;
echo '<h2><strong>' . $lang [ 'edit_user' ] . '</strong></h2>' ;
// Segment tip uporabnika
echo '<div class="segment user_type">' ;
$row [ 'email' ] = iconv ( " iso-8859-2 " , " utf-8 " , $row [ 'email' ]);
// Emaila ne more vec editirat, ker je prevec problemov (izgubi ankete...)
echo '<input type="hidden" id="email" name="email" value="' . $row [ 'email' ] . '" />' ;
echo '<p><label for="email">' . $lang [ 'user2' ] . ':</label>' . $row [ 'name' ] . ' ' . $row [ 'surname' ] . ' (' . $row [ 'email' ] . ')</p>' ;
// Admin lahko spreminja tip vseh userjev
if ( $admin_type == 0 ) {
echo '<p><label for="type">' . $lang [ 'admin_type' ] . '</label><select id="type" name="type">' ;
echo '<option value="0" ' . ( $row [ 'type' ] == '0' ? 'selected' : '' ) . '>' . $lang [ 'admin_admin' ] . '</option>' ;
echo '<option value="1" ' . ( $row [ 'type' ] == '1' ? 'selected' : '' ) . '>' . $lang [ 'admin_manager' ] . '</option>' ;
echo '<option value="3" ' . ( $row [ 'type' ] == '3' ? 'selected' : '' ) . '>' . $lang [ 'admin_narocnik' ] . '</option>' ;
echo '</select></p>' ;
}
else {
echo '<input type="hidden" id="type" name="type" value="' . $row [ 'type' ] . '" />' ;
}
echo '<p><label for="status">' . $lang [ 'status' ] . '</label><select name="status" id="status"><option value="1" ' . ( $row [ 'status' ] == 1 ? 'selected' : '' ) . '>' . $lang [ 'srv_user_notbanned' ] . '</option><option value="0" ' . ( $row [ 'status' ] == 0 ? 'selected' : '' ) . '>' . $lang [ 'srv_user_banned' ] . '</option></select></p>' ;
echo '</div>' ;
// Segment osnovni podatki
echo '<div class="segment user_info">' ;
echo '<p><label for="name">' . $lang [ 'name' ] . ':</label><input type="text" id="name" name="name" value="' . ( ! empty ( $row [ 'name' ]) ? $row [ 'name' ] : '' ) . '" autocomplete="off" size="50"></p>' ;
echo '<p><label for="surname">' . $lang [ 'surname' ] . ':</label><input type="text" id="surname" name="surname" value="' . ( ! empty ( $row [ 'surname' ]) ? $row [ 'surname' ] : '' ) . '" size="50" readonly onfocus="this.removeAttribute(\'readonly\');"></p>' ;
echo '<p><label for="password">' . $lang [ 'password' ] . ':</label><input type="password" id="password" name="password" readonly onfocus="this.removeAttribute(\'readonly\');"></p>' ;
echo '<p><label for="password2">' . $lang [ 'cms_register_user_repeat_password' ] . ':</label><input type="password" id="password2" name="password2" readonly onfocus="this.removeAttribute(\'readonly\');"></p>' ;
echo '<p><label for="subscription">' . $lang [ 'srv_subscribe' ] . ' :</ label >
< input type = " radio " id = " subscriptionDa " name = " gdpr_agree " value = " 1 " '.($row[' gdpr_agree '] == 1 ? ' checked = " checked " ' : ' ').' >< label for = " subscriptionDa " style = " width: auto; " > '.$lang[' yes '].' </ label > ' .
' <input type="radio" id="subscriptionNe" class="spaceLeft" name="gdpr_agree" value="0" ' . ( $row [ 'gdpr_agree' ] == 0 ? 'checked="checked"' : '' ) . '><label for="subscriptionNe" style="width: auto;">' . $lang [ 'no' ] . '</label>' .
'</p>' ;
$user_2fa_validate = User :: option ( $uid , 'google-2fa-validation' );
if ( $admin_type == 0 && ! empty ( $user_2fa_validate ) && $user_2fa_validate != 'NOT' ) {
echo '<p><label for="google_2fa">' . $lang [ 'google_2fa' ] . ' :</ label >
< label for = " google-2fa-da " style = " width: auto; " >
< input type = " radio " id = " google-2fa-da " name = " google-2fa " value = " 1 " disabled = " disabled " '.((!empty($user_2fa_validate) && $user_2fa_validate != ' NOT ') ? ' checked = " checked " ' : ' ').' > '.$lang[' srv_mass_input_1 '].'
</ label >
< label for = " google-2fa-ne " style = " width: auto; " >
< input type = " radio " id = " google-2fa-ne " name = " google-2fa " value = " izbrisi " > '.$lang[' srv_mass_input_0 ' ] .
'</label></p>' ;
}
// Admin lahko ureja katere uporabnike (mail domene) bo manager lahko dodajal pod svoj pregled
if ( $admin_type == 0 && $row [ 'type' ] == '1' ) {
UserSetting :: getInstance () -> Init ( $uid );
$emails = UserSetting :: getInstance () -> getUserSetting ( 'manage_domain' );
echo '<p><label for="manage_domain" style="width:200px;">Manager domene (npr. 1ka.si):</label><input type="text" id="manage_domain" name="manage_domain" value="' . $emails . '" autocomplete="off" size="30"></p>' ;
}
2020-12-10 13:09:02 +01:00
// Na virtualkah manager ne sme odstraniti uporabnika iz pregleda (zaradi omejitve)
2021-09-29 10:37:17 +02:00
if ( $admin_type != '1' || ! isVirtual ()){
2020-12-10 13:09:02 +01:00
$sqlu = sisplet_query ( " SELECT * FROM srv_dostop_manage WHERE manager=' $global_user_id ' AND user=' $uid ' " );
if ( mysqli_num_rows ( $sqlu ) > 0 ) {
echo '<br /><p><a href="ajax.php?t=dostop&a=edit_remove_user&uid=' . $uid . '" onclick="if ( confirm(\'?\')) { } else {return false;}">' . $lang [ 'srv_manager_rem_user2' ] . '</a></p>' ;
}
2020-08-14 13:36:36 +02:00
}
echo '</div>' ;
// Segment paket
2021-09-29 10:37:17 +02:00
if ( AppSettings :: getInstance () -> getSetting ( 'app_settings-commercial_packages' ) === true ){
2020-08-14 13:36:36 +02:00
echo '<div class="segment user_package">' ;
$userAccess = UserAccess :: getInstance ( $uid );
$userAccess_data = $userAccess -> getAccess ();
$active_package = ( isset ( $userAccess_data [ 'package_id' ])) ? $userAccess_data [ 'package_id' ] : '1' ;
$time_expire = ( isset ( $userAccess_data [ 'time_expire' ])) ? date ( 'd.m.Y' , strtotime ( $userAccess_data [ 'time_expire' ])) : '' ;
// Paket
echo '<p>' ;
echo ' <label for="package">' . $lang [ 'srv_access_package' ] . ':</label>' ;
echo ' <select name="package" id="package">' ;
foreach ( $userAccess -> getPackages () as $package_id => $package ){
echo ' <option value="' . $package_id . '" ' . ( $package_id == $active_package ? 'selected="selected"' : '' ) . '>' . $package [ 'name' ] . '</option>' ;
}
echo ' </select>' ;
echo '</p>' ;
// Trajanje paketa
echo '<p>' ;
echo ' <label for="package_expire">' . ucfirst ( $lang [ 'srv_access_package_valid' ]) . ':</label>' ;
echo ' <input type="text" name="package_expire" id="package_expire" value="' . $time_expire . '" style="width:80px;">' ;
echo '</p>' ;
echo '
< script type = " text/javascript " >
$ ( document ) . ready ( function () {
datepicker ( " #package_expire " );
});
</ script > ' ;
echo '</div>' ;
}
echo '</form>' ;
echo '</div>' ;
// SEZNAM ANKET
echo '<div class="survey_list">' ;
echo ' <h3><strong>' . $lang [ 'srv_ankete' ] . '</strong></h3>' ;
echo ' <ul>' ;
$sql = sisplet_query ( " SELECT srv_anketa.id, srv_anketa.naslov FROM srv_dostop, srv_anketa WHERE srv_dostop.uid=' " . $uid . " ' AND srv_dostop.ank_id=srv_anketa.id ORDER BY srv_anketa.edit_time DESC " );
while ( $row = mysqli_fetch_array ( $sql )) {
echo ' <li><a href="#" onclick="anketa_user_dostop(\'' . $uid . '\', \'' . $row [ 'id' ] . '\'); return false;">' . $row [ 'naslov' ] . '</a></li>' ;
}
echo ' </ul>' ;
echo '</div>' ;
echo '</div>' ;
// GUMBI NA DNU
echo '<p>' ;
echo ' <div class="buttonwrapper floatLeft"><a class="ovalbutton ovalbutton_gray" href="#" onclick="edit_user_close();"><span>' . $lang [ 'srv_zapri' ] . '</span></a></div>' ;
echo ' <div class="buttonwrapper floatLeft spaceLeft"><a class="ovalbutton ovalbutton_orange btn_savesettings" href="#" onclick="document.manager_edit_user.submit();"><span>' . $lang [ 'edit1337' ] . '</span></a></div>' ;
echo '</p>' ;
}
function ajax_edit_user_save (){
global $pass_salt ;
global $admin_type ;
$uid = $_GET [ 'uid' ];
$_POST [ 'email' ] = iconv ( " utf-8 " , " iso-8859-2 " , $_POST [ 'email' ]);
if ( $_POST [ 'email' ] != '' ) {
if ( $_POST [ 'password' ] != '' && $_POST [ 'password' ] == $_POST [ 'password2' ]) {
$password = " , pass = ' " . base64_encode (( hash ( 'SHA256' , $_POST [ 'password' ] . $pass_salt ))) . " ' " ;
} else {
$password = " " ;
}
$s = sisplet_query ( " UPDATE users SET type=' $_POST[type] ', status=' $_POST[status] ', email=' $_POST[email] ', name=' $_POST[name] ', surname=' $_POST[surname] ' $password WHERE id = ' $uid ' " );
if ( ! $s ) {
echo mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
}
if ( isset ( $_POST [ 'gdpr_agree' ])){
sisplet_query ( " UPDATE users SET gdpr_agree=' " . $_POST [ 'gdpr_agree' ] . " ' WHERE id = ' $uid ' " );
}
if ( isset ( $_POST [ 'google-2fa' ]) && $_POST [ 'google-2fa' ] == 'izbrisi' ){
sisplet_query ( " DELETE FROM user_options WHERE user_id=' " . $uid . " ' AND option_name IN ('google-2fa-secret', 'google-2fa-validation') " );
}
if ( isset ( $_POST [ 'manage_domain' ])) {
UserSetting :: getInstance () -> Init ( $uid );
UserSetting :: getInstance ()
-> setUserSetting ( 'manage_domain' , $_POST [ 'manage_domain' ]);
UserSetting :: getInstance () -> saveUserSetting ();
}
// Update or insert user package
if ( isset ( $_POST [ 'package' ]) && isset ( $_POST [ 'package_expire' ]) && $_POST [ 'package_expire' ] != '' ) {
$package_id = $_POST [ 'package' ];
$package_expire = $_POST [ 'package_expire' ];
$package_expire_sql = date ( 'Y-m-d H:i:s' , strtotime ( $package_expire ));
$sqlPackageTime = sisplet_query ( " SELECT time_activate FROM user_access WHERE usr_id=' " . $uid . " ' " );
if ( mysqli_num_rows ( $sqlPackageTime ) > 0 ){
$rowPackageTime = mysqli_fetch_array ( $sqlPackageTime );
$time_activate = date ( 'Y-m-d H:i:s' , strtotime ( $rowPackageTime [ 'time_activate' ]));
$sqlPackageDelete = sisplet_query ( " DELETE FROM user_access WHERE usr_id=' " . $uid . " ' " );
$sqlPackage = sisplet_query ( " INSERT INTO user_access
( usr_id , time_activate , time_expire , package_id )
VALUES
( '".$uid."' , '".$time_activate."' , '".$package_expire_sql."' , '".$package_id."' )
" );
}
else {
$sqlPackage = sisplet_query ( " INSERT INTO user_access
( usr_id , time_activate , time_expire , package_id )
VALUES
( '".$uid."' , NOW (), '".$package_expire_sql."' , '".$package_id."' )
" );
}
if ( ! $sqlPackage )
echo mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
if ( $admin_type == 0 ) {
// Ce smo odprli okno v narocilih
if ( strpos ( $_SERVER [ 'HTTP_REFERER' ], 'a=narocila' ) !== false )
header ( " Location: index.php?a=narocila " );
else
header ( " Location: index.php?a=diagnostics&t=uporabniki&m=all " );
}
else {
header ( " Location: index.php?a=diagnostics&t=uporabniki&m=my " );
}
}
/**
* Admin : dodajanje obstojecih uporabnikov
*
*/
function ajax_admin_add_user ()
{
global $pass_salt ;
global $lang ;
global $global_user_id , $site_path ;
global $admin_type ;
if ( $admin_type != 0 && $admin_type != 1 ) {
return ;
}
$error = FALSE ;
$sqlu = sisplet_query ( " SELECT email FROM users WHERE id = ' " . $global_user_id . " ' " );
$rowu = mysqli_fetch_array ( $sqlu );
$mail_admin = $rowu [ 'email' ];
$uid = ( ! empty ( $_POST [ 'uid' ]) ? $_POST [ 'uid' ] : null );
$uemail = ( ! empty ( $_POST [ 'uemail' ]) ? $_POST [ 'uemail' ] : null );
$sqlu = sisplet_query ( " SELECT email, type FROM users WHERE id=' $uid ' " );
if ( mysqli_num_rows ( $sqlu ) > 0 ) {
$rowu = mysqli_fetch_array ( $sqlu );
$mail_user = $rowu [ 'email' ];
$type_user = $rowu [ 'type' ];
$id = $uid ;
}
// Za managerje pošljemo samo email
if ( empty ( $id )) {
$sqlu = sisplet_query ( " SELECT id, email, type FROM users WHERE email=' " . $uemail . " ' " );
if ( mysqli_num_rows ( $sqlu ) > 0 ) {
$rowu = mysqli_fetch_array ( $sqlu );
$mail_user = $rowu [ 'email' ];
$type_user = $rowu [ 'type' ];
$id = $rowu [ 'id' ];
}
}
if ( $id > 0 && $type_user >= $admin_type ) {
$s = sisplet_query ( " INSERT INTO srv_dostop_manage (manager, user) VALUES (' $global_user_id ', ' $id ') " );
if ( ! $s ) {
echo mysqli_error ( $GLOBALS [ 'connect_db' ]);
}
global $site_url ;
$subject = $lang [ 'srv_dodanmail_m_1' ] . '' ;
$content = sprintf ( $lang [ 'srv_dodanmail_m_2' ], $mail_admin , $site_url , $mail_user ) . '<br /><br />' . sprintf ( $lang [ 'srv_dodanmail_m_3' ]);
// Podpis
$signature = Common :: getEmailSignature ();
$content .= $signature ;
try {
$MA = new MailAdapter ( $this -> anketa , $type = 'account' );
$MA -> addRecipients ( $mail_user );
$resultX = $MA -> sendMail ( stripslashes ( $content ), $subject );
} catch ( Exception $e ) {
}
if ( $resultX ) {
$status = 1 ; // poslalo ok
} else {
$status = 2 ; // ni poslalo
}
}
2020-12-10 13:09:02 +01:00
header ( " Location: index.php?a=diagnostics&t=uporabniki " . ( $error !== FALSE ? '&error=' . $error : '' ));
2020-08-14 13:36:36 +02:00
}
2021-03-02 09:59:52 +01:00
/**
* Admin : dodajanje obstojecih uporabnikov drugemu uporabniku v popupu
*
*/
function ajax_admin_add_user_popup (){
global $lang ;
global $admin_type ;
if ( $admin_type != 0 )
return ;
$manager = ( isset ( $_POST [ 'manager' ])) ? $_POST [ 'manager' ] : '0' ;
$user = ( isset ( $_POST [ 'user' ])) ? $_POST [ 'user' ] : '0' ;
if ( $manager == '' || $manager == '0' || $user == '' || $user == '0' )
return ;
$sql = sisplet_query ( " INSERT INTO srv_dostop_manage (manager, user) VALUES (' " . $manager . " ', ' " . $user . " ') " );
if ( ! $sql )
echo mysqli_error ( $GLOBALS [ 'connect_db' ]);
$this -> ajax_dodeljeni_uporabniki_display ();
}
2020-08-14 13:36:36 +02:00
/**
* Poiščemo uporabnika , ki je v bazi
*/
function ajax_find_user (){
global $admin_type , $global_user_id ;
$json [ 'results' ] = [];
if ( $admin_type == 0 ){
2021-01-25 09:03:17 +01:00
$sqls = sisplet_query ( " SELECT id, name, surname, email FROM users WHERE id NOT IN (SELECT user FROM srv_dostop_manage WHERE manager=' " . $global_user_id . " ') AND email NOT LIKE ('D3LMD-%') AND email NOT LIKE ('UNSU8MD-%') AND email LIKE '% " . $_GET [ 'term' ] . " %' ORDER BY email " , " obj " );
if ( ! empty ( $sqls -> email )){
$json [ 'results' ][] = [
'id' => $sqls -> id ,
'text' => $sqls -> email . ' - ' . $sqls -> name . ' ' . $sqls -> surname
];
}
else {
foreach ( $sqls as $user ) {
$json [ 'results' ][] = [
'id' => $user -> id ,
'text' => $user -> email . ' - ' . $user -> name . ' ' . $user -> surname
];
}
}
echo json_encode ( $json );
}
elseif ( $admin_type == 1 ){
2020-08-14 13:36:36 +02:00
$email = trim ( $_POST [ 'uemail' ]);
$user = sisplet_query ( " SELECT id, name, surname, email FROM users WHERE id NOT IN (SELECT user FROM srv_dostop_manage WHERE manager=' " . $global_user_id . " ') AND email NOT LIKE ('D3LMD-%') AND email NOT LIKE ('UNSU8MD-%') AND email=' " . $email . " ' " );
2021-01-25 09:03:17 +01:00
if ( mysqli_num_rows ( $user ) > 0 ) {
echo 'success' ;
}
else {
echo 'error' ;
}
}
}
2020-08-14 13:36:36 +02:00
// Če je administrator
/**
* odstrani uporabnika iz nadzora
*
*/
2021-03-02 09:59:52 +01:00
function ajax_edit_remove_user (){
2020-08-14 13:36:36 +02:00
global $global_user_id ;
global $site_url ;
$uid = ( int ) $_GET [ 'uid' ];
$sql = sisplet_query ( " DELETE FROM srv_dostop_manage WHERE user=' " . $uid . " ' AND manager=' " . $global_user_id . " ' " );
header ( " Location: " . $site_url . " admin/survey/index.php?a=diagnostics&t=uporabniki&m=my " );
}
/**
* odstrani uporabnika iz managerjevega nadzora
*
*/
2021-03-02 09:59:52 +01:00
function ajax_edit_remove_user_manager (){
2020-08-14 13:36:36 +02:00
global $global_user_id ;
global $site_url ;
$uid = ( int ) $_GET [ 'uid' ];
$sql = sisplet_query ( " DELETE FROM srv_dostop_manage WHERE user=' $global_user_id ' AND manager=' $uid ' " );
header ( " Location: " . $site_url . " admin/survey/index.php?a=diagnostics&t=uporabniki " );
}
2021-03-02 09:59:52 +01:00
/**
* admin odstrani uporabnika iz nadzora drugemu uporabniku ( managerju ali adminu )
*
*/
function ajax_edit_remove_user_admin (){
global $admin_type ;
if ( $admin_type != '0' )
return ;
$manager = ( isset ( $_POST [ 'manager' ])) ? $_POST [ 'manager' ] : '0' ;
$user = ( isset ( $_POST [ 'user' ])) ? $_POST [ 'user' ] : '0' ;
if ( $manager == '' || $manager == '0' || $user == '' || $user == '0' )
return ;
$sql = sisplet_query ( " DELETE FROM srv_dostop_manage WHERE user=' $user ' AND manager=' $manager ' " );
$this -> ajax_dodeljeni_uporabniki_display ();
}
2020-08-14 13:36:36 +02:00
/**
* Seznam vseh uporabnikov znotrja 1 ke
*/
2020-12-10 13:09:02 +01:00
function ajax_all_users_list (){
2020-08-14 13:36:36 +02:00
global $admin_languages ;
global $global_user_id ;
global $lang ;
2020-12-10 13:09:02 +01:00
global $admin_type ;
2020-08-14 13:36:36 +02:00
$seznam = [];
$iskanjeSql = " " ;
if ( ! empty ( $_POST [ 'search' ][ 'value' ])){
$iskaniNiz = $_POST [ 'search' ][ 'value' ];
$iskanjeSql = " AND (u.name LIKE '% " . $iskaniNiz . " %' OR u.surname LIKE '% " . $iskaniNiz . " %' OR u.email LIKE '% " . $iskaniNiz . " %' OR d1.dostop_survey_count LIKE '% " . $iskaniNiz . " %' OR d2.dostop_survey_archive LIKE '% " . $iskaniNiz . " %') " ;
2020-12-10 13:09:02 +01:00
}
2020-08-14 13:36:36 +02:00
// Pridobimo vse uporabnike
2021-03-05 13:06:03 +01:00
$sql = " SELECT u.id as id, u.type as type, u.status, u.email as email, u.name as name, u.surname as surname, u.lang as lang, u.eduroam as aai, date_format(u.when_reg, '%d.%m.%Y') as registriran, u.gdpr_agree as gdpr_agree, dm.st_dodeljenih_uporabnikov as st_dodeljenih_uporabnikov, dm2.st_managerjev as st_managerjev, d1.dostop_survey_count as st_anket, d2.dostop_survey_archive as st_arhivskih, date_format(u.last_login, '%d.%m.%Y') as last_login, ue.email as second_email FROM users AS u " .
2021-03-02 09:59:52 +01:00
" LEFT OUTER JOIN (SELECT srv_dostop.ank_id, srv_dostop.uid, count(*) AS dostop_survey_count FROM srv_dostop, srv_anketa WHERE srv_anketa.id=srv_dostop.ank_id AND srv_anketa.backup='0' GROUP BY srv_dostop.uid ) AS d1 ON d1.uid = u.id " .
" LEFT OUTER JOIN (SELECT srv_dostop.ank_id, srv_dostop.uid, count(*) AS dostop_survey_archive FROM srv_dostop, srv_anketa WHERE srv_anketa.id=srv_dostop.ank_id AND srv_anketa.backup>'0' GROUP BY srv_dostop.uid ) AS d2 ON d2.uid = u.id " .
" LEFT OUTER JOIN (SELECT srv_dostop_manage.manager, count(*) AS st_dodeljenih_uporabnikov FROM srv_dostop_manage GROUP BY srv_dostop_manage.manager) AS dm ON dm.manager = u.id " .
2021-03-05 13:06:03 +01:00
" LEFT OUTER JOIN (SELECT srv_dostop_manage.user, count(*) AS st_managerjev FROM srv_dostop_manage GROUP BY srv_dostop_manage.user) AS dm2 ON dm2.user = u.id " .
2021-03-02 09:59:52 +01:00
" LEFT OUTER JOIN (SELECT user_emails.email, user_emails.user_id FROM user_emails WHERE active=1) AS ue ON ue.user_id = u.id " .
2020-12-10 13:09:02 +01:00
" WHERE u.email NOT LIKE ('D3LMD-%') AND u.email NOT LIKE ('UNSU8MD-%') " . $iskanjeSql ;
// Filtri, ki jih datatables pošilja in po katerih filtriramo
2021-03-05 13:18:15 +01:00
if ( $_POST [ 'order' ][ 0 ][ 'column' ] < 12 ) {
2020-12-10 13:09:02 +01:00
$orderPolje = [
" u.name " . $_POST [ 'order' ][ 0 ][ 'dir' ] . " , u.surname " ,
" u.email " ,
" u.type " ,
" u.lang " ,
" u.eduroam " , //AAI
" d1.dostop_survey_count " , //st_anket
" d2.dostop_survey_archive " , //st_arhivskih
2021-03-02 09:59:52 +01:00
" dm.st_dodeljenih_uporabnikov " , //st_dodeljenih_uporabnikov
2021-03-05 13:06:03 +01:00
" dm2.st_managerjev " , //st_managerjev
2020-12-10 13:09:02 +01:00
" u.gdpr_agree " ,
" u.when_reg " ,
" u.last_login "
];
2021-03-05 13:06:03 +01:00
if ( $_POST [ 'order' ][ 0 ][ 'column' ] == 9 ){
2020-12-10 13:09:02 +01:00
$vrednost = 'u.gdpr_agree desc' ;
if ( $_POST [ 'order' ][ 0 ][ 'dir' ] == 'asc' ){
$vrednost = ' FIELD (u.gdpr_agree, 0, \'-1\', 1)' ;
}
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
$sql .= " ORDER BY " . $vrednost ;
}
else {
$sql .= " ORDER BY " . $orderPolje [ $_POST [ 'order' ][ 0 ][ 'column' ]] . " " . $_POST [ 'order' ][ 0 ][ 'dir' ];
}
}
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
if ( $_POST [ 'length' ] != '-1' ) {
$sql .= " LIMIT " . $_POST [ 'start' ] . " , " . $_POST [ 'length' ];
2020-08-14 13:36:36 +02:00
}
2020-12-10 13:09:02 +01:00
$resultQuery = sisplet_query ( $sql );
$resultU = lazyLoadSqlObj ( $resultQuery );
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
// Seznam uporabnikov vrne za administratorje vse za ostale pa samo tiste, ki smo jih dodali k uporabniku.
if ( ! empty ( $resultU )) {
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
if ( ! empty ( $resultU -> name )) {
$vsi [] = $resultU ;
}
else {
$vsi = $resultU ;
}
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
foreach ( $vsi as $uporabnik ) {
$seznam [] = [
2022-04-07 01:18:24 +02:00
'<a href="#" onclick="edit_user(\'' . $uporabnik -> id . '\'); return false;" title="' . $lang [ 'srv_info_modify' ] . '"><i class="fa fa-pencil-alt link-sv-moder"></i></a>' .
'<span class="gray"> | </span><a href="#" onclick="vsiUporabnikiAkcija(\'' . $uporabnik -> id . '\', \'ban\'); return false;" title="' . $lang [( $uporabnik -> status == 0 ? 'srv_user_banned' : 'srv_user_notbanned' )] . '"><i class="fa fa-ban ' . ( $uporabnik -> status == 0 ? 'link-rdec' : 'link-sv-moder' ) . '"></i></a>' .
'<span class="gray"> | </span><a href="#" onclick="vsiUporabnikiAkcija(\'' . $uporabnik -> id . '\', \'delete\'); return false;" title="' . $lang [ 'srv_multicrosstabs_tables_delete_short' ] . '"><i class="fa fa-times link-sv-moder"></i></a>' ,
2020-12-10 13:09:02 +01:00
iconv ( mb_detect_encoding ( $uporabnik -> name , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> name ) . ' ' . iconv ( mb_detect_encoding ( $uporabnik -> surname , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> surname ),
( ! empty ( $uporabnik -> second_email ) ? iconv ( mb_detect_encoding ( $uporabnik -> second_email , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> second_email ) : iconv ( mb_detect_encoding ( $uporabnik -> email , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> email )),
$this -> userTypeToText ( $uporabnik -> type ),
$admin_languages [ $uporabnik -> lang ],
( ! empty ( $uporabnik -> aai ) ? $this -> vrniDaNe ( $uporabnik -> aai ) : $lang [ 'no1' ]),
( ! empty ( $uporabnik -> st_anket ) ? $uporabnik -> st_anket : 0 ),
( ! empty ( $uporabnik -> st_arhivskih ) ? $uporabnik -> st_arhivskih : 0 ),
2021-03-02 09:59:52 +01:00
'<a href="#" onclick="dodeljeni_uporabniki_display(\'' . $uporabnik -> id . '\'); return false;" title="' . $lang [ 'srv_manager_manager' ] . '">' . ( ! empty ( $uporabnik -> st_dodeljenih_uporabnikov ) ? $uporabnik -> st_dodeljenih_uporabnikov : 0 ) . '</a>' ,
2021-03-05 13:06:03 +01:00
( ! empty ( $uporabnik -> st_managerjev ) ? $uporabnik -> st_managerjev : 0 ),
2020-12-10 13:09:02 +01:00
$lang [ " users_gdpr " . $uporabnik -> gdpr_agree ],
$uporabnik -> registriran ,
2022-04-07 01:18:24 +02:00
$uporabnik -> last_login
2020-12-10 13:09:02 +01:00
];
}
}
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
$sql_recordsTotal = sisplet_query ( " SELECT count(id) as stVseh FROM users WHERE email NOT LIKE ('D3LMD-%') AND email NOT LIKE ('UNSU8MD-%') " , " obj " );
// Število vseh zadetkov, ki jih imamo v bazi
$recordsTotal = 0 ;
if ( ! empty ( $sql_recordsTotal )) {
$recordsTotal = $sql_recordsTotal -> stVseh ;
}
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
// Število filtriranih zadetkov
$recordFiltered = $recordsTotal ;
if ( ! empty ( $_POST [ 'search' ][ 'value' ]))
$recordFiltered = sizeof ( $vsi );
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
echo json_encode ([
" draw " => ( ! empty ( $_POST [ 'draw' ]) ? $_POST [ 'draw' ] : 1 ),
" recordsTotal " => $recordsTotal ,
" recordsFiltered " => $recordFiltered ,
" data " => $seznam // polje z vsebino
]);
}
/**
* Seznam dodeljenih uporabnikov ( manager in admin )
*/
function ajax_all_users_list_my (){
global $admin_languages ;
global $global_user_id ;
global $lang ;
global $admin_type ;
$seznam = [];
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
$iskanjeSql = " " ;
if ( ! empty ( $_POST [ 'search' ][ 'value' ])){
$iskaniNiz = $_POST [ 'search' ][ 'value' ];
$iskanjeSql = " AND (u.name LIKE '% " . $iskaniNiz . " %' OR u.surname LIKE '% " . $iskaniNiz . " %' OR u.email LIKE '% " . $iskaniNiz . " %' OR d1.dostop_survey_count LIKE '% " . $iskaniNiz . " %' OR d2.dostop_survey_archive LIKE '% " . $iskaniNiz . " %') " ;
}
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
// Pridobimo vse uporabnike
$sql = " SELECT u.id as id, u.type as type, u.status, u.email as email, u.name as name, u.surname as surname, u.lang as lang, u.eduroam as aai, date_format(u.when_reg, '%d.%m.%Y') as registriran, u.gdpr_agree as gdpr_agree, d1.dostop_survey_count as st_anket, d2.dostop_survey_archive as st_arhivskih, date_format(u.last_login, '%d.%m.%Y') as last_login, ue.email as second_email FROM users AS u " .
" LEFT OUTER JOIN ( SELECT srv_dostop.ank_id, srv_dostop.uid, count(*) AS dostop_survey_count FROM srv_dostop, srv_anketa WHERE srv_anketa.id=srv_dostop.ank_id AND srv_anketa.backup='0' GROUP BY srv_dostop.uid ) AS d1 ON d1.uid = u.id " .
" LEFT OUTER JOIN ( SELECT srv_dostop.ank_id, srv_dostop.uid, count(*) AS dostop_survey_archive FROM srv_dostop, srv_anketa WHERE srv_anketa.id=srv_dostop.ank_id AND srv_anketa.backup>'0' GROUP BY srv_dostop.uid ) AS d2 ON d2.uid = u.id " .
" LEFT OUTER JOIN (SELECT user_emails.email, user_emails.user_id FROM user_emails WHERE active=1) AS ue ON ue.user_id = u.id " .
" WHERE u.email NOT LIKE ('D3LMD-%') AND u.email NOT LIKE ('UNSU8MD-%') " . $iskanjeSql ;
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
// Filter samo po lastnih uporabnikih
$isciPoDomeni = '' ;
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
// Med lastne uporabnike prikažemo tudi, tiste ki so bili registrirani z isto domeno
/* UserSetting :: getInstance () -> Init ( $global_user_id );
$domena = UserSetting :: getInstance () -> getUserSetting ( 'manage_domain' );
if ( ! empty ( $domena )){
$isciPoDomeni = " OR u.email LIKE '% " . $domena . " ' " ;
} */
$sql .= " AND (u.id IN (SELECT user FROM srv_dostop_manage WHERE manager=' " . $global_user_id . " ') " . $isciPoDomeni . " ) " ;
// Filtri, ki jih datatables pošilja in po katerih filtriramo
if ( $_POST [ 'order' ][ 0 ][ 'column' ] < 10 ) {
$orderPolje = [
" u.name " . $_POST [ 'order' ][ 0 ][ 'dir' ] . " , u.surname " ,
" u.email " ,
" u.type " ,
" u.lang " ,
" u.eduroam " , //AAI
" d1.dostop_survey_count " , //st_anket
" d2.dostop_survey_archive " , //st_arhivskih
" u.gdpr_agree " ,
" u.when_reg " ,
" u.last_login "
];
if ( $_POST [ 'order' ][ 0 ][ 'column' ] == 7 ){
$vrednost = 'u.gdpr_agree desc' ;
if ( $_POST [ 'order' ][ 0 ][ 'dir' ] == 'asc' ){
$vrednost = ' FIELD (u.gdpr_agree, 0, \'-1\', 1)' ;
}
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
$sql .= " ORDER BY " . $vrednost ;
}
else {
$sql .= " ORDER BY " . $orderPolje [ $_POST [ 'order' ][ 0 ][ 'column' ]] . " " . $_POST [ 'order' ][ 0 ][ 'dir' ];
}
}
if ( $_POST [ 'length' ] != '-1' ) {
$sql .= " LIMIT " . $_POST [ 'start' ] . " , " . $_POST [ 'length' ];
}
$resultQuery = sisplet_query ( $sql );
$resultU = lazyLoadSqlObj ( $resultQuery );
// Seznam uporabnikov vrne za administratorje vse za ostale pa samo tiste, ki smo jih dodali k uporabniku.
if ( ! empty ( $resultU ) && ( $this -> jeAdministrator () || ! $this -> jeAdministrator ())) {
if ( ! empty ( $resultU -> name )) {
$vsi [] = $resultU ;
}
else {
$vsi = $resultU ;
}
2020-08-14 13:36:36 +02:00
2020-12-10 13:09:02 +01:00
foreach ( $vsi as $uporabnik ) {
$seznam [] = [
iconv ( mb_detect_encoding ( $uporabnik -> name , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> name ) . ' ' . iconv ( mb_detect_encoding ( $uporabnik -> surname , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> surname ),
( ! empty ( $uporabnik -> second_email ) ? iconv ( mb_detect_encoding ( $uporabnik -> second_email , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> second_email ) : iconv ( mb_detect_encoding ( $uporabnik -> email , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> email )),
$this -> userTypeToText ( $uporabnik -> type ),
$admin_languages [ $uporabnik -> lang ],
( ! empty ( $uporabnik -> aai ) ? $this -> vrniDaNe ( $uporabnik -> aai ) : $lang [ 'no1' ]),
( ! empty ( $uporabnik -> st_anket ) ? $uporabnik -> st_anket : 0 ),
( ! empty ( $uporabnik -> st_arhivskih ) ? $uporabnik -> st_arhivskih : 0 ),
$lang [ " users_gdpr " . $uporabnik -> gdpr_agree ],
$uporabnik -> registriran ,
$uporabnik -> last_login ,
'<a href="#" onclick="edit_user(\'' . $uporabnik -> id . '\'); return false;" title="' . $lang [ 'srv_info_modify' ] . '"><i class="fa fa-pencil-alt link-sv-moder"></i></a>' .
' | <a href="#" onclick="vsiUporabnikiAkcija(\'' . $uporabnik -> id . '\', \'ban\'); return false;" title="' . $lang [( $uporabnik -> status == 0 ? 'srv_user_banned' : 'srv_user_notbanned' )] . '"><i class="fa fa-ban ' . ( $uporabnik -> status == 0 ? 'link-rdec' : 'link-sv-moder' ) . '"></i></a>' .
' | <a href="#" onclick="vsiUporabnikiAkcija(\'' . $uporabnik -> id . '\', \'delete\'); return false;" title="' . $lang [ 'srv_multicrosstabs_tables_delete_short' ] . '"><i class="fa fa-times link-sv-moder"></i></a>'
];
}
}
// Število vseh zadetkov, ki jih imamo v bazi
$recordsTotal = 0 ;
$recordsTotal = sizeof ( $vsi );
// Število filtriranih zadetkov
$recordFiltered = $recordsTotal ;
if ( ! empty ( $_POST [ 'search' ][ 'value' ]))
$recordFiltered = sizeof ( $vsi );
2020-08-14 13:36:36 +02:00
echo json_encode ([
" draw " => ( ! empty ( $_POST [ 'draw' ]) ? $_POST [ 'draw' ] : 1 ),
" recordsTotal " => $recordsTotal ,
" recordsFiltered " => $recordFiltered ,
" data " => $seznam // polje z vsebino
]);
}
/**
* Izbrišemo uporabnika , še vendo pa hranimo njegove ankete
*/
function ajax_all_users_list_delete (){
$uid = ( ! empty ( $_POST [ 'uid' ]) ? $_POST [ 'uid' ] : null );
if ( $this -> sebeNeMoreIzbrisati ( $uid )){
return false ;
}
$result = sisplet_query ( " UPDATE users SET status=0, email=CONCAT('D3LMD-', UNIX_TIMESTAMP(), email) WHERE id=' " . $uid . " ' " );
}
function ajax_all_users_list_ban (){
$uid = ( ! empty ( $_POST [ 'uid' ]) ? $_POST [ 'uid' ] : null );
if ( $this -> sebeNeMoreIzbrisati ( $uid )){
return false ;
}
$user = sisplet_query ( " SELECT id, status FROM users WHERE id=' " . $uid . " ' " , 'obj' );
$status = 0 ;
if ( $user -> status == 0 )
$status = 1 ;
sisplet_query ( " UPDATE users SET status=' " . $status . " ' WHERE id=' " . $uid . " ' " );
}
private function sebeNeMoreIzbrisati ( $id ){
global $global_user_id ;
if ( $global_user_id == $id )
return TRUE ;
return false ;
}
private function jeAdministrator ()
{
global $admin_type ;
if ( $admin_type == 0 ) {
return TRUE ;
}
return FALSE ;
}
/**
* Pridobimo vrste uporabnika v besedilni obliki
*
* @ param $db_type
*
* @ return mixed
*/
function userTypeToText ( $db_type )
{
global $lang ;
$type = $lang [ 'admin_narocnik' ];
switch ( $db_type ) {
case 0 :
$type = $lang [ 'admin_admin' ];
break ;
case 1 :
$type = $lang [ 'admin_manager' ];
break ;
case 2 :
2020-12-10 13:09:02 +01:00
case 3 :
$type = $lang [ 'admin_narocnik' ];
2020-08-14 13:36:36 +02:00
break ;
}
return $type ;
}
/**
* Seznam vseh izbrisanih uporabnikov , ki jih pridobi datatables
*/
function ajax_delete_users_list ()
{
global $admin_languages ;
$seznam = [];
$resultQuery = sisplet_query ( " SELECT name, surname, SUBSTRING(REPLACE (email, 'D3LMD-', ''),11) as email, type, DATE_FORMAT(when_reg, '%d.%m.%Y') as registriran, lang FROM users WHERE email LIKE ('D3LMD-%') " );
$resultU = lazyLoadSqlObj ( $resultQuery );
if ( ! empty ( $resultU ) && $this -> jeAdministrator ()) {
if ( ! empty ( $resultU -> name )) {
$izbrisani [] = $resultU ;
} else {
$izbrisani = $resultU ;
}
foreach ( $izbrisani as $uporabnik ) {
$seznam [] = [
iconv ( mb_detect_encoding ( $uporabnik -> name , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> name ) . ' ' . iconv ( mb_detect_encoding ( $uporabnik -> surname , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> surname ),
iconv ( mb_detect_encoding ( $uporabnik -> email , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> email ),
$this -> userTypeToText ( $uporabnik -> type ),
$admin_languages [ $uporabnik -> lang ],
$uporabnik -> registriran ,
];
}
}
echo json_encode ([
" data " => $seznam // polje z vsebino
]);
}
public function ajax_unsigned_users_list ()
{
global $admin_languages ;
$seznam = [];
$odjavljeniQuery = sisplet_query ( " SELECT name, surname, SUBSTRING(REPLACE (email, 'UNSU8MD-', ''),11) as email, type, DATE_FORMAT(when_reg, '%d.%m.%Y') as registriran, status, lang FROM users WHERE email LIKE ('UNSU8MD-%') " );
$odjavljeni_db = lazyLoadSqlObj ( $odjavljeniQuery );
if ( ! empty ( $odjavljeni_db ) && $this -> jeAdministrator ()) {
if ( ! empty ( $odjavljeni_db -> name )) {
$odjavljeni [] = $odjavljeni_db ;
} else {
$odjavljeni = $odjavljeni_db ;
}
foreach ( $odjavljeni as $uporabnik ) {
$seznam [] = [
iconv ( mb_detect_encoding ( $uporabnik -> name , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> name ) . ' ' . iconv ( mb_detect_encoding ( $uporabnik -> surname , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> surname ),
iconv ( mb_detect_encoding ( $uporabnik -> email , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> email ),
$this -> userTypeToText ( $uporabnik -> type ),
$admin_languages [ $uporabnik -> lang ],
$uporabnik -> registriran ,
];
}
}
echo json_encode ([
" data " => $seznam // polje z vsebino
]);
}
public function ajax_unconfirmed_mail_user_list_delet_user ()
{
$uid = ( ! empty ( $_POST [ 'uid' ]) ? $_POST [ 'uid' ] : NULL );
if ( empty ( $uid )) {
return NULL ;
}
2021-01-12 14:08:03 +01:00
sisplet_query ( " DELETE FROM users_to_be WHERE id=' " . $uid . " ' " );
2020-08-14 13:36:36 +02:00
echo 'ok' ;
}
2021-01-22 12:28:04 +01:00
public function ajax_confirm_user_email (){
2020-08-14 13:36:36 +02:00
global $pass_salt ;
2021-01-22 12:28:04 +01:00
global $lang ;
2020-08-14 13:36:36 +02:00
$uid = ( ! empty ( $_POST [ 'uid' ]) ? $_POST [ 'uid' ] : NULL );
if ( empty ( $uid )) {
return NULL ;
}
// kopirano iz user_to_be v users
2021-01-12 14:08:03 +01:00
$result = sisplet_query ( " SELECT type, email, name, surname, pass, status, gdpr_agree, when_reg, came_from, lang FROM users_to_be WHERE id=' " . $uid . " ' " );
2020-08-14 13:36:36 +02:00
if ( mysqli_num_rows ( $result ) > 0 ) {
$r = mysqli_fetch_assoc ( $result );
$g = base64_encode (( hash ( 'SHA256' , base64_decode ( $r [ 'pass' ]) . $pass_salt )));
2021-01-12 14:08:03 +01:00
sisplet_query ( " INSERT INTO users (type, email, name, surname, pass, status, gdpr_agree, when_reg, came_from, lang, manuallyApproved)
2020-08-14 13:36:36 +02:00
VALUES ( '" . $r[' type '] . "' , '" . $r[' email '] . "' , '" . $r[' name '] . "' , '" . $r[' surname '] . "' , '" . $g . "' , '" . $r[' status '] . "' , '" . $r[' gdpr_agree '] . "' , '" . $r[' when_reg '] . "' , '" . $r[' came_from '] . "' , '" . $r[' lang '] . "' , 'Y' ) " );
2021-01-12 14:08:03 +01:00
sisplet_query ( " DELETE FROM users_to_be WHERE id=' " . $uid . " ' OR email=' " . $r [ 'email' ] . " ' " );
2021-01-22 12:28:04 +01:00
2020-08-14 13:36:36 +02:00
2021-01-22 12:28:04 +01:00
// Uporabniku posljemo email da je bil njegov racun aktiviran
$Content = $lang [ 'confirmed_user_mail' ];
// Podpis
$signature = Common :: getEmailSignature ();
$Content .= $signature ;
// Ce gre slucajno za virutalko
$Subject = $lang [ 'confirmed_user_mail_subject' ];
2021-09-29 10:37:17 +02:00
$PageName = AppSettings :: getInstance () -> getSetting ( 'app_settings-app_name' );
2021-01-22 12:28:04 +01:00
$ZaMail = '<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN">' . '<html><head> <title>' . $Subject . '</title><meta content="text/html; charset=utf-8" http-equiv=Content-type></head><body>' ;
// Besedilo v lang dilu je potrebno popravit, ker nimamo vec cel kup parametrov
$Content = str_replace ( " SFNAME " , $r [ 'name' ] . ' ' . $r [ 'surname' ], $Content );
$Content = str_replace ( " SFPAGENAME " , $PageName , $Content );
$Subject = str_replace ( " SFPAGENAME " , $PageName , $Subject );
$ZaMail .= $Content ;
$ZaMail .= " </body></html> " ;
// Za testiranje brez posiljanja maila
if ( isDebug ()) {
echo $ZaMail ;
die ();
}
// Posljemo mail, da je bil racun aktiviran
try {
$MA = new MailAdapter ( null , 'account' );
$MA -> addRecipients ( $r [ 'email' ]);
$result = $MA -> sendMail ( $ZaMail , $Subject );
}
catch ( Exception $e ){
echo $e ;
}
echo 'ok' ;
}
else {
2020-08-14 13:36:36 +02:00
echo 'non' ;
}
}
public function ajax_unconfirmed_mail_user_list ()
{
global $admin_languages ;
global $lang ;
$seznam = [];
$resultQuery = sisplet_query ( " SELECT id, name, surname, email, type, DATE_FORMAT(when_reg, '%d.%m.%Y') as registriran, lang FROM users_to_be " );
$resultU = lazyLoadSqlObj ( $resultQuery );
if ( ! empty ( $resultU )) {
// V kolikor imamo samo eno vrstico vpisano, potem objekt spremenimo v multiarray
if ( ! empty ( $resultU -> name )) {
$nepotrjeni [] = $resultU ;
} else {
$nepotrjeni = $resultU ;
}
$seznam = [];
foreach ( $nepotrjeni as $uporabnik ) {
$seznam [] = [
iconv ( mb_detect_encoding ( $uporabnik -> name , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> name ) . ' ' . iconv ( mb_detect_encoding ( $uporabnik -> surname , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> surname ),
iconv ( mb_detect_encoding ( $uporabnik -> email , mb_detect_order (), true ), " UTF-8 " , $uporabnik -> email ),
$this -> userTypeToText ( $uporabnik -> type ),
$admin_languages [ $uporabnik -> lang ],
$uporabnik -> registriran ,
'<a href="#" onclick="potrdiNepotrjenegaUporabnika(' . $uporabnik -> id . ')" title="' . $lang [ 'confirm_user_in_db' ] . '"><i class="fa fa-check link-sv-moder"></i> <span class="no-print"> | </span>' .
'<a href="#" onclick="izbrisiNepotrjenegaUporabnika(' . $uporabnik -> id . ')" title="' . $lang [ 'delete_user_in_db' ] . '"><i class="fa fa-times link-sv-moder"></a>' ,
];
}
}
echo json_encode ([
" data " => $seznam // polje z vsebino
]);
}
2021-03-05 15:38:31 +01:00
// Popup z dodeljenimi uporabniki
2021-03-02 09:59:52 +01:00
private function ajax_dodeljeni_uporabniki_display (){
global $lang ;
$manager = ( isset ( $_POST [ 'manager' ])) ? $_POST [ 'manager' ] : '0' ;
if ( $manager == '' || $manager == '0' ){
return ;
}
echo '<div class="popup_close"><a href="#" onClick="dodeljeni_uporabniki_close(); return false;">✕</a></div>' ;
echo '<h2>' . $lang [ 'srv_manager_count' ] . '</h2>' ;
echo '<div class="popup_content dodeljeni_uporabniki">' ;
// Seznam dodeljenih uporabnikov
2021-03-05 15:38:31 +01:00
$sqlUsers = sisplet_query ( " SELECT u.id, u.name, u.surname, u.email, u.status
2021-03-02 09:59:52 +01:00
FROM users u , srv_dostop_manage m
WHERE u . id = m . user AND m . manager = '".$manager."'
" );
if ( mysqli_num_rows ( $sqlUsers ) > 0 ){
echo '<ul>' ;
while ( $rowUsers = mysqli_fetch_array ( $sqlUsers )){
echo '<li>' ;
2021-03-05 15:38:31 +01:00
echo ' <span>' ;
echo $rowUsers [ 'name' ] . ' ' . $rowUsers [ 'surname' ] . ' (' . $rowUsers [ 'email' ] . ')' ;
if ( $rowUsers [ 'status' ] == '0' )
echo ' - <span class="red italic">NEAKTIVEN</span>' ;
echo ' </span>' ;
2021-03-02 09:59:52 +01:00
echo ' <span><a onClick="dodeljeni_uporabniki_remove(\'' . $manager . '\', \'' . $rowUsers [ 'id' ] . '\');">' . $lang [ 'hour_remove' ] . '</a></span>' ;
2021-03-05 15:38:31 +01:00
2021-03-02 09:59:52 +01:00
echo '</li>' ;
}
echo '</ul>' ;
}
// Dodajanje novega uporabnika
echo '<h4>' . $lang [ 'srv_manager_add_admin' ] . '</h4>' ;
echo '<div class="add_user">' ;
echo '<form class="manager_add_user" name="admin_add_dostop" action="ajax.php?t=dostop&a=admin_add_user" method="post">' ;
2021-03-05 13:06:03 +01:00
echo '<h3><b>' . $lang [ 'srv_manager_add_user_popup' ] . '</b></h3>' ;
2021-03-02 09:59:52 +01:00
echo '<p><select name="add_user_id" id="add_user_id" class="js-obstojeci-uporabniki-admin-ajax" style="width: 300px;"></select></p>' ;
echo '<p><div class="buttonwrapper floatLeft">' ;
echo ' <a class="ovalbutton ovalbutton_orange" href="#" onClick="dodeljeni_uporabniki_add(\'' . $manager . '\', \'' . $rowUsers [ 'id' ] . '\');">' . $lang [ 'add' ] . '</a>' ;
echo '</div></p><br><br>' ;
echo '</form>' ;
echo ' < script > $ ( \ ' . js - obstojeci - uporabniki - admin - ajax\ ' ) . select2 ({
minimumInputLength : 3 ,
ajax : {
url : \ ' ajax . php ? t = dostop & a = find_user\ ' ,
dataType : \ ' json\ '
}
}); </ script > ' ;
echo '</div>' ;
echo '</div>' ;
echo '<div class="buttons_holder">' ;
echo '<span class="buttonwrapper floatRight" title="' . $lang [ 'srv_zapri' ] . '"><a class="ovalbutton ovalbutton_gray" href="#" onclick="dodeljeni_uporabniki_close(); return false;"><span>' . $lang [ 'srv_zapri' ] . '</span></a></span>' ;
echo '</div>' ;
}
2020-08-14 13:36:36 +02:00
function isAnketar ()
{
global $admin_type ;
# preverimo ali je anketar
return ( $this -> checkDostopSub ( 'phone' ) && $admin_type > 1 );
}
/**
* vrne seznam vseh uporabnikov z dostopom do ankete
*
*/
function getDostop ()
{
$dostop = [];
$dostop [ 0 ] = $this -> getAdminsDostop ();
$dostop [ 1 ] = $this -> getManagersDostop ();
$dostop [ 2 ] = $this -> getUsersDostop ();
return $dostop ;
}
/**
* preveri ali imajo do ankete dostop administratorji
* ta funkcija ni !!! primerna za preverjat , ce prikazemo anketo
* administratorju , ker se mora poleg tega preverjati se , ce je uporabnik
* admin pa to
*
*/
function getAdminsDostop ()
{
SurveyInfo :: getInstance () -> SurveyInit ( $this -> anketa );
$rowa = SurveyInfo :: getInstance () -> getSurveyRow ();
if ( strtotime ( $rowa [ 'dostop_admin' ]) >= strtotime ( date ( " Y-m-d " ))) {
return $rowa [ 'dostop_admin' ];
}
return FALSE ;
}
/**
* kdo ima managerski dostop ( od managerjev in administratorjev )
*
*/
function getManagersDostop ()
{
$sql = sisplet_query ( " SELECT u.* FROM users u, srv_dostop_manage m WHERE u.id=m.manager AND m.user IN (SELECT uid FROM srv_dostop WHERE ank_id=' $this->anketa ') " );
while ( $row = mysqli_fetch_array ( $sql )) {
$dostop [] = $row ;
}
return $dostop ;
}
/**
* kdo od uporabnikov ima dostop
*
*/
function getUsersDostop ()
{
$sql = sisplet_query ( " SELECT u.* FROM srv_dostop d, users u WHERE u.id=d.uid AND d.ank_id = ' $this->anketa ' " );
while ( $row = mysqli_fetch_array ( $sql )) {
$dostop [] = $row ;
}
return $dostop ;
}
/**
* Vrenemo besedni izraz za 1 / 0 iz podatkovne baze
*
* @ param int $val
*
* @ return mixed
*/
private function vrniDaNe ( $val = 0 )
{
global $lang ;
if ( $val == 1 ) {
return $lang [ 'yes' ];
}
return $lang [ 'no1' ];
}
}
?>