3 require_once 
"../system/engines/imapClient/AdapterForOutgoingMessage.php";
 
    4 require_once 
"../system/engines/imapClient/Helper.php";
 
    5 require_once 
"../system/engines/imapClient/ImapClient.php";
 
    6 require_once 
"../system/engines/imapClient/ImapClientException.php";
 
    7 require_once 
"../system/engines/imapClient/ImapConnect.php";
 
    8 require_once 
"../system/engines/imapClient/IncomingMessage.php";
 
    9 require_once 
"../system/engines/imapClient/IncomingMessageAttachment.php";
 
   10 require_once 
"../system/engines/imapClient/OutgoingMessage.php";
 
   11 require_once 
"../system/engines/imapClient/Section.php";
 
   12 require_once 
"../system/engines/imapClient/SubtypeBody.php";
 
   13 require_once 
"../system/engines/imapClient/TypeAttachments.php";
 
   14 require_once 
"../system/engines/imapClient/TypeBody.php";
 
   17 use SSilence\ImapClient\ImapClientException;
 
   18 use SSilence\ImapClient\ImapClient as Imap;
 
   60     require_once 
"../system/classes/webmail.php";
 
   64     $webmail->connectionInfo = 
"<i>$username</i>";
 
   77         if (isset(
$_GET[
'folder']) && (!empty(
$_GET[
'folder']) && (is_string(
$_GET[
'folder']))))
 
   85             $imap->selectFolder(
'INBOX');
 
   86             $imap->currentFolder = 
"INBOX";
 
   90     catch (ImapClientException 
$error)
 
   95         $errorMsg = 
'Oh no! Verbindung mit server: '.$server.
' als user: '.
$username.
' nicht moeglich!';
 
  101     if (isset(
$_GET[
'deleteMessage']) && (
$_GET[
'deleteMessage'] == 
true))
 
  105             alert::draw(
"success", 
"Email deleted", 
"The email was deleted", 
"", 1200);
 
  109                 alert::draw(
"danger", 
"ERROR:", 
"Unable to delete email", 
"", 2800);
 
  114     if (isset(
$_GET[
'purgeTrash']) && (
$_GET[
'purgeTrash'] == 
true))
 
  116         $imap->selectFolder(
"Trash");
 
  119             alert::draw(
"success", 
"Mailbox cleaned", 
"The trash and spam folders were cleaned up", 
"", 1200);
 
  123             alert::draw(
"danger", 
"ERROR:", 
"Unable to purge trash and spam folder", 
"", 2800);
 
  139 <!-- JS: load data tables -->
 
  140 <script 
type=
"text/javascript">
 
  141     $(document).
ready(
function() {
 
  142         $(
'#table-sort').dataTable({
 
  144             "bLengthChange": 
false,
 
  154     $(
'#table-sort tr').click(
function() {
 
  155         var href = $(
this).find(
"a").attr(
"href");
 
  167     function markAsSeen(msgno, state){
 
  170             url: 
'js/webmail-markAsSeen.php',
 
  171             data: {msgno: msgno, state:state},
 
  172             success: 
function(data){
 
  176                 let seenIcon = $(
'#seenIcon_'+msgno);
 
  177                 let seenIconLink = $(
'#seenIconLink_'+msgno);
 
  178                 let mailboxName = $(
'#mailboxName_'+msgno);
 
  179                 let mailboxSubject = $(
'#mailboxSubject_'+msgno);
 
  180                 let newMessagesLabel = $(
'#newMessagesLabel');
 
  182                 let labelCount = $(newMessagesLabel).text().slice(2);
 
  185                 let envelopeLabel = $(
'#envelope-label');
 
  188                 $(seenIcon).removeClass();
 
  191                 if (state === 
'setSeen')
 
  193                     $(seenIcon).addClass(
'fa fa-envelope-open-o text-muted');
 
  194                     $(mailboxName).removeClass().addClass(
'mailbox-name');
 
  195                     $(mailboxSubject).removeClass().addClass(
'mailbox-subject');
 
  197                     $(seenIconLink).attr(
"onclick",
'markAsSeen('+msgno+
', \'setUnseen\')');
 
  206                         $(newMessagesLabel).text(
'+ '+labelCount);
 
  208                         $(envelopeLabel).text(labelCount);
 
  212                             $(newMessagesLabel).text(
'+ 0');
 
  213                             $(newMessagesLabel).fadeOut();
 
  214                             $(envelopeLabel).fadeOut();
 
  219                         $(seenIcon).addClass(
'fa fa-envelope text-muted');
 
  220                         $(mailboxName).removeClass().addClass(
'mailbox-name text-bold');
 
  221                         $(mailboxSubject).removeClass().addClass(
'mailbox-subject text-bold');
 
  223                         $(seenIconLink).attr(
"onclick",
'markAsSeen('+msgno+
', \'setSeen\')');
 
  230                             $(newMessagesLabel).text(
'+ '+labelCount);
 
  231                             $(envelopeLabel).text(labelCount);
 
  232                             console.log(
'LABEL COUNTER:' +labelCount);
 
  236                             $(newMessagesLabel).text(
'+ 1');
 
  237                             $(envelopeLabel).fadeIn();
 
  238                             $(newMessagesLabel).fadeIn();
 
  250     function markAsFlagged(uid, state){
 
  254             url: 
'js/webmail-setFlagged.php',
 
  255             data: {uid: uid, state:state},
 
  256             success: 
function(data){
 
  260                 let starIcon = $(
'#starIcon_'+uid);
 
  261                 let starIconLink = $(
'#starIconLink_'+uid);
 
  264                 $(starIcon).removeClass();
 
  267                 if (state === 
'setFlagged')
 
  269                     $(starIcon).addClass(
'fa fa-star text-orange');
 
  271                     $(starIconLink).attr(
"onclick",
'markAsFlagged('+uid+
', \'setUnFlagged\')');
 
  275                 else if (state === 
'setUnFlagged')
 
  277                     $(starIcon).addClass(
'fa fa-star-o text-orange');
 
  279                     $(starIconLink).attr(
"onclick",
'markAsFlagged('+uid+
', \'setFlagged\')');
 
  291     function moveMessage(uid, folder, targetFolder){
 
  294             url: 
'js/webmail-moveMessage.php',
 
  295             data: {uid: uid, folder:folder, targetFolder:targetFolder},
 
  296             success: 
function(data){
 
  300                 let emailRow = $(
'#emailRow_'+uid);
 
  302                 let messageCountSourceElement = $(
'#messageCount_'+folder+
' small');
 
  303                 let messageCountSource = $(messageCountSourceElement).text().slice(1,-1);
 
  304                 let messageCountTargetElement = $(
'#messageCount_'+targetFolder+
' small');
 
  305                 let messageCountTarget = $(messageCountTargetElement).text().slice(1,-1);
 
  307                 messageCountSource--;
 
  309                 messageCountTarget++;
 
  311                 $(messageCountSourceElement).text(
'('+messageCountSource+
')');
 
  313                 $(messageCountTargetElement).text(
'('+messageCountTarget+
')');
 
  316                 $(emailRow).removeClass().addClass(
'animated fadeOutRight');
 
  317                 $(emailRow).fadeOut();
 
  327     function deleteMessage(uid, folder){
 
  330             url: 
'js/webmail-deleteMessage.php',
 
  331             data: {uid:uid, folder:folder},
 
  332             success: 
function(data){
 
  335                 var newMessagesLabel = $(
'#newMessagesLabel');
 
  337                 var labelCount = $(newMessagesLabel).text().slice(2);
 
  339                 var envelopeLabel = $(
'#envelope-label');
 
  341                 var emailRow = $(
'#emailRow_'+uid);
 
  344                 var messageCountElement = $(
'#messageCount_'+folder+
' small');
 
  345                 var messageCount = $(messageCountElement).text().slice(1,-1);
 
  349                 $(messageCountElement).text(
'('+messageCount+
')');
 
  352                 $(emailRow).removeClass().addClass(
'animated fadeOutRight');
 
  353                 $(emailRow).fadeOut();
 
  362                     $(newMessagesLabel).text(
'+ '+labelCount);
 
  364                     $(envelopeLabel).text(labelCount);
 
  368                     $(newMessagesLabel).text(
'+ 0');
 
  369                     $(newMessagesLabel).fadeOut();
 
  370                     $(envelopeLabel).fadeOut();
 
  380     <!-- Content Wrapper. Contains page content --> 
  381     <div class=\"content-wrapper\" id=\"content-FX\"> 
  382     <!-- Content Header (Page header) --> 
  383     <section class=\"content-header\">";
 
  385 echo backend::getTitle(
$lang[
'WEBMAIL'], 
$lang[
'WEBMAIL_SUBTEXT']);
 
  386 echo
"<ol class=\"breadcrumb\"> 
  387             <li><a href=\"index.php\" title=\"$lang[DASHBOARD]\"><i class=\"fa fa-dashboard\"></i> $lang[DASHBOARD]</a></li> 
  388             <li class=\"active\"><a href=\"index.php?page=webmail\" title=\"$lang[WEBMAIL]\"> $lang[WEBMAIL]</a></li> 
  391     <!-- Main content --> 
  392     <section class=\"content\">";
 
  404     <div 
class=
"col-md-3">
 
  406         <
a href=
"index.php?page=webmail-compose" class=
"btn btn-success btn-large" style=
"width: 100%;">Write 
a message</
a><br><br>
 
  407         <div 
class=
"box box-default animated fadeIn">
 
  408             <div 
class=
"box-header with-border">
 
  409                 <h3 
class=
"box-title">Folders</h3>
 
  411                 <div 
class=
"box-tools">
 
  412                     <button 
type=
"button" class=
"btn btn-box-tool" data-widget=
"collapse"><
i class=
"fa fa-minus"></
i>
 
  416             <div 
class=
"box-body no-padding" style=
"">
 
  417                 <ul 
class=
"nav nav-pills nav-stacked">
 
  426     </div> <!-- /. left col -->
 
  428     <div 
class=
"col-md-9 animated fadeIn">
 
  430         <div 
class=
"box box-secondary">
 
  431             <div 
class=
"box-header with-border">
 
  432                 <h3 
class=
"box-title"><?php echo 
$imap->currentFolder; ?> </h3>
 
  433                 <?php echo 
"<small>".$webmail->connectionInfo.
"</small>"; ?>
 
  435                 <div 
class=
"box-tools pull-right">
 
  436                     <div 
class=
"has-feedback">
 
  437                         <input 
type=
"text" class=
"form-control input-sm" placeholder=
"Deep Search">
 
  438                         <span 
class=
"glyphicon glyphicon-search form-control-feedback"></span>
 
  443             <!-- /.box-header -->
 
  444             <div 
class=
"box-body no-padding">
 
  445                 <div 
class=
"mailbox-controls">
 
  448                 <div 
class=
"table-responsive mailbox-messages">
 
  449                     <table 
class=
"table table-striped table-hover table-responsive" id=
"table-sort">
 
  452                             <td><div 
class=
"icheckbox_flat-blue" aria-checked=
"false" aria-disabled=
"false" style=
"position: relative; width: 100%"><input 
type=
"checkbox" style=
"position: absolute; opacity: 0;"><ins 
class=
"iCheck-helper" style=
"position: absolute; top: 0%; left: 0%; display: block; width: 100%; height: 100%; margin: 0px; padding: 0px; background: rgb(255, 255, 255); border: 0px; opacity: 0;"></ins></div></td>
 
  453                             <td 
class=
"mailbox-star"></td>
 
  454                             <td 
class=
"mailbox-star"></td>
 
  455                             <td 
class=
"mailbox-name"><?php echo 
$lang[
'SENDER_FROM']; ?></td>
 
  456                             <td 
class=
"mailbox-subject"><?php echo 
$lang[
'SUBJECT']; ?></td>
 
  457                             <td 
class=
"mailbox-attachment"></td>
 
  458                             <td 
class=
"mailbox-date"><?php echo 
$lang[
'DATE']; ?></td>
 
  459                             <td 
class=
"mailbox-star"></td>
 
  474                 <!-- /.mail-box-messages -->
 
  477             <div 
class=
"box-footer no-padding">
 
  480         </div> <!-- /. box secondary -->
 
  481     </div> <!-- /. right col -->
 
  482 </div> <!-- /. row -->
 
  489         echo 
"<h4>".$lang[
'WEBMAIL_NOT_ENABLED'].
"</h4>";
 
print $lang['FILEMAN_UPLOAD']
 
Throws a fancy Bootstrap Alert (success, info, warning or danger)
 
Backend class serves a few useful functions for the admin backend.
 
Mysqli database class; returns db connection object.
 
The language class - support multilingual backend.
 
Settings class: get and set YaWK system settings.
 
document ready(function() { $('a[data-confirm]').click(function(ev) { modal='#dataConfirmModal';var href=$(this).attr('href');var title=$(this).attr('title');var icon=$(this).attr('data-icon');if(!icon) { icon='fa fa-trash-o';} if(!$(modal).length) { $('body').append('< div id="dataConfirmModal" class="modal fade" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true">< div class="modal-dialog">< div class="modal-content">< div class="modal-header">< button type="button" class="close" data-dismiss="modal" aria-hidden="true">< i class="fa fa-times"></i ></button >< br >< div class="col-md-1">< h3 class="modal-title">< i class="'+icon+'"></i ></h3 ></div >< div class="col-md-11">< h3 class="modal-title" id="dataConfirmLabel">'+title+'</h3 ></div ></h3 ></div >< div class="modal-body"></div >< div class="modal-footer">< button type="button" class="btn btn-default" data-dismiss="modal" aria-hidden="true">Abbrechen</button >< a type="button" class="btn btn-danger" id="dataConfirmOK">< i class="'+icon+'"></i > L öschen</a ></div ></div ></div ></div >');} $(modal).find('.modal-body').text($(this).attr('data-confirm'));$('#dataConfirmOK').attr('href', href);$(modal).modal({show:true});return false;});$('#terminateUser').click(function() { var terminate=window.confirm("ACHTUNG!\nDas wird Deinen Account permanent deaktivieren.\n"+"Bist Du Dir sicher, dass Du das tun willst?");if(terminate===true) { var terminateUser=window.confirm("Bist Du Dir wirklich ganz sicher?\n"+"Diese Aktion kann nicht rueckgaengig gemacht werden.");if(terminateUser===true) { $.get('system/templates/YaWK-bootstrap3/js/terminate-user.php', function(data) { if(data==="true") { setTimeout("window.location='logout.html'", 0);} else { alert("Fehler: "+data);} });} } });function dismissNotifications() { $.ajax({ url:'js/dismiss-notifications.php', type:'POST', success:function(data) { if(!data) { alert('Something went wrong!');return false;} } });$("#bell-label").fadeOut();$('#notification-header').html('You have 0 notifications');$('#notification-menu').fadeOut();} $("#dismiss").click(function() { dismissNotifications();});function disableButtons(delay) { $('#loginButton').removeClass().addClass('btn btn-success disabled').attr('id', 'LOGIN_FORBIDDEN');$('#resetPasswordButton').removeClass().addClass('btn btn-danger disabled');setTimeout(function() { $('#LOGIN_FORBIDDEN').attr('id', 'loginButton').removeClass().addClass('btn btn-success');$('#resetPasswordButton').removeClass().addClass('btn btn-danger');}, delay);} $("#loginButton").click(function(){ if($('#loginButton').length > 0) { if($('#loginButton').hasClass('btn') &&$('#loginButton').hasClass('btn-success') &&$('#loginButton').hasClass('disabled')) { } else { $("#loginForm").submit();disableButtons(10000);} } else if($('#LOGIN_FORBIDDEN').length > 0) { if($('#LOGIN_FORBIDDEN').hasClass('btn') &&$('#LOGIN_FORBIDDEN').hasClass('btn-success') &&$('#LOGIN_FORBIDDEN').hasClass('disabled')) { } else { } } });$("#blockedBtn").hover(function() { $("#blockedBtn").hide();$("#askBtn").fadeIn(820);});})