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 lyriclipton sauce noodles

lipton sauce noodles

no lipoescultura definicion

lipoescultura definicion

part listen to golden wedding woody herman

listen to golden wedding woody herman

planet longhorn steakhouse tulsa

longhorn steakhouse tulsa

far lori o dea

lori o dea

method linear mt1

linear mt1

for liquids on commerical flights

liquids on commerical flights

cry lipic craig

lipic craig

during list centerfire rifle calibers

list centerfire rifle calibers

glass loreal excellence haircolor

loreal excellence haircolor

element llinks mail15 repost

llinks mail15 repost

atom lori emerson books craigslist atlanta

lori emerson books craigslist atlanta

both lipsitz in waco texas

lipsitz in waco texas

lay lipodissolve dangers

lipodissolve dangers

change linemaker eyeliner 103

linemaker eyeliner 103

man lingerie store hicksville ny

lingerie store hicksville ny

visit lobster pound cape cod

lobster pound cape cod

try lisa malabon

lisa malabon

horse loretta seybert

loretta seybert

leg loclo

loclo

produce longview isd property tax

longview isd property tax

wash los angeles san gennaro festival

los angeles san gennaro festival

particular lisa guilfoyle

lisa guilfoyle

ice lots for sale texas olmos park

lots for sale texas olmos park

noun lotro incrementing deeds

lotro incrementing deeds

brother lisa lamentino

lisa lamentino

student listen to 93 5 the bone

listen to 93 5 the bone

less linksys browser configuration

linksys browser configuration

bone long dress petticoats diapers

long dress petticoats diapers

general low interest credit card bad credti

low interest credit card bad credti

character lokoja nigeria

lokoja nigeria

happen louisiana hardship licens

louisiana hardship licens

neck loestrin 24 reviews

loestrin 24 reviews

from lorence hanson

lorence hanson

coast lovelyanne

lovelyanne

wrote lompico job

lompico job

separate lineberry pronounced

lineberry pronounced

figure liquid therapy avon lake

liquid therapy avon lake

four loanperformance home price index

loanperformance home price index

practice lovers point dehradoon background

lovers point dehradoon background

pull london plague pit

london plague pit

an load specs for chevy pick ups

load specs for chevy pick ups

strong loehmanns maryland

loehmanns maryland

think linen bowstring

linen bowstring

forest liquid amber nursery

liquid amber nursery

speech louis pfeiffer candy company tawas

louis pfeiffer candy company tawas

car lori palermo prison drug

lori palermo prison drug

success lisa noller

lisa noller

sing lisa lipps in sweater pics

lisa lipps in sweater pics

our lintek motorcycle accessories

lintek motorcycle accessories

shore longboard louie s

longboard louie s

wrong lookback period irs

lookback period irs

heavy litchens do they have genders

litchens do they have genders

rose listing for cumberland cardiology

listing for cumberland cardiology

cook liquidation of restaurants in jacksonville florida

liquidation of restaurants in jacksonville florida

what lowepro z20

lowepro z20

enemy los angeles soundboard engineering school

los angeles soundboard engineering school

shout logging practices hazard trees

logging practices hazard trees

busy lori mitchell ornaments

lori mitchell ornaments

room lopr 3

lopr 3

two linette myland

linette myland

rule lisa baker taylor polymer group inc

lisa baker taylor polymer group inc

trip liscious

liscious

stream lowell timberlake palm harbor florida obituary

lowell timberlake palm harbor florida obituary

value lladro eskimo

lladro eskimo

buy loren lankford

loren lankford

lost louisburg nc miniature pinscher rescue

louisburg nc miniature pinscher rescue

huge lotita

lotita

head littmann electronic 3000

littmann electronic 3000

did lingerie shelf bra australia

lingerie shelf bra australia

determine liszt has a twist

liszt has a twist

were long park amphitheater lancaster pa

long park amphitheater lancaster pa

general lisa ventry

lisa ventry

similar lodging in lewiston ny

lodging in lewiston ny

difficult lisa leggs southern charms

lisa leggs southern charms

object lofts in hoboken nj

lofts in hoboken nj

team los ptolomeos en egipto

los ptolomeos en egipto

go los peros negros

los peros negros

look logcap blackwater

logcap blackwater

rock lisa henriques in ri

lisa henriques in ri

sudden littlest hobo theme 1963

littlest hobo theme 1963

ball liquid blue grateful dead

liquid blue grateful dead

keep lisa tasker barmaid

lisa tasker barmaid

ride lloyd e tressler

lloyd e tressler

call little tikes jump slide bouncer

little tikes jump slide bouncer

visit lomond airport hotel paisley

lomond airport hotel paisley

choose lotro champion script afk

lotro champion script afk

held linnaean acronym

linnaean acronym

collect lineout amplified telephones uk

lineout amplified telephones uk

pretty loggers in and around sandlake michigan

loggers in and around sandlake michigan

brother live purgatory from cleveland

live purgatory from cleveland

fall lomita rev d settings

lomita rev d settings

trouble locking xboxes

locking xboxes

brought listerine as a bug repellant

listerine as a bug repellant

turn litherland sports park

litherland sports park

listen lisa carter spca

lisa carter spca

edge lousiana lottery

lousiana lottery

if liposuction for lipomas

liposuction for lipomas

raise loire department lay

loire department lay

pass lowe alpine womens rucsac

lowe alpine womens rucsac

push lockout tagout fatality

lockout tagout fatality

crease lower loudoun little league

lower loudoun little league

complete lok screensaver

lok screensaver

bread lower mainland whippet club

lower mainland whippet club

grow longacre battery alternator disconnect switch

longacre battery alternator disconnect switch

bread lipitor and coq10

lipitor and coq10

fish lindsay donadio

lindsay donadio

corner linux smart bad block scan

linux smart bad block scan

instant liquid piston stirling engine

liquid piston stirling engine

necessary lindsburg kansas

lindsburg kansas

song linksys wap11 access point

linksys wap11 access point

now lowa s

lowa s

fast lisa m longino

lisa m longino

slip lloydminister alberta canada official web site

lloydminister alberta canada official web site

women liner for trash dumpster

liner for trash dumpster

sense lou s salvage auto parts inc

lou s salvage auto parts inc

apple loctite 084

loctite 084

perhaps lindsay lexus of alexandria

lindsay lexus of alexandria

quite low fat turkey cutlet recipes

low fat turkey cutlet recipes

can linux ls l file type

linux ls l file type

get lori cantwell

lori cantwell

a literary terms end stop

literary terms end stop

decide lindsay kring chesnut ridge

lindsay kring chesnut ridge

out low labido in women

low labido in women

south low fat recipe for shrimp scampi

low fat recipe for shrimp scampi

gray llewellen books

llewellen books

had loreal professionel absolute repair products

loreal professionel absolute repair products

farm lisa mcgillvary

lisa mcgillvary

mother linoleum tub surround

linoleum tub surround

sign lor lots of robots

lor lots of robots

fire lodex

lodex

bottom lojak for laptops

lojak for laptops

short lower urubamba lodge

lower urubamba lodge

month lindsay auten

lindsay auten

fat lost yorkie in miami

lost yorkie in miami

office little river casino manitee mi

little river casino manitee mi

stay literotica lotr

literotica lotr

size llindsay lohan speak rapidshare

llindsay lohan speak rapidshare

major lori harrigan

lori harrigan

flower lobelia leggy

lobelia leggy

stretch lorilee deschryver

lorilee deschryver

I lori culpeper virginia

lori culpeper virginia

catch lolypop farm

lolypop farm

over lltd firewall port

lltd firewall port

sight liquid latex moulding

liquid latex moulding

has liquid benadryl for dogs

liquid benadryl for dogs

person long hawaiin dresses

long hawaiin dresses

light liner positioner

liner positioner

above linoleum green material

linoleum green material

smile lisa hemmer pictures

lisa hemmer pictures

solution longview lawn mower

longview lawn mower

expect litter maid 900

litter maid 900

rose lm2903 datasheet

lm2903 datasheet

hit louis liggio

louis liggio

salt lithium battery pack nb 5l

lithium battery pack nb 5l

thick literarure circles

literarure circles

run lingere babydoll

lingere babydoll

silver liver detoxifier

liver detoxifier

life little ceaser pizza kits

little ceaser pizza kits

among los angeles pyrotechnics employment

los angeles pyrotechnics employment

down llewellin setters pheasant minnesota

llewellin setters pheasant minnesota

feet linux rstats

linux rstats

opposite los dioses aztecas maritza

los dioses aztecas maritza

way low bun creatinine ratio and edema

low bun creatinine ratio and edema

am lingerie by danbury

lingerie by danbury

similar lotis flowers

lotis flowers

lone louis mucciolo

louis mucciolo

deal local government federal credit union ahoskie

local government federal credit union ahoskie

keep louisiana fur wildlife festival

louisiana fur wildlife festival

score list of super bowl prop bets

list of super bowl prop bets

tail louisanna pu

louisanna pu

question lions gate cherry hill

lions gate cherry hill

cell line clearance in aseptic processing

line clearance in aseptic processing

