Exemple #1
0
 $ban_count = $db->fetch_field($query, "ban_count");
 $per_page = 20;
 if ($mybb->input['page'] > 0) {
     $current_page = intval($mybb->input['page']);
     $start = ($current_page - 1) * $per_page;
     $pages = $ban_count / $per_page;
     $pages = ceil($pages);
     if ($current_page > $pages) {
         $start = 0;
         $current_page = 1;
     }
 } else {
     $start = 0;
     $current_page = 1;
 }
 $pagination = draw_admin_pagination($current_page, $per_page, $ban_count, "index.php?module=user-banning&page={page}");
 $table = new Table();
 $table->construct_header($lang->user);
 $table->construct_header($lang->ban_lifts_on, array("class" => "align_center", "width" => 150));
 $table->construct_header($lang->time_left, array("class" => "align_center", "width" => 150));
 $table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 2, "width" => 200));
 $table->construct_header($lang->moderation, array("class" => "align_center", "colspan" => 1, "width" => 200));
 // Fetch bans
 $query = $db->query("\n\t\tSELECT b.*, a.username AS adminuser, u.username\n\t\tFROM " . TABLE_PREFIX . "banned b\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (b.uid=u.uid) \n\t\tLEFT JOIN " . TABLE_PREFIX . "users a ON (b.admin=a.uid) \n\t\tORDER BY lifted ASC\n\t\tLIMIT {$start}, {$per_page}\n\t");
 // Get the banned users
 while ($ban = $db->fetch_array($query)) {
     $profile_link = build_profile_link($ban['username'], $ban['uid'], "_blank");
     $ban_date = my_date($mybb->settings['dateformat'], $ban['dateline']);
     if ($ban['lifted'] == 'perm' || $ban['lifted'] == '' || $ban['bantime'] == 'perm' || $ban['bantime'] == '---') {
         $ban_period = $lang->permenantly;
         $time_remaining = $lifts_on = $lang->na;
Exemple #2
0
     $table->construct_cell($username_link);
     $table->construct_cell("{$title} ({$points})");
     $table->construct_cell($issued_date, array("class" => "align_center"));
     $table->construct_cell($expire_date . $revoked_text, array("class" => "align_center"));
     $table->construct_cell($mod_username_link);
     $table->construct_cell("<a href=\"index.php?module=tools-warninglog&amp;action=view&amp;wid={$row['wid']}\">{$lang->view}</a>", array("class" => "align_center"));
     $table->construct_row();
 }
 if ($table->num_rows() == 0) {
     $table->construct_cell($lang->no_warning_logs, array("colspan" => "6"));
     $table->construct_row();
 }
 $table->output($lang->warning_logs);
 // Do we need to construct the pagination?
 if ($total_warnings > $per_page) {
     echo draw_admin_pagination($view_page, $per_page, $total_warnings, $url) . "<br />";
 }
 $sort_by = array('expires' => $lang->expiry_date, 'dateline' => $lang->issued_date, 'username' => $lang->warned_user, 'issuedby' => $lang->issued_by);
 $order_array = array('asc' => $lang->asc, 'desc' => $lang->desc);
 $form = new Form("index.php?module=tools-warninglog", "post");
 $form_container = new FormContainer($lang->filter_warning_logs);
 $form_container->output_row($lang->filter_warned_user, "", $form->generate_text_box('filter[username]', $mybb->input['filter']['username'], array('id' => 'filter_username')), 'filter_username');
 $form_container->output_row($lang->filter_issued_by, "", $form->generate_text_box('filter[mod_username]', $mybb->input['filter']['mod_username'], array('id' => 'filter_mod_username')), 'filter_mod_username');
 $form_container->output_row($lang->filter_reason, "", $form->generate_text_box('filter[reason]', $mybb->input['filter']['reason'], array('id' => 'filter_reason')), 'filter_reason');
 $form_container->output_row($lang->sort_by, "", $form->generate_select_box('filter[sortby]', $sort_by, $mybb->input['filter']['sortby'], array('id' => 'filter_sortby')) . " {$lang->in} " . $form->generate_select_box('filter[order]', $order_array, $order, array('id' => 'filter_order')) . " {$lang->order}", 'filter_order');
 $form_container->output_row($lang->results_per_page, "", $form->generate_text_box('filter[per_page]', $per_page, array('id' => 'filter_per_page')), 'filter_per_page');
 $form_container->end();
 $buttons[] = $form->generate_submit_button($lang->filter_warning_logs);
 $form->output_submit_wrapper($buttons);
 $form->end();
 $page->output_footer();
Exemple #3
0
     }
     $table->construct_cell($logitem['profilelink']);
     $table->construct_cell($logitem['dateline'], array("class" => "align_center"));
     $table->construct_cell($logitem['action'], array("class" => "align_center"));
     $table->construct_cell($information);
     $table->construct_cell($logitem['ipaddress'], array("class" => "align_center"));
     $table->construct_row();
 }
 if ($table->num_rows() == 0) {
     $table->construct_cell($lang->no_modlogs, array("colspan" => "5"));
     $table->construct_row();
 }
 $table->output($lang->mod_logs);
 // Do we need to construct the pagination?
 if ($rescount > $perpage) {
     echo draw_admin_pagination($pagecnt, $perpage, $rescount, "index.php?module=tools/modlog&amp;perpage={$perpage}&amp;uid={$mybb->input['uid']}&amp;fid={$mybb->input['fid']}&amp;sortby={$mybb->input['sortby']}&amp;order={$order}") . "<br />";
 }
 // Fetch filter options
 $sortbysel[$mybb->input['sortby']] = "selected=\"selected\"";
 $ordersel[$mybb->input['order']] = "selected=\"selected\"";
 $user_options[''] = $lang->all_moderators;
 $user_options['0'] = '----------';
 $query = $db->query("\n\t\tSELECT DISTINCT l.uid, u.username\n\t\tFROM " . TABLE_PREFIX . "moderatorlog l\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (l.uid=u.uid)\n\t\tORDER BY u.username ASC\n\t");
 while ($user = $db->fetch_array($query)) {
     $selected = '';
     if ($mybb->input['uid'] == $user['uid']) {
         $selected = "selected=\"selected\"";
     }
     $user_options[$user['uid']] = $user['username'];
 }
 $sort_by = array('dateline' => $lang->date, 'username' => $lang->username, 'forum' => $lang->forum_name, 'thread' => $lang->thread_subject);
Exemple #4
0
 $log_count = $db->fetch_field($query, "log_count");
 $per_page = 50;
 if ($mybb->input['page'] > 0) {
     $current_page = intval($mybb->input['page']);
     $start = ($current_page - 1) * $per_page;
     $pages = $log_count / $per_page;
     $pages = ceil($pages);
     if ($current_page > $pages) {
         $start = 0;
         $current_page = 1;
     }
 } else {
     $start = 0;
     $current_page = 1;
 }
 $pagination = draw_admin_pagination($current_page, $per_page, $log_count, "index.php?module=tools/tasks&amp;action=logs&amp;page={page}");
 $query = $db->query("\n\t\tSELECT l.*, t.title\n\t\tFROM " . TABLE_PREFIX . "tasklog l\n\t\tLEFT JOIN " . TABLE_PREFIX . "tasks t ON (t.tid=l.tid)\n\t\tORDER BY l.dateline DESC\n\t\tLIMIT {$start}, {$per_page}\n\t");
 while ($log_entry = $db->fetch_array($query)) {
     $log_entry['title'] = htmlspecialchars_uni($log_entry['title']);
     $log_entry['data'] = nl2br(htmlspecialchars_uni($log_entry['data']));
     $date = my_date($mybb->settings['dateformat'], $log_entry['dateline']) . ", " . my_date($mybb->settings['timeformat'], $log_entry['dateline']);
     $table->construct_cell("<a href=\"index.php?module=tools/tasks&amp;action=edit&amp;tid={$log_entry['tid']}\">{$log_entry['title']}</a>");
     $table->construct_cell($date, array("class" => "align_center"));
     $table->construct_cell($log_entry['data']);
     $table->construct_row();
 }
 if ($table->num_rows() == 0) {
     $table->construct_cell($lang->no_task_logs, array("colspan" => "3"));
     $table->construct_row();
 }
 $table->output($lang->task_logs);
