Zeile 224 | Zeile 224 |
---|
// Loop through and run them all foreach($shutdown_queries as $query) {
|
// Loop through and run them all foreach($shutdown_queries as $query) {
|
$db->query($query);
| $db->write_query($query);
|
} }
| } }
|
Zeile 610 | Zeile 610 |
---|
}
/**
|
}
/**
|
* Generates a unique code for POST requests to prevent XSS/CSRF attacks
| * Generates a code for POST requests to prevent XSS/CSRF attacks. * Unique for each user or guest session and rotated every 6 hours.
|
*
|
*
|
| * @param int $rotation_shift Adjustment of the rotation number to generate a past/future code
|
* @return string The generated code */
|
* @return string The generated code */
|
function generate_post_check()
| function generate_post_check($rotation_shift=0)
|
{ global $mybb, $session;
|
{ global $mybb, $session;
|
| $rotation_interval = 6 * 3600; $rotation = floor(TIME_NOW / $rotation_interval) + $rotation_shift;
$seed = $rotation;
|
if($mybb->user['uid'])
|
if($mybb->user['uid'])
|
{ return md5($mybb->user['loginkey'].$mybb->user['salt'].$mybb->user['regdate']); } // Guests get a special string
| { $seed .= $mybb->user['loginkey'].$mybb->user['salt'].$mybb->user['regdate']; }
|
else {
|
else {
|
return md5($session->useragent.$mybb->config['database']['username'].$mybb->settings['internal']['encryption_key']);
| $seed .= $session->sid;
|
}
|
}
|
| $seed .= $mybb->settings['internal']['encryption_key'];
return md5($seed);
|
}
/**
|
}
/**
|
* Verifies a POST check code is valid, if not shows an error (silently returns false on silent parameter)
| * Verifies a POST check code is valid (i.e. generated using a rotation number from the past 24 hours)
|
* * @param string $code The incoming POST check code
|
* * @param string $code The incoming POST check code
|
* @param boolean $silent Silent mode or not (silent mode will not show the error to the user but returns false) * @return bool
| * @param boolean $silent Don't show an error to the user * @return bool|void Result boolean if $silent is true, otherwise shows an error to the user
|
*/ function verify_post_check($code, $silent=false) { global $lang;
|
*/ function verify_post_check($code, $silent=false) { global $lang;
|
if(generate_post_check() !== $code)
| if( generate_post_check() !== $code && generate_post_check(-1) !== $code && generate_post_check(-2) !== $code && generate_post_check(-3) !== $code )
|
{ if($silent == true) {
| { if($silent == true) {
|
Zeile 664 | Zeile 680 |
---|
/** * Return a parent list for the specified forum.
|
/** * Return a parent list for the specified forum.
|
*
| *
|
* @param int $fid The forum id to get the parent list for. * @return string The comma-separated parent list. */
| * @param int $fid The forum id to get the parent list for. * @return string The comma-separated parent list. */
|
Zeile 678 | Zeile 694 |
---|
return $forumarraycache[$fid]['parentlist']; } elseif($forum_cache[$fid])
|
return $forumarraycache[$fid]['parentlist']; } elseif($forum_cache[$fid])
|
{
| {
|
return $forum_cache[$fid]['parentlist']; } else
| return $forum_cache[$fid]['parentlist']; } else
|
Zeile 733 | Zeile 749 |
---|
{ $forum_cache = $cache->read("forums", 1); return $forum_cache;
|
{ $forum_cache = $cache->read("forums", 1); return $forum_cache;
|
}
| }
|
if(!$forum_cache) { $forum_cache = $cache->read("forums");
| if(!$forum_cache) { $forum_cache = $cache->read("forums");
|
Zeile 745 | Zeile 761 |
---|
} } return $forum_cache;
|
} } return $forum_cache;
|
}
/**
| }
/**
|
* Generate an array of all child and descendant forums for a specific forum. * * @param int $fid The forum ID
| * Generate an array of all child and descendant forums for a specific forum. * * @param int $fid The forum ID
|
Zeile 775 | Zeile 791 |
---|
}
foreach($forums_by_parent[$fid] as $forum)
|
}
foreach($forums_by_parent[$fid] as $forum)
|
{ $forums[] = $forum['fid'];
| { $forums[] = (int)$forum['fid'];
|
$children = get_child_list($forum['fid']); if(is_array($children)) {
| $children = get_child_list($forum['fid']); if(is_array($children)) {
|
Zeile 844 | Zeile 860 |
---|
}
if(!is_array($errors))
|
}
if(!is_array($errors))
|
{
| {
|
$errors = array($errors); }
| $errors = array($errors); }
|
Zeile 870 | Zeile 886 |
---|
foreach($errors as $error) { eval("\$errorlist .= \"".$templates->get("error_inline_item")."\";");
|
foreach($errors as $error) { eval("\$errorlist .= \"".$templates->get("error_inline_item")."\";");
|
}
eval("\$errors = \"".$templates->get("error_inline")."\";");
| }
eval("\$errors = \"".$templates->get("error_inline")."\";");
|
return $errors; }
|
return $errors; }
|
|
|
/** * Presents the user with a "no permission" page */
| /** * Presents the user with a "no permission" page */
|
Zeile 886 | Zeile 902 |
---|
$time = TIME_NOW; $plugins->run_hooks("no_permission");
|
$time = TIME_NOW; $plugins->run_hooks("no_permission");
|
|
|
$noperm_array = array ( "nopermission" => '1', "location1" => 0,
| $noperm_array = array ( "nopermission" => '1', "location1" => 0,
|
Zeile 955 | Zeile 971 |
---|
$redirect_args = array('url' => &$url, 'message' => &$message, 'title' => &$title);
$plugins->run_hooks("redirect", $redirect_args);
|
$redirect_args = array('url' => &$url, 'message' => &$message, 'title' => &$title);
$plugins->run_hooks("redirect", $redirect_args);
|
|
|
if($mybb->get_input('ajax', MyBB::INPUT_INT)) { // Send our headers.
| if($mybb->get_input('ajax', MyBB::INPUT_INT)) { // Send our headers.
|
Zeile 1031 | Zeile 1047 |
---|
*/ function multipage($count, $perpage, $page, $url, $breadcrumb=false) {
|
*/ function multipage($count, $perpage, $page, $url, $breadcrumb=false) {
|
global $theme, $templates, $lang, $mybb;
| global $theme, $templates, $lang, $mybb, $plugins;
|
if($count <= $perpage) { return '';
|
if($count <= $perpage) { return '';
|
}
$page = (int)$page;
| }
$args = array( 'count' => &$count, 'perpage' => &$perpage, 'page' => &$page, 'url' => &$url, 'breadcrumb' => &$breadcrumb, ); $plugins->run_hooks('multipage', $args);
$page = (int)$page;
|
$url = str_replace("&", "&", $url); $url = htmlspecialchars_uni($url);
| $url = str_replace("&", "&", $url); $url = htmlspecialchars_uni($url);
|
Zeile 1066 | Zeile 1091 |
---|
{ $from = 1; $to = $from+$mybb->settings['maxmultipagelinks']-1;
|
{ $from = 1; $to = $from+$mybb->settings['maxmultipagelinks']-1;
|
}
| }
|
if($to > $pages) {
| if($to > $pages) {
|
Zeile 1287 | Zeile 1312 |
---|
}
foreach($groupscache[$gid] as $perm => $access)
|
}
foreach($groupscache[$gid] as $perm => $access)
|
{
| {
|
if(!in_array($perm, $grouppermignore)) { if(isset($usergroup[$perm]))
|
if(!in_array($perm, $grouppermignore)) { if(isset($usergroup[$perm]))
|
{
| {
|
$permbit = $usergroup[$perm];
|
$permbit = $usergroup[$perm];
|
}
| }
|
else { $permbit = "";
| else { $permbit = "";
|
Zeile 1301 | Zeile 1326 |
---|
// 0 represents unlimited for numerical group permissions (i.e. private message limit) so take that into account. if(in_array($perm, $groupzerogreater) && ($access == 0 || $permbit === 0))
|
// 0 represents unlimited for numerical group permissions (i.e. private message limit) so take that into account. if(in_array($perm, $groupzerogreater) && ($access == 0 || $permbit === 0))
|
{
| {
|
$usergroup[$perm] = 0; continue;
|
$usergroup[$perm] = 0; continue;
|
}
| }
|
if($access > $permbit || ($access == "yes" && $permbit == "no") || !$permbit) // Keep yes/no for compatibility? { $usergroup[$perm] = $access;
| if($access > $permbit || ($access == "yes" && $permbit == "no") || !$permbit) // Keep yes/no for compatibility? { $usergroup[$perm] = $access;
|
Zeile 1315 | Zeile 1340 |
---|
}
return $usergroup;
|
}
return $usergroup;
|
}
| }
|
/** * Fetch the display group properties for a specific display group
| /** * Fetch the display group properties for a specific display group
|
Zeile 1383 | Zeile 1408 |
---|
}
if(!is_array($forum_cache))
|
}
if(!is_array($forum_cache))
|
{ $forum_cache = cache_forums();
| { $forum_cache = cache_forums();
|
if(!$forum_cache) { return false; }
|
if(!$forum_cache) { return false; }
|
}
| }
|
if(!is_array($fpermcache)) {
| if(!is_array($fpermcache)) {
|
Zeile 1398 | Zeile 1423 |
---|
}
if($fid) // Fetch the permissions for a single forum
|
}
if($fid) // Fetch the permissions for a single forum
|
{
| {
|
if(empty($cached_forum_permissions_permissions[$gid][$fid]))
|
if(empty($cached_forum_permissions_permissions[$gid][$fid]))
|
{
| {
|
$cached_forum_permissions_permissions[$gid][$fid] = fetch_forum_permissions($fid, $gid, $groupperms); } return $cached_forum_permissions_permissions[$gid][$fid];
| $cached_forum_permissions_permissions[$gid][$fid] = fetch_forum_permissions($fid, $gid, $groupperms); } return $cached_forum_permissions_permissions[$gid][$fid];
|
Zeile 1412 | Zeile 1437 |
---|
foreach($forum_cache as $forum) { $cached_forum_permissions[$gid][$forum['fid']] = fetch_forum_permissions($forum['fid'], $gid, $groupperms);
|
foreach($forum_cache as $forum) { $cached_forum_permissions[$gid][$forum['fid']] = fetch_forum_permissions($forum['fid'], $gid, $groupperms);
|
}
| }
|
} return $cached_forum_permissions[$gid]; }
| } return $cached_forum_permissions[$gid]; }
|
Zeile 1481 | Zeile 1506 |
---|
}
if($level_permissions["canview"] && empty($level_permissions["canonlyviewownthreads"]))
|
}
if($level_permissions["canview"] && empty($level_permissions["canonlyviewownthreads"]))
|
{
| {
|
$only_view_own_threads = 0; }
| $only_view_own_threads = 0; }
|
Zeile 1509 | Zeile 1534 |
---|
$current_permissions = $groupperms; } return $current_permissions;
|
$current_permissions = $groupperms; } return $current_permissions;
|
| }
/** * Check whether password for given forum was validated for the current user * * @param array $forum The forum data * @param bool $ignore_empty Whether to treat forum password configured as an empty string as validated * @param bool $check_parents Whether to check parent forums using `parentlist` * @return bool */ function forum_password_validated($forum, $ignore_empty=false, $check_parents=false) { global $mybb, $forum_cache;
if($check_parents && isset($forum['parentlist'])) { if(!is_array($forum_cache)) { $forum_cache = cache_forums(); if(!$forum_cache) { return false; } }
$parents = explode(',', $forum['parentlist']); rsort($parents);
foreach($parents as $parent_id) { if($parent_id != $forum['fid'] && !forum_password_validated($forum_cache[$parent_id], true)) { return false; } } }
return ($ignore_empty && $forum['password'] === '') || ( isset($mybb->cookies['forumpass'][$forum['fid']]) && my_hash_equals( md5($mybb->user['uid'].$forum['password']), $mybb->cookies['forumpass'][$forum['fid']] ) );
|
}
/**
| }
/**
|
Zeile 1549 | Zeile 1618 |
---|
continue; }
|
continue; }
|
if($forum_cache[$parent_id]['password'] != "")
| if($forum_cache[$parent_id]['password'] !== "")
|
{ check_forum_password($parent_id, $fid); } } }
|
{ check_forum_password($parent_id, $fid); } } }
|
if(!empty($forum_cache[$fid]['password']))
| if($forum_cache[$fid]['password'] !== '')
|
{
|
{
|
$password = $forum_cache[$fid]['password'];
| |
if(isset($mybb->input['pwverify']) && $pid == 0) {
|
if(isset($mybb->input['pwverify']) && $pid == 0) {
|
if($password === $mybb->get_input('pwverify'))
| if(my_hash_equals($forum_cache[$fid]['password'], $mybb->get_input('pwverify')))
|
{ my_setcookie("forumpass[$fid]", md5($mybb->user['uid'].$mybb->get_input('pwverify')), null, true); $showform = false;
| { my_setcookie("forumpass[$fid]", md5($mybb->user['uid'].$mybb->get_input('pwverify')), null, true); $showform = false;
|
Zeile 1574 | Zeile 1642 |
---|
} else {
|
} else {
|
if(!$mybb->cookies['forumpass'][$fid] || ($mybb->cookies['forumpass'][$fid] && md5($mybb->user['uid'].$password) !== $mybb->cookies['forumpass'][$fid]))
| if(!forum_password_validated($forum_cache[$fid]))
|
{ $showform = true; }
| { $showform = true; }
|
Zeile 1803 | Zeile 1871 |
---|
} } }
|
} } }
|
| }
/** * Get an array of fids that the forum moderator has access to. * Do not use for administraotrs or global moderators as they moderate any forum and the function will return false. * * @param int $uid The user ID (0 assumes current user) * @return array|bool an array of the fids the user has moderator access to or bool if called incorrectly. */ function get_moderated_fids($uid=0) { global $mybb, $cache;
if($uid == 0) { $uid = $mybb->user['uid']; }
if($uid == 0) { return array(); }
$user_perms = user_permissions($uid);
if($user_perms['issupermod'] == 1) { return false; }
$fids = array();
$modcache = $cache->read('moderators'); if(!empty($modcache)) { $groups = explode(',', $user_perms['all_usergroups']);
foreach($modcache as $fid => $forum) { if(isset($forum['users'][$uid]) && $forum['users'][$uid]['mid']) { $fids[] = $fid; continue; }
foreach($groups as $group) { if(trim($group) != '' && isset($forum['usergroups'][$group])) { $fids[] = $fid; } } } }
return $fids;
|
}
/**
| }
/**
|
Zeile 1847 | Zeile 1971 |
---|
}
eval("\$iconlist .= \"".$templates->get("posticons_icon")."\";");
|
}
eval("\$iconlist .= \"".$templates->get("posticons_icon")."\";");
|
}
| }
|
if(!empty($iconlist)) {
| if(!empty($iconlist)) {
|
Zeile 1875 | Zeile 1999 |
---|
global $mybb;
if(!$mybb->settings['cookiepath'])
|
global $mybb;
if(!$mybb->settings['cookiepath'])
|
{
| {
|
$mybb->settings['cookiepath'] = "/"; }
| $mybb->settings['cookiepath'] = "/"; }
|
Zeile 1902 | Zeile 2026 |
---|
if($expires > 0) { $cookie .= "; expires=".@gmdate('D, d-M-Y H:i:s \\G\\M\\T', $expires);
|
if($expires > 0) { $cookie .= "; expires=".@gmdate('D, d-M-Y H:i:s \\G\\M\\T', $expires);
|
}
| }
|
if(!empty($mybb->settings['cookiepath']))
|
if(!empty($mybb->settings['cookiepath']))
|
{
| {
|
$cookie .= "; path={$mybb->settings['cookiepath']}";
|
$cookie .= "; path={$mybb->settings['cookiepath']}";
|
}
| }
|
if(!empty($mybb->settings['cookiedomain']))
|
if(!empty($mybb->settings['cookiedomain']))
|
{
| {
|
$cookie .= "; domain={$mybb->settings['cookiedomain']}"; }
if($httponly == true) { $cookie .= "; HttpOnly";
|
$cookie .= "; domain={$mybb->settings['cookiedomain']}"; }
if($httponly == true) { $cookie .= "; HttpOnly";
|
}
| }
|
if($samesite != "" && $mybb->settings['cookiesamesiteflag']) {
| if($samesite != "" && $mybb->settings['cookiesamesiteflag']) {
|
Zeile 1945 | Zeile 2069 |
---|
* @param string $name The cookie identifier. */ function my_unsetcookie($name)
|
* @param string $name The cookie identifier. */ function my_unsetcookie($name)
|
{
| {
|
global $mybb;
$expires = -3600;
| global $mybb;
$expires = -3600;
|
Zeile 1973 | Zeile 2097 |
---|
$cookie = my_unserialize($mybb->cookies['mybb'][$name]);
if(is_array($cookie) && isset($cookie[$id]))
|
$cookie = my_unserialize($mybb->cookies['mybb'][$name]);
if(is_array($cookie) && isset($cookie[$id]))
|
{
| {
|
return $cookie[$id]; } else
| return $cookie[$id]; } else
|
Zeile 2028 | Zeile 2152 |
---|
* @param string $str * @return mixed * @throw Exception if $str is malformed or contains unsupported types (e.g., resources, objects)
|
* @param string $str * @return mixed * @throw Exception if $str is malformed or contains unsupported types (e.g., resources, objects)
|
*/
| */
|
function _safe_unserialize($str) { if(strlen($str) > MAX_SERIALIZED_INPUT_LENGTH)
| function _safe_unserialize($str) { if(strlen($str) > MAX_SERIALIZED_INPUT_LENGTH)
|
Zeile 2251 | Zeile 2375 |
---|
if(is_int($value)) { return 'i:'.$value.';';
|
if(is_int($value)) { return 'i:'.$value.';';
|
}
| }
|
if(is_float($value)) {
| if(is_float($value)) {
|
Zeile 2474 | Zeile 2598 |
---|
if($new_stats[$counter] < 0) { $new_stats[$counter] = 0;
|
if($new_stats[$counter] < 0) { $new_stats[$counter] = 0;
|
}
| }
|
} }
|
} }
|
}
| }
|
if(!$force)
|
if(!$force)
|
{
| {
|
$stats_changes = array_merge($stats, $new_stats); // Overwrite changed values return; }
// Fetch latest user if the user count is changing if(array_key_exists('numusers', $changes))
|
$stats_changes = array_merge($stats, $new_stats); // Overwrite changed values return; }
// Fetch latest user if the user count is changing if(array_key_exists('numusers', $changes))
|
{
| {
|
$query = $db->simple_select("users", "uid, username", "", array('order_by' => 'regdate', 'order_dir' => 'DESC', 'limit' => 1)); $lastmember = $db->fetch_array($query); $new_stats['lastuid'] = $lastmember['uid'];
| $query = $db->simple_select("users", "uid, username", "", array('order_by' => 'regdate', 'order_dir' => 'DESC', 'limit' => 1)); $lastmember = $db->fetch_array($query); $new_stats['lastuid'] = $lastmember['uid'];
|
Zeile 2497 | Zeile 2621 |
---|
if(!empty($new_stats)) { if(is_array($stats))
|
if(!empty($new_stats)) { if(is_array($stats))
|
{
| {
|
$stats = array_merge($stats, $new_stats); // Overwrite changed values
|
$stats = array_merge($stats, $new_stats); // Overwrite changed values
|
} else {
| } else {
|
$stats = $new_stats; } }
| $stats = $new_stats; } }
|
Zeile 2528 | Zeile 2652 |
---|
function update_forum_counters($fid, $changes=array()) { global $db;
|
function update_forum_counters($fid, $changes=array()) { global $db;
|
|
|
$update_query = array();
$counters = array('threads', 'unapprovedthreads', 'posts', 'unapprovedposts', 'deletedposts', 'deletedthreads');
| $update_query = array();
$counters = array('threads', 'unapprovedthreads', 'posts', 'unapprovedposts', 'deletedposts', 'deletedthreads');
|
Zeile 2542 | Zeile 2666 |
---|
if(array_key_exists($counter, $changes)) { if(substr($changes[$counter], 0, 2) == "+-")
|
if(array_key_exists($counter, $changes)) { if(substr($changes[$counter], 0, 2) == "+-")
|
{
| {
|
$changes[$counter] = substr($changes[$counter], 1); } // Adding or subtracting from previous value? if(substr($changes[$counter], 0, 1) == "+" || substr($changes[$counter], 0, 1) == "-")
|
$changes[$counter] = substr($changes[$counter], 1); } // Adding or subtracting from previous value? if(substr($changes[$counter], 0, 1) == "+" || substr($changes[$counter], 0, 1) == "-")
|
{
| {
|
if((int)$changes[$counter] != 0) { $update_query[$counter] = $forum[$counter] + $changes[$counter]; }
|
if((int)$changes[$counter] != 0) { $update_query[$counter] = $forum[$counter] + $changes[$counter]; }
|
}
| }
|
else { $update_query[$counter] = $changes[$counter];
|
else { $update_query[$counter] = $changes[$counter];
|
}
| }
|
// Less than 0? That's bad if(isset($update_query[$counter]) && $update_query[$counter] < 0) { $update_query[$counter] = 0; } }
|
// Less than 0? That's bad if(isset($update_query[$counter]) && $update_query[$counter] < 0) { $update_query[$counter] = 0; } }
|
}
| }
|
// Only update if we're actually doing something if(count($update_query) > 0) { $db->update_query("forums", $update_query, "fid='".(int)$fid."'");
|
// Only update if we're actually doing something if(count($update_query) > 0) { $db->update_query("forums", $update_query, "fid='".(int)$fid."'");
|
}
| }
|
// Guess we should update the statistics too? $new_stats = array();
| // Guess we should update the statistics too? $new_stats = array();
|
Zeile 2580 | Zeile 2704 |
---|
if($threads_diff > -1) { $new_stats['numthreads'] = "+{$threads_diff}";
|
if($threads_diff > -1) { $new_stats['numthreads'] = "+{$threads_diff}";
|
}
| }
|
else { $new_stats['numthreads'] = "{$threads_diff}";
|
else { $new_stats['numthreads'] = "{$threads_diff}";
|
} }
| } }
|
if(array_key_exists('unapprovedthreads', $update_query)) { $unapprovedthreads_diff = $update_query['unapprovedthreads'] - $forum['unapprovedthreads'];
| if(array_key_exists('unapprovedthreads', $update_query)) { $unapprovedthreads_diff = $update_query['unapprovedthreads'] - $forum['unapprovedthreads'];
|
Zeile 2614 | Zeile 2738 |
---|
}
if(array_key_exists('unapprovedposts', $update_query))
|
}
if(array_key_exists('unapprovedposts', $update_query))
|
{
| {
|
$unapprovedposts_diff = $update_query['unapprovedposts'] - $forum['unapprovedposts']; if($unapprovedposts_diff > -1) {
| $unapprovedposts_diff = $update_query['unapprovedposts'] - $forum['unapprovedposts']; if($unapprovedposts_diff > -1) {
|
Zeile 2656 | Zeile 2780 |
---|
{ update_stats($new_stats); }
|
{ update_stats($new_stats); }
|
}
| }
|
/** * Update the last post information for a specific forum
| /** * Update the last post information for a specific forum
|
Zeile 2684 | Zeile 2808 |
---|
"lastposttid" => (int)$lastpost['tid'], "lastpostsubject" => $db->escape_string($lastpost['subject']) );
|
"lastposttid" => (int)$lastpost['tid'], "lastpostsubject" => $db->escape_string($lastpost['subject']) );
|
|
|
$db->update_query("forums", $updated_forum, "fid='{$fid}'"); }
| $db->update_query("forums", $updated_forum, "fid='{$fid}'"); }
|
Zeile 2695 | Zeile 2819 |
---|
* @param array $changes Array of items being updated (replies, unapprovedposts, deletedposts, attachmentcount) and their value (ex, 1, +1, -1) */ function update_thread_counters($tid, $changes=array())
|
* @param array $changes Array of items being updated (replies, unapprovedposts, deletedposts, attachmentcount) and their value (ex, 1, +1, -1) */ function update_thread_counters($tid, $changes=array())
|
{ global $db;
| { global $db;
|
$update_query = array(); $tid = (int)$tid;
|
$update_query = array(); $tid = (int)$tid;
|
$counters = array('replies', 'unapprovedposts', 'attachmentcount', 'deletedposts', 'attachmentcount');
| $counters = array('replies', 'unapprovedposts', 'attachmentcount', 'deletedposts', 'attachmentcount');
|
// Fetch above counters for this thread $query = $db->simple_select("threads", implode(",", $counters), "tid='{$tid}'"); $thread = $db->fetch_array($query);
| // Fetch above counters for this thread $query = $db->simple_select("threads", implode(",", $counters), "tid='{$tid}'"); $thread = $db->fetch_array($query);
|
Zeile 2714 | Zeile 2838 |
---|
if(substr($changes[$counter], 0, 2) == "+-") { $changes[$counter] = substr($changes[$counter], 1);
|
if(substr($changes[$counter], 0, 2) == "+-") { $changes[$counter] = substr($changes[$counter], 1);
|
}
| }
|
// Adding or subtracting from previous value? if(substr($changes[$counter], 0, 1) == "+" || substr($changes[$counter], 0, 1) == "-") {
| // Adding or subtracting from previous value? if(substr($changes[$counter], 0, 1) == "+" || substr($changes[$counter], 0, 1) == "-") {
|
Zeile 2760 | Zeile 2884 |
---|
if(strpos($thread['closed'], 'moved|') !== false) { return;
|
if(strpos($thread['closed'], 'moved|') !== false) { return;
|
}
$query = $db->query("
| }
$query = $db->query("
|
SELECT u.uid, u.username, p.username AS postusername, p.dateline FROM ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)
| SELECT u.uid, u.username, p.username AS postusername, p.dateline FROM ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)
|
Zeile 2794 | Zeile 2918 |
---|
if(empty($lastpost['username'])) { $lastpost['username'] = $lastpost['postusername'];
|
if(empty($lastpost['username'])) { $lastpost['username'] = $lastpost['postusername'];
|
}
| }
|
if(empty($lastpost['dateline'])) { $lastpost['username'] = $firstpost['username'];
| if(empty($lastpost['dateline'])) { $lastpost['username'] = $firstpost['username'];
|
Zeile 2827 | Zeile 2951 |
---|
function update_user_counters($uid, $changes=array()) { global $db;
|
function update_user_counters($uid, $changes=array()) { global $db;
|
|
|
$update_query = array();
$counters = array('postnum', 'threadnum'); $uid = (int)$uid;
|
$update_query = array();
$counters = array('postnum', 'threadnum'); $uid = (int)$uid;
|
|
|
// Fetch above counters for this user $query = $db->simple_select("users", implode(",", $counters), "uid='{$uid}'"); $user = $db->fetch_array($query);
| // Fetch above counters for this user $query = $db->simple_select("users", implode(",", $counters), "uid='{$uid}'"); $user = $db->fetch_array($query);
|
Zeile 2844 | Zeile 2968 |
---|
if(substr($changes[$counter], 0, 2) == "+-") { $changes[$counter] = substr($changes[$counter], 1);
|
if(substr($changes[$counter], 0, 2) == "+-") { $changes[$counter] = substr($changes[$counter], 1);
|
}
| }
|
// Adding or subtracting from previous value? if(substr($changes[$counter], 0, 1) == "+" || substr($changes[$counter], 0, 1) == "-") {
| // Adding or subtracting from previous value? if(substr($changes[$counter], 0, 1) == "+" || substr($changes[$counter], 0, 1) == "-") {
|
Zeile 2852 | Zeile 2976 |
---|
{ $update_query[$counter] = $user[$counter] + $changes[$counter]; }
|
{ $update_query[$counter] = $user[$counter] + $changes[$counter]; }
|
}
| }
|
else { $update_query[$counter] = $changes[$counter];
| else { $update_query[$counter] = $changes[$counter];
|
Zeile 2860 | Zeile 2984 |
---|
// Less than 0? That's bad if(isset($update_query[$counter]) && $update_query[$counter] < 0)
|
// Less than 0? That's bad if(isset($update_query[$counter]) && $update_query[$counter] < 0)
|
{
| {
|
$update_query[$counter] = 0; } }
| $update_query[$counter] = 0; } }
|
Zeile 2892 | Zeile 3016 |
---|
}
return $moderation->delete_thread($tid);
|
}
return $moderation->delete_thread($tid);
|
}
| }
|
/** * Deletes a post from the database
| /** * Deletes a post from the database
|
Zeile 2908 | Zeile 3032 |
---|
{ require_once MYBB_ROOT."inc/class_moderation.php"; $moderation = new Moderation;
|
{ require_once MYBB_ROOT."inc/class_moderation.php"; $moderation = new Moderation;
|
}
| }
|
return $moderation->delete_post($pid); }
| return $moderation->delete_post($pid); }
|
Zeile 2956 | Zeile 3080 |
---|
if(isset($jumpfcache[$pid]) && is_array($jumpfcache[$pid])) { foreach($jumpfcache[$pid] as $main)
|
if(isset($jumpfcache[$pid]) && is_array($jumpfcache[$pid])) { foreach($jumpfcache[$pid] as $main)
|
{
| {
|
foreach($main as $forum) { $perms = $permissioncache[$forum['fid']];
| foreach($main as $forum) { $perms = $permissioncache[$forum['fid']];
|
Zeile 2968 | Zeile 3092 |
---|
if($selitem == $forum['fid']) { $optionselected = 'selected="selected"';
|
if($selitem == $forum['fid']) { $optionselected = 'selected="selected"';
|
}
$forum['name'] = htmlspecialchars_uni(strip_tags($forum['name']));
eval("\$forumjumpbits .= \"".$templates->get("forumjump_bit")."\";");
| }
$forum['name'] = htmlspecialchars_uni(strip_tags($forum['name']));
eval("\$forumjumpbits .= \"".$templates->get("forumjump_bit")."\";");
|
if($forum_cache[$forum['fid']]) {
| if($forum_cache[$forum['fid']]) {
|
Zeile 2987 | Zeile 3111 |
---|
if($addselect) { if($showextras == 0)
|
if($addselect) { if($showextras == 0)
|
{
| {
|
$template = "special"; } else
| $template = "special"; } else
|
Zeile 3002 | Zeile 3126 |
---|
{ $forum_link = "'".str_replace('{fid}', "'+option", FORUM_URL); }
|
{ $forum_link = "'".str_replace('{fid}', "'+option", FORUM_URL); }
|
}
| }
|
eval("\$forumjump = \"".$templates->get("forumjump_".$template)."\";"); }
| eval("\$forumjump = \"".$templates->get("forumjump_".$template)."\";"); }
|
Zeile 3019 | Zeile 3143 |
---|
function get_extension($file) { return my_strtolower(my_substr(strrchr($file, "."), 1));
|
function get_extension($file) { return my_strtolower(my_substr(strrchr($file, "."), 1));
|
}
| }
|
/** * Generates a random string. *
| /** * Generates a random string. *
|
Zeile 3035 | Zeile 3159 |
---|
// Complex strings have always at least 3 characters, even if $length < 3 if($complex == true)
|
// Complex strings have always at least 3 characters, even if $length < 3 if($complex == true)
|
{
| {
|
// At least one number $str[] = $set[my_rand(0, 9)];
| // At least one number $str[] = $set[my_rand(0, 9)];
|
Zeile 3083 | Zeile 3207 |
---|
if($displaygroup != 0) { $usergroup = $displaygroup;
|
if($displaygroup != 0) { $usergroup = $displaygroup;
|
}
$format = "{username}";
| }
$format = "{username}";
|
if(isset($groupscache[$usergroup])) {
| if(isset($groupscache[$usergroup])) {
|
Zeile 3489 | Zeile 3613 |
---|
$subscription_method = (int)$subscription['notification'] + 1; } }
|
$subscription_method = (int)$subscription['notification'] + 1; } }
|
|
|
return $subscription_methods[$subscription_method]; }
| return $subscription_methods[$subscription_method]; }
|
Zeile 3731 | Zeile 3855 |
---|
}
if($multiple != 0)
|
}
if($multiple != 0)
|
{
| {
|
eval("\$prefixselect = \"".$templates->get("post_prefixselect_multiple")."\";"); } else
| eval("\$prefixselect = \"".$templates->get("post_prefixselect_multiple")."\";"); } else
|
Zeile 3793 | Zeile 3917 |
---|
$selected_pid = (int)$selected_pid;
if($selected_pid == 0)
|
$selected_pid = (int)$selected_pid;
if($selected_pid == 0)
|
{
| {
|
$default_selected['all'] = ' selected="selected"';
|
$default_selected['all'] = ' selected="selected"';
|
}
| }
|
else if($selected_pid == -1) { $default_selected['none'] = ' selected="selected"'; } else if($selected_pid == -2)
|
else if($selected_pid == -1) { $default_selected['none'] = ' selected="selected"'; } else if($selected_pid == -2)
|
{
| {
|
$default_selected['any'] = ' selected="selected"'; }
| $default_selected['any'] = ' selected="selected"'; }
|
Zeile 3845 | Zeile 3969 |
---|
}
if(my_strpos(" ".$httpaccept_encoding, "gzip"))
|
}
if(my_strpos(" ".$httpaccept_encoding, "gzip"))
|
{
| {
|
$encoding = "gzip"; }
|
$encoding = "gzip"; }
|
|
|
if(isset($encoding)) { header("Content-Encoding: $encoding");
if(function_exists("gzencode"))
|
if(isset($encoding)) { header("Content-Encoding: $encoding");
if(function_exists("gzencode"))
|
{
| {
|
$contents = gzencode($contents, $level); } else
| $contents = gzencode($contents, $level); } else
|
Zeile 3871 | Zeile 3995 |
---|
}
return $contents;
|
}
return $contents;
|
}
| }
|
/** * Log the actions of a moderator.
| /** * Log the actions of a moderator.
|
Zeile 3895 | Zeile 4019 |
---|
{ $tid = (int)$data['tid']; unset($data['tid']);
|
{ $tid = (int)$data['tid']; unset($data['tid']);
|
}
| }
|
$pid = 0; if(isset($data['pid'])) {
| $pid = 0; if(isset($data['pid'])) {
|
Zeile 3913 | Zeile 4037 |
---|
// Any remaining extra data - we my_serialize and insert in to its own column if(is_array($data))
|
// Any remaining extra data - we my_serialize and insert in to its own column if(is_array($data))
|
{
| {
|
$data = my_serialize($data); }
| $data = my_serialize($data); }
|
Zeile 3939 | Zeile 4063 |
---|
}
$db->insert_query_multiple("moderatorlog", $multiple_sql_array);
|
}
$db->insert_query_multiple("moderatorlog", $multiple_sql_array);
|
} else {
| } else {
|
$db->insert_query("moderatorlog", $sql_array); } }
| $db->insert_query("moderatorlog", $sql_array); } }
|
Zeile 3959 | Zeile 4083 |
---|
$display_reputation = $reputation_class = ''; if($reputation < 0)
|
$display_reputation = $reputation_class = ''; if($reputation < 0)
|
{
| {
|
$reputation_class = "reputation_negative"; } elseif($reputation > 0)
| $reputation_class = "reputation_negative"; } elseif($reputation > 0)
|
Zeile 3976 | Zeile 4100 |
---|
if($uid != 0) { eval("\$display_reputation = \"".$templates->get("postbit_reputation_formatted_link")."\";");
|
if($uid != 0) { eval("\$display_reputation = \"".$templates->get("postbit_reputation_formatted_link")."\";");
|
}
| }
|
else { eval("\$display_reputation = \"".$templates->get("postbit_reputation_formatted")."\";");
| else { eval("\$display_reputation = \"".$templates->get("postbit_reputation_formatted")."\";");
|
Zeile 4003 | Zeile 4127 |
---|
else if($level >= 50) { $warning_class = "moderate_warning";
|
else if($level >= 50) { $warning_class = "moderate_warning";
|
}
| }
|
else if($level >= 25)
|
else if($level >= 25)
|
{
| {
|
$warning_class = "low_warning"; } else { $warning_class = "normal_warning";
|
$warning_class = "low_warning"; } else { $warning_class = "normal_warning";
|
}
| }
|
eval("\$level = \"".$templates->get("postbit_warninglevel_formatted")."\";"); return $level; }
/** * Fetch the IP address of the current user.
|
eval("\$level = \"".$templates->get("postbit_warninglevel_formatted")."\";"); return $level; }
/** * Fetch the IP address of the current user.
|
*
| *
|
* @return string The IP address. */ function get_ip()
| * @return string The IP address. */ function get_ip()
|
Zeile 4053 | Zeile 4177 |
---|
break; } }
|
break; } }
|
} }
| } }
|
if(!$ip) {
| if(!$ip) {
|
Zeile 4062 | Zeile 4186 |
---|
{ $ip = strtolower($_SERVER['HTTP_CLIENT_IP']); }
|
{ $ip = strtolower($_SERVER['HTTP_CLIENT_IP']); }
|
}
| }
|
if($plugins) {
| if($plugins) {
|
Zeile 4080 | Zeile 4204 |
---|
* @return string The friendly file size */ function get_friendly_size($size)
|
* @return string The friendly file size */ function get_friendly_size($size)
|
{ global $lang;
| { global $lang;
|
if(!is_numeric($size)) {
| if(!is_numeric($size)) {
|
Zeile 4090 | Zeile 4214 |
---|
// Yottabyte (1024 Zettabytes) if($size >= 1208925819614629174706176)
|
// Yottabyte (1024 Zettabytes) if($size >= 1208925819614629174706176)
|
{
| {
|
$size = my_number_format(round(($size / 1208925819614629174706176), 2))." ".$lang->size_yb; } // Zetabyte (1024 Exabytes)
| $size = my_number_format(round(($size / 1208925819614629174706176), 2))." ".$lang->size_yb; } // Zetabyte (1024 Exabytes)
|
Zeile 4125 | Zeile 4249 |
---|
} // Kilobyte (1024 bytes) elseif($size >= 1024)
|
} // Kilobyte (1024 bytes) elseif($size >= 1024)
|
{
| {
|
$size = my_number_format(round(($size / 1024), 2))." ".$lang->size_kb; } elseif($size == 0)
| $size = my_number_format(round(($size / 1024), 2))." ".$lang->size_kb; } elseif($size == 0)
|
Zeile 4151 | Zeile 4275 |
---|
global $lang;
if(!is_numeric($time))
|
global $lang;
if(!is_numeric($time))
|
{
| {
|
return $lang->na; }
| return $lang->na; }
|
Zeile 4265 | Zeile 4389 |
---|
$permissioncache = forum_permissions(); }
|
$permissioncache = forum_permissions(); }
|
$password_forums = $unviewable = array();
| $unviewable = array();
|
foreach($forum_cache as $fid => $forum) { if($permissioncache[$forum['fid']])
| foreach($forum_cache as $fid => $forum) { if($permissioncache[$forum['fid']])
|
Zeile 4279 | Zeile 4403 |
---|
$pwverified = 1;
|
$pwverified = 1;
|
if($forum['password'] != "")
| if(!forum_password_validated($forum, true))
|
{
|
{
|
if($mybb->cookies['forumpass'][$forum['fid']] !== md5($mybb->user['uid'].$forum['password'])) { $pwverified = 0; }
$password_forums[$forum['fid']] = $forum['password'];
| $pwverified = 0;
|
} else {
| } else {
|
Zeile 4294 | Zeile 4414 |
---|
$parents = explode(",", $forum['parentlist']); foreach($parents as $parent) {
|
$parents = explode(",", $forum['parentlist']); foreach($parents as $parent) {
|
if(isset($password_forums[$parent]) && $mybb->cookies['forumpass'][$parent] !== md5($mybb->user['uid'].$password_forums[$parent]))
| if(!forum_password_validated($forum_cache[$parent], true))
|
{ $pwverified = 0;
|
{ $pwverified = 0;
|
| break;
|
} } }
| } } }
|
Zeile 4696 | Zeile 4817 |
---|
if($mybb->settings['nocacheheaders'] == 1) {
|
if($mybb->settings['nocacheheaders'] == 1) {
|
header("Expires: Sat, 1 Jan 2000 01:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache");
| header("Cache-Control: no-cache, private");
|
} }
| } }
|
Zeile 5027 | Zeile 5145 |
---|
global $db, $mybb, $cache;
$user = get_user($uid);
|
global $db, $mybb, $cache;
$user = get_user($uid);
|
| if($user['usergroup'] == $leavegroup) { return false; }
|
$groupslist = $comma = ''; $usergroups = $user['additionalgroups'].",";
| $groupslist = $comma = ''; $usergroups = $user['additionalgroups'].",";
|
Zeile 5051 | Zeile 5174 |
---|
if($leavegroup == $user['displaygroup']) { $dispupdate = ", displaygroup=usergroup";
|
if($leavegroup == $user['displaygroup']) { $dispupdate = ", displaygroup=usergroup";
|
}
| }
|
$db->write_query(" UPDATE ".TABLE_PREFIX."users SET additionalgroups='$groupslist' $dispupdate
| $db->write_query(" UPDATE ".TABLE_PREFIX."users SET additionalgroups='$groupslist' $dispupdate
|
Zeile 5066 | Zeile 5189 |
---|
* Get the current location taking in to account different web serves and systems * * @param boolean $fields True to return as "hidden" fields
|
* Get the current location taking in to account different web serves and systems * * @param boolean $fields True to return as "hidden" fields
|
* @param array $ignore Array of fields to ignore if first argument is true
| * @param array $ignore Array of fields to ignore for returning "hidden" fields or URL being accessed
|
* @param boolean $quick True to skip all inputs and return only the file path part of the URL
|
* @param boolean $quick True to skip all inputs and return only the file path part of the URL
|
* @return string The current URL being accessed
| * @return string|array The current URL being accessed or form data if $fields is true
|
*/ function get_current_location($fields=false, $ignore=array(), $quick=false) {
|
*/ function get_current_location($fields=false, $ignore=array(), $quick=false) {
|
| global $mybb;
|
if(defined("MYBB_LOCATION")) { return MYBB_LOCATION; }
if(!empty($_SERVER['SCRIPT_NAME']))
|
if(defined("MYBB_LOCATION")) { return MYBB_LOCATION; }
if(!empty($_SERVER['SCRIPT_NAME']))
|
{
| {
|
$location = htmlspecialchars_uni($_SERVER['SCRIPT_NAME']); } elseif(!empty($_SERVER['PHP_SELF']))
| $location = htmlspecialchars_uni($_SERVER['SCRIPT_NAME']); } elseif(!empty($_SERVER['PHP_SELF']))
|
Zeile 5101 | Zeile 5226 |
---|
if($quick) { return $location;
|
if($quick) { return $location;
|
| }
if(!is_array($ignore)) { $ignore = array($ignore);
|
}
if($fields == true) {
|
}
if($fields == true) {
|
global $mybb;
if(!is_array($ignore)) { $ignore = array($ignore); }
| |
$form_html = ''; if(!empty($mybb->input))
| $form_html = ''; if(!empty($mybb->input))
|
Zeile 5127 | Zeile 5251 |
---|
}
return array('location' => $location, 'form_html' => $form_html, 'form_method' => $mybb->request_method);
|
}
return array('location' => $location, 'form_html' => $form_html, 'form_method' => $mybb->request_method);
|
} else {
| } else { $parameters = array();
|
if(isset($_SERVER['QUERY_STRING']))
|
if(isset($_SERVER['QUERY_STRING']))
|
{ $location .= "?".htmlspecialchars_uni($_SERVER['QUERY_STRING']);
| { $current_query_string = $_SERVER['QUERY_STRING'];
|
} else if(isset($_ENV['QUERY_STRING']))
|
} else if(isset($_ENV['QUERY_STRING']))
|
{ $location .= "?".htmlspecialchars_uni($_ENV['QUERY_STRING']); }
| { $current_query_string = $_ENV['QUERY_STRING']; } else { $current_query_string = ''; }
parse_str($current_query_string, $current_parameters);
|
|
|
if((isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == "POST") || (isset($_ENV['REQUEST_METHOD']) && $_ENV['REQUEST_METHOD'] == "POST"))
| foreach($current_parameters as $name => $value) { if(!in_array($name, $ignore)) { $parameters[$name] = $value; } }
if($mybb->request_method === 'post')
|
{ $post_array = array('action', 'fid', 'pid', 'tid', 'uid', 'eid');
foreach($post_array as $var) {
|
{ $post_array = array('action', 'fid', 'pid', 'tid', 'uid', 'eid');
foreach($post_array as $var) {
|
if(isset($_POST[$var])) { $addloc[] = urlencode($var).'='.urlencode($_POST[$var]); } }
if(isset($addloc) && is_array($addloc)) { if(strpos($location, "?") === false)
| if(isset($_POST[$var]) && !in_array($var, $ignore))
|
{
|
{
|
$location .= "?"; } else { $location .= "&";
| $parameters[$var] = $_POST[$var];
|
}
|
}
|
$location .= implode("&", $addloc);
| |
}
|
}
|
}
| }
if(!empty($parameters)) { $location .= '?'.http_build_query($parameters, '', '&'); }
|
return $location; } }
| return $location; } }
|
Zeile 5237 | Zeile 5368 |
---|
}
if($tid == 1 && ($num_themes > 1 || $count_override == true))
|
}
if($tid == 1 && ($num_themes > 1 || $count_override == true))
|
{
| {
|
if($footer == true)
|
if($footer == true)
|
{
| {
|
eval("\$themeselect = \"".$templates->get("footer_themeselector")."\";");
|
eval("\$themeselect = \"".$templates->get("footer_themeselector")."\";");
|
}
| }
|
else { eval("\$themeselect = \"".$templates->get("usercp_themeselector")."\";"); }
return $themeselect;
|
else { eval("\$themeselect = \"".$templates->get("usercp_themeselector")."\";"); }
return $themeselect;
|
}
| }
|
else { return false;
| else { return false;
|
Zeile 5260 | Zeile 5391 |
---|
* * @param int $tid The theme id of the theme. * @return boolean|array False if no valid theme, Array with the theme data otherwise
|
* * @param int $tid The theme id of the theme. * @return boolean|array False if no valid theme, Array with the theme data otherwise
|
*/
| */
|
function get_theme($tid) { global $tcache, $db;
|
function get_theme($tid) { global $tcache, $db;
|
|
|
if(!is_array($tcache)) { $query = $db->simple_select('themes', 'tid, name, pid, allowedgroups', "pid!='0'");
| if(!is_array($tcache)) { $query = $db->simple_select('themes', 'tid, name, pid, allowedgroups', "pid!='0'");
|
Zeile 5272 | Zeile 5403 |
---|
while($theme = $db->fetch_array($query)) { $tcache[$theme['pid']][$theme['tid']] = $theme;
|
while($theme = $db->fetch_array($query)) { $tcache[$theme['pid']][$theme['tid']] = $theme;
|
}
| }
|
}
$s_theme = false;
| }
$s_theme = false;
|
Zeile 5320 | Zeile 5451 |
---|
if($number == "-") { return $number;
|
if($number == "-") { return $number;
|
}
| }
|
if(is_int($number))
|
if(is_int($number))
|
{
| {
|
return number_format($number, 0, $mybb->settings['decpoint'], $mybb->settings['thousandssep']); } else
| return number_format($number, 0, $mybb->settings['decpoint'], $mybb->settings['thousandssep']); } else
|
Zeile 5331 | Zeile 5462 |
---|
$parts = explode('.', $number);
if(isset($parts[1]))
|
$parts = explode('.', $number);
if(isset($parts[1]))
|
{
| {
|
$decimals = my_strlen($parts[1]);
|
$decimals = my_strlen($parts[1]);
|
} else {
| } else {
|
$decimals = 0; }
| $decimals = 0; }
|
Zeile 5529 | Zeile 5660 |
---|
$lang->month_10, $lang->month_11, $lang->month_12
|
$lang->month_10, $lang->month_11, $lang->month_12
|
);
| );
|
// This needs to be in this specific order $find = array( 'm',
| // This needs to be in this specific order $find = array( 'm',
|
Zeile 5724 | Zeile 5855 |
---|
if(function_exists("mb_strlen")) { $string_length = mb_strlen($string);
|
if(function_exists("mb_strlen")) { $string_length = mb_strlen($string);
|
} else {
| } else {
|
$string_length = strlen($string); }
| $string_length = strlen($string); }
|
Zeile 5749 | Zeile 5880 |
---|
$string = unhtmlentities($string); } if(function_exists("mb_substr"))
|
$string = unhtmlentities($string); } if(function_exists("mb_substr"))
|
{ if($length != null) {
| { if($length != null) {
|
$cut_string = mb_substr($string, $start, $length); } else
| $cut_string = mb_substr($string, $start, $length); } else
|
Zeile 5787 | Zeile 5918 |
---|
function my_strtolower($string) { if(function_exists("mb_strtolower"))
|
function my_strtolower($string) { if(function_exists("mb_strtolower"))
|
{
| {
|
$string = mb_strtolower($string);
|
$string = mb_strtolower($string);
|
}
| } else { $string = strtolower($string); }
return $string; }
/** * Finds a needle in a haystack and returns it position, mb strings accounted for, case insensitive * * @param string $haystack String to look in (haystack) * @param string $needle What to look for (needle) * @param int $offset (optional) How much to offset * @return int|bool false on needle not found, integer position if found */ function my_stripos($haystack, $needle, $offset=0) { if($needle == '') { return false; }
if(function_exists("mb_stripos")) { $position = mb_stripos($haystack, $needle, $offset); }
|
else {
|
else {
|
$string = strtolower($string);
| $position = stripos($haystack, $needle, $offset);
|
}
|
}
|
return $string;
| return $position;
|
}
/**
| }
/**
|
Zeile 5811 | Zeile 5969 |
---|
if($needle == '') { return false;
|
if($needle == '') { return false;
|
}
| }
|
if(function_exists("mb_strpos"))
|
if(function_exists("mb_strpos"))
|
{
| {
|
$position = mb_strpos($haystack, $needle, $offset);
|
$position = mb_strpos($haystack, $needle, $offset);
|
}
| }
|
else { $position = strpos($haystack, $needle, $offset); }
return $position;
|
else { $position = strpos($haystack, $needle, $offset); }
return $position;
|
}
| }
|
/** * Ups the case of a string, mb strings accounted for
| /** * Ups the case of a string, mb strings accounted for
|
Zeile 5871 | Zeile 6029 |
---|
* @return string|bool The characterized ascii. False on failure */ function unichr($c)
|
* @return string|bool The characterized ascii. False on failure */ function unichr($c)
|
{
| {
|
if($c <= 0x7F) { return chr($c);
| if($c <= 0x7F) { return chr($c);
|
Zeile 5917 | Zeile 6075 |
---|
function unichr_callback2($matches) { return unichr($matches[1]);
|
function unichr_callback2($matches) { return unichr($matches[1]);
|
}
/**
| }
/**
|
* Get the event poster. * * @param array $event The event data array.
| * Get the event poster. * * @param array $event The event data array.
|
Zeile 5935 | Zeile 6093 |
---|
/** * Get the event date.
|
/** * Get the event date.
|
*
| *
|
* @param array $event The event data array. * @return string The event date. */
| * @param array $event The event data array. * @return string The event date. */
|
Zeile 5952 | Zeile 6110 |
---|
/** * Get the profile link.
|
/** * Get the profile link.
|
* * @param int $uid The user id of the profile.
| * * @param int $uid The user id of the profile.
|
* @return string The url to the profile. */ function get_profile_link($uid=0)
| * @return string The url to the profile. */ function get_profile_link($uid=0)
|
Zeile 6211 | Zeile 6369 |
---|
$username = $db->escape_string(my_strtolower($username));
if(!isset($options['username_method']))
|
$username = $db->escape_string(my_strtolower($username));
if(!isset($options['username_method']))
|
{
| {
|
$options['username_method'] = 0;
|
$options['username_method'] = 0;
|
}
| }
|
switch($db->type) {
| switch($db->type) {
|
Zeile 6221 | Zeile 6379 |
---|
case 'mysqli': $field = 'username'; $efield = 'email';
|
case 'mysqli': $field = 'username'; $efield = 'email';
|
break;
| break;
|
default: $field = 'LOWER(username)'; $efield = 'LOWER(email)';
|
default: $field = 'LOWER(username)'; $efield = 'LOWER(email)';
|
break; }
| break; }
|
switch($options['username_method']) {
| switch($options['username_method']) {
|
Zeile 6269 | Zeile 6427 |
---|
global $cache; static $forum_cache;
|
global $cache; static $forum_cache;
|
if(!isset($forum_cache) || is_array($forum_cache))
| if(!isset($forum_cache) || !is_array($forum_cache))
|
{ $forum_cache = $cache->read("forums"); }
if(empty($forum_cache[$fid]))
|
{ $forum_cache = $cache->read("forums"); }
if(empty($forum_cache[$fid]))
|
{
| {
|
return false; }
| return false; }
|
Zeile 6291 | Zeile 6449 |
---|
return false; } }
|
return false; } }
|
}
| }
|
}
return $forum_cache[$fid];
| }
return $forum_cache[$fid];
|
Zeile 6340 | Zeile 6498 |
---|
* @return array|bool The database row of the post. False on failure */ function get_post($pid)
|
* @return array|bool The database row of the post. False on failure */ function get_post($pid)
|
{ global $db;
| { global $db;
|
static $post_cache;
$pid = (int)$pid;
| static $post_cache;
$pid = (int)$pid;
|
Zeile 6364 | Zeile 6522 |
---|
{ $post_cache[$pid] = false; return false;
|
{ $post_cache[$pid] = false; return false;
|
}
| }
|
} }
| } }
|
Zeile 6396 | Zeile 6554 |
---|
$inactive[] = $fid1; } }
|
$inactive[] = $fid1; } }
|
} }
| } }
|
$inactiveforums = implode(",", $inactive);
| $inactiveforums = implode(",", $inactive);
|
Zeile 6431 | Zeile 6589 |
---|
} // This user has a cookie lockout, show waiting time elseif($mybb->cookies['lockoutexpiry'] && $mybb->cookies['lockoutexpiry'] > $now)
|
} // This user has a cookie lockout, show waiting time elseif($mybb->cookies['lockoutexpiry'] && $mybb->cookies['lockoutexpiry'] > $now)
|
{
| {
|
if($fatal) { $secsleft = (int)($mybb->cookies['lockoutexpiry'] - $now);
| if($fatal) { $secsleft = (int)($mybb->cookies['lockoutexpiry'] - $now);
|
Zeile 6472 | Zeile 6630 |
---|
// Are we still locked out? if($attempts['loginlockoutexpiry'] > $now)
|
// Are we still locked out? if($attempts['loginlockoutexpiry'] > $now)
|
{
| {
|
if($fatal) { $secsleft = (int)($attempts['loginlockoutexpiry'] - $now);
| if($fatal) { $secsleft = (int)($attempts['loginlockoutexpiry'] - $now);
|
Zeile 6505 | Zeile 6663 |
---|
// User can attempt another login return $attempts['loginattempts'];
|
// User can attempt another login return $attempts['loginattempts'];
|
}
| }
|
/** * Validates the format of an email address.
| /** * Validates the format of an email address.
|
Zeile 6537 | Zeile 6695 |
---|
$query = $db->simple_select("users", "COUNT(email) as emails", "email = '".$db->escape_string($email)."'{$uid_string}");
if($db->fetch_field($query, "emails") > 0)
|
$query = $db->simple_select("users", "COUNT(email) as emails", "email = '".$db->escape_string($email)."'{$uid_string}");
if($db->fetch_field($query, "emails") > 0)
|
{
| {
|
return true; }
| return true; }
|
Zeile 6561 | Zeile 6719 |
---|
while($setting = $db->fetch_array($query)) { $mybb->settings[$setting['name']] = $setting['value'];
|
while($setting = $db->fetch_array($query)) { $mybb->settings[$setting['name']] = $setting['value'];
|
| $setting['name'] = addcslashes($setting['name'], "\\'");
|
$setting['value'] = addcslashes($setting['value'], '\\"$'); $settings .= "\$settings['{$setting['name']}'] = \"{$setting['value']}\";\n"; }
| $setting['value'] = addcslashes($setting['value'], '\\"$'); $settings .= "\$settings['{$setting['name']}'] = \"{$setting['value']}\";\n"; }
|
Zeile 6585 | Zeile 6745 |
---|
if($mybb->settings['minsearchword'] < 1) { $mybb->settings['minsearchword'] = 3;
|
if($mybb->settings['minsearchword'] < 1) { $mybb->settings['minsearchword'] = 3;
|
}
| }
|
if(is_array($terms)) {
| if(is_array($terms)) {
|
Zeile 6601 | Zeile 6761 |
---|
"~" ); $terms = str_replace($bad_characters, '', $terms);
|
"~" ); $terms = str_replace($bad_characters, '', $terms);
|
|
|
// Check if this is a "series of words" - should be treated as an EXACT match if(my_strpos($terms, "\"") !== false) {
| // Check if this is a "series of words" - should be treated as an EXACT match if(my_strpos($terms, "\"") !== false) {
|
Zeile 6859 | Zeile 7019 |
---|
{ // Updating last use if($update_lastuse == true)
|
{ // Updating last use if($update_lastuse == true)
|
{
| {
|
$db->update_query("banfilters", array("lastuse" => TIME_NOW), "fid='{$banned_ip['fid']}'"); } return true;
| $db->update_query("banfilters", array("lastuse" => TIME_NOW), "fid='{$banned_ip['fid']}'"); } return true;
|
Zeile 6876 | Zeile 7036 |
---|
* @return string[] Key is timezone offset, Value the language description */ function get_supported_timezones()
|
* @return string[] Key is timezone offset, Value the language description */ function get_supported_timezones()
|
{
| {
|
global $lang; $timezones = array( "-12" => $lang->timezone_gmt_minus_1200,
| global $lang; $timezones = array( "-12" => $lang->timezone_gmt_minus_1200,
|
Zeile 6922 | Zeile 7082 |
---|
"14" => $lang->timezone_gmt_1400 ); return $timezones;
|
"14" => $lang->timezone_gmt_1400 ); return $timezones;
|
}
/**
| }
/**
|
* Build a time zone selection list. * * @param string $name The name of the select
| * Build a time zone selection list. * * @param string $name The name of the select
|
Zeile 6957 | Zeile 7117 |
---|
$label = "+{$label}"; } if(strpos($timezone, ".") !== false)
|
$label = "+{$label}"; } if(strpos($timezone, ".") !== false)
|
{
| {
|
$label = str_replace(".", ":", $label); $label = str_replace(":5", ":30", $label); $label = str_replace(":75", ":45", $label);
|
$label = str_replace(".", ":", $label); $label = str_replace(":5", ":30", $label); $label = str_replace(":75", ":45", $label);
|
}
| }
|
else { $label .= ":00";
| else { $label .= ":00";
|
Zeile 6973 | Zeile 7133 |
---|
eval("\$timezone_option .= \"".$templates->get("usercp_options_timezone_option")."\";"); }
|
eval("\$timezone_option .= \"".$templates->get("usercp_options_timezone_option")."\";"); }
|
|
|
eval("\$select = \"".$templates->get("usercp_options_timezone")."\";"); return $select; }
| eval("\$select = \"".$templates->get("usercp_options_timezone")."\";"); return $select; }
|
Zeile 6989 | Zeile 7149 |
---|
function fetch_remote_file($url, $post_data=array(), $max_redirects=20) { global $mybb, $config;
|
function fetch_remote_file($url, $post_data=array(), $max_redirects=20) { global $mybb, $config;
|
|
|
if(!my_validate_url($url, true))
|
if(!my_validate_url($url, true))
|
{
| {
|
return false;
|
return false;
|
}
| }
|
$url_components = @parse_url($url);
if(!isset($url_components['scheme']))
|
$url_components = @parse_url($url);
if(!isset($url_components['scheme']))
|
{
| {
|
$url_components['scheme'] = 'https';
|
$url_components['scheme'] = 'https';
|
}
| }
|
if(!isset($url_components['port'])) { $url_components['port'] = $url_components['scheme'] == 'https' ? 443 : 80;
|
if(!isset($url_components['port'])) { $url_components['port'] = $url_components['scheme'] == 'https' ? 443 : 80;
|
}
| }
|
if( !$url_components ||
| if( !$url_components ||
|
Zeile 7036 | Zeile 7196 |
---|
} } elseif($destination_address == $disallowed_address)
|
} } elseif($destination_address == $disallowed_address)
|
{
| {
|
return false; } }
| return false; } }
|
Zeile 7083 | Zeile 7243 |
---|
{ // CURLOPT_CONNECT_TO $curlopt[10243] = array(
|
{ // CURLOPT_CONNECT_TO $curlopt[10243] = array(
|
$url_components['host'].':'.$url_components['port'].':'.$destination_address );
| $url_components['host'].':'.$url_components['port'].':'.$destination_address );
|
} elseif(version_compare(PHP_VERSION, '5.5', '>=') && version_compare($curl_version, '7.21.3', '>=')) {
| } elseif(version_compare(PHP_VERSION, '5.5', '>=') && version_compare($curl_version, '7.21.3', '>=')) {
|
Zeile 7112 | Zeile 7272 |
---|
if(in_array(curl_getinfo($ch, CURLINFO_HTTP_CODE), array(301, 302))) {
|
if(in_array(curl_getinfo($ch, CURLINFO_HTTP_CODE), array(301, 302))) {
|
preg_match('/Location:(.*?)(?:\n|$)/', $header, $matches);
| preg_match('/^Location:(.*?)(?:\n|$)/im', $header, $matches);
|
if($matches) { $data = fetch_remote_file(trim(array_pop($matches)), $post_data, --$max_redirects);
|
if($matches) { $data = fetch_remote_file(trim(array_pop($matches)), $post_data, --$max_redirects);
|
} } else
| } } else
|
{ $data = $body; }
| { $data = $body; }
|
Zeile 7139 | Zeile 7299 |
---|
$url_components['path'] = "/"; } if(isset($url_components['query']))
|
$url_components['path'] = "/"; } if(isset($url_components['query']))
|
{
| {
|
$url_components['path'] .= "?{$url_components['query']}"; }
|
$url_components['path'] .= "?{$url_components['query']}"; }
|
|
|
$scheme = '';
if($url_components['scheme'] == 'https')
|
$scheme = '';
if($url_components['scheme'] == 'https')
|
{
| {
|
$scheme = 'ssl://'; if($url_components['port'] == 80) {
| $scheme = 'ssl://'; if($url_components['port'] == 80) {
|
Zeile 7157 | Zeile 7317 |
---|
if(function_exists('stream_context_create')) { if($url_components['scheme'] == 'https' && $ca_bundle_path = get_ca_bundle_path())
|
if(function_exists('stream_context_create')) { if($url_components['scheme'] == 'https' && $ca_bundle_path = get_ca_bundle_path())
|
{ $context = stream_context_create(array( 'ssl' => array(
| { $context = stream_context_create(array( 'ssl' => array(
|
'verify_peer' => true, 'verify_peer_name' => true, 'peer_name' => $url_components['host'],
| 'verify_peer' => true, 'verify_peer_name' => true, 'peer_name' => $url_components['host'],
|
Zeile 7173 | Zeile 7333 |
---|
'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false,
|
'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false,
|
| 'peer_name' => $url_components['host'],
|
), )); }
| ), )); }
|
Zeile 7237 | Zeile 7398 |
---|
if($max_redirects > 0 && (strstr($status_line, ' 301 ') || strstr($status_line, ' 302 '))) {
|
if($max_redirects > 0 && (strstr($status_line, ' 301 ') || strstr($status_line, ' 302 '))) {
|
preg_match('/Location:(.*?)(?:\n|$)/', $header, $matches);
| preg_match('/^Location:(.*?)(?:\n|$)/im', $header, $matches);
|
if($matches) {
| if($matches) {
|
Zeile 7375 | Zeile 7536 |
---|
else { $groups = (array)$groups;
|
else { $groups = (array)$groups;
|
} } }
| } } }
|
$groups = array_filter(array_map('intval', $groups));
return array_intersect($groups, $memberships);
| $groups = array_filter(array_map('intval', $groups));
return array_intersect($groups, $memberships);
|
Zeile 7636 | Zeile 7797 |
---|
}
return @unlink($path);
|
}
return @unlink($path);
|
}
| }
|
/** * Counts the number of subforums in a array([pid][disporder][fid]) starting from the pid *
| /** * Counts the number of subforums in a array([pid][disporder][fid]) starting from the pid *
|
Zeile 7895 | Zeile 8056 |
---|
$chr = substr($ip_lower_bits, $i, 8); $chr = chr(bindec($chr)); $ip_lower_pack .= $chr;
|
$chr = substr($ip_lower_bits, $i, 8); $chr = chr(bindec($chr)); $ip_lower_pack .= $chr;
|
}
| }
|
// Higher IP $ip_higher_pack = '';
| // Higher IP $ip_higher_pack = '';
|
Zeile 7912 | Zeile 8073 |
---|
else { return my_inet_pton($ipaddress);
|
else { return my_inet_pton($ipaddress);
|
}
| }
|
}
|
}
|
|
|
/** * Time how long it takes for a particular piece of code to run. Place calls above & below the block of code. *
| /** * Time how long it takes for a particular piece of code to run. Place calls above & below the block of code. *
|
Zeile 7928 | Zeile 8089 |
---|
// Just starting timer, init and return if(!$time_start)
|
// Just starting timer, init and return if(!$time_start)
|
{
| {
|
$time_start = $time; return; }
| $time_start = $time; return; }
|
Zeile 7960 | Zeile 8121 |
---|
if(substr($path, -1, 1) == "/") { $path = substr($path, 0, -1);
|
if(substr($path, -1, 1) == "/") { $path = substr($path, 0, -1);
|
}
| }
|
if(!is_array($bad_verify_files))
|
if(!is_array($bad_verify_files))
|
{
| {
|
$bad_verify_files = array(); }
| $bad_verify_files = array(); }
|
Zeile 7976 | Zeile 8137 |
---|
while(($file = @readdir($dh)) !== false) { if(in_array($file, $ignore) || in_array(get_extension($file), $ignore_ext))
|
while(($file = @readdir($dh)) !== false) { if(in_array($file, $ignore) || in_array(get_extension($file), $ignore_ext))
|
{ continue;
| { continue;
|
}
// Recurse through the directory tree
| }
// Recurse through the directory tree
|
Zeile 8025 | Zeile 8186 |
---|
if(in_array(basename($file_path), $ignore)) { continue;
|
if(in_array(basename($file_path), $ignore)) { continue;
|
}
| }
|
$bad_verify_files[] = array("status" => "missing", "path" => $file_path); } }
| $bad_verify_files[] = array("status" => "missing", "path" => $file_path); } }
|
Zeile 8071 | Zeile 8232 |
---|
{ $output = random_bytes($bytes); } catch (Exception $e) {
|
{ $output = random_bytes($bytes); } catch (Exception $e) {
|
} }
if(strlen($output) < $bytes)
| } }
if(strlen($output) < $bytes)
|
{ if(@is_readable('/dev/urandom') && ($handle = @fopen('/dev/urandom', 'rb'))) {
| { if(@is_readable('/dev/urandom') && ($handle = @fopen('/dev/urandom', 'rb'))) {
|
Zeile 8090 | Zeile 8251 |
---|
if(strlen($output) < $bytes) { if(function_exists('mcrypt_create_iv'))
|
if(strlen($output) < $bytes) { if(function_exists('mcrypt_create_iv'))
|
{
| {
|
if (DIRECTORY_SEPARATOR == '/')
|
if (DIRECTORY_SEPARATOR == '/')
|
{
| {
|
$source = MCRYPT_DEV_URANDOM;
|
$source = MCRYPT_DEV_URANDOM;
|
}
| }
|
else { $source = MCRYPT_RAND; }
$output = @mcrypt_create_iv($bytes, $source);
|
else { $source = MCRYPT_RAND; }
$output = @mcrypt_create_iv($bytes, $source);
|
} } else { return $output; }
| } } else { return $output; }
|
if(strlen($output) < $bytes) {
| if(strlen($output) < $bytes) {
|
Zeile 8119 | Zeile 8280 |
---|
if ($crypto_strong == false) { $output = null;
|
if ($crypto_strong == false) { $output = null;
|
} } } }
| } } } }
|
else { return $output;
| else { return $output;
|
Zeile 8154 | Zeile 8315 |
---|
$unique_state = microtime().@getmypid();
$rounds = ceil($bytes / 16);
|
$unique_state = microtime().@getmypid();
$rounds = ceil($bytes / 16);
|
|
|
for($i = 0; $i < $rounds; $i++) { $unique_state = md5(microtime().$unique_state);
| for($i = 0; $i < $rounds; $i++) { $unique_state = md5(microtime().$unique_state);
|
Zeile 8669 | Zeile 8830 |
---|
if($pmhandler->validate_pm()) { $pmhandler->insert_pm();
|
if($pmhandler->validate_pm()) { $pmhandler->insert_pm();
|
return true; }
| return true; }
|
return false; }
| return false; }
|
Zeile 8687 | Zeile 8848 |
---|
function log_spam_block($username = '', $email = '', $ip_address = '', $data = array()) { global $db, $session;
|
function log_spam_block($username = '', $email = '', $ip_address = '', $data = array()) { global $db, $session;
|
|
|
if(!is_array($data)) { $data = array($data);
| if(!is_array($data)) { $data = array($data);
|
Zeile 8719 | Zeile 8880 |
---|
* @param string $uploaded_path The path the file was uploaded to, reference parameter for when this may be needed. * * @return bool Whether the file was copied successfully.
|
* @param string $uploaded_path The path the file was uploaded to, reference parameter for when this may be needed. * * @return bool Whether the file was copied successfully.
|
*/
| */
|
function copy_file_to_cdn($file_path = '', &$uploaded_path = null) { global $mybb, $plugins;
|
function copy_file_to_cdn($file_path = '', &$uploaded_path = null) { global $mybb, $plugins;
|
$success = false;
$file_path = (string)$file_path;
| $success = false;
|
|
|
$real_file_path = realpath($file_path);
| $file_path = (string)$file_path;
$real_file_path = realpath($file_path);
|
$file_dir_path = dirname($real_file_path); $file_dir_path = str_replace(MYBB_ROOT, '', $file_dir_path); $file_dir_path = ltrim($file_dir_path, './\\');
$file_name = basename($real_file_path);
|
$file_dir_path = dirname($real_file_path); $file_dir_path = str_replace(MYBB_ROOT, '', $file_dir_path); $file_dir_path = ltrim($file_dir_path, './\\');
$file_name = basename($real_file_path);
|
|
|
if(file_exists($file_path)) {
|
if(file_exists($file_path)) {
|
| if(is_object($plugins)) { $hook_args = array( 'file_path' => &$file_path, 'real_file_path' => &$real_file_path, 'file_name' => &$file_name, 'file_dir_path' => &$file_dir_path ); $plugins->run_hooks('copy_file_to_cdn_start', $hook_args); }
|
if($mybb->settings['usecdn'] && !empty($mybb->settings['cdnpath'])) { $cdn_path = rtrim($mybb->settings['cdnpath'], '/\\');
| if($mybb->settings['usecdn'] && !empty($mybb->settings['cdnpath'])) { $cdn_path = rtrim($mybb->settings['cdnpath'], '/\\');
|
Zeile 8766 | Zeile 8939 |
---|
} } }
|
} } }
|
}
| }
|
if(is_object($plugins)) { $hook_args = array(
| if(is_object($plugins)) { $hook_args = array(
|
Zeile 8799 | Zeile 8972 |
---|
if($allow_local) { $regex = '_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:localhost|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,}))\.?))(?::\d{2,5})?(?:[/?#]\S*)?$_iuS';
|
if($allow_local) { $regex = '_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:localhost|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,}))\.?))(?::\d{2,5})?(?:[/?#]\S*)?$_iuS';
|
}
| }
|
else { $regex = '_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$_iuS';
| else { $regex = '_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]-*)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$_iuS';
|
Zeile 8831 | Zeile 9004 |
---|
); $string = preg_replace($pattern, '', $string); return strip_tags($string, $allowable_tags);
|
); $string = preg_replace($pattern, '', $string); return strip_tags($string, $allowable_tags);
|
}
| }
|
/** * Escapes a RFC 4180-compliant CSV string. * Based on https://github.com/Automattic/camptix/blob/f80725094440bf09861383b8f11e96c177c45789/camptix.php#L2867
| /** * Escapes a RFC 4180-compliant CSV string. * Based on https://github.com/Automattic/camptix/blob/f80725094440bf09861383b8f11e96c177c45789/camptix.php#L2867
|
Zeile 8863 | Zeile 9036 |
---|
foreach($active_content_triggers as $trigger) { $string = str_replace($delimiter.$trigger, $delimiter."'".$trigger, $string);
|
foreach($active_content_triggers as $trigger) { $string = str_replace($delimiter.$trigger, $delimiter."'".$trigger, $string);
|
} }
| } }
|
}
$string = str_replace('"', '""', $string);
| }
$string = str_replace('"', '""', $string);
|
Zeile 8894 | Zeile 9067 |
---|
} } return $values;
|
} } return $values;
|
} }
| } }
|
/** * Performs a timing attack safe string comparison. *
| /** * Performs a timing attack safe string comparison. *
|
Zeile 8929 | Zeile 9102 |
---|
return $result === 0; }
|
return $result === 0; }
|
| }
/** * Retrieves all referrals for a specified user * * @param int uid * @param int start position * @param int total entries * @param bool false (default) only return display info, true for all info * @return array */ function get_user_referrals($uid, $start=0, $limit=0, $full=false) { global $db;
$referrals = $query_options = array(); $uid = (int) $uid;
if($uid === 0) { return $referrals; }
if($start && $limit) { $query_options['limit_start'] = $start; }
if($limit) { $query_options['limit'] = $limit; }
$fields = 'uid, username, usergroup, displaygroup, regdate'; if($full === true) { $fields = '*'; }
$query = $db->simple_select('users', $fields, "referrer='{$uid}'", $query_options);
while($referral = $db->fetch_array($query)) { $referrals[] = $referral; }
return $referrals;
|
}
| }
|