" . __n('Click \'Continue\' to disable the following Package Repository.', 'Click \'Continue\' to disable following Package Repositories.', cacti_sizeof($p_array)) . "
" . __('Click \'Continue\' to enable the following Package Repository.', 'Click \'Continue\' to enable following Package Repositories.', cacti_sizeof($p_array)) . "
";
html_end_box();
form_end();
bottom_footer();
}
function repo_remove(int $id) : void {
db_execute_prepared('DELETE FROM package_repositories WHERE id = ?', [$id]);
db_execute_prepared('DELETE FROM package_repositories WHERE id = ?', [$id]);
}
function repo_disable(int $id) : void {
db_execute_prepared('UPDATE package_repositories SET enabled = "" WHERE id = ?', [$id]);
}
function repo_enable(int $id) : void {
db_execute_prepared('UPDATE package_repositories SET enabled = "on" WHERE id = ?', [$id]);
}
function repo_default(int $id) : void {
db_execute('UPDATE package_repositories SET `default` = ""');
db_execute_prepared('UPDATE package_repositories SET `default` = "on" WHERE id = ?', [$id]);
}
function repo_edit() : void {
global $types;
// ================= input validation =================
gfrv('id');
// ====================================================
if (!ierv('id')) {
$repo = db_fetch_row_prepared('SELECT * FROM package_repositories WHERE id = ?', [grv('id')]);
$header_label = __esc('Package Repository [edit: %s]', $repo['name']);
} else {
$header_label = __('Package Repository [new]');
$repo = [];
}
if (cacti_sizeof($repo)) {
if ($repo['repo_type'] == 1) { // Local directory
$method = 'dirpath';
} else {
$method = 'textbox';
}
} else {
$method = 'textbox';
}
$fields_package = [
'name' => [
'method' => 'textbox',
'friendly_name' => __('Name'),
'description' => __('Enter a meaningful name for this Package Repository.'),
'value' => '|arg1:name|',
'max_length' => '32',
],
'repo_type' => [
'method' => 'drop_array',
'friendly_name' => __('Repository Type'),
'description' => __('Choose what Package Repository type this is.'),
'value' => '|arg1:repo_type|',
'array' => $types,
'default' => '0'
],
'repo_location' => [
'method' => $method,
'friendly_name' => __('Location'),
'description' => __('Either the full path on the Cacti Web Server to the Repository or a URL to the Repository. For example: https://github.com/Cacti/packages/'),
'value' => '|arg1:repo_location|',
'max_length' => '128',
'size' => '120'
],
'repo_branch' => [
'method' => 'textbox',
'friendly_name' => __('Branch'),
'description' => __('For GitHub based repositories, the branch to include such as \'develop\', \'master\', etc.'),
'value' => '|arg1:repo_branch|',
'max_length' => '128',
'size' => '10'
],
'repo_api_key' => [
'method' => 'textbox',
'friendly_name' => __('API Key (optional)'),
'description' => __('For GitHub based repositories, the optional API key required to access the repository.'),
'value' => '|arg1:repo_api_key|',
'max_length' => '128',
'size' => '100'
],
'enabled' => [
'method' => 'checkbox',
'friendly_name' => __('Enabled'),
'description' => __('If this checkbox is checked, you will be able to import packages from this Repository.'),
'value' => '|arg1:enabled|',
'default' => 'on',
],
'default' => [
'method' => 'checkbox',
'friendly_name' => __('Default'),
'description' => __('If this checkbox is checked, this will be the first Repository shown to the user.'),
'value' => '|arg1:default|',
'default' => '',
],
'id' => [
'method' => 'hidden_zero',
'value' => '|arg1:id|'
],
'save_component_repo' => [
'method' => 'hidden',
'value' => '1'
]
];
form_start('package_repos.php');
html_start_box($header_label, '100%', true, 3, 'center', '');
draw_edit_form(
[
'config' => [],
'fields' => inject_form_variables($fields_package, $repo)
]
);
html_end_box(true);
?>
rows_label = __('Repos');
$pageFilter->render();
$filter = PackageListFilter::fromRequest((int) read_config_option('num_rows_table'));
$sql_where = '';
$sql_params = [];
// form the 'where' clause for our main sql query
if ($filter->hasFilter()) {
$sql_where = ($sql_where != '' ? ' AND ' : 'WHERE ') .
'(name LIKE ? OR repo_branch LIKE ? OR repo_location LIKE ?)';
$sql_params[] = '%' . $filter->filter() . '%';
$sql_params[] = '%' . $filter->filter() . '%';
$sql_params[] = '%' . $filter->filter() . '%';
}
$sql_order = get_order_string();
$sql_limit = ' LIMIT ' . $filter->offset() . ',' . $filter->rows();
$total_rows = db_fetch_cell_prepared("SELECT COUNT(*)
FROM package_repositories
$sql_where",
$sql_params);
$repos = db_fetch_assoc_prepared("SELECT *
FROM package_repositories
$sql_where
$sql_order
$sql_limit",
$sql_params);
$display_text = [
'name' => [
'display' => __('Name'),
'sort' => 'ASC'
],
'repo_type' => [
'display' => __('Type'),
'sort' => 'ASC'
],
'repo_location' => [
'display' => __('Location'),
'sort' => 'ASC'
],
'repo_branch' => [
'display' => __('Branch'),
'align' => 'center',
'sort' => 'ASC'
],
'enabled' => [
'display' => __('Enabled'),
'align' => 'center',
'sort' => 'ASC'
],
'default' => [
'display' => __('Default'),
'align' => 'center',
'sort' => 'ASC'
],
];
$nav = html_nav_bar($filter->paginationUrl('package_repos.php'), MAX_DISPLAY_PAGES, $filter->page(), $filter->rows(), $total_rows, cacti_sizeof($display_text) + 1, __('Package Repositories'), 'page', 'main');
form_start('package_repos.php', 'chk');
print $nav;
html_start_box('', '100%', false, 3, 'center', '');
html_header_sort_checkbox($display_text, $filter->sortColumn(), $filter->sortDirection(), false);
if (cacti_sizeof($repos)) {
foreach ($repos as $repo) {
form_alternate_row('line' . $repo['id'], true);
form_selectable_cell(filter_value($repo['name'], $filter->filter(), 'package_repos.php?action=edit&id=' . $repo['id']), $repo['id']);
form_selectable_cell($types[$repo['repo_type']], $repo['id']);
form_selectable_cell(filter_value($repo['repo_location'], $filter->filter()), $repo['id']);
form_selectable_ecell($repo['repo_type'] == 0 ? ($repo['repo_branch'] != '' ? $repo['repo_branch'] : __('default')) : __('N/A'), $repo['id'], '', 'center');
form_selectable_cell($repo['enabled'] == 'on' ? __('Yes') : __('No'), $repo['id'], '', 'center');
form_selectable_cell($repo['default'] == 'on' ? __('Yes') : __('No'), $repo['id'], '', 'center');
form_checkbox_cell($repo['name'], $repo['id']);
form_end_row();
}
} else {
print '
' . __('No Package Repositories Found') . '
';
}
html_end_box(false);
if (cacti_sizeof($repos)) {
print $nav;
}
// draw the dropdown containing a list of available actions for this form
draw_actions_dropdown($actions);
form_end();
}