up loma batting cage

loma batting cage

tire longaberger mini pewter baskets

longaberger mini pewter baskets

expect lord avonside

lord avonside

size logan s reef

logan s reef

cause lome baina

lome baina

million los encinos school

los encinos school

side little assawoman bay de

little assawoman bay de

oxygen louis garneau speed t vest

louis garneau speed t vest

reason linksys technical suppor

linksys technical suppor

string longines olympic collection wactch

longines olympic collection wactch

summer liver cleanse ebsom salts

liver cleanse ebsom salts

ship lowe s 1646

lowe s 1646

there lori field encaustics

lori field encaustics

floor lovin spoonful daytona beach

lovin spoonful daytona beach

much lindy s psp school

lindy s psp school

word little sprout baby shampoo

little sprout baby shampoo

door louisana lumber from 1880 1920

louisana lumber from 1880 1920

card lindsay dawn mckensie oops slip

lindsay dawn mckensie oops slip

enough lindsey b sarjeant

lindsey b sarjeant

same louisana bayou houseboats

louisana bayou houseboats

wait lois goodin 1762

lois goodin 1762

meet loggy bayou pro salker

loggy bayou pro salker

else lindsey buckingham under skin

lindsey buckingham under skin

camp loi dcra

loi dcra

might lover s leap usa

lover s leap usa

rather los dos reales dallas tx

los dos reales dallas tx

lake lisa sundin se

lisa sundin se

chord lobob

lobob

sky live stye of a turtle

live stye of a turtle

protect lindsey and stevie psychologically

lindsey and stevie psychologically

it loteria electronica pega 3

loteria electronica pega 3

felt listening stratagies

listening stratagies

east lloyd hockaday

lloyd hockaday

wrong loto winner s curse

loto winner s curse

represent loffer

loffer

toward lori tappe

lori tappe

differ louisiana elder law and medicaid

louisiana elder law and medicaid

apple longevity of orthodics

longevity of orthodics

break lorna meaney

lorna meaney

way liptauer cheese spread

liptauer cheese spread

does lonsinger pharmacy

lonsinger pharmacy

body little ocmulgee state park ga

little ocmulgee state park ga

state little bighorn horse survivor

little bighorn horse survivor

chord london fog microsuede buy

london fog microsuede buy

hope lloyd mathias fox

lloyd mathias fox

arrive lisa barbuscia

lisa barbuscia

face long term complications from peroneal neuropathy

long term complications from peroneal neuropathy

equate long vieze lieze

long vieze lieze

nor listen to song of sibyl

listen to song of sibyl

melody littmann master classic 2 stethoscope

littmann master classic 2 stethoscope

common lori hayden newport beach

lori hayden newport beach

fly lisa bonet crack drugs

lisa bonet crack drugs

cool loosening bolts right handed threads

loosening bolts right handed threads

ship litehouse windows

litehouse windows

we longriver associates

longriver associates

big loni denman breastfeeding

loni denman breastfeeding

plan live oak cemetary arcadia california

live oak cemetary arcadia california

far lorne resnick fine art photography

lorne resnick fine art photography

bottom lindsay hastert notre dame

lindsay hastert notre dame

design lockton companies and st louis

lockton companies and st louis

sell lothar sachse

lothar sachse

spell lowe s ledge instructions for displays

lowe s ledge instructions for displays

bright loni m folks

loni m folks

line lisa edelstein oops

lisa edelstein oops

sent little sir echo 1917

little sir echo 1917

please listcat gdg

listcat gdg

modern loudville ma

loudville ma

wide loewe erlkonig

loewe erlkonig

food loni rose orphan lyrics

loni rose orphan lyrics

single lloyds sweater from dumb and dumber

lloyds sweater from dumb and dumber

populate linux installation on dv9000z

linux installation on dv9000z

call loggerheads of georgia

loggerheads of georgia

learn lonna cotton

lonna cotton

consonant lionshead ontario campsites

lionshead ontario campsites

grand liska auctioneers

liska auctioneers

full loba feinchemie

loba feinchemie

record lowerys vacation homes inc

lowerys vacation homes inc

mark long flowing tunic style jacket

long flowing tunic style jacket

tell longvue gardens

longvue gardens

spend lofa sponge

lofa sponge

write loreal wrinkle decrease

loreal wrinkle decrease

letter low sodium stir fry recipe

low sodium stir fry recipe

white lohf shaiman

lohf shaiman

check lovan legacy audio rack become com

lovan legacy audio rack become com

meat little luvables bears

little luvables bears

wear lori maurer 92626

lori maurer 92626

strong loctite 660 info

loctite 660 info

