1<?php
2/**
3 * Manage link administration actions.
4 *
5 * This page is accessed by the link management pages and handles the forms and
6 * Ajax processes for link actions.
7 *
8 * @package WordPress
9 * @subpackage Administration
10 */
11
12/** Load WordPress Administration Bootstrap */
13require_once __DIR__ . '/admin.php';
14
15$action = ! empty( $_REQUEST['action'] ) ? sanitize_text_field( $_REQUEST['action'] ) : '';
16$cat_id = ! empty( $_REQUEST['cat_id'] ) ? absint( $_REQUEST['cat_id'] ) : 0;
17$link_id = ! empty( $_REQUEST['link_id'] ) ? absint( $_REQUEST['link_id'] ) : 0;
18
19if ( ! current_user_can( 'manage_links' ) ) {
20 wp_link_manager_disabled_message();
21}
22
23if ( ! empty( $_POST['deletebookmarks'] ) ) {
24 $action = 'deletebookmarks';
25}
26if ( ! empty( $_POST['move'] ) ) {
27 $action = 'move';
28}
29if ( ! empty( $_POST['linkcheck'] ) ) {
30 $linkcheck = $_POST['linkcheck'];
31}
32
33$this_file = admin_url( 'link-manager.php' );
34
35switch ( $action ) {
36 case 'deletebookmarks':
37 check_admin_referer( 'bulk-bookmarks' );
38
39 // For each link id (in $linkcheck[]) change category to selected value.
40 if ( count( $linkcheck ) === 0 ) {
41 wp_redirect( $this_file );
42 exit;
43 }
44
45 $deleted = 0;
46 foreach ( $linkcheck as $link_id ) {
47 $link_id = (int) $link_id;
48
49 if ( wp_delete_link( $link_id ) ) {
50 ++$deleted;
51 }
52 }
53
54 wp_redirect( "$this_file?deleted=$deleted" );
55 exit;
56
57 case 'move':
58 check_admin_referer( 'bulk-bookmarks' );
59
60 // For each link id (in $linkcheck[]) change category to selected value.
61 if ( count( $linkcheck ) === 0 ) {
62 wp_redirect( $this_file );
63 exit;
64 }
65 $all_links = implode( ',', $linkcheck );
66 /*
67 * Should now have an array of links we can change:
68 * $q = $wpdb->query("update $wpdb->links SET link_category='$category' WHERE link_id IN ($all_links)");
69 */
70
71 wp_redirect( $this_file );
72 exit;
73
74 case 'add':
75 check_admin_referer( 'add-bookmark' );
76
77 $redir = wp_get_referer();
78 if ( add_link() ) {
79 $redir = add_query_arg( 'added', 'true', $redir );
80 }
81
82 wp_redirect( $redir );
83 exit;
84
85 case 'save':
86 $link_id = (int) $_POST['link_id'];
87 check_admin_referer( 'update-bookmark_' . $link_id );
88
89 edit_link( $link_id );
90
91 wp_redirect( $this_file );
92 exit;
93
94 case 'delete':
95 $link_id = (int) $_GET['link_id'];
96 check_admin_referer( 'delete-bookmark_' . $link_id );
97
98 wp_delete_link( $link_id );
99
100 wp_redirect( $this_file );
101 exit;
102
103 case 'edit':
104 wp_enqueue_script( 'link' );
105 wp_enqueue_script( 'xfn' );
106
107 if ( wp_is_mobile() ) {
108 wp_enqueue_script( 'jquery-touch-punch' );
109 }
110
111 $parent_file = 'link-manager.php';
112 $submenu_file = 'link-manager.php';
113 // Used in the HTML title tag.
114 $title = __( 'Edit Link' );
115
116 $link_id = (int) $_GET['link_id'];
117
118 $link = get_link_to_edit( $link_id );
119 if ( ! $link ) {
120 wp_die( __( 'Link not found.' ) );
121 }
122
123 require ABSPATH . 'wp-admin/edit-link-form.php';
124 require_once ABSPATH . 'wp-admin/admin-footer.php';
125 break;
126
127 default:
128 break;
129}
130