function fn_update_access_restriction_rule($rule_data, $rule_id = 0, $lang_code = DESCR_SL) { if ($rule_data['section'] == 'ip' || $rule_data['section'] == 'admin_panel') { $visitor_ip = fn_get_ip(true); if (!empty($rule_data['range_from']) || !empty($rule_data['range_to'])) { $range_from = empty($rule_data['range_from']) ? $rule_data['range_to'] : $rule_data['range_from']; $range_to = empty($rule_data['range_to']) ? $rule_data['range_from'] : $rule_data['range_to']; if (fn_validate_ip($range_from, true) && fn_validate_ip($range_to, true)) { $type_s = $rule_data['section'] == 'ip' ? 'ip' : 'aa'; $_data = array('ip_from' => sprintf("%u", ip2long($range_from)), 'ip_to' => sprintf("%u", ip2long($range_to)), 'timestamp' => TIME, 'status' => $rule_data['status'], 'type' => $range_from == $range_to ? $type_s . 's' : $type_s . 'r'); if ($rule_data['section'] == 'admin_panel' && Registry::get('addons.access_restrictions.admin_reverse_ip_access') != 'Y' && $_data['ip_from'] <= $visitor_ip['host'] && $_data['ip_to'] >= $visitor_ip['host']) { fn_set_notification('W', __('warning', '', $lang_code), __('warning_of_ip_adding', array('[entered_ip]' => long2ip($_data['ip_from']) . ($_data['ip_from'] == $_data['ip_to'] ? '' : '-' . long2ip($_data['ip_to'])), '[your_ip]' => long2ip($visitor_ip['host'])), $lang_code)); } else { $rule_id = $_data['item_id'] = db_query("INSERT INTO ?:access_restriction ?e", $_data); $_data['reason'] = $rule_data['reason']; foreach (fn_get_translation_languages() as $_data['lang_code'] => $v) { db_query("INSERT INTO ?:access_restriction_reason_descriptions ?e", $_data); } } } } // Add domains } elseif ($rule_data['section'] == 'domain') { if (fn_validate_domain_name($rule_data['value'], true)) { $rule_data['type'] = 'd'; // Domain $rule_data['timestamp'] = TIME; $rule_id = $rule_data['item_id'] = db_query("INSERT INTO ?:access_restriction ?e", $rule_data); foreach (fn_get_translation_languages() as $rule_data['lang_code'] => $v) { db_query("INSERT INTO ?:access_restriction_reason_descriptions ?e", $rule_data); } } // Add emails } elseif ($rule_data['section'] == 'email') { if (strstr($rule_data['value'], '@') && strpos($rule_data['value'], '*@') !== 0) { if (fn_validate_email($rule_data['value'], true) && fn_validate_domain_name(substr($rule_data['value'], strpos($rule_data['value'], '@')), true)) { $rule_data['type'] = 'es'; // specific E-Mail $rule_data['timestamp'] = TIME; $rule_id = $rule_data['item_id'] = db_query("INSERT INTO ?:access_restriction ?e", $rule_data); foreach (fn_get_translation_languages() as $rule_data['lang_code'] => $v) { db_query("INSERT INTO ?:access_restriction_reason_descriptions ?e", $rule_data); } } } else { $_domain = strpos($rule_data['value'], '*@') === 0 ? substr($rule_data['value'], 2) : $rule_data['value']; if (fn_validate_domain_name($_domain, true)) { $rule_data['type'] = 'ed'; // E-Mail domain $rule_data['timestamp'] = TIME; $rule_id = $rule_data['item_id'] = db_query("INSERT INTO ?:access_restriction ?e", $rule_data); foreach (fn_get_translation_languages() as $rule_data['lang_code'] => $v) { db_query("INSERT INTO ?:access_restriction_reason_descriptions ?e", $rule_data); } } } // Add credit cards } elseif ($rule_data['section'] == 'credit_card') { if (fn_validate_cc_number($rule_data['value'], true)) { $rule_data['type'] = 'cc'; // specific Credit Card Number $rule_data['timestamp'] = TIME; $rule_id = $rule_data['item_id'] = db_query("INSERT INTO ?:access_restriction ?e", $rule_data); foreach (fn_get_translation_languages() as $rule_data['lang_code'] => $v) { db_query("INSERT INTO ?:access_restriction_reason_descriptions ?e", $rule_data); } } } return $rule_id; }
// E-Mail domain $_data['timestamp'] = TIME; $_data['item_id'] = db_query("INSERT INTO ?:access_restriction ?e", $_data); $_data['reason'] = $v['reason']; foreach ((array) Registry::get('languages') as $_data['lang_code'] => $v) { db_query("INSERT INTO ?:access_restriction_reason_descriptions ?e", $_data); } } } } // Add credit cards } elseif ($_REQUEST['selected_section'] == 'credit_card') { foreach ($_REQUEST['credit_card'] as $k => $v) { $_data = array(); $v = str_replace(array("-", " "), "", $v); if (fn_validate_cc_number($v['value'], true)) { $_data['status'] = $v['status']; $_data['value'] = $v['value']; $_data['type'] = 'cc'; // specific Credit Card Number $_data['timestamp'] = TIME; $_data['item_id'] = db_query("INSERT INTO ?:access_restriction ?e", $_data); $_data['reason'] = $v['reason']; foreach ((array) Registry::get('languages') as $_data['lang_code'] => $v) { db_query("INSERT INTO ?:access_restriction_reason_descriptions ?e", $_data); } } } } } if ($mode == 'update') {