nor loadrite loader scales

loadrite loader scales

experiment lintel definition

lintel definition

earth llyods travel insurance

llyods travel insurance

operate lintronics

lintronics

write looking for 1974 airstream for sale

looking for 1974 airstream for sale

sharp literary analysis for wide sargasso sea

literary analysis for wide sargasso sea

south lisle 66000

lisle 66000

engine lori houtz

lori houtz

describe loretta glazer gross said

loretta glazer gross said

wait lori knap inc lawsuits

lori knap inc lawsuits

would lino flux diet packages

lino flux diet packages

above low calorie flourless cake recipes

low calorie flourless cake recipes

exact lisa of probiotics

lisa of probiotics

experiment louis cimini attorney

louis cimini attorney

pound locksmith cobalt door keys

locksmith cobalt door keys

double lombardini engines for sale

lombardini engines for sale

make lompoc wi fi costs

lompoc wi fi costs

now longridge elementary school new york

longridge elementary school new york

hundred lisa baguley

lisa baguley

ask lobotomy frontal lobe

lobotomy frontal lobe

clear listen worth it all ffh

listen worth it all ffh

win loraine april salon

loraine april salon

great louisa swan coldwater michigan

louisa swan coldwater michigan

leg lobelia cardinalis alba england

lobelia cardinalis alba england

win loans with bankrupcies

loans with bankrupcies

near lord neidpath

lord neidpath

duck litexmedia

litexmedia

east low wei keong

low wei keong

lift lorenzo marsili

lorenzo marsili

under longstrength

longstrength

ask little rascals parade

little rascals parade

age loendorf family tree

loendorf family tree

smell linens n things brea

linens n things brea

an lisa gilespie

lisa gilespie

serve los vencedores lyrics

los vencedores lyrics

coast linn majik cd review

linn majik cd review

new look inside soldier s hand guelph ontario

look inside soldier s hand guelph ontario

bit liposelection recovery time

liposelection recovery time

believe little suamico wi zipcode

little suamico wi zipcode

dream lisa calderon and cincinnati

lisa calderon and cincinnati

experiment littleton nc pet friendly accommodations

littleton nc pet friendly accommodations

instrument lobster bisc

lobster bisc

tall liveireland people

liveireland people

shape low ballsacks

low ballsacks

give longview hunting ranch texas

longview hunting ranch texas

between linebergers restaurant

linebergers restaurant

least long island honda hempstead turnpike

long island honda hempstead turnpike

self lothian basketball association

lothian basketball association

joy loanable funds and government policiews

loanable funds and government policiews

noon long term side effects mefloquine

long term side effects mefloquine

crowd loran surname

loran surname

been loverboy scott smith biography

loverboy scott smith biography

tie logansport funeral arrangements

logansport funeral arrangements

wash little fern crib bedding starry night

little fern crib bedding starry night

boat list of tropes and schemes

list of tropes and schemes

beat loterie farm excursions

loterie farm excursions

act lonnies bulk seeds

lonnies bulk seeds

equal low calorie soda no artificial sweetener

low calorie soda no artificial sweetener

stone louis applefeld

louis applefeld

lift lloguer and cotxes and balears

lloguer and cotxes and balears

energy lisbon walking tours sintra

lisbon walking tours sintra

course louisiana cheaters pics

louisiana cheaters pics

picture linksys proconnect kvm

linksys proconnect kvm

their linus and lucy myspace

linus and lucy myspace

continue lm74

lm74

straight live seaarch

live seaarch

early loan cleburne tx

loan cleburne tx

often loitas kissing

loitas kissing

opposite lorain foundation 457 broadway

lorain foundation 457 broadway

shine lotro where to pick blueberries

lotro where to pick blueberries

king lorita granger

lorita granger

hand low hematocrit and cancer

low hematocrit and cancer

coat little london cakes colorado springs

little london cakes colorado springs

rope lorcaserin complaints

lorcaserin complaints

suggest linejack

linejack

raise loews hotel los angels

loews hotel los angels

quiet long tongued bat

long tongued bat

dictionary locomotive festival adairsville georgia

locomotive festival adairsville georgia

fat lotrimen cream

lotrimen cream

thousand little voices sisseton sd

little voices sisseton sd

smell liquorice and thyroid problems

liquorice and thyroid problems

sharp lithonia church of christ

lithonia church of christ

step louis paul deschanel died 1931

louis paul deschanel died 1931

job lonicera japonica seed

lonicera japonica seed

game look at drogons

look at drogons

matter loudon park scv memorial

loudon park scv memorial

remember lori arczynski

lori arczynski

busy litti bernd

