本文整理汇总了PHP中check_ban函数的典型用法代码示例。如果您正苦于以下问题:PHP check_ban函数的具体用法?PHP check_ban怎么用?PHP check_ban使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了check_ban函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: check_ban_proxy
function check_ban_proxy() {
global $globals;
if ($globals['development']) return false; // only for development
if (($ban = check_ban($globals['user_ip'], 'proxy'))) return $ban;
else return check_ban($_SERVER['REMOTE_ADDR'], 'proxy');
}
示例2: check_url
function check_url($url, $check_local = true, $first_level = false)
{
global $globals, $current_user;
if (!preg_match('/^http[s]*:/', $url)) {
return false;
}
$url_components = @parse_url($url);
if (!$url_components) {
return false;
}
if (!preg_match('/[a-z]+/', $url_components['host'])) {
return false;
}
$quoted_domain = preg_quote(get_server_name());
if ($check_local && preg_match("/^{$quoted_domain}\$/", $url_components['host'])) {
$globals['ban_message'] = _('el servidor es local');
syslog(LOG_NOTICE, "Meneame, server name is local name ({$current_user->user_login}): {$url}");
return false;
}
require_once mnminclude . 'ban.php';
if (check_ban($url, 'hostname', false, $first_level) || check_ban_list($url_components[host], $globals['forbiden_domains'])) {
syslog(LOG_NOTICE, "Meneame, server name is banned ({$current_user->user_login}): {$url}");
$this->banned = true;
return false;
}
return true;
}
示例3: check_ban_proxy
function check_ban_proxy()
{
global $globals;
if ($ban = check_ban($globals['user_ip'], 'proxy')) {
return $ban;
} else {
return check_ban($_SERVER['REMOTE_ADDR'], 'proxy');
}
}
示例4: elseif
$shower = "messages.php?session={$session}";
if (!in_array($chat_type, $chat_types)) {
$chat_type = $chat_types[0];
}
if ($chat_type == "tail") {
$shower = "{$daemon_url}?{$session}";
} elseif ($chat_type == "reload") {
$shower = "messages.php?session={$session}";
} elseif ($chat_type == "php_tail") {
$shower = "tail.php?session={$session}";
} elseif ($chat_type == "js_tail") {
$shower = "js_frameset.php?session={$session}";
}
#ban check
include $ld_engine_path . "ban_check.php";
if (check_ban(array("un|" . to_canon_nick($user_name), "ip|" . $REMOTE_ADDR, "ch|" . $c_hash, "bh|" . $browser_hash, "sn|" . substr($REMOTE_ADDR, 0, strrpos($REMOTE_ADDR, "."))))) {
$error_text = $w_banned;
include $file_path . "designes/" . $design . "/error_page.php";
exit;
}
#???????????
if ($c_user_color == "") {
$user_color = $default_color;
} else {
$user_color = $c_user_color;
}
$registered_user = 0;
$users = array();
$htmlnick = "";
//////////////////////////////////////////! ÇÀÏÈÑÜ
include $ld_engine_path . "voc_user_data.php";
示例5: do_submit1
function do_submit1() {
global $db, $dblang, $current_user, $globals;
$url = clean_input_url($_POST['url']);
$url = preg_replace('/^http:\/\/http:\/\//', 'http://', $url); // Some users forget to delete the foo http://
if (! preg_match('/^\w{3,6}:\/\//', $url)) { // http:// forgotten, add it
$url = 'http://'.$url;
}
$url = preg_replace('/#[^\/]*$/', '', $url); // Remove the "#", people just abuse
echo '<div>'."\n";
$new_user = false;
if (!check_link_key()) {
echo '<p class="error"><strong>'._('clave incorrecta').'</strong></p> ';
echo '</div>'. "\n";
return;
}
if ($globals['min_karma_for_links'] > 0 && $current_user->user_karma < $globals['min_karma_for_links'] ) {
echo '<p class="error"><strong>'._('no tienes el mínimo de karma para enviar una nueva historia').'</strong></p> ';
echo '</div>'. "\n";
return;
}
// Don't allow to send a link by a clone
$hours = intval($globals['user_links_clon_interval']);
$clones = $current_user->get_clones($hours+1);
if ($hours > 0 && $clones) {
$l = implode(',', $clones);
$c = (int) $db->get_var("select count(*) from links where link_status!='published' and link_date > date_sub(now(), interval $hours hour) and link_author in ($l)");
if ($c > 0) {
echo '<p class="error">'._('ya se envió con otro usuario «clon» en las últimas horas'). ", "._('disculpa las molestias'). ' </p>';
syslog(LOG_NOTICE, "Meneame, clon submit ($current_user->user_login): $_POST[url]");
echo '<br style="clear: both;" />' . "\n";
echo '</div>'. "\n";
return;
}
}
// Check the number of links sent by a user
$queued_24_hours = (int) $db->get_var("select count(*) from links where link_status!='published' and link_date > date_sub(now(), interval 24 hour) and link_author=$current_user->user_id");
if (!$globals['development'])
if ($globals['limit_user_24_hours'] && $queued_24_hours > $globals['limit_user_24_hours']) {
echo '<p class="error">'._('debes esperar, tienes demasiados envíos en cola de las últimas 24 horas'). " ($queued_24_hours), "._('disculpa las molestias'). ' </p>';
syslog(LOG_NOTICE, "Meneame, too many queued in 24 hours ($current_user->user_login): $_POST[url]");
echo '<br style="clear: both;" />' . "\n";
echo '</div>'. "\n";
return;
}
// check the URL is OK and that it resolves
$url_components = @parse_url($url);
if (!$url_components || ! $url_components['host'] || gethostbyname($url_components['host']) == $url_components['host']) {
echo '<p class="error"><strong>'._('URL o nombre de servidor erróneo').'</strong></p> ';
echo '<p>'._('el nombre del servidor es incorrecto o éste tiene problemas para resolver el nombre'). ' </p>';
syslog(LOG_NOTICE, "Meneame, hostname error ($current_user->user_login): $url");
print_empty_submit_form();
echo '</div>'. "\n";
return;
}
$enqueued_last_minutes = (int) $db->get_var("select count(*) from links where link_status='queued' and link_date > date_sub(now(), interval 3 minute)");
if ($current_user->user_karma > $globals['limit_3_minutes_karma']) $enqueued_limit = $globals['limit_3_minutes'] * 1.5;
else $enqueued_limit = $globals['limit_3_minutes'];
if ($enqueued_last_minutes > $enqueued_limit) {
echo '<p class="error"><strong>'._('exceso de envíos').':</strong></p>';
echo '<p>'._('se han enviado demasiadas historias en los últimos 3 minutos'). " ($enqueued_last_minutes > $enqueued_limit), "._('disculpa las molestias'). ' </p>';
syslog(LOG_NOTICE, "Meneame, too many queued ($current_user->user_login): $_POST[url]");
echo '</div>'. "\n";
return;
}
// Check the user does not have too many drafts
$minutes = intval($globals['draft_time'] / 60) + 10;
$drafts = (int) $db->get_var("select count(*) from links where link_author=$current_user->user_id and link_date > date_sub(now(), interval $minutes minute) and link_status='discard' and link_votes = 0");
if (!$globals['development'])
if ($drafts > $globals['draft_limit']) {
echo '<p class="error"><strong>'._('demasiados borradores').':</strong></p>';
echo '<p>'._('has hecho demasiados intentos, debes esperar o continuar con ellos desde la'). ' <a href="shakeit.php?meta=_discarded">'. _('cola de descartadas').'</a></p>';
syslog(LOG_NOTICE, "Meneame, too many drafts ($current_user->user_login): $_POST[url]");
echo '</div>'. "\n";
return;
}
// Delete dangling drafts
if ($drafts > 0) {
$db->query("delete from links where link_author=$current_user->user_id and link_date > date_sub(now(), interval 30 minute) and link_date < date_sub(now(), interval 10 minute) and link_status='discard' and link_votes = 0");
}
// Check for banned IPs
if (!$globals['development'])
if(($ban = check_ban($globals['user_ip'], 'ip', true)) || ($ban = check_ban_proxy())) {
echo '<p class="error"><strong>'._('dirección IP no permitida para enviar').':</strong> '.$globals['user_ip'].'</p>';
echo '<p><strong>'._('Razón').'</strong>: '.$ban['comment'].'</p>';
if ($ban['expire'] > 0) {
echo '<p class="note"><strong>'._('caduca').'</strong>: '.get_date_time($ban['expire']).'</p>';
}
syslog(LOG_NOTICE, "Meneame, banned IP $globals[user_ip] ($current_user->user_login): $url");
//.........这里部分代码省略.........
示例6: do_submit1
function do_submit1()
{
global $db, $dblang, $current_user, $globals;
$url = clean_input_url($_POST['url']);
$url = preg_replace('/^http:\\/\\/http:\\/\\//', 'http://', $url);
// Some users forget to delete the foo http://
$url = preg_replace('/#.*$/', '', $url);
// Remove the "#", people just abuse
do_banner_top();
echo '<div id="container-wide">' . "\n";
echo '<div id="genericform-contents">' . "\n";
$new_user = false;
if (!check_link_key()) {
echo '<p class="error"><strong>' . _('clave incorrecta') . '</strong></p> ';
echo '</div>' . "\n";
return;
}
if ($globals['min_karma_for_links'] > 0 && $current_user->user_karma < $globals['min_karma_for_links']) {
echo '<p class="error"><strong>' . _('no tienes el mínimo de karma para enviar una nueva historia') . '</strong></p> ';
echo '</div>' . "\n";
return;
}
$enqueued_last_minutes = (int) $db->get_var("select count(*) from links where link_status='queued' and link_date > date_sub(now(), interval 3 minute)");
if ($current_user->user_karma > 10) {
$enqueued_limit = $globals['limit_3_minutes'] * 1.5;
} else {
$enqueued_limit = $globals['limit_3_minutes'];
}
if ($enqueued_last_minutes > $enqueued_limit) {
echo '<p class="error"><strong>' . _('Exceso de envíos') . ':</strong></p>';
echo '<p>' . _('Se han enviado demasiadas noticias en los últimos 3 minutos') . " ({$enqueued_last_minutes} > {$enqueued_limit}), " . _('disculpa las molestias') . ' </p>';
syslog(LOG_NOTICE, "Meneame, too many queued ({$current_user->user_login}): {$_POST['url']}");
echo '</div>' . "\n";
return;
}
// Check the user does not have too many drafts
$drafts = (int) $db->get_var("select count(*) from links where link_author={$current_user->user_id} and link_date > date_sub(now(), interval 30 minute) and link_status='discard' and link_votes = 0");
if ($drafts > 3) {
echo '<p class="error"><strong>' . _('Demasiados borradores') . ':</strong></p>';
echo '<p>' . _('Has hecho demasiados intentos, debes esperar o continuar con ellos desde la') . ' <a href="shakeit.php?meta=_discarded">' . _('cola de descartadas') . '</a></p>';
syslog(LOG_NOTICE, "Meneame, too many drafts ({$current_user->user_login}): {$_POST['url']}");
echo '</div>' . "\n";
return;
}
// Delete dangling drafts
if ($drafts > 0) {
$db->query("delete from links where link_author={$current_user->user_id} and link_date > date_sub(now(), interval 30 minute) and link_date < date_sub(now(), interval 10 minute) and link_status='discard' and link_votes = 0");
}
// Check for banned IPs
if (check_ban($globals['user_ip'], 'ip', true) || check_ban_proxy()) {
echo '<p class="error"><strong>' . _('Dirección IP no permitida para enviar') . ':</strong> ' . $globals['user_ip'] . ' (' . $globals['ban_message'] . ')</p>';
syslog(LOG_NOTICE, "Meneame, banned IP {$globals['user_ip']} ({$current_user->user_login}): {$url}");
print_empty_submit_form();
echo '</div>' . "\n";
return;
}
// Number of links sent by the user
$total_sents = (int) $db->get_var("select count(*) from links where link_author={$current_user->user_id}") - $drafts;
if ($total_sents > 0) {
$sents = (int) $db->get_var("select count(*) from links where link_author={$current_user->user_id} and link_date > date_sub(now(), interval 60 day)") - $drafts;
} else {
$new_user = true;
$sents = 0;
}
$register_date = $current_user->Date();
if ($globals['now'] - $register_date < 86400 * 3) {
$new_user = true;
}
// check that a new user also votes, not only sends links
// it requires $globals['min_user_votes'] votes
if ($new_user && $globals['min_user_votes'] > 0 && $current_user->user_karma < 6.1) {
$user_votes_total = (int) $db->get_var("select count(*) from votes where vote_type='links' and vote_user_id={$current_user->user_id}");
$user_votes = (int) $db->get_var("select count(*) from votes where vote_type='links' and vote_date > date_sub(now(), interval 72 hour) and vote_user_id={$current_user->user_id}");
$user_links = 1 + $db->get_var("select count(*) from links where link_author={$current_user->user_id} and link_date > date_sub(now(), interval 24 hour) and link_status != 'discard'");
$total_links = (int) $db->get_var("select count(*) from links where link_date > date_sub(now(), interval 24 hour) and link_status = 'queued'");
echo "<!-- {$user_votes_total}, {$user_links}, {$total_links} -->\n";
if ($sents == 0) {
// If is a new user, requires more votes, to avoid spam
$min_votes = $globals['min_user_votes'];
} else {
$min_votes = min(4, intval($total_links / 20)) * $user_links;
}
if ($current_user->user_level != 'god' && $current_user->user_level != 'admin' && $user_votes < $min_votes) {
$needed = $min_votes - $user_votes;
echo '<p class="error">';
if ($new_user) {
echo '<strong>' . _('¿es la primera vez que envías una noticia?') . '</strong></p> ';
echo '<p class="error-text">' . _('necesitas como mínimo') . " <strong>{$needed} " . _('votos') . '</strong><br/>';
} else {
echo '<strong>' . _('no tienes el mínimo de votos necesarios para enviar una nueva historia') . '</strong></p> ';
echo '<p class="error-text">' . _('necesitas votar como mínimo a') . " <strong>{$needed} " . _('noticias') . '</strong><br/>';
}
echo '<strong>' . _('no votes de forma apresurada, penaliza el karma') . '</strong><br/>';
echo '<a href="' . $globals['base_url'] . 'shakeit.php" target="_blank">' . _('haz clic aquí para ir a votar') . '</a></p>';
echo '<br style="clear: both;" />' . "\n";
echo '</div>' . "\n";
return;
}
}
// avoid spams, an extra security check
//.........这里部分代码省略.........
示例7: get_links
function get_links() {
global $current_user;
$this->links = array();
$this->banned = false;
$localdomain = preg_quote(get_server_name(), '/');
preg_match_all('/([\(\[:\.\s]|^)(https*:\/\/[^ \t\n\r\]\(\)\&]{5,70}[^ \t\n\r\]\(\)]*[^ .\t,\n\r\(\)\"\'\]\?])/i', $this->content, $matches);
foreach ($matches[2] as $match) {
require_once(mnminclude.'ban.php');
$link=clean_input_url($match);
$components = parse_url($link);
if ($components && ! preg_match("/.*$localdomain$/", $components['host'])) {
$link_ban = check_ban($link, 'hostname', false, true); // Mark this comment as containing a banned link
$this->banned |= $link_ban;
if ($link_ban) {
syslog(LOG_NOTICE, "Meneame: banned link in comment: $match ($current_user->user_login)");
}
if (array_search($components['host'], $this->links) === false)
array_push($this->links, $components['host']);
}
}
}
示例8: check_url
function check_url($url, $check_local = true, $first_level = false) {
global $globals, $current_user;
if(!preg_match('/^http[s]*:/', $url)) return false;
$url_components = @parse_url($url);
if (!$url_components) return false;
if (!preg_match('/[a-z]+/', $url_components['host'])) return false;
$quoted_domain = preg_quote(get_server_name());
if($check_local && preg_match("/^$quoted_domain$/", $url_components['host'])) {
$this->ban = array();
$this->ban['comment'] = _('el servidor es local');
syslog(LOG_NOTICE, "Meneame, server name is local name ($current_user->user_login): $url");
return false;
}
require_once(mnminclude.'ban.php');
if(($this->ban = check_ban($url, 'hostname', false, $first_level))) {
syslog(LOG_NOTICE, "Meneame, server name is banned ($current_user->user_login): $url");
$this->banned = true;
return false;
}
return true;
}
示例9: array
<?php
// The source code packaged with this file is Free Software, Copyright (C) 2005 by
// Ricardo Galli <gallir at uib dot es>.
// It's licensed under the AFFERO GENERAL PUBLIC LICENSE unless stated otherwise.
// You can get copies of the licenses here:
// http://www.affero.org/oagpl.html
// AFFERO GENERAL PUBLIC LICENSE is also included in the file called "COPYING".
include 'config.php';
include mnminclude . 'html1.php';
include_once mnminclude . 'ban.php';
$page_size = $globals['page_size'] * 2;
$items = array(_('usuario'), _('karma'), _('noticias'), _('noticias publicadas'), _('comentarios'), _('votos últimos 2 meses'));
if (check_ban($globals['user_ip'], 'proxy')) {
return;
}
// Warn, empty() return true even if sortby=0
if (!strlen($_GET['sortby']) > 0) {
$sortby = 1;
} else {
$sortby = intval($_GET['sortby']);
if ($sortby < 0 || $sortby > 3) {
$sortby = 1;
}
}
switch ($sortby) {
case 0:
$select = "SELECT user_id ";
$from_where = " FROM users ";
$order_by = " ORDER BY user_login ";
break;
示例10: check_email
function check_email($email)
{
global $globals;
require_once mnminclude . 'ban.php';
if (!preg_match('/^[a-zA-Z0-9_\\-\\.]+(\\+[a-zA-Z0-9_\\-\\.]+)*@[a-zA-Z0-9_\\-\\.]+\\.[a-zA-Z]{2,4}$/', $email)) {
return false;
}
if (check_ban(preg_replace('/^.*@/', '', $email), 'email') || check_ban_list($email, $globals['forbidden_email_domains'])) {
return false;
}
return true;
}
示例11: do_submit1
function do_submit1()
{
global $db, $dblang, $current_user, $globals, $errors;
$url = clean_input_url(urldecode($_POST['url']));
$url = preg_replace('/#[^\\/]*$/', '', $url);
// Remove the "#", people just abuse
$url = preg_replace('/^http:\\/\\/http:\\/\\//', 'http://', $url);
// Some users forget to delete the foo http://
if (!preg_match('/^\\w{3,6}:\\/\\//', $url)) {
// http:// forgotten, add it
$url = 'http://' . $url;
}
$new_user = false;
if (!check_link_key()) {
add_submit_error(_('clave incorrecta'));
return false;
}
if ($globals['min_karma_for_links'] > 0 && $current_user->user_karma < $globals['min_karma_for_links']) {
add_submit_error(_('no tienes el mínimo de karma para enviar una nueva historia'));
return false;
}
// Don't allow to send a link by a clone
$hours = intval($globals['user_links_clon_interval']);
$clones = $current_user->get_clones($hours + 1);
if ($hours > 0 && $clones) {
$l = implode(',', $clones);
$c = (int) $db->get_var("select count(*) from links where link_status!='published' and link_date > date_sub(now(), interval {$hours} hour) and link_author in ({$l})");
if ($c > 0) {
add_submit_error(_('ya se envió con otro usuario «clon» en las últimas horas') . ", " . _('disculpa las molestias'));
syslog(LOG_NOTICE, "Meneame, clon submit ({$current_user->user_login}): " . $_REQUEST['url']);
return false;
}
}
// Check the number of links sent by a user
$queued_24_hours = (int) $db->get_var("select count(*) from links where link_status!='published' and link_date > date_sub(now(), interval 24 hour) and link_author={$current_user->user_id}");
if ($globals['limit_user_24_hours'] && $queued_24_hours > $globals['limit_user_24_hours']) {
add_submit_error(_('debes esperar, tienes demasiados envíos en cola de las últimas 24 horas') . " ({$queued_24_hours}), " . _('disculpa las molestias'));
syslog(LOG_NOTICE, "Meneame, too many queued in 24 hours ({$current_user->user_login}): " . $_REQUEST['url']);
return false;
}
// check the URL is OK and that it resolves
$url_components = @parse_url($url);
if (!$url_components || !$url_components['host'] || gethostbyname($url_components['host']) == $url_components['host']) {
add_submit_error(_('URL o nombre de servidor erróneo'), _('el nombre del servidor es incorrecto o éste tiene problemas para resolver el nombre'));
syslog(LOG_NOTICE, "Meneame, hostname error ({$current_user->user_login}): {$url}");
return false;
}
$enqueued_last_minutes = (int) $db->get_var("select count(*) from links where link_status='queued' and link_date > date_sub(now(), interval 3 minute)");
if ($current_user->user_karma > $globals['limit_3_minutes_karma']) {
$enqueued_limit = $globals['limit_3_minutes'] * 1.5;
} else {
$enqueued_limit = $globals['limit_3_minutes'];
}
if ($enqueued_last_minutes > $enqueued_limit) {
//echo '<p class="error"><strong>'._('exceso de envíos').':</strong></p>';
//echo '<p>'._('se han enviado demasiadas historias en los últimos 3 minutos'). " ($enqueued_last_minutes > $enqueued_limit), "._('disculpa las molestias'). ' </p>';
//echo '</div>'. "\n";
add_submit_error(_('exceso de envíos'), _('se han enviado demasiadas historias en los últimos 3 minutos') . " ({$enqueued_last_minutes} > {$enqueued_limit}), " . _('disculpa las molestias'));
syslog(LOG_NOTICE, "Meneame, too many queued ({$current_user->user_login}): " . $_REQUEST['url']);
return false;
}
// Check the user does not have too many drafts
$minutes = intval($globals['draft_time'] / 60) + 10;
$drafts = (int) $db->get_var("select count(*) from links where link_author={$current_user->user_id} and link_date > date_sub(now(), interval {$minutes} minute) and link_status='discard' and link_votes = 0");
if ($drafts > $globals['draft_limit']) {
add_submit_error(_('demasiados borradores'), _('has hecho demasiados intentos, debes esperar o continuar con ellos desde la') . ' <a href="shakeit.php?meta=_discarded">' . _('cola de descartadas') . '</a></p>');
syslog(LOG_NOTICE, "Meneame, too many drafts ({$current_user->user_login}): " . $_REQUEST['url']);
return false;
}
// Delete dangling drafts
if ($drafts > 0) {
$db->query("delete from links where link_author={$current_user->user_id} and link_date > date_sub(now(), interval 30 minute) and link_date < date_sub(now(), interval 10 minute) and link_status='discard' and link_votes = 0");
}
// Check for banned IPs
if (($ban = check_ban($globals['user_ip'], 'ip', true)) || ($ban = check_ban_proxy())) {
if ($ban['expire'] > 0) {
$expires = _('caduca') . ': ' . get_date_time($ban['expire']);
} else {
$expires = '';
}
add_submit_error(_('dirección IP no permitida para enviar'), $expires);
syslog(LOG_NOTICE, "Meneame, banned IP " . $globals['user_ip'] . " ({$current_user->user_login}): {$url}");
return false;
}
// Number of links sent by the user
$total_sents = (int) $db->get_var("select count(*) from links where link_author={$current_user->user_id}") - $drafts;
if ($total_sents > 0) {
$sents = (int) $db->get_var("select count(*) from links where link_author={$current_user->user_id} and link_date > date_sub(now(), interval 60 day)") - $drafts;
} else {
$new_user = true;
$sents = 0;
}
$register_date = $current_user->Date();
if ($globals['now'] - $register_date < $globals['new_user_time']) {
$new_user = true;
}
// check that a new user also votes, not only sends links
// it requires $globals['min_user_votes'] votes
if ($new_user && $globals['min_user_votes'] > 0 && $current_user->user_karma < $globals['new_user_karma']) {
$user_votes_total = (int) $db->get_var("select count(*) from votes where vote_type='links' and vote_user_id={$current_user->user_id}");
//.........这里部分代码省略.........
示例12: intval
$pub_coef = $min_pub_coef + (1 - $min_pub_coef) * (time() - $last_site_published) / (3600 * $hours);
$dblink->karma *= $pub_coef;
$link->message .= '<br/> Last published: ' . intval((time() - $last_site_published) / 3600) . ' hours ago.';
}
// Check domain and user punishments
if (check_ban($link->url, 'punished_hostname', false, true)) {
$dblink->karma *= 0.75;
$link->message .= '<br/>' . $globals['ban_message'];
}
// check if it's "media" and the metacategory coefficient is low
if ($meta_coef[$dblink->parent] < 1.1 && ($link->content_type == 'image' || $link->content_type == 'video')) {
$dblink->karma *= 0.9;
$link->message .= '<br/>Image';
}
// Check if the user is banned disabled
if (check_ban($link->url, 'hostname', false, true)) {
$dblink->karma *= 0.66;
$link->message .= '<br/>Domain banned. ';
}
// Check if the domain is banned
if ($user->level == 'disabled') {
if (preg_match('/^_+[0-9]+_+$/', $user->username)) {
$link->message .= "<br/>{$user->username} disabled herself, penalized.";
} else {
$link->message .= "<br/>{$user->username} disabled, probably due to abuses, penalized.";
}
$dblink->karma *= 0.66;
}
// check differences, if > 4 store it
if (abs($link->karma - $dblink->karma) > 4) {
$link->message = sprintf("<br/>updated karma: %6d (%d, %d, %d) -> %-6d (%d, %d, %d)\n", $link->karma, $link->votes, $link->anonymous, $link->negatives, round($dblink->karma), $votes_pos, $votes_pos_anon, $votes_neg) . $link->message;
示例13: update_link_karma
function update_link_karma($site, $link)
{
global $db, $globals;
if (time() - $link->time_annotation('link-karma') < 75) {
echo "ALREADY CALCULATED {$link->uri}, ignoring\n";
return 0;
}
$site_info = SitesMgr::get_info($site);
echo "START {$site_info->name} WITH {$link->uri}\n";
$user = new User();
$user->id = $link->author;
$user->read();
$karma_pos_user = 0;
$karma_neg_user = 0;
$karma_pos_ano = 0;
User::calculate_affinity($link->author, $past_karma * 0.3);
// Calculate the real karma for the link
$link->calculate_karma();
$karma_new = $link->karma;
$link->message = '';
$changes = 0;
// TODO: $subs_coef is not available
// if (DEBUG ) $link->message .= "Sub: $link->sub_id coef: ".$subs_coef[$link->sub_id]." Init values: previous: $link->old_karma calculated: $link->karma new: $karma_new<br>\n";
// Verify last published from the same site
$hours = 8;
$min_pub_coef = 0.8;
$last_site_published = (int) $db->get_var("select SQL_NO_CACHE UNIX_TIMESTAMP(max(link_date)) from sub_statuses, links where id = {$site} and status = 'published' and date > date_sub(now(), interval {$hours} hour) and link_id = link and link_blog = {$link->blog} ");
if ($last_site_published > 0) {
$pub_coef = $min_pub_coef + (1 - $min_pub_coef) * (time() - $last_site_published) / (3600 * $hours);
$karma_new *= $pub_coef;
$link->message .= 'Last published: ' . intval((time() - $last_site_published) / 3600) . ' hours ago.<br/>';
}
if ($ban = check_ban($link->url, 'hostname', false, true)) {
// Check if the domain is banned
$karma_new *= 0.5;
$link->message .= 'Domain banned.<br/>';
$link->annotation .= _('dominio baneado') . ": " . $ban['comment'] . "<br/>";
} elseif ($user->level == 'disabled' || $user->level == 'autodisabled') {
// Check if the user is banned disabled
if ($user->level == 'autodisabled') {
$link->message .= "{$user->username} disabled herself, penalized.<br/>";
$karma_new *= 0.2;
} else {
$link->message .= "{$user->username} disabled, probably due to abuses, penalized.<br/>";
$karma_new *= 0.4;
}
$link->annotation .= _('cuenta deshabilitada') . "<br/>";
} elseif (check_ban($link->url, 'punished_hostname', false, true)) {
// Check domain and user punishments
$karma_new *= 0.75;
$link->message .= $globals['ban_message'] . '<br/>';
}
// Check if it was depubished before
$depublished = (int) $db->get_var("select count(*) from logs where log_type = 'link_depublished' and log_ref_id = {$link->id}");
if ($depublished > 0) {
$karma_new *= 0.4;
$link->message .= 'Previously depublished' . '<br/>';
$link->annotation .= _('previamente quitada de portada') . "<br/>";
}
// Check if the are previously published during last hours from the same sub
if ($link->sub_id > 0 && $link->is_sub && $link->sub_owner > 0 && $link->sub_id != $site && $site_info->owner == 0) {
$sub_published = $db->get_var("select UNIX_TIMESTAMP(date) from sub_statuses where id = {$site} and origen = {$link->sub_id} and status = 'published' and date > date_sub(now(), interval 24 hour) order by date desc limit 1");
if ($sub_published > 0) {
$m_diff = intval((time() - $sub_published) / 60);
$c = min(1, max(0.3, $m_diff / 1440));
$karma_new *= $c;
$link->message .= 'Published from the same sub, c' . sprintf(': %4.2f <br/>', $c);
$link->annotation .= _('publicada del mismo sub recientemente, coeficiente') . sprintf(': %4.2f <br/>', $c);
}
}
$link->karma = round($karma_new);
/// Commons votes
if ($link->karma > 20) {
$days = 7;
$commons_votes = $db->get_col("select SQL_NO_CACHE value from sub_statuses, link_commons where id = {$site} and status = 'published' and sub_statuses.date > date_sub(now(), interval {$days} day) and link_commons.link = sub_statuses.link order by value asc");
$common = $link->calculate_common_votes();
echo "Calculating diversity ({$common}-" . count($commons_votes) . ")\n";
if ($common != false && $commons_votes && count($commons_votes) > 5) {
$common_probability = cdf($commons_votes, $common);
$p = round($common_probability, 2);
echo "common: {$common} common_probability: {$common_probability}\n";
$link->common_probability = $common_probability;
$link->message .= 'Voters density: ' . sprintf("%5.2f", $common) . ' diversity coef: ' . sprintf("%3.2f%%", (1 - $common_probability) * 100) . " Probability: {$p}<br/>";
$link->annotation .= _('Densidad diversidad') . ': ' . sprintf("%5.2f", $common) . ' ' . _('coeficiente') . ": " . sprintf("%3.2f%%", (1 - $common_probability) * 100) . " (" . _('probabilidad') . ": {$p})<br/>";
// Bonus for diversity
$c = $common_probability / 0.5;
if ($c <= 1) {
$c = 1 - $c;
if ($link->low_karma_perc > 60) {
$low_karma_coef = (50 - ($link->low_karma_perc - 50)) / 50;
} else {
$low_karma_coef = 1;
}
$bonus = round($c * 0.5 * $link->karma * $low_karma_coef * (1 - 5 * $link->negatives / $link->votes));
echo "BONUS: {$link->karma} {$p}, {$c} -> {$bonus} ({$link->low_karma_perc}, {$low_karma_coef}, {$link->negatives}/{$link->votes})\n";
} else {
// Decrease for high affinity between voters
$c = $c - 1;
$bonus = -round($c * 0.5 * $link->karma);
echo "PENALIZATION: {$link->karma} {$p}, {$c} -> {$bonus}\n";
//.........这里部分代码省略.........
示例14: check_email
function check_email($email) {
global $globals;
require_once(mnminclude.'ban.php');
if (! preg_match('/^[a-z0-9_\-\.]+(\+[a-z0-9_\-\.]+)*@[a-z0-9_\-\.]+\.[a-z]{2,4}$/i', $email)) return false;
$username = preg_replace('/@.+$/', '', $email);
if ( substr_count($username, '.') > 2 || preg_match('/\.{2,}/', $username) ) return false; // Doesn't allow "..+" or more than 2 dots
if(check_ban(preg_replace('/^.*@/', '', $email), 'email')) return false;
return true;
}
示例15: _
break;
case 'ban_proxy':
if (strlen($name)>64) {
echo _('nombre demasiado largo');
return;
}
require_once(mnminclude.'ban.php');
if(($ban = check_ban($name, 'proxy'))) {
echo $ban['comment'];
return;
}
echo "OK";
break;
case 'ban_words':
if (strlen($name)>64) {
echo _('nombre demasiado largo');
return;
}
require_once(mnminclude.'ban.php');
if(($ban = check_ban($name, 'words'))) {
echo $ban['comment'];
return;
}
echo "OK";
break;
default:
echo "KO $type";
}
?>