2013-02-02, 11:12 PM
Hi!
I want to create a custom function find plugin on the mybb.com like in AdminCP! How can I do that?
Example: http://mydomain.com/searchplugin.php
I found the document in the admin\modules\config\plugins.php
Can anyone help me? Thanks.
I want to create a custom function find plugin on the mybb.com like in AdminCP! How can I do that?
Example: http://mydomain.com/searchplugin.php
I found the document in the admin\modules\config\plugins.php
Can anyone help me? Thanks.
if($mybb->input['action'] == "browse")
{
$page->add_breadcrumb_item($lang->browse_plugins);
$page->output_header($lang->browse_plugins);
$sub_tabs['plugins'] = array(
'title' => $lang->plugins,
'link' => "index.php?module=config-plugins",
'description' => $lang->plugins_desc
);
$sub_tabs['update_plugins'] = array(
'title' => $lang->plugin_updates,
'link' => "index.php?module=config-plugins&action=check",
'description' => $lang->plugin_updates_desc
);
$sub_tabs['browse_plugins'] = array(
'title' => $lang->browse_plugins,
'link' => "index.php?module=config-plugins&action=browse",
'description' => $lang->browse_plugins_desc
);
$page->output_nav_tabs($sub_tabs, 'browse_plugins');
// Process search requests
require_once MYBB_ROOT."inc/class_xml.php";
$keywords = "";
if($mybb->input['keywords'])
{
$keywords = "&keywords=".urlencode($mybb->input['keywords']);
}
if($mybb->input['page'])
{
$url_page = "&page=".intval($mybb->input['page']);
}
else
{
$mybb->input['page'] = 1;
$url_page = "";
}
// Gets the major version code. i.e. 1410 -> 1400 or 121 -> 1200
if($mybb->version_code >= 1000)
{
$major_version_code = round($mybb->version_code/100, 0)*100;
}
else
{
$major_version_code = round($mybb->version_code/10, 0)*100;
}
$contents = fetch_remote_file("http://mods.mybb.com/xmlbrowse.php?type=mod&version={$major_version_code}{$keywords}{$url_page}", $post_data);
if(!$contents)
{
$page->output_inline_error($lang->error_communication_problem);
$page->output_footer();
exit;
}
$table = new Table;
$table->construct_header($lang->plugin);
$table->construct_header($lang->latest_version, array("class" => "align_center", 'width' => 125));
$table->construct_header($lang->controls, array("class" => "align_center", 'width' => 125));
$parser = new XMLParser($contents);
$tree = $parser->get_tree();
if(!array_key_exists("results", $tree))
{
$page->output_inline_error($lang->error_communication_problem);
$page->output_footer();
exit;
}
if(!empty($tree['results']['result']))
{
if(array_key_exists("tag", $tree['results']['result']))
{
$only_plugin = $tree['results']['result'];
unset($tree['results']['result']);
$tree['results']['result'][0] = $only_plugin;
}
foreach($tree['results']['result'] as $result)
{
$table->construct_cell("<strong>{$result['name']['value']}</strong><br /><small>{$result['description']['value']}</small><br /><i><small>{$lang->created_by} {$result['author']['value']}</small></i>");
$table->construct_cell($result['version']['value'], array("class" => "align_center"));
$table->construct_cell("<strong><a href=\"http://mods.mybb.com/view/{$result['download_url']['value']}\" target=\"_blank\">{$lang->download}</a></strong>", array("class" => "align_center"));
$table->construct_row();
}
}
if($table->num_rows() == 0)
{
$table->construct_cell($lang->error_no_results_found, array("colspan" => 3));
$table->construct_row();
}
$search = new Form("index.php?module=config-plugins&action=browse", 'post', 'search_form');
echo "<div style=\"padding-bottom: 3px; margin-top: -9px; text-align: right;\">";
if($mybb->input['keywords'])
{
$default_class = '';
$value = htmlspecialchars_uni($mybb->input['keywords']);
}
else
{
$default_class = "search_default";
$value = $lang->search_for_plugins;
}
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'>
var form = document.getElementById('search_form');
form.onsubmit = function() {
var search = document.getElementById('search_keywords');
if(search.value == '' || search.value == '{$lang->search_for_plugins}')
{
search.focus();
return false;
}
}
var search = document.getElementById('search_keywords');
search.onfocus = function()
{
if(this.value == '{$lang->search_for_plugins}')
{
$(this).removeClassName('search_default');
this.value = '';
}
}
search.onblur = function()
{
if(this.value == '')
{
$(this).addClassName('search_default');
this.value = '{$lang->search_for_plugins}';
}
}
// fix the styling used if we have a different default value
if(search.value != '{$lang->search_for_plugins}')
{
$(search).removeClassName('search_default');
}
</script>\n";
echo "</div>\n";
echo $search->end();
// Recommended plugins = Default; Otherwise search results & pagination
if($mybb->request_method == "post")
{
$table->output("<span style=\"float: right;\"><small><a href=\"http://mods.mybb.com/mods\" target=\"_blank\">{$lang->browse_all_plugins}</a></small></span>".$lang->sprintf($lang->browse_results_for_mybb, $mybb->version));
}
else
{
$table->output("<span style=\"float: right;\"><small><a href=\"http://mods.mybb.com/mods\" target=\"_blank\">{$lang->browse_all_plugins}</a></small></span>".$lang->sprintf($lang->recommended_plugins_for_mybb, $mybb->version));
}
echo "<br />".draw_admin_pagination($mybb->input['page'], 15, $tree['results']['attributes']['total'], "index.php?module=config-plugins&action=browse{$keywords}&page={page}");
$page->output_footer();
}