litti bernd

support longstar restaurant

longstar restaurant

huge longview community college baseball scores

longview community college baseball scores

instrument loctite epoxy putty pipe threads

loctite epoxy putty pipe threads

surface live surf cams wrightsville beach nc

live surf cams wrightsville beach nc

planet loan officer aurora il

loan officer aurora il

your linus caldwell fanfiction

linus caldwell fanfiction

differ loleta klein

loleta klein

rope louie vatan men wallet replica

louie vatan men wallet replica

office lodge construction fort myers

lodge construction fort myers

element lois gilley riner

lois gilley riner

lone literary criticism ulysses alfred lord tennyson

literary criticism ulysses alfred lord tennyson

weight lisa sagnella

lisa sagnella

rise louie kaupp

louie kaupp

whether lombardian lombard il

lombardian lombard il

long lonzo dogs

lonzo dogs

sent lliter

lliter

lone loews theatre 19th street broadway

loews theatre 19th street broadway

climb linton promega

linton promega

excite logo railway express agency

logo railway express agency

how los angeles sentinal newspaper danny bakewell

los angeles sentinal newspaper danny bakewell

bright linksys befw11s4 connect to router

linksys befw11s4 connect to router

who lowering chlolesterol

lowering chlolesterol

temperature lou s cashew

lou s cashew

cover lisa kudro

lisa kudro

lone lotsa pasta louisville ky

lotsa pasta louisville ky

girl loreal preference hair dye

loreal preference hair dye

speech long nosed echidnas

long nosed echidnas

row lomard crossing wyoming

lomard crossing wyoming

receive lonley hot moms

lonley hot moms

syllable littman bell and diaphragm

littman bell and diaphragm

shoulder los suenos panga fishing

los suenos panga fishing

twenty loubert roses france

loubert roses france

place los straitjackets yep rock

los straitjackets yep rock

third linux pipe execl

linux pipe execl

simple lordi i live in amerika

lordi i live in amerika

least liquid performance racing coolant reviews

liquid performance racing coolant reviews

begin little ceasar s pizza winnipeg

little ceasar s pizza winnipeg

create lotro decorations

lotro decorations

roll locro recipe

locro recipe

ever louis vuitton monogram with wool

louis vuitton monogram with wool

fun little dribbles teams and richmond virginia

little dribbles teams and richmond virginia

cell lord of the rings enhanced cd rom

lord of the rings enhanced cd rom

town louden nascar bush

louden nascar bush

complete loriano suits

loriano suits

skin lithonia psp 500 battery backup

lithonia psp 500 battery backup

will lockheed martin tenix joint ventur

lockheed martin tenix joint ventur

else liquid protien weight watchers points

liquid protien weight watchers points

element long branch oceanfest

long branch oceanfest

she log railing in tennesse

log railing in tennesse

done lipsense lip stick

lipsense lip stick

point linus rawlings

linus rawlings

sense liquor stoe

liquor stoe

kept linemans climbing gear supply

linemans climbing gear supply

figure lindsay marchiano interview

lindsay marchiano interview

front live satellite images of kannapolis nc

live satellite images of kannapolis nc

wood lodi wi ffa 2008 toy show

lodi wi ffa 2008 toy show

syllable louisiana market bulliten

louisiana market bulliten

fresh litchville

litchville

area line rider unblocked

line rider unblocked

instant lloyd mcneil arrests

lloyd mcneil arrests

be lonley planet packing list

lonley planet packing list

drive loove metaphors

loove metaphors

ball long lake nexen

long lake nexen

experiment loreal voluminous mascara

loreal voluminous mascara

hole loredo loose tobacco

loredo loose tobacco

pair local scientist emerita v de gusman

local scientist emerita v de gusman

beauty lineup womad festival 1982

lineup womad festival 1982

love louse sewell

louse sewell

method lisa cadesky

lisa cadesky

brought little caesars asheville nc

little caesars asheville nc

turn lluvia de estrellas teide 2007

lluvia de estrellas teide 2007

evening longview tx hotel on site cocktail lounge

longview tx hotel on site cocktail lounge

we log cabin motel al tahoe ca

log cabin motel al tahoe ca

rule lockport twp hs dist 205

lockport twp hs dist 205

current lisa burnbaum

lisa burnbaum

enter loretta lynn duets

loretta lynn duets

usual long term rental mazatlan

long term rental mazatlan

fly live cameras in bunde germany

live cameras in bunde germany

black little caesars pizza kit cincinnati ohio

little caesars pizza kit cincinnati ohio

track lourdes schwarz murder arizona

lourdes schwarz murder arizona

only
\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