📄 functions_general.php
字号:
if (strlen($year) != 4) {
return false;
}
if (!settype($year, 'integer') || !settype($month, 'integer') || !settype($day, 'integer')) {
return false;
}
if ($month > 12 || $month < 1) {
return false;
}
if ($day < 1) {
return false;
}
if (zen_is_leap_year($year)) {
$no_of_days[1] = 29;
}
if ($day > $no_of_days[$month - 1]) {
return false;
}
$date_array = array($year, $month, $day);
return true;
}
////
// Check if year is a leap year
function zen_is_leap_year($year) {
if ($year % 100 == 0) {
if ($year % 400 == 0) return true;
} else {
if (($year % 4) == 0) return true;
}
return false;
}
////
// Return table heading with sorting capabilities
function zen_create_sort_heading($sortby, $colnum, $heading) {
global $PHP_SELF;
$sort_prefix = '';
$sort_suffix = '';
if ($sortby) {
$sort_prefix = '<a href="' . zen_href_link($_GET['main_page'], zen_get_all_get_params(array('page', 'info', 'sort')) . 'page=1&sort=' . $colnum . ($sortby == $colnum . 'a' ? 'd' : 'a')) . '" title="' . zen_output_string(TEXT_SORT_PRODUCTS . ($sortby == $colnum . 'd' || substr($sortby, 0, 1) != $colnum ? TEXT_ASCENDINGLY : TEXT_DESCENDINGLY) . TEXT_BY . $heading) . '" class="productListing-heading">' ;
$sort_suffix = (substr($sortby, 0, 1) == $colnum ? (substr($sortby, 1, 1) == 'a' ? PRODUCT_LIST_SORT_ORDER_ASCENDING : PRODUCT_LIST_SORT_ORDER_DESCENDING) : '') . '</a>';
}
return $sort_prefix . $heading . $sort_suffix;
}
////
// Return a product ID with attributes
/*
function zen_get_uprid_OLD($prid, $params) {
$uprid = $prid;
if ( (is_array($params)) && (!strstr($prid, '{')) ) {
while (list($option, $value) = each($params)) {
$uprid = $uprid . '{' . $option . '}' . $value;
}
}
return $uprid;
}
*/
////
// Return a product ID with attributes
function zen_get_uprid($prid, $params) {
//print_r($params);
$uprid = $prid;
if ( (is_array($params)) && (!strstr($prid, ':')) ) {
while (list($option, $value) = each($params)) {
if (is_array($value)) {
while (list($opt, $val) = each($value)) {
$uprid = $uprid . '{' . $option . '}' . trim($opt);
}
break;
}
//CLR 030714 Add processing around $value. This is needed for text attributes.
$uprid = $uprid . '{' . $option . '}' . trim($value);
}
//CLR 030228 Add else stmt to process product ids passed in by other routines.
$md_uprid = '';
$md_uprid = md5($uprid);
return $prid . ':' . $md_uprid;
} else {
return $prid;
}
}
////
// Return a product ID from a product ID with attributes
function zen_get_prid($uprid) {
$pieces = explode(':', $uprid);
return $pieces[0];
}
////
// Get the number of times a word/character is present in a string
function zen_word_count($string, $needle) {
$temp_array = split($needle, $string);
return sizeof($temp_array);
}
////
function zen_count_modules($modules = '') {
$count = 0;
if (empty($modules)) return $count;
$modules_array = split(';', $modules);
for ($i=0, $n=sizeof($modules_array); $i<$n; $i++) {
$class = substr($modules_array[$i], 0, strrpos($modules_array[$i], '.'));
if (is_object($GLOBALS[$class])) {
if ($GLOBALS[$class]->enabled) {
$count++;
}
}
}
return $count;
}
////
function zen_count_payment_modules() {
return zen_count_modules(MODULE_PAYMENT_INSTALLED);
}
////
function zen_count_shipping_modules() {
return zen_count_modules(MODULE_SHIPPING_INSTALLED);
}
////
function zen_create_random_value($length, $type = 'mixed') {
if ( ($type != 'mixed') && ($type != 'chars') && ($type != 'digits')) return false;
$rand_value = '';
while (strlen($rand_value) < $length) {
if ($type == 'digits') {
$char = zen_rand(0,9);
} else {
$char = chr(zen_rand(0,255));
}
if ($type == 'mixed') {
if (eregi('^[a-z0-9]$', $char)) $rand_value .= $char;
} elseif ($type == 'chars') {
if (eregi('^[a-z]$', $char)) $rand_value .= $char;
} elseif ($type == 'digits') {
if (ereg('^[0-9]$', $char)) $rand_value .= $char;
}
}
return $rand_value;
}
////
function zen_array_to_string($array, $exclude = '', $equals = '=', $separator = '&') {
if (!is_array($exclude)) $exclude = array();
if (!is_array($array)) $array = array();
$get_string = '';
if (sizeof($array) > 0) {
while (list($key, $value) = each($array)) {
if ( (!in_array($key, $exclude)) && ($key != 'x') && ($key != 'y') ) {
$get_string .= $key . $equals . $value . $separator;
}
}
$remove_chars = strlen($separator);
$get_string = substr($get_string, 0, -$remove_chars);
}
return $get_string;
}
////
function zen_not_null($value) {
if (is_array($value)) {
if (sizeof($value) > 0) {
return true;
} else {
return false;
}
} else {
if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {
return true;
} else {
return false;
}
}
}
////
// Checks to see if the currency code exists as a currency
// TABLES: currencies
function zen_currency_exists($code) {
global $db;
$code = zen_db_prepare_input($code);
$currency_code = "select currencies_id
from " . TABLE_CURRENCIES . "
where code = '" . zen_db_input($code) . "'";
$currency = $db->Execute($currency_code);
if ($currency->RecordCount()) {
return strtoupper($code);
} else {
return false;
}
}
////
function zen_string_to_int($string) {
return (int)$string;
}
////
// Return a random value
function zen_rand($min = null, $max = null) {
static $seeded;
if (!isset($seeded)) {
mt_srand((double)microtime()*1000000);
$seeded = true;
}
if (isset($min) && isset($max)) {
if ($min >= $max) {
return $min;
} else {
return mt_rand($min, $max);
}
} else {
return mt_rand();
}
}
////
function zen_get_top_level_domain($url) {
if (strpos($url, '://')) {
$url = parse_url($url);
$url = $url['host'];
}
//echo $url;
$domain_array = explode('.', $url);
$domain_size = sizeof($domain_array);
if ($domain_size > 1) {
if (SESSION_USE_FQDN == 'True') return $url;
if (is_numeric($domain_array[$domain_size-2]) && is_numeric($domain_array[$domain_size-1])) {
return false;
} else {
if ($domain_size > 3) {
return $domain_array[$domain_size-3] . '.' . $domain_array[$domain_size-2] . '.' . $domain_array[$domain_size-1];
} else {
return $domain_array[$domain_size-2] . '.' . $domain_array[$domain_size-1];
}
}
} else {
return false;
}
}
////
function zen_setcookie($name, $value = '', $expire = 0, $path = '/', $domain = '', $secure = 0) {
setcookie($name, $value, $expire, $path, $domain, $secure);
}
////
function zen_get_ip_address() {
if (isset($_SERVER)) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
} else {
if (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
} else {
$ip = getenv('REMOTE_ADDR');
}
}
return $ip;
}
// nl2br() prior PHP 4.2.0 did not convert linefeeds on all OSs (it only converted \n)
function zen_convert_linefeeds($from, $to, $string) {
if ((PHP_VERSION < "4.0.5") && is_array($from)) {
return ereg_replace('(' . implode('|', $from) . ')', $to, $string);
} else {
return str_replace($from, $to, $string);
}
}
////
function is_product_valid($product_id, $coupon_id) {
global $db;
$coupons_query = "SELECT * FROM " . TABLE_COUPON_RESTRICT . "
WHERE coupon_id = '" . $coupon_id . "'
ORDER BY coupon_restrict ASC";
$coupons = $db->Execute($coupons_query);
$product_query = "SELECT products_model FROM " . TABLE_PRODUCTS . "
WHERE products_id = '" . (int)$product_id . "'";
$product = $db->Execute($product_query);
if (ereg('^GIFT', $product->fields['products_model'])) {
return false;
}
// modified to manage restrictions better - leave commented for now
if ($coupons->RecordCount() == 0) return true;
if ($coupons->RecordCount() == 1) {
// If product is restricted(deny) and is same as tested prodcut deny
if (($coupons->fields['product_id'] != 0) && $coupons->fields['product_id'] == (int)$product_id && $coupons->fields['coupon_restrict']=='Y') return false;
// If product is not restricted(allow) and is not same as tested prodcut deny
if (($coupons->fields['product_id'] != 0) && $coupons->fields['product_id'] != (int)$product_id && $coupons->fields['coupon_restrict']=='N') return false;
// if category is restricted(deny) and product in category deny
if (($coupons->fields['category_id'] !=0) && (zen_product_in_category($product_id, $coupons->fields['category_id'])) && ($coupons->fields['coupon_restrict']=='Y')) return false;
// if category is not restricted(allow) and product not in category deny
if (($coupons->fields['category_id'] !=0) && (!zen_product_in_category($product_id, $coupons->fields['category_id'])) && ($coupons->fields['coupon_restrict']=='N')) return false;
return true;
}
$allow_for_category = validate_for_category($product_id, $coupon_id);
$allow_for_product = validate_for_product($product_id, $coupon_id);
// echo '#'.$product_id . '#' . $allow_for_category;
// echo '#'.$product_id . '#' . $allow_for_product;
if ($allow_for_category == 'none') {
if ($allow_for_product === 'none') return true;
if ($allow_for_product === true) return true;
if ($allow_for_product === false) return false;
}
if ($allow_for_category === true) {
if ($allow_for_product === 'none') return true;
if ($allow_for_product === true) return true;
if ($allow_for_product === false) return false;
}
if ($allow_for_category === false) {
if ($allow_for_product === 'none') return false;
if ($allow_for_product === true) return true;
if ($allow_for_product === false) return false;
}
return false; //should never get here
}
function validate_for_category($product_id, $coupon_id) {
global $db;
$retVal = 'none';
$productCatPath = zen_get_product_path($product_id);
$catPathArray = array_reverse(explode('_', $productCatPath));
$sql = "SELECT count(*) AS total
FROM " . TABLE_COUPON_RESTRICT . "
WHERE category_id = -1
AND coupon_restrict = 'Y'";
$checkQuery = $db->execute($sql);
foreach ($catPathArray as $catPath) {
$sql = "SELECT * FROM " . TABLE_COUPON_RESTRICT . "
WHERE category_id = " . $catPath . "
AND coupon_id = " . $coupon_id;
$result = $db->execute($sql);
if ($result->recordCount() > 0 && $result->fields['coupon_restrict'] == 'N') return true;
if ($result->recordCount() > 0 && $result->fields['coupon_restrict'] == 'Y') return false;
}
if ($checkQuery->fields['total'] > 0) {
return false;
} else {
return 'none';
}
}
function validate_for_product($product_id, $coupon_id) {
global $db;
$sql = "SELECT * FROM " . TABLE_COUPON_RESTRICT . "
WHERE product_id = " . (int)$product_id . "
AND coupon_id = " . $coupon_id . " LIMIT 1";
$result = $db->execute($sql);
if ($result->recordCount() > 0) {
if ($result->fields['coupon_restrict'] == 'N') return true;
if ($result->fields['coupon_restrict'] == 'Y') return false;
} else {
return 'none';
}
}
////
function zen_db_input($string) {
return addslashes($string);
}
////
function zen_db_prepare_input($string) {
if (is_string($string)) {
return trim(zen_sanitize_string(stripslashes($string)));
} elseif (is_array($string)) {
reset($string);
while (list($key, $value) = each($string)) {
$string[$key] = zen_db_prepare_input($value);
}
return $string;
} else {
return $string;
}
}
////
function zen_db_perform($table, $data, $action = 'insert', $parameters = '', $link = 'db_link') {
global $db;
reset($data);
if (strtolower($action) == 'insert') {
$query = 'INSERT INTO ' . $table . ' (';
while (list($columns, ) = each($data)) {
$query .= $columns . ', ';
}
$query = substr($query, 0, -2) . ') VALUES (';
reset($data);
while (list(, $value) = each($data)) {
switch ((string)$value) {
case 'now()':
$query .= 'now(), ';
break;
case 'null':
$query .= 'null, ';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -