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 lyriclouisburgh ireland

louisburgh ireland

circle listerine on cuts

listerine on cuts

push list cd albums for deriks bentley

list cd albums for deriks bentley

coat loise cliffe

loise cliffe

with lord vassal customs traditions

lord vassal customs traditions

scale llama 9mm grips

llama 9mm grips

sign load rite worthington

load rite worthington

vary lorenzo bracci

lorenzo bracci

mix longaberger collection software

longaberger collection software

mount logona mann bodywash

logona mann bodywash

top lodging at longmire mt rainier

lodging at longmire mt rainier

about logen ethanol

logen ethanol

station lisa matthews playmate lisa matthews

lisa matthews playmate lisa matthews

unit little italy restaurant bakersfield ca

little italy restaurant bakersfield ca

city los banos arabes del albaicin

los banos arabes del albaicin

won't litehouse candles

litehouse candles

until loreal sunscreen in usa

loreal sunscreen in usa

expect log cabin rentals townsend tn

log cabin rentals townsend tn

skill lisa batchelder virginia death

lisa batchelder virginia death

drop lisa hurst cmp

lisa hurst cmp

mass linsey denholm

linsey denholm

paragraph loctite and tamper

loctite and tamper

team loren pigman

loren pigman

add lorelei sims

lorelei sims

particular louies pizza colorado springs

louies pizza colorado springs

visit lisa a shenkman

lisa a shenkman

meat liquid follicle cycts

liquid follicle cycts

top lorentz fischer genealogy

lorentz fischer genealogy

material lisi marten art prints

lisi marten art prints

edge lopaka kapanui

lopaka kapanui

leg longhorn gasket

longhorn gasket

correct loadbearing cmu wall section

loadbearing cmu wall section

near loews batesville ms

loews batesville ms

pull lower self huna

lower self huna

city lodge cast iron square griddle

lodge cast iron square griddle

coast lowell lock monsters said

lowell lock monsters said

love lothersdale hotel in morecambe

lothersdale hotel in morecambe

full los cabos almanac

los cabos almanac

crop longest lasting mulch

longest lasting mulch

many lisa kron s well

lisa kron s well

earth longhorn women s basketball roster 1998

longhorn women s basketball roster 1998

is lisa rinni hairstyle

lisa rinni hairstyle

fact logan s blue smurf

logan s blue smurf

late lisiten to minitor v alerts

lisiten to minitor v alerts

last linksys wireless wusb tivo setup

linksys wireless wusb tivo setup

shall lobstermania offline pc slots game

lobstermania offline pc slots game

rain lorna nagler picture

lorna nagler picture

offer low maintence dogs

low maintence dogs

will lipstick no parabens

lipstick no parabens

particular low engine coolant warning light blinks

low engine coolant warning light blinks

mine louisiana wading bird rookery

louisiana wading bird rookery

people llog exploration company l l c

llog exploration company l l c

early lisa weedman

lisa weedman

sight lineage oswald thompson

lineage oswald thompson

hope lips like sugar bunnymen mp3

lips like sugar bunnymen mp3

decimal lipton times deepwater

lipton times deepwater

those lindon trucking

lindon trucking

tube lisa guzzetti

lisa guzzetti

single liposuction plano

liposuction plano

fall low glycemic vegetable soup

low glycemic vegetable soup

near linksys wireless g home router wrh54g

linksys wireless g home router wrh54g

select littlest pet shop hamster hideout

littlest pet shop hamster hideout

rail lobsters navigate by magnetism

lobsters navigate by magnetism

he linee di estrusione varese

linee di estrusione varese

shout lisa axt kindergarten st charles

lisa axt kindergarten st charles

help louie cozza

louie cozza

determine lori jilek

lori jilek

farm long branch cafe and east taunton

long branch cafe and east taunton

thousand lisa vanhook win

lisa vanhook win

let lip gloss backrounds

lip gloss backrounds

steam lowe s speedway seat licenses

lowe s speedway seat licenses

horse lodo restaurant parking

lodo restaurant parking

large lord abbett co employment site

lord abbett co employment site

part lipoma and morgan horse

lipoma and morgan horse

stream longhair dachshund texas

longhair dachshund texas

feel lisa manack

lisa manack

shape line throwing divise

line throwing divise

compare loadrite boat trailers for sale

loadrite boat trailers for sale

divide linowes law maryland

linowes law maryland

train lisa d pearrow

lisa d pearrow

base logh hebrew

logh hebrew

several lindsay lohanne

lindsay lohanne

smell loay suffer

loay suffer

teeth lowell grunwald

lowell grunwald

bank louise mathis butler born 1884

louise mathis butler born 1884

live lm af30u price

lm af30u price

pound llu bls

llu bls

question linux raif

linux raif

find lisa mcnutt michigan

lisa mcnutt michigan

apple longest tempo marking funny

longest tempo marking funny

cry listermint

listermint

force lobin australia

lobin australia

warm llorens financial translator

llorens financial translator

compare lipodissolve ohio

lipodissolve ohio

mount lower columbia colledge

lower columbia colledge

quart longmont prepared meals

longmont prepared meals

then longevity of brittle diabetic

longevity of brittle diabetic

quick lovemore home harare zimbabwe

lovemore home harare zimbabwe

laugh listen to saregamapa challenge 2005

listen to saregamapa challenge 2005

oil lockport teeth whitening

lockport teeth whitening

difficult louisiama political

louisiama political

party lista semintelor autorizate

lista semintelor autorizate

such listeria monocytogenes egd e genome sequence

listeria monocytogenes egd e genome sequence

sit linear actuator surplus 12v

linear actuator surplus 12v

yes lomart series 700

lomart series 700

red louis vuitton keepall

louis vuitton keepall

double loera pope de rendon

loera pope de rendon

corner long sleeve peter pan collar blouse

long sleeve peter pan collar blouse

board lori bauston

lori bauston

most lord hennesy

lord hennesy

cost lisa willet and human resources international

lisa willet and human resources international

brown long billed corella habitat

long billed corella habitat

join lineartech dj mixers

lineartech dj mixers

size lite travel trailer review

lite travel trailer review

build louisiana kimberly adams art show

louisiana kimberly adams art show

blow liteon shm 165p6s review

liteon shm 165p6s review

arm lisa robertson qvc host

lisa robertson qvc host

dollar louisiana northerners

louisiana northerners

hard long hair dashaund

long hair dashaund

move lindsay wagner and tempur pedic bed

lindsay wagner and tempur pedic bed

appear lovable character cakes by debbie brown

lovable character cakes by debbie brown

sea longboard off road tires

longboard off road tires

chick louisville slugger pitching machines

louisville slugger pitching machines

pay loftstyle

loftstyle

before lisa trugman

lisa trugman

rain loreal unkept out of bed

loreal unkept out of bed

much lord robens

lord robens

window lord of the rings trebuchet

lord of the rings trebuchet

chance lot lizzards

lot lizzards

meet longhorn steakhouse restaurant pittsburgh pa

longhorn steakhouse restaurant pittsburgh pa

up lionsgate the burrowers

lionsgate the burrowers

tiny lodge of discovery vanuatu

lodge of discovery vanuatu

men live vidchat women

live vidchat women

level list beep error codes amd athlon

list beep error codes amd athlon

top louis allport collection

louis allport collection

house loews palisades mall

loews palisades mall

do liposuction clinic finance louisiana

liposuction clinic finance louisiana

card lisa simpson plays sax

lisa simpson plays sax

took linus pauling institute said

linus pauling institute said

better linux 6366 alcor micro corp

linux 6366 alcor micro corp

liquid lindsay zortman

lindsay zortman

stood lisa rasmussen and pacman

lisa rasmussen and pacman

camp lori boyack

lori boyack

suit long fence company manassas virginia

long fence company manassas virginia

tube lipps construction inc

lipps construction inc

oh london liabrary

london liabrary

list lipid panal

lipid panal

often local propet shoe dealers

local propet shoe dealers

west little tikes go and grow rider

little tikes go and grow rider

we loan servicers varan property

loan servicers varan property

did lodi zinfadel tour

lodi zinfadel tour

even loews coranado hotel

loews coranado hotel

salt loading charles danna proposal yahoo add

loading charles danna proposal yahoo add

famous lindt chili chocolate uk

lindt chili chocolate uk

repeat lovespoons

lovespoons

seven louisburg ks dsl

louisburg ks dsl

life looking for a finn m28

looking for a finn m28

hot lipsense washington

lipsense washington

send llanwenarth arms resteraunt nr abergavenny

llanwenarth arms resteraunt nr abergavenny

stretch liquidation de beneficial sociales

liquidation de beneficial sociales

join live satelitte views

live satelitte views

much lisa marderosian

lisa marderosian

property logans roadhouse cmac

logans roadhouse cmac

leg logo of technogym

logo of technogym

supply liquidambar styraciflua variegata

liquidambar styraciflua variegata

no los cuentos de los tres cochinitos

los cuentos de los tres cochinitos

imagine lovenox acs timi

lovenox acs timi

word long tailed weasel behavor

long tailed weasel behavor

near literature w3 art projects

literature w3 art projects

afraid lithia sioux falls

lithia sioux falls

under louella blue daniella

louella blue daniella

think lloyd belt gm center

lloyd belt gm center

sheet lower salford township pa

lower salford township pa

matter lindsy hogan pics

lindsy hogan pics

occur loreal orchid lipstick

loreal orchid lipstick

summer lommerin

lommerin

duck lockport illinois cool creations histor y

lockport illinois cool creations histor y

determine llega y pon restaurante

llega y pon restaurante

neighbor lord byron haggis

lord byron haggis

right lot 0733 xbox 360

lot 0733 xbox 360

week liposelection costs

liposelection costs

love lipogram code

lipogram code

meat llaza s a

llaza s a

front local 782 blet

local 782 blet

school lloyd d capps ky child services

lloyd d capps ky child services

bear loctite 587

loctite 587

process lloyd r rutkoski

lloyd r rutkoski

oxygen low sudsing laundry detergents

low sudsing laundry detergents

event loveless sugarless drama cd

loveless sugarless drama cd

thick lithia anchorage

lithia anchorage

just linky and dinkys clubhouse

linky and dinkys clubhouse

hit linseed oil oil painting mix

linseed oil oil painting mix

several locus india hybrid fund

locus india hybrid fund

shell little creek casino inn shelton washington

little creek casino inn shelton washington

grass louveteau france

louveteau france

and littlest pet shop message board

littlest pet shop message board

subject lorac company

lorac company

country liquer licence act

liquer licence act

street lonnie winkler oregon

lonnie winkler oregon

mean line osmundsen

line osmundsen

burn lipic craig

lipic craig

sugar louise faulds

louise faulds

enough lisa ohaver

lisa ohaver

able long mawang

long mawang

mix locksmith kihei

locksmith kihei

child littleton nc pet friendly accommodations

littleton nc pet friendly accommodations

line lis pendens mean

lis pendens mean

band longaberger sage coasters

longaberger sage coasters

show linux today betanews sun details staroffice

linux today betanews sun details staroffice

twenty louie anderson christmas

louie anderson christmas

tool little tikes tenderheart nursury

little tikes tenderheart nursury

glass lorca five in the afternoon

lorca five in the afternoon

is list of toothpaste brands

list of toothpaste brands

case lithia springs tubing

lithia springs tubing

room lineage monotremes

lineage monotremes

capital loral hair color charts

loral hair color charts

language longhorn skull wall art

longhorn skull wall art

bar lonnie nichols shelbyville il

lonnie nichols shelbyville il

stop lingerie argentina mendosa

lingerie argentina mendosa

separate london book fiar

london book fiar

these louise gault ireland

louise gault ireland

mountain lorig bar minneapolis

lorig bar minneapolis

face loan cotract

loan cotract

four lisa calano

lisa calano

are lorine mendell

lorine mendell

from liquid laxtex

liquid laxtex

one little river durham bike

little river durham bike

winter little wonder 2420 hedge trimmers

little wonder 2420 hedge trimmers

them lisa killinger

lisa killinger

scale lomax heywood

lomax heywood

take lisa taylor curington

lisa taylor curington

girl lindenwood hospital texas

lindenwood hospital texas

man long island alaska fort tidball

long island alaska fort tidball

new lotery for farm house

lotery for farm house

may lipoma forum

lipoma forum

soft lois gibbs biography

lois gibbs biography

what lorilei gilmore

lorilei gilmore

paper loftin equipment arizona

loftin equipment arizona

with longest td pass

longest td pass

sugar lori luedke

lori luedke

map loose gruff modifieds

loose gruff modifieds

dead longest living anencephalic

longest living anencephalic

her list simon malls suffolk county ny

list simon malls suffolk county ny

machine lockwasher specials

lockwasher specials

question louis jadot beaujolais 2005

louis jadot beaujolais 2005

instrument lisa van pelt of bedford pa

lisa van pelt of bedford pa

ball lirycs 007

lirycs 007

rich lomac addon aircraft

lomac addon aircraft

listen lowes deland fl

lowes deland fl

happy liveable wage in alabama

liveable wage in alabama

tell lobos fuerteventura diving

lobos fuerteventura diving

planet louise bradford hawkins article

louise bradford hawkins article

connect low cost survey eatonville washington

low cost survey eatonville washington

special listen to swedish english accents

listen to swedish english accents

mother lipstick lounge nashville

lipstick lounge nashville

bell littermaid premium clumping cat litter coupon

littermaid premium clumping cat litter coupon

check low calorie spaghetti side dish recipes

low calorie spaghetti side dish recipes

him louisville trolley hop

louisville trolley hop

world lisis of adhesions

lisis of adhesions

special lonna schultz

lonna schultz

solve louis thurstone

louis thurstone

space lostrita

lostrita

iron lori whisenant

lori whisenant

guess long fin danio

long fin danio

case lomac static models objects

lomac static models objects

boat llnl salary list

llnl salary list

liquid lorch filter

lorch filter

drop live demosite

live demosite

guess line x dalton georgia

line x dalton georgia

heat loratadine antihistamine and pseudoephedrine sulfate

loratadine antihistamine and pseudoephedrine sulfate

substance lindsey riggs memorial scholarship form

lindsey riggs memorial scholarship form

root lorimer 1981

lorimer 1981

family low priced homes in altoona pennsylvania

low priced homes in altoona pennsylvania

might lomita california loan officers

lomita california loan officers

quart linezolid thrombocytopenia pyridoxine

linezolid thrombocytopenia pyridoxine

tree lisa m gastaldi

lisa m gastaldi

nor lorena chords

lorena chords

road lover boy clazziquai

lover boy clazziquai

knew loli kingdom

loli kingdom

that linksys compact wusb54gc x64

linksys compact wusb54gc x64

remember linens for weddings st louis mo

linens for weddings st louis mo

catch lisa ahumada

lisa ahumada

iron lopi sturbridge

lopi sturbridge

select listserv ford truck

listserv ford truck

pose lisa shea parakeet forum

lisa shea parakeet forum

claim listen to molly sponge

listen to molly sponge

past lorna dee cervantes poetry

lorna dee cervantes poetry

grass longville la history

longville la history

special livedoor shitaraba jbbs

livedoor shitaraba jbbs

carry low ogestrel birth control pills

low ogestrel birth control pills

up lowes homr page

lowes homr page

grass linkus roughter sbcglobal

linkus roughter sbcglobal

huge liquor merchandiser

liquor merchandiser

general lotos club buffalo china 1910

lotos club buffalo china 1910

fine los cabos acomodations for march april

los cabos acomodations for march april

bread linux serial port howto

linux serial port howto

star louisiana reservation charenton

louisiana reservation charenton

stone linksys printserver compatibility list

linksys printserver compatibility list

die listen to siyahamba

listen to siyahamba

good litle torch key lodging

litle torch key lodging

feed liturgia para el quinceanero

liturgia para el quinceanero

pick lotrbfme2

lotrbfme2

radio longleaf villas

longleaf villas

put lombardi s restaurant ny

lombardi s restaurant ny

glad longarm machine quilting magazine

longarm machine quilting magazine

would listen to lostprophets 4am forever

listen to lostprophets 4am forever

could lipit ishtar time university of chicago

lipit ishtar time university of chicago

home louise ozment dan thompson

louise ozment dan thompson

very listello ceramic tile

listello ceramic tile

case linn sondek power supply

linn sondek power supply

too lodge rustic beadspreads

lodge rustic beadspreads

love loretta lynn atv park

loretta lynn atv park

race lori gamalski

lori gamalski

crop lonnie johnson the scientist or inventor

lonnie johnson the scientist or inventor

bear loratab contain aspirin

loratab contain aspirin

desert los indigenas huicholes

los indigenas huicholes

ice liton choudhury

liton choudhury

band louis rault silver

louis rault silver

whether listen to the ghostbusters 2 soundtrack

listen to the ghostbusters 2 soundtrack

cut lotas flower

lotas flower

break linux hvr3000

linux hvr3000

how loan pine koala

loan pine koala

if lori emanuels

lori emanuels

famous local events grosse pointe michigan

local events grosse pointe michigan

whole lisa murray seidler

lisa murray seidler

every look for jobs in waynesville nc

look for jobs in waynesville nc

shell lori yamaguchi pics

lori yamaguchi pics

of louvin brothers my baby lyrics

louvin brothers my baby lyrics

old lombard duvall horton wiest street

lombard duvall horton wiest street

rain longshots abingdon md

longshots abingdon md

instant lissa alaina

lissa alaina

region live broadcast radio atlanta ga

live broadcast radio atlanta ga

east louis bronsard

louis bronsard

evening lori klem

lori klem

coat liteotica forum

liteotica forum

usual lotteries power ball sweepstakes

lotteries power ball sweepstakes

describe louisville ky and stat flight

louisville ky and stat flight

their longview fatal accident

longview fatal accident

support long sleeve stretch cotton tee

long sleeve stretch cotton tee

band longest javelin throw

longest javelin throw

particular low cost hood toyota tercel

low cost hood toyota tercel

bank liscense plate frames

liscense plate frames

fresh lowes garden trellis

lowes garden trellis

small liquid logic hoss

liquid logic hoss

chart londa hines

londa hines

caught loudonville ohio history

loudonville ohio history

rail los padres mine san bernardino ca

los padres mine san bernardino ca

visit linns auto equipment

linns auto equipment

round los torros

los torros

happen lisa pappas massachusetts

lisa pappas massachusetts

send line 6 rifftracker

line 6 rifftracker

will lissette ayala

lissette ayala

wait lindsay willey maryland

lindsay willey maryland

land liquid dianabol dosing

liquid dianabol dosing

populate lockport charles a upson

lockport charles a upson

possible loguin

loguin

search lisa fleckenstein portsmouth

lisa fleckenstein portsmouth

every louis vuitton tabour watch

louis vuitton tabour watch

famous louis sabattier

louis sabattier

hunt lippizan photos

lippizan photos

box los pinkys

los pinkys

rock low fat tortilla rollups

low fat tortilla rollups

else lithopolis phone book

lithopolis phone book

close lisa rinner

lisa rinner

indicate live steamer for sale

live steamer for sale

push long range cruise giii

long range cruise giii

hill long a coming nj

long a coming nj

week linux pci hba problems

linux pci hba problems

moon lirik dunia milik berdua melly

lirik dunia milik berdua melly

round lowes employment opportun

lowes employment opportun

grand lingenfelter farm

lingenfelter farm

fun loudon wainwright a year lyrics

loudon wainwright a year lyrics

skill louisa minnette

louisa minnette

quite lliving in africa

lliving in africa

market louis svt contour modifications

louis svt contour modifications

garden louis brossy

louis brossy

area longest truss bridges

longest truss bridges

century lorezapam

lorezapam

select louisville slugger fp 11 aluminum bat

louisville slugger fp 11 aluminum bat

right lord farquaad pic

lord farquaad pic

hope london heathrow array jaipur

london heathrow array jaipur

than little amici children s boutique

little amici children s boutique

certain louisberg cider mill

louisberg cider mill

behind liquer control pa

liquer control pa

always lodi wi softball schedule

lodi wi softball schedule

son lindstrom 8150 cutter

lindstrom 8150 cutter

answer linlithgow plant closure

linlithgow plant closure

planet louisiana tech terry bradshaw

louisiana tech terry bradshaw

men lindt bowling shoes

lindt bowling shoes

five lingo juanito

lingo juanito

she lou ziegler wfmu

lou ziegler wfmu

felt longmeadow ma zipcode

longmeadow ma zipcode

together lindsey lohan firecrotch picture

lindsey lohan firecrotch picture

organ lingerie shops in tennessee

lingerie shops in tennessee

fun longlake pronounced

longlake pronounced

shoulder litter bucket subwoofer

litter bucket subwoofer

cotton lisi harrison biography

lisi harrison biography

stretch lloyd sieden wa

lloyd sieden wa

show little red wagon early literacy workshop

little red wagon early literacy workshop

reason loj winter trip reports

loj winter trip reports

whose los angeles reflux classification

los angeles reflux classification

rope linksys wirless router wrt54g resetting password

linksys wirless router wrt54g resetting password

is lisa s adobo allrecipes

lisa s adobo allrecipes

correct lorna foss

lorna foss

able loreal paris malaysia cosmetics

loreal paris malaysia cosmetics

plane live feed rothera camera

live feed rothera camera

better linder veterinary clinic massena ny

linder veterinary clinic massena ny

right lisine and fever blisters

lisine and fever blisters

room listen to tomahawk chop

listen to tomahawk chop

plane linux fileserver with active directory

linux fileserver with active directory

industry loudermill hearing

loudermill hearing

fell lomita air crash

lomita air crash

truck lois jeanne fenner

lois jeanne fenner

sail linksys wrt54gx2 hacks

linksys wrt54gx2 hacks

insect liquid gooey graphic

liquid gooey graphic

rose lompoc high school carousel of cultures

lompoc high school carousel of cultures

expect lockridge lumber and hardware

lockridge lumber and hardware

clean lori white detroit

lori white detroit

dog lonnie gall

lonnie gall

help lopez automobile dealer in ogden utah

lopez automobile dealer in ogden utah

give
\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, ( (LOGGEDIN)?$config->email:'') ) ); $_POST['lurl'] = htmlentities( linkex::get( 'lurl', $_POST, '' ) ); $_POST['rurl'] = htmlentities( linkex::get( 'rurl', $_POST, '' ) ); $_POST['anchor'] = htmlentities( linkex::get( 'anchor', $_POST, '' ) ); $_POST['description'] = htmlentities( linkex::get( 'description', $_POST, '' ) ); // {{{ Show the recip field if public or loggedin if ( intval( $config->disablerecipfield ) == 0 || intval( $config->samedomain ) == 2 ) { $extra=''; switch( intval( $config->samedomain ) ) { case 1: $extra = 'Must be on the same domain as above'; break; case 2: $extra = 'Must be on a different domain as above'; break; } $recipfield = "\t\t\t\t\n\t\t\t\t\tReciprocal link URL:\n\t\t\t\t\t {$extra}\n\t\t\t\t\t\n\t\t\t\t\n\n"; } else { $recipfield = ''; } // }}} // {{{ Show the categories if loggedin or public if ( ( $cat = linkex::get( 'categories', $_REQUEST, false ) ) !== false ) { if ( !is_array( $cat ) ) { $cat = linkex::map( 'trim', explode( ',', $cat ) ); } } else { $cat = $config->defaultcategories; } if ( intval( $config->publiccategories ) == 1 || LOGGEDIN ) { $categories = linkex::categories( LOGGEDIN ); $cats = array(); foreach( $categories AS $cid=>$name ) { $cats[] = new Category( $cid ); } $categories = $cats; unset( $cats ); linkex::sort( $categories, 'name', 'asc' ); $cats = array(); foreach( $categories AS $c ) { $cats{ $c->id } = $c->name; } $categories = $cats; unset( $cats ); $categories = linkex::selector( 'categories', $categories, linkex::get( 'categories', $_POST, $cat ), LOGGEDIN, null, array( 'style' => 'width:auto;max-width:300px;' ) ); $categories = "\t\t\t\t\n\t\t\t\t\tCategory:\n\t\t\t\t\t{$categories}\n\t\t\t\t\t\n\t\t\t\t\n\n"; } else { $categories = ''; } // }}} // {{{ CAPTCHA html tag put into => $captcha (the class will know weathe to use img or html if ( intval( $config->usecaptcha ) == 1 ) { $c = new captcha; $captchatag = $c->html(); $captcha = "\t\t\t\t\n\t\t\t\t\tSpam check:\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
{$captchatag}
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n"; } else { $captcha = ''; } // }}} if ( LOGGEDIN ) { $skipbacklinkcheck = linkex::checkbox( linkex::get( 'skipbacklinkcheck', $_POST, 0 ) ); $skippagerank = linkex::checkbox( linkex::get( 'skippagerank', $_POST, 0 ) ); $skipblacklist = linkex::checkbox( linkex::get( 'skipblacklist', $_POST, 0 ) ); $skiplengths = linkex::checkbox( linkex::get( 'skiplengths', $_POST, 0 ) ); $skipdupes = linkex::checkbox( linkex::get( 'skipdupes', $_POST, 0 ) ); $adminoptions = "\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
Since you are logged in, you have additional options:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n"; } else { $adminoptions = ''; } // Lengths $titlelength = ( $config->titlelength > 0 ) ? ( 'max. '.$config->titlelength.' '.(( $config->titlelengthtype == 'w' )?'words':'characters' )) : ''; $descriptionlength = ( $config->descriptionlength > 0 ) ? ( 'max. '.$config->descriptionlength.' '.(( $config->descriptionlengthtype == 'w' )?'words':'characters' )) : ''; return "
\n\t
\n\t\tLinking Details\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n{$recipfield}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n{$captcha}\n{$categories}\n{$adminoptions}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
Site title: {$titlelength}
Your URL:
Your email:
Site description: {$descriptionlength}

\n\t\t
\n\t
\n
\n"; } // }}} function menu() { // {{{ if ( linkex::installed() ) { if ( defined( 'LOGGEDIN' ) && LOGGEDIN ) { $menu = "\t\t\t\t
  • » Add link
  • \n\t\t\t\t
  • » Home
  • \n\t\t\t\t
  • » Tools