' . $person_id . '';
}
}
function plc_node_link ($node_id) {
if ( empty ($node_id)) {
return "";
} else {
return '' . $node_id . ' ';
}
}
// pagination function
function paginate( $fn_array, $table_id, $caption, $limit, $main_field, $other_func= NULL, $fid= NULL ) {
// get vars from call adjust them
$dir= strtolower( $caption );
$echo= "";
$link_page= 'index.php';
// check for page number
if( empty( $_GET['page'] ) )
$page= 1;
else
$page= $_GET['page'];
// reorder array_chunk
foreach( $fn_array as $arr1 ) {
unset( $arr2 );
foreach( $arr1 as $key => $val ) {
// if( substr( $key, -3 ) == "_id" )
if ( $key == $table_id ) {
$id[$key]= $val;
} else {
$data[$key]= $val;
}
}
foreach( $id as $key => $val )
$arr2[$key]= $val;
foreach( $data as $key => $val )
$arr2[$key]= $val;
$as_array[]= $arr2;
}
$totalrows= count( $as_array );
// if array has no rows display msg
if( $totalrows == 0 )
return "Nothing to display";
// set key and break up data struct
$newkey= $page - 1;
$newarray= array_chunk( $as_array, $limit );
// start table output
$echo.= "
\n";
// if there is a caption add it to table
if( $caption )
$echo.= "$caption \n";
$echo.= "";
// go through keys of one array row for table headers
foreach( $newarray[$newkey][0] as $key => $val ) {
// if( substr( $key, -3 ) != "_id" )
if ( $key != $table_id && $key != 'peer_id' )
$echo.= "". ucfirst( $key ) ." ";
}
if( $other_func == 'slivers' )
$echo.= "Slivers ";
$echo.= " \n";
// go through array row by row to output table rows
foreach( $newarray[$newkey] as $assoc ) {
$extraclass="";
if ($assoc['peer_id']) {
$extraclass="plc-foreign";
}
$echo.= "";
foreach( $assoc as $key => $val ) {
// do not rely on keys order
$id = $assoc[$table_id];
// if( substr( $key, -3 ) == "_id" )
if ($key == $table_id) {
// $id= $val;
continue;
} elseif( $key == $main_field ) {
$echo.= "";
} elseif ($key != 'peer_id') {
$echo.= "";
}
}
if( $other_func == 'slivers' )
$echo.= "view ";
$echo.= " \n";
}
// close table
$echo.= "
\n";
$echo.= " \n";
// find total number of pages
$numofpages = $totalrows / $limit;
// start navigation links
if( $numofpages > 1 ) {
// if page is not 1 display first and prev links
if( $page != 1 && $page ) {
$pageprev= $page - 1;
$echo.= "FIRST ";
$echo.= " PREV ".$limit." ";
}
else
$echo.= "PREV ". $limit ." ";
// if less than 30 pages display all
// otherwise show 30 pages but put ... inbetween
if( $numofpages < 30 ) {
$npages= $numofpages;
$start= 1;
}
else {
$npages= $page + 9;
if( $npages > $numofpages )
$npages= $numofpages;
$start= $page - 10;
if( $start < 1 )
$start= 1;
if( $page != 1 )
$echo.= " ... ";
}
// display pages, no link if current page
for( $i= $start; $i <= $npages; $i++ ) {
if( $i == $page )
$echo.= $i ." ";
else
$echo.= "$i ";
}
if( ( $totalrows % $limit ) != 0 ) {
$last= $numofpages + 1;
if( $i == $page )
$echo.= $i ." ";
else
$echo.= "$i ";
}
else
$last= $numofpages;
if( $numofpages >= 30 ) {
if( $page != $numofpages )
$echo.= " ... ";
}
if( ( $totalrows - ($limit * $page) ) > 0 ) {
$pagenext= $page + 1;
$echo.= " NEXT ".$limit." ";
}
else
$echo.= "NEXT ". $limit;
$echo.= " LAST \n";
}
return $echo;
}
// function for getting the diff of multi dimention array
function arr_diff( $a1, $a2 ) {
$diff= array();
foreach( $a1 as $k=>$v ) {
unset( $dv );
for( $x= 0; $x < count( $a2 ); $x++ ) {
if( is_int( $k ) ) {
if( array_search( $v, $a2 ) === false )
$dv=$v;
else if( is_array( $v ) )
$dv= arr_diff( $v, $a2[$x] );
if( $dv && !in_array( $dv, $diff ) )
$diff[]=$dv;
}
else {
if( !$a2[$k] )
$dv=$v;
else if(is_array($v))
$dv=arr_diff($v,$a2[$x]);
if($dv)
$diff[$x]=$dv;
}
}
}
return $diff;
}
function is_valid_email_addr($email)
{
if( ereg("^.+@.+\\..+$", $email) )
return true;
else
return false;
}
function is_valid_url($url)
{
if( ereg("^(http|https)://.+\..+$", strtolower($url) ) )
return true;
else
return false;
}
function is_valid_ip($ip)
{
if( ereg("^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$", $ip ) )
{
// it's at least in the right format, now check to see if
// each part is equal to less than 255
$parts= explode( '.', $ip );
$count= count($parts);
for( $i= 0; $i < $count; $i++ )
{
if( intval($parts[$i]) > 255 )
return false;
}
return true;
}
else
return false;
}
function is_valid_network_addr($network_addr,$mask)
{
$lNetwork= ip2long($network_addr);
$lMask= ip2long($mask);
// are they the correct format?
if( $lNetwork == -1 || $lMask == -1 )
return false;
// is network address valid for the mask?
if( ($lNetwork & $lMask) != $lNetwork )
return false;
return true;
}
// returns whether or not a network address is in the reserved space
// in the case of a invalid network address, false will be returned.
function is_reserved_network_addr($network_addr)
{
$lNetwork= ip2long($network_addr);
if( $lNetwork == -1 )
return false;
// does the network address fall in a reserved block?
$reserved_ips = array (
array('10.0.0.0','10.255.255.255'),
array('172.16.0.0','172.31.0.0'),
array('192.168.0.0','192.168.255.0')
);
foreach ($reserved_ips as $r)
{
$min = ip2long($r[0]);
$max = ip2long($r[1]);
if (($lNetwork >= $min) && ($lNetwork <= $max))
return true;
}
return false;
}
// builds a table from an array of strings, with the given class
function plc_make_table ($class, $messages) {
// pretty print the cell
$formatted = "";
if (! empty ($messages)) {
$formatted="";
foreach ($messages as $message) {
$formatted .= "" . $message . " ";
}
$formatted .= "
";
}
return $formatted;
}
// shows a php variable verbatim with a heading message
function plc_debug($message,$object) {
print " " . $message . "";
print_r ($object);
print " ";
}
// attempt to normalize the delete buttons and confirmations
function plc_delete_button($width=15) {
return ' ';
}
function plc_js_confirm($message) {
return "onclick=\"javascript:return confirm('Are you sure you want to delete " . $message . " ?')\"";
}
function plc_delete_link($url,$delete_message,$visible) {
return "" . $visible . " ";
}
function plc_delete_link_button($url,$delete_message,$width=15) {
return "" . plc_delete_button($width) . " ";
}
function plc_event_button($type,$param,$id) {
return ' ';
}
function plc_comon_button ($field, $value,$target="") {
$result='';
$result.=' ';
return $result;
}
function plc_peers_option_list ($api) {
// get list of peers
$peers=$api->GetPeers(NULL,array('peer_id','peername'));
if (count($peers)==0) {
$predef=array(array("peer_id"=>"","peername"=>"All (no known peers)"));
} else {
$predef=array(array("peer_id"=>"","peername"=>"All peers"),
array("peer_id"=>"local","peername"=>"Local only"));
// show a 'foreign' button only if that makes sense
if (count($peers) >= 2) {
$predef [] = array("peer_id"=>"foreign","peername"=>"Foreign peers");
}
}
$result="";
foreach ($predef as $a) {
$peer_line = "" . $a['peername'] . " \n";
$result .= $peer_line;
}
if (!empty($peers)) {
foreach ($peers as $a) {
$peer_line = "" . $a['peername'] . " \n";
$result .= $peer_line;
}
}
return $result;
}
function plc_peer_info ($api,$peerscope) {
switch ($_GET['peerscope']) {
case '':
$peer_filter=array();
$peer_label="all peers";
break;
case 'local':
$peer_filter=array("peer_id"=>NULL);
$peer_label="local peer";
break;
case 'foreign':
$peer_filter=array("~peer_id"=>NULL);
$peer_label="foreign peers";
break;
default:
$peer_id=intval($_GET['peerscope']);
$peer_filter=array("peer_id"=>$peer_id);
$peer=$api->GetPeers(array("peer_id"=>$peer_id));
$peer_label='peer "' . $peer[0]['peername'] . '"';
break;
}
return array ($peer_filter,$peer_label);
}
function topdomain ($hostname) {
$exploded=array_reverse(explode(".",$hostname));
return $exploded[0];
}
?>