📄 functions.php
字号:
else return $url.'?'.$SID; } else { return $url; } } // // Fetch a language file // function fetch_language($language='', $section='') { $language = ( !empty($language) && in_array($language, $this->get_language_packs()) ) ? $language : $this->get_config('language'); $section = ( !empty($section) ) ? $section : 'lang'; if ( !array_key_exists($language, $this->language_sections) || !in_array($section, $this->language_sections[$language]) ) { if ( $section != 'lang' ) { $lang = $GLOBALS['lang']; if ( !file_exists(ROOT_PATH.'languages/'.$section.'_'.$language.'.php') ) { if ( $language != 'English' && in_array('English', $this->get_language_packs()) ) require(ROOT_PATH.'languages/'.$section.'_English.php'); else trigger_error('Section "'.$section.'" for language pack "'.$language.'" could not be found. No English fallback was available. Please use an updated language pack or also upload the English one.'); } else { require(ROOT_PATH.'languages/'.$section.'_'.$language.'.php'); if ( $language != 'English' && in_array('English', $this->get_language_packs()) ) $lang = array_merge($this->fetch_language('English', $section), $lang); } } else { require(ROOT_PATH.'languages/'.$section.'_'.$language.'.php'); if ( $language != 'English' && in_array('English', $this->get_language_packs()) ) $lang = array_merge($this->fetch_language('English', $section), $lang); if ( empty($lang['character_encoding']) ) $lang['character_encoding'] = 'iso-8859-1'; if ( function_exists('mb_internal_encoding') ) mb_internal_encoding($lang['character_encoding']); } $this->languages[$language] = $lang; } if ( !array_key_exists($language, $this->language_sections) ) $this->language_sections[$language] = array(); $this->language_sections[$language][] = $section; return $this->languages[$language]; } // // Kick a user to the login form // function redir_to_login() { global $session, $template, $lang; if ( !$session->sess_info['user_id'] ) { $_SESSION['referer'] = $_SERVER['REQUEST_URI']; $this->redirect('panel.php', array('act' => 'login')); } else { header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden'); $template->set_page_title($lang['Note']); $template->parse('msgbox', 'global', array( 'box_title' => $lang['Note'], 'content' => $lang['NotPermitted'] )); } } // // Generate a date given a timestamp // function make_date($stamp, $format='', $keep_gmt=false, $translate=true) { global $lang; $format = ( !empty($format) ) ? $format : $this->get_config('date_format'); if ( $keep_gmt ) $date = gmdate($format, $stamp); else $date = gmdate($format, $stamp + (3600 * $this->get_config('timezone')) + (3600 * $this->get_config('dst'))); if ( $translate && array_key_exists('date_translations', $lang) && is_array($lang['date_translations']) ) $date = ucfirst(strtr($date, $lang['date_translations'])); return $date; } // // Generate a time past string // function time_past($timestamp, $until='') { global $lang; $seconds = ( ( is_int($until) ) ? $until : time() ) - $timestamp; $times = array(); $sections = array( 'weeks' => 604800, 'days' => 86400, 'hours' => 3600, 'minutes' => 60, 'seconds' => 1 ); foreach( $sections as $what => $length ) { if ( $seconds >= $length ) { $times[$what] = ( $length >0 ) ? floor($seconds / $length) : $length; $seconds %= $length; } } $sections = array(); foreach ( $times as $key => $val ) $sections[] = $val.' '.$lang[ucfirst($key)]; return array($times, join(', ', $sections)); } // // Generate an e-mail link // function show_email($user) { global $session, $lang; if ( $this->get_user_level() >= intval($this->get_config('view_hidden_email_addresses_min_level')) ) { // // The viewing user is an administrator // if ( $this->get_config('email_view_level') == 1 ) return '<a href="'.$this->make_url('mail.php', array('id' => $user['id'])).'">'.$lang['SendMessage'].'</a>'; elseif ( !$this->get_config('email_view_level') || $this->get_config('email_view_level') == 2 || $this->get_config('email_view_level') == 3 ) return '<a href="mailto:'.$user['email'].'">'.$user['email'].'</a>'; } else { // // The viewing user is not an administrator // if ( !$this->get_config('email_view_level') || !$user['email_show'] && $user['id'] != $session->sess_info['user_id'] ) return $lang['Hidden']; elseif ( $this->get_config('email_view_level') == 1 ) return '<a href="'.$this->make_url('mail.php', array('id' => $user['id'])).'">'.$lang['SendMessage'].'</a>'; elseif ( $this->get_config('email_view_level') == 2 ) return str_replace('@', ' at ', $user['email']); elseif ( $this->get_config('email_view_level') == 3 ) return '<a href="mailto:'.$user['email'].'">'.$user['email'].'</a>'; } } // // Generate a random key // function random_key() { $characters = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890'; $length = 10; $key = ''; for ( $i=0; $i<$length; $i++ ) { // // Make a seed for the random key generator // This is needed on PHP < 4.2.0 // $seed = explode(' ', microtime()); mt_srand($seed[0] * $seed[1]); $key .= $characters[mt_rand(0, strlen($characters)-1)]; } return $key; } // // Send an email // function usebb_mail($subject, $rawbody, $bodyvars=array(), $from_name, $from_email, $to, $bcc_email='', $language='', $charset='') { global $lang; $bodyvars = ( is_array($bodyvars) ) ? $bodyvars : array(); // // Eventually use the right language and character encoding which may be passed // in the parameters when another language is used (e.g. subscription notices) // $language = ( !empty($language) ) ? $language : $this->get_config('language'); $charset = ( !empty($charset) ) ? $charset : $lang['character_encoding']; // // Set the correct mb_language when neccessary (only for Japanese, English or UTF-8) // if ( function_exists('mb_language') ) { if ( in_array($language, array('Japanese', 'ja', 'English', 'en')) ) mb_language($language); elseif ( strtolower($charset) == 'utf-8' ) mb_language('uni'); else mb_language('en'); } $body = str_replace(array("\r\n", "\r"), "\n", $rawbody); // // Windows: \r\n; other: \n // $cr = ( strstr(PHP_OS, 'WIN') !== false ) ? "\r\n" : "\n"; $body = str_replace("\n", $cr, $rawbody); $bodyvars['board_name'] = $this->get_config('board_name'); $bodyvars['board_link'] = $this->get_config('board_url'); $bodyvars['admin_email'] = $this->get_config('admin_email'); foreach ( $bodyvars as $key => $val ) $body = str_replace('['.$key.']', $val, $body); $headers = array(); if ( function_exists('mb_encode_mimeheader') ) { $from_name = mb_encode_mimeheader($from_name); $subject = mb_encode_mimeheader($subject); } $headers[] = 'MIME-Version: 1.0'; if ( !empty($bcc_email) ) $headers[] = 'Bcc: '.$bcc_email; $headers[] = 'Date: '.date('r'); $headers[] = 'X-Mailer: UseBB/'.USEBB_VERSION; $headers[] = 'From: '.$from_name.' <'.$from_email.'>'; if ( function_exists('mb_send_mail') ) { if ( !mb_send_mail($to, $subject, $body, join($cr, $headers)) ) trigger_error('Unable to send e-mail!'); } else { if ( strtolower($charset) == 'utf-8' ) $headers[] = 'Content-Transfer-Encoding: 8bit'; if ( !mail($to, $subject, $body, join($cr, $headers)) ) trigger_error('Unable to send e-mail!'); } if ( function_exists('mb_language') ) { mb_language($this->get_config('language')); mb_internal_encoding($lang['character_encoding']); } } // // Set the remember cookie // function set_al($user_id, $passwd_hash) { $content = array( intval($user_id), $passwd_hash ); setcookie($this->get_config('session_name').'_al', serialize($content), time()+31536000, $this->get_config('cookie_path'), $this->get_config('cookie_domain'), $this->get_config('cookie_secure')); } // // Unset the remember cookie // function unset_al() { setcookie($this->get_config('session_name').'_al', '', time()-31536000, $this->get_config('cookie_path'), $this->get_config('cookie_domain'), $this->get_config('cookie_secure')); } // // Is the remember cookie set? // function isset_al() { if ( !empty($_COOKIE[$this->get_config('session_name').'_al']) ) return true; else return false; } // // Get the remember cookie's value // function get_al() { if ( $this->isset_al() ) { $content = stripslashes($_COOKIE[$this->get_config('session_name').'_al']); if ( substr($content, 0, 1) == 'a' ) return unserialize($content); else return explode(':', $content, 2); } else { return false; } } // // Get the user's level // function get_user_level() { global $session; if ( !isset($session->sess_info['user_id']) ) trigger_error('You first need to call $session->update() before you can get any session info.'); if ( $session->sess_info['user_id'] ) return $session->sess_info['user_info']['level']; else return LEVEL_GUEST; } // // Authorization function // Defines whether a user has permission to take a certain action. // function auth($auth_int, $action, $forum_id, $self=true, $alternative_user_info=null) { global $session, $db; if ( $self ) $user_info = ( $session->sess_info['user_id'] ) ? $session->sess_info['user_info'] : array('id' => LEVEL_GUEST, 'level' => LEVEL_GUEST); else $user_info = $alternative_user_info; if ( ( $self && $session->sess_info['ip_banned'] ) || ( $this->get_config('board_closed') && $user_info['level'] < LEVEL_ADMIN ) ) return false; // // Define the user level // if ( $user_info['id'] ) { if ( $user_info['level'] == LEVEL_MOD ) { if ( !is_array($this->mod_auth) ) { $result = $db->query("SELECT forum_id FROM ".TABLE_PREFIX."moderators WHERE user_id = ".$user_info['id']); $this->mod_auth = array(); while ( $out = $db->fetch_result($result) ) $this->mod_auth[] = intval($out['forum_id']); } if ( in_array($forum_id, $this->mod_auth) ) $userlevel = LEVEL_MOD; else $userlevel = LEVEL_MEMBER; } else { $userlevel = $user_info['level']; } } else { if ( !$this->get_config('guests_can_access_board') ) return false; else $userlevel = LEVEL_GUEST; } // // Get the part of the auth integer that // corresponds with the action given // $actions = array( 'view' => 0, 'read' => 1, 'post' => 2, 'reply' => 3, 'edit' => 4, 'move' => 5, 'delete' => 6, 'lock' => 7, 'sticky' => 8, 'html' => 9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -