__('Delete') ]; // set default action set_default_action(); switch (grv('action')) { case 'actions': form_actions(); break; default: top_header(); public_keys(); bottom_footer(); break; } function form_actions() : void { global $actions; // if we are to save this form, instead of display it if (isrv('selected_items')) { $selected_items = PackageListFilter::decodeSelectedIds(gnrv('selected_items')); if ($selected_items != false) { if (gnrv('drp_action') == '1') { // delete for ($i = 0; ($i < cacti_count($selected_items)); $i++) { package_key_remove($selected_items[$i]); } } } header('Location: package_keys.php?header=false'); exit; } // setup some variables $p_list = ''; $p_array = []; foreach (PackageListFilter::selectedIdsFromPost() as $id) { $p_list .= '
  • ' . htmle(db_fetch_cell_prepared('SELECT author FROM package_public_keys WHERE id = ?', [$id])) . '
  • '; $p_array[] = $id; } top_header(); form_start('package_keys.php', 'action_confirm'); html_start_box($actions[gnrv('drp_action')], '60%', false, 3, 'center', ''); if (cacti_sizeof($p_array)) { $save_html = ''; if (gnrv('drp_action') == '1') { // delete print "

    " . __n('Click \'Continue\' to delete the following .', 'Click \'Continue\' to delete following Package Repositories.', cacti_sizeof($p_array)) . "

    "; $save_html = "'; } } else { raise_message(40); header('Location: package_keys.php?header=false'); exit; } print " $save_html "; html_end_box(); form_end(); bottom_footer(); } function package_key_remove(int $id) : void { db_execute_prepared('DELETE FROM package_public_keys WHERE id = ?', [$id]); } function public_keys() : void { global $actions, $item_rows, $types; // create the page filter $pageFilter = new CactiTableFilter(__('Public Keys'), 'package_keys.php', 'fors', 'sess_package_keys'); $pageFilter->rows_label = __('Keys'); $pageFilter->set_sort_array('author', 'ASC'); $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 ') . '(author LIKE ? OR homepage LIKE ? OR email_address 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_public_keys $sql_where", $sql_params); $keys = db_fetch_assoc_prepared("SELECT * FROM package_public_keys $sql_where $sql_order $sql_limit", $sql_params); $display_text = [ 'author' => [ 'display' => __('Author'), 'sort' => 'ASC' ], 'id' => [ 'display' => __('ID'), 'align' => 'left', 'sort' => 'ASC' ], 'homepage' => [ 'display' => __('Home Page'), 'sort' => 'ASC' ], 'email_address' => [ 'display' => __('Support EMail Address'), 'sort' => 'ASC' ], 'nosort' => [ 'display' => __('Key Type'), ], ]; $nav = html_nav_bar($filter->paginationUrl('package_keys.php'), MAX_DISPLAY_PAGES, $filter->page(), $filter->rows(), $total_rows, cacti_sizeof($display_text) + 1, __('Package Public Keys'), 'page', 'main'); form_start('package_keys.php', 'chk'); print $nav; html_start_box('', '100%', false, 3, 'center', ''); html_header_sort_checkbox($display_text, $filter->sortColumn(), $filter->sortDirection(), false); $i = 0; if (cacti_sizeof($keys)) { foreach ($keys as $key) { form_alternate_row('line' . $key['id'], true); $pkey = $key['public_key']; form_selectable_cell(filter_value($key['author'], $filter->filter()), $key['id']); form_selectable_cell($key['id'], $key['id']); form_selectable_cell(filter_value($key['homepage'], $filter->filter()), $key['id']); form_selectable_cell(filter_value($key['email_address'], $filter->filter()), $key['id']); form_selectable_cell(strlen($pkey) < 200 ? 'SHA1' : 'SHA256', $key['id']); form_checkbox_cell($key['author'], $key['id']); form_end_row(); } } else { print '' . __('No Package Public Keys Found') . ''; } html_end_box(false); if (cacti_sizeof($keys)) { print $nav; } // draw the dropdown containing a list of available actions for this form draw_actions_dropdown($actions); form_end(); }