web/wp-admin/includes/bookmark.php
branchwordpress
changeset 109 03b0d1493584
child 132 4d4862461b8d
equal deleted inserted replaced
-1:000000000000 109:03b0d1493584
       
     1 <?php
       
     2 /**
       
     3  * WordPress Bookmark Administration API
       
     4  *
       
     5  * @package WordPress
       
     6  * @subpackage Administration
       
     7  */
       
     8 
       
     9 /**
       
    10  * {@internal Missing Short Description}}
       
    11  *
       
    12  * @since unknown
       
    13  *
       
    14  * @return unknown
       
    15  */
       
    16 function add_link() {
       
    17 	return edit_link();
       
    18 }
       
    19 
       
    20 /**
       
    21  * {@internal Missing Short Description}}
       
    22  *
       
    23  * @since unknown
       
    24  *
       
    25  * @param unknown_type $link_id
       
    26  * @return unknown
       
    27  */
       
    28 function edit_link( $link_id = '' ) {
       
    29 	if (!current_user_can( 'manage_links' ))
       
    30 		wp_die( __( 'Cheatin&#8217; uh?' ));
       
    31 
       
    32 	$_POST['link_url'] = esc_html( $_POST['link_url'] );
       
    33 	$_POST['link_url'] = esc_url($_POST['link_url']);
       
    34 	$_POST['link_name'] = esc_html( $_POST['link_name'] );
       
    35 	$_POST['link_image'] = esc_html( $_POST['link_image'] );
       
    36 	$_POST['link_rss'] = esc_url($_POST['link_rss']);
       
    37 	if ( !isset($_POST['link_visible']) || 'N' != $_POST['link_visible'] )
       
    38 		$_POST['link_visible'] = 'Y';
       
    39 
       
    40 	if ( !empty( $link_id ) ) {
       
    41 		$_POST['link_id'] = $link_id;
       
    42 		return wp_update_link( $_POST);
       
    43 	} else {
       
    44 		return wp_insert_link( $_POST);
       
    45 	}
       
    46 }
       
    47 
       
    48 /**
       
    49  * {@internal Missing Short Description}}
       
    50  *
       
    51  * @since unknown
       
    52  *
       
    53  * @return unknown
       
    54  */
       
    55 function get_default_link_to_edit() {
       
    56 	if ( isset( $_GET['linkurl'] ) )
       
    57 		$link->link_url = esc_url( $_GET['linkurl']);
       
    58 	else
       
    59 		$link->link_url = '';
       
    60 
       
    61 	if ( isset( $_GET['name'] ) )
       
    62 		$link->link_name = esc_attr( $_GET['name']);
       
    63 	else
       
    64 		$link->link_name = '';
       
    65 
       
    66 	$link->link_visible = 'Y';
       
    67 
       
    68 	return $link;
       
    69 }
       
    70 
       
    71 /**
       
    72  * {@internal Missing Short Description}}
       
    73  *
       
    74  * @since unknown
       
    75  *
       
    76  * @param unknown_type $link_id
       
    77  * @return unknown
       
    78  */
       
    79 function wp_delete_link( $link_id ) {
       
    80 	global $wpdb;
       
    81 
       
    82 	do_action( 'delete_link', $link_id );
       
    83 
       
    84 	wp_delete_object_term_relationships( $link_id, 'link_category' );
       
    85 
       
    86 	$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->links WHERE link_id = %d", $link_id ) );
       
    87 
       
    88 	do_action( 'deleted_link', $link_id );
       
    89 
       
    90 	clean_bookmark_cache( $link_id );
       
    91 
       
    92 	return true;
       
    93 }
       
    94 
       
    95 /**
       
    96  * {@internal Missing Short Description}}
       
    97  *
       
    98  * @since unknown
       
    99  *
       
   100  * @param unknown_type $link_id
       
   101  * @return unknown
       
   102  */
       
   103 function wp_get_link_cats( $link_id = 0 ) {
       
   104 
       
   105 	$cats = wp_get_object_terms( $link_id, 'link_category', 'fields=ids' );
       
   106 
       
   107 	return array_unique( $cats );
       
   108 }
       
   109 
       
   110 /**
       
   111  * {@internal Missing Short Description}}
       
   112  *
       
   113  * @since unknown
       
   114  *
       
   115  * @param unknown_type $link_id
       
   116  * @return unknown
       
   117  */
       
   118 function get_link_to_edit( $link_id ) {
       
   119 	return get_bookmark( $link_id, OBJECT, 'edit' );
       
   120 }
       
   121 
       
   122 /**
       
   123  * {@internal Missing Short Description}}
       
   124  *
       
   125  * @since unknown
       
   126  *
       
   127  * @param unknown_type $linkdata
       
   128  * @return unknown
       
   129  */
       
   130 function wp_insert_link( $linkdata, $wp_error = false ) {
       
   131 	global $wpdb, $current_user;
       
   132 
       
   133 	$defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 );
       
   134 
       
   135 	$linkdata = wp_parse_args( $linkdata, $defaults );
       
   136 	$linkdata = sanitize_bookmark( $linkdata, 'db' );
       
   137 
       
   138 	extract( stripslashes_deep( $linkdata ), EXTR_SKIP );
       
   139 
       
   140 	$update = false;
       
   141 
       
   142 	if ( !empty( $link_id ) )
       
   143 		$update = true;
       
   144 
       
   145 	if ( trim( $link_name ) == '' ) {
       
   146 		if ( trim( $link_url ) != '' ) {
       
   147 			$link_name = $link_url;
       
   148 		} else {
       
   149 			return 0;
       
   150 		}
       
   151 	}
       
   152 
       
   153 	if ( trim( $link_url ) == '' )
       
   154 		return 0;
       
   155 
       
   156 	if ( empty( $link_rating ) )
       
   157 		$link_rating = 0;
       
   158 
       
   159 	if ( empty( $link_image ) )
       
   160 		$link_image = '';
       
   161 
       
   162 	if ( empty( $link_target ) )
       
   163 		$link_target = '';
       
   164 
       
   165 	if ( empty( $link_visible ) )
       
   166 		$link_visible = 'Y';
       
   167 
       
   168 	if ( empty( $link_owner ) )
       
   169 		$link_owner = $current_user->id;
       
   170 
       
   171 	if ( empty( $link_notes ) )
       
   172 		$link_notes = '';
       
   173 
       
   174 	if ( empty( $link_description ) )
       
   175 		$link_description = '';
       
   176 
       
   177 	if ( empty( $link_rss ) )
       
   178 		$link_rss = '';
       
   179 
       
   180 	if ( empty( $link_rel ) )
       
   181 		$link_rel = '';
       
   182 
       
   183 	// Make sure we set a valid category
       
   184 	if ( ! isset( $link_category ) ||0 == count( $link_category ) || !is_array( $link_category ) ) {
       
   185 		$link_category = array( get_option( 'default_link_category' ) );
       
   186 	}
       
   187 
       
   188 	if ( $update ) {
       
   189 		if ( false === $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->links SET link_url = %s,
       
   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 )
       
   195 				return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error );
       
   196 			else
       
   197 				return 0;
       
   198 		}
       
   199 	} 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)",
       
   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 )
       
   203 				return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error );
       
   204 			else
       
   205 				return 0;
       
   206 		}
       
   207 		$link_id = (int) $wpdb->insert_id;
       
   208 	}
       
   209 
       
   210 	wp_set_link_cats( $link_id, $link_category );
       
   211 
       
   212 	if ( $update )
       
   213 		do_action( 'edit_link', $link_id );
       
   214 	else
       
   215 		do_action( 'add_link', $link_id );
       
   216 
       
   217 	clean_bookmark_cache( $link_id );
       
   218 
       
   219 	return $link_id;
       
   220 }
       
   221 
       
   222 /**
       
   223  * {@internal Missing Short Description}}
       
   224  *
       
   225  * @since unknown
       
   226  *
       
   227  * @param unknown_type $link_id
       
   228  * @param unknown_type $link_categories
       
   229  */
       
   230 function wp_set_link_cats( $link_id = 0, $link_categories = array() ) {
       
   231 	// If $link_categories isn't already an array, make it one:
       
   232 	if ( !is_array( $link_categories ) || 0 == count( $link_categories ) )
       
   233 		$link_categories = array( get_option( 'default_link_category' ) );
       
   234 
       
   235 	$link_categories = array_map( 'intval', $link_categories );
       
   236 	$link_categories = array_unique( $link_categories );
       
   237 
       
   238 	wp_set_object_terms( $link_id, $link_categories, 'link_category' );
       
   239 
       
   240 	clean_bookmark_cache( $link_id );
       
   241 }	// wp_set_link_cats()
       
   242 
       
   243 /**
       
   244  * {@internal Missing Short Description}}
       
   245  *
       
   246  * @since unknown
       
   247  *
       
   248  * @param unknown_type $linkdata
       
   249  * @return unknown
       
   250  */
       
   251 function wp_update_link( $linkdata ) {
       
   252 	$link_id = (int) $linkdata['link_id'];
       
   253 
       
   254 	$link = get_link( $link_id, ARRAY_A );
       
   255 
       
   256 	// Escape data pulled from DB.
       
   257 	$link = add_magic_quotes( $link );
       
   258 
       
   259 	// Passed link category list overwrites existing category list if not empty.
       
   260 	if ( isset( $linkdata['link_category'] ) && is_array( $linkdata['link_category'] )
       
   261 			 && 0 != count( $linkdata['link_category'] ) )
       
   262 		$link_cats = $linkdata['link_category'];
       
   263 	else
       
   264 		$link_cats = $link['link_category'];
       
   265 
       
   266 	// Merge old and new fields with new fields overwriting old ones.
       
   267 	$linkdata = array_merge( $link, $linkdata );
       
   268 	$linkdata['link_category'] = $link_cats;
       
   269 
       
   270 	return wp_insert_link( $linkdata );
       
   271 }
       
   272 
       
   273 ?>