web/wp-admin/includes/bookmark.php
changeset 194 32102edaa81b
parent 136 bde1974c263b
child 204 09a1c134465b
equal deleted inserted replaced
193:2f6f6f7551ca 194:32102edaa81b
     5  * @package WordPress
     5  * @package WordPress
     6  * @subpackage Administration
     6  * @subpackage Administration
     7  */
     7  */
     8 
     8 
     9 /**
     9 /**
    10  * {@internal Missing Short Description}}
    10  * Add a link to using values provided in $_POST.
    11  *
    11  *
    12  * @since unknown
    12  * @since 2.0.0
    13  *
    13  *
    14  * @return unknown
    14  * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
    15  */
    15  */
    16 function add_link() {
    16 function add_link() {
    17 	return edit_link();
    17 	return edit_link();
    18 }
    18 }
    19 
    19 
    20 /**
    20 /**
    21  * {@internal Missing Short Description}}
    21  * Update or insert a link using values provided in $_POST.
    22  *
    22  *
    23  * @since unknown
    23  * @since 2.0.0
    24  *
    24  *
    25  * @param unknown_type $link_id
    25  * @param int $link_id Optional. ID of the link to edit.
    26  * @return unknown
    26  * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
    27  */
    27  */
    28 function edit_link( $link_id = '' ) {
    28 function edit_link( $link_id = 0 ) {
    29 	if (!current_user_can( 'manage_links' ))
    29 	if ( !current_user_can( 'manage_links' ) )
    30 		wp_die( __( 'Cheatin’ uh?' ));
    30 		wp_die( __( 'Cheatin’ uh?' ) );
    31 
    31 
    32 	$_POST['link_url'] = esc_html( $_POST['link_url'] );
    32 	$_POST['link_url'] = esc_html( $_POST['link_url'] );
    33 	$_POST['link_url'] = esc_url($_POST['link_url']);
    33 	$_POST['link_url'] = esc_url($_POST['link_url']);
    34 	$_POST['link_name'] = esc_html( $_POST['link_name'] );
    34 	$_POST['link_name'] = esc_html( $_POST['link_name'] );
    35 	$_POST['link_image'] = esc_html( $_POST['link_image'] );
    35 	$_POST['link_image'] = esc_html( $_POST['link_image'] );
    37 	if ( !isset($_POST['link_visible']) || 'N' != $_POST['link_visible'] )
    37 	if ( !isset($_POST['link_visible']) || 'N' != $_POST['link_visible'] )
    38 		$_POST['link_visible'] = 'Y';
    38 		$_POST['link_visible'] = 'Y';
    39 
    39 
    40 	if ( !empty( $link_id ) ) {
    40 	if ( !empty( $link_id ) ) {
    41 		$_POST['link_id'] = $link_id;
    41 		$_POST['link_id'] = $link_id;
    42 		return wp_update_link( $_POST);
    42 		return wp_update_link( $_POST );
    43 	} else {
    43 	} else {
    44 		return wp_insert_link( $_POST);
    44 		return wp_insert_link( $_POST );
    45 	}
    45 	}
    46 }
    46 }
    47 
    47 
    48 /**
    48 /**
    49  * {@internal Missing Short Description}}
    49  * Retrieve the default link for editing.
    50  *
    50  *
    51  * @since unknown
    51  * @since 2.0.0
    52  *
    52  *
    53  * @return unknown
    53  * @return object Default link
    54  */
    54  */
    55 function get_default_link_to_edit() {
    55 function get_default_link_to_edit() {
       
    56 	$link = new stdClass;
    56 	if ( isset( $_GET['linkurl'] ) )
    57 	if ( isset( $_GET['linkurl'] ) )
    57 		$link->link_url = esc_url( $_GET['linkurl']);
    58 		$link->link_url = esc_url( $_GET['linkurl'] );
    58 	else
    59 	else
    59 		$link->link_url = '';
    60 		$link->link_url = '';
    60 
    61 
    61 	if ( isset( $_GET['name'] ) )
    62 	if ( isset( $_GET['name'] ) )
    62 		$link->link_name = esc_attr( $_GET['name']);
    63 		$link->link_name = esc_attr( $_GET['name'] );
    63 	else
    64 	else
    64 		$link->link_name = '';
    65 		$link->link_name = '';
    65 
    66 
    66 	$link->link_visible = 'Y';
    67 	$link->link_visible = 'Y';
    67 
    68 
    68 	return $link;
    69 	return $link;
    69 }
    70 }
    70 
    71 
    71 /**
    72 /**
    72  * {@internal Missing Short Description}}
    73  * Delete link specified from database
    73  *
    74  *
    74  * @since unknown
    75  * @since 2.0.0
    75  *
    76  *
    76  * @param unknown_type $link_id
    77  * @param int $link_id ID of the link to delete
    77  * @return unknown
    78  * @return bool True
    78  */
    79  */
    79 function wp_delete_link( $link_id ) {
    80 function wp_delete_link( $link_id ) {
    80 	global $wpdb;
    81 	global $wpdb;
    81 
    82 
    82 	do_action( 'delete_link', $link_id );
    83 	do_action( 'delete_link', $link_id );
    83 
    84 
    84 	wp_delete_object_term_relationships( $link_id, 'link_category' );
    85 	wp_delete_object_term_relationships( $link_id, 'link_category' );
    85 
    86 
    86 	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->links WHERE link_id = %d", $link_id ) );
    87 	$wpdb->delete( $wpdb->links, array( 'link_id' => $link_id ) );
    87 
    88 
    88 	do_action( 'deleted_link', $link_id );
    89 	do_action( 'deleted_link', $link_id );
    89 
    90 
    90 	clean_bookmark_cache( $link_id );
    91 	clean_bookmark_cache( $link_id );
    91 
    92 
    92 	return true;
    93 	return true;
    93 }
    94 }
    94 
    95 
    95 /**
    96 /**
    96  * {@internal Missing Short Description}}
    97  * Retrieves the link categories associated with the link specified.
    97  *
    98  *
    98  * @since unknown
    99  * @since 2.1.0
    99  *
   100  *
   100  * @param unknown_type $link_id
   101  * @param int $link_id Link ID to look up
   101  * @return unknown
   102  * @return array The requested link's categories
   102  */
   103  */
   103 function wp_get_link_cats( $link_id = 0 ) {
   104 function wp_get_link_cats( $link_id = 0 ) {
   104 
   105 
   105 	$cats = wp_get_object_terms( $link_id, 'link_category', 'fields=ids' );
   106 	$cats = wp_get_object_terms( $link_id, 'link_category', array('fields' => 'ids') );
   106 
   107 
   107 	return array_unique( $cats );
   108 	return array_unique( $cats );
   108 }
   109 }
   109 
   110 
   110 /**
   111 /**
   111  * {@internal Missing Short Description}}
   112  * Retrieve link data based on ID.
   112  *
   113  *
   113  * @since unknown
   114  * @since 2.0.0
   114  *
   115  *
   115  * @param unknown_type $link_id
   116  * @param int $link_id ID of link to retrieve
   116  * @return unknown
   117  * @return object Link for editing
   117  */
   118  */
   118 function get_link_to_edit( $link_id ) {
   119 function get_link_to_edit( $link_id ) {
   119 	return get_bookmark( $link_id, OBJECT, 'edit' );
   120 	return get_bookmark( $link_id, OBJECT, 'edit' );
   120 }
   121 }
   121 
   122 
   122 /**
   123 /**
   123  * {@internal Missing Short Description}}
   124  * This function inserts/updates links into/in the database.
   124  *
   125  *
   125  * @since unknown
   126  * @since 2.0.0
   126  *
   127  *
   127  * @param unknown_type $linkdata
   128  * @param array $linkdata Elements that make up the link to insert.
   128  * @return unknown
   129  * @param bool $wp_error Optional. If true return WP_Error object on failure.
       
   130  * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
   129  */
   131  */
   130 function wp_insert_link( $linkdata, $wp_error = false ) {
   132 function wp_insert_link( $linkdata, $wp_error = false ) {
   131 	global $wpdb, $current_user;
   133 	global $wpdb;
   132 
   134 
   133 	$defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 );
   135 	$defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 );
   134 
   136 
   135 	$linkdata = wp_parse_args( $linkdata, $defaults );
   137 	$linkdata = wp_parse_args( $linkdata, $defaults );
   136 	$linkdata = sanitize_bookmark( $linkdata, 'db' );
   138 	$linkdata = sanitize_bookmark( $linkdata, 'db' );
   164 
   166 
   165 	if ( empty( $link_visible ) )
   167 	if ( empty( $link_visible ) )
   166 		$link_visible = 'Y';
   168 		$link_visible = 'Y';
   167 
   169 
   168 	if ( empty( $link_owner ) )
   170 	if ( empty( $link_owner ) )
   169 		$link_owner = $current_user->id;
   171 		$link_owner = get_current_user_id();
   170 
   172 
   171 	if ( empty( $link_notes ) )
   173 	if ( empty( $link_notes ) )
   172 		$link_notes = '';
   174 		$link_notes = '';
   173 
   175 
   174 	if ( empty( $link_description ) )
   176 	if ( empty( $link_description ) )
   179 
   181 
   180 	if ( empty( $link_rel ) )
   182 	if ( empty( $link_rel ) )
   181 		$link_rel = '';
   183 		$link_rel = '';
   182 
   184 
   183 	// Make sure we set a valid category
   185 	// Make sure we set a valid category
   184 	if ( ! isset( $link_category ) ||0 == count( $link_category ) || !is_array( $link_category ) ) {
   186 	if ( ! isset( $link_category ) || 0 == count( $link_category ) || !is_array( $link_category ) ) {
   185 		$link_category = array( get_option( 'default_link_category' ) );
   187 		$link_category = array( get_option( 'default_link_category' ) );
   186 	}
   188 	}
   187 
   189 
   188 	if ( $update ) {
   190 	if ( $update ) {
   189 		if ( false === $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->links SET link_url = %s,
   191 		if ( false === $wpdb->update( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id') ) ) {
   190 			link_name = %s, link_image = %s, link_target = %s,
       
   191 			link_visible = %s, link_description = %s, link_rating = %s,
       
   192 			link_rel = %s, link_notes = %s, link_rss = %s
       
   193 			WHERE link_id = %s", $link_url, $link_name, $link_image, $link_target, $link_visible, $link_description, $link_rating, $link_rel, $link_notes, $link_rss, $link_id ) ) ) {
       
   194 			if ( $wp_error )
   192 			if ( $wp_error )
   195 				return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error );
   193 				return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error );
   196 			else
   194 			else
   197 				return 0;
   195 				return 0;
   198 		}
   196 		}
   199 	} else {
   197 	} else {
   200 		if ( false === $wpdb->query( $wpdb->prepare( "INSERT INTO $wpdb->links (link_url, link_name, link_image, link_target, link_description, link_visible, link_owner, link_rating, link_rel, link_notes, link_rss) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
   198 		if ( false === $wpdb->insert( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss') ) ) {
   201 		$link_url,$link_name, $link_image, $link_target, $link_description, $link_visible, $link_owner, $link_rating, $link_rel, $link_notes, $link_rss ) ) ) {
       
   202 			if ( $wp_error )
   199 			if ( $wp_error )
   203 				return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error );
   200 				return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error );
   204 			else
   201 			else
   205 				return 0;
   202 				return 0;
   206 		}
   203 		}
   218 
   215 
   219 	return $link_id;
   216 	return $link_id;
   220 }
   217 }
   221 
   218 
   222 /**
   219 /**
   223  * {@internal Missing Short Description}}
   220  * Update link with the specified link categories.
   224  *
   221  *
   225  * @since unknown
   222  * @since 2.1.0
   226  *
   223  *
   227  * @param unknown_type $link_id
   224  * @param int $link_id ID of link to update
   228  * @param unknown_type $link_categories
   225  * @param array $link_categories Array of categories to
   229  */
   226  */
   230 function wp_set_link_cats( $link_id = 0, $link_categories = array() ) {
   227 function wp_set_link_cats( $link_id = 0, $link_categories = array() ) {
   231 	// If $link_categories isn't already an array, make it one:
   228 	// If $link_categories isn't already an array, make it one:
   232 	if ( !is_array( $link_categories ) || 0 == count( $link_categories ) )
   229 	if ( !is_array( $link_categories ) || 0 == count( $link_categories ) )
   233 		$link_categories = array( get_option( 'default_link_category' ) );
   230 		$link_categories = array( get_option( 'default_link_category' ) );
   236 	$link_categories = array_unique( $link_categories );
   233 	$link_categories = array_unique( $link_categories );
   237 
   234 
   238 	wp_set_object_terms( $link_id, $link_categories, 'link_category' );
   235 	wp_set_object_terms( $link_id, $link_categories, 'link_category' );
   239 
   236 
   240 	clean_bookmark_cache( $link_id );
   237 	clean_bookmark_cache( $link_id );
   241 }	// wp_set_link_cats()
   238 }
   242 
   239 
   243 /**
   240 /**
   244  * {@internal Missing Short Description}}
   241  * Update a link in the database.
   245  *
   242  *
   246  * @since unknown
   243  * @since 2.0.0
   247  *
   244  *
   248  * @param unknown_type $linkdata
   245  * @param array $linkdata Link data to update.
   249  * @return unknown
   246  * @return int|WP_Error Value 0 or WP_Error on failure. The updated link ID on success.
   250  */
   247  */
   251 function wp_update_link( $linkdata ) {
   248 function wp_update_link( $linkdata ) {
   252 	$link_id = (int) $linkdata['link_id'];
   249 	$link_id = (int) $linkdata['link_id'];
   253 
   250 
   254 	$link = get_link( $link_id, ARRAY_A );
   251 	$link = get_bookmark( $link_id, ARRAY_A );
   255 
   252 
   256 	// Escape data pulled from DB.
   253 	// Escape data pulled from DB.
   257 	$link = add_magic_quotes( $link );
   254 	$link = add_magic_quotes( $link );
   258 
   255 
   259 	// Passed link category list overwrites existing category list if not empty.
   256 	// Passed link category list overwrites existing category list if not empty.
   267 	$linkdata = array_merge( $link, $linkdata );
   264 	$linkdata = array_merge( $link, $linkdata );
   268 	$linkdata['link_category'] = $link_cats;
   265 	$linkdata['link_category'] = $link_cats;
   269 
   266 
   270 	return wp_insert_link( $linkdata );
   267 	return wp_insert_link( $linkdata );
   271 }
   268 }
   272 
       
   273 ?>