예제 #1
0
/**
 * Retrieve Bookmark data based on ID
 *
 * @since 2.1.0
 * @uses $wpdb Database Object
 *
 * @param int $bookmark_id
 * @param string $output Optional. Either OBJECT, ARRAY_N, or ARRAY_A constant
 * @param string $filter Optional, default is 'raw'.
 * @return array|object Type returned depends on $output value.
 */
function get_bookmark($bookmark, $output = OBJECT, $filter = 'raw')
{
    global $wpdb;
    if (empty($bookmark)) {
        if (isset($GLOBALS['link'])) {
            $_bookmark =& $GLOBALS['link'];
        } else {
            $_bookmark = null;
        }
    } elseif (is_object($bookmark)) {
        wp_cache_add($bookmark->link_id, $bookmark, 'bookmark');
        $_bookmark = $bookmark;
    } else {
        if (isset($GLOBALS['link']) && $GLOBALS['link']->link_id == $bookmark) {
            $_bookmark =& $GLOBALS['link'];
        } elseif (!($_bookmark = wp_cache_get($bookmark, 'bookmark'))) {
            $_bookmark = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->links} WHERE link_id = %d LIMIT 1", $bookmark));
            $_bookmark->link_category = array_unique(wp_get_object_terms($_bookmark->link_id, 'link_category', 'fields=ids'));
            wp_cache_add($_bookmark->link_id, $_bookmark, 'bookmark');
        }
    }
    $_bookmark = sanitize_bookmark($_bookmark, $filter);
    if ($output == OBJECT) {
        return $_bookmark;
    } elseif ($output == ARRAY_A) {
        return get_object_vars($_bookmark);
    } elseif ($output == ARRAY_N) {
        return array_values(get_object_vars($_bookmark));
    } else {
        return $_bookmark;
    }
}
예제 #2
0
/**
 * Retrieve Bookmark data based on ID
 *
 * @since 2.1
 * @uses $wpdb Database Object
 *
 * @param int $bookmark_id
 * @param string $output Optional. Either OBJECT, ARRAY_N, or ARRAY_A constant
 * @param string $filter Optional, default is 'raw'.
 * @return array|object Type returned depends on $output value.
 */
function get_bookmark($bookmark_id, $output = OBJECT, $filter = 'raw')
{
    global $wpdb;
    $link = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->links} WHERE link_id = %d LIMIT 1", $bookmark_id));
    $link->link_category = array_unique(wp_get_object_terms($link->link_id, 'link_category', 'fields=ids'));
    $link = sanitize_bookmark($link, $filter);
    if ($output == OBJECT) {
        return $link;
    } elseif ($output == ARRAY_A) {
        return get_object_vars($link);
    } elseif ($output == ARRAY_N) {
        return array_values(get_object_vars($link));
    } else {
        return $link;
    }
}
예제 #3
0
	</tr>
	</thead>

	<tfoot>
	<tr>
<?php 
    print_column_headers('link-manager', false);
    ?>
	</tr>
	</tfoot>

	<tbody>
<?php 
    $alt = 0;
    foreach ($links as $link) {
        $link = sanitize_bookmark($link);
        $link->link_name = esc_attr($link->link_name);
        $link->link_category = wp_get_link_cats($link->link_id);
        $short_url = str_replace('http://', '', $link->link_url);
        $short_url = preg_replace('/^www\\./i', '', $short_url);
        if ('/' == substr($short_url, -1)) {
            $short_url = substr($short_url, 0, -1);
        }
        if (strlen($short_url) > 35) {
            $short_url = substr($short_url, 0, 32) . '...';
        }
        $visible = $link->link_visible == 'Y' ? __('Yes') : __('No');
        $rating = $link->link_rating;
        $style = $alt % 2 ? '' : ' class="alternate"';
        ++$alt;
        $edit_link = get_edit_bookmark_link();
예제 #4
0
 function link_library_insert_link($linkdata, $wp_error = false, $addlinknoaddress = false)
 {
     global $wpdb;
     $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
     $linkdata = wp_parse_args($linkdata, $defaults);
     $linkdata = sanitize_bookmark($linkdata, 'db');
     extract(stripslashes_deep($linkdata), EXTR_SKIP);
     $update = false;
     if (!empty($link_id)) {
         $update = true;
     }
     if (isset($link_name) && trim($link_name) == '') {
         if (isset($link_url) && trim($link_url) != '') {
             $link_name = $link_url;
         } else {
             return 0;
         }
     }
     if ($addlinknoaddress == false) {
         if (trim($link_url) == '') {
             return 0;
         }
     }
     if (empty($link_rating)) {
         $link_rating = 0;
     }
     if (empty($link_image)) {
         $link_image = '';
     }
     if (empty($link_target)) {
         $link_target = '';
     }
     if (empty($link_visible)) {
         $link_visible = 'Y';
     }
     if (empty($link_owner)) {
         $link_owner = get_current_user_id();
     }
     if (empty($link_notes)) {
         $link_notes = '';
     }
     if (empty($link_description)) {
         $link_description = '';
     }
     if (empty($link_rss)) {
         $link_rss = '';
     }
     if (empty($link_rel)) {
         $link_rel = '';
     }
     // Make sure we set a valid category
     if (!isset($link_category) || 0 == count($link_category) || !is_array($link_category)) {
         $link_category = array(get_option('default_link_category'));
     }
     if ($update) {
         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'))) {
             if ($wp_error) {
                 return new WP_Error('db_update_error', __('Could not update link in the database', 'link-library'), $wpdb->last_error);
             } else {
                 return 0;
             }
         }
     } else {
         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'))) {
             if ($wp_error) {
                 return new WP_Error('db_insert_error', __('Could not insert link into the database', 'link-library'), $wpdb->last_error);
             } else {
                 return 0;
             }
         }
         $link_id = (int) $wpdb->insert_id;
     }
     wp_set_link_cats($link_id, $link_category);
     if ($update) {
         do_action('edit_link', $link_id);
     } else {
         do_action('add_link', $link_id);
     }
     clean_bookmark_cache($link_id);
     return $link_id;
 }
    public function display_rows()
    {
        foreach ($this->items as $link) {
            $link = sanitize_bookmark($link);
            $link->link_name = esc_attr($link->link_name);
            $link->link_category = wp_get_link_cats($link->link_id);
            ?>
		<tr id="link-<?php 
            echo $link->link_id;
            ?>
">
			<?php 
            $this->single_row_columns($link);
            ?>
		</tr>
<?php 
        }
    }
예제 #6
0
    function display_rows()
    {
        global $cat_id;
        $alt = 0;
        foreach ($this->items as $link) {
            $link = sanitize_bookmark($link);
            $link->link_name = esc_attr($link->link_name);
            $link->link_category = wp_get_link_cats($link->link_id);
            $short_url = url_shorten($link->link_url);
            $visible = $link->link_visible == 'Y' ? __('Yes') : __('No');
            $rating = $link->link_rating;
            $style = $alt++ % 2 ? '' : ' class="alternate"';
            $edit_link = get_edit_bookmark_link($link);
            ?>
		<tr id="link-<?php 
            echo $link->link_id;
            ?>
" valign="middle" <?php 
            echo $style;
            ?>
>
<?php 
            list($columns, $hidden) = $this->get_column_info();
            foreach ($columns as $column_name => $column_display_name) {
                $class = "class='column-{$column_name}'";
                $style = '';
                if (in_array($column_name, $hidden)) {
                    $style = ' style="display:none;"';
                }
                $attributes = $class . $style;
                switch ($column_name) {
                    case 'cb':
                        ?>
						<th scope="row" class="check-column">
							<label class="screen-reader-text" for="cb-select-<?php 
                        echo $link->link_id;
                        ?>
"><?php 
                        echo sprintf(__('Select %s'), $link->link_name);
                        ?>
</label>
							<input type="checkbox" name="linkcheck[]" id="cb-select-<?php 
                        echo $link->link_id;
                        ?>
" value="<?php 
                        echo esc_attr($link->link_id);
                        ?>
" />
						</th>
						<?php 
                        break;
                    case 'name':
                        echo "<td {$attributes}><strong><a class='row-title' href='{$edit_link}' title='" . esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $link->link_name)) . "'>{$link->link_name}</a></strong><br />";
                        $actions = array();
                        $actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
                        $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("link.php?action=delete&amp;link_id={$link->link_id}", 'delete-bookmark_' . $link->link_id) . "' onclick=\"if ( confirm( '" . esc_js(sprintf(__("You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete."), $link->link_name)) . "' ) ) { return true;}return false;\">" . __('Delete') . "</a>";
                        echo $this->row_actions($actions);
                        echo '</td>';
                        break;
                    case 'url':
                        echo "<td {$attributes}><a href='{$link->link_url}' title='" . esc_attr(sprintf(__('Visit %s'), $link->link_name)) . "'>{$short_url}</a></td>";
                        break;
                    case 'categories':
                        ?>
<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        $cat_names = array();
                        foreach ($link->link_category as $category) {
                            $cat = get_term($category, 'link_category', OBJECT, 'display');
                            if (is_wp_error($cat)) {
                                echo $cat->get_error_message();
                            }
                            $cat_name = $cat->name;
                            if ($cat_id != $category) {
                                $cat_name = "<a href='link-manager.php?cat_id={$category}'>{$cat_name}</a>";
                            }
                            $cat_names[] = $cat_name;
                        }
                        echo implode(', ', $cat_names);
                        ?>
</td><?php 
                        break;
                    case 'rel':
                        ?>
<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        echo empty($link->link_rel) ? '<br />' : $link->link_rel;
                        ?>
</td><?php 
                        break;
                    case 'visible':
                        ?>
<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        echo $visible;
                        ?>
</td><?php 
                        break;
                    case 'rating':
                        ?>
<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        echo $rating;
                        ?>
</td><?php 
                        break;
                    default:
                        /**
                         * Fires for each registered custom link column.
                         *
                         * @since 2.1.0
                         *
                         * @param string $column_name Name of the custom column.
                         * @param int    $link_id     Link ID.
                         */
                        ?>
						<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        do_action('manage_link_custom_column', $column_name, $link->link_id);
                        ?>
</td>
						<?php 
                        break;
                }
            }
            ?>
		</tr>
<?php 
        }
    }
/**
 * {@internal Missing Short Description}}
 *
 * @since unknown
 *
 * @param unknown_type $linkdata
 * @return unknown
 */
function wp_insert_link( $linkdata, $wp_error = false ) {
	global $wpdb, $current_user;

	$defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 );

	$linkdata = wp_parse_args( $linkdata, $defaults );
	$linkdata = sanitize_bookmark( $linkdata, 'db' );

	extract( stripslashes_deep( $linkdata ), EXTR_SKIP );

	$update = false;

	if ( !empty( $link_id ) )
		$update = true;

	if ( trim( $link_name ) == '' )
		return 0;

	if ( trim( $link_url ) == '' )
		return 0;

	if ( empty( $link_rating ) )
		$link_rating = 0;

	if ( empty( $link_image ) )
		$link_image = '';

	if ( empty( $link_target ) )
		$link_target = '';

	if ( empty( $link_visible ) )
		$link_visible = 'Y';

	if ( empty( $link_owner ) )
		$link_owner = $current_user->id;

	if ( empty( $link_notes ) )
		$link_notes = '';

	if ( empty( $link_description ) )
		$link_description = '';

	if ( empty( $link_rss ) )
		$link_rss = '';

	if ( empty( $link_rel ) )
		$link_rel = '';

	// Make sure we set a valid category
	if ( ! isset( $link_category ) ||0 == count( $link_category ) || !is_array( $link_category ) ) {
		$link_category = array( get_option( 'default_link_category' ) );
	}

	if ( $update ) {
		if ( false === $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->links SET link_url = %s,
			link_name = %s, link_image = %s, link_target = %s,
			link_visible = %s, link_description = %s, link_rating = %s,
			link_rel = %s, link_notes = %s, link_rss = %s
			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 ) ) ) {
			if ( $wp_error )
				return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error );
			else
				return 0;
		}
	} else {
		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)",
		$link_url,$link_name, $link_image, $link_target, $link_description, $link_visible, $link_owner, $link_rating, $link_rel, $link_notes, $link_rss ) ) ) {
			if ( $wp_error )
				return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error );
			else
				return 0;
		}
		$link_id = (int) $wpdb->insert_id;
	}

	wp_set_link_cats( $link_id, $link_category );

	if ( $update )
		do_action( 'edit_link', $link_id );
	else
		do_action( 'add_link', $link_id );

	clean_bookmark_cache( $link_id );

	return $link_id;
}
예제 #8
0
/**
 * This function inserts/updates links into/in the database.
 *
 * @since 2.0.0
 *
 * @param array $linkdata Elements that make up the link to insert.
 * @param bool $wp_error Optional. If true return WP_Error object on failure.
 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
 */
function wp_insert_link($linkdata, $wp_error = false)
{
    global $wpdb;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $args = wp_parse_args($linkdata, $defaults);
    $r = wp_unslash(sanitize_bookmark($args, 'db'));
    $link_id = $r['link_id'];
    $link_name = $r['link_name'];
    $link_url = $r['link_url'];
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if (trim($link_name) == '') {
        if (trim($link_url) != '') {
            $link_name = $link_url;
        } else {
            return 0;
        }
    }
    if (trim($link_url) == '') {
        return 0;
    }
    $link_rating = !empty($r['link_rating']) ? $r['link_rating'] : 0;
    $link_image = !empty($r['link_image']) ? $r['link_image'] : '';
    $link_target = !empty($r['link_target']) ? $r['link_target'] : '';
    $link_visible = !empty($r['link_visible']) ? $r['link_visible'] : 'Y';
    $link_owner = !empty($r['link_owner']) ? $r['link_owner'] : get_current_user_id();
    $link_notes = !empty($r['link_notes']) ? $r['link_notes'] : '';
    $link_description = !empty($r['link_description']) ? $r['link_description'] : '';
    $link_rss = !empty($r['link_rss']) ? $r['link_rss'] : '';
    $link_rel = !empty($r['link_rel']) ? $r['link_rel'] : '';
    $link_category = !empty($r['link_category']) ? $r['link_category'] : array();
    // Make sure we set a valid category
    if (!is_array($link_category) || 0 == count($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        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'))) {
            if ($wp_error) {
                return new WP_Error('db_update_error', __('Could not update link in the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
    } else {
        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'))) {
            if ($wp_error) {
                return new WP_Error('db_insert_error', __('Could not insert link into the database'), $wpdb->last_error);
            } else {
                return 0;
            }
        }
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        /**
         * Fires after a link was updated in the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was updated.
         */
        do_action('edit_link', $link_id);
    } else {
        /**
         * Fires after a link was added to the database.
         *
         * @since 2.0.0
         *
         * @param int $link_id ID of the link that was added.
         */
        do_action('add_link', $link_id);
    }
    clean_bookmark_cache($link_id);
    return $link_id;
}
function wp_insert_link($linkdata)
{
    global $wpdb, $current_user;
    $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0);
    $linkdata = wp_parse_args($linkdata, $defaults);
    $linkdata = sanitize_bookmark($linkdata, 'db');
    extract($linkdata, EXTR_SKIP);
    $update = false;
    if (!empty($link_id)) {
        $update = true;
    }
    if (trim($link_name) == '') {
        return 0;
    }
    if (trim($link_url) == '') {
        return 0;
    }
    if (empty($link_rating)) {
        $link_rating = 0;
    }
    if (empty($link_image)) {
        $link_image = '';
    }
    if (empty($link_target)) {
        $link_target = '';
    }
    if (empty($link_visible)) {
        $link_visible = 'Y';
    }
    if (empty($link_owner)) {
        $link_owner = $current_user->id;
    }
    if (empty($link_notes)) {
        $link_notes = '';
    }
    if (empty($link_description)) {
        $link_description = '';
    }
    if (empty($link_rss)) {
        $link_rss = '';
    }
    if (empty($link_rel)) {
        $link_rel = '';
    }
    // Make sure we set a valid category
    if (0 == count($link_category) || !is_array($link_category)) {
        $link_category = array(get_option('default_link_category'));
    }
    if ($update) {
        $wpdb->query("UPDATE {$wpdb->links} SET link_url='{$link_url}',\n\t\t\tlink_name='{$link_name}', link_image='{$link_image}',\n\t\t\tlink_target='{$link_target}',\n\t\t\tlink_visible='{$link_visible}', link_description='{$link_description}',\n\t\t\tlink_rating='{$link_rating}', link_rel='{$link_rel}',\n\t\t\tlink_notes='{$link_notes}', link_rss = '{$link_rss}'\n\t\t\tWHERE link_id='{$link_id}'");
    } else {
        $wpdb->query("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('{$link_url}','{$link_name}', '{$link_image}', '{$link_target}', '{$link_description}', '{$link_visible}', '{$link_owner}', '{$link_rating}', '{$link_rel}', '{$link_notes}', '{$link_rss}')");
        $link_id = (int) $wpdb->insert_id;
    }
    wp_set_link_cats($link_id, $link_category);
    if ($update) {
        do_action('edit_link', $link_id);
    } else {
        do_action('add_link', $link_id);
    }
    return $link_id;
}
    /**
     *
     * @global int $cat_id
     */
    public function display_rows()
    {
        global $cat_id;
        foreach ($this->items as $link) {
            $link = sanitize_bookmark($link);
            $link->link_name = esc_attr($link->link_name);
            $link->link_category = wp_get_link_cats($link->link_id);
            $short_url = url_shorten($link->link_url);
            $visible = $link->link_visible == 'Y' ? __('Yes') : __('No');
            $rating = $link->link_rating;
            $edit_link = get_edit_bookmark_link($link);
            ?>
		<tr id="link-<?php 
            echo $link->link_id;
            ?>
">
<?php 
            list($columns, $hidden, $sortable, $primary) = $this->get_column_info();
            foreach ($columns as $column_name => $column_display_name) {
                $classes = "{$column_name} column-{$column_name}";
                if ($primary === $column_name) {
                    $classes .= ' has-row-actions column-primary';
                }
                $style = '';
                if (in_array($column_name, $hidden)) {
                    $style = ' style="display:none;"';
                }
                $attributes = "class='{$classes}'{$style}";
                if ('cb' === $column_name) {
                    ?>
					<th scope="row" class="check-column">
						<label class="screen-reader-text" for="cb-select-<?php 
                    echo $link->link_id;
                    ?>
"><?php 
                    echo sprintf(__('Select %s'), $link->link_name);
                    ?>
</label>
						<input type="checkbox" name="linkcheck[]" id="cb-select-<?php 
                    echo $link->link_id;
                    ?>
" value="<?php 
                    echo esc_attr($link->link_id);
                    ?>
" />
					</th>
					<?php 
                } else {
                    echo "<td {$attributes}>";
                    switch ($column_name) {
                        case 'name':
                            echo "<strong><a class='row-title' href='{$edit_link}' title='" . esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $link->link_name)) . "'>{$link->link_name}</a></strong><br />";
                            break;
                        case 'url':
                            echo "<a href='{$link->link_url}' title='" . esc_attr(sprintf(__('Visit %s'), $link->link_name)) . "'>{$short_url}</a>";
                            break;
                        case 'categories':
                            $cat_names = array();
                            foreach ($link->link_category as $category) {
                                $cat = get_term($category, 'link_category', OBJECT, 'display');
                                if (is_wp_error($cat)) {
                                    echo $cat->get_error_message();
                                }
                                $cat_name = $cat->name;
                                if ($cat_id != $category) {
                                    $cat_name = "<a href='link-manager.php?cat_id={$category}'>{$cat_name}</a>";
                                }
                                $cat_names[] = $cat_name;
                            }
                            echo implode(', ', $cat_names);
                            break;
                        case 'rel':
                            echo empty($link->link_rel) ? '<br />' : $link->link_rel;
                            break;
                        case 'visible':
                            echo $visible;
                            break;
                        case 'rating':
                            echo $rating;
                            break;
                        default:
                            /**
                             * Fires for each registered custom link column.
                             *
                             * @since 2.1.0
                             *
                             * @param string $column_name Name of the custom column.
                             * @param int    $link_id     Link ID.
                             */
                            do_action('manage_link_custom_column', $column_name, $link->link_id);
                            break;
                    }
                    echo $this->handle_row_actions($link, $column_name, $primary);
                    echo '</td>';
                }
            }
            ?>
		</tr>
<?php 
        }
    }
예제 #11
0
    function display_rows()
    {
        global $cat_id;
        $alt = 0;
        foreach ($this->items as $link) {
            $link = sanitize_bookmark($link);
            $link->link_name = esc_attr($link->link_name);
            $link->link_category = wp_get_link_cats($link->link_id);
            $short_url = str_replace('http://', '', $link->link_url);
            $short_url = preg_replace('/^www\\./i', '', $short_url);
            if ('/' == substr($short_url, -1)) {
                $short_url = substr($short_url, 0, -1);
            }
            if (strlen($short_url) > 35) {
                $short_url = substr($short_url, 0, 32) . '...';
            }
            $visible = $link->link_visible == 'Y' ? __('Yes') : __('No');
            $rating = $link->link_rating;
            $style = $alt++ % 2 ? '' : ' class="alternate"';
            $edit_link = get_edit_bookmark_link($link);
            ?>
		<tr id="link-<?php 
            echo $link->link_id;
            ?>
" valign="middle" <?php 
            echo $style;
            ?>
>
<?php 
            list($columns, $hidden) = $this->get_column_headers();
            foreach ($columns as $column_name => $column_display_name) {
                $class = "class='column-{$column_name}'";
                $style = '';
                if (in_array($column_name, $hidden)) {
                    $style = ' style="display:none;"';
                }
                $attributes = $class . $style;
                switch ($column_name) {
                    case 'cb':
                        echo '<th scope="row" class="check-column"><input type="checkbox" name="linkcheck[]" value="' . esc_attr($link->link_id) . '" /></th>';
                        break;
                    case 'name':
                        echo "<td {$attributes}><strong><a class='row-title' href='{$edit_link}' title='" . esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $link->link_name)) . "'>{$link->link_name}</a></strong><br />";
                        $actions = array();
                        $actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>';
                        $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("link.php?action=delete&amp;link_id={$link->link_id}", 'delete-bookmark_' . $link->link_id) . "' onclick=\"if ( confirm( '" . esc_js(sprintf(__("You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete."), $link->link_name)) . "' ) ) { return true;}return false;\">" . __('Delete') . "</a>";
                        $action_count = count($actions);
                        $i = 0;
                        echo '<div class="row-actions">';
                        foreach ($actions as $action => $linkaction) {
                            ++$i;
                            $i == $action_count ? $sep = '' : ($sep = ' | ');
                            echo "<span class='{$action}'>{$linkaction}{$sep}</span>";
                        }
                        echo '</div>';
                        echo '</td>';
                        break;
                    case 'url':
                        echo "<td {$attributes}><a href='{$link->link_url}' title='" . sprintf(__('Visit %s'), $link->link_name) . "'>{$short_url}</a></td>";
                        break;
                    case 'categories':
                        ?>
<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        $cat_names = array();
                        foreach ($link->link_category as $category) {
                            $cat = get_term($category, 'link_category', OBJECT, 'display');
                            if (is_wp_error($cat)) {
                                echo $cat->get_error_message();
                            }
                            $cat_name = $cat->name;
                            if ($cat_id != $category) {
                                $cat_name = "<a href='link-manager.php?cat_id={$category}'>{$cat_name}</a>";
                            }
                            $cat_names[] = $cat_name;
                        }
                        echo implode(', ', $cat_names);
                        ?>
</td><?php 
                        break;
                    case 'rel':
                        ?>
<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        echo empty($link->link_rel) ? '<br />' : $link->link_rel;
                        ?>
</td><?php 
                        break;
                    case 'visible':
                        ?>
<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        echo $visible;
                        ?>
</td><?php 
                        break;
                    case 'rating':
                        ?>
<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        echo $rating;
                        ?>
</td><?php 
                        break;
                    default:
                        ?>
						<td <?php 
                        echo $attributes;
                        ?>
><?php 
                        do_action('manage_link_custom_column', $column_name, $link->link_id);
                        ?>
</td>
						<?php 
                        break;
                }
            }
            ?>
		</tr>
<?php 
        }
    }