0 && ($i%$size)==0) { $j++; } $retval[$j][$i%$size] = (empty($array[$i])) ? $fill : $array[$i]; } } return $retval; } // }}} function authorized() { // {{{ global $config; $r=$u=$p=$a=false; $remember = ( linkex::get( 'remember', $_REQUEST, 0 ) == 1 ); if ( ( $u = linkex::get( 'username', $_POST, false ) ) && ( $p = linkex::get( 'password', $_POST, false ) ) ) { $r=true; } else if ( $a = linkex::get( '_authcookie', $_SESSION, false ) ) { $r=false; } else if ( $a = linkex::get( '_authcookie', $_COOKIE, false ) ) { $remember=true; $r=false; } $path = dirname( linkex::get( 'SCRIPT_NAME', $_SERVER, '/' ) ); if ( ( $u !== false && $p !== false ) || ( $a !== false ) ) { if ( md5( $u .'---'. $p ) == $config->password || $a == $config->password ) { $_SESSION['_authcookie'] = $config->password; if ( $remember ) { setcookie( '_authcookie', $config->password, time()+60*60*24*30, $path ); } if ( $r ) { linkex::redirect( $_SERVER['REQUEST_URI'] ); } return true; } else { setcookie( '_authcookie', '', time() - 3600, $path ); unset( $_SESSION['_authcookie'] ); return false; } } else { setcookie( '_authcookie', '', time() - 3600, $path ); unset( $_SESSION['_authcookie'] ); return false; } } // }}} function buildquery( $array ) { // {{{ $retval = array(); foreach( $array AS $k=>$v ) { $retval[] = urlencode( $k ).'='.urlencode( $v ); } return join( '&', $retval ); } // }}} function categories( $all = false, $checkslots=false ) { // {{{ $categories = array(); $cids = linkex::listfiles( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'categories' . DIRECTORY_SEPARATOR ); foreach( $cids AS $cid ) { $c = new category( $cid ); if ( ( $all || $c->public == 1 ) && ( !$checkslots || ( $checkslots && $c->slots > 0 && $c->links() < $c->slots ) ) ) { $categories{ $cid } = $c->name; } unset( $c ); } return $categories; } // }}} function compareIPs( $a, $b ) { // {{{ a can be 127., 127.0, 127.0.0, 127.0.0.1, or a hostname if ( !preg_match( '/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/', $a ) ) { $a = linkex::gethostbyname( $a ); } if ( !preg_match( '/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/', $b ) ) { $b = linkex::gethostbyname( $b ); } $a = explode( '.', $a ); $b = explode( '.', $b ); for( $i=0; $ilinkbotdisregardwww == 1 ) { $a = str_replace( 'www.', '', $a ); $b = str_replace( 'www.', '', $b ); } if ( $config->linkbotignoretrailingslash == 1 ) { $a = rtrim( $a, '/' ); $b = rtrim( $b, '/' ); } return strcmp( $a, $b ); } // }}} function checkbox( $val ) { // {{{ return ( intval( $val ) != 0 ) ? 'checked="checked"':''; } // }}} function du( $dir ) { // {{{ $s = @stat( $dir ); $space = linkex::get( 'size', $s, 0 ); if ( is_dir( $dir ) ) { $dh = opendir( $dir ); while ( ( $file = readdir( $dh ) ) !== false ) { if ( !in_array( $file, array( '.', '..' ) ) ) { $space += linkex::du( rtrim( $dir, '/' ) .'/'. $file ); } } closedir( $dh ); } return $space; } // }}} function elapsed( $seconds ) { // {{{ $retval = array( 'Y' => 0, 'm' => 0, 'd' => 0, 'H' => 0, 'i' => 0, 's' => 0, 'nice' => '' ); // Years ( 60*60*24*365 ) = 31536000 seconds if ( $seconds > 31536000 ) { $retval{'Y'} = floor( $seconds / 31536000 ); $seconds = $seconds - ( $retval{'Y'} * 31536000 ); $retval{'nice'} = $retval{'Y'} . ' year' . ( $retval{'Y'}>1?'s':'' ); } // Months ( 60*60*24*30 ) = 2592000 if ( $seconds > 2592000 ) { $retval{'m'} = floor( $seconds / 2592000 ); $seconds = $seconds - ( $retval{'m'} * 2592000 ); $retval{'nice'} .= ( strlen( $retval{'nice'} ) > 0 ? ', ':'' ) . $retval{'m'} . ' month' . ( $retval{'m'}>1?'s':'' ); } // Days ( 60*60*24 ) = 86400 if ( $seconds > 86400 ) { $retval{'d'} = floor( $seconds / 86400 ); $seconds = $seconds - ( $retval{'d'} * 86400 ); $retval{'nice'} .= ( strlen( $retval{'nice'} ) > 0 ? ', ':'' ) . $retval{'d'} . ' day' . ( $retval{'d'}>1?'s':'' ); } // Hours ( 60*60 ) = 3600 if ( $seconds > 3600 ) { $retval{'H'} = floor( $seconds / 3600 ); $seconds = $seconds - ( $retval{'H'} * 3600 ); $retval{'nice'} .= ( strlen( $retval{'nice'} ) > 0 ? ', ':'' ) . $retval{'H'} . ' hour' . ( $retval{'H'}>1?'s':'' ); } // Minutes ( 60 ) = 60 if ( $seconds > 60 ) { $retval{'i'} = floor( $seconds / 60 ); $seconds = $seconds - ( $retval{'i'} * 60 ); $retval{'nice'} .= ( strlen( $retval{'nice'} ) > 0 ? ', ':'' ) . $retval{'i'} . ' minute' . ( $retval{'i'} > 1 ? 's':'' ); } // Seconds 0 if ( $seconds >= 0 ) { $retval{'s'} = $seconds; $retval{'nice'} .= ( strlen( $retval{'nice'} ) > 0 ? ', ':'' ) . $retval{'s'} . ' second' . ( $retval{'s'}>1?'s':'' ); } return $retval; } // }}} function expandlink( $link, $baseurl ) { // {{{ preg_match( "'^[^\?]+'", $baseurl.'/', $res ); $res = preg_replace( "|/[^\/\.]+\.[^\/\.]+$|", '', $res[0] ); $res = rtrim( $res, '/' ); if ( ( $root = @parse_url( $res ) ) ) { $root = $root['scheme'] .'://'. $root['host']; } else { // fixme // die( 'Unable to parse: '.$res ); $root = 'http://'; } $search = array( "|^(\/)|i", "|^(?!http://)(?!mailto:)|i", "|/\./|", "|/[^\/]+/\.\./|" ); $replace = array( $root .'/', $res . '/', '/', '/' ); return preg_replace( $search, $replace, $link ); } // }}} function fetch( $url, $params=array() ) { // {{{ global $config; if ( ( $host = @parse_url( $url ) ) && linkex::get( 'host', $host, false ) !== false ) { $po = linkex::get( 'port', $host, '80' ); $ho = linkex::get( 'host', $host, '' ); $pa = linkex::get( 'path', $host ); $pa = ( strlen( $pa ) == 0 ) ? '/':$pa; $qu = linkex::get( 'query', $host, '' ); $pa.= ( strlen( $qu ) == 0 ) ? '':'?'.$qu; $ua = linkex::get( 'agent', $params, $config->linkbotagent ); $h = array(); $h[]= linkex::get( 'method', $params, 'GET' ).' '.$pa.' HTTP/1.0'; $h[]= 'Host: '.$ho; $h[]= 'User-Agent: '.$ua; $h[]= 'Connection: close'; if ( linkex::get( 'method', $params, 'GET' ) == 'POST' && strlen( linkex::get( 'data', $params, '' ) ) > 0 ) { $h[]= 'Content-Length: '.strlen( linkex::get( 'data', $params, '' ) ); $h[] = 'Content-Type: application/x-www-form-urlencoded'; } $header = join( "\r\n", $h ) . "\r\n\r\n"; if ( ( $data = linkex::get( 'data', $params, false ) ) !== false ) { $header .= $data; } $buffer = ''; $fp = @fsockopen ( $ho, $po, $errno, $error, linkex::get( 'timeout', $params, 3 ) ); if ( !$fp ) { return array( 'URL' => $url, 'error' => 'Socket error: '.$error.' ['.$errno.']' ); } else { fputs( $fp, $header ); while( !feof( $fp ) ) { $buffer .= fgets( $fp, 1024 ); } fclose( $fp ); /// buffer holder nu hele resultatet, incl headers etc if ( preg_match( '/^HTTP\/(\d+\.\d+)\s+(\d{3})\s+(.*)/i', $buffer, $res ) === false ) { return array( 'URL' => $url, 'error' => 'Invalid HTTP response ('.substr( $buffer,0,30).')' ); } else { switch ( $res[2] ) { case 200: /// ok /// strip off the headers $res = explode( "\n\n", str_replace( chr( 13 ), '', $buffer ) ); if ( sizeof( $res ) >= 2 ) { $headers = array_shift( $res ); if ( function_exists( 'utf8_encode' ) ) { $contents = utf8_encode( join( "\n\n", $res ) ); } else { $contents = join( "\n\n", $res ); } return array( 'URL' => $url, 'headers' => $headers, 'contents' => $contents ); } else { return array( 'URL' => $url, 'contents' => utf8_encode( $buffer ) ); } break; case 301: case 302: /// maybe redirect? if ( !preg_match( '/location\:\s+(.*)/i', $buffer, $redir ) ) { return array( 'URL' => $url, 'error' => $res[2].' but no redirect' ); } else { $url = $redir[1]; if ( !preg_match( '"^http"i', $url ) ) { $url = 'http://'.$ho.'/'.ltrim( $url, '/' ); } if ( ( $h = @parse_url( $url ) ) === false ) { return array( 'URL' => $url, 'error' => $res[2].' but unparsable URL' ); } else { if ( str_replace( 'www.', '', strtolower( linkex::get( 'host', $h, '' ) ) ) != str_replace( 'www.','', strtolower( $ho ) ) ) { return array( 'URL' => $url, 'error' => $res[2].' but to external site ('.$h{'host'}.')' ); } else { return linkex::fetch( trim( $url ) ); } } } break; default: /// not good return array( 'URL' => $url, 'error' => $res[2].' '.trim( $res[3] ) ); break; } } } } else { return array( 'URL' => $url, 'error' => 'Unparsable URL' ); } } // }}} function fileget( $file, $default=null ) { // {{{ if ( file_exists( $file ) ) { if ( $fp = @fopen( $file, 'r' ) ) { $locked = ( @flock( $fp, LOCK_EX ) ) ? true:false; // $default = fread( $fp, filesize( $file ) ); $default = ''; while ( !feof( $fp ) ) { $default .= fread( $fp, 1024*1024 ); } if ( $locked ) { @flock( $fp, LOCK_UN ); } fclose( $fp ); } } return $default; } // }}} function fileput( $file, $con ) { // {{{ if ( $fp = @fopen( $file, 'w' ) ) { $locked = ( @flock( $fp, LOCK_EX ) ) ? true:false; $default = fwrite( $fp, $con ); //, strlen( $con ) ); if ( $locked ) { @flock( $fp, LOCK_UN ); } @fclose( $fp ); return ( intval( $default ) > 0 ); } else { return false; } } // }}} function flush() { // {{{ echo str_pad('',4096)."\n"; flush(); usleep( 500000 ); } // }}} function genID() { // {{{ $id = linkex::fileget( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR .'uid' ); $id++; linkex::fileput( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR .'uid', $id ) or die( "[Fatal Error: Unable to write to UID file]" ); return $id; } // }}} function get( $key, $array, $default=null ) { // {{{ if ( is_array( $array ) && in_array( $key, array_keys( $array ) ) ) { $default = $array{ $key }; } return $default; } // }}} function getDomain( $var ) { // {{{ $var = strtolower( $var ); if ( ( $pos = strpos( $var, '@' ) ) !== false ) { // Email $domain = substr( $var, $pos + 1 ); } else { // URL $domain = @parse_url( $var ); $domain = linkex::get( 'host', $domain, 'unparseable' ); } return $domain; } // }}} function gethostbyname( $dom, $force=false ) { // {{{ $dom = strtolower( trim( $dom ) ); $data = array(); if ( file_exists( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR . 'ips' ) && ( $data = linkex::fileget( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR . 'ips' ) ) && ( $data = linkex::unserialize( $data ) ) ) { if ( ( $force === false ) && ( $ipinfo = linkex::get( $dom, $data, false ) ) !== false && ( time() - linkex::get( 'date', $ipinfo, 0 ) ) < 604800 && ( $ip = linkex::get( 'ip', $ipinfo, false ) ) !== false ) { unset( $data ); return $ip; } } $ip = gethostbyname( $dom ); $data{ $dom } = array( 'date' => time(), 'ip' => $ip ); linkex::fileput( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR . 'ips', trim( serialize( $data ) ) ); unset( $data ); return $ip; } // }}} function getLinks( $str, $baseurl ) { // {{{ $thisdom = linkex::getDomain( $baseurl ); preg_match_all( "'<\s*a.*>(.*)<\s*/\s*a\s*>'Umis", $str, $res ); $links = array(); for( $i=0; $i' ); } $retval = ''; for($i=$pos+$d;$i0 && $haystack{$i-1} == '\\' ) );$retval.=$haystack{$i}, $i++ ) {} foreach( $end AS $c ) { $retval = str_replace( '\\'.$c, $c, $retval ); } return $retval; } else { return $default; } } /// }}} function glob( $dir, $regex ) { // {{{ $files = array(); if ( $d = @opendir( $dir ) ) { while ( false !== ( $file = readdir( $d ) ) ) { if ( preg_match( '|' . $regex . '|i', $file ) ) { $files[] = $file; } } } return $files; } // }}} function installed() { // {{{ return ( is_dir( BASEDIR . DIRECTORY_SEPARATOR .'data' ) && is_dir( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR ) && is_dir( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR ) && is_dir( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'categories' . DIRECTORY_SEPARATOR ) && is_dir( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'blacklist' . DIRECTORY_SEPARATOR ) && is_dir( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'links' . DIRECTORY_SEPARATOR ) && is_dir( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'output' . DIRECTORY_SEPARATOR ) ); } // }}} function listfiles( $dir, $ext=array() ) { // {{{ $retval = array(); if ( is_dir( $dir ) ) { if ( $dh = opendir( $dir ) ) { while ( ( $file = readdir( $dh ) ) !== false ) { if ( filetype( rtrim( $dir, DIRECTORY_SEPARATOR ) .DIRECTORY_SEPARATOR. $file ) == 'file' ) { $retval[] = $file; } } } } return $retval; } // }}} function log( $level, $type, $str ) { // {{{ $file = 'linkex.log'; $log = sprintf( "[%s] [level=%d] [%s] %s\n", date( 'Y-m-d H:i:s' ), $level, $type, $str ); $fp = fopen( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'logs' . DIRECTORY_SEPARATOR . $file, 'a' ); flock( $fp, LOCK_EX ); fwrite( $fp, $log ); fclose( $fp ); } // }}} function map( $fun, $arr ) { // {{{ $retval = array(); foreach( $arr AS $k=>$v ) { $retval[ $k ] = $fun( $v ); } return $retval; } // }}} function mail( $to, $sub, $body ) { // {{{ global $config; $headers = array(); $headers[] = 'X-Mailer: LinkEX/20071229'; if ( strlen( $config->email ) > 0 ) { $headers[] = sprintf( 'From: LinkEX @ %s <%s>', linkex::get( 'HTTP_HOST', $_SERVER, linkex::getdomain( $config->url ) ), $config->email ); $headers[] = sprintf( 'Reply-To: %s', $config->email ); } return mail( $to, $sub, $body, join( "\r\n", $headers ) ); } // }}} function redirect( $url, $code=301 ) { // {{{ $resp = array( 301 => 'HTTP/1.1 301 Moved Permanently', 404 => 'HTTP/1.1 404 Not Found' ); if ( ( $resp = linkex::get( $code, $resp, false ) ) !== false ) { header( $resp ); } header( 'location: '.$url ); exit; } // }}} function selector( $name, $list, $selected=null, $multiple=true, $forcetype=null, $extra=null, $sep='
' ) { /// {{{ $type = ( $multiple ) ? 'checkbox':'radio'; $type = ( sizeof( $list ) > 5 ) ? 'select':$type; if ( $forcetype && in_array( $forcetype, array( 'checkbox', 'radio', 'select' ) ) ) { $type = $forcetype; } $extra['class'] = $type.' '.linkex::get( 'class', $extra, '' ); if ( $extra ) { $buffer=array(); foreach( $extra AS $k=>$v ) { $buffer[] = sprintf( '%s="%s"', $k, $v ); } $extra=' '.join( ' ', $buffer ); } else { $extra=''; } $formname = ( $multiple ) ? $name.'[]' : $name; $buffer = ''; if ( $type == 'select' ) { $buffer .= sprintf( ' %s%s', $formname, $id, ($ck)?' checked="checked"':'', $extra, $txt, $sep ); } elseif ( $type == 'radio' ) { $buffer .= sprintf( '%s', $formname, $id, ($ck)?' checked="checked"':'', $extra, $txt, $sep ); } } if ( $type == 'select' ) { $buffer .= ''; } return $buffer; } /// }}} function serialize( $val ) { // {{{ return serialize( $val ); } // }}} function sort( &$array, $field, $order='desc' ) { // {{{ if ( $field == 'random' ) { shuffle( $array ); } else { $GLOBALS['sortby'] = $field; usort( $array, array( 'linkex', 'usort' ) ); if ( $order == 'desc' ) { $array = array_reverse( $array ); } } } // }}} function stripcomments( $con ) { // {{{ $con = preg_replace( '||Umis', '', $con ); $con = preg_replace( '||Umis', '', $con ); $con = preg_replace( '||Umis', '', $con ); return $con; } // }}} function substr( $str, $len, $pad='..' ) { // {{{ if ( strlen( $str ) > $len ) { return substr( $str, 0, $len - strlen( $pad ) ) . $pad; } else { return $str; } } // }}} function truncate( $str, $len, $txt='..' ) { // {{{ if ( strlen( $str ) > ( $len-strlen( $txt ) ) ) { return substr( $str, 0, $len-strlen( $txt ) ).$txt; } else { return $str; } } // }}} function unserialize( $str ) { // {{{ $retval = @unserialize( $str ); if ( $retval !== false ) { return $retval; } else { // Attempt to fix it $str = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", trim( $str ) ); $retval = @unserialize( $str ); if ( $retval !== false ) { return $retval; } else { echo '[Fatal error in linkex::unserialize( "'. $str .'" )]'; } } } // }}} function usort( $a, $b ) { // {{{ if ( isset( $GLOBALS['sortby'] ) && strlen( $GLOBALS['sortby'] ) > 0 ) { $f = $GLOBALS['sortby']; if ( is_object( $a ) && isset( $a->$f ) ) { $aa = $a->$f; } else if ( is_array( $a ) && isset( $a[$f] ) ) { $aa = $a[$f]; } else { $aa = $a; } if ( is_object( $b ) && isset( $b->$f ) ) { $bb = $b->$f; } else if ( is_array( $b ) && isset( $b[$f] ) ) { $bb = $b[$f]; } else { $bb = $b; } switch( $f ) { case 'rdomip': $aa = sprintf( '%u', ip2long( $aa ) ); $bb = sprintf( '%u', ip2long( $bb ) ); break; case 'rdom': $aa = str_replace( 'www.', '', strtolower( $aa ) ); $bb = str_replace( 'www.', '', strtolower( $bb ) ); break; case 'anchor': $aa = strtolower( $aa ); $bb = strtolower( $bb ); break; } if ($aa == $bb) { return 0; } return ($aa < $bb) ? -1 : 1; } else { return 0; } } // }}} function verifybacklinks( $ids=array(), $callback=null ) { // {{{ global $config; $retval = array( 'starttime' => time(), 'links' => array(), 'categories' => array() ); foreach( $ids AS $id ) { $l = new link( $id ); $l->updateIPs(); $buffer = array( 'action' => 'link', 'id' => $l->id, 'rdom' => $l->rdom, 'rdomip' => $l->rdomip, 'rurl' => $l->rurl, 'skipcheck' => $l->skipcheck, 'skippagerank' => $l->skippagerank, 'minpagerank' => ( $l->minpagerank != -1 ) ? $l->minpagerank : $config->minpagerank, 'oldstatus' => $l->status, 'oldpagerank' => $l->pagerank ); if ( $l->skipcheck == 0 ) { $pr = $l->getPageRank(); $buffer{'res'} = $l->hasBacklink(); $buffer{'code'} = ( !is_string( linkex::get( 'reason', $buffer{'res'}, null ) ) ) ? '200 OK' : $l->laststatus; if ( $l->status != 4 ) { $l->status = ( ( $pr >= ( ( $l->minpagerank != -1 ) ? $l->minpagerank : $config->minpagerank ) ) && ( linkex::get( 'res', $buffer{'res'}, -1 ) == 0 ) ) ? 1:2; } $l->save( false ); } $buffer{'status'} = $l->status; $buffer{'pagerank'} = $l->pagerank; $retval{'links'}[] = $buffer; unset( $l ); if ( $callback != null && function_exists( $callback ) ) { call_user_func( $callback, $buffer ); } unset( $buffer ); } // Rebuild categories $categories = linkex::listfiles( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'categories' . DIRECTORY_SEPARATOR ); foreach( $categories AS $cid ) { $c = new category( $cid ); $c->generate(); $buffer = array( 'action' => 'category', 'id' => $cid, 'name' => $c->name ); $retval{'categories'}[] = $buffer; unset( $c ); if ( $callback != null && function_exists( $callback ) ) { call_user_func( $callback, $buffer ); } unset( $buffer ); } $retval{'endtime'} = time(); return $retval; } // }}} function sum( $array = array() ) { // {{{ $retval = 0; foreach( $array AS $a ) { $retval += $a; } return $retval; } // }}} function yesno( $val ) { // {{{ return ( $val ) ? 'Yes':'No'; } // }}} } class template { function about() { // {{{ global $config; if ( LOGGEDIN ) { $phpver = phpversion(); $zendver = zend_version(); $uname = php_uname( 's r' ); $du = round( linkex::du( BASEDIR . DIRECTORY_SEPARATOR . 'data' ) / 1024, 2 ).'KB'; $links = sizeof( linkex::listfiles( BASEDIR . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'links' . DIRECTORY_SEPARATOR ) ); $installdate = date( $config->dateformat, $config->installdate ); if ( function_exists( 'gd_info' ) ) { $gd = gd_info(); $gd = sprintf( '%s - GIF Support: %s', $gd{'GD Version'}, ( ( $gd{'GIF Create Support'} ) ? 'enabled':'unsupported, using plain text for CAPTCHA if used' ) ); } else { $gd = 'Not installed, using plain text for CAPTCHA if used.'; } echo "
\n\t
\n\t\tServer info\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
PHP version:{$phpver}
Zend version:{$zendver}
GD Info:{$gd}
Server OS:{$uname}
\n\t
\n
\n\n
\n\t
\n\t\tLinkEX info\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
LinkEX version:20071229
Current version: (Force upgrade)
Database size:{$du}
Links:{$links}
Install date:{$installdate}
\n\t
\n
\n\n\n\n"; } else { echo "
\n\tPowered by LinkEX\n\t
\n\t\tThis site is powered by LinkEX, a free script that will take care of accepting link exchange requests, \n\t\tand, if needed, making sure a link back is present.
\n\t\t
\n\t\tIf you run a website, you can have this script also. Head over to linkex.dk, \n\t\tand get your free copy.
\n\t\t
\n\t\t
Features
\n\t\t
    \n\t\t\t
  • Free! This script is free. No hidden fees, no nothing.
  • \n\t\t\t
  • Easy to install - upload 1 (one) file, fill out the basic settings, and you are good to go.
  • \n\t\t\t
  • One click updates. Update the script, just by a single click. The script will fetch the latest release, install it, making sure you are up to date at all times.
  • \n\t\t\t
  • Advancend link robot. You choose what sites to check for backlinks, and the bot will make sure the link is present.
  • \n\t\t\t
  • Google PageRank™ check. The script will show you the PageRank™ of all your link partners.
  • \n\t\t\t
  • And much much more..
  • \n\t\t