Exemple #5
0
     $current_page = $mybb->get_input('page', MyBB::INPUT_INT);
     $start = ($current_page - 1) * $per_page;
     $pages = $num_requests / $per_page;
     $pages = ceil($pages);
     if ($current_page > $pages) {
         $start = 0;
         $current_page = 1;
     }
 } else {
     $start = 0;
     $current_page = 1;
 }
 // Do we need to construct the pagination?
 $pagination = '';
 if ($num_requests > $per_page) {
     $pagination = draw_admin_pagination($page, $per_page, $num_requests, "index.php?module=user-groups&amp;action=join_requests&gid={$group['gid']}");
     echo $pagination;
 }
 $form = new Form("index.php?module=user-groups&amp;action=join_requests&gid={$group['gid']}", "post");
 $table = new Table();
 $table->construct_header($form->generate_check_box("checkall", 1, "", array('class' => 'checkall')), array('width' => 1));
 $table->construct_header($lang->users);
 $table->construct_header($lang->reason);
 $table->construct_header($lang->date_requested, array("class" => 'align_center', "width" => 200));
 $table->construct_header($lang->controls, array("class" => "align_center", "width" => 200));
 $query = $db->query("\n\t\tSELECT j.*, u.username\n\t\tFROM " . TABLE_PREFIX . "joinrequests j\n\t\tINNER JOIN " . TABLE_PREFIX . "users u ON (u.uid=j.uid)\n\t\tWHERE j.gid='{$group['gid']}'\n\t\tORDER BY dateline ASC\n\t\tLIMIT {$start}, {$per_page}\n\t");
 while ($request = $db->fetch_array($query)) {
     $table->construct_cell($form->generate_check_box("users[]", $request['uid'], ""));
     $table->construct_cell("<strong>" . build_profile_link($request['username'], $request['uid'], "_blank") . "</strong>");
     $table->construct_cell(htmlspecialchars_uni($request['reason']));
     $table->construct_cell(my_date('relative', $request['dateline']), array('class' => 'align_center'));
     // Get detailed information from meta
     $information = get_admin_log_action($logitem);
     $table->construct_cell($logitem['profilelink']);
     $table->construct_cell($logitem['dateline'], array('class' => 'align_center'));
     $table->construct_cell($information);
     $table->construct_cell($logitem['ipaddress'], array('class' => 'align_center'));
     $table->construct_row();
 }
 if ($table->num_rows() == 0) {
     $table->construct_cell($lang->no_adminlogs, array('colspan' => '4'));
     $table->construct_row();
 }
 $table->output($lang->admin_logs);
 // Do we need to construct the pagination?
 if ($rescount > $perpage) {
     echo draw_admin_pagination($pagecnt, $perpage, $rescount, "index.php?module=tools-adminlog&amp;perpage={$perpage}&amp;uid={$mybb->input['uid']}&amp;fid={$mybb->input['fid']}&amp;sortby={$mybb->input['sortby']}&amp;order={$order}&amp;filter_module=" . htmlspecialchars_uni($mybb->input['filter_module'])) . "<br />";
 }
 // Fetch filter options
 $sortbysel[$mybb->input['sortby']] = 'selected="selected"';
 $ordersel[$mybb->input['order']] = 'selected="selected"';
 $user_options[''] = $lang->all_administrators;
 $user_options['0'] = '----------';
 $query = $db->query("\n\t\tSELECT DISTINCT l.uid, u.username\n\t\tFROM " . TABLE_PREFIX . "adminlog l\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (l.uid=u.uid)\n\t\tORDER BY u.username ASC\n\t");
 while ($user = $db->fetch_array($query)) {
     $user_options[$user['uid']] = $user['username'];
 }
 $module_options = array();
 $module_options[''] = $lang->all_modules;
 $module_options['0'] = '----------';
 $query = $db->query("\n\t\tSELECT DISTINCT l.module\n\t\tFROM " . TABLE_PREFIX . "adminlog l\n\t\tORDER BY l.module ASC\n\t");
 while ($module = $db->fetch_array($query)) {
                $actions .= '<img src="spamalyser_img/action_' . $action . '.gif" title="' . $lang->{$lang_title} . '" alt="' . $lang->{$lang_alt} . '" style="font-size: smaller;" />';
            }
            if ($actions) {
                $actions = '<br />' . $actions;
            }
            $table->construct_cell('<a href="' . SPAMALYSER_URL . '&amp;action=view&amp;lid=' . $logitem['lid'] . '">' . number_format($logitem['score'], 7) . '</a>' . $actions, array('class' => 'align_center'));
            $table->construct_row();
        }
    }
    if ($table->num_rows() == 0) {
        $table->construct_cell($lang->no_spamalyserlogs, array('colspan' => '4'));
        $table->construct_row();
    }
    $table->output($lang->spamalyser_logs);
    if ($pages > 1) {
        echo draw_admin_pagination($pagenum, $perpage, $entries, SPAMALYSER_URL . $urlargs) . '<br />';
    }
    // HTML display
    $sortbysel = array($sortby => ' selected="selected"');
    $ordersel = array($order => ' selected="selected"');
    $scorecmpsel = array($scorecmp => ' selected="selected"');
    $form = new Form('index.php', 'get');
    echo $form->generate_hidden_field('module', 'tools' . ($mybb->version_code >= 1500 ? '-' : '/') . 'spamalyserlog');
    $form_container = new FormContainer($lang->filter_spamalyser_logs);
    $form_container->output_row($lang->sort_by, '', $form->generate_select_box('sortby', array('dateline' => $lang->date, 'username' => $lang->username, 'score' => $lang->weighting), $sortby, array('id' => 'sortby')) . ' ' . $lang->in . ' ' . $form->generate_select_box('order', array('asc' => $lang->asc, 'desc' => $lang->desc), $order, array('id' => 'order')) . ' ' . $lang->order, 'order');
    $form_container->output_row($lang->results_per_page, '', $form->generate_text_box('perpage', $perpage, array('id' => 'perpage')), 'perpage');
    $form_container->end();
    $form->output_submit_wrapper(array($form->generate_submit_button($lang->filter_spamalyser_logs)));
    $form->end();
    $page->output_footer();
}
Exemple #8
0
 if (!$db->num_rows($query)) {
     $table->construct_cell('<div align="center">' . $lang->ougc_awards_view_empty . '</div>', array('colspan' => 6));
     $table->construct_row();
     $table->output($lang->ougc_awards_tab_view_d);
 } else {
     if ($mybb->request_method == 'post' && $mybb->get_input('action') == 'updatedisporder') {
         foreach ($mybb->input['disporder'] as $aid => $disporder) {
             $awards->update_award(array('disporder' => $disporder), $aid);
         }
         $awards->update_cache();
         $awards->admin_redirect();
     }
     $form = new Form($awards->build_url('action=updatedisporder'), 'post');
     $query2 = $db->simple_select('ougc_awards', 'COUNT(aid) AS awards');
     $awardscount = (int) $db->fetch_field($query2, 'awards');
     echo draw_admin_pagination($mybb->input['page'], $limit, $awardscount, 'index.php?module=user-ougc_awards');
     while ($award = $db->fetch_array($query)) {
         $edit_link = "index.php?module=user-ougc_awards&amp;action=edit&amp;aid={$award['aid']}";
         $award['visible'] or $award['name'] = '<i>' . $award['name'] . '</i>';
         $table->construct_cell('<img src="' . $awards->get_award_icon($award['aid']) . '" />', array('class' => 'align_center'));
         $table->construct_cell('<a href="' . $edit_link . '">' . $award['name'] . '</a>');
         $table->construct_cell($award['description']);
         $table->construct_cell($form->generate_text_box('disporder[' . $award['aid'] . ']', (int) $award['disporder'], array('style' => 'text-align: center; width: 30px;')), array('class' => 'align_center'));
         $table->construct_cell('<img src="styles/default/images/icons/bullet_o' . (!$award['visible'] ? 'ff' : 'n') . '.png" alt="" title="' . (!$award['visible'] ? $lang->ougc_awards_form_hidden : $lang->ougc_awards_form_visible) . '" />', array('class' => 'align_center'));
         $popup = new PopupMenu("award_{$award['aid']}", $lang->options);
         $popup->add_item($lang->ougc_awards_tab_give, "index.php?module=user-ougc_awards&amp;action=give&amp;aid={$award['aid']}");
         $popup->add_item($lang->ougc_awards_tab_revoke, "index.php?module=user-ougc_awards&amp;action=revoke&amp;aid={$award['aid']}");
         $popup->add_item($lang->ougc_awards_tab_users, "index.php?module=user-ougc_awards&amp;action=users&amp;aid={$award['aid']}");
         $popup->add_item($lang->ougc_awards_tab_edit, $edit_link);
         $popup->add_item($lang->ougc_awards_tab_delete, "index.php?module=user-ougc_awards&amp;action=delete&amp;aid={$award['aid']}");
         $table->construct_cell($popup->fetch(), array('class' => 'align_center'));
        $log['dateline'] = date($mybb->settings['dateformat'], $log['dateline']) . ", " . date($mybb->settings['timeformat'], $log['dateline']);
        $table->construct_cell($log['username']);
        $table->construct_cell($log['type'], array('style' => 'text-align: center;'));
        $table->construct_cell($log['oldusergroup'], array('style' => 'text-align: center;'));
        $table->construct_cell($log['newusergroup'], array('style' => 'text-align: center;'));
        $table->construct_cell($log['dateline'], array('style' => 'text-align: center;'));
        $table->construct_row();
    }
    if ($table->num_rows() == 0) {
        $table->construct_cell($lang->no_promotion_logs, array("colspan" => "5"));
        $table->construct_row();
    }
    $table->output($lang->promotion_logs);
    $query = $db->simple_select("promotionlogs", "COUNT(plid) as promotionlogs");
    $total_rows = $db->fetch_field($query, "promotionlogs");
    echo "<br />" . draw_admin_pagination($mybb->input['page'], "20", $total_rows, "index.php?module=user-group_promotions&amp;action=logs&amp;page={page}");
    $page->output_footer();
}
if (!$mybb->input['action']) {
    $plugins->run_hooks("admin_user_group_promotions_start");
    $page->output_header($lang->promotion_manager);
    $page->output_nav_tabs($sub_tabs, 'usergroup_promotions');
    $table = new Table();
    $table->construct_header($lang->promotion);
    $table->construct_header($lang->controls, array("class" => "align_center", "width" => 150));
    $query = $db->simple_select("promotions", "*", "", array("order_by" => "title", "order_dir" => "asc"));
    while ($promotion = $db->fetch_array($query)) {
        $promotion['title'] = htmlspecialchars_uni($promotion['title']);
        $promotion['description'] = htmlspecialchars_uni($promotion['description']);
        if ($promotion['enabled'] == 1) {
            $icon = "<img src=\"styles/{$page->style}/images/icons/bullet_on.png\" alt=\"({$lang->alt_enabled})\" title=\"{$lang->alt_enabled}\"  style=\"vertical-align: middle;\" /> ";
Exemple #10
0
         $table->construct_header($lang->date_uploaded, array("class" => "align_center"));
         // Fetch matching attachments
         $query = $db->query("\n\t\t\t\tSELECT a.*, p.tid, p.fid, t.subject, p.uid, p.username, u.username AS user_username\n\t\t\t\tFROM " . TABLE_PREFIX . "attachments a\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "posts p ON (p.pid=a.pid)\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "threads t ON (t.tid=p.tid)\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=a.uid)\n\t\t\t\tWHERE {$search_sql}\n\t\t\t\tORDER BY {$sort_field} {$mybb->input['order']}\n\t\t\t\tLIMIT {$start}, {$mybb->input['perpage']}\n\t\t\t");
         while ($attachment = $db->fetch_array($query)) {
             build_attachment_row($attachment, $table, true);
         }
         // Need to draw pagination for this result set
         if ($num_results > $mybb->input['perpage']) {
             $pagination_url = "index.php?module=forum-attachments&amp;results=1";
             $pagination_vars = array('perpage', 'sortby', 'order', 'filename', 'mimetype', 'username', 'fid', 'downloads', 'downloads_dir', 'dateuploaded', 'dateuploaded_dir', 'filesize', 'filesize_dir');
             foreach ($pagination_vars as $var) {
                 if ($mybb->input[$var]) {
                     $pagination_url .= "&{$var}=" . urlencode($mybb->input[$var]);
                 }
             }
             $pagination = draw_admin_pagination($mybb->input['page'], $mybb->input['perpage'], $num_results, $pagination_url);
         }
         echo $pagination;
         $table->output($lang->results);
         echo $pagination;
         $buttons[] = $form->generate_submit_button($lang->button_delete_attachments);
         $form->output_submit_wrapper($buttons);
         $form->end();
         $page->output_footer();
     }
 }
 $page->output_header($lang->find_attachments);
 $page->output_nav_tabs($sub_tabs, 'find_attachments');
 // If we have any error messages, show them
 if ($errors) {
     $page->output_inline_error($errors);
Exemple #11
0
    } else {
        $default_class = "search_default";
        $value = $lang->search_for_themes;
    }
    echo $search->generate_text_box('keywords', $value, array('id' => 'search_keywords', 'class' => "{$default_class} field150 field_small")) . "\n";
    echo "<input type=\"submit\" class=\"search_button\" value=\"{$lang->search}\" />\n";
    echo "<script type=\"text/javascript\">\n\t\tvar form = \$(\"#search_form\");\n\t\tform.submit(function()\n\t\t{\n\t\t\tvar search = \$('#search_keywords');\n\t\t\tif(search.val() == '' || search.val() == '{$lang->search_for_themes}')\n\t\t\t{\n\t\t\t\tsearch.focus();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\tvar search = \$('#search_keywords');\n\t\tsearch.focus(function()\n\t\t{\n\t\t\tvar search_focus = \$(this);\n\t\t\tif(search_focus.val() == '{$lang->search_for_themes}')\n\t\t\t{\n\t\t\t\tsearch_focus.removeClass('search_default');\n\t\t\t\tsearch_focus.val('');\n\t\t\t}\n\t\t});\n\n\t\tsearch.blur(function()\n\t\t{\n\t\t\tvar search_blur = \$(this);\n\t\t\tif(search_blur.val() == '')\n\t\t\t{\n\t\t\t\tsearch_blur.addClass('search_default');\n\t\t\t\tsearch_blur.val('{$lang->search_for_themes}');\n\t\t\t}\n\t\t});\n\n\t\t// fix the styling used if we have a different default value\n\t\tif(search.val() != '{$lang->search_for_themes}')\n\t\t{\n\t\t\tsearch.removeClass('search_default');\n\t\t}\n\t\t</script>\n";
    echo "</div>\n";
    echo $search->end();
    // Recommended themes = Default; Otherwise search results & pagination
    if ($mybb->request_method == "post") {
        $table->output("<span style=\"float: right;\"><small><a href=\"http://community.mybb.com/mods.php?action=browse&category=themes\" target=\"_blank\">{$lang->browse_all_themes}</a></small></span>" . $lang->sprintf($lang->browse_results_for_mybb, $mybb->version));
    } else {
        $table->output("<span style=\"float: right;\"><small><a href=\"http://community.mybb.com/mods.php?action=browse&category=themes\" target=\"_blank\">{$lang->browse_all_themes}</a></small></span>" . $lang->sprintf($lang->recommended_themes_for_mybb, $mybb->version));
    }
    echo "<br />" . draw_admin_pagination($mybb->input['page'], 15, $tree['results']['attributes']['total'], "index.php?module=style-themes&amp;action=browse{$keywords}&amp;page={page}");
    $page->output_footer();
}
if ($mybb->input['action'] == "import") {
    $plugins->run_hooks("admin_style_themes_import");
    if ($mybb->request_method == "post") {
        if (!$_FILES['local_file'] && !$mybb->input['url']) {
            $errors[] = $lang->error_missing_url;
        }
        if (!$errors) {
            // Find out if there was an uploaded file
            if ($_FILES['local_file']['error'] != 4) {
                // Find out if there was an error with the uploaded file
                if ($_FILES['local_file']['error'] != 0) {
                    $errors[] = $lang->error_uploadfailed . $lang->error_uploadfailed_detail;
                    switch ($_FILES['local_file']['error']) {
Exemple #12
0
 function build_multipage($count, $url = '', $check = false)
 {
     global $mybb, $multipage;
     if ($check) {
         $input = explode('=', $params);
         if (isset($mybb->input[$input[0]]) && $mybb->input[$input[0]] != $input[1]) {
             $mybb->input['page'] = 0;
         }
     }
     if ($mybb->get_input('page', 1) > 0) {
         $this->query_start = ($mybb->get_input('page', 1) - 1) * $this->query_limit;
         if ($mybb->get_input('page', 1) > ceil($count / $this->query_limit)) {
             $this->query_start = 0;
             $mybb->input['page'] = 1;
         }
     } else {
         $this->query_start = 0;
         $mybb->input['page'] = 1;
     }
     if (defined('IN_ADMINCP')) {
         $multipage = (string) draw_admin_pagination($mybb->get_input('page', 1), $this->query_limit, $count, $url);
     } else {
         $multipage = (string) multipage($count, $this->query_limit, $mybb->get_input('page', 1), $url);
     }
 }
Exemple #13
0
    $table->construct_header($lang->date);
    $table->construct_header($lang->users);
    $table->construct_header($lang->threads);
    $table->construct_header($lang->posts);
    $query = $db->simple_select("stats", "*", "dateline >= '" . (int) $start_dateline . "' AND dateline <= '" . (int) $end_dateline . "'", array('order_by' => 'dateline', 'order_dir' => 'desc', 'limit_start' => $start, 'limit' => $per_page));
    while ($stat = $db->fetch_array($query)) {
        $table->construct_cell("<strong>" . date($mybb->settings['dateformat'], $stat['dateline']) . "</strong>");
        $table->construct_cell(my_number_format($stat['numusers']) . " <small>" . generate_growth_string($stats[$stat['dateline']]['change_users']) . "</small>");
        $table->construct_cell(my_number_format($stat['numthreads']) . " <small>" . generate_growth_string($stats[$stat['dateline']]['change_threads']) . "</small>");
        $table->construct_cell(my_number_format($stat['numposts']) . " <small>" . generate_growth_string($stats[$stat['dateline']]['change_posts']) . "</small>");
        $table->construct_row();
    }
    $table->output($lang->overall_statistics);
    $url_range = "&amp;from_month=" . $mybb->get_input('from_month', MyBB::INPUT_INT) . "&amp;from_day=" . $mybb->get_input('from_day', MyBB::INPUT_INT) . "&amp;from_year=" . $mybb->get_input('from_year', MyBB::INPUT_INT);
    $url_range .= "&amp;to_month=" . $mybb->get_input('to_month', MyBB::INPUT_INT) . "&amp;to_day=" . $mybb->get_input('to_day', MyBB::INPUT_INT) . "&amp;to_year=" . $mybb->get_input('to_year', MyBB::INPUT_INT);
    echo draw_admin_pagination($mybb->input['page'], $per_page, $total_rows, "index.php?module=tools-statistics{$url_range}&amp;page={page}");
    $page->output_footer();
}
function generate_growth_string($number)
{
    global $lang, $cp_style;
    if ($number === null) {
        return "";
    }
    $number = (int) $number;
    $friendly_number = my_number_format(abs($number));
    if ($number > 0) {
        $growth_string = "(<img src=\"./styles/{$cp_style}/images/icons/increase.png\" alt=\"{$lang->increase}\" title=\"{$lang->increase}\" style=\"vertical-align: middle; margin-top: -2px;\" /> {$friendly_number})";
    } elseif ($number == 0) {
        $growth_string = "(<img src=\"./styles/{$cp_style}/images/icons/no_change.png\" alt=\"{$lang->no_change}\" title=\"{$lang->no_change}\" style=\"vertical-align: middle; margin-top: -2px;\" /> {$friendly_number})";
    } else {
        $table->construct_cell($log['error']);
        $table->construct_cell($log['dateline'], array("class" => "align_center"));
        $table->construct_row();
    }
    if ($table->num_rows() == 0) {
        $table->construct_cell($lang->no_logs, array("colspan" => 5));
        $table->construct_row();
        $table->output($lang->system_email_log);
    } else {
        $table->output($lang->system_email_log);
        $buttons[] = $form->generate_submit_button($lang->delete_selected, array('onclick' => "return confirm('{$lang->confirm_delete_logs}');"));
        $buttons[] = $form->generate_submit_button($lang->delete_all, array('name' => 'delete_all', 'onclick' => "return confirm('{$lang->confirm_delete_all_logs}');"));
        $form->output_submit_wrapper($buttons);
    }
    $form->end();
    $query = $db->simple_select("mailerrors l", "COUNT(eid) AS logs", "1=1 {$additional_sql_criteria}");
    $total_rows = $db->fetch_field($query, "logs");
    echo "<br />" . draw_admin_pagination($mybb->input['page'], $per_page, $total_rows, "index.php?module=tools/mailerrors&amp;page={page}{$additional_criteria}");
    $form = new Form("index.php?module=tools/mailerrors", "post");
    $form_container = new FormContainer($lang->filter_system_email_log);
    $form_container->output_row($lang->subject_contains, "", $form->generate_text_box('subject', $mybb->input['subject'], array('id' => 'subject')), 'subject');
    $form_container->output_row($lang->error_message_contains, "", $form->generate_text_box('error', $mybb->input['error'], array('id' => 'error')), 'error');
    $form_container->output_row($lang->to_address_contains, "", $form->generate_text_box('toaddress', $mybb->input['toaddress'], array('id' => 'toaddress')), 'toaddress');
    $form_container->output_row($lang->from_address_contains, "", $form->generate_text_box('fromaddress', $mybb->input['fromaddress'], array('id' => 'fromaddress')), 'fromaddress');
    $form_container->end();
    $buttons = array();
    $buttons[] = $form->generate_submit_button($lang->filter_system_email_log);
    $form->output_submit_wrapper($buttons);
    $form->end();
    $page->output_footer();
}
Exemple #15
0
    }
    $table = new Table();
    $table->construct_header($lang->image, array("class" => "align_center", "width" => 1));
    $table->construct_header($lang->name, array("width" => "35%"));
    $table->construct_header($lang->text_replace, array("width" => "35%"));
    $table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 2));
    $query = $db->simple_select("smilies", "*", "", array('limit_start' => $start, 'limit' => 20, 'order_by' => 'disporder'));
    while ($smilie = $db->fetch_array($query)) {
        $smilie['image'] = str_replace("{theme:imgdir}", $theme['imgdir'], $smilie['image']);
        if (my_strpos($smilie['image'], "p://") || substr($smilie['image'], 0, 1) == "/") {
            $image = $smilie['image'];
        } else {
            $image = "../" . $smilie['image'];
        }
        $table->construct_cell("<img src=\"{$image}\" alt=\"\" />", array("class" => "align_center"));
        $table->construct_cell(htmlspecialchars_uni($smilie['name']));
        $table->construct_cell(htmlspecialchars_uni($smilie['find']));
        $table->construct_cell("<a href=\"index.php?module=config-smilies&amp;action=edit&amp;sid={$smilie['sid']}\">{$lang->edit}</a>", array("class" => "align_center"));
        $table->construct_cell("<a href=\"index.php?module=config-smilies&amp;action=delete&amp;sid={$smilie['sid']}&amp;my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_smilie_deletion}')\">{$lang->delete}</a>", array("class" => "align_center"));
        $table->construct_row();
    }
    if ($table->num_rows() == 0) {
        $table->construct_cell($lang->no_smilies, array('colspan' => 5));
        $table->construct_row();
    }
    $table->output($lang->manage_smilies);
    $query = $db->simple_select("smilies", "COUNT(sid) as smilies");
    $total_rows = $db->fetch_field($query, "smilies");
    echo "<br />" . draw_admin_pagination($pagenum, "20", $total_rows, "index.php?module=config-smilies&amp;page={page}");
    $page->output_footer();
}
Exemple #16
0
     }
     $table->construct_cell($username);
     $table->construct_cell($email);
     $table->construct_cell($ip_address);
     $table->construct_cell($dateline);
     $table->construct_cell($confidence);
     $table->construct_row();
 }
 if ($table->num_rows() == 0) {
     $table->construct_cell($lang->no_spam_logs, array("colspan" => "5"));
     $table->construct_row();
 }
 $table->output($lang->spam_logs);
 // Do we need to construct the pagination?
 if ($rescount > $perpage) {
     echo draw_admin_pagination($pagecnt, $perpage, $rescount, "index.php?module=tools-spamlog&amp;perpage={$perpage}{$additional_criteria}&amp;sortby={$mybb->input['sortby']}&amp;order={$order}") . "<br />";
 }
 // Fetch filter options
 $sortbysel[$mybb->input['sortby']] = "selected=\"selected\"";
 $ordersel[$mybb->input['order']] = "selected=\"selected\"";
 $sort_by = array('dateline' => $lang->spam_date, 'username' => $lang->spam_username, 'email' => $lang->spam_email, 'ipaddress' => $lang->spam_ip);
 $order_array = array('asc' => $lang->asc, 'desc' => $lang->desc);
 $form = new Form("index.php?module=tools-spamlog", "post");
 $form_container = new FormContainer($lang->filter_spam_logs);
 $form_container->output_row($lang->spam_username, "", $form->generate_text_box('username', $mybb->input['username'], array('id' => 'username')), 'suername');
 $form_container->output_row($lang->spam_email, "", $form->generate_text_box('email', $mybb->input['email'], array('id' => 'email')), 'email');
 $form_container->output_row($lang->spam_ip, "", $form->generate_text_box('ipaddress', $mybb->input['ipaddress'], array('id' => 'ipaddress')), 'ipaddress');
 $form_container->output_row($lang->sort_by, "", $form->generate_select_box('sortby', $sort_by, $mybb->input['sortby'], array('id' => 'sortby')) . " {$lang->in} " . $form->generate_select_box('order', $order_array, $order, array('id' => 'order')) . " {$lang->order}", 'order');
 $form_container->output_row($lang->results_per_page, "", $form->generate_numeric_field('perpage', $perpage, array('id' => 'perpage', 'min' => 1)), 'perpage');
 $form_container->end();
 $buttons[] = $form->generate_submit_button($lang->filter_spam_logs);
Exemple #17
0
function build_users_view($view)
{
    global $mybb, $db, $cache, $lang, $user_view_fields, $page;
    $view_title = '';
    if ($view['title']) {
        $title_string = "view_title_{$view['vid']}";
        if ($lang->{$title_string}) {
            $view['title'] = $lang->{$title_string};
        }
        $view_title .= " (" . htmlspecialchars_uni($view['title']) . ")";
    }
    // Build the URL to this view
    if (!isset($view['url'])) {
        $view['url'] = "index.php?module=user-users";
    }
    if (!is_array($view['conditions'])) {
        $view['conditions'] = unserialize($view['conditions']);
    }
    if (!is_array($view['fields'])) {
        $view['fields'] = unserialize($view['fields']);
    }
    if (!is_array($view['custom_profile_fields'])) {
        $view['custom_profile_fields'] = unserialize($view['custom_profile_fields']);
    }
    if (isset($mybb->input['username'])) {
        $view['conditions']['username'] = $mybb->input['username'];
    }
    if ($view['vid']) {
        $view['url'] .= "&amp;vid={$view['vid']}";
    } else {
        // If this is a custom view we need to save everything ready to pass it on from page to page
        global $admin_session;
        if (!$mybb->input['search_id']) {
            $search_id = md5(random_str());
            $admin_session['data']['user_views'][$search_id] = $view;
            update_admin_session('user_views', $admin_session['data']['user_views']);
            $mybb->input['search_id'] = $search_id;
        }
        $view['url'] .= "&amp;search_id=" . htmlspecialchars_uni($mybb->input['search_id']);
    }
    if (isset($mybb->input['username'])) {
        $view['url'] .= "&amp;username="******"&amp;", "&", $view['url'])) {
        update_admin_session('last_users_url', str_replace("&amp;", "&", $view['url']));
    }
    if (isset($view['conditions']['referrer'])) {
        $view['url'] .= "&amp;action=referrers&amp;uid=" . htmlspecialchars_uni($view['conditions']['referrer']);
    }
    // Do we not have any views?
    if (empty($view)) {
        return false;
    }
    $table = new Table();
    // Build header for table based view
    if ($view['view_type'] != "card") {
        foreach ($view['fields'] as $field) {
            if (!$user_view_fields[$field]) {
                continue;
            }
            $view_field = $user_view_fields[$field];
            $field_options = array();
            if ($view_field['width']) {
                $field_options['width'] = $view_field['width'];
            }
            if ($view_field['align']) {
                $field_options['class'] = "align_" . $view_field['align'];
            }
            $table->construct_header($view_field['title'], $field_options);
        }
        $table->construct_header("<input type=\"checkbox\" name=\"allbox\" onclick=\"inlineModeration.checkAll(this);\" />");
        // Create a header for the "select" boxes
    }
    $search_sql = '1=1';
    // Build the search SQL for users
    // List of valid LIKE search fields
    $user_like_fields = array("username", "email", "website", "icq", "aim", "yahoo", "msn", "signature", "usertitle");
    foreach ($user_like_fields as $search_field) {
        if (!empty($view['conditions'][$search_field]) && !$view['conditions'][$search_field . '_blank']) {
            $search_sql .= " AND u.{$search_field} LIKE '%" . $db->escape_string_like($view['conditions'][$search_field]) . "%'";
        } else {
            if (!empty($view['conditions'][$search_field . '_blank'])) {
                $search_sql .= " AND u.{$search_field} != ''";
            }
        }
    }
    // EXACT matching fields
    $user_exact_fields = array("referrer");
    foreach ($user_exact_fields as $search_field) {
        if (!empty($view['conditions'][$search_field])) {
            $search_sql .= " AND u.{$search_field}='" . $db->escape_string($view['conditions'][$search_field]) . "'";
        }
    }
    // LESS THAN or GREATER THAN
    $direction_fields = array("postnum");
    foreach ($direction_fields as $search_field) {
        $direction_field = $search_field . "_dir";
        if (isset($view['conditions'][$search_field]) && ($view['conditions'][$search_field] || $view['conditions'][$search_field] === '0') && $view['conditions'][$direction_field]) {
            switch ($view['conditions'][$direction_field]) {
                case "greater_than":
                    $direction = ">";
                    break;
                case "less_than":
                    $direction = "<";
                    break;
                default:
                    $direction = "=";
            }
            $search_sql .= " AND u.{$search_field}{$direction}'" . $db->escape_string($view['conditions'][$search_field]) . "'";
        }
    }
    // Registration searching
    $reg_fields = array("regdate");
    foreach ($reg_fields as $search_field) {
        if (!empty($view['conditions'][$search_field]) && intval($view['conditions'][$search_field])) {
            $threshold = TIME_NOW - intval($view['conditions'][$search_field]) * 24 * 60 * 60;
            $search_sql .= " AND u.{$search_field} >= '{$threshold}'";
        }
    }
    // IP searching
    $ip_fields = array("regip", "lastip");
    foreach ($ip_fields as $search_field) {
        if (!empty($view['conditions'][$search_field])) {
            // IPv6 IP
            if (strpos($view['conditions'][$search_field], ":") !== false) {
                $view['conditions'][$search_field] = str_replace("*", "%", $view['conditions'][$search_field]);
                $ip_sql = "{$search_field} LIKE '" . $db->escape_string($view['conditions'][$search_field]) . "'";
            } else {
                $ip_range = fetch_longipv4_range($view['conditions'][$search_field]);
                if (!is_array($ip_range)) {
                    $ip_sql = "long{$search_field}='{$ip_range}'";
                } else {
                    $ip_sql = "long{$search_field} > '{$ip_range[0]}' AND long{$search_field} < '{$ip_range[1]}'";
                }
            }
            $search_sql .= " AND {$ip_sql}";
        }
    }
    // Post IP searching
    if (!empty($view['conditions']['postip'])) {
        // IPv6 IP
        if (strpos($view['conditions']['postip'], ":") !== false) {
            $view['conditions']['postip'] = str_replace("*", "%", $view['conditions']['postip']);
            $ip_sql = "ipaddress LIKE '" . $db->escape_string($view['conditions']['postip']) . "'";
        } else {
            $ip_range = fetch_longipv4_range($view['conditions']['postip']);
            if (!is_array($ip_range)) {
                $ip_sql = "longipaddress='{$ip_range}'";
            } else {
                $ip_sql = "longipaddress > '{$ip_range[0]}' AND longipaddress < '{$ip_range[1]}'";
            }
        }
        $ip_uids = array(0);
        $query = $db->simple_select("posts", "uid", $ip_sql);
        while ($uid = $db->fetch_field($query, "uid")) {
            $ip_uids[] = $uid;
        }
        $search_sql .= " AND u.uid IN(" . implode(',', $ip_uids) . ")";
        unset($ip_uids);
    }
    // Custom Profile Field searching
    if ($view['custom_profile_fields']) {
        $userfield_sql = '1=1';
        foreach ($view['custom_profile_fields'] as $column => $input) {
            if (is_array($input)) {
                foreach ($input as $value => $text) {
                    if ($value == $column) {
                        $value = $text;
                    }
                    if ($value == $lang->na) {
                        continue;
                    }
                    if (strpos($column, '_blank') !== false) {
                        $column = str_replace('_blank', '', $column);
                        $userfield_sql .= ' AND ' . $db->escape_string($column) . " != ''";
                    } else {
                        $userfield_sql .= ' AND ' . $db->escape_string($column) . "='" . $db->escape_string($value) . "'";
                    }
                }
            } else {
                if (!empty($input)) {
                    if ($input == $lang->na) {
                        continue;
                    }
                    if (strpos($column, '_blank') !== false) {
                        $column = str_replace('_blank', '', $column);
                        $userfield_sql .= ' AND ' . $db->escape_string($column) . " != ''";
                    } else {
                        $userfield_sql .= ' AND ' . $db->escape_string($column) . " LIKE '%" . $db->escape_string($input) . "%'";
                    }
                }
            }
        }
        if ($userfield_sql != '1=1') {
            $userfield_uids = array(0);
            $query = $db->simple_select("userfields", "ufid", $userfield_sql);
            while ($userfield = $db->fetch_array($query)) {
                $userfield_uids[] = $userfield['ufid'];
            }
            $search_sql .= " AND u.uid IN(" . implode(',', $userfield_uids) . ")";
            unset($userfield_uids);
        }
    }
    // Usergroup based searching
    if (isset($view['conditions']['usergroup'])) {
        if (!is_array($view['conditions']['usergroup'])) {
            $view['conditions']['usergroup'] = array($view['conditions']['usergroup']);
        }
        foreach ($view['conditions']['usergroup'] as $usergroup) {
            $usergroup = intval($usergroup);
            if (!$usergroup) {
                continue;
            }
            switch ($db->type) {
                case "pgsql":
                case "sqlite":
                    $additional_sql .= " OR ','||additionalgroups||',' LIKE '%,{$usergroup},%'";
                    break;
                default:
                    $additional_sql .= "OR CONCAT(',',additionalgroups,',') LIKE '%,{$usergroup},%'";
            }
        }
        $search_sql .= " AND (u.usergroup IN (" . implode(",", array_map('intval', $view['conditions']['usergroup'])) . ") {$additional_sql})";
    }
    // COPPA users only?
    if (isset($view['conditions']['coppa'])) {
        $search_sql .= " AND u.coppauser=1 AND u.usergroup=5";
    }
    // Extra SQL?
    if (isset($view['extra_sql'])) {
        $search_sql .= $view['extra_sql'];
    }
    // Lets fetch out how many results we have
    $query = $db->query("\n\t\tSELECT COUNT(u.uid) AS num_results\n\t\tFROM " . TABLE_PREFIX . "users u\n\t\tWHERE {$search_sql}\n\t");
    $num_results = $db->fetch_field($query, "num_results");
    // No matching results then return false
    if (!$num_results) {
        return false;
    } else {
        if (!$view['perpage']) {
            $view['perpage'] = 20;
        }
        $view['perpage'] = intval($view['perpage']);
        // Establish which page we're viewing and the starting index for querying
        // Establish which page we're viewing and the starting index for querying
        if (!isset($mybb->input['page'])) {
            $mybb->input['page'] = 1;
        } else {
            $mybb->input['page'] = intval($mybb->input['page']);
        }
        if ($mybb->input['page']) {
            $start = ($mybb->input['page'] - 1) * $view['perpage'];
        } else {
            $start = 0;
            $mybb->input['page'] = 1;
        }
        $from_bit = "";
        if (isset($mybb->input['from']) && $mybb->input['from'] == "home") {
            $from_bit = "&amp;from=home";
        }
        switch ($view['sortby']) {
            case "regdate":
            case "lastactive":
            case "postnum":
            case "reputation":
                $view['sortby'] = $db->escape_string($view['sortby']);
                break;
            case "numposts":
                $view['sortby'] = "postnum";
                break;
            case "warninglevel":
                $view['sortby'] = "warningpoints";
                break;
            default:
                $view['sortby'] = "username";
        }
        if ($view['sortorder'] != "desc") {
            $view['sortorder'] = "asc";
        }
        $usergroups = $cache->read("usergroups");
        // Fetch matching users
        $query = $db->query("\n\t\t\tSELECT u.*\n\t\t\tFROM " . TABLE_PREFIX . "users u\n\t\t\tWHERE {$search_sql}\n\t\t\tORDER BY {$view['sortby']} {$view['sortorder']}\n\t\t\tLIMIT {$start}, {$view['perpage']}\n\t\t");
        $users = '';
        while ($user = $db->fetch_array($query)) {
            $comma = $groups_list = '';
            $user['view']['username'] = "******"index.php?module=user-users&amp;action=edit&amp;uid={$user['uid']}\">" . format_name($user['username'], $user['usergroup'], $user['displaygroup']) . "</a>";
            $user['view']['usergroup'] = htmlspecialchars_uni($usergroups[$user['usergroup']]['title']);
            if ($user['additionalgroups']) {
                $additional_groups = explode(",", $user['additionalgroups']);
                foreach ($additional_groups as $group) {
                    $groups_list .= $comma . htmlspecialchars_uni($usergroups[$group]['title']);
                    $comma = $lang->comma;
                }
            }
            if (!$groups_list) {
                $groups_list = $lang->none;
            }
            $user['view']['additionalgroups'] = "<small>{$groups_list}</small>";
            $user['view']['email'] = "<a href=\"mailto:" . htmlspecialchars_uni($user['email']) . "\">" . htmlspecialchars_uni($user['email']) . "</a>";
            $user['view']['regdate'] = my_date($mybb->settings['dateformat'], $user['regdate']) . ", " . my_date($mybb->settings['timeformat'], $user['regdate']);
            $user['view']['lastactive'] = my_date($mybb->settings['dateformat'], $user['lastactive']) . ", " . my_date($mybb->settings['timeformat'], $user['lastactive']);
            // Build popup menu
            $popup = new PopupMenu("user_{$user['uid']}", $lang->options);
            $popup->add_item($lang->edit_profile_and_settings, "index.php?module=user-users&amp;action=edit&amp;uid={$user['uid']}");
            $popup->add_item($lang->ban_user, "index.php?module=user-banning&amp;uid={$user['uid']}#username");
            if ($user['usergroup'] == 5) {
                if ($user['coppauser']) {
                    $popup->add_item($lang->approve_coppa_user, "index.php?module=user-users&amp;action=activate_user&amp;uid={$user['uid']}&amp;my_post_key={$mybb->post_code}{$from_bit}");
                } else {
                    $popup->add_item($lang->approve_user, "index.php?module=user-users&amp;action=activate_user&amp;uid={$user['uid']}&amp;my_post_key={$mybb->post_code}{$from_bit}");
                }
            }
            $popup->add_item($lang->delete_user, "index.php?module=user-users&amp;action=delete&amp;uid={$user['uid']}&amp;my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, '{$lang->user_deletion_confirmation}')");
            $popup->add_item($lang->show_referred_users, "index.php?module=user-users&amp;action=referrers&amp;uid={$user['uid']}");
            $popup->add_item($lang->show_ip_addresses, "index.php?module=user-users&amp;action=ipaddresses&amp;uid={$user['uid']}");
            $popup->add_item($lang->show_attachments, "index.php?module=forum-attachments&amp;results=1&amp;username="******"-";
            }
            if ($mybb->settings['enablewarningsystem'] != 0 && $usergroups[$user['usergroup']]['canreceivewarnings'] != 0) {
                $warning_level = round($user['warningpoints'] / $mybb->settings['maxwarningpoints'] * 100);
                if ($warning_level > 100) {
                    $warning_level = 100;
                }
                $user['view']['warninglevel'] = get_colored_warning_level($warning_level);
            }
            if ($user['avatar'] && !stristr($user['avatar'], 'http://')) {
                $user['avatar'] = "../{$user['avatar']}";
            }
            if ($view['view_type'] == "card") {
                $scaled_avatar = fetch_scaled_avatar($user, 80, 80);
            } else {
                $scaled_avatar = fetch_scaled_avatar($user, 34, 34);
            }
            if (!$user['avatar']) {
                $user['avatar'] = "styles/{$page->style}/images/default_avatar.gif";
            }
            $user['view']['avatar'] = "<img src=\"" . htmlspecialchars_uni($user['avatar']) . "\" alt=\"\" width=\"{$scaled_avatar['width']}\" height=\"{$scaled_avatar['height']}\" />";
            if ($view['view_type'] == "card") {
                $users .= build_user_view_card($user, $view, $i);
            } else {
                build_user_view_table($user, $view, $table);
            }
        }
        // If card view, we need to output the results
        if ($view['view_type'] == "card") {
            $table->construct_cell($users);
            $table->construct_row();
        }
    }
    if (!isset($view['table_id'])) {
        $view['table_id'] = "users_list";
    }
    $switch_view = "<div class=\"float_right\">";
    $switch_url = $view['url'];
    if ($mybb->input['page'] > 0) {
        $switch_url .= "&amp;page=" . intval($mybb->input['page']);
    }
    if ($view['view_type'] != "card") {
        $switch_view .= "<strong>{$lang->table_view}</strong> | <a href=\"{$switch_url}&amp;type=card\" style=\"font-weight: normal;\">{$lang->card_view}</a>";
    } else {
        $switch_view .= "<a href=\"{$switch_url}&amp;type=table\" style=\"font-weight: normal;\">{$lang->table_view}</a> | <strong>{$lang->card_view}</strong>";
    }
    $switch_view .= "</div>";
    // Do we need to construct the pagination?
    if ($num_results > $view['perpage']) {
        $pagination = draw_admin_pagination($mybb->input['page'], $view['perpage'], $num_results, $view['url'] . "&amp;type={$view['view_type']}");
        $search_class = "float_right";
        $search_style = "";
    } else {
        $search_class = '';
        $search_style = "text-align: right;";
    }
    $search_action = $view['url'];
    // stop &username= in the query string
    if ($view_upos = strpos($search_action, '&amp;username='******'post', 'search_form', 0, '', true);
    $built_view = $search->construct_return;
    $built_view .= "<div class=\"{$search_class}\" style=\"padding-bottom: 3px; margin-top: -9px; {$search_style}\">";
    $built_view .= $search->generate_hidden_field('action', 'search') . "\n";
    if (isset($view['conditions']['username'])) {
        $default_class = '';
        $value = $view['conditions']['username'];
    } else {
        $default_class = "search_default";
        $value = $lang->search_for_user;
    }
    $built_view .= $search->generate_text_box('username', $value, array('id' => 'search_keywords', 'class' => "{$default_class} field150 field_small")) . "\n";
    $built_view .= "<input type=\"submit\" class=\"search_button\" value=\"{$lang->search}\" />\n";
    if ($view['popup']) {
        $built_view .= " <div style=\"display: inline\">{$view['popup']}</div>\n";
    }
    $built_view .= "<script type='text/javascript'>\n\t\tvar form = document.getElementById('search_form');\n\t\tform.onsubmit = function() {\n\t\t\tvar search = document.getElementById('search_keywords');\n\t\t\tif(search.value == '' || search.value == '" . addcslashes($lang->search_for_user, "'") . "')\n\t\t\t{\n\t\t\t\tsearch.focus();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar search = document.getElementById('search_keywords');\n\t\tsearch.onfocus = function()\n\t\t{\n\t\t\tif(this.value == '" . addcslashes($lang->search_for_user, "'") . "')\n\t\t\t{\n\t\t\t\t\$(this).removeClassName('search_default');\n\t\t\t\tthis.value = '';\n\t\t\t}\n\t\t}\n\t\tsearch.onblur = function()\n\t\t{\n\t\t\tif(this.value == '')\n\t\t\t{\n\t\t\t\t\$(this).addClassName('search_default');\n\t\t\t\tthis.value = '" . addcslashes($lang->search_for_user, "'") . "';\n\t\t\t}\n\t\t}\n\t\t// fix the styling used if we have a different default value\n\t\tif(search.value != '" . addcslashes($lang->search_for_user, "'") . "')\n\t\t{\n\t\t\t\$(search).removeClassName('search_default');\n\t\t}\n\t\t</script>\n";
    $built_view .= "</div>\n";
    // Autocompletion for usernames
    $built_view .= '
	<script type="text/javascript" src="../jscripts/autocomplete.js?ver=140"></script>
	<script type="text/javascript">
	<!--
		new autoComplete("search_keywords", "../xmlhttp.php?action=get_users", {valueSpan: "username"});
	// -->
	</script>';
    $built_view .= $search->end();
    if (isset($pagination)) {
        $built_view .= $pagination;
    }
    if ($view['view_type'] != "card") {
        $checkbox = '';
    } else {
        $checkbox = "<input type=\"checkbox\" name=\"allbox\" onclick=\"inlineModeration.checkAll(this)\" /> ";
    }
    $built_view .= $table->construct_html("{$switch_view}<div>{$checkbox}{$lang->users}{$view_title}</div>", 1, "", $view['table_id']);
    if (isset($pagination)) {
        $built_view .= $pagination;
    }
    $built_view .= '
<script type="text/javascript" src="' . $mybb->settings['bburl'] . '/jscripts/inline_moderation.js?ver=1400"></script>
<form action="index.php?module=user-users" method="post">
<input type="hidden" name="my_post_key" value="' . $mybb->post_code . '" />
<input type="hidden" name="action" value="inline_edit" />
<div class="float_right"><span class="smalltext"><strong>' . $lang->inline_edit . '</strong></span>
<select name="inline_action" class="inline_select">
	<option value="multiactivate">' . $lang->inline_activate . '</option>
	<option value="multiban">' . $lang->inline_ban . '</option>
	<option value="multiusergroup">' . $lang->inline_usergroup . '</option>
	<option value="multidelete">' . $lang->inline_delete . '</option>
	<option value="multiprune">' . $lang->inline_prune . '</option>
</select>
<input type="submit" class="button" name="go" value="' . $lang->go . ' (0)" id="inline_go" />&nbsp;
<input type="button" onclick="javascript:inlineModeration.clearChecked();" value="' . $lang->clear . '" class="button" />
</div>
</form>
<br style="clear: both;" />
<script type="text/javascript">
<!--
	var go_text = "' . $lang->go . '";
	var all_text = "1";
	var inlineType = "user";
	var inlineId = "acp";
// -->
</script>';
    return $built_view;
}
 // Figure out if we need to display multiple pages.
 $per_page = 15;
 if ($mybb->input['page'] > 0) {
     $current_page = intval($mybb->input['page']);
     $start = ($current_page - 1) * $per_page;
     $pages = $unapproved_attachments / $per_page;
     $pages = ceil($pages);
     if ($current_page > $pages) {
         $start = 0;
         $current_page = 1;
     }
 } else {
     $start = 0;
     $current_page = 1;
 }
 $pagination = draw_admin_pagination($current_page, $per_page, $unapproved_attachments, "index.php?module=forum/moderation_queue&amp;type=attachments&amp;page={page}");
 $page->add_breadcrumb_item($lang->attachments_awaiting_moderation);
 $page->output_header($lang->attachments_awaiting_moderation);
 $page->output_nav_tabs($sub_tabs, "attachments");
 $form = new Form("index.php?module=forum/moderation_queue", "post");
 $table = new Table();
 $table->construct_header($lang->filename);
 $table->construct_header($lang->uploadedby, array("class" => "align_center", "width" => "20%"));
 $table->construct_header($lang->posted, array("class" => "align_center", "width" => "20%"));
 $table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 3));
 $query = $db->query("\n\t\t\tSELECT a.*, p.subject AS postsubject, p.dateline, p.uid, u.username, t.tid, t.subject AS threadsubject\n\t\t\tFROM  " . TABLE_PREFIX . "attachments a\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "posts p ON (p.pid=a.pid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "threads t ON (t.tid=p.tid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=p.uid)\n\t\t\tWHERE a.visible='0'\n\t\t\tORDER BY a.dateuploaded DESC\n\t\t\tLIMIT {$start}, {$per_page}\n\t\t");
 while ($attachment = $db->fetch_array($query)) {
     if (!$attachment['dateuploaded']) {
         $attachment['dateuploaded'] = $attachment['dateline'];
     }
     $attachdate = my_date($mybb->settings['dateformat'], $attachment['dateuploaded']);
function akismet_admin()
{
    global $mybb, $db, $page, $lang;
    if ($page->active_action != "akismet") {
        return;
    }
    $page->add_breadcrumb_item($lang->akismet);
    if ($mybb->input['delete_all'] && $mybb->request_method == "post") {
        // User clicked no
        if ($mybb->input['no']) {
            admin_redirect("index.php?module=forum-akismet");
        }
        if ($mybb->request_method == "post") {
            // Delete the template
            $db->delete_query("posts", "visible = '-4'");
            // Log admin action
            log_admin_action();
            flash_message($lang->success_deleted_spam, 'success');
            admin_redirect("index.php?module=forum-akismet");
        } else {
            $page->output_confirm_action("index.php?module=forum-akismet&amp;delete_all=1", $lang->confirm_spam_deletion);
        }
    }
    if ($mybb->input['unmark'] && $mybb->request_method == "post") {
        $unmark = $mybb->input['akismet'];
        if (empty($unmark)) {
            flash_message($lang->error_unmark, 'error');
            admin_redirect("index.php?module=forum-akismet");
        }
        $posts_in = '';
        $comma = '';
        foreach ($unmark as $key => $val) {
            $posts_in .= $comma . intval($key);
            $comma = ',';
        }
        $query = $db->simple_select("posts", "pid, tid", "pid IN ({$posts_in}) AND replyto = '0'");
        while ($post = $db->fetch_array($query)) {
            $threadp[] = $post['tid'];
        }
        if (!is_array($threadp)) {
            $threadp = array();
        }
        $thread_list = implode(',', $threadp);
        $query = $db->query("\r\n\t\t\tSELECT p.tid, f.usepostcounts, p.uid, p.fid, p.dateline, p.replyto, t.lastpost, t.lastposter, t.lastposteruid, t.subject\r\n\t\t\tFROM " . TABLE_PREFIX . "posts p\r\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "threads t ON (t.tid=p.tid)\r\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "forums f ON (f.fid=p.fid)\r\n\t\t\tWHERE p.pid IN ({$posts_in}) AND p.visible = '-4'\r\n\t\t");
        while ($post = $db->fetch_array($query)) {
            // Fetch the last post for this forum
            $query2 = $db->query("\r\n\t\t\t\tSELECT tid, lastpost, lastposter, lastposteruid, subject\r\n\t\t\t\tFROM " . TABLE_PREFIX . "threads\r\n\t\t\t\tWHERE fid='{$post['fid']}' AND visible='1' AND closed NOT LIKE 'moved|%'\r\n\t\t\t\tORDER BY lastpost DESC\r\n\t\t\t\tLIMIT 0, 1\r\n\t\t\t");
            $lastpost = $db->fetch_array($query2);
            if ($post['lastpost'] > $lastpost['lastpost']) {
                $lastpost['lastpost'] = $post['lastpost'];
                $lastpost['lastposter'] = $post['lastposter'];
                $lastpost['lastposteruid'] = $post['lastposteruid'];
                $lastpost['subject'] = $post['subject'];
                $lastpost['tid'] = $post['tid'];
            }
            $update_count = array("lastpost" => intval($lastpost['lastpost']), "lastposter" => $db->escape_string($lastpost['lastposter']), "lastposteruid" => intval($lastpost['lastposteruid']), "lastposttid" => intval($lastpost['tid']), "lastpostsubject" => $db->escape_string($lastpost['subject']));
            $db->update_query("forums", $update_count, "fid='{$post['fid']}'");
            $query2 = $db->query("\r\n\t\t\t\tSELECT u.uid, u.username, p.username AS postusername, p.dateline\r\n\t\t\t\tFROM " . TABLE_PREFIX . "posts p\r\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=p.uid)\r\n\t\t\t\tWHERE p.tid='{$post['tid']}' AND p.visible='1' OR p.pid = '{$post['pid']}'\r\n\t\t\t\tORDER BY p.dateline DESC\r\n\t\t\t\tLIMIT 1");
            $lastpost = $db->fetch_array($query2);
            $query2 = $db->query("\r\n\t\t\t\tSELECT u.uid, u.username, p.username AS postusername, p.dateline\r\n\t\t\t\tFROM " . TABLE_PREFIX . "posts p\r\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=p.uid)\r\n\t\t\t\tWHERE p.tid='{$post['tid']}'\r\n\t\t\t\tORDER BY p.dateline ASC\r\n\t\t\t\tLIMIT 0,1\r\n\t\t\t");
            $firstpost = $db->fetch_array($query2);
            if (!$firstpost['username']) {
                $firstpost['username'] = $firstpost['postusername'];
            }
            if (!$lastpost['username']) {
                $lastpost['username'] = $lastpost['postusername'];
            }
            if (!$lastpost['dateline']) {
                $lastpost['username'] = $firstpost['username'];
                $lastpost['uid'] = $firstpost['uid'];
                $lastpost['dateline'] = $firstpost['dateline'];
            }
            $lastpost['username'] = $db->escape_string($lastpost['username']);
            $firstpost['username'] = $db->escape_string($firstpost['username']);
            $query2 = $db->simple_select("users", "akismetstopped", "uid='{$post['uid']}'");
            $akismetstopped = $db->fetch_field($query2, "akismetstopped") - 1;
            if ($akismetstopped < 0) {
                $akismetstopped = 0;
            }
            $db->update_query("users", array('akismetstopped' => $akismetstopped), "uid='{$post['uid']}'");
            $update_array = array('username' => $firstpost['username'], 'uid' => intval($firstpost['uid']), 'lastpost' => intval($lastpost['dateline']), 'lastposter' => $lastpost['username'], 'lastposteruid' => intval($lastpost['uid']));
            $db->update_query("threads", $update_array, "tid='{$post['tid']}'");
            if ($post['usepostcounts'] != 0) {
                $db->write_query("UPDATE " . TABLE_PREFIX . "users SET postnum=postnum+1 WHERE uid = '{$post['uid']}'");
            }
            $newthreads = $newreplies = 0;
            if ($post['replyto'] == 0) {
                ++$newthreads;
            } else {
                ++$newreplies;
            }
            update_thread_counters($post['tid'], array('replies' => '+' . $newreplies));
            update_forum_counters($post['fid'], array('threads' => '+' . $newthreads, 'posts' => '+1'));
        }
        $approve = array("visible" => 1);
        if ($thread_list) {
            $db->update_query("threads", $approve, "tid IN ({$thread_list})");
        }
        $db->update_query("posts", $approve, "pid IN ({$posts_in})");
        // Log admin action
        log_admin_action();
        flash_message($lang->success_unmarked, 'success');
        admin_redirect("index.php?module=forum-akismet");
    }
    if ($mybb->input['delete'] && $mybb->request_method == "post") {
        $deletepost = $mybb->input['akismet'];
        if (empty($deletepost)) {
            flash_message($lang->error_deletepost, 'error');
            admin_redirect("index.php?module=forum-akismet");
        }
        $posts_in = '';
        $comma = '';
        foreach ($deletepost as $key => $val) {
            $posts_in .= $comma . intval($key);
            $comma = ',';
        }
        $query = $db->simple_select("posts", "pid, tid", "pid IN ({$posts_in}) AND replyto = '0'");
        while ($post = $db->fetch_array($query)) {
            $threadp[$post['pid']] = $post['tid'];
        }
        if (!is_array($threadp)) {
            $threadp = array();
        }
        require_once MYBB_ROOT . "inc/functions_upload.php";
        foreach ($deletepost as $pid => $val) {
            if (array_key_exists($pid, $threadp)) {
                $db->delete_query("posts", "pid IN ({$posts_in})");
                $db->delete_query("attachments", "pid IN ({$posts_in})");
                // Get thread info
                $query = $db->simple_select("threads", "poll", "tid='" . $threadp[$pid] . "'");
                $poll = $db->fetch_field($query, 'poll');
                // Delete threads, redirects, favorites, polls, and poll votes
                $db->delete_query("threads", "tid='" . $threadp[$pid] . "'");
                $db->delete_query("threads", "closed='moved|" . $threadp[$pid] . "'");
                $db->delete_query("threadsubscriptions", "tid='" . $threadp[$pid] . "'");
                $db->delete_query("polls", "tid='" . $threadp[$pid] . "'");
                $db->delete_query("pollvotes", "pid='{$poll}'");
            }
            // Remove attachments
            remove_attachments($pid);
            // Delete the post
            $db->delete_query("posts", "pid='{$pid}'");
        }
        // Log admin action
        log_admin_action();
        flash_message($lang->success_spam_deleted, 'success');
        admin_redirect("index.php?module=forum-akismet");
    }
    if (!$mybb->input['action']) {
        require MYBB_ROOT . "inc/class_parser.php";
        $parser = new postParser();
        $page->output_header($lang->akismet);
        $form = new Form("index.php?module=forum-akismet", "post");
        $table = new Table();
        $table->construct_header($form->generate_check_box("checkall", 1, '', array('class' => 'checkall')), array('width' => '5%'));
        $table->construct_header("Title / Username / Post", array('class' => 'align_center'));
        $mybb->input['page'] = intval($mybb->input['page']);
        if ($mybb->input['page'] > 0) {
            $start = $mybb->input['page'] * 20;
        } else {
            $start = 0;
        }
        $query = $db->simple_select("posts", "COUNT(pid) as spam", "visible = '-4'");
        $total_rows = $db->fetch_field($query, 'spam');
        if ($start > $total_rows) {
            $start = $total_rows - 20;
        }
        if ($start < 0) {
            $start = 0;
        }
        $query = $db->simple_select("posts", "*", "visible = '-4'", array('limit_start' => $start, 'limit' => '20', 'order_by' => 'dateline', 'order_dir' => 'desc'));
        while ($post = $db->fetch_array($query)) {
            if ($post['uid'] != 0) {
                $username = "******"../" . str_replace("{uid}", $post['uid'], PROFILE_URL) . "\" target=\"_blank\">" . format_name($post['username'], $post['usergroup'], $post['displaygroup']) . "</a>";
            } else {
                $username = $post['username'];
            }
            $table->construct_cell($form->generate_check_box("akismet[{$post['pid']}]", 1, ''));
            $table->construct_cell("<span style=\"float: right;\">{$lang->username} {$username}</span> <span style=\"float: left;\">{$lang->title}: " . htmlspecialchars_uni($post['subject']) . " <strong>(" . my_date($mybb->settings['dateformat'], $post['dateline']) . ", " . my_date($mybb->settings['timeformat'], $post['dateline']) . ")</strong></span>");
            $table->construct_row();
            $parser_options = array("allow_html" => 0, "allow_mycode" => 0, "allow_smilies" => 0, "allow_imgcode" => 0, "me_username" => $post['username'], "filter_badwords" => 1);
            $post['message'] = $parser->parse_message($post['message'], $parser_options);
            $table->construct_cell($post['message'], array("colspan" => 2));
            $table->construct_row();
        }
        $num_rows = $table->num_rows();
        if ($num_rows == 0) {
            $table->construct_cell($lang->no_spam_found, array("class" => "align_center", "colspan" => 2));
            $table->construct_row();
        }
        $table->output($lang->detected_spam_messages);
        echo "<br />" . draw_admin_pagination($mybb->input['page'], 20, $total_rows, "index.php?module=forum-akismet&amp;page={page}");
        $buttons[] = $form->generate_submit_button($lang->unmark_selected, array('name' => 'unmark'));
        $buttons[] = $form->generate_submit_button($lang->deleted_selected, array('name' => 'delete'));
        if ($num_rows > 0) {
            $buttons[] = $form->generate_submit_button($lang->delete_all, array('name' => 'delete_all', 'onclick' => "return confirm('{$lang->confirm_spam_deletion}');"));
        }
        $form->output_submit_wrapper($buttons);
        $form->end();
        $page->output_footer();
    }
    exit;
}
Exemple #20
0
         }
         if ($filter_msg != '') {
             $filter_msg .= '<br />' . $field;
         }
         $url_filters .= '&amp;fields[]=' . $field;
     }
     $sql .= $close;
 }
 if ($filter_msg != '') {
     echo "<p class=\"notice\">" . $lang->sprintf($lang->newpoints_filter, $filter_msg) . "</p><br />";
 }
 echo "<p class=\"notice\">{$lang->newpoints_log_notice}</p>";
 $query = $db->simple_select("newpoints_log", "COUNT(lid) as log_entries", $sql);
 $total_rows = $db->fetch_field($query, "log_entries");
 if ($total_rows > $per_page) {
     echo "<br />" . draw_admin_pagination($mybb->input['page'], $per_page, $total_rows, "index.php?module=newpoints-log&amp;page={page}" . $url_filters);
 }
 // table
 $table = new Table();
 $table->construct_header($lang->newpoints_log_action, array('width' => '15%'));
 $table->construct_header($lang->newpoints_log_data, array('width' => '30%'));
 $table->construct_header($lang->newpoints_log_user, array('width' => '20%'));
 $table->construct_header($lang->newpoints_log_date, array('width' => '20%', 'class' => 'align_center'));
 $table->construct_header($lang->newpoints_log_options, array('width' => '15%', 'class' => 'align_center'));
 $fields = array();
 $query = $db->simple_select('newpoints_log', '*', $sql, array('order_by' => 'date', 'order_dir' => 'DESC', 'limit' => "{$start}, {$per_page}"));
 while ($log = $db->fetch_array($query)) {
     $table->construct_cell(htmlspecialchars_uni($log['action']));
     $table->construct_cell(htmlspecialchars_uni($log['data']));
     $link = build_profile_link(htmlspecialchars_uni($log['username']), intval($log['uid']));
     $table->construct_cell($link);