From 1139530fbf3fb0fdce1bf5cfee311cd6f0fbf816 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Mon, 14 Oct 2013 10:04:06 -0400
Subject: [PATCH] Merge remote-tracking branch 'origin/stable-3.0.5'
---
interface/lib/classes/functions.inc.php | 164 ++++++++++++++++++++++++++++++++++++------------------
1 files changed, 108 insertions(+), 56 deletions(-)
diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php
index e109650..50b3e6c 100644
--- a/interface/lib/classes/functions.inc.php
+++ b/interface/lib/classes/functions.inc.php
@@ -32,9 +32,10 @@
//* This class is loaded automatically by the ispconfig framework.
class functions {
-
+ var $idn_converter = null;
+ var $idn_converter_name = '';
- public function mail($to, $subject, $text, $from, $filepath = '', $filetype = 'application/pdf', $filename = '', $cc = '', $bcc = '') {
+ public function mail($to, $subject, $text, $from, $filepath = '', $filetype = 'application/pdf', $filename = '', $cc = '', $bcc = '', $from_name = '') {
global $app,$conf;
if($conf['demo_mode'] == true) $app->error("Mail sending disabled in demo mode.");
@@ -45,7 +46,7 @@
$mail_config['use_smtp'] = true;
$app->ispcmail->setOptions($mail_config);
}
- $app->ispcmail->setSender($from);
+ $app->ispcmail->setSender($from, $from_name);
$app->ispcmail->setSubject($subject);
$app->ispcmail->setMailText($text);
@@ -60,52 +61,6 @@
$app->ispcmail->send($to);
$app->ispcmail->finish();
- /* left in here just for the case...
- if($filepath != '') {
- if(!file_exists($filepath)) $app->error("Mail attachement does not exist ".$filepath);
-
- $content = file_get_contents($filepath);
- $content = chunk_split(base64_encode($content));
- $uid = strtoupper(md5(uniqid(time())));
- $subject = "=?utf-8?B?".base64_encode($subject)."?=";
-
- if($filename == '') {
- $path_parts = pathinfo($filepath);
- $filename = $path_parts["basename"];
- unset($path_parts);
- }
-
- $header = "Return-Path: $from\nFrom: $from\nReply-To: $from\n";
- if($cc != '') $header .= "Cc: $cc\n";
- if($bcc != '') $header .= "Bcc: $bcc\n";
- $header .= "MIME-Version: 1.0\n";
- $header .= "Content-Type: multipart/mixed; boundary=$uid\n";
-
- $header .= "--$uid\n";
- $header .= "Content-Type: text/plain;\n\tcharset=\"UTF-8\"\n";
- $header .= "Content-Transfer-Encoding: 8bit\n\n";
- $header .= "$text\n";
-
- $header .= "--$uid\n";
- $header .= "Content-Type: $filetype; name=\"$filename\"\n";
-
- $header .= "Content-Transfer-Encoding: base64\n";
- $header .= "Content-Disposition: attachment; filename=\"$filename\"\n\n";
- $header .= "$content\n";
-
- $header .= "--$uid--";
-
- mail($to, $subject, "", $header);
- } else {
- $header = "From: $from\nReply-To: $from\n";
- if($cc != '') $header .= "Cc: $cc\n";
- if($bcc != '') $header .= "Bcc: $bcc\n";
- $header .= "Content-Type: text/plain;\n\tcharset=\"UTF-8\"\n";
- $header .= "Content-Transfer-Encoding: 8bit\n\n";
- $subject = "=?utf-8?B?".base64_encode($subject)."?=";
- mail($to, $subject, $text, $header);
- }
- */
return true;
}
@@ -117,9 +72,11 @@
return $out;
}
- public function currency_format($number) {
+ public function currency_format($number, $view = '') {
global $app;
- $number_format_decimals = (int)$app->lng('number_format_decimals');
+ if($view != '') $number_format_decimals = (int)$app->lng('number_format_decimals_'.$view);
+ if(!$number_format_decimals) $number_format_decimals = (int)$app->lng('number_format_decimals');
+
$number_format_dec_point = $app->lng('number_format_dec_point');
$number_format_thousands_sep = $app->lng('number_format_thousands_sep');
if($number_format_thousands_sep == 'number_format_thousands_sep') $number_format_thousands_sep = '';
@@ -127,10 +84,21 @@
}
public function get_ispconfig_url() {
+ global $app;
+
$url = (stristr($_SERVER['SERVER_PROTOCOL'],'HTTPS') || stristr($_SERVER['HTTPS'],'on'))?'https':'http';
- $url .= '://'.$_SERVER['SERVER_NAME'];
- if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
- $url .= ':'.$_SERVER['SERVER_PORT'];
+ if($_SERVER['SERVER_NAME'] != '_') {
+ $url .= '://'.$_SERVER['SERVER_NAME'];
+ if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
+ $url .= ':'.$_SERVER['SERVER_PORT'];
+ }
+ } else {
+ $app->uses("getconf");
+ $server_config = $app->getconf->get_server_config(1,'server');
+ $url .= '://'.$server_config['hostname'];
+ if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
+ $url .= ':'.$_SERVER['SERVER_PORT'];
+ }
}
return $url;
}
@@ -299,8 +267,92 @@
return $result_array;
}
-
+ public function intval($string, $force_numeric = false) {
+ if(intval($string) == 2147483647 || ($string > 0 && intval($string) < 0)) {
+ if($force_numeric == true) return floatval($string);
+ elseif(preg_match('/^([-]?)[0]*([1-9][0-9]*)([^0-9].*)*$/', $string, $match)) return $match[1].$match[2];
+ else return 0;
+ } else {
+ return intval($string);
+ }
+ }
+
+ public function formatBytes($size, $precision = 2) {
+ $base=log($size)/log(1024);
+ $suffixes=array('','k','M','G','T');
+ return round(pow(1024,$base-floor($base)),$precision).$suffixes[floor($base)];
+ }
+
+ /** IDN converter wrapper.
+ * all converter classes should be placed in ISPC_CLASS_PATH.'/idn/'
+ */
+ private function _idn_encode_decode($domain, $encode = true) {
+ if($domain == '') return '';
+ if(preg_match('/^[0-9\.]+$/', $domain)) return $domain; // may be an ip address - anyway does not need to bee encoded
+
+ // get domain and user part if it is an email
+ $user_part = false;
+ if(strpos($domain, '@') !== false) {
+ $user_part = substr($domain, 0, strrpos($domain, '@'));
+ $domain = substr($domain, strrpos($domain, '@') + 1);
+ }
+
+ if($encode == true) {
+ if(function_exists('idn_to_ascii')) {
+ $domain = idn_to_ascii($domain);
+ } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) {
+ /* use idna class:
+ * @author Matthias Sommerfeld <mso@phlylabs.de>
+ * @copyright 2004-2011 phlyLabs Berlin, http://phlylabs.de
+ * @version 0.8.0 2011-03-11
+ */
+
+ if(!is_object($this->idn_converter) || $this->idn_converter_name != 'idna_convert.class') {
+ include_once(ISPC_CLASS_PATH.'/idn/idna_convert.class.php');
+ $this->idn_converter = new idna_convert(array('idn_version' => 2008));
+ $this->idn_converter_name = 'idna_convert.class';
+ }
+ $domain = $this->idn_converter->encode($domain);
+ }
+ } else {
+ if(function_exists('idn_to_utf8')) {
+ $domain = idn_to_utf8($domain);
+ } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) {
+ /* use idna class:
+ * @author Matthias Sommerfeld <mso@phlylabs.de>
+ * @copyright 2004-2011 phlyLabs Berlin, http://phlylabs.de
+ * @version 0.8.0 2011-03-11
+ */
+
+ if(!is_object($this->idn_converter) || $this->idn_converter_name != 'idna_convert.class') {
+ include_once(ISPC_CLASS_PATH.'/idn/idna_convert.class.php');
+ $this->idn_converter = new idna_convert(array('idn_version' => 2008));
+ $this->idn_converter_name = 'idna_convert.class';
+ }
+ $domain = $this->idn_converter->decode($domain);
+ }
+ }
+
+ if($user_part !== false) return $user_part . '@' . $domain;
+ else return $domain;
+ }
+
+ public function idn_encode($domain) {
+ $domains = explode("\n", $domain);
+ for($d = 0; $d < count($domains); $d++) {
+ $domains[$d] = $this->_idn_encode_decode($domains[$d], true);
+ }
+ return implode("\n", $domains);
+ }
+
+ public function idn_decode($domain) {
+ $domains = explode("\n", $domain);
+ for($d = 0; $d < count($domains); $d++) {
+ $domains[$d] = $this->_idn_encode_decode($domains[$d], false);
+ }
+ return implode("\n", $domains);
+ }
}
-?>
\ No newline at end of file
+?>
--
Gitblit v1.9.1