\n\t\tHead over to linkex.dk to read more\n\t
\n
\n"; } } // }}} function footer() { // {{{ return "\t\t\t\n\t\t\t
\n\t\t\t\tv.20071229 © linkex.dk 2006-2007\n\t\t\t
\n\t\t\n\t
Download Mp3/Mp3 MusicTop Chartsdownload R.E.M. music lyricdownload Leona Lewis music lyricdownload Portishead music lyricdownload Iron Maiden music lyricdownload Led Zeppelin music lyricdownload Beth Rowley music lyricdownload Mariah Carey music lyricdownload Bruce Springsteen music lyricdownload AC/DC music lyricdownload Linkin Park music lyricdownload OneRepublic music lyricdownload Bob Dylan music lyricdownload Metallica music lyricdownload The Who music lyricdownload Rihanna music lyricdownload Al Green music lyricdownload The Kooks music lyricdownload U2 music lyricdownload David Bowie music lyricdownload Prince music lyricdownload Alanis Morissette music lyricdownload Putumayo music lyricdownload Elvis Presley music lyricdownload Willie Nelson music lyricdownload Jon Bon Jovi music lyriclisten to tina guo

listen to tina guo

I los gatos ca bicyle shops

los gatos ca bicyle shops

board lobo greatest hits lyrics

lobo greatest hits lyrics

band loteria mexican game

loteria mexican game

receive lisa taylor arraignment gwinnett court calendar

lisa taylor arraignment gwinnett court calendar

tube lithia dodge corpus christi texas

lithia dodge corpus christi texas

period lineage of matilda billung

lineage of matilda billung

red lithia extended warranty

lithia extended warranty

grew louis dimitroff

louis dimitroff

tone lorena bobbitt address

lorena bobbitt address

she littlegiantladder

littlegiantladder

ran louis hamilton racism

louis hamilton racism

dress longwy china

longwy china

draw lohn and angermunde

lohn and angermunde

shine linfatico herpes

linfatico herpes

prepare linsday lohan nick lachey girlfriend

linsday lohan nick lachey girlfriend

element linebach farm equipmeny

linebach farm equipmeny

planet lowering 1993 s10 blazer 4wd

lowering 1993 s10 blazer 4wd

that lois artino

lois artino

fat lord high executioner figurine

lord high executioner figurine

length little giant alberta spruce

little giant alberta spruce

sharp loren smith arctic tern

loren smith arctic tern

quart local events glbt listserv unc

local events glbt listserv unc

grew low fat ceasar salad dressing recipe

low fat ceasar salad dressing recipe

energy los cobos dreams

los cobos dreams

year lisa rinna pregnant pics in playboy

lisa rinna pregnant pics in playboy

remember longest worm in the world

longest worm in the world

an loan ammortization calculators

loan ammortization calculators

door louise and pascoe vale

louise and pascoe vale

matter little chute wisconsin waterfront property

little chute wisconsin waterfront property

street lisa acmc

lisa acmc

cent listen to tom joyner morning show

listen to tom joyner morning show

organ lindsay schwarz rich calvario wedding

lindsay schwarz rich calvario wedding

chair lolbeauty

lolbeauty

we lovette entertainment law atlanta

lovette entertainment law atlanta

shape lisa bevere

lisa bevere

similar lorax and audio cable

lorax and audio cable

substance loveworld

loveworld

two lorban

lorban

dictionary liquidambar rotundiloba

liquidambar rotundiloba

then louis felsenthal

louis felsenthal

smile lisa fincher south carolina

lisa fincher south carolina

with lords of darkness tracker

lords of darkness tracker

boy lodge at woodloch

lodge at woodloch

guide louann stewart billings mt

louann stewart billings mt

ask listing of asce upcoming conferences

listing of asce upcoming conferences

fill louisiana lagnaippe

louisiana lagnaippe

heavy lipstadt denying the holocaust

lipstadt denying the holocaust

she lladro locations denver

lladro locations denver

smile liripipe

liripipe

necessary lisa dagostino higher ed people

lisa dagostino higher ed people

beauty llc geotek

llc geotek

store lm34 spec sheet

lm34 spec sheet

probable linville gorge fires

linville gorge fires

matter lite on ltr 24102m driver xp

lite on ltr 24102m driver xp

serve linux headers gentoo

linux headers gentoo

sound lodging near wild bill s duluth

lodging near wild bill s duluth

boat little tikes seesaw

little tikes seesaw

include loben boots

loben boots

ship londolozi bateleur camp

londolozi bateleur camp

decimal linson realtor portland tn

linson realtor portland tn

would llumar tool apron

llumar tool apron

start litchfield cadillac dealer

litchfield cadillac dealer

meet live digital gantz episode 19

live digital gantz episode 19

come linksys wireless signal booster 802 11b mods

linksys wireless signal booster 802 11b mods

love lodge logic grill griddle pan

lodge logic grill griddle pan

young lowe hf 150 europa

lowe hf 150 europa

same line dance sundown serenade

line dance sundown serenade

walk loahn

loahn

both lingerie sir pervis

lingerie sir pervis

miss lonnie scrubbs deals on wheels

lonnie scrubbs deals on wheels

divide lingel george

lingel george

use lowe s 98012

lowe s 98012

dream livedoor wikipedia la enciclopedia libre

livedoor wikipedia la enciclopedia libre

final lovelinks beads for sale in nh

lovelinks beads for sale in nh

beauty loganville high school band

loganville high school band

heart lita danny doring

lita danny doring

point lisa sowers va

lisa sowers va

interest lockjaw kennel north carolina

lockjaw kennel north carolina

than linspeed oil

linspeed oil

chick llano consolidated independent school district

llano consolidated independent school district

left longevity plus beyond chelation improved

longevity plus beyond chelation improved

neighbor loogie sounds mp3

loogie sounds mp3

control lisa colver

lisa colver

shape lollipop and precision thermometer

lollipop and precision thermometer

single lord wellington convict ship

lord wellington convict ship

meant lisa petrosky

lisa petrosky

we logan mezan

logan mezan

try loafers sticker

loafers sticker

pound lojong teachings

lojong teachings

wood list thoms mcguane s

list thoms mcguane s

hair loma aicpcu 2007 merger

loma aicpcu 2007 merger

law list prices octel parts

list prices octel parts

jump logreco

logreco

ocean linville land harbor

linville land harbor

branch lit lipstick and bruises lyrics

lit lipstick and bruises lyrics

slow long life 12v 10a dry cell

long life 12v 10a dry cell

pattern linksys hga7t 7dbi high gain antennas

linksys hga7t 7dbi high gain antennas

colony lisburn driving lessons

lisburn driving lessons

nothing lonna sherrod

lonna sherrod

you louise glover valentine surprise video

louise glover valentine surprise video

produce lodging hotels fairplay colorado

lodging hotels fairplay colorado

govern lovecraft dark stranger hundred years

lovecraft dark stranger hundred years

language lovelace family crest

lovelace family crest

card lowes in wichita kansas

lowes in wichita kansas

learn lockless door

lockless door

gas lorna vanderhaeghe official site

lorna vanderhaeghe official site

born ling s market

ling s market

seven lohan sobs over ledgers

lohan sobs over ledgers

stop lorne kaiser florida

lorne kaiser florida

his lonley are the brave

lonley are the brave

many logo produit du saguenay lac saint jean

logo produit du saguenay lac saint jean

soil lois tiedeman

lois tiedeman

chief liquid lengthens life poem

liquid lengthens life poem

change little serenade and hayden and midi

little serenade and hayden and midi

connect little danni measurements

little danni measurements

spoke lithium deposits on skimmer cones

lithium deposits on skimmer cones

magnet lottery systems that wok

lottery systems that wok

syllable lodge at vulcano hawaii

lodge at vulcano hawaii

lot listen to delbert mcclinton songs

listen to delbert mcclinton songs

stand louis riel quotes

louis riel quotes

corner liquido lay some rock

liquido lay some rock

yes liste de diffusion e gds

liste de diffusion e gds

heat lladro nativity angels ornaments

lladro nativity angels ornaments

led livejasmin username password

livejasmin username password

too louis schilling burbank

louis schilling burbank

differ lockton racing

lockton racing

radio look at us sarina pairs lyrics

look at us sarina pairs lyrics

strong lobo de tazmania

lobo de tazmania

afraid louise setara walk with me cd

louise setara walk with me cd

experiment lindi llc

lindi llc

student literatures regarding information kiosk

literatures regarding information kiosk

very lodgeing at merced river

lodgeing at merced river

pass livability north portland oregon 2006

livability north portland oregon 2006

past louis bezold and lexington

louis bezold and lexington

busy list street value of perscription drugs

list street value of perscription drugs

necessary louisiana tribute episode method bbq grilling

louisiana tribute episode method bbq grilling

tall lipotropic tablet

lipotropic tablet

no liquid roller applicators herbicide

liquid roller applicators herbicide

there log cabin in the mountains wyoming

log cabin in the mountains wyoming

brought louis g sarabia

louis g sarabia

repeat load line manufacturing inc winkler manitoba

load line manufacturing inc winkler manitoba

metal louise of mecklenburg strelitz said

louise of mecklenburg strelitz said

was lisa cambra running

lisa cambra running

pick loman o brien

loman o brien

difficult lodge look victorian

lodge look victorian

copy little tykes octopus merry go round wheel

little tykes octopus merry go round wheel

skill little mermaid singing pearl necklace

little mermaid singing pearl necklace

in longboat key cub

longboat key cub

protect lm3876

lm3876

determine lori sims constant

lori sims constant

ran lists of malpractice suits for opthomology

lists of malpractice suits for opthomology

form lori dellanno

lori dellanno

wish louie devito tour dates

louie devito tour dates

body lorna doone the novel

lorna doone the novel

turn lois yanda

lois yanda

scale lloyd cowling

lloyd cowling

lead lisa kaufman author contact information

lisa kaufman author contact information

right lori fiandra

lori fiandra

save ll bean arctic expadition parka

ll bean arctic expadition parka

above louden wainright mash theme

louden wainright mash theme

forest lordo diamonds

lordo diamonds

long los angles flour sifter

los angles flour sifter

product lisa left eye lopez quotes

lisa left eye lopez quotes

milk llinda d orsey

llinda d orsey

column locum tenens anesthesiology idaho

locum tenens anesthesiology idaho

many low sugar zuccini bread

low sugar zuccini bread

follow louis perez grandview ohio

louis perez grandview ohio

period lithium quartz tumbled

lithium quartz tumbled

top liver cancer pins and ribbons

liver cancer pins and ribbons

expect lower belly bluge

lower belly bluge

symbol loraine wallace daytona beach fl

loraine wallace daytona beach fl

base low cost recliners

low cost recliners

over lori foglesong

lori foglesong

rain llc delaware 295

llc delaware 295

rise lisina opatija

lisina opatija

sign lord aliden

lord aliden

support linnea alvord

linnea alvord

equate low blood sugar montefiore

low blood sugar montefiore

hear low rate villas in kissimmee florida

low rate villas in kissimmee florida

man lindy hop dance ettiquit

lindy hop dance ettiquit

would lipton to go mango

lipton to go mango

root low fat turkey tetrazini recipe

low fat turkey tetrazini recipe

after lingere corsets

lingere corsets

separate lordship beach ct

lordship beach ct

before lisa vahle

lisa vahle

head littermaid elite

littermaid elite

symbol long transfer highlands nc

long transfer highlands nc

began longchamp le pliage tote bag

longchamp le pliage tote bag

liquid liquid crystal prismatic paint for home

liquid crystal prismatic paint for home

usual lipovox generic

lipovox generic

wing lm5642 applications

lm5642 applications

skill long term effects of jackhammer use

long term effects of jackhammer use

would lotte berk method exercise dvds

lotte berk method exercise dvds

hunt lollypop shoes joanne harris

lollypop shoes joanne harris

feel lorie gentile

lorie gentile

product louisana yellow pages

louisana yellow pages

charge lisa di ubaldo

lisa di ubaldo

test lindsey tadlock

lindsey tadlock

finger loogootee junction

loogootee junction

seven longisland dominas

longisland dominas

should liuna locals

liuna locals

mean loizzi

loizzi

wave lowes motor speedway camp

lowes motor speedway camp

natural lower keys marsh rabbit swimming

lower keys marsh rabbit swimming

connect lisa luksa

lisa luksa

blue logging on admiralty island alaska

logging on admiralty island alaska

take louisa may alcott pseudonym

louisa may alcott pseudonym

been lounge chair eames ce 455 ebay

lounge chair eames ce 455 ebay

long lineback farm equipment

lineback farm equipment

danger low income apartments in paintsville kentucky

low income apartments in paintsville kentucky

run louise s trattoria restuarant brookfield wisconsin

louise s trattoria restuarant brookfield wisconsin

sell lindsay lofan

lindsay lofan

gave little fishy on a little dishy

little fishy on a little dishy

watch lonicera x heckrottii goldflame

lonicera x heckrottii goldflame

step lowe dye strapping

lowe dye strapping

center llama 1911 extractor

llama 1911 extractor

finish liu ziming

liu ziming

numeral los de nadau

los de nadau

dog listen maryland scanner tin ear

listen maryland scanner tin ear

long long time death rower

long time death rower

duck liver chemotheropy

liver chemotheropy

letter low cost brochure printing san jose

low cost brochure printing san jose

machine lori kluge

lori kluge

connect lisa ganahl

lisa ganahl

grass lords prayer trespassers version

lords prayer trespassers version

natural lorilai

lorilai

at lower merrion township

lower merrion township

vary lisa stanford phd pediatric neuropsychology

lisa stanford phd pediatric neuropsychology

agree low voltage drywall mounting bracket

low voltage drywall mounting bracket

else louise sievers arkansas

louise sievers arkansas

evening london broil recipes and ketchup

london broil recipes and ketchup

watch lipidil ez 160 mg

lipidil ez 160 mg

occur live acars

live acars

kept lise charmel orchidee ivory

lise charmel orchidee ivory

course lottery winner hermann mo

lottery winner hermann mo

oh low pss filter in line

low pss filter in line

blue lloyd armon

lloyd armon

went little raskels

little raskels

ear liquidacion conyugal de los romanos

liquidacion conyugal de los romanos

base linn thomas sybian

linn thomas sybian

excite loosing weight the tomato way

loosing weight the tomato way

a lindsey grygo

lindsey grygo

property little tikes pink cottage playhouse

little tikes pink cottage playhouse

much longbranch motel

longbranch motel

dance lipotropic thermogenic chromium picolinate

lipotropic thermogenic chromium picolinate

each linux mysql error nr 1045

linux mysql error nr 1045

run lister storm gts

lister storm gts

noon litttle feat

litttle feat

swim longest lasting lipstick

longest lasting lipstick

song lithania lighting

lithania lighting

seem lotions to slow hair growth

lotions to slow hair growth

molecule lower munchies twp

lower munchies twp

left lomma crane pittsburgh

lomma crane pittsburgh

care lisa quandt

lisa quandt

stood lisa lacaille costa rica

lisa lacaille costa rica

stick little nipper junior 45 rpm

little nipper junior 45 rpm

root louise lawrence bodden

louise lawrence bodden

group lovejoy isd texas

lovejoy isd texas

know low frequency fsk ask lf

low frequency fsk ask lf

whether lonnie martinez new mexico artist

lonnie martinez new mexico artist

call linder hot rod

linder hot rod

provide louisana fishing

louisana fishing

fear lodging and parking seatac airport

lodging and parking seatac airport

camp lisabeth beattie

lisabeth beattie

grass lirics for emmanuel

lirics for emmanuel

where louer a frasne france

louer a frasne france

coat lm4562 replacement

lm4562 replacement

seem loudoun baptist temple

loudoun baptist temple

ten lingerie teddie

lingerie teddie

apple louvred folding closet doors melamine

louvred folding closet doors melamine

lift london heathrow search airport milos

london heathrow search airport milos

provide loanstar and mortgagee and services

loanstar and mortgagee and services

our lofton delgado consultant ohio

lofton delgado consultant ohio

climb live stream cams on yachts

live stream cams on yachts

among lomar office supplies

lomar office supplies

sent lipizzaner aademy vienna

lipizzaner aademy vienna

center logan leet lexington ky

logan leet lexington ky

nose little annie fanny cartoons kurtzman

little annie fanny cartoons kurtzman

start look homeward angel eugene

look homeward angel eugene

month louisville male high school classmates

louisville male high school classmates

cause logi media keboard eli

logi media keboard eli

cook loudon county illegals

loudon county illegals

sharp lisa sonner

lisa sonner

in linemans notebook

linemans notebook

well littlesummer fansite

littlesummer fansite

money lolicon and manga roricon

lolicon and manga roricon

change longshore current rip current

longshore current rip current

operate loreta marina hwy 58 chattanooga

loreta marina hwy 58 chattanooga

minute llan bloom

llan bloom

fish little chalfont service garage breaks

little chalfont service garage breaks

bear loirston hotel ballater

loirston hotel ballater

observe lined school shorts

lined school shorts

plural love2live

love2live

child lori sklarski

lori sklarski

twenty lingo communication device

lingo communication device

river long robe with hood black

long robe with hood black

iron longmynd travel

longmynd travel

way lori mcintosh tallahassee fl

lori mcintosh tallahassee fl

wide lorena imagevenue met art

lorena imagevenue met art

work lothar meggendorfer

lothar meggendorfer

rose liver cirr

liver cirr

check low cost computer repair milford ma

low cost computer repair milford ma

would liteon compter cases

liteon compter cases

stone lisa robertson fiennes depressed

lisa robertson fiennes depressed

condition listen to choo choo ch boogie

listen to choo choo ch boogie

human long sleeved mini gingham plaid shirt

long sleeved mini gingham plaid shirt

pay lipper awards france 2008

lipper awards france 2008

difficult long term postthoracotomy pain questionnaire

long term postthoracotomy pain questionnaire

break locost kit in u s

locost kit in u s

mount liquidtight strain reliet connector

liquidtight strain reliet connector

take lisa dillon north vernon indiana

lisa dillon north vernon indiana

press lotto 649 encore

lotto 649 encore

he lockpicking tool iron on templates

lockpicking tool iron on templates

was lloydminster alberta canada only

lloydminster alberta canada only

river littlejoe

littlejoe

sure lowes black and decker weed eater

lowes black and decker weed eater

most liver functions elevated gdt

liver functions elevated gdt

gentle louis c k shameless

louis c k shameless

room lovecat purse

lovecat purse

kind linea aqua kitchen faucet hermes

linea aqua kitchen faucet hermes

course loft insulation lancashire

loft insulation lancashire

under lorna s lace cherries jubilee

lorna s lace cherries jubilee

correct lippitt morgan horse

lippitt morgan horse

red locomotive touch lamps

locomotive touch lamps

help lorazepam ativan pharmacology healthyplace com

lorazepam ativan pharmacology healthyplace com

mount lipodystrophy deca nandrolone

lipodystrophy deca nandrolone

rest low level laser smoking cessation protocols

low level laser smoking cessation protocols

art lipsticked

lipsticked

prove littlekins

littlekins

number lord rumsey of maryland

lord rumsey of maryland

example lopressor manufactured by novartis

lopressor manufactured by novartis

thick lingenfelter beef

lingenfelter beef

sheet lori o dell oakland raiders nfl cheerleader

lori o dell oakland raiders nfl cheerleader

fit loverboys sample videos

loverboys sample videos

govern low carb collard recipes

low carb collard recipes

bright littlest pet shop vips

littlest pet shop vips

support lisa marie karuk

lisa marie karuk

fig lm 30 laser

lm 30 laser

you louie ledoux san antonio restaurant

louie ledoux san antonio restaurant

boat lorez alexandria

lorez alexandria

use lipan apache tribe of texas

lipan apache tribe of texas

part lorie martinez woodland

lorie martinez woodland

company looking foe sectional sofa

looking foe sectional sofa

my lordo diamonds

lordo diamonds

suit louis orville breithaupt said

louis orville breithaupt said

nine livejournal tamaki discography

livejournal tamaki discography

soil lonzo manly

