本文整理汇总了PHP中FeatherBB\Core\Utils::trim方法的典型用法代码示例。如果您正苦于以下问题:PHP Utils::trim方法的具体用法?PHP Utils::trim怎么用?PHP Utils::trim使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FeatherBB\Core\Utils
的用法示例。
在下文中一共展示了Utils::trim方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: display
public function display($req, $res, $args)
{
Container::get('hooks')->fire('controller.userlist.display');
if (User::get()->g_view_users == '0') {
throw new Error(__('No permission'), 403);
}
// Determine if we are allowed to view post counts
$show_post_count = ForumSettings::get('o_show_post_count') == '1' || User::get()->is_admmod ? true : false;
$username = Input::query('username') && User::get()->g_search_users == '1' ? Utils::trim(Input::query('username')) : '';
$show_group = Input::query('show_group') ? intval(Input::query('show_group')) : -1;
$sort_by = Input::query('sort_by') && (in_array(Input::query('sort_by'), array('username', 'registered')) || Input::query('sort_by') == 'num_posts' && $show_post_count) ? Input::query('sort_by') : 'username';
$sort_dir = Input::query('sort_dir') && Input::query('sort_dir') == 'DESC' ? 'DESC' : 'ASC';
$num_users = $this->model->fetch_user_count($username, $show_group);
// Determine the user offset (based on $page)
$num_pages = ceil($num_users / 50);
$p = !Input::query('p') || $page <= 1 || $page > $num_pages ? 1 : intval($page);
$start_from = 50 * ($p - 1);
if (User::get()->g_search_users == '1') {
$focus_element = array('userlist', 'username');
} else {
$focus_element = array();
}
// Generate paging links
$paging_links = '<span class="pages-label">' . __('Pages') . ' </span>' . Url::paginate_old($num_pages, $p, '?username=' . urlencode($username) . '&show_group=' . $show_group . '&sort_by=' . $sort_by . '&sort_dir=' . $sort_dir);
View::setPageInfo(array('title' => array(Utils::escape(ForumSettings::get('o_board_title')), __('User list')), 'active_page' => 'userlist', 'page_number' => $p, 'paging_links' => $paging_links, 'focus_element' => $focus_element, 'is_indexed' => true, 'username' => $username, 'show_group' => $show_group, 'sort_by' => $sort_by, 'sort_dir' => $sort_dir, 'show_post_count' => $show_post_count, 'dropdown_menu' => $this->model->generate_dropdown_menu($show_group), 'userlist_data' => $this->model->print_users($username, $start_from, $sort_by, $sort_dir, $show_group)))->addTemplate('userlist.php')->display();
}
示例2: display
public function display($req, $res, $args)
{
Container::get('hooks')->fire('controller.admin.maintenance.display');
$action = '';
if (Input::post('action')) {
$action = Input::post('action');
} elseif (Input::query('action')) {
$action = Input::query('action');
}
if ($action == 'rebuild') {
$this->model->rebuild();
View::setPageInfo(array('page_title' => array(Utils::escape(ForumSettings::get('o_board_title')), __('Rebuilding search index')), 'query_str' => $this->model->get_query_str()))->addTemplate('admin/maintenance/rebuild.php')->display();
}
if ($action == 'prune') {
$prune_from = Utils::trim(Input::post('prune_from'));
$prune_sticky = intval(Input::post('prune_sticky'));
AdminUtils::generateAdminMenu('maintenance');
if (Input::post('prune_comply')) {
$this->model->prune_comply($prune_from, $prune_sticky);
}
View::setPageInfo(array('title' => array(Utils::escape(ForumSettings::get('o_board_title')), __('Admin'), __('Prune')), 'active_page' => 'admin', 'admin_console' => true, 'prune_sticky' => $prune_sticky, 'prune_from' => $prune_from, 'prune' => $this->model->get_info_prune($prune_sticky, $prune_from)))->addTemplate('admin/maintenance/prune.php')->display();
}
AdminUtils::generateAdminMenu('maintenance');
View::setPageInfo(array('title' => array(Utils::escape(ForumSettings::get('o_board_title')), __('Admin'), __('Maintenance')), 'active_page' => 'admin', 'admin_console' => true, 'first_id' => $this->model->get_first_id(), 'categories' => $this->model->get_categories()))->addTemplate('admin/maintenance/admin_maintenance.php')->display();
}
示例3: add_category
public function add_category()
{
$cat_name = Utils::trim($this->request->post('cat_name'));
if ($cat_name == '') {
Url::redirect($this->feather->urlFor('adminCategories'), __('Must enter name message'));
}
if ($this->model->add_category($cat_name)) {
Url::redirect($this->feather->urlFor('adminCategories'), __('Category added redirect'));
} else {
//TODO, add error message
Url::redirect($this->feather->urlFor('adminCategories'), __('Category added redirect'));
}
}
示例4: add
public function add($req, $res, $args)
{
Container::get('hooks')->fire('controller.admin.categories.add');
$cat_name = Utils::trim(Input::post('cat_name'));
if ($cat_name == '') {
return Router::redirect(Router::pathFor('adminCategories'), __('Must enter name message'));
}
if ($this->model->add_category($cat_name)) {
return Router::redirect(Router::pathFor('adminCategories'), __('Category added redirect'));
} else {
//TODO, add error message
return Router::redirect(Router::pathFor('adminCategories'), __('Category added redirect'));
}
}
示例5: update_word
public function update_word()
{
$id = intval(key($this->request->post('update')));
$search_for = Utils::trim($this->request->post('search_for')[$id]);
$replace_with = Utils::trim($this->request->post('replace_with')[$id]);
if ($search_for == '') {
throw new Error(__('Must enter word message'), 400);
}
$set_search_word = array('search_for' => $search_for, 'replace_with' => $replace_with);
$set_search_word = $this->hook->fire('update_censoring_word_start', $set_search_word);
$result = DB::for_table('censoring')->find_one($id)->set($set_search_word)->save();
// Regenerate the censoring cache
$this->feather->cache->store('search_for', Cache::get_censoring('search_for'));
$this->feather->cache->store('replace_with', Cache::get_censoring('replace_with'));
Url::redirect($this->feather->urlFor('adminCensoring'), __('Word updated redirect'));
}
示例6: update_word
public function update_word()
{
$id = intval(key(Input::post('update')));
$search_for = Utils::trim(Input::post('search_for')[$id]);
$replace_with = Utils::trim(Input::post('replace_with')[$id]);
if ($search_for == '') {
throw new Error(__('Must enter word message'), 400);
}
$set_search_word = array('search_for' => $search_for, 'replace_with' => $replace_with);
$set_search_word = Container::get('hooks')->fire('model.admin.censoring.update_censoring_word_start', $set_search_word);
$result = DB::for_table('censoring')->find_one($id)->set($set_search_word)->save();
// Regenerate the censoring cache
Container::get('cache')->store('search_for', Cache::get_censoring('search_for'));
Container::get('cache')->store('replace_with', Cache::get_censoring('replace_with'));
return Router::redirect(Router::pathFor('adminCensoring'), __('Word updated redirect'));
}
示例7: forget
public function forget()
{
if (!$this->feather->user->is_guest) {
Url::redirect($this->feather->urlFor('home'), 'Already logged in');
}
if ($this->feather->request->isPost()) {
// Validate the email address
$email = strtolower(Utils::trim($this->feather->request->post('req_email')));
if (!$this->feather->email->is_valid_email($email)) {
throw new Error(__('Invalid email'), 400);
}
$user = ModelAuth::get_user_from_email($email);
if ($user) {
// Load the "activate password" template
$mail_tpl = trim(file_get_contents($this->feather->forum_env['FEATHER_ROOT'] . 'featherbb/lang/' . $this->feather->user->language . '/mail_templates/activate_password.tpl'));
$mail_tpl = $this->feather->hooks->fire('mail_tpl_password_forgotten', $mail_tpl);
// The first row contains the subject
$first_crlf = strpos($mail_tpl, "\n");
$mail_subject = trim(substr($mail_tpl, 8, $first_crlf - 8));
$mail_message = trim(substr($mail_tpl, $first_crlf));
// Do the generic replacements first (they apply to all emails sent out here)
$mail_message = str_replace('<base_url>', Url::base() . '/', $mail_message);
$mail_message = str_replace('<board_mailer>', $this->feather->forum_settings['o_board_title'], $mail_message);
$mail_message = $this->feather->hooks->fire('mail_message_password_forgotten', $mail_message);
if ($user->last_email_sent != '' && time() - $user->last_email_sent < 3600 && time() - $user->last_email_sent >= 0) {
throw new Error(sprintf(__('Email flood'), intval((3600 - (time() - $user->last_email_sent)) / 60)), 429);
}
// Generate a new password and a new password activation code
$new_password = Random::pass(12);
$new_password_key = Random::pass(8);
ModelAuth::set_new_password($new_password, $new_password_key, $user->id);
// Do the user specific replacements to the template
$cur_mail_message = str_replace('<username>', $user->username, $mail_message);
$cur_mail_message = str_replace('<activation_url>', $this->feather->urlFor('profileAction', ['action' => 'change_pass']) . '?key=' . $new_password_key, $cur_mail_message);
$cur_mail_message = str_replace('<new_password>', $new_password, $cur_mail_message);
$cur_mail_message = $this->feather->hooks->fire('cur_mail_message_password_forgotten', $cur_mail_message);
$this->feather->email->feather_mail($email, $mail_subject, $cur_mail_message);
Url::redirect($this->feather->urlFor('home'), __('Forget mail') . ' <a href="mailto:' . $this->feather->utils->escape($this->feather->forum_settings['o_admin_email']) . '">' . $this->feather->utils->escape($this->feather->forum_settings['o_admin_email']) . '</a>.', 200);
} else {
throw new Error(__('No email match') . ' ' . Utils::escape($email) . '.', 400);
}
}
$this->feather->template->setPageInfo(array('active_page' => 'login', 'title' => array(Utils::escape($this->feather->forum_settings['o_board_title']), __('Request pass')), 'required_fields' => array('req_email' => __('Email')), 'focus_element' => array('request_pass', 'req_email')))->addTemplate('login/password_forgotten.php')->display();
}
示例8: display
public function display()
{
$action = '';
if ($this->feather->request->post('action')) {
$action = $this->feather->request->post('action');
} elseif ($this->feather->request->get('action')) {
$action = $this->feather->request->get('action');
}
if ($action == 'rebuild') {
$this->model->rebuild();
$this->feather->template->setPageInfo(array('page_title' => array(Utils::escape($this->feather->forum_settings['o_board_title']), __('Rebuilding search index')), 'query_str' => $this->model->get_query_str()))->addTemplate('admin/maintenance/rebuild.php')->display();
}
if ($action == 'prune') {
$prune_from = Utils::trim($this->feather->request->post('prune_from'));
$prune_sticky = intval($this->feather->request->post('prune_sticky'));
AdminUtils::generateAdminMenu('maintenance');
if ($this->feather->request->post('prune_comply')) {
$this->model->prune_comply($prune_from, $prune_sticky);
}
$this->feather->template->setPageInfo(array('title' => array(Utils::escape($this->feather->forum_settings['o_board_title']), __('Admin'), __('Prune')), 'active_page' => 'admin', 'admin_console' => true, 'prune_sticky' => $prune_sticky, 'prune_from' => $prune_from, 'prune' => $this->model->get_info_prune($prune_sticky, $prune_from)))->addTemplate('admin/maintenance/prune.php')->display();
}
AdminUtils::generateAdminMenu('maintenance');
$this->feather->template->setPageInfo(array('title' => array(Utils::escape($this->feather->forum_settings['o_board_title']), __('Admin'), __('Maintenance')), 'active_page' => 'admin', 'admin_console' => true, 'first_id' => $this->model->get_first_id(), 'categories' => $this->model->get_categories()))->addTemplate('admin/maintenance/admin_maintenance.php')->display();
}
示例9:
" /><br /></label>
<?php
}
?>
<label class="required"><strong><?php
_e('Message');
?>
<span><?php
_e('Required');
?>
</span></strong><br />
<textarea name="req_message" id="req_message" rows="20" cols="95" tabindex="<?php
echo $cur_index++;
?>
"><?php
echo Input::post('req_message') ? Utils::linebreaks(Utils::trim(Utils::escape(Input::post('req_message')))) : (isset($quote) ? $quote : '');
?>
</textarea><br /></label>
<ul class="bblinks">
<li><span><a href="<?php
echo Router::pathFor('help') . '#bbcode';
?>
" onclick="window.open(this.href); return false;"><?php
_e('BBCode');
?>
ok</a> <?php
echo ForumSettings::get('p_message_bbcode') == '1' ? __('on') : __('off');
?>
</span></li>
<li><span><a href="<?php
echo Router::pathFor('help') . '#url';
示例10: get_info_prune
public function get_info_prune($prune_sticky, $prune_from)
{
$prune = array();
$prune['days'] = Utils::trim(Input::post('req_prune_days'));
if ($prune['days'] == '' || preg_match('%[^0-9]%', $prune['days'])) {
throw new Error(__('Days must be integer message'), 400);
}
$prune['date'] = time() - $prune['days'] * 86400;
$prune = Container::get('hooks')->fire('model.admin.maintenance.get_info_prune.prune_dates', $prune);
// Concatenate together the query for counting number of topics to prune
$query = DB::for_table('topics')->where_lt('last_post', $prune['date'])->where_null('moved_to');
if ($prune_sticky == '0') {
$query = $query->where('sticky', 0);
}
if ($prune_from != 'all') {
$query = $query->where('forum_id', intval($prune_from));
// Fetch the forum name (just for cosmetic reasons)
$forum = DB::for_table('forums')->where('id', $prune_from);
$forum = Container::get('hooks')->fireDB('model.admin.maintenance.get_info_prune.forum_query', $forum);
$forum = $forum->find_one_col('forum_name');
$prune['forum'] = '"' . Utils::escape($forum) . '"';
} else {
$prune['forum'] = __('All forums');
}
$prune['num_topics'] = $query->count('id');
if (!$prune['num_topics']) {
throw new Error(sprintf(__('No old topics message'), $prune['days']), 404);
}
$prune = Container::get('hooks')->fire('model.admin.maintenance.get_info_prune.prune', $prune);
return $prune;
}
示例11: update_options
public function update_options()
{
$form = array('board_title' => Utils::trim($this->request->post('form_board_title')), 'board_desc' => Utils::trim($this->request->post('form_board_desc')), 'base_url' => Utils::trim($this->request->post('form_base_url')), 'default_timezone' => floatval($this->request->post('form_default_timezone')), 'default_dst' => $this->request->post('form_default_dst') != '1' ? '0' : '1', 'default_lang' => Utils::trim($this->request->post('form_default_lang')), 'default_style' => Utils::trim($this->request->post('form_default_style')), 'time_format' => Utils::trim($this->request->post('form_time_format')), 'date_format' => Utils::trim($this->request->post('form_date_format')), 'timeout_visit' => intval($this->request->post('form_timeout_visit')) > 0 ? intval($this->request->post('form_timeout_visit')) : 1, 'timeout_online' => intval($this->request->post('form_timeout_online')) > 0 ? intval($this->request->post('form_timeout_online')) : 1, 'redirect_delay' => intval($this->request->post('form_redirect_delay')) >= 0 ? intval($this->request->post('form_redirect_delay')) : 0, 'show_version' => $this->request->post('form_show_version') != '1' ? '0' : '1', 'show_user_info' => $this->request->post('form_show_user_info') != '1' ? '0' : '1', 'show_post_count' => $this->request->post('form_show_post_count') != '1' ? '0' : '1', 'smilies' => $this->request->post('form_smilies') != '1' ? '0' : '1', 'smilies_sig' => $this->request->post('form_smilies_sig') != '1' ? '0' : '1', 'make_links' => $this->request->post('form_make_links') != '1' ? '0' : '1', 'topic_review' => intval($this->request->post('form_topic_review')) >= 0 ? intval($this->request->post('form_topic_review')) : 0, 'disp_topics_default' => intval($this->request->post('form_disp_topics_default')), 'disp_posts_default' => intval($this->request->post('form_disp_posts_default')), 'indent_num_spaces' => intval($this->request->post('form_indent_num_spaces')) >= 0 ? intval($this->request->post('form_indent_num_spaces')) : 0, 'quote_depth' => intval($this->request->post('form_quote_depth')) > 0 ? intval($this->request->post('form_quote_depth')) : 1, 'quickpost' => $this->request->post('form_quickpost') != '1' ? '0' : '1', 'users_online' => $this->request->post('form_users_online') != '1' ? '0' : '1', 'censoring' => $this->request->post('form_censoring') != '1' ? '0' : '1', 'signatures' => $this->request->post('form_signatures') != '1' ? '0' : '1', 'show_dot' => $this->request->post('form_show_dot') != '1' ? '0' : '1', 'topic_views' => $this->request->post('form_topic_views') != '1' ? '0' : '1', 'quickjump' => $this->request->post('form_quickjump') != '1' ? '0' : '1', 'gzip' => $this->request->post('form_gzip') != '1' ? '0' : '1', 'search_all_forums' => $this->request->post('form_search_all_forums') != '1' ? '0' : '1', 'additional_navlinks' => Utils::trim($this->request->post('form_additional_navlinks')), 'feed_type' => intval($this->request->post('form_feed_type')), 'feed_ttl' => intval($this->request->post('form_feed_ttl')), 'report_method' => intval($this->request->post('form_report_method')), 'mailing_list' => Utils::trim($this->request->post('form_mailing_list')), 'avatars' => $this->request->post('form_avatars') != '1' ? '0' : '1', 'avatars_dir' => Utils::trim($this->request->post('form_avatars_dir')), 'avatars_width' => intval($this->request->post('form_avatars_width')) > 0 ? intval($this->request->post('form_avatars_width')) : 1, 'avatars_height' => intval($this->request->post('form_avatars_height')) > 0 ? intval($this->request->post('form_avatars_height')) : 1, 'avatars_size' => intval($this->request->post('form_avatars_size')) > 0 ? intval($this->request->post('form_avatars_size')) : 1, 'admin_email' => strtolower(Utils::trim($this->request->post('form_admin_email'))), 'webmaster_email' => strtolower(Utils::trim($this->request->post('form_webmaster_email'))), 'forum_subscriptions' => $this->request->post('form_forum_subscriptions') != '1' ? '0' : '1', 'topic_subscriptions' => $this->request->post('form_topic_subscriptions') != '1' ? '0' : '1', 'smtp_host' => Utils::trim($this->request->post('form_smtp_host')), 'smtp_user' => Utils::trim($this->request->post('form_smtp_user')), 'smtp_ssl' => $this->request->post('form_smtp_ssl') != '1' ? '0' : '1', 'regs_allow' => $this->request->post('form_regs_allow') != '1' ? '0' : '1', 'regs_verify' => $this->request->post('form_regs_verify') != '1' ? '0' : '1', 'regs_report' => $this->request->post('form_regs_report') != '1' ? '0' : '1', 'rules' => $this->request->post('form_rules') != '1' ? '0' : '1', 'rules_message' => Utils::trim($this->request->post('form_rules_message')), 'default_email_setting' => intval($this->request->post('form_default_email_setting')), 'announcement' => $this->request->post('form_announcement') != '1' ? '0' : '1', 'announcement_message' => Utils::trim($this->request->post('form_announcement_message')), 'maintenance' => $this->request->post('form_maintenance') != '1' ? '0' : '1', 'maintenance_message' => Utils::trim($this->request->post('form_maintenance_message')));
$form = $this->hook->fire('options.update_options.form', $form);
if ($form['board_title'] == '') {
throw new Error(__('Must enter title message'), 400);
}
// Make sure base_url doesn't end with a slash
if (substr($form['base_url'], -1) == '/') {
$form['base_url'] = substr($form['base_url'], 0, -1);
}
// Convert IDN to Punycode if needed
if (preg_match('/[^\\x00-\\x7F]/', $form['base_url'])) {
if (!function_exists('idn_to_ascii')) {
throw new Error(__('Base URL problem'), 400);
} else {
$form['base_url'] = idn_to_ascii($form['base_url']);
}
}
$languages = \FeatherBB\Core\Lister::getLangs();
if (!in_array($form['default_lang'], $languages)) {
throw new Error(__('Bad request'), 404);
}
$styles = \FeatherBB\Core\Lister::getStyles();
if (!in_array($form['default_style'], $styles)) {
throw new Error(__('Bad request'), 404);
}
if ($form['time_format'] == '') {
$form['time_format'] = 'H:i:s';
}
if ($form['date_format'] == '') {
$form['date_format'] = 'Y-m-d';
}
if (!$this->email->is_valid_email($form['admin_email'])) {
throw new Error(__('Invalid e-mail message'), 400);
}
if (!$this->email->is_valid_email($form['webmaster_email'])) {
throw new Error(__('Invalid webmaster e-mail message'), 400);
}
if ($form['mailing_list'] != '') {
$form['mailing_list'] = strtolower(preg_replace('%\\s%S', '', $form['mailing_list']));
}
// Make sure avatars_dir doesn't end with a slash
if (substr($form['avatars_dir'], -1) == '/') {
$form['avatars_dir'] = substr($form['avatars_dir'], 0, -1);
}
if ($form['additional_navlinks'] != '') {
$form['additional_navlinks'] = Utils::trim(Utils::linebreaks($form['additional_navlinks']));
}
// Change or enter a SMTP password
if ($this->request->post('form_smtp_change_pass')) {
$smtp_pass1 = $this->request->post('form_smtp_pass1') ? Utils::trim($this->request->post('form_smtp_pass1')) : '';
$smtp_pass2 = $this->request->post('form_smtp_pass2') ? Utils::trim($this->request->post('form_smtp_pass2')) : '';
if ($smtp_pass1 == $smtp_pass2) {
$form['smtp_pass'] = $smtp_pass1;
} else {
throw new Error(__('SMTP passwords did not match'), 400);
}
}
if ($form['announcement_message'] != '') {
$form['announcement_message'] = Utils::linebreaks($form['announcement_message']);
} else {
$form['announcement_message'] = __('Enter announcement here');
$form['announcement'] = '0';
}
if ($form['rules_message'] != '') {
$form['rules_message'] = Utils::linebreaks($form['rules_message']);
} else {
$form['rules_message'] = __('Enter rules here');
$form['rules'] = '0';
}
if ($form['maintenance_message'] != '') {
$form['maintenance_message'] = Utils::linebreaks($form['maintenance_message']);
} else {
$form['maintenance_message'] = __('Default maintenance message');
$form['maintenance'] = '0';
}
// Make sure the number of displayed topics and posts is between 3 and 75
if ($form['disp_topics_default'] < 3) {
$form['disp_topics_default'] = 3;
} elseif ($form['disp_topics_default'] > 75) {
$form['disp_topics_default'] = 75;
}
if ($form['disp_posts_default'] < 3) {
$form['disp_posts_default'] = 3;
} elseif ($form['disp_posts_default'] > 75) {
$form['disp_posts_default'] = 75;
}
if ($form['feed_type'] < 0 || $form['feed_type'] > 2) {
throw new Error(__('Bad request'), 400);
}
if ($form['feed_ttl'] < 0) {
throw new Error(__('Bad request'), 400);
}
if ($form['report_method'] < 0 || $form['report_method'] > 2) {
throw new Error(__('Bad request'), 400);
}
if ($form['default_email_setting'] < 0 || $form['default_email_setting'] > 2) {
throw new Error(__('Bad request'), 400);
}
//.........这里部分代码省略.........
示例12: edit_positions
public function edit_positions($req, $res, $args)
{
Container::get('hooks')->fire('controller.admin.forums.edit_positions');
foreach (Input::post('position') as $args['forum_id'] => $position) {
$position = (int) Utils::trim($position);
$this->model->update_positions($args['forum_id'], $position);
}
// Regenerate the quick jump cache
Container::get('cache')->store('quickjump', Cache::get_quickjump());
return Router::redirect(Router::pathFor('adminForums'), __('Forums updated redirect'));
}
示例13: insert_report
public function insert_report($post_id)
{
$post_id = $this->hook->fire('insert_report_start', $post_id);
// Clean up reason from POST
$reason = Utils::linebreaks(Utils::trim($this->request->post('req_reason')));
if ($reason == '') {
throw new Error(__('No reason'), 400);
} elseif (strlen($reason) > 65535) {
// TEXT field can only hold 65535 bytes
throw new Error(__('Reason too long'), 400);
}
if ($this->user->last_report_sent != '' && time() - $this->user->last_report_sent < $this->user->g_report_flood && time() - $this->user->last_report_sent >= 0) {
throw new Error(sprintf(__('Report flood'), $this->user->g_report_flood, $this->user->g_report_flood - (time() - $this->user->last_report_sent)), 429);
}
// Get the topic ID
$topic = DB::for_table('posts')->select('topic_id')->where('id', $post_id);
$topic = $this->hook->fireDB('insert_report_topic_id', $topic);
$topic = $topic->find_one();
if (!$topic) {
throw new Error(__('Bad request'), 404);
}
// Get the subject and forum ID
$report['select'] = array('subject', 'forum_id');
$report = DB::for_table('topics')->select_many($report['select'])->where('id', $topic['topic_id']);
$report = $this->hook->fireDB('insert_report_get_subject', $report);
$report = $report->find_one();
if (!$report) {
throw new Error(__('Bad request'), 404);
}
// Should we use the internal report handling?
if ($this->config['o_report_method'] == '0' || $this->config['o_report_method'] == '2') {
// Insert the report
$query['insert'] = array('post_id' => $post_id, 'topic_id' => $topic['topic_id'], 'forum_id' => $report['forum_id'], 'reported_by' => $this->user->id, 'created' => time(), 'message' => $reason);
$query = DB::for_table('reports')->create()->set($query['insert']);
$query = $this->hook->fireDB('insert_report_query', $query);
$query = $query->save();
}
// Should we email the report?
if ($this->config['o_report_method'] == '1' || $this->config['o_report_method'] == '2') {
// We send it to the complete mailing-list in one swoop
if ($this->config['o_mailing_list'] != '') {
// Load the "new report" template
$mail_tpl = trim(file_get_contents($this->feather->forum_env['FEATHER_ROOT'] . 'featherbb/lang/' . $this->user->language . '/mail_templates/new_report.tpl'));
$mail_tpl = $this->hook->fire('insert_report_mail_tpl', $mail_tpl);
// The first row contains the subject
$first_crlf = strpos($mail_tpl, "\n");
$mail_subject = trim(substr($mail_tpl, 8, $first_crlf - 8));
$mail_message = trim(substr($mail_tpl, $first_crlf));
$mail_subject = str_replace('<forum_id>', $report['forum_id'], $mail_subject);
$mail_subject = str_replace('<topic_subject>', $report['subject'], $mail_subject);
$mail_message = str_replace('<username>', $this->user->username, $mail_message);
$mail_message = str_replace('<post_url>', $this->feather->urlFor('viewPost', ['pid' => $post_id]) . '#p' . $post_id, $mail_message);
$mail_message = str_replace('<reason>', $reason, $mail_message);
$mail_message = str_replace('<board_mailer>', $this->config['o_board_title'], $mail_message);
$mail_message = $this->hook->fire('insert_report_mail_message', $mail_message);
$this->email->feather_mail($this->config['o_mailing_list'], $mail_subject, $mail_message);
}
}
$last_report_sent = DB::for_table('users')->where('id', $this->user->id)->find_one()->set('last_report_sent', time());
$last_report_sent = $this->hook->fireDB('insert_last_report_sent', $last_report_sent);
$last_report_sent = $last_report_sent->save();
Url::redirect($this->feather->urlFor('viewPost', ['pid' => $post_id]) . '#p' . $post_id, __('Report redirect'));
}
示例14: split_posts
public function split_posts($tid, $fid, $p = null)
{
$posts = $this->request->post('posts') ? $this->request->post('posts') : array();
$posts = $this->hook->fire('split_posts_start', $posts, $tid, $fid);
if (empty($posts)) {
throw new Error(__('No posts selected'), 404);
}
if ($this->request->post('split_posts_comply')) {
if (@preg_match('%[^0-9,]%', $posts)) {
throw new Error(__('Bad request'), 400);
}
$move_to_forum = $this->request->post('move_to_forum') ? intval($this->request->post('move_to_forum')) : 0;
if ($move_to_forum < 1) {
throw new Error(__('Bad request'), 400);
}
// How many posts did we just split off?
$num_posts_splitted = substr_count($posts, ',') + 1;
// Verify that the post IDs are valid
$posts_array = explode(',', $posts);
$result = DB::for_table('posts')->where_in('id', $posts_array)->where('topic_id', $tid);
$result = $this->hook->fireDB('split_posts_first_query', $result);
$result = $result->find_many();
if (count($result) != $num_posts_splitted) {
throw new Error(__('Bad request'), 400);
}
unset($result);
// Verify that the move to forum ID is valid
$result['where'] = array(array('fp.post_topics' => 'IS NULL'), array('fp.post_topics' => '1'));
$result = DB::for_table('forums')->table_alias('f')->left_outer_join('forum_perms', array('fp.forum_id', '=', $move_to_forum), 'fp', true)->left_outer_join('forum_perms', array('fp.group_id', '=', $this->user->g_id), null, true)->where_any_is($result['where'])->where_null('f.redirect_url');
$result = $this->hook->fireDB('split_posts_second_query', $result);
$result = $result->find_one();
if (!$result) {
throw new Error(__('Bad request'), 404);
}
// Check subject
$new_subject = $this->request->post('new_subject') ? Utils::trim($this->request->post('new_subject')) : '';
if ($new_subject == '') {
throw new Error(__('No subject'), 400);
} elseif (Utils::strlen($new_subject) > 70) {
throw new Error(__('Too long subject'), 400);
}
// Get data from the new first post
$select_first_post = array('id', 'poster', 'posted');
$first_post_data = DB::for_table('posts')->select_many($select_first_post)->where_in('id', $posts_array)->order_by_asc('id')->find_one();
// Create the new topic
$topic['insert'] = array('poster' => $first_post_data['poster'], 'subject' => $new_subject, 'posted' => $first_post_data['posted'], 'first_post_id' => $first_post_data['id'], 'forum_id' => $move_to_forum);
$topic = DB::for_table('topics')->create()->set($topic['insert']);
$topic = $this->hook->fireDB('split_posts_topic_query', $topic);
$topic = $topic->save();
$new_tid = DB::get_db()->lastInsertId($this->feather->forum_settings['db_prefix'] . 'topics');
// Move the posts to the new topic
$move_posts = DB::for_table('posts')->where_in('id', $posts_array)->find_one()->set('topic_id', $new_tid);
$move_posts = $this->hook->fireDB('split_posts_move_query', $move_posts);
$move_posts = $move_posts->save();
// Apply every subscription to both topics
DB::for_table('topic_subscriptions')->raw_query('INSERT INTO ' . $this->feather->forum_settings['db_prefix'] . 'topic_subscriptions (user_id, topic_id) SELECT user_id, ' . $new_tid . ' FROM ' . $this->feather->forum_settings['db_prefix'] . 'topic_subscriptions WHERE topic_id=:tid', array('tid' => $tid));
// Get last_post, last_post_id, and last_poster from the topic and update it
$last_old_post_data['select'] = array('id', 'poster', 'posted');
$last_old_post_data = DB::for_table('posts')->select_many($last_old_post_data['select'])->where('topic_id', $tid)->order_by_desc('id');
$last_old_post_data = $this->hook->fireDB('split_posts_last_old_post_data_query', $last_old_post_data);
$last_old_post_data = $last_old_post_data->find_one();
// Update the old topic
$update_old_topic['insert'] = array('last_post' => $last_old_post_data['posted'], 'last_post_id' => $last_old_post_data['id'], 'last_poster' => $last_old_post_data['poster']);
$update_old_topic = DB::for_table('topics')->where('id', $tid)->find_one()->set($update_old_topic['insert'])->set_expr('num_replies', 'num_replies-' . $num_posts_splitted);
$update_old_topic = $this->hook->fireDB('split_posts_update_old_topic_query', $update_old_topic);
$update_old_topic = $update_old_topic->save();
// Get last_post, last_post_id, and last_poster from the new topic and update it
$last_new_post_data['select'] = array('id', 'poster', 'posted');
$last_new_post_data = DB::for_table('posts')->select_many($last_new_post_data['select'])->where('topic_id', $new_tid)->order_by_desc('id');
$last_new_post_data = $this->hook->fireDB('split_posts_last_new_post_query', $last_new_post_data);
$last_new_post_data = $last_new_post_data->find_one();
// Update the new topic
$update_new_topic['insert'] = array('last_post' => $last_new_post_data['posted'], 'last_post_id' => $last_new_post_data['id'], 'last_poster' => $last_new_post_data['poster']);
$update_new_topic = DB::for_table('topics')->where('id', $new_tid)->find_one()->set($update_new_topic['insert'])->set_expr('num_replies', 'num_replies-' . $num_posts_splitted - 1);
$update_new_topic = $this->hook->fireDB('split_posts_update_new_topic_query', $update_new_topic);
$update_new_topic = $update_new_topic->save();
Forum::update($fid);
Forum::update($move_to_forum);
Url::redirect($this->feather->urlFor('Topic', array('id' => $new_tid)), __('Split posts redirect'));
}
$posts = $this->hook->fire('split_posts', $posts);
return $posts;
}
示例15: get_user_search
public function get_user_search()
{
$form = $this->request->get('form') ? $this->request->get('form') : array();
$form = $this->hook->fire('model.users.get_user_search.form', $form);
$search = array();
// trim() all elements in $form
$form = array_map('trim', $form);
$posts_greater = $this->request->get('posts_greater') ? Utils::trim($this->request->get('posts_greater')) : '';
$posts_less = $this->request->get('posts_less') ? Utils::trim($this->request->get('posts_less')) : '';
$last_post_after = $this->request->get('last_post_after') ? Utils::trim($this->request->get('last_post_after')) : '';
$last_post_before = $this->request->get('last_post_before') ? Utils::trim($this->request->get('last_post_before')) : '';
$last_visit_after = $this->request->get('last_visit_after') ? Utils::trim($this->request->get('last_visit_after')) : '';
$last_visit_before = $this->request->get('last_visit_before') ? Utils::trim($this->request->get('last_visit_before')) : '';
$registered_after = $this->request->get('registered_after') ? Utils::trim($this->request->get('registered_after')) : '';
$registered_before = $this->request->get('registered_before') ? Utils::trim($this->request->get('registered_before')) : '';
$order_by = $search['order_by'] = $this->request->get('order_by') && in_array($this->request->get('order_by'), array('username', 'email', 'num_posts', 'last_post', 'last_visit', 'registered')) ? $this->request->get('order_by') : 'username';
$direction = $search['direction'] = $this->request->get('direction') && $this->request->get('direction') == 'DESC' ? 'DESC' : 'ASC';
$user_group = $this->request->get('user_group') ? intval($this->request->get('user_group')) : -1;
$search['query_str'][] = 'order_by=' . $order_by;
$search['query_str'][] = 'direction=' . $direction;
$search['query_str'][] = 'user_group=' . $user_group;
if (preg_match('%[^0-9]%', $posts_greater . $posts_less)) {
throw new Error(__('Non numeric message'), 400);
}
$search['conditions'] = array();
// Try to convert date/time to timestamps
if ($last_post_after != '') {
$search['query_str'][] = 'last_post_after=' . $last_post_after;
$last_post_after = strtotime($last_post_after);
if ($last_post_after === false || $last_post_after == -1) {
throw new Error(__('Invalid date time message'), 400);
}
$search['conditions'][] = 'u.last_post>' . $last_post_after;
}
if ($last_post_before != '') {
$search['query_str'][] = 'last_post_before=' . $last_post_before;
$last_post_before = strtotime($last_post_before);
if ($last_post_before === false || $last_post_before == -1) {
throw new Error(__('Invalid date time message'), 400);
}
$search['conditions'][] = 'u.last_post<' . $last_post_before;
}
if ($last_visit_after != '') {
$search['query_str'][] = 'last_visit_after=' . $last_visit_after;
$last_visit_after = strtotime($last_visit_after);
if ($last_visit_after === false || $last_visit_after == -1) {
throw new Error(__('Invalid date time message'), 400);
}
$search['conditions'][] = 'u.last_visit>' . $last_visit_after;
}
if ($last_visit_before != '') {
$search['query_str'][] = 'last_visit_before=' . $last_visit_before;
$last_visit_before = strtotime($last_visit_before);
if ($last_visit_before === false || $last_visit_before == -1) {
throw new Error(__('Invalid date time message'), 400);
}
$search['conditions'][] = 'u.last_visit<' . $last_visit_before;
}
if ($registered_after != '') {
$search['query_str'][] = 'registered_after=' . $registered_after;
$registered_after = strtotime($registered_after);
if ($registered_after === false || $registered_after == -1) {
throw new Error(__('Invalid date time message'), 400);
}
$search['conditions'][] = 'u.registered>' . $registered_after;
}
if ($registered_before != '') {
$search['query_str'][] = 'registered_before=' . $registered_before;
$registered_before = strtotime($registered_before);
if ($registered_before === false || $registered_before == -1) {
throw new Error(__('Invalid date time message'), 400);
}
$search['conditions'][] = 'u.registered<' . $registered_before;
}
$like_command = $this->feather->forum_settings['db_type'] == 'pgsql' ? 'ILIKE' : 'LIKE';
foreach ($form as $key => $input) {
if ($input != '' && in_array($key, array('username', 'email', 'title', 'realname', 'url', 'jabber', 'icq', 'msn', 'aim', 'yahoo', 'location', 'signature', 'admin_note'))) {
$search['conditions'][] = 'u.' . str_replace("'", "''", $key) . ' ' . $like_command . ' \'' . str_replace("'", "''", str_replace('*', '%', $input)) . '\'';
$search['query_str'][] = 'form%5B' . $key . '%5D=' . urlencode($input);
}
}
if ($posts_greater != '') {
$search['query_str'][] = 'posts_greater=' . $posts_greater;
$search['conditions'][] = 'u.num_posts>' . $posts_greater;
}
if ($posts_less != '') {
$search['query_str'][] = 'posts_less=' . $posts_less;
$search['conditions'][] = 'u.num_posts<' . $posts_less;
}
if ($user_group > -1) {
$search['conditions'][] = 'u.group_id=' . $user_group;
}
$search = $this->hook->fire('model.users.get_user_search.search', $search);
return $search;
}