Link libary change thumbnail provider

you must use Version: 5.8.6.7 and change the main php file to

<?php
/*
Plugin Name: Link Library
Plugin URI: http://wordpress.org/extend/plugins/link-library/
Description: Display links on pages with a variety of options
Version: 5.8.6.7
Author: Yannick Lefebvre
Author URI: http://ylefebvre.ca/

A plugin for the blogging MySQL/PHP-based WordPress.
Copyright 2014 Yannick Lefebvre

Translations:
French Translation courtesy of Luc Capronnier
Danish Translation courtesy of GeorgWP (http://wordpress.blogos.dk)
Italian Translation courtesy of Gianni Diurno

This program is free software; you can redistribute it and/or
modify it under the terms of the GNUs General Public License
as published addlinkcatlistoverrideby the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

You can also view a copy of the HTML version of the GNU General Public
License at http://www.gnu.org/copyleft/gpl.html

I, Yannick Lefebvre, can be contacted via e-mail at ylefebvre@gmail.com
*/

require_once(ABSPATH . '/wp-admin/includes/bookmark.php');

global $my_link_library_plugin;
global $my_link_library_plugin_admin;

if ( !get_option( 'link_manager_enabled' ) )
    add_filter( 'pre_option_link_manager_enabled', '__return_true' );

if ( is_admin() ) {
    global $my_link_library_plugin_admin;
    require plugin_dir_path( __FILE__ ) . 'link-library-admin.php';
    $my_link_library_plugin_admin = new link_library_plugin_admin();
}

/*********************************** Link Library Class *****************************************************************************/
class link_library_plugin {

	//constructor of class, PHP4 compatible construction for backward compatibility
	function link_library_plugin() {

        // Functions to be called when plugin is activated and deactivated
        register_activation_hook( __FILE__, array($this, 'll_install' ) );
        register_deactivation_hook( __FILE__, array($this, 'll_uninstall' ) );

		$newoptions = get_option('LinkLibraryPP1', "");

		if ( $newoptions == "" ) {
            global $my_link_library_plugin_admin;

            if ( empty( $my_link_library_plugin_admin ) ) {
                require plugin_dir_path( __FILE__ ) . 'link-library-admin.php';
                $my_link_library_plugin_admin = new link_library_plugin_admin();
            }

			$my_link_library_plugin_admin->ll_reset_options(1, 'list');
			$my_link_library_plugin_admin->ll_reset_gen_settings();
		}

		// wp_ajax_... is only run for logged usrs
		//add_action( 'wp_ajax_scn_check_url_action', array( &$this, 'ajax_action_check_url' ) );

		// Add short codes
		add_shortcode('link-library-cats', array($this, 'link_library_cats_func'));
		add_shortcode('link-library-search', array($this, 'link_library_search_func'));
		add_shortcode('link-library-addlink', array($this, 'link_library_addlink_func'));
		add_shortcode('link-library-addlinkcustommsg', array($this, 'link_library_addlink_func'));
		add_shortcode('link-library', array($this, 'link_library_func'));

		// Function to print information in page header when plugin present
		add_action('wp_head', array($this, 'll_rss_link'));

		// Function to determine if Link Library is used on a page before printing headers
		add_filter('the_posts', array($this, 'conditionally_add_scripts_and_styles'));
        // the_posts gets triggered before wp_head

		add_filter('wp_title', array($this, 'll_title_creator'));

		// Re-write rules filters to allow for custom permalinks
		add_filter('rewrite_rules_array', array($this, 'll_insertMyRewriteRules'));
		add_filter('query_vars', array($this, 'll_insertMyRewriteQueryVars'));

        add_action( 'template_redirect', array( $this, 'll_template_redirect' ) );
        add_action( 'wp_ajax_link_library_tracker', array( $this, 'link_library_ajax_tracker' ) );
        add_action( 'wp_ajax_nopriv_link_library_tracker', array( $this, 'link_library_ajax_tracker' ) );
        add_action( 'wp_ajax_link_library_ajax_update', array( $this, 'link_library_ajax_update') );
        add_action( 'wp_ajax_nopriv_link_library_ajax_update', array( $this, 'link_library_ajax_update') );
        add_action( 'wp_ajax_link_library_generate_image', array( $this, 'link_library_generate_image') );
        add_action( 'wp_ajax_nopriv_link_library_generate_image', array( $this, 'link_library_generate_image') );

		// Load text domain for translation of admin pages and text strings
		load_plugin_textdomain( 'link-library', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );

        global $wpdb;

        $wpdb->linkcategorymeta = $wpdb->get_blog_prefix() . "linkcategorymeta";
	}

    /************************** Link Library Installation Function **************************/
    function ll_install() {
        global $wpdb;

        if (function_exists('is_multisite') && is_multisite()) {
            if (isset($_GET['networkwide']) && ($_GET['networkwide'] == 1))
            {
                $originalblog = $wpdb->blogid;

                $bloglist = $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM $wpdb->blogs"));
                foreach ($bloglist as $blog) {
                    switch_to_blog($blog);
                    $this->create_table_and_settings();
                }
                switch_to_blog($originalblog);
                return;
            }
        }
        $this->create_table_and_settings();
    }

    function new_network_site($blog_id, $user_id, $domain, $path, $site_id, $meta )
    {
        global $wpdb;

        if ( ! function_exists('is_plugin_active_for_network') )
            require_once( ABSPATH . '/wp-admin/includes/plugin.php' );

        if (is_plugin_active_for_network('link-library/link-library.php')) {
            $originalblog = $wpdb->blogid;
            switch_to_blog($blog_id);
            $this->create_table_and_settings();
            switch_to_blog($originalblog);
        }
    }

    function create_table_and_settings()
    {
        global $wpdb;

        $wpdb->links_extrainfo = $this->db_prefix().'links_extrainfo';

        $creationquery = "CREATE TABLE " . $wpdb->links_extrainfo . " (
				link_id bigint(20) NOT NULL DEFAULT '0',
				link_second_url varchar(255) CHARACTER SET utf8 DEFAULT NULL,
				link_telephone varchar(128) CHARACTER SET utf8 DEFAULT NULL,
				link_email varchar(128) CHARACTER SET utf8 DEFAULT NULL,
				link_visits bigint(20) DEFAULT '0',
				link_reciprocal varchar(255) DEFAULT NULL,
				link_submitter varchar(255) DEFAULT NULL,
				link_submitter_name VARCHAR( 128 ) NULL,
				link_submitter_email VARCHAR( 128 ) NULL,
				link_textfield TEXT NULL,
				link_no_follow VARCHAR(1) NULL,
				link_featured VARCHAR(1) NULL,
				link_manual_updated VARCHAR(1) NULL,
				UNIQUE KEY link_id (link_id)
				);";

        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
        dbDelta( $creationquery );

        $wpdb->linkcategorymeta = $this->db_prefix().'linkcategorymeta';

        $meta_creation_query =
            'CREATE TABLE ' . $wpdb->linkcategorymeta . ' (
        meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
        linkcategory_id bigint(20) unsigned NOT NULL DEFAULT "0",
        meta_key varchar(255) DEFAULT NULL,
        meta_value longtext,
        UNIQUE KEY (meta_id)
        );';

        dbDelta ( $meta_creation_query );

        $genoptions = get_option('LinkLibraryGeneral');

        if ($genoptions != '')
        {
            if ($genoptions['schemaversion'] == '' || floatval($genoptions['schemaversion']) < 3.5)
            {
                $genoptions['schemaversion'] = "3.5";
                update_option('LinkLibraryGeneral', $genoptions);
            }
            elseif (floatval($genoptions['schemaversion']) < "4.6")
            {
                $genoptions['schemaversion'] = "4.6";
                $wpdb->get_results("ALTER TABLE `" . $this->db_prefix() . "links_extrainfo` ADD `link_submitter_name` VARCHAR( 128 ) NULL, ADD `link_submitter_email` VARCHAR( 128 ) NULL , ADD `link_textfield` TEXT NULL ;");

                update_option('LinkLibraryGeneral', $genoptions);
            }
            elseif (floatval($genoptions['schemaversion']) < "4.7")
            {
                $genoptions['schemaversion'] = "4.7";
                $wpdb->get_results("ALTER TABLE `" . $this->db_prefix() . "links_extrainfo` ADD `link_no_follow` VARCHAR( 1 ) NULL;");

                update_option('LinkLibraryGeneral', $genoptions);
            }
            elseif (floatval($genoptions['schemaversion']) < "4.9")
            {
                $genoptions['schemaversion'] = "4.9";
                $wpdb->get_results("ALTER TABLE `" . $this->db_prefix() . "links_extrainfo` ADD `link_featured` VARCHAR( 1 ) NULL;");

                update_option('LinkLibraryGeneral', $genoptions);
            }

            for ($i = 1; $i <= $genoptions['numberstylesets']; $i++) {
                $settingsname = 'LinkLibraryPP' . $i;
                $options = get_option($settingsname);

                if ($options != '')
                {
                    if ($options['showname'] == '')
                        $options['showname'] = true;

                    if ( isset($options['show_image_and_name'] ) && $options['show_image_and_name'] == true)
                    {
                        $options['showname'] = true;
                        $options['show_images'] = true;
                    }

                    if ($options['sourcename'] == '')
                        $options['sourcename'] = 'primary';

                    if ($options['sourceimage'] == '')
                        $options['sourceimage'] = 'primary';

                    if ($options['dragndroporder'] == '')
                    {
                        if ($options['imagepos'] == 'beforename')
                            $options['dragndroporder'] = '1,2,3,4,5,6,7,8,9,10,11,12';
                        elseif ($options['imagepos'] == 'aftername')
                            $options['dragndroporder'] = '2,1,3,4,5,6,7,8,9,10,11,12';
                        elseif ($options['imagepos'] == 'afterrssicons')
                            $options['dragndroporder'] = '2,3,4,5,6,1,7,8,9,10,11,12';
                    }
                    else if ($options['dragndroporder'] != '')
                    {
                        $elementarray = explode(',', $options['dragndroporder']);

                        $allelements = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12');
                        foreach ($allelements as $element)
                        {
                            if (!in_array($element, $elementarray))
                            {
                                $elementarray[] = $element;
                                $options['dragndroporder'] = implode(",", $elementarray);
                            }
                        }
                    }

                    if ($options['flatlist'] === true) $options['flatlist'] = 'unordered';
                    elseif ($options['flatlist'] === false) $options['flatlist'] = 'table';
                }

                update_option($settingsname, $options);
            }
        }
    }

    function remove_querystring_var($url, $key) {

        $keypos = strpos($url, $key);
        if ($keypos)
        {
            $ampersandpos = strpos($url, '&', $keypos);
            $newurl = substr($url, 0, $keypos - 1);

            if ($ampersandpos)
                $newurl .= substr($url, $ampersandpos);
        }
        else
            $newurl = $url;

        return $newurl;
    }

    /************************** Link Library Uninstall Function **************************/
    function ll_uninstall() {
        $genoptions = get_option('LinkLibraryGeneral');

        if ($genoptions != '')
        {
            if ( isset( $genoptions['stylesheet'] ) && isset( $genoptions['fullstylesheet'] ) && $genoptions['stylesheet'] != '' && $genoptions['fullstylesheet'] == '')
            {
                $stylesheetlocation = plugins_url( $genoptions['stylesheet'], __FILE__ );
                if ( file_exists( $stylesheetlocation ) )
                    $genoptions['fullstylesheet'] = file_get_contents( $stylesheetlocation );

                update_option('LinkLibraryGeneral', $genoptions);
            }
        }
    }

    function db_prefix() {
		global $wpdb;
		if (method_exists($wpdb, "get_blog_prefix"))
			return $wpdb->get_blog_prefix();
		else
			return $wpdb->prefix;
	}

    	/******************************************** Print style data to header *********************************************/

	function ll_rss_link() {
		global $llstylesheet, $rss_settings;

		if ($rss_settings != "")
		{
			$settingsname = 'LinkLibraryPP' . $rss_settings;
			$options = get_option($settingsname);

			$feedtitle = ($options['rssfeedtitle'] == "" ? __('Link Library Generated Feed', 'link-library') : $options['rssfeedtitle']);

			$xpath = $this->relativePath( dirname( __FILE__ ), ABSPATH );
			echo '<link rel="alternate" type="application/rss+xml" title="' . esc_html(stripslashes($feedtitle)) . '" href="' . home_url('/?link_library_rss_feed=1&settingset=' . $rss_settings/* . '&xpath=' . $xpath*/) . '" />';
			unset( $xpath );
		}

		if ($llstylesheet == true)
		{
			$genoptions = get_option('LinkLibraryGeneral');

			echo "<style id='LinkLibraryStyle' type='text/css'>n";
			echo stripslashes($genoptions['fullstylesheet']);
			echo "</style>n";
		}
	}

	/****************************************** Add Link Category name to page title when option is present ********************************/
	function ll_title_creator($title) {
		global $wp_query;
		global $wpdb;
                global $llstylesheet;

                if ($llstylesheet)
                {
                    $genoptions = get_option('LinkLibraryGeneral');

                    $categoryname = ( isset( $wp_query->query_vars['cat_name'] ) ? $wp_query->query_vars['cat_name'] : '' );
                    $catid = ( isset( $_GET['cat_id'] ) ? intval($_GET['cat_id']) : '' );

                    $linkcatquery = "SELECT t.name ";
                    $linkcatquery .= "FROM " . $this->db_prefix() . "terms t LEFT JOIN " . $this->db_prefix(). "term_taxonomy tt ON (t.term_id = tt.term_id) ";
                    $linkcatquery .= "LEFT JOIN " . $this->db_prefix() . "term_relationships tr ON (tt.term_taxonomy_id = tr.term_taxonomy_id) ";
                    $linkcatquery .= "WHERE tt.taxonomy = 'link_category' AND ";

                    if ($categoryname != '')
                    {
                            $linkcatquery .= "t.slug = '" . $categoryname . "'";
                            $nicecatname = $wpdb->get_var($linkcatquery);
                            return $title . $genoptions['pagetitleprefix'] . $nicecatname . $genoptions['pagetitlesuffix'];
                    }
                    elseif ($catid != '')
                    {
                            $linkcatquery .= "t.term_id = '" . $catid . "'";
                            //echo $linkcatquery;
                            $nicecatname = $wpdb->get_var($linkcatquery);
                            return $title . $genoptions['pagetitleprefix'] . $nicecatname . $genoptions['pagetitlesuffix'];
                    }
                }

		return $title;
	}

    	/************************************* Function to add to rewrite rules for permalink support **********************************/
	function ll_insertMyRewriteRules($rules)
	{
		$newrules = array();

		$genoptions = get_option('LinkLibraryGeneral');

		if ($genoptions != '')
		{
			for ($i = 1; $i <= $genoptions['numberstylesets']; $i++) {
				$settingsname = 'LinkLibraryPP' . $i;
				$options = get_option($settingsname);

				if ($options['enablerewrite'] == true && $options['rewritepage'] != '')
					$newrules['(' . $options['rewritepage'] . ')/(.+?)$'] = 'index.php?pagename=$matches[1]&cat_name=$matches[2]';

				if ($options['publishrssfeed'] == true)
				{
					$xpath = $this->relativePath( dirname( __FILE__ ), ABSPATH );

					if ($options['rssfeedaddress'] != '')
						$newrules['(' . $options['rssfeedaddress'] . ')/(.+?)$'] = home_url() . '?link_library_rss_feed=1&settingset=$matches[1]';
					elseif ($options['rssfeedaddress'] == '')
						$newrules['(linkrss)/(.+?)$'] = plugins_url( 'link_library_rss_feed=1?settingset=$matches[1]' . '&xpath=' . $xpath, __FILE__ );

					unset( $xpath );
				}
			}
		}

		return $newrules + $rules;
	}

	// Adding the id var so that WP recognizes it
	function ll_insertMyRewriteQueryVars($vars)
	{
		array_push($vars, 'cat_name');
		return $vars;
	}

    function addhttp( $url ) {
        if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
            $url = "http://" . $url;
        }
        return $url;
    }

	/*********************************************** Private Link Library Categories Function *************************************/

	function PrivateLinkLibraryCategories($order = 'name', $hide_if_empty = true, $table_width = 100, $num_columns = 1, $catanchor = true,
				   $flatlist = 'table', $categorylist = '', $excludecategorylist = '', $showcategorydescheaders = false,
				   $showonecatonly = false, $settings = '', $loadingicon = '/icons/Ajax-loader.gif', $catlistdescpos = 'right',
				   $debugmode = false, $pagination = false, $linksperpage = 5, $showcatlinkcount = false, $showonecatmode = 'AJAX',
				   $cattargetaddress = '', $rewritepage = '', $showinvisible = false, $showuserlinks = false, $showcatonsearchresults = false) {

		global $wpdb;

		$output = '';

                $categoryid = '';

		if (isset($_GET['cat_id']))
			$categoryid = intval($_GET['cat_id']);

		if (!isset($_GET['searchll']) || $showcatonsearchresults == true)
		{
			$countcat = 0;

			$order = strtolower($order);

			$output .= "<!-- Link Library Categories Output -->nn";

			if ($showonecatonly == true && ($showonecatmode == 'AJAX' || $showonecatmode == ''))
			{
                $nonce = wp_create_nonce( 'link_library_ajax_refresh' );

				$output .= "<SCRIPT LANGUAGE="JavaScript">n";
				$output .= "var ajaxobject;n";
				$output .= "function showLinkCat ( _incomingID, _settingsID, _pagenumber) {n";
				$output .= "if (typeof(ajaxobject) != "undefined") { ajaxobject.abort(); }n";

				$output .= "tjQuery('#contentLoading').toggle();" .
                           "jQuery.ajax( {" .
                           "    type: 'POST', " .
                           "    url: '" . admin_url( 'admin-ajax.php' ) . "', " .
                           "    data: { action: 'link_library_ajax_update', " .
                           "            _ajax_nonce: '" . $nonce . "', " .
                           "            id : _incomingID, " .
                           "            settings : _settingsID, " .
                           "            linkresultpage: _pagenumber }, " .
                           "    success: function( data ){ " .
                           "            jQuery('#linklist" . $settings. "').html( data ); " .
                           "            jQuery('#contentLoading').toggle();n" .
                           "            } } ); ";
				$output .= "}n";

				$output .= "</SCRIPT>nn";
			}

			// Handle link category sorting
			$direction = 'ASC';
			if (substr($order,0,1) == '_') {
				$direction = 'DESC';
				$order = substr($order,1);
			}

			if (!isset($direction)) $direction = '';
			// Fetch the link category data as an array of hashesa

			$linkcatquery = "SELECT ";
            if ( $showcatlinkcount || $pagination ) {
                $linkcatquery .= "count(l.link_name) as linkcount, ";
            }
			$linkcatquery .= "t.name, t.term_id, t.slug as category_nicename, tt.description as category_description ";
			$linkcatquery .= "FROM " . $this->db_prefix() . "terms t LEFT JOIN " . $this->db_prefix(). "term_taxonomy tt ON (t.term_id = tt.term_id)";
			$linkcatquery .= " LEFT JOIN " . $this->db_prefix() . "term_relationships tr ON (tt.term_taxonomy_id = tr.term_taxonomy_id) ";

			$linkcatquery .= " LEFT JOIN " . $this->db_prefix() . "links l on (tr.object_id = l.link_id";

			if ($showinvisible == false)
				$linkcatquery .= " AND l.link_visible != 'N'";

			if (!$showuserlinks)
				$linkcatquery .= " AND l.link_description not like '%LinkLibrary:AwaitingModeration:RemoveTextToApprove%' ";

			$linkcatquery .= " ) ";

			$linkcatquery .= "WHERE tt.taxonomy = 'link_category'";

			if ($categorylist != "")
				$linkcatquery .= " AND t.term_id in (" . $categorylist. ")";

			if ($excludecategorylist != "")
				$linkcatquery .= " AND t.term_id not in (" . $excludecategorylist . ")";

			if ($hide_if_empty == true)
				$linkcatquery .= " AND l.link_name != '' ";

			$linkcatquery .= " GROUP BY t.name ";

			if ($order == "name")
				$linkcatquery .= " ORDER by t.name " . $direction;
			elseif ($order == "id")
				$linkcatquery .= " ORDER by t.term_id " . $direction;
			elseif ($order == "order")
				$linkcatquery .= " ORDER by t.term_order " . $direction;
			elseif ($order == "catlist")
				$linkcatquery .= " ORDER by FIELD(t.term_id," . $categorylist . ") ";

			$catnames = $wpdb->get_results($linkcatquery);

			if ($debugmode)
			{
				$output .= "n<!-- Category Query: " . print_r($linkcatquery, TRUE) . "-->nn";
				$output .= "n<!-- Category Results: " . print_r($catnames, TRUE) . "-->nn";
			}

			// Display each category

			if ($catnames) {

				$output .=  "<div id="linktable" class="linktable">";

				if ($flatlist == 'table')
					$output .= "<table width="" . $table_width . "%">n";
				elseif ($flatlist == 'unordered')
					$output .= "<ul class='menu'>n";
				elseif ($flatlist == 'dropdown')
					$output .= "<form name='catselect'><select name='catdropdown' class='catdropdown'>";

				$linkcount = 0;

				foreach ( (array) $catnames as $catname) {
					// Handle each category.
					// First, fix the sort_order info
					//$orderby = $cat['sort_order'];
					//$orderby = (bool_from_yn($cat['sort_desc'])?'_':'') . $orderby;

					$catfront = '';
					$cattext = '';
					$catitem = '';

					// Display the category name
					$countcat += 1;
					if ($flatlist == 'table' and (($countcat % $num_columns == 1) or ($num_columns == 1) )) $output .= "<tr>n";

					if ($flatlist == 'table')
						$catfront = '	<td>';
					elseif ($flatlist == 'unordered')
						$catfront = '	<li>';
					elseif ($flatlist == 'dropdown')
					{
						$catfront = '	<option ';
						if ($categoryid != '' && $categoryid == $catname->term_id)
							$catfront .= 'selected="selected" ';
						$catfront .= 'value="';
					}

					if ($showonecatonly)
					{
						if ($showonecatmode == 'AJAX' || $showonecatmode == '')
						{
							if ($flatlist != 'dropdown')
								$cattext = "<a href='#' onClick="showLinkCat('" . $catname->term_id. "', '" . $settings . "', 1);return false;" >";
							elseif ($flatlist == 'dropdown')
								$cattext = $catname->term_id;
						}
						elseif ($showonecatmode == 'HTMLGET')
						{
							if ($flatlist != 'dropdown')
								$cattext = "<a href='";

							if ($cattargetaddress != '' && strpos($cattargetaddress, "?") != false)
							{
								$cattext .= $cattargetaddress;
								$cattext .= "&cat_id=";
							}
							elseif ($cattargetaddress != '' && strpos($cattargetaddress, "?") == false)
							{
								$cattext .= $cattargetaddress;
								$cattext .= "?cat_id=";
							}
							elseif ($cattargetaddress == '')
								$cattext .= "?cat_id=";

							$cattext .= $catname->term_id;

							if ($flatlist != 'dropdown')
								$cattext .= "'>";
						}
						elseif ($showonecatmode == 'HTMLGETPERM')
						{
							if ($flatlist != 'dropdown')
								$cattext = "<a href='";

							$cattext .= "/" . $rewritepage . "/" . $catname->category_nicename;

							if ($flatlist != 'dropdown')
								$cattext .= "'>";
						}
					}
					else if ($catanchor)
					{
						if (!$pagination)
						{
							if ($flatlist != 'dropdown')
								$cattext = '<a href="';

							$cattext .= '#' . $catname->category_nicename;

							if ($flatlist != 'dropdown')
								$cattext .= '">';
						}
						elseif ($pagination)
						{
							if ($linksperpage == 0 && $linksperpage == '')
								$linksperpage = 5;

							$pageposition = ( $linkcount + 1 ) / $linksperpage;
							$ceilpageposition = ceil($pageposition);
							if ( $ceilpageposition == 0 && !isset( $_GET['linkresultpage'] ) ) {
								if ($flatlist != 'dropdown')
									$cattext = '<a href="';

								$cattext .= get_permalink() . '#' . $catname->category_nicename;

								if ( $flatlist != 'dropdown' )
									$cattext .= '">';
							} else {
								if ( $flatlist != 'dropdown' )
									$cattext = '<a href="';

								$cattext .= '?linkresultpage=' . ($ceilpageposition == 0 ? 1 : $ceilpageposition) . '#' . $catname->category_nicename;

								if ( $flatlist != 'dropdown' )
									$cattext .= '">';
							}

							$linkcount = $linkcount + $catname->linkcount;
						}
					}
					else
						$cattext = '';

					if ( $flatlist == 'dropdown' )
						$cattext .= '">';

					if ( $catlistdescpos == 'right' || $catlistdescpos == '' ) {
						$catitem .= '<div class="linkcatname">' . $catname->name . '</div>';
						if ($showcatlinkcount)
							$catitem .= " (" . $catname->linkcount . ")";
					}

					if ( $showcategorydescheaders ) {
						$catname->category_description = esc_html($catname->category_description);
						$catname->category_description = str_replace("[", "<", $catname->category_description);
						$catname->category_description = str_replace("]", ">", $catname->category_description);
						$catname->category_description = str_replace("&quot;", """, $catname->category_description);
						$catitem .= "<span class='linkcatdesc'>" . $catname->category_description . "</span>";
					}

					if ($catlistdescpos == 'left')
					{
						$catitem .= '<div class="linkcatname">' . $catname->name . '</div>';
						if ($showcatlinkcount)
							$catitem .= " (" . $catname->linkcount . ")";
					}

					if (($catanchor || $showonecatonly) && $flatlist != 'dropdown')
						$catitem .= "</a>";

					$output .= ($catfront . $cattext . $catitem );

					if ($flatlist == 'table')
						$catterminator = "	</td>n";
					elseif ($flatlist == 'unordered')
						$catterminator = "	</li>n";
					elseif ($flatlist == 'dropdown')
						$catterminator = "	</option>n";

					$output .= ($catterminator);

					if ($flatlist == "table" and ($countcat % $num_columns == 0)) $output .= "</tr>n";
				}

				if ($flatlist == "table" and ($countcat % $num_columns == 3)) $output .= "</tr>n";
				if ($flatlist == "table" && $catnames)
					$output .= "</table>n";
				elseif ($flatlist == 'unordered' && $catnames)
					$output .= "</ul>n";
				elseif ($flatlist == 'dropdown' && $catnames)
				{
					$output .= "</select>n";
					$output .= "<button type='button' onclick='showcategory()'>" . __('Go!', 'link-library') . "</button>";
					$output .= "</form>";
				}

				$output .= "</div>n";

				if ($showonecatonly && ($showonecatmode == 'AJAX' || $showonecatmode == ''))
				{
					if ($loadingicon == '') $loadingicon = '/icons/Ajax-loader.gif';
					$output .= "<div class='contentLoading' id='contentLoading' style='display: none;'><img src='" . plugins_url( $loadingicon, __FILE__ ) . "' alt='Loading data, please wait...'></div>n";
				}

				if ($flatlist == 'dropdown')
				{
					$output .= "<SCRIPT TYPE='text/javascript'>n";
					$output .= "tfunction showcategory(){n";

					if ($showonecatonly && ($showonecatmode == 'AJAX' || $showonecatmode == '') )
					{
						$output .= "catidvar = document.catselect.catdropdown.options[document.catselect.catdropdown.selectedIndex].value;";
						$output .= "showLinkCat(catidvar, '" . $settings . "', 1);return false; }";
					}
					else
					{
						$output .= "ttlocation=n";
						$output .= "document.catselect.catdropdown.options[document.catselect.catdropdown.selectedIndex].value }n";

					}
					$output .= "</SCRIPT>n";
				}
			}
			else
			{
				$output .= "<div>" . __('No categories found', 'link-library') . ".</div>";
			}

			$output .= "n<!-- End of Link Library Categories Output -->nn";
		}
		return $output;
	}

	function ll_highlight_phrase($str, $phrase, $tag_open = '<strong>', $tag_close = '</strong>')
	{
		if ($str == '')
		{
			return '';
		}

		if ($phrase != '')
		{
			return preg_replace('/('.preg_quote($phrase, '/').'(?![^<]*>))/i', $tag_open."\1".$tag_close, $str);
		}

		return $str;
	}

    function link_library_display_pagination( $previouspagenumber, $nextpagenumber, $numberofpages, $pagenumber, $showonecatonly, $showonecatmode, $AJAXcatid, $settings, $pageID ) {

        $dotbelow = false;
        $dotabove = false;

        $incomingget = $_GET;
        unset ( $incomingget['page_id'] );
        unset ( $incomingget['linkresultpage'] );
        unset ( $incomingget['cat_id'] );

        if ($numberofpages > 1)
        {
            $paginationoutput = "<div class='pageselector'>";

            if ($pagenumber != 1)
            {
                $paginationoutput .= "<span class='previousnextactive'>";

                if (!$showonecatonly) {
                    $argumentarray = array ( 'page_id' => get_the_ID(), 'linkresultpage' => $previouspagenumber );
                    $argumentarray = array_merge( $argumentarray, $incomingget );
                    $targetaddress = add_query_arg( $argumentarray );

                    $paginationoutput .= "<a href='" . $targetaddress . "'>" . __('Previous', 'link-library') . "</a>";
                } elseif ($showonecatonly) {
                    if ($showonecatmode == 'AJAX' || $showonecatmode == '')
                        $paginationoutput .= "<a href='#' onClick="showLinkCat('" . $AJAXcatid . "', '" . $settings . "', " . $previouspagenumber . ");return false;" >" . __('Previous', 'link-library') . "</a>";
                    elseif ($showonecatmode == 'HTMLGET') {
                        $argumentarray = array ( 'page_id' => $pageID, 'linkresultpage' => $previouspagenumber, 'cat_id' => $AJAXcatid );
                        $argumentarray = array_merge( $argumentarray, $incomingget );
                        $targetaddress = add_query_arg( $argumentarray );

                        $paginationoutput .= "<a href='" . $targetaddress . "' >" . __('Previous', 'link-library') . "</a>";
                    }

                }

                $paginationoutput .= "</span>";
            }
            else
                $paginationoutput .= "<span class='previousnextinactive'>" . __('Previous', 'link-library') . "</span>";

            for ($counter = 1; $counter <= $numberofpages; $counter++)
            {
                if ($counter <= 2 || $counter >= $numberofpages - 1 || ($counter <= $pagenumber + 2 && $counter >= $pagenumber - 2))
                {
                    if ($counter != $pagenumber)
                        $paginationoutput .= "<span class='unselectedpage'>";
                    else
                        $paginationoutput .= "<span class='selectedpage'>";

                    if (!$showonecatonly) {
                        $argumentarray = array ( 'page_id' => $pageID, 'linkresultpage' => $counter );
                        $argumentarray = array_merge( $argumentarray, $incomingget );
                        $targetaddress = add_query_arg( $argumentarray );

                        $paginationoutput .= "<a href='" . $targetaddress . "'>" . $counter . "</a>";
                    } elseif ($showonecatonly) {
                        if ($showonecatmode == 'AJAX' || $showonecatmode == '')
                            $paginationoutput .= "<a href='#' onClick="showLinkCat('" . $AJAXcatid . "', '" . $settings . "', " . $counter . ");return false;" >" . $counter . "</a>";
                        elseif ($showonecatmode == 'HTMLGET') {
                            $argumentarray = array ( 'page_id' => $pageID, 'linkresultpage' => $counter, 'cat_id' => $AJAXcatid );
                            $argumentarray = array_merge( $argumentarray, $incomingget );
                            $targetaddress = add_query_arg( $argumentarray );

                            $paginationoutput .= "<a href='" . $targetaddress . "' >" . $counter . "</a>";
                        }

                    }

                    $paginationoutput .= "</a></span>";
                }

                if ($counter >= 2 && $counter < $pagenumber - 2 && $dotbelow == false)
                {
                    $paginationoutput .= "...";
                    $dotbelow = true;
                }

                if ($counter > $pagenumber + 2 && $counter < $numberofpages - 1 && $dotabove == false)
                {
                    $paginationoutput .= "...";
                    $dotabove = true;
                }
            }

            if ($pagenumber != $numberofpages)
            {
                $paginationoutput .= "<span class='previousnextactive'>";

                if (!$showonecatonly) {
                    $argumentarray = array ( 'page_id' => $pageID, 'linkresultpage' => $nextpagenumber );
                    $argumentarray = array_merge( $argumentarray, $incomingget );
                    $targetaddress = add_query_arg( $argumentarray );

                    $paginationoutput .= "<a href='" . $targetaddress . "'>" . __('Next', 'link-library') . "</a>";
                }

                elseif ($showonecatonly)
                {
                    if ($showonecatmode == 'AJAX' || $showonecatmode == '')
                        $paginationoutput .= "<a href='#' onClick="showLinkCat('" . $AJAXcatid . "', '" . $settings . "', " . $nextpagenumber . ");return false;" >" . __('Next', 'link-library') . "</a>";
                    elseif ($showonecatmode == 'HTMLGET') {
                        $argumentarray = array ( 'page_id' => $pageID, 'linkresultpage' => $nextpagenumber );
                        $argumentarray = array_merge( $argumentarray, $incomingget );
                        $targetaddress = add_query_arg( $argumentarray );

                        $paginationoutput .= "<a href='" . $targetaddress . "' >" . __('Next', 'link-library') . "</a>";
                    }

                }

                $paginationoutput .= "</span>";
            }
            else
                $paginationoutput .= "<span class='previousnextinactive'>" . __('Next', 'link-library') . "</span>";

            $paginationoutput .= "</div>";
        }

        return $paginationoutput;
    }

	function PrivateLinkLibrary($order = 'name', $hide_if_empty = true, $catanchor = true,
									$showdescription = false, $shownotes = false, $showrating = false,
									$showupdated = false, $categorylist = '', $show_images = false,
									$show_image_and_name = false, $use_html_tags = false,
									$show_rss = false, $beforenote = '<br />', $nofollow = false, $excludecategorylist = '',
									$afternote = '', $beforeitem = '<li>', $afteritem = '</li>', $beforedesc = '', $afterdesc = '',
									$displayastable = false, $beforelink = '', $afterlink = '', $showcolumnheaders = false,
									$linkheader = '', $descheader = '', $notesheader = '', $catlistwrappers = 1, $beforecatlist1 = '',
									$beforecatlist2 = '', $beforecatlist3 = '', $divorheader = false, $catnameoutput = 'linklistcatname',
									$show_rss_icon = false, $linkaddfrequency = 0, $addbeforelink = '', $addafterlink = '', $linktarget = '',
									$showcategorydesclinks = false, $showadmineditlinks = true, $showonecatonly = false, $AJAXcatid = '',
									$defaultsinglecat = '', $rsspreview = false, $rsspreviewcount = 3, $rssfeedinline = false,
									$rssfeedinlinecontent = false, $rssfeedinlinecount = 1, $beforerss = '', $afterrss = '',
									$rsscachedir = '', $direction = 'ASC', $linkdirection = 'ASC', $linkorder = 'name',
									$pagination = false, $linksperpage = 5, $hidecategorynames = false, $settings = '',
									$showinvisible = false, $showdate = false, $beforedate = '', $afterdate = '', $catdescpos = 'right',
									$showuserlinks = false, $rsspreviewwidth = 900, $rsspreviewheight = 700, $beforeimage = '', $afterimage = '',
									$imagepos = 'beforename', $imageclass = '', $AJAXpageid = 1, $debugmode = false, $usethumbshotsforimages = false,
									$showonecatmode = 'AJAX', $dragndroporder = '1,2,3,4,5,6,7,8,9,10', $showname = true, $displayweblink = 'false',
									$sourceweblink = 'primary', $showtelephone = 'false', $sourcetelephone = 'primary', $showemail = 'false', $showlinkhits = false,
									$beforeweblink = '', $afterweblink = '', $weblinklabel = '', $beforetelephone = '', $aftertelephone = '', $telephonelabel = '',
									$beforeemail = '', $afteremail = '', $emaillabel = '', $beforelinkhits = '', $afterlinkhits = '', $emailcommand = '',
									$sourceimage = '', $sourcename = '', $thumbshotscid = '', $maxlinks = '', $beforelinkrating = '', $afterlinkrating = '',
									$showlargedescription = false, $beforelargedescription = '', $afterlargedescription = '', $featuredfirst = false, $shownameifnoimage = false,
                                    $enablelinkpopup = false, $popupwidth = 300, $popupheight = 400, $nocatonstartup = false, $linktitlecontent = 'linkname', $paginationposition = 'AFTER', $uselocalimagesoverthumbshots = false, $showlinksonclick = false ) {

		global $wpdb;

		$output = "n<!-- Beginning of Link Library Output -->nn";

        $currentcategory = 1;
        $categoryname = "";

        if ( $showonecatonly && $showonecatmode == 'AJAX' && $AJAXcatid == '' ) {
            $AJAXnocatset = true;
        } else {
            $AJAXnocatset = false;
        }

		if ($showonecatonly && $showonecatmode == 'AJAX' && $AJAXcatid != '' && $_GET['searchll'] == "")
		{
			$categorylist = $AJAXcatid;
		}
		elseif ($showonecatonly && $showonecatmode == 'HTMLGET' && isset($_GET['cat_id']) && ( !isset( $_GET['searchll'] ) || ( isset( $_GET['searchll'] ) && $_GET['searchll'] == "" ) ) )
		{
			$categorylist = intval($_GET['cat_id']);
			$AJAXcatid = $categorylist;
		}
		elseif ($showonecatonly && $showonecatmode == 'HTMLGETPERM' && $_GET['searchll'] == "")
		{
			global $wp_query;

			$categoryname = $wp_query->query_vars['cat_name'];
			$AJAXcatid = $categoryname;
		}
		elseif ($showonecatonly && $AJAXcatid == '' && $defaultsinglecat != '' && ( !isset( $_GET['searchll'] ) || ( isset( $_GET['searchll'] ) && $_GET['searchll'] == "" ) ) )
		{
			$categorylist = $defaultsinglecat;
			$AJAXcatid = $categorylist;
		}
		elseif ($showonecatonly && $AJAXcatid == '' && $defaultsinglecat == '' && $_GET['searchll'] == "")
		{
			$catquery = "SELECT distinct t.name, t.term_id ";
			$catquery .= "FROM " . $this->db_prefix() . "terms t ";
			$catquery .= "LEFT JOIN " . $this->db_prefix() . "term_taxonomy tt ON (t.term_id = tt.term_id) ";
			$catquery .= "LEFT JOIN " . $this->db_prefix() . "term_relationships tr ON (tt.term_taxonomy_id = tr.term_taxonomy_id) ";
			$catquery .= "LEFT JOIN " . $this->db_prefix() . "links l ON (tr.object_id = l.link_id) ";
            $catquery .= "LEFT JOIN " . $this->db_prefix() . "links_extrainfo le ON (l.link_id = le.link_id) ";
			$catquery .= "WHERE tt.taxonomy = 'link_category' ";

			if ($hide_if_empty)
				$catquery .= "AND l.link_id is not NULL AND l.link_description not like '%LinkLibrary:AwaitingModeration:RemoveTextToApprove%' ";

			if ($categorylist != "")
				$catquery .= " AND t.term_id in (" . $categorylist. ")";

			if ($excludecategorylist != "")
				$catquery .= " AND t.term_id not in (" . $excludecategorylist . ")";

			if ($showinvisible == false)
				$catquery .= " AND l.link_visible != 'N'";

			$mode = "normal";

			$catquery .= " ORDER by ";

			if ($featuredfirst == true)
				$catquery .= "le.link_featured DESC, ";

			if ($order == "name")
				$catquery .= " name " . $direction;
			elseif ($order == "id")
				$catquery .= " t.term_id " . $direction;
			elseif ($order == "order")
				$catquery .= " t.term_order " . $direction;
			elseif ($order == "catlist")
				$catquery .= " FIELD(t.term_id," . $categorylist . ") ";

			if ($linkorder == "name")
				$catquery .= ", link_name " . $linkdirection;
			elseif ($linkorder == "id")
				$catquery .= ", link_id " . $linkdirection;
			elseif ($linkorder == "order")
				$catquery .= ", link_order ". $linkdirection;
			elseif ($linkorder == "date")
				$catquery .= ", link_updated ". $linkdirection;

			$catitems = $wpdb->get_results($catquery);

			if ($debugmode)
			{
				$output .= "n<!-- AJAX Default Category Query: " . print_r($catquery, TRUE) . "-->nn";
				$output .= "n<!-- AJAX Default Category Results: " . print_r($catitems, TRUE) . "-->nn";
			}

			if ($catitems)
			{
				$categorylist = $catitems[0]->term_id;
				$AJAXcatid = $categorylist;
			}
		}

		$linkquery = "SELECT distinct *, l.link_id as proper_link_id, UNIX_TIMESTAMP(l.link_updated) as link_date, ";
		$linkquery .= "IF (DATE_ADD(l.link_updated, INTERVAL 120 MINUTE) >= NOW(), 1,0) as recently_updated ";
		$linkquery .= "FROM " . $this->db_prefix() . "terms t ";
		$linkquery .= "LEFT JOIN " . $this->db_prefix() . "term_taxonomy tt ON (t.term_id = tt.term_id) ";
		$linkquery .= "LEFT JOIN " . $this->db_prefix() . "term_relationships tr ON (tt.term_taxonomy_id = tr.term_taxonomy_id) ";
		$linkquery .= "LEFT JOIN " . $this->db_prefix() . "links l ON (tr.object_id = l.link_id) ";
		$linkquery .= "LEFT JOIN " . $this->db_prefix() . "links_extrainfo le ON (l.link_id = le.link_id) ";
		$linkquery .= "WHERE tt.taxonomy = 'link_category' ";

		if ($hide_if_empty)
			$linkquery .= "AND l.link_id is not NULL AND l.link_description not like '%LinkLibrary:AwaitingModeration:RemoveTextToApprove%' ";

		if ($categorylist != "" || isset($_GET['cat_id']))
			$linkquery .= " AND t.term_id in (" . $categorylist. ")";

		if ( isset($categoryname) && $categoryname != "" && $showonecatmode == 'HTMLGETPERM')
			$linkquery .= " AND t.slug = '" . $categoryname. "'";

		if ($excludecategorylist != "")
			$linkquery .= " AND t.term_id not in (" . $excludecategorylist . ")";

		if ($showinvisible == false)
			$linkquery .= " AND l.link_visible != 'N'";

		if (isset($_GET['searchll']) && $_GET['searchll'] != "")
		{
            $searchterms = array();
            $searchstring = $_GET['searchll'];

            $offset = 0;
            while ( strpos( $searchstring, '"', $offset ) !== false ) {
                if ( $offset == 0 ) {
                    $offset = strpos( $searchstring, '"' );
                } else {
                    $endpos = strpos( $searchstring, '"', $offset + 1);
                    $searchterms[] = substr( $searchstring, $offset + 1, $endpos - $offset - 2 );
                    $strlength = ( $endpos + 1 ) - ( $offset + 1 );
                    $searchstring = substr_replace( $searchstring, '', $offset - 1, $endpos + 2 - ( $offset)  );
                    $offset = 0;
                }
            }

            if ( !empty( $searchstring ) )
            {
                $searchterms = array_merge( $searchterms, explode(" ", $searchstring ) );
            }

			if ($searchterms)
			{
				$mode = "search";
				$termnb = 1;

				foreach($searchterms as $searchterm)
				{
                    if ( !empty( $searchterm ) ) {
                        $searchterm = str_replace( '--', '', $searchterm );
                        $searchterm = str_replace( ';', '', $searchterm );
                        $searchterm = esc_html( stripslashes( $searchterm ) );
                        if ( $searchterm  == true )
                        {
                            if ($termnb == 1)
                            {
                                $linkquery .= ' AND (link_name like "%' . $searchterm . '%" ';
                                $termnb++;
                            }
                            else
                            {
                                $linkquery .= ' OR link_name like "%' . $searchterm . '%" ';
                            }

                            if ($hidecategorynames == false)
                                $linkquery .= ' OR name like "%' . $searchterm . '%" ';
                            if ($shownotes)
                                $linkquery .= ' OR link_notes like "%' . $searchterm . '%" ';
                            if ($showdescription)
                                $linkquery .= ' OR link_description like "%' . $searchterm . '%" ';
                            if ($showlargedescription)
                                $linkquery .= ' OR link_textfield like "%' . $searchterm . '%" ';
                        }
                    }
				}

				$linkquery .= ")";
			}
		}
		else
			$mode = "normal";

		$linkquery .= " ORDER by ";

		if ($featuredfirst == true)
			$linkquery .= "link_featured DESC, ";

		if ($order == "name")
			$linkquery .= " name " . $direction;
		elseif ($order == "id")
			$linkquery .= " t.term_id " . $direction;
		elseif ($order == "order")
			$linkquery .= " t.term_order " . $direction;
		elseif ($order == "catlist")
			$linkquery .= " FIELD(t.term_id," . $categorylist . ") ";

		if ($linkorder == "name" || $linkorder == 'random')
			$linkquery .= ", l.link_name " . $linkdirection;
		elseif ($linkorder == "id")
			$linkquery .= ", l.link_id " . $linkdirection;
		elseif ($linkorder == "order")
			$linkquery .= ", l.link_order ". $linkdirection;
		elseif ($linkorder == "date")
			$linkquery .= ", l.link_updated ". $linkdirection;

		if ($pagination && $mode != 'search')
		{
			$linkitemsforcount = $wpdb->get_results($linkquery);

			$numberoflinks = count($linkitemsforcount);

			$quantity = $linksperpage + 1;

            if ( isset( $_POST['linkresultpage'] ) || isset( $_GET['linkresultpage'] ) ) {

                if ( isset( $_POST['linkresultpage'] ) ) {
                    $pagenumber = $_POST['linkresultpage'];
                } elseif ( isset( $_GET['linkresultpage'] ) ) {
                    $pagenumber = $_GET['linkresultpage'];
                }

				$startingitem = ($pagenumber - 1) * $linksperpage;
				$linkquery .= " LIMIT " . $startingitem . ", " . $quantity;
			} else {
				$pagenumber = 1;
				$linkquery .= " LIMIT 0, " . $quantity;
			}
		}

		$linkitems = $wpdb->get_results($linkquery, ARRAY_A);

		if ($debugmode)
		{
			$output .= "n<!-- Link Query: " . print_r($linkquery, TRUE) . "-->nn";
			$output .= "n<!-- Link Results: " . print_r($linkitems, TRUE) . "-->nn";
		}

		if ($pagination)
		{
			if ($linksperpage == 0 && $linksperpage == '')
				$linksperpage = 5;

			if (count($linkitems) > $linksperpage)
			{
				array_pop($linkitems);
				$nextpage = true;
			}
			else
				$nextpage = false;

			if( isset( $numberoflinks ) ) {
				$preroundpages = $numberoflinks / $linksperpage;
				$numberofpages = ceil( $preroundpages * 1 ) / 1;
			}
		}

		if ($linkorder == 'random')
		{
			shuffle($linkitems);
		}

		if ( $maxlinks != '' ) {
			if ( is_numeric( $maxlinks ) ) {
				array_splice( $linkitems, $maxlinks );
			}
		}

        if ($pagination && $mode != "search" && $paginationposition == 'BEFORE' )
        {
            $previouspagenumber = $pagenumber - 1;
            $nextpagenumber = $pagenumber + 1;
            $pageID = get_the_ID();

            $output .= $this->link_library_display_pagination( $previouspagenumber, $nextpagenumber, $numberofpages, $pagenumber, $showonecatonly, $showonecatmode, $AJAXcatid, $settings, $pageID );
        }

        echo "<!-- showonecatmode: " . $showonecatonly . ", AJAXnocatset: " . $AJAXnocatset . ", nocatonstartup: " . $nocatonstartup . "-->";

		// Display links
        if ( ( $linkitems && $showonecatonly && $AJAXnocatset && $nocatonstartup && !isset( $_GET['searchll'] ) ) || ( empty( $linkitems ) && $nocatonstartup && empty( $_GET['searchll'] ) ) ) {
                $output .= "<div id='linklist" . $settings . "' class='linklist'>n";
                $output .= '</div>';
        } elseif ( $linkitems ) {
			$output .= "<div id='linklist" . $settings . "' class='linklist'>n";

			if ( $mode == 'search' ) {
				$output .= "<div class='resulttitle'>" . __('Search Results for', 'link-library') . " '" . stripslashes( $_GET['searchll'] ) . "'</div>";
			}

			$currentcategoryid = -1;

            $xpath = $this->relativePath( dirname( __FILE__ ), ABSPATH );

			foreach ( $linkitems as $linkitem ) {

				if ($currentcategoryid != $linkitem['term_id'])
				{
					if ($currentcategoryid != -1 && $showonecatonly && $_GET['searchll'] == "")
					{
						break;
					}
					if ($currentcategoryid != -1)
					{
						// Close the last category
						if ($displayastable)
							$output .= "t</table>n";
						else
							$output .= "t</ul>n";

						if ($catlistwrappers != '')
							$output .= "</div>";

			            if ( $showlinksonclick ) {
							$output .= "</div>";
						}

						$output .= "</div>";

						$currentcategory = $currentcategory + 1;
					}

					$currentcategoryid = $linkitem['term_id'];
					$output .= "<div class='LinkLibraryCat LinkLibraryCat" . $currentcategoryid . "'>";
					$linkcount = 0;
                    $catlink = '';
                    $cattext = '';
                    $catenddiv = '';

					if ($catlistwrappers == 1)
						$output .= "<div class="" . $beforecatlist1 . "">";
					else if ($catlistwrappers == 2)
					{
						$remainder = $currentcategory % $catlistwrappers;
						switch ($remainder) {

							case 0:
								$output .= "<div class="" . $beforecatlist2 . "">";
								break;

							case 1:
								$output .= "<div class="" . $beforecatlist1 . "">";
								break;
						}
					}
					else if ($catlistwrappers == 3)
					{
						$remainder = $currentcategory % $catlistwrappers;
						switch ($remainder) {

							case 0:
								$output .= "<div class="" . $beforecatlist3 . "">";
								break;

							case 2:
								$output .= "<div class="" . $beforecatlist2 . "">";
								break;

							case 1:
								$output .= "<div class="" . $beforecatlist1 . "">";
								break;
						}
					}

					// Display the category name
					if ($hidecategorynames == false || $hidecategorynames == "")
					{
                        $caturl = get_metadata( 'linkcategory', $linkitem['term_id'], 'linkcaturl', true );

						if ($catanchor)
							$cattext = '<div id="' . $linkitem['slug'] . '">';
						else
							$cattext = '';

						if ($divorheader == false)
						{
							if ($mode == "search")
								foreach ($searchterms as $searchterm)
								{
									$linkitem['name'] = $this->ll_highlight_phrase($linkitem['name'], $searchterm, '<span class="highlight_word">', '</span>');
								}

							$catlink = '<div class="' . $catnameoutput . '">';

							if ($catdescpos == "right" || $catdescpos == '') {
                                if ( !empty( $caturl ) ) {
                                    $catlink .= '<a href="' . $this->addhttp( $caturl ) . '" ';

                                    if ( !empty( $linktarget ) )
                                        $catlink .= ' target="' . $linktarget . '"';

                                    $catlink .= '>';
                                }
                                $catlink .= $linkitem['name'];
                                if ( !empty( $caturl ) ) {
                                    $catlink .= '</a>';
                                }
                            }

							if ($showcategorydesclinks)
							{
								$catlink .= "<span class='linklistcatnamedesc'>";
								$linkitem['description'] = str_replace("[", "<", $linkitem['description']);
								$linkitem['description'] = str_replace("]", ">", $linkitem['description']);
								$catlink .= $linkitem['description'];
								$catlink .= '</span>';
							}

							if ($catdescpos == "left") {
                                if ( !empty( $caturl ) ) {
                                    $catlink .= '<a href="' . $this->addhttp( $caturl ) . '" ';

                                    if ( !empty( $linktarget ) )
                                        $catlink .= ' target="' . $linktarget . '"';

                                    $catlink .= '>';
                                }
                                $catlink .= $linkitem['name'];
                                if ( !empty( $caturl ) ) {
                                    $catlink .= '</a>';
                                }
                            }

                            if ( $showlinksonclick ) {
                                $catlink .= '<span class="expandlinks" id="LinksInCat' . $linkitem['term_id'] . '">';
                                $catlink .= '<img src="' . plugins_url( 'icons/expand-32.png', __FILE__ ) . '" />';
                                $catlink .= '</span>';
                            }

							$catlink .= "</div>";
						}
						else if ($divorheader == true)
						{
							if ($mode == "search")
							foreach ($searchterms as $searchterm)
							{
								$linkitem['name'] = $this->ll_highlight_phrase($linkitem['name'], $searchterm, '<span class="highlight_word">', '</span>');
							}

							$catlink = '<div class="'. $catnameoutput . '">';

							if ($catdescpos == "right" || $catdescpos == '') {
                                if ( !empty( $caturl ) ) {
                                    $catlink .= '<a href="' . $this->addhttp( $caturl ). '" ';

                                    if ( !empty( $linktarget ) )
                                        $catlink .= ' target="' . $linktarget . '"';

                                    $catlink .= '>';
                                }
                                $catlink .= $linkitem['name'];
                                if ( !empty( $caturl ) ) {
                                    $catlink .= '</a>';
                                }
                            }


							if ($showcategorydesclinks)
							{
								$catlink .= "<span class='linklistcatnamedesc'>";
								$linkitem['description'] = str_replace("[", "<", $linkitem['description']);
								$linkitem['description'] = str_replace("]", ">", $linkitem['description']);
								$catlink .= $linkitem['description'];
								$catlink .= '</span>';
							}

							if ($catdescpos == "left") {
                                if ( !empty( $caturl ) ) {
                                    $catlink .= '<a href="' . $this->addhttp( $caturl ) . '" ';

                                    if ( !empty( $linktarget ) )
                                        $catlink .= ' target="' . $linktarget . '"';

                                    $catlink .= '>';
                                }
                                $catlink .= $linkitem['name'];
                                if ( !empty( $caturl ) ) {
                                    $catlink .= '</a>';
                                }
                            }

                            if ( $showlinksonclick ) {
                                $catlink .= '<span class="expandlinks" id="LinksInCat' . $linkitem['term_id'] . '">';
                                $catlink .= '<img src="' . plugins_url( 'icons/expand-32.png', __FILE__ ) . '" />';
                                $catlink .= '</span>';
                            }

							$catlink .= '</div>';
						}

						if ($catanchor)
							$catenddiv = '</div>';
						else
							$catenddiv = '';
					}

                    $output .= $cattext . $catlink . $catenddiv;

                    if ( $showlinksonclick ) {
                        $output .= '<div class="LinksInCat' . $currentcategoryid . ' LinksInCat">';
                    }

					if ($displayastable == true)
					{
						$catstartlist = "nt<table class='linklisttable'>n";
						if ($showcolumnheaders == true)
						{
							$catstartlist .= "<div class='linklisttableheaders'><tr>";

							if ($linkheader != "")
								$catstartlist .= "<th><div class='linklistcolumnheader'>".$linkheader."</div></th>";

							if ($descheader != "")
								$catstartlist .= "<th><div class='linklistcolumnheader'>".$descheader."</div></th>";

							if ($notesheader != "")
								$catstartlist .= "<th><div class='linklistcolumnheader'>".$notesheader."</div></th>";

							$catstartlist .= "</tr></div>n";
						}
						else
							$catstartlist .= '';
					}
					else
						$catstartlist = "nt<ul>n";

					$output .= $catstartlist;
				}

				$between = "n";

				if ($rssfeedinline == true)
					include_once(ABSPATH . WPINC . '/feed.php');

				if ($showuserlinks == true || strpos($linkitem['link_description'], "LinkLibrary:AwaitingModeration:RemoveTextToApprove") == false)
				{
					$linkcount = $linkcount + 1;

					if ($linkaddfrequency > 0)
						if (($linkcount - 1) % $linkaddfrequency == 0)
							$output .= stripslashes($addbeforelink);

					if (!isset($linkitem['recently_updated'])) $linkitem['recently_updated'] = false;
					$output .= stripslashes($beforeitem);
					if ($showupdated && $linkitem['recently_updated'])
						$output .= get_option('links_recently_updated_prepend');

					$the_link = '#';
					if (!empty($linkitem['link_url']) )
						$the_link = esc_html($linkitem['link_url']);

					$the_second_link = '#';
					if (!empty($linkitem['link_second_url']) )
						$the_second_link = esc_html($linkitem['link_second_url']);

					$rel = $linkitem['link_rel'];
					if ('' != $rel and !$nofollow and !$linkitem['link_no_follow'])
						$rel = ' rel="' . $rel . '"';
					else if ('' != $rel and ($nofollow or $linkitem['link_no_follow']))
						$rel = ' rel="' . $rel . ' nofollow"';
					else if ('' == $rel and ($nofollow or $linkitem['link_no_follow']))
						$rel = ' rel="nofollow"';

					if ($use_html_tags) {
						$descnotes = $linkitem['link_notes'];
						$descnotes = str_replace("[", "<", $descnotes);
						$descnotes = str_replace("]", ">", $descnotes);
					}
					else
						$descnotes = esc_html($linkitem['link_notes'], ENT_QUOTES);

					if ($use_html_tags) {
						$desc = $linkitem['link_description'];
						$desc = str_replace("[", "<", $desc);
						$desc = str_replace("]", ">", $desc);
					} else {
						$desc = esc_html($linkitem['link_description'], ENT_QUOTES);
					}

					$cleandesc = $desc;
					$cleanname = esc_html($linkitem['link_name'], ENT_QUOTES);

                    if ( $use_html_tags ) {
                        $textfield = stripslashes( $linkitem['link_textfield'] );
                        $textfield = str_replace( '[', '<', $textfield );
						$textfield = str_replace( ']', '>', $textfield );
                    } else {
                        $textfield = stripslashes( $linkitem['link_textfield'] );
                    }


					if ($mode == "search")
					{
						foreach ($searchterms as $searchterm)
						{
							$descnotes = $this->ll_highlight_phrase($descnotes, $searchterm, '<span class="highlight_word">', '</span>');
							$desc = $this->ll_highlight_phrase($desc, $searchterm, '<span class="highlight_word">', '</span>');
							$name = $this->ll_highlight_phrase($linkitem['link_name'], $searchterm, '<span class="highlight_word">', '</span>');
							$textfield = $this->ll_highlight_phrase($textfield, $searchterm, '<span class="highlight_word">', '</span>');
						}
				}
					else
						$name = $cleanname;

                    if ( $linktitlecontent == 'linkname' ) {
                        $title = $cleanname;
                    } elseif ($linktitlecontent == 'linkdesc' ) {
                        $title = $cleandesc;
                    }

					if ($showupdated) {
					   if (substr($linkitem['wp.dev'],0,2) != '00') {
							$title .= ' ('.__('Last updated', 'link-library') . '  ' . date_i18n(get_option('links_updated_date_format'), strtotime( $linkitem['link_updated'] ) ) .')';
						}
					}

					if (!empty( $title ) )
						$title = ' title="' . $title . '"';

					$alt = ' alt="' . $cleanname . '"';

					$target = $linkitem['link_target'];
					if ('' != $target)
						$target = ' target="' . $target . '"';
					else
					{
						$target = $linktarget;
						if ('' != $target)
							$target = ' target="' . $target . '"';
					}

					if ($dragndroporder == '') $dragndroporder = '1,2,3,4,5,6,7,8,9,10';
						$dragndroparray = explode(',', $dragndroporder);
						if ($dragndroparray)
						{
							foreach ($dragndroparray as $arrayelements) {
								switch ($arrayelements) {
									case 1: 	//------------------ Image Output --------------------
                                        $imageoutput = '';
										if ( (($linkitem['link_image'] != '' || $usethumbshotsforimages)) && ($show_images)) {
											$imageoutput .= stripslashes($beforeimage) . '<a href="';

                                            if ( !$enablelinkpopup ) {
                                                if ($sourceimage == 'primary' || $sourceimage == '')
                                                    $imageoutput .= $the_link;
                                                elseif ($sourceimage == 'secondary')
                                                    $imageoutput .= $the_second_link;
                                            } else {
                                                    $imageoutput .= home_url() . '/?link_library_popup_content=1&linkid=' . $linkitem['proper_link_id'] . '&settings=' . $settings . '&height=' . ( empty( $popupheight ) ? 300 : $popupheight ) . '&width=' . ( empty( $popupwidth ) ? 400 : $popupwidth ) . '&xpath=' . $xpath;
                                                }

											$imageoutput .= '" id="link-' . $linkitem['proper_link_id'] . '" class="' . ( $enablelinkpopup ? 'thickbox' : 'track_this_link' ) . ' ' . ( $linkitem['link_featured'] ? 'featured' : '' ). '" ' . $rel . $title . $target. '>';

											if ( $usethumbshotsforimages && ( !$uselocalimagesoverthumbshots || empty( $uselocalimagesoverthumbshots ) || ( $uselocalimagesoverthumbshots && empty( $linkitem['link_image'] ) ) ) ) {
												if ( !empty( $thumbshotscid ) )
													$imageoutput .= '<img src="http://free.pagepeeker.com/v2/thumbs.php?size=s&url='  . $the_link . '"';


											} else if ( !$usethumbshotsforimages || ( $usethumbshotsforimages && $uselocalimagesoverthumbshots && !empty( $linkitem['link_image'] ) ) ) {
                                                if ( strpos($linkitem['link_image'], 'http') !== false )
                                                    $imageoutput .= '<img src="http://free.pagepeeker.com/v2/thumbs.php?size=s&url='  . $the_link . '"';
                                                else // If it's a relative path
                                                    $imageoutput .= '<img src="http://free.pagepeeker.com/v2/thumbs.php?size=s&url='  . $the_link . '"';
                                            }

                                            if ( !$usethumbshotsforimages || ($usethumbshotsforimages && !empty( $thumbshotscid ) ) || ( $usethumbshotsforimages && $uselocalimagesoverthumbshots && !empty( $linkitem['link_image'] ) ) ) {

                                                $imageoutput .= $alt . $title;

                                                if ($imageclass != '')
                                                    $imageoutput .= ' class="' . $imageclass . '" ';

                                                $imageoutput .= "/>";

                                                $imageoutput .= '</a>' . stripslashes($afterimage);
                                            }
                                        }

										if ( ( !empty( $imageoutput ) || ( $usethumbshotsforimages && !empty( $thumbshotscid ) ) )  && ($show_images) ) {
											$output .= $imageoutput;
											break;
										}
										elseif ($show_images == false || $shownameifnoimage == false)
											break;

									case 2: 	//------------------ Name Output --------------------
										if (($showname == true) || ($show_images == true && $linkitem['link_image'] == '' && $arrayelements == 1))
										{
											$output .= stripslashes($beforelink);

											if (($sourcename == 'primary' && $the_link != '#') || ($sourcename == 'secondary' && $the_second_link != '#'))
											{
												$output .= '<a href="';

												if ( !$enablelinkpopup ) {
                                                    if ( $sourcename == 'primary' || $sourcename == '' )
                                                        $output .= $the_link;
                                                    elseif ( $sourcename == 'secondary' )
    													$output .= $the_second_link;
                                                } else {
                                                    $output .= home_url() . '/?link_library_popup_content=1&linkid=' . $linkitem['proper_link_id'] . '&settings=' . $settings . '&height=' . ( empty( $popupheight ) ? 300 : $popupheight ) . '&width=' . ( empty( $popupwidth ) ? 400 : $popupwidth ) . '&xpath=' . $xpath;
                                                }

												$output .= '" id="link-' . $linkitem['proper_link_id'] . '" class="' . ( $enablelinkpopup ? 'thickbox' : 'track_this_link' ) . ' ' . ( $linkitem['link_featured'] ? ' featured' : '' ). '" ' . $rel . $title . $target. '>';
											}

											$output .= $name;

											if (($sourcename == 'primary' && $the_link != '#') || ($sourcename == 'secondary' && $the_second_link != '#'))
												$output .= '</a>';

											if (($showadmineditlinks) && current_user_can("manage_links")) {
												$output .= $between . '<a href="' . add_query_arg( array( 'action' => 'edit', 'link_id' => $linkitem['proper_link_id'] ), admin_url( 'link.php' ) ) . '">(' . __('Edit', 'link-library') . ')</a>';
											}

											if ($showupdated && $linkitem['recently_updated']) {
												$output .= get_option('links_recently_updated_append');
											}

											$output .= stripslashes($afterlink);
										}

										break;

									case 3: 	//------------------ Date Output --------------------

										$formatteddate = date_i18n(get_option('links_updated_date_format'), $linkitem['link_date']);

										if ($showdate)
											$output .= $between . stripslashes($beforedate) . $formatteddate . stripslashes($afterdate);

										break;

									case 4: 	//------------------ Description Output --------------------

										if ($showdescription)
											$output .= $between . stripslashes($beforedesc) . $desc . stripslashes($afterdesc);

										break;

									case 5: 	//------------------ Notes Output --------------------

										if ($shownotes) {
											$output .= $between . stripslashes($beforenote) . $descnotes . stripslashes($afternote);
										}

										break;

									case 6: 	//------------------ RSS Icons Output --------------------

										if ($show_rss || $show_rss_icon || $rsspreview)
											$output .= stripslashes($beforerss) . '<div class="rsselements">';

										if ($show_rss && ($linkitem['link_rss'] != '')) {
											$output .= $between . '<a class="rss" href="' . $linkitem['link_rss'] . '">RSS</a>';
										}
										if ($show_rss_icon && ($linkitem['link_rss'] != '')) {
											$output .= $between . '<a class="rssicon" href="' . $linkitem['link_rss'] . '"><img src="' . plugins_url( 'icons/feed-icon-14x14.png', __FILE__ ) . '" /></a>';
										}
										if ($rsspreview && $linkitem['link_rss'] != '')
										{
											$output .= $between . '<a href="' . home_url() . '/?link_library_rss_preview=1&keepThis=true&linkid=' . $linkitem['proper_link_id'] . '&previewcount=' . $rsspreviewcount . 'height=' . (($rsspreviewwidth == "") ?  900 : $rsspreviewwidth) . '&width=' . (($rsspreviewheight == "") ? 700 : $rsspreviewheight) . '&xpath=' . urlencode( $xpath ) . '" title="' . __('Preview of RSS feed for', 'link-library') . ' ' . $cleanname . '" class="thickbox"><img src="' . plugins_url( 'icons/preview-16x16.png', __FILE__ ) . '" /></a>';
										}

										if ($show_rss || $show_rss_icon || $rsspreview)
											$output .= '</div>' . stripslashes($afterrss);

										if ($rssfeedinline && $linkitem['link_rss'])
										{
											$rss = fetch_feed($linkitem['link_rss']);
											if (!is_wp_error( $rss ) ) :
												$maxitems = $rss->get_item_quantity($rssfeedinlinecount);

												$rss_items = $rss->get_items(0, $maxitems);

												if ($rss_items)
												{
													$output .= '<div id="ll_rss_results">';

													foreach($rss_items as $item)
													{
														$output .= '<div class="chunk" style="padding:0 5px 5px;">';
														$output .= '<div class="rsstitle"><a target="feedwindow" href="' . $item->get_permalink() . '">' . $item->get_title() . '</a> - ' . $item->get_date('j F Y | g:i a') . '</div>';
														if ($rssfeedinlinecontent) $output .= '<div class="rsscontent">' . $item->get_description() . '</div>';
														$output .= '</div>';
														$output .= '<br />';													}

													$output .= '</div>';
												}

											endif;
										}
										break;
									case 7: 	//------------------ Web Link Output --------------------

										if ($displayweblink != 'false') {
											$output .= $between . stripslashes($beforeweblink) . "<a href='";

											if ($sourceweblink == "primary" || $sourceweblink == "")
												$output .= $the_link;
											elseif ($sourceweblink == "secondary")
												$output .= $the_second_link;

											$output .= "' id='link-" . $linkitem['proper_link_id'] . "' class='track_this_link' " . $target . ">";

											if ($displayweblink == 'address')
											{
												if (($sourceweblink == "primary" || $sourceweblink == '') && $the_link != '')
													$output .= $the_link;
												elseif ($sourceweblink == "secondary" && $the_second_link != '')
													$output .= $the_second_link;
											}
											elseif ($displayweblink == 'label' && $weblinklabel != '')
												$output .= $weblinklabel;

											$output .= "</a>" . stripslashes($afterweblink);
										}

										break;
									case 8: 	//------------------ Telephone Output --------------------

										if ($showtelephone != 'false')
										{
											$output .= $between . stripslashes($beforetelephone);

											if ($showtelephone != 'plain')
											{
												$output .= "<a href='";

												if (($sourcetelephone == "primary" || $sourcetelephone == '') && $the_link != '')
													$output .= $the_link;
												elseif ($sourcetelephone == "secondary" && $the_second_link != '')
													$output .= $the_second_link;

												$output .= "' id='link-" . $linkitem['proper_link_id'] . "' class='track_this_link' >";
											}

											if ($showtelephone == 'link' || $showtelephone == "plain")
												$output .= $linkitem['link_telephone'];
											elseif ($showtelephone == 'label')
												$output .= $telephonelabel;

											if ($showtelephone != 'plain')
												$output .= "</a>";

											$output .= stripslashes($aftertelephone);
										}
										break;
									case 9: 	//------------------ E-mail Output --------------------

										if ($showemail != 'false')
										{
											$output .= $between . stripslashes($beforeemail);

											if ($showemail != 'plain')
											{
												$output .= "<a href='";

												if ($showemail == 'mailto' || $showemail == 'mailtolabel')
													$output .= "mailto:" . $linkitem['link_email'];
												elseif ($showemail == 'command' || $showemail == 'commandlabel')
												{
													$newcommand = str_replace("#email", $linkitem['link_email'], $emailcommand);
													$cleanlinkname = str_replace(" ", "%20", $linkitem['link_name']);
													$newcommand = str_replace("#company", $cleanlinkname, $newcommand);
													$output .= $newcommand;
												}

												$output .= "'>";
											}

											if ($showemail == 'plain' || $showemail == 'mailto' || $showemail == 'command')
												$output .= $linkitem['link_email'];
											elseif ($showemail == 'mailtolabel' || $showemail == 'commandlabel')
												$output .= $emaillabel;

											if ($showemail != 'plain')
												$output .= "</a>";

											$output .= stripslashes($afteremail);
										}

										break;
									case 10: 	//------------------ Link Hits Output --------------------

										if ($showlinkhits)
										{
											$output .= $between . stripslashes($beforelinkhits);

											$output .= $linkitem['link_visits'];

											$output .= stripslashes($afterlinkhits);
										}

										break;

									case 11: 	//------------------ Link Rating Output --------------------

										if ($showrating)
										{
											$output .= $between . stripslashes($beforelinkrating);

											$output .= $linkitem['link_rating'];

											$output .= stripslashes($afterlinkrating);
										}

										break;

									case 12: 	//------------------ Link Large Description Output --------------------

										if ($showlargedescription)
										{
											$output .= $between . stripslashes($beforelargedescription);

											$output .= $textfield;

											$output .= stripslashes($afterlargedescription);
										}

										break;
									}
								}
							}

					$output .= stripslashes($afteritem) . "n";

					if ($linkaddfrequency > 0)
						if ($linkcount % $linkaddfrequency == 0)
							$output .= stripslashes($addafterlink);

				}

			} // end while

			// Close the last category
			if ($displayastable)
				$output .= "t</table>n";
			else
				$output .= "t</ul>n";

			if ($catlistwrappers != '')
				$output .= "</div>";

            if ( $showlinksonclick ) {
                $output .= "</div>";
            }

			$output .= "</div>";

			if ( $pagination && $mode != "search" && ( $paginationposition == 'AFTER' || empty( $pagination ) ) ) {
                $previouspagenumber = $pagenumber - 1;
                $nextpagenumber = $pagenumber + 1;
                $pageID = get_the_ID();

                $output .= $this->link_library_display_pagination( $previouspagenumber, $nextpagenumber, $numberofpages, $pagenumber, $showonecatonly, $showonecatmode, $AJAXcatid, $settings, $pageID );
			}

			$xpath = $this->relativePath( dirname( __FILE__ ), ABSPATH );
            $nonce = wp_create_nonce( 'll_tracker' );

			$output .= "<script type='text/javascript'>n";
			$output .= "jQuery(document).ready(function()n";
			$output .= "{n";
			$output .= "jQuery('a.track_this_link').click(function() {n";
			$output .= "linkid = this.id;n";
			$output .= "linkid = linkid.substring(5);";
			$output .= "path = '" . $xpath . "';";
			$output .= "jQuery.ajax( {" .
                       "    type: 'POST'," .
                       "    url: '" . admin_url( 'admin-ajax.php' ) . "', " .
                       "    data: { action: 'link_library_tracker', " .
                       "            _ajax_nonce: '" . $nonce . "', " .
                       "            id:linkid, xpath:path } " .
                       "    });n";
			$output .= "return true;n";
			$output .= "});n";
            $output .= "jQuery('#linklist" . $settings . " .expandlinks').click(function() {n";
            $output .= "target = '.' + jQuery(this).attr('id');n";
            $output .= "if ( jQuery( target ).is(':visible') ) {n";
            $output .= "jQuery(target).slideUp();n";
            $output .= "jQuery(this).children('img').attr('src', '" . plugins_url( 'icons/expand-32.png', __FILE__ ) . "');n";
            $output .= "} else {n";
            $output .= "jQuery(target).slideDown();n";
            $output .= "jQuery(this).children('img').attr('src', '" . plugins_url( 'icons/collapse-32.png', __FILE__ ) . "');n";
            $output .= "}n";
            $output .= "});n";
			$output .= "});n";
			$output .= "</script>";
			unset( $xpath );
			$currentcategory = $currentcategory + 1;

			$output .= "</div>n";

		} else if ( isset( $_GET['searchll'] ) ) {
            $output .= "<div id='linklist" . $settings . "' class='linklist'>n";
            $output .= __('No links found matching your search criteria', 'link-library') . ".n";
            $output .= "</div>";
        } else {
			$output .= "<div id='linklist" . $settings . "' class='linklist'>n";
			$output .= __('No links found', 'link-library') . ".n";
			$output .= "</div>";
		}

		$output .= "n<!-- End of Link Library Output -->nn";

		return $output;
	}

	function PrivateLinkLibrarySearchForm($searchlabel = 'Search', $searchresultsaddress = '') {

		if ($searchlabel == "") $searchlabel = __('Search', 'link-library');
		$output = "<form method='get' id='llsearch'";
                if ($searchresultsaddress != '')
                    $output .= " action='" . $searchresultsaddress . "'";
                $output .= ">n";
		$output .= "<div>n";
		$output .= "<input type='text' onfocus="this.value=''" value='" . $searchlabel . "...' name='searchll' id='searchll' />";
		$output .= "<input type='hidden' value='" .  get_the_ID() . "' name='page_id' id='page_id' />";
		$output .= "<input type='submit' value='" . $searchlabel . "' />";
		$output .= "</div>n";
		$output .= "</form>nn";

		return $output;
	}

	function PrivateLinkLibraryAddLinkForm($selectedcategorylist = '', $excludedcategorylist = '', $addnewlinkmsg = '', $linknamelabel = '', $linkaddrlabel = '',
											$linkrsslabel = '', $linkcatlabel = '', $linkdesclabel = '', $linknoteslabel = '', $addlinkbtnlabel = '', $hide_if_empty = true,
											$showaddlinkrss = false, $showaddlinkdesc = false, $showaddlinkcat = false, $showaddlinknotes = false,
											$addlinkreqlogin = false, $debugmode = false, $addlinkcustomcat = false, $linkcustomcatlabel = '',
											$linkcustomcatlistentry = 'User-submitted category (define below)', $showaddlinkreciprocal = false,
											$linkreciprocallabel = '', $showaddlinksecondurl = false, $linksecondurllabel = '',
											$showaddlinktelephone = false, $linktelephonelabel = '', $showaddlinkemail = false, $linkemaillabel = '',
											$showcaptcha = false, $captureddata = '', $linksubmitternamelabel = '', $showlinksubmittername = false,
											$linksubmitteremaillabel = '', $showaddlinksubmitteremail = false, $linksubmittercommentlabel = '',
											$showlinksubmittercomment = false, $linksubmissionthankyouurl = '', $addlinkcatlistoverride = '',
											$showcustomcaptcha = false, $customcaptchaquestion = '', $linklargedesclabel = 'Large Description', $showuserlargedescription = false, $usetextareaforusersubmitnotes = false, $settings = 1, $code = 'link-library-addlink') {

		global $wpdb;
                $output = "";

                $settingsname = 'LinkLibraryPP' . $settings;
                $options = get_option($settingsname);

                if ($code == 'link-library-addlink' || $code == 'link-library-addlinkcustommsg')
                {
                    if (isset($_GET['addlinkmessage']))
                        {
                            if ($_GET['addlinkmessage'] == 1)
                                $output = "<div class='llmessage'>" . __('Confirm code not given', 'link-library') . ".</div>";
                            elseif ($_GET['addlinkmessage'] == 2)
                                $output = "<div class='llmessage'>" . __('Captcha code is wrong', 'link-library') . ".</div>";
                            elseif ($_GET['addlinkmessage'] == 3)
                                $output = "<div class='llmessage'>" . __('Captcha code is only valid for 5 minutes', 'link-library') . ".</div>";
                            elseif ($_GET['addlinkmessage'] == 4)
                                $output = "<div class='llmessage'>" . __('No captcha cookie given. Make sure cookies are enabled', 'link-library') . ".</div>";
                            elseif ($_GET['addlinkmessage'] == 5)
                                $output = "<div class='llmessage'>" . __('Captcha answer was not provided.', 'link-library') . "</div>";
                            elseif ($_GET['addlinkmessage'] == 6)
                                $output = "<div class='llmessage'>" . __('Captcha answer is incorrect', 'link-library') . ".</div>";
                            elseif ($_GET['addlinkmessage'] == 7)
                                $output = "<div class='llmessage'>" . __('User Category was not provided correctly. Link insertion failed.', 'link-library') . "</div>";
                            elseif ($_GET['addlinkmessage'] == 8)
                            {
                                $output .= "<div class='llmessage'>" . $options['newlinkmsg'];
                                if ($options['showuserlinks'] == false)
                                        $output .= " " . $options['moderatemsg'];
                                $output .= "</div>";
                            }
                            elseif ($_GET['addlinkmessage'] == 9)
                                $output = "<div class='llmessage'>" . __('Error: Link does not have an address.', 'link-library') . "</div>";
                            elseif ($_GET['addlinkmessage'] == 10)
                                $output = "<div class='llmessage'>" . __('Error: Link already exists.', 'link-library') . "</div>";
                        }
                }

		if ($code == 'link-library-addlink' && (($addlinkreqlogin && current_user_can("read")) || !$addlinkreqlogin))
		{
			$output .= "<form method='post' id='lladdlink' action=''>n";

            $output .= wp_nonce_field('LL_ADDLINK_FORM', '_wpnonce', true, false);
            $output .= "<input type='hidden' name='thankyouurl' value='" . $linksubmissionthankyouurl . "' />";
            $output .= '<input type="hidden" name="link_library_user_link_submission" value="1" />';
            global $wp_query;
            $thePostID = $wp_query->post->ID;
            $output .= "<input type='hidden' name='pageid' value='" . $thePostID . "' />";
            $output .= "<input type='hidden' name='settingsid' value='" . $settings . "' />";

            $xpath = $this->relativePath( dirname( __FILE__ ), ABSPATH );
            $output .= "<input type='hidden' name='xpath' value='" . esc_attr( $xpath ) . "' />";
            unset( $xpath );

			$output .= "<div class='lladdlink'>n";

			if ($addnewlinkmsg == "") $addnewlinkmsg = __('Add new link', 'link-library');
			$output .= "<div id='lladdlinktitle'>" . $addnewlinkmsg . "</div>n";

			$output .= "<table>n";

			if ($linknamelabel == "") $linknamelabel = __('Link name', 'link-library');
			$output .= "<tr><th>" . $linknamelabel . "</th><td><input type='text' name='link_name' id='link_name' value='" . ( isset( $_GET['addlinkname'] ) ? esc_html(stripslashes($_GET['addlinkname']), '1') : '') . "' /></td></tr>n";

			if ($linkaddrlabel == "") $linkaddrlabel = __('Link address', 'link-library');
			$output .= "<tr><th>" . $linkaddrlabel . "</th><td><input type='text' name='link_url' id='link_url' value='" . ( isset( $_GET['addlinkurl'] ) ? esc_html(stripslashes($_GET['addlinkurl']), '1') : '' ) . "' /></td></tr>n";

			if ($showaddlinkrss)
			{
				if ($linkrsslabel == "") $linkrsslabel = __('Link RSS', 'link-library');
				$output .= "<tr><th>" . $linkrsslabel . "</th><td><input type='text' name='link_rss' id='link_rss' value='" . ( isset( $_GET['addlinkrss'] ) ? esc_html(stripslashes($_GET['addlinkrss']), '1') : '' ) . "' /></td></tr>n";
			}

			$linkcatquery = "SELECT distinct t.name, t.term_id, t.slug as category_nicename, tt.description as category_description ";
			$linkcatquery .= "FROM " . $this->db_prefix() . "terms t ";
			$linkcatquery .= "LEFT JOIN " . $this->db_prefix() . "term_taxonomy tt ON (t.term_id = tt.term_id) ";
			$linkcatquery .= "LEFT JOIN " . $this->db_prefix() . "term_relationships tr ON (tt.term_taxonomy_id = tr.term_taxonomy_id) ";

			$linkcatquery .= "WHERE tt.taxonomy = 'link_category' ";

			if ($selectedcategorylist != "")
			{
				$linkcatquery .= " AND t.term_id in (" . $selectedcategorylist. ")";
			}

			if ($excludedcategorylist != "")
			{
				$linkcatquery .= " AND t.term_id not in (" . $excludedcategorylist . ")";
			}

			$linkcatquery .= " ORDER by t.name ASC";

			$linkcats = $wpdb->get_results($linkcatquery);

			if ($debugmode)
			{
				$output .= "n<!-- Category query for add link form:" . print_r($linkcatquery, TRUE) . "-->nn";
				$output .= "n<!-- Results of Category query for add link form:" . print_r($linkcats, TRUE) . "-->n";
			}

			if ($linkcats)
			{
				if ($showaddlinkcat)
				{
					if ($linkcatlabel == "") $linkcatlabel = __('Link category', 'link-library');

					$output .= "<tr><th>" . $linkcatlabel . "</th><td><SELECT name='link_category' id='link_category'>";

					if ($linkcustomcatlistentry == "") $linkcustomcatlistentry = __('User-submitted category (define below)', 'link-library');

					foreach ($linkcats as $linkcat)
					{
						$output .= "<OPTION VALUE='" . $linkcat->term_id . "' ";
						if ( isset($_GET['addlinkcat']) && $_GET['addlinkcat'] == $linkcat->term_id)
							$output .= "selected";
						$output .= ">" . $linkcat->name;
					}

					if ($addlinkcustomcat)
						$output .= "<OPTION VALUE='new'>" . stripslashes($linkcustomcatlistentry) . "n";

					$output .= "</SELECT></td></tr>n";
				}
				else
				{
					$output .= "<input type='hidden' name='link_category' id='link_category' value='" . $linkcats[0]->term_id . "'>";
				}

				if ($addlinkcustomcat)
					$output .= "<tr><th>" .  $linkcustomcatlabel . "</th><td><input type='text' name='link_user_category' id='link_user_category' value='" . ( isset( $_GET['addlinkusercat']) ? esc_html(stripslashes($_GET['addlinkusercat']), '1') : '') . "' /></td></tr>n";
			}

			if ($showaddlinkdesc)
			{
				if ($linkdesclabel == "") $linkdesclabel = __('Link description', 'link-library');
				$output .= "<tr><th>" . $linkdesclabel . "</th><td><input type='text' name='link_description' id='link_description' value='" . ( isset( $_GET['addlinkdesc'] ) ? esc_html(stripslashes($_GET['addlinkdesc']), '1') : '' ) . "' /></td></tr>n";
			}

			if ($showuserlargedescription)
			{
				if ($linklargedesclabel == "") $linklargedesclabel = __('Large description', 'link-library');
				$output .= "<tr><th style='vertical-align: top'>" . $linklargedesclabel . "</th><td><textarea name='link_textfield' id='link_textfield' cols='66'>" . ( isset( $_GET['addlinktextfield'] ) ? esc_html(stripslashes($_GET['addlinktextfield']), '1') : '' ) . "</textarea></td></tr>n";
			}

			if ($showaddlinknotes)
			{
				if ($linknoteslabel == "") $linknoteslabel = __('Link notes', 'link-library');
				$output .= "<tr><th>" . $linknoteslabel . "</th><td>";

				if ($usetextareaforusersubmitnotes == false || $usetextareaforusersubmitnotes == '')
					$output .= "<input type='text' name='link_notes' id='link_notes' value='";
				elseif ($usetextareaforusersubmitnotes == true)
					$output .= "<textarea name='link_notes' id='link_notes'>";

				$output .= ( isset( $_GET['addlinknotes'] ) ? esc_html(stripslashes($_GET['addlinknotes']), '1') : '' );

				if ($usetextareaforusersubmitnotes == false || $usetextareaforusersubmitnotes == '')
					$output .= "' />";
				elseif ($usetextareaforusersubmitnotes == true)
					$output .= "</textarea>";

				$output .= "</td></tr>n";
			}

			if ($showaddlinkreciprocal)
			{
				if ($linkreciprocallabel == "") $linkreciprocallabel = __('Reciprocal Link', 'link-library');
				$output .= "<tr><th>" . $linkreciprocallabel . "</th><td><input type='text' name='ll_reciprocal' id='ll_reciprocal' value='" . ( isset( $_GET['addlinkreciprocal'] ) ? esc_html(stripslashes($_GET['addlinkreciprocal']), '1') : '' ) . "' /></td></tr>n";
			}

			if ($showaddlinksecondurl)
			{
				if ($linksecondurllabel == "") $linksecondurllabel = __('Secondary Address', 'link-library');
				$output .= "<tr><th>" . $linksecondurllabel . "</th><td><input type='text' name='ll_secondwebaddr' id='ll_secondwebaddr' value='" . ( isset( $_GET['addlinksecondurl'] ) ? esc_html(stripslashes($_GET['addlinksecondurl']), '1') : '' ) . "' /></td></tr>n";
			}

			if ($showaddlinktelephone)
			{
				if ($linktelephonelabel == "") $linktelephonelabel = __('Telephone', 'link-library');
				$output .= "<tr><th>" . $linktelephonelabel . "</th><td><input type='text' name='ll_telephone' id='ll_telephone' value='" . ( isset( $_GET['addlinktelephone'] ) ? esc_html(stripslashes($_GET['addlinktelephone']), '1') : '' ) . "' /></td></tr>n";
			}

			if ($showaddlinkemail)
			{
				if ($linkemaillabel == "") $linkemaillabel = __('E-mail', 'link-library');
				$output .= "<tr><th>" . $linkemaillabel . "</th><td><input type='text' name='ll_email' id='ll_email' value='" . ( isset( $_GET['addlinkemail'] ) ? esc_html(stripslashes($_GET['addlinkemail']), '1') : '' ) . "' /></td></tr>n";
			}

			if ($showlinksubmittername)
			{
				if ($linksubmitternamelabel == "") $linksubmitternamelabel = __('Submitter Name', 'link-library');
				$output .= "<tr><th>" . $linksubmitternamelabel . "</th><td><input type='text' name='ll_submittername' id='ll_submittername' value='" . ( isset( $_GET['addlinksubmitname'] ) ? esc_html(stripslashes($_GET['addlinksubmitname']), '1') : '' ) . "' /></td></tr>n";
			}

			if ($showaddlinksubmitteremail)
			{
				if ($linksubmitteremaillabel == "") $linksubmitteremaillabel = __('Submitter E-mail', 'link-library');
				$output .= "<tr><th>" . $linksubmitteremaillabel . "</th><td><input type='text' name='ll_submitteremail' id='ll_submitteremail' value='" . ( isset( $_GET['addlinksubmitemail'] ) ? esc_html(stripslashes($_GET['addlinksubmitemail']), '1') : '' ). "' /></td></tr>n";
			}

			if ($showlinksubmittercomment)
			{
				if ($linksubmittercommentlabel == "") $linksubmittercommentlabel = __('Submitter Comment', 'link-library');
				$output .= "<tr><th style='vertical-align: top;'>" . $linksubmittercommentlabel . "</th><td><textarea name='ll_submittercomment' id='ll_submittercomment' cols='38''>" . ( isset( $_GET['addlinksubmitcomment'] ) ? esc_html(stripslashes($_GET['addlinksubmitcomment']), '1') : '' ) . "</textarea></td></tr>n";
			}

			if ($showcaptcha)
			{
				$output .= "<tr><td></td><td><span id='captchaimage'><img src='" . plugins_url( 'captcha/easycaptcha.php', __FILE__ ) . "' /></span></td></tr>n";
				$output .= "<tr><th>" . __('Enter code from above image', 'link-library') . "</th><td><input type='text' name='confirm_code' /></td></tr>n";
			}

			if ($showcustomcaptcha)
			{
				if ($customcaptchaquestion == "") $customcaptchaquestion = __('Is boiling water hot or cold?', 'link-library');
				$output .= "<tr><th style='vertical-align: top;'>" . $customcaptchaquestion . "</th><td><input type='text' name='ll_customcaptchaanswer' id='ll_customcaptchaanswer' value='" . (isset( $_GET['ll_customcaptchaanswer'] ) ? esc_html(stripslashes($_GET['ll_customcaptchaanswer']), '1') : '' ) . "' /></td></tr>n";
			}

			$output .= "</table>n";

			if ($addlinkbtnlabel == "") $addlinkbtnlabel = __('Add link', 'link-library');
			$output .= '<span style="border:0;" class="LLUserLinkSubmit"><input type="submit" name="submit" value="' . $addlinkbtnlabel . '" /></span>';

			$output .= "</div>n";
			$output .= "</form>nn";
		}

		return $output;
	}

	function relativePath($from, $to, $ps = DIRECTORY_SEPARATOR) {
		$arFrom = explode($ps, rtrim($from, $ps));
		$arTo = explode($ps, rtrim($to, $ps));
		while(count($arFrom) && count($arTo) && ($arFrom[0] == $arTo[0])) {
			array_shift($arFrom);
			array_shift($arTo);
		}
		$return = str_pad("", count($arFrom) * 3, '..'.$ps).implode($ps, $arTo);

		// Don't disclose anything about the path is it's not needed, i.e. is the standard
		if( $return === '../../../' ) {
			$return = '';
        }

		return $return;
	}

	/*
	 * function LinkLibraryCategories()
	 *
	 * added by Yannick Lefebvre
	 *
	 * Output a list of all links categories, listed by category, using the
	 * settings in $wpdb->linkcategories and output it as table
	 *
	 * Parameters:
	 *   order (default 'name')  - Sort link categories by 'name' or 'id' or 'category-list'. When set to 'AdminSettings', will use parameters set in Admin Settings Panel.
	 *   hide_if_empty (default true)  - Supress listing empty link categories
	 *   table_witdh (default 100) - Width of table, percentage
	 *   num_columns (default 1) - Number of columns in table
	 *   catanchor (default true) - Determines if links to generated anchors should be created
	 *   flatlist (default 'table') - When set to true, displays an unordered list instead of a table
	 *   categorylist (default null) - Specifies a comma-separate list of the only categories that should be displayed
	 *   excludecategorylist (default null) - Specifies a comma-separate list of the categories that should not be displayed
	 *   showcategorydescheaders (default null) - Show category descriptions in category list
	 *   showonecatonly (default false) - Enable AJAX mode showing only one category at a time
	 *   settings (default NULL) - Settings Set ID, only used when showonecatonly is true
	 *   loadingicon (default NULL) - Path to icon to display when only show one category at a time
	 *   catlistdescpos (default 'right') - Position of category description relative to name
	 *   debugmode (default false)
	 *   pagination (default false)
	 *   linksperpage (default 5)
	 *   showcatlinkcount (default false)
	 *   showonecatmode (default 'AJAX')
	 *   cattargetaddress
	 *   rewritepage
	 *   showinvisible
	 */

	function LinkLibraryCategories($order = 'name', $hide_if_empty = true, $table_width = 100, $num_columns = 1, $catanchor = true,
								   $flatlist = 'table', $categorylist = '', $excludecategorylist = '', $showcategorydescheaders = false,
								   $showonecatonly = false, $settings = '', $loadingicon = '/icons/Ajax-loader.gif', $catlistdescpos = 'right', $debugmode = false,
								   $pagination = false, $linksperpage = 5, $showcatlinkcount = false, $showonecatmode = 'AJAX', $cattargetaddress = '',
								   $rewritepage = '', $showinvisible = false, $showuserlinks = true, $showcatonsearchresults = false) {

		if (strpos($order, 'AdminSettings') != false)
		{
			$settingsetid = substr($order, 13);
			$settingsetname = "LinkLibraryPP" . $settingsetid;
			$options = get_option($settingsetname);

			$genoptions = get_option('LinkLibraryGeneral');

			return $this->PrivateLinkLibraryCategories($options['order'], $options['hide_if_empty'], $options['table_width'], $options['num_columns'], $options['catanchor'], $options['flatlist'],
									 $options['categorylist'], $options['excludecategorylist'], $options['showcategorydescheaders'], $options['showonecatonly'], '',
									 $options['loadingicon'], $options['catlistdescpos'], $genoptions['debugmode'], $options['pagination'], $options['linksperpage'],
									 $options['showcatlinkcount'], $options['showonecatmode'], $options['cattargetaddress'], $options['rewritepage'], $options['showinvisible'], $options['showuserlinks'], $options['showcatonsearchresults']);
		}
		else
			return $this->PrivateLinkLibraryCategories($order, $hide_if_empty, $table_width, $num_columns, $catanchor, $flatlist, $categorylist, $excludecategorylist, $showcategorydescheaders,
			$showonecatonly, $settings, $loadingicon, $catlistdescpos, $debugmode, $pagination, $linksperpage, $showcatlinkcount, $showonecatmode, $cattargetaddress,
			$rewritepage, $showinvisible, $showuserlinks, $showcatonsearchresults);

	}

	/*
	 * function LinkLibrary()
	 *
	 * added by Yannick Lefebvre
	 *
	 * Output a list of all links, listed by category, using the
	 * settings in $wpdb->linkcategories and output it as a nested
	 * HTML unordered list. Can also insert anchors for categories
	 *
	 * Parameters:
	 *   order (default 'name')  - Sort link categories by 'name' or 'id'. When set to 'AdminSettings', will use parameters set in Admin Settings Panel.
	 *   hide_if_empty (default true)  - Supress listing empty link categories
	 *   catanchor (default true) - Adds name anchors to categorie links to be able to link directly to categories
	 *   showdescription (default false) - Displays link descriptions. Added for 2.1 since link categories no longer have this setting
	 *   shownotes (default false) - Shows notes in addition to description for links (useful since notes field is larger than description)
	 *   showrating (default false) - Displays link ratings. Added for 2.1 since link categories no longer have this setting
	 *   showupdated (default false) - Displays link updated date. Added for 2.1 since link categories no longer have this setting
	 *   categorylist (default null) - Only show links inside of selected categories. Enter category numbers in a string separated by commas
	 *   showimages (default false) - Displays link images. Added for 2.1 since link categories no longer have this setting
	 *   show_image_and_name (default false) - Show both image and name instead of only one or the other
	 *   use_html_tags (default false) - Use HTML tags for formatting instead of just displaying them
	 *   show_rss (default false) - Display RSS URI if available in link description
	 *   beforenote (default <br />) - Code to print out between the description and notes
	 *   nofollow (default false) - Adds nofollow tag to outgoing links
	 *   excludecategorylist (default null) - Specifies a comma-separate list of the categories that should not be displayed
	 *   afternote (default null) - Code / Text to be displayed after note
	 *   beforeitem (default null) - Code / Text to be displayed before item
	 *   afteritem (default null) - Code / Text to be displayed after item
	 *   beforedesc (default null) - Code / Text to be displayed before description
	 *   afterdesc (default null) - Code / Text to be displayed after description
	 *   displayastable (default false) - Display lists of links as a table (when true) or as an unordered list (when false)
	 *   beforelink (default null) - Code / Text to be displayed before link
	 *   afterlink (default null) - Code / Text to be displayed after link
	 *   showcolumnheaders (default false) - Show column headers if rendering in table mode
	 *   linkheader (default null) - Text to be shown in link column when displaying as table
	 *   descheader (default null) - Text to be shown in desc column when displaying as table
	 *   notesheader (default null) - Text to be shown in notes column when displaying as table
	 *   catlistwrappers (default 1) - Number of different sets of alternating elements to be placed before and after each link category section
	 *   beforecatlist1 (default null) - First element to be placed before a link category section
	 *   beforecatlist2 (default null) - Second element to be placed before a link category section
	 *   beforecatlist3 (default null) - Third element to be placed before a link category section
	 *   divorheader (default false) - Output div before and after cat name if false, output heading tag if true
	 *   catnameoutput (default linklistcatname) - Name of div class or heading to output
	 *   showrssicon (default false) - Output RSS URI if available and assign to standard RSS icon
	 *   linkaddfrequency (default 0) - Frequency at which extra before and after output should be placed around links
	 *   addbeforelink (default null) - Addition output to be placed before link
	 *   addafterlink (default null) - Addition output to be placed after link
	 *   linktarget (default null) - Specifies the link target window
	 *   showcategorydescheaders (default false) - Display link category description when printing category list
	 *   showcategorydesclinks (default false) - Display link category description when printing links
	 *   showadmineditlinks (default false) - Display edit links in output if logged in as administrator
	 *   showonecatonly (default false) - Only show one category at a time
	 *   AJAXcatid (default null) - Category ID for AJAX sub-queries
	 *   defaultsinglecat (default null) - ID of first category to be shown in single category mode
	 *   rsspreview (default false) - Add preview links after RSS feed addresses
	 *   rssfeedpreviewcount(default 3) - Number of RSS feed items to show in preview
	 *   rssfeedinline (default false) - Shows latest feed items inline with link list
	 *   rssfeedinlinecontent (default false) - Shows latest feed items contents inline with link list
	 *   rssfeedinlinecount (default 1) - Number of RSS feed items to show inline
	 *   beforerss (default null) - String to output before RSS block
	 *   afterrss (default null) - String to output after RSS block
	 *   rsscachedir (default null) - Path for SimplePie library to store RSS cache information - Obsolete
	 *   direction (default ASC) - Sort direction for Link Categories
	 *   linkdirection (default ASC) - Sort direction for Links within each category
	 *   linkorder (default 'name') - Sort order for Links within each category
	 *   pagination (default false) - Limit number of links displayed per page
	 *   linksperpage (default 5) - Number of links to be shown per page in Pagination Mode
	 *   hidecategorynames (default false) - Show category names in Link Library list
	 *   settings (default NULL) - Setting Set ID
	 *   showinvisible (default false) - Shows links that are set to be invisible
	 *   showdate (default false) - Determines is link update date should be displayed
	 *   beforedate (default null) - Code/Text to be displayed before link date
	 *   afterdate (default null) - Code/Text to be displated after link date
	 *   catdescpos (default 'right') - Position of link category description output
	 *   showuserlinks (default false) - Specifies if user submitted links should be shown immediately after submission
	 *   rsspreviewwidth (default 900) - Specifies the width of the box in which RSS previews are displayed
	 *   rsspreviewheight (default 700) - Specifies the height of the box in which RSS previews are displayed
	 *   beforeimage (default null) - Code/Text to be displayed before link image
	 *   afterimage (default null) - Code/Text to be displayed after link image
	 *   imagepos (default beforename) - Position of image relative to link name
	 *   imageclass (default null) - Class that will be assigned to link images
	 *   debugmode (default false) - Adds debug information as comments in the WordPress output to facilitate remote debugging
	 *   usethumbshotsforimages (default false) - Uses thumbshots.org to generate images for links
	 *   showonecatmode (default AJAX) - Method used to load different categories when only showing one at a time
	 *   dragndroporder (default 1,2,3,4,5,6,7,8,9,10) - Order to display link sub-sections
	 *   displayweblink (default 'false')
	 *   sourceweblink (default 'primary')
	 *   showtelephone (default 'false')
	 *   sourcetelephone (default 'primary')
	 *   showemail (default 'false')
	 *   showlinkhits (default false)
	 *   beforeweblink (default null)
	 *   afterweblink (default null)
	 *   weblinklabel (default null)
	 *   beforetelephone (default null)
	 *   aftertelephone (default null)
	 *   telephonelabel (default null)
	 *   beforeemail (default null)
	 *   afteremail (default null)
	 *   emaillabel (default null)
	 *   beforelinkhits (default null)
	 *   afterlinkhits (default null)
	 *   emailcommand (default null)
	 */

	function LinkLibrary($order = 'name', $hide_if_empty = true, $catanchor = true,
									$showdescription = false, $shownotes = false, $showrating = false,
									$showupdated = false, $categorylist = '', $show_images = false,
									$show_image_and_name = false, $use_html_tags = false,
									$show_rss = false, $beforenote = '<br />', $nofollow = false, $excludecategorylist = '',
									$afternote = '', $beforeitem = '<li>', $afteritem = '</li>', $beforedesc = '', $afterdesc = '',
									$displayastable = false, $beforelink = '', $afterlink = '', $showcolumnheaders = false,
									$linkheader = '', $descheader = '', $notesheader = '', $catlistwrappers = 1, $beforecatlist1 = '',
									$beforecatlist2 = '', $beforecatlist3 = '', $divorheader = false, $catnameoutput = 'linklistcatname',
									$show_rss_icon = false, $linkaddfrequency = 0, $addbeforelink = '', $addafterlink = '', $linktarget = '',
									$showcategorydesclinks = false, $showadmineditlinks = true, $showonecatonly = false, $AJAXcatid = '',
									$defaultsinglecat = '', $rsspreview = false, $rsspreviewcount = 3, $rssfeedinline = false, $rssfeedinlinecontent = false,
									$rssfeedinlinecount = 1, $beforerss = '', $afterrss = '', $rsscachedir = NULL, $direction = 'ASC',
									$linkdirection = 'ASC', $linkorder = 'name', $pagination = false, $linksperpage = 5, $hidecategorynames = false,
									$settings = '', $showinvisible = false, $showdate = false, $beforedate = '', $afterdate = '', $catdescpos = 'right',
									$showuserlinks = false, $rsspreviewwidth = 900, $rsspreviewheight = 700, $beforeimage = '', $afterimage = '', $imagepos = 'beforename',
									$imageclass = '', $AJAXpageid = 1, $debugmode = false, $usethumbshotsforimages = false, $showonecatmode = 'AJAX',
									$dragndroporder = '1,2,3,4,5,6,7,8,9,10', $showname = true, $displayweblink = 'false', $sourceweblink = 'primary', $showtelephone = 'false',
									$sourcetelephone = 'primary', $showemail = 'false', $showlinkhits = false, $beforeweblink = '', $afterweblink = '', $weblinklabel = '',
									$beforetelephone = '', $aftertelephone = '', $telephonelabel = '', $beforeemail = '', $afteremail = '', $emaillabel = '', $beforelinkhits = '',
									$afterlinkhits = '', $emailcommand = '', $sourceimage = 'primary', $sourcename = 'primary', $thumbshotscid = '',
									$maxlinks = '', $beforelinkrating = '', $afterlinkrating = '', $showlargedescription = false, $beforelargedescription = '',
									$afterlargedescription = '', $featuredfirst = false, $shownameifnoimage = false, $enablelinkpopup = false, $popupwidth = 300, $popupheight = 400, $nocatonstartup = false, $linktitlecontent = 'linkname', $paginationposition = 'AFTER', $uselocalimagesoverthumbshots = false, $showlinksonclick = false ) {

		if (strpos($order, 'AdminSettings') !== false)
		{
			$settingsetid = substr($order, 13);
			$settingsetname = "LinkLibraryPP" . $settingsetid;
			$options = get_option($settingsetname);

			$genoptions = get_option('LinkLibraryGeneral');

			return $this->PrivateLinkLibrary($options['order'], $options['hide_if_empty'], $options['catanchor'], $options['showdescription'], $options['shownotes'],
									  $options['showrating'], $options['showupdated'], $options['categorylist'], $options['show_images'],
									  false, $options['use_html_tags'], $options['show_rss'], $options['beforenote'],
									  $options['nofollow'], $options['excludecategorylist'], $options['afternote'], $options['beforeitem'],
									  $options['afteritem'], $options['beforedesc'], $options['afterdesc'], $options['displayastable'],
									  $options['beforelink'], $options['afterlink'], $options['showcolumnheaders'], $options['linkheader'],
									  $options['descheader'], $options['notesheader'], $options['catlistwrappers'], $options['beforecatlist1'],
									  $options['beforecatlist2'], $options['beforecatlist3'], $options['divorheader'], $options['catnameoutput'],
									  $options['show_rss_icon'], $options['linkaddfrequency'], $options['addbeforelink'], $options['addafterlink'],
									  $options['linktarget'], $options['showcategorydesclinks'], $options['showadmineditlinks'], $options['showonecatonly'],
									  $AJAXcatid, $options['defaultsinglecat'], $options['rsspreview'], $options['rsspreviewcount'], $options['rssfeedinline'],
									  $options['rssfeedinlinecontent'], $options['rssfeedinlinecount'], $options['beforerss'], $options['afterrss'],
									  NULL, $options['direction'], $options['linkdirection'], $options['linkorder'],
									  $options['pagination'], $options['linksperpage'], $options['hidecategorynames'], $settingsetid, $options['showinvisible'],
									  $options['showdate'], $options['beforedate'], $options['afterdate'], $options['catdescpos'], $options['showuserlinks'],
									  $options['rsspreviewwidth'], $options['rsspreviewheight'], $options['beforeimage'], $options['afterimage'], $options['imagepos'],
									  $options['imageclass'], $AJAXpageid, $genoptions['debugmode'], $options['usethumbshotsforimages'], 'AJAX', $options['dragndroporder'],
									  $options['showname'], $options['displayweblink'], $options['sourceweblink'], $options['showtelephone'], $options['sourcetelephone'],
									  $options['showemail'], $options['showlinkhits'], $options['beforeweblink'], $options['afterweblink'], $options['weblinklabel'],
									  $options['beforetelephone'], $options['aftertelephone'], $options['telephonelabel'], $options['beforeemail'], $options['afteremail'],
									  $options['emaillabel'], $options['beforelinkhits'], $options['afterlinkhits'], $options['emailcommand'], $options['sourceimage'],
									  $options['sourcename'], $genoptions['thumbshotscid'], $options['maxlinks'], $options['beforelinkrating'],
									  $options['afterlinkrating'], $options['showlargedescription'], $options['beforelargedescription'],
									  $options['afterlargedescription'], $options['featuredfirst'], $options['shownameifnoimage'], $options['enable_link_popup'],
                                      $options['popup_width'], $options['popup_height'], $options['nocatonstartup'], $options['linktitlecontent'], $options['paginationposition'], $options['uselocalimagesoverthumbshots'], $options['showlinksonclick'] );
		}
		else
			return $this->PrivateLinkLibrary($order, $hide_if_empty, $catanchor, $showdescription, $shownotes, $showrating,
									$showupdated, $categorylist, $show_images, false, $use_html_tags,
									$show_rss, $beforenote, $nofollow, $excludecategorylist, $afternote, $beforeitem, $afteritem,
									$beforedesc, $afterdesc, $displayastable, $beforelink, $afterlink, $showcolumnheaders,
									$linkheader, $descheader, $notesheader, $catlistwrappers, $beforecatlist1,
									$beforecatlist2, $beforecatlist3, $divorheader, $catnameoutput, $show_rss_icon,
									$linkaddfrequency, $addbeforelink, $addafterlink, $linktarget, $showcategorydesclinks, $showadmineditlinks,
									$showonecatonly, '', $defaultsinglecat, $rsspreview, $rsspreviewcount, $rssfeedinline, $rssfeedinlinecontent, $rssfeedinlinecount,
									$beforerss, $afterrss, NULL, $direction, $linkdirection, $linkorder,
									$pagination, $linksperpage, $hidecategorynames, $settings, $showinvisible, $showdate, $beforedate, $afterdate, $catdescpos,
									$showuserlinks, $rsspreviewwidth, $rsspreviewheight, $beforeimage, $afterimage, $imagepos, $imageclass, '', $debugmode,
									$usethumbshotsforimages, $showonecatmode, $dragndroporder, $showname, $displayweblink, $sourceweblink, $showtelephone,
									$sourcetelephone, $showemail, $showlinkhits, $beforeweblink, $afterweblink, $weblinklabel, $beforetelephone, $aftertelephone,
									$telephonelabel, $beforeemail, $afteremail, $emaillabel, $beforelinkhits, $afterlinkhits, $emailcommand, $sourceimage, $sourcename,
									$thumbshotscid, $maxlinks, $beforelinkrating, $afterlinkrating, $showlargedescription, $beforelargedescription,
									$afterlargedescription, $featuredfirst, $shownameifnoimage, $enablelinkpopup, $popupwidth, $popupheight, $nocatonstartup, $linktitlecontent, $paginationposition, $uselocalimagesoverthumbshots, $showlinksonclick );
	}

	/********************************************** Function to Process 


 shortcode *********************************************/

	function link_library_cats_func($atts) {
		$categorylistoverride = '';
		$excludecategoryoverride = '';
		$settings = '';

		extract(shortcode_atts(array(
			'categorylistoverride' => '',
			'excludecategoryoverride' => '',
			'settings' => ''
		), $atts));

		if ($settings == '')
		{
			$settings = 1;
			$options = get_option('LinkLibraryPP1');
		}
		else
		{
			$settingsname = 'LinkLibraryPP' . $settings;
			$options = get_option($settingsname);
		}

		if ($categorylistoverride != '')
			$selectedcategorylist = $categorylistoverride;
		else
			$selectedcategorylist = $options['categorylist'];

		if ($excludecategoryoverride != '')
			$excludedcategorylist = $excludecategoryoverride;
		else
			$excludedcategorylist = $options['excludecategorylist'];

		$genoptions = get_option('LinkLibraryGeneral');

		return $this->PrivateLinkLibraryCategories($options['order'], $options['hide_if_empty'], $options['table_width'], $options['num_columns'], $options['catanchor'], $options['flatlist'],
									 $selectedcategorylist, $excludedcategorylist, $options['showcategorydescheaders'], $options['showonecatonly'], $settings,
									 $options['loadingicon'], $options['catlistdescpos'], $genoptions['debugmode'], $options['pagination'], $options['linksperpage'],
									 $options['showcatlinkcount'], $options['showonecatmode'], $options['cattargetaddress'], $options['rewritepage'],
									 $options['showinvisible'], $options['showuserlinks'], $options['showcatonsearchresults']);
	}

	/********************************************** Function to Process 
shortcode *********************************************/ function link_library_search_func($atts) { $settings = ''; extract(shortcode_atts(array( 'settings' => '' ), $atts)); if ($settings == '') $options = get_option('LinkLibraryPP1'); else { $settingsname = 'LinkLibraryPP' . $settings; $options = get_option($settingsname); } return $this->PrivateLinkLibrarySearchForm($options['searchlabel'], $options['searchresultsaddress']); } /********************************************** Function to Process [link-library-add-link] shortcode *********************************************/ function link_library_insert_link( $linkdata, $wp_error = false, $addlinknoaddress = false) { global $wpdb; $link_name = ''; $link_url = ''; $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 ) == '' ) { if ( 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; } function link_library_addlink_func($atts, $content, $code) { $settings = ''; $categorylistoverride = ''; $excludecategoryoverride = ''; extract(shortcode_atts(array( 'settings' => '', 'categorylistoverride' => '', 'excludecategoryoverride' => '' ), $atts)); if ($settings == '') $settings = 1; $settingsname = 'LinkLibraryPP' . $settings; $options = get_option($settingsname); $genoptions = get_option('LinkLibraryGeneral'); if ($categorylistoverride != '') $selectedcategorylist = $categorylistoverride; elseif ($options['addlinkcatlistoverride'] != '') $selectedcategorylist = $options['addlinkcatlistoverride']; else $selectedcategorylist = $options['categorylist']; if ($excludecategoryoverride != '') $excludedcategorylist = $excludecategoryoverride; else $excludedcategorylist = $options['excludecategorylist']; return ( isset( $outputmessage ) ? $outputmessage : '') . $this->PrivateLinkLibraryAddLinkForm($selectedcategorylist, $excludedcategorylist, $options['addnewlinkmsg'], $options['linknamelabel'], $options['linkaddrlabel'], $options['linkrsslabel'], $options['linkcatlabel'], $options['linkdesclabel'], $options['linknoteslabel'], $options['addlinkbtnlabel'], $options['hide_if_empty'], $options['showaddlinkrss'], $options['showaddlinkdesc'], $options['showaddlinkcat'], $options['showaddlinknotes'], $options['addlinkreqlogin'], $genoptions['debugmode'], $options['addlinkcustomcat'], $options['linkcustomcatlabel'], $options['linkcustomcatlistentry'], $options['showaddlinkreciprocal'], $options['linkreciprocallabel'], $options['showaddlinksecondurl'], $options['linksecondurllabel'], $options['showaddlinktelephone'], $options['linktelephonelabel'], $options['showaddlinkemail'], $options['linkemaillabel'], $options['showcaptcha'], (isset($captureddata) ? $captureddata : null), $options['linksubmitternamelabel'], $options['showlinksubmittername'], $options['linksubmitteremaillabel'], $options['showaddlinksubmitteremail'], $options['linksubmittercommentlabel'], $options['showlinksubmittercomment'], $genoptions['linksubmissionthankyouurl'], $options['addlinkcatlistoverride'], $options['showcustomcaptcha'], $options['customcaptchaquestion'], $options['linklargedesclabel'], $options['showuserlargedescription'], $options['usetextareaforusersubmitnotes'], $settings, $code); } /********************************************** Function to Process shortcode *********************************************/ function link_library_func($atts) { $settings = ''; $notesoverride = ''; $descoverride = ''; $rssoverride = ''; $categorylistoverride = ''; $excludecategoryoverride = ''; $tableoverride = ''; extract(shortcode_atts(array( 'categorylistoverride' => '', 'excludecategoryoverride' => '', 'notesoverride' => '', 'descoverride' => '', 'rssoverride' => '', 'tableoverride' => '', 'settings' => '' ), $atts)); if ($settings == '') { $settings = 1; $options = get_option('LinkLibraryPP1'); } else { $settingsname = 'LinkLibraryPP' . $settings; $options = get_option($settingsname); } if ($notesoverride != '') $selectedshownotes = $notesoverride; else $selectedshownotes = $options['shownotes']; if ($descoverride != '') $selectedshowdescription = $descoverride; else $selectedshowdescription = $options['showdescription']; if ($rssoverride != '') $selectedshowrss = $rssoverride; else $selectedshowrss = $options['show_rss']; if ($categorylistoverride != '') $selectedcategorylist = $categorylistoverride; else $selectedcategorylist = $options['categorylist']; if ($excludecategoryoverride != '') $excludedcategorylist = $excludecategoryoverride; else $excludedcategorylist = $options['excludecategorylist']; if ($tableoverride != '') $overridedisplayastable = $tableoverride; else $overridedisplayastable = $options['displayastable']; $genoptions = get_option('LinkLibraryGeneral'); $linklibraryoutput = ""; if (floatval($genoptions['schemaversion']) < "4.6") { $this->ll_install(); $genoptions = get_option('LinkLibraryGeneral'); if ($settings == '') $options = get_option('LinkLibraryPP1'); else { $settingsname = 'LinkLibraryPP' . $settings; $options = get_option($settingsname); } } if ($genoptions['debugmode'] == true) $linklibraryoutput .= "n<!-- Library Settings Info:" . print_r($options, TRUE) . "-->n"; $linklibraryoutput .= $this->PrivateLinkLibrary( $options['order'], $options['hide_if_empty'], $options['catanchor'], $selectedshowdescription, $selectedshownotes, $options['showrating'], $options['showupdated'], $selectedcategorylist, $options['show_images'], false, $options['use_html_tags'], $options['show_rss'], $options['beforenote'], $options['nofollow'], $excludedcategorylist, $options['afternote'], $options['beforeitem'], $options['afteritem'], $options['beforedesc'], $options['afterdesc'], $overridedisplayastable, $options['beforelink'], $options['afterlink'], $options['showcolumnheaders'], $options['linkheader'], $options['descheader'], $options['notesheader'], $options['catlistwrappers'], $options['beforecatlist1'], $options['beforecatlist2'], $options['beforecatlist3'], $options['divorheader'], $options['catnameoutput'], $options['show_rss_icon'], $options['linkaddfrequency'], $options['addbeforelink'], $options['addafterlink'], $options['linktarget'], $options['showcategorydesclinks'], $options['showadmineditlinks'], $options['showonecatonly'], '', $options['defaultsinglecat'], $options['rsspreview'], $options['rsspreviewcount'], $options['rssfeedinline'], $options['rssfeedinlinecontent'], $options['rssfeedinlinecount'], $options['beforerss'], $options['afterrss'], NULL, $options['direction'], $options['linkdirection'], $options['linkorder'], $options['pagination'], $options['linksperpage'], $options['hidecategorynames'], $settings, $options['showinvisible'], $options['showdate'], $options['beforedate'], $options['afterdate'], $options['catdescpos'], $options['showuserlinks'], $options['rsspreviewwidth'], $options['rsspreviewheight'], $options['beforeimage'], $options['afterimage'], $options['imagepos'], $options['imageclass'], '', $genoptions['debugmode'], $options['usethumbshotsforimages'], $options['showonecatmode'], $options['dragndroporder'], $options['showname'], $options['displayweblink'], $options['sourceweblink'], $options['showtelephone'], $options['sourcetelephone'], $options['showemail'], $options['showlinkhits'], $options['beforeweblink'], $options['afterweblink'], $options['weblinklabel'], $options['beforetelephone'], $options['aftertelephone'], $options['telephonelabel'], $options['beforeemail'], $options['afteremail'], $options['emaillabel'], $options['beforelinkhits'], $options['afterlinkhits'], $options['emailcommand'], $options['sourceimage'], $options['sourcename'], $genoptions['thumbshotscid'], $options['maxlinks'], $options['beforelinkrating'], $options['afterlinkrating'], $options['showlargedescription'], $options['beforelargedescription'], $options['afterlargedescription'], $options['featuredfirst'], $options['shownameifnoimage'], ( isset($options['enable_link_popup']) ? $options['enable_link_popup'] : false ), ( isset($options['popup_width']) ? $options['popup_width'] : 300 ), ( isset( $options['popup_height'] ) ? $options['popup_height'] : 400 ), $options['nocatonstartup'], $options['linktitlecontent'], ( isset( $options['paginationposition'] ) ? $options['paginationposition'] : 'AFTER' ), $options['uselocalimagesoverthumbshots'], $options['showlinksonclick'] ); return $linklibraryoutput; } function conditionally_add_scripts_and_styles($posts){ if (empty($posts)) return $posts; $load_jquery = false; $load_thickbox = false; $load_style = false; global $testvar; $genoptions = get_option('LinkLibraryGeneral'); if (is_admin()) { $load_jquery = false; $load_thickbox = false; $load_style = false; } else { foreach ($posts as $post) { $continuesearch = true; $searchpos = 0; $settingsetids = array(); while ($continuesearch) { $linklibrarypos = stripos($post->post_content, 'link-library ', $searchpos); if ($linklibrarypos == false) { $linklibrarypos = stripos($post->post_content, 'link-library]', $searchpos); if ($linklibrarypos == false) if (stripos($post->post_content, 'link-library-cats') || stripos($post->post_content, 'link-library-addlink')) $load_style = true; } $continuesearch = $linklibrarypos; if ($continuesearch) { $load_style = true; $load_jquery = true; $shortcodeend = stripos($post->post_content, ']', $linklibrarypos); if ($shortcodeend) $searchpos = $shortcodeend; else $searchpos = $linklibrarypos + 1; if ($shortcodeend) { $settingconfigpos = stripos($post->post_content, 'settings=', $linklibrarypos); if ($settingconfigpos && $settingconfigpos < $shortcodeend) { $settingset = substr($post->post_content, $settingconfigpos + 9, $shortcodeend - $settingconfigpos - 9); $settingsetids[] = $settingset; } else if (count($settingsetids) == 0) { $settingsetids[] = 1; } } } } } if ($settingsetids) { foreach ($settingsetids as $settingsetid) { $settingsname = 'LinkLibraryPP' . $settingsetid; $options = get_option($settingsname); if ( $options['showonecatonly'] ) { $load_jquery = true; } if ( $options['rsspreview'] || ( isset( $options['enable_link_popup'] ) && $options['enable_link_popup'] ) ) { $load_thickbox = true; } if ($options['publishrssfeed'] == true) { global $rss_settings; $rss_settings = $settingsetid; } } } if ($genoptions['includescriptcss'] != '') { $pagelist = explode (',', $genoptions['includescriptcss']); $loadscripts = false; foreach($pagelist as $pageid) { if ( ( $pageid == 'front' && is_front_page() ) || ( $pageid == 'category' && is_category() ) || ( $pageid == 'all') || ( is_page( $pageid ) ) ) { $load_jquery = true; $load_thickbox = true; $load_style = true; } } } } global $llstylesheet; if ( $load_style ) { $llstylesheet = true; } else { $llstylesheet = false; } if ( $load_jquery ) { wp_enqueue_script( 'jquery' ); } if ( $load_thickbox ) { wp_enqueue_script( 'thickbox' ); wp_enqueue_style ( 'thickbox' ); } return $posts; } function ll_template_redirect( $template ) { if ( !empty( $_POST['link_library_user_link_submission'] ) ) { require_once plugin_dir_path( __FILE__ ) . 'usersubmission.php'; link_library_process_user_submission( $this ); return ''; } else if ( !empty( $_GET['link_library_rss_feed'] ) ) { require_once plugin_dir_path( __FILE__ ) . 'rssfeed.php'; link_library_generate_rss_feed(); return ''; } else if ( !empty( $_GET['link_library_popup_content'] ) ) { require_once plugin_dir_path( __FILE__ ) . 'linkpopup.php'; link_library_popup_content( $this ); return ''; } else if ( !empty( $_GET['link_library_rss_preview'] ) ) { require_once plugin_dir_path( __FILE__ ) . 'rsspreview.php'; link_library_generate_rss_preview( $this ); return ''; } else { return $template; } } function link_library_ajax_tracker() { require_once plugin_dir_path( __FILE__ ) . 'tracker.php'; link_library_process_ajax_tracker( $this ); } function link_library_ajax_update() { require_once plugin_dir_path( __FILE__ ) . 'link-library-ajax.php'; link_library_render_ajax( $this ); } function link_library_generate_image() { global $my_link_library_plugin_admin; if ( empty( $my_link_library_plugin_admin ) ) { require plugin_dir_path( __FILE__ ) . 'link-library-admin.php'; $my_link_library_plugin_admin = new link_library_plugin_admin(); } require plugin_dir_path( __FILE__ ) . 'link-library-image-generator.php'; link_library_ajax_image_generator( $my_link_library_plugin_admin ); } } global $my_link_library_plugin; $my_link_library_plugin = new link_library_plugin(); ?>