lonzo manly

correct loki tent

loki tent

add lisa m proffitt

lisa m proffitt

dog lord od the flies criticism

lord od the flies criticism

quite lori craford

lori craford

bread lorakeets

lorakeets

collect little haywood train derailment uk

little haywood train derailment uk

deep lori cullison

lori cullison

warm logbook entry from francis drake

logbook entry from francis drake

land longaburger basket clearence

longaburger basket clearence

bank loann

loann

got liquid smoke murfreesboro

liquid smoke murfreesboro

language longwood flordia

longwood flordia

shop lisa williams clairvoyant

lisa williams clairvoyant

end longview park 7101 longview rd

longview park 7101 longview rd

page longhorn grill amado

longhorn grill amado

select litweb writing about literature

litweb writing about literature

art livepvr

livepvr

arrange low testostreone

low testostreone

after louis welden hawkins

louis welden hawkins

his lomax fonville

lomax fonville

farm logolept

logolept

natural lisa shepard farmington nm

lisa shepard farmington nm

numeral littel footballs green

littel footballs green

success lowe s interior shutters

lowe s interior shutters

that little river band backing tracks

little river band backing tracks

character lisa suhair majaj

lisa suhair majaj

opposite lompoc moble manor

lompoc moble manor

hard loan amoritization table

loan amoritization table

track linedrive sporting goods

linedrive sporting goods

sheet lipton cup a soup ingredients

lipton cup a soup ingredients

leg liru werewolf game

liru werewolf game

morning longyearbyen airport

longyearbyen airport

thousand long fork freewill baptist church

long fork freewill baptist church

original lovechess age of egypt cracked

lovechess age of egypt cracked

wish littlest pet shop dalmation puppy

littlest pet shop dalmation puppy

second lodging raybrook ny

lodging raybrook ny

book lindt petits desserts

lindt petits desserts

office lisa ono moon river multiply music

lisa ono moon river multiply music

subtract litton coin

litton coin

forward loctite 515 flange sealant

loctite 515 flange sealant

map lofino s

lofino s

trip lisa magistrelli

lisa magistrelli

meet long foster rgs

long foster rgs

look loehmanns store locator

loehmanns store locator

light lis whitelaw

lis whitelaw

noun listowel ontario fair

listowel ontario fair

plant longford county ireland catholic church

longford county ireland catholic church

listen louis clepper

louis clepper

late louisa hall literature

louisa hall literature

see low cost commercial panini grill

low cost commercial panini grill

end lingerie loganville georgia

lingerie loganville georgia

record lisa cambra orthodontics

lisa cambra orthodontics

your locomotive hidden behind brick wall nyc

locomotive hidden behind brick wall nyc

glad logan mingus

logan mingus

trouble lookin for science projects

lookin for science projects

gas listen to lollipop candyman

listen to lollipop candyman

order lisa ketch

lisa ketch

pass linus and lucy tabs

linus and lucy tabs

true . lodging in seagrove florida

lodging in seagrove florida

true . louse human symbiosis

louse human symbiosis

mark longrider contact me

longrider contact me

log lionsquest

lionsquest

stead los gallitos houston

los gallitos houston

tool louise priest bbc norwich

louise priest bbc norwich

jump louise culver milton

louise culver milton

love lithium ion 3 7v 1050mah np 60

lithium ion 3 7v 1050mah np 60

bad liveaboards truk lagoon

liveaboards truk lagoon

off log4j error attempting to append

log4j error attempting to append

room loiuse slaughter

loiuse slaughter

season lowell c eicher

lowell c eicher

metal lintelle engineering scotts valley

lintelle engineering scotts valley

provide louisburg playhouse

louisburg playhouse

bank lockington pa

lockington pa

miss liora manne seville

liora manne seville

eat lindy rigger x treme

lindy rigger x treme

color little chute wisconsin reo

little chute wisconsin reo

toward lisa haster

lisa haster

win loro auto works oak park

loro auto works oak park

this lingba lounge san francisco

lingba lounge san francisco

week livejournal microbot

livejournal microbot

word littel vaughn

littel vaughn

old lovato electrical controls in texas

lovato electrical controls in texas

they llaza

llaza

quick loose steering column 1989 cutlass ciera

loose steering column 1989 cutlass ciera

horse logia fragment oxford

logia fragment oxford

minute loctite a hazardous waste

loctite a hazardous waste

oil lister machine in northern european 2007

lister machine in northern european 2007

suffix local pollen and mold spore count

local pollen and mold spore count

may lobotomy for dummies

lobotomy for dummies

earth long nauls

long nauls

boat
\n\n"; } // }}} function header( $params = array() ) { // {{{ global $errors, $config; $params = array_merge( array( 'menu' => Template::menu(), 'title' => '', 'onload' => '' ), $params ); $error = ''; $cookieIds = "'".join( '\',\'', array_unique( explode( ',', linkex::get( 'fscookie', $_COOKIE, '' ) ) ) )."'"; $charset = isset( $config->charset ) ? $config->charset : 'utf8'; if ( linkex::get( 'noerrors', $params, true ) && sizeof( $errors ) > 0 ) { $error = join( '
', $errors ); $error = "
\n\t
\n\t\tError\n\t\t
\n\t\t\t{$error}\n\t\t
\n\t
\n
\n"; } return "\n\n\t\n\t\t\n\t\tLinkEX » {$params{'title'}}\n\t\t\n\t\t\n\t\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t
\n\t\t\t
\n\t\t\t\t

LinkEX

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
    \n\t\t\t\t\t{$params{'menu'}}\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\n\t\t\t\t{$error}\n"; } // }}} function linkdetails() { // {{{ global $config; $url = $config->url; $anchor = $config->anchor; $anchor = $anchor[ mt_rand( 0, sizeof( $anchor )-1 ) ]; $description = $config->description; // {{{ Show the email if ( intval( $config->showemail ) == 1 ) { $email = "\t\t\t\n\t\t\t\tEmail:\n\t\t\t\t{$config->email}\n\t\t\t\t\n\t\t\t\n"; } else { $email = ''; } // }}} return "
\n\t
\n\t\tLinking Details\n\t\t\n{$email}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
URL:{$url}
Site title:{$anchor}
Site description:{$description}
HTML code:
<a href="{$url}" title="{$anchor}">{$anchor}</a>
\n\t
\n
\n"; } // }}} function linkform() { // {{{ global $config; $_POST['email'] = htmlentities( linkex::get( 'email', $_POST, ( (