YaWK  24.1
Yet another WebKit
settings-webmail.php
Go to the documentation of this file.
1 <script type="text/javascript" src="../system/engines/jquery/bootstrap-tabcollapse.js"></script>
2 <?php
3 
4 use YAWK\alert;
5 use YAWK\backend;
6 use YAWK\db;
7 use YAWK\language;
8 use YAWK\settings;
9 use YAWK\sys;
10 /** @var $db db */
11 /** @var $lang language */
12 
13 // SAVE tpl settings
14 if(isset($_POST['save']))
15 { // loop through all $_POST items
16  foreach ($_POST as $property => $value)
17  { // ignore property: savebutton
18  if ($property != "save")
19  { // check setting and call corresponding function
20  if (substr($property, -5, 5) == '-long')
21  { // LONG VALUE SETTINGS
22  if (!settings::setLongSetting($db, $property, $value))
23  { // throw error
24  alert::draw("warning", "Error", "Long Settings: Could not set long value <b>$value</b> of property <b>$property</b>","plugin=signup","4800");
25  }
26  }
27  else
28  { // save value of property to database
29  settings::setSetting($db, $property, $value, $lang);
30  }
31  }
32  }
33  // load page again to show changes immediately
34  sys::setTimeout("index.php?page=settings-webmail", 0);
35 }
36 // get all template settings into array
37 $settings = settings::getAllSettingsIntoArray($db);
38 
39 // TEMPLATE WRAPPER - HEADER & breadcrumbs
40 echo "
41  <!-- Content Wrapper. Contains page content -->
42  <div class=\"content-wrapper\" id=\"content-FX\">
43  <!-- Content Header (Page header) -->
44  <section class=\"content-header\">";
45 // draw Title on top
46 echo backend::getTitle($lang['SETTINGS'], $lang['WEBMAIL']);
47 echo backend::getSettingsBreadcrumbs($lang);
48 echo"</section><!-- Main content -->
49  <section class=\"content\">";
50 /* page content start here */
51 ?>
52 <form id="settings-webmail" action="index.php?page=settings-webmail" method="POST">
53  <div class="box">
54  <div class="box-body">
55  <div class="col-md-10">
56  <?php echo "<h4><i class=\"fa fa-envelope-o\"></i> $lang[WEBMAIL]&nbsp;$lang[WEBMAIL_SUBTEXT]</h4>"; ?>
57  </div>
58  <div class="col-md-2">
59  <button class="btn btn-success pull-right" id="savebutton" name="save" style="margin-top:2px;"><i class="fa fa-check" id="savebuttonIcon"></i>&nbsp;&nbsp;<?php echo $lang['SAVE_SETTINGS']; ?></button>
60  </div>
61  </div>
62  </div>
63 
64  <ul class="nav nav-tabs" id="tabs" role="tablist">
65  <li class="active"><a href="#overview" aria-controls="overview" role="tab" data-toggle="tab"><i class="fa fa-gear"></i>&nbsp; <?php echo $lang['HEADING_WEBMAIL_ACTIVE'] ?></a></li>
66  <li><a href="#imap" aria-controls="imap" role="tab" data-toggle="tab"><i class="fa fa-chevron-down"></i>&nbsp; <?php echo $lang['HEADING_WEBMAIL_IMAP_SERVER'] ?></a></li>
67  <li><a href="#smtp" aria-controls="smtp" role="tab" data-toggle="tab"><i class="fa fa-chevron-up"></i>&nbsp; <?php echo $lang['HEADING_WEBMAIL_SMTP_SERVER'] ?></a></li>
68  <li><a href="#status" aria-controls="status" role="tab" data-toggle="tab"><i class="fa fa-question-circle-o"></i>&nbsp; <?php echo $lang['STATUS'] ?></a></li>
69  </ul>
70 
71  <!-- Tab panes -->
72  <div class="tab-content">
73  <!-- OVERVIEW -->
74  <div role="tabpanel" class="tab-pane active" id="overview">
75 
76  <div class="row animated fadeIn">
77  <!-- email account and imap server settings -->
78  <div class="col-md-4">
79  <div class="box">
80  <div class="box-body">
81  <!-- email account settings -->
82  <?php settings::getFormElements($db, $settings, 23, $lang); ?>
83  </div>
84  </div>
85  </div>
86  <!-- webmail / mailbox settings box -->
87  <div class="col-md-4">
88  <div class="box">
89  <div class="box-body">
90  <!-- webmail settings -->
91  <?php settings::getFormElements($db, $settings, 24, $lang); ?>
92  </div>
93  </div>
94  </div>
95 
96  <div class="col-md-4">
97  <div class="box">
98  <div class="box-body">
99  <h3><i class="fa fa-question-circle-o"></i> <?php echo $lang['MAILBOX_STATUS']; ?></h3>
100  <hr>
101  <?php
102  // connect to mailserver only if webmail is set to active
103  if (settings::getSetting($db, "webmail_active") == true)
104  { // get mailbox settings
105  $server = settings::getSetting($db, "webmail_imap_server");
106  $username = settings::getSetting($db, "webmail_imap_username");
107  $password = settings::getSetting($db, "webmail_imap_password");
108  $encryption = settings::getSetting($db, "webmail_imap_encrypt");
109  $port = ":". settings::getSetting($db, "webmail_imap_port")."";
110  $novalidate = settings::getSetting($db, "webmail_imap_novalidate");
111  if (!empty($novalidate)){ $novalidate = "/".$novalidate; } else { $novalidate = ''; }
112 
113  // open connection to mailserver
114  if ($imap = @imap_open("{".$server."".$port."/imap/".$encryption."".$novalidate."}INBOX", $username, $password, OP_HALFOPEN))
115  {
116  // draw connection status
117  echo "<h4 class=\"text-success\"><b>".$lang["CONNECTION_SUCCESSFUL"]."</b><br>
118  <small><i><b>Server: </b></i>".$server."".$port."".$encryption."<br><i><b>Mailbox: </b></i>".$username."</small></h4>";
119 
120  // draw webmail button
121  echo "<br><a href=\"index.php?page=webmail\" class=\"btn btn-success\" target=\"_self\" style=\"color:#fff; width:100%;\">
122  <i class=\"fa fa-envelope-o\"></i>&nbsp; ".$lang["WEBMAIL_SHOW"]."</a><br><br><hr>";
123 
124  // mailbox details
125  echo "<h4>".$lang["MAILBOX_DETAILS"]."</h4>";
126 
127  // get status of this inbox
128  $status = imap_status($imap, "{".$server."}INBOX", SA_ALL);
129  // if status could be detected...
130  if ($status)
131  { // output data
132  echo "Messages: " . $status->messages . "<br />\n";
133  echo "Unseen: " . $status->unseen . "<br />\n";
134  echo "Recent: " . $status->recent . "<br />\n";
135  echo "UIDnext: " . $status->uidnext . "<br />\n";
136  echo "UIDvalidity:" . $status->uidvalidity . "<br />\n";
137  }
138  else
139  { // no status information - draw error
140  echo "".$lang["IMAP_STATUS_FAILED"]." : " . imap_last_error() . "\n";
141  }
142 
143  // get more mailbox information
144  $check = imap_mailboxmsginfo($imap);
145 
146  // if msginfo was successful
147  if ($check)
148  { // show more information
149  echo "Date: " . $check->Date . "<br />\n" ;
150  echo "Driver: " . $check->Driver . "<br />\n" ;
151  echo "Mailbox: " . $check->Mailbox . "<br />\n" ;
152  }
153  else
154  { // no mailbox message info - draw error
155  echo "".$lang["IMAP_STATUS_FAILED"]." : " . imap_last_error() . "<br />\n";
156  }
157 
158  // close imap connection
159  imap_close($imap);
160  }
161  else
162  { // error: imap: unable to connect
163  echo "<h4 class=\"text-danger\"><b>".$lang["CONNECTION_FAILED"]."</b><br>
164  <br><small>".$lang["IMAP_DEBUG"]."</small><br>
165  ".imap_last_error()."";
166  }
167  }
168  else
169  { // webmail not active: set info text
170  echo "<div id=\"mailboxStatusInfo\">".$lang["WEBMAIL_NOT_ACTIVATED"]."</div>";
171  }
172  ?>
173  </div>
174  </div>
175  </div>
176  </div>
177 
178  </div>
179  <!-- IMAP TAB -->
180  <div role="tabpanel" class="tab-pane" id="imap">
181  <div class="box">
182  <div class="box-body">
183  <!-- imap server seettings -->
184  <?php settings::getFormElements($db, $settings, 22, $lang); ?>
185  </div>
186  </div>
187  </div>
188  <!-- SMTP TAB -->
189  <div role="tabpanel" class="tab-pane" id="smtp">
190  <div class="box">
191  <div class="box-body">
192  <!-- smtp server seettings -->
193  <?php settings::getFormElements($db, $settings, 25, $lang); ?>
194  </div>
195  </div>
196  </div>
197  <!-- STATUS TAB -->
198  <div role="tabpanel" class="tab-pane" id="status">
199  <!-- insert content here... -->
200  </div>
201 
202 
203 </form>
204 
205 <!-- include JS -->
206 <script type="text/javascript">
207  $(document).ready(function()
208  { // set hotkey (STRG-S) function
209  function saveHotkey() {
210  // simply disables save event for chrome
211  $(window).keypress(function (event) {
212  if (!(event.which === 115 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) && !(event.which === 19)) return true;
213  event.preventDefault();
214  formmodified=0; // do not warn user, just save.
215  return false;
216  });
217  // used to process the cmd+s and ctrl+s events
218  $(document).keydown(function (event) {
219  if (event.which === 83 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) {
220  event.preventDefault();
221  $('#savebutton').click(); // SAVE FORM AFTER PRESSING STRG-S hotkey
222  formmodified=0; // do not warn user, just save.
223  // save(event);
224  return false;
225  }
226  });
227  }
228  // call hotkey function
229  saveHotkey();
230 
231  // set savebutton vars
232  var savebutton = ('#savebutton');
233  var savebuttonIcon = ('#savebuttonIcon');
234 
235  // check if user clicked on save button
236  $(savebutton).click(function()
237  { // add loading info
238  $(savebutton).removeClass('btn btn-success').addClass('btn btn-warning disabled');
239  $(savebuttonIcon).removeClass('fa fa-check').addClass('fa fa-spinner fa-spin fa-fw');
240  });
241 
242  // call tabCollapse: make the default bootstrap tabs responsive for handheld devices
243  $('#tabs').tabCollapse({
244  tabsClass: 'hidden-sm hidden-xs',
245  accordionClass: 'visible-sm visible-xs'
246  });
247  });
248 </script>
print $lang['FILEMAN_UPLOAD']
Throws a fancy Bootstrap Alert (success, info, warning or danger)
Definition: alert.php:19
Backend class serves a few useful functions for the admin backend.
Definition: backend.php:27
Mysqli database class; returns db connection object.
Definition: db.php:16
The language class - support multilingual backend.
Definition: language.php:17
Settings class: get and set YaWK system settings.
Definition: settings.php:9
The sys class - handles yawk's system core functions.
Definition: sys.php:17
$server
Definition: email-send.php:133
function window
Definition: fuckAdBlock.js:8
function a
Definition: browser.js:14
c jPlayer event
type
Definition: menu-new.php:35
function i(e, t)
Definition: plyr.js:1
<!-- backend language -->< h3 >< i class="fa fa-language"></i > & nbsp
if(isset($_POST['save'])) $settings
$template name
$value
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 &ouml;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);});})