#!/usr/bin/php5 -q 
<?php

//// URL_CHK  /////////////////////////// ///// //// /// // /
/// the image source url checker  ////// ///// //// /// // /
// bot ID #1 ////////////////////////// ///// //// /// // /

include_once('global_vars_backend.php');
ini_set('user_agent'$url_chk_user_agent);
$mode $_SERVER['argv'][1];

echo 
"
                                                           _ ____
 _____  _______________      _______________  _______ __  ___|_  |
___  / / /__  __ \__  /    _____  ____/__  / / /__  //_/   _/ __/_
 _  / / /__  /_/ /_  /       __  /    __  /_/ /__  ,<    __/_____/ 
 / /_/ / _  _, _/_  /___      / /___  _  __  / _  /| |
 \____/  /_/ |_| /_____/______\____/  /_/ /_/  /_/ |_|
                     __/_____/

  URL_CHK II is the IMG SRC ORG program to confirm links found on spidered sites 
  and part of the image-source.org search engine
  bot ID #1b, the standard timer is set to " 
$timer ." seconds
  IN from table LinksToConfirm, OUT to ConfirmedUrls
  __________________________________________________
"
;

// function definitions

function VisitUrl($url) {
    if (
$url) { $file fopen ($url"r"); }

    if (
$file) {
        return 
true;
        
fclose($file);
    } else {
        return 
false;
    }

    
fclose($file);
}

function 
AcceptUrl($url) {
    if ( 
preg_match('/[?=&]/'$url) || preg_match('/^ftp:/'$url) ) {
        
$message 'Not accepted.';
        return 
false;
    } else {
        
$message 'Accepted.';
        return 
true;
    }
}

function 
Cycle ($timer$url_chk_timer$url_chk_timer_pause$url_chk_select_limit$mode)
{
    
$connect mysql_connect ('localhost''urlchk''******');
    
$database_select mysql_select_db ('imagesource'$connect);

    
// read from IN table
    /////////////////////////////////////////////////////////////////////////////
     
$query 'SELECT url FROM LinksToConfirm;';
    
$query mysql_query($query);
    
$rows_number mysql_affected_rows();
     
    
$query 'SELECT * FROM LinksToConfirm ORDER BY timestamp DESC LIMIT 0, ' $url_chk_select_limit ';';
    
$query mysql_query($query);
    
$query_result mysql_fetch_assoc($query);

    
$url $query_result['url'];
    
$timestamp $query_result['timestamp'];
    
$priority $query_result['priority'];

    
$linked_from_id $query_result['linked_from_id'];


    
// processing data
    /////////////////////////////////////////////////////////////////////////////
    
if ( substr($url07) != 'http://' ) { 
        
$complete_url 'http://' $url;
    } else {
        
$complete_url $url;
    }

    
/*
    if ( (substr($complete_url, strlen($complete_url)-1, strlen($complete_url)) != '/')
    && ( !strstr (substr($complete_url, strlen($complete_url)-4, strlen($complete_url)), '.' ) ) ) {
        $complete_url = $complete_url . '/';
    }
    */

    
if ( AcceptUrl($complete_url) && AcceptUrl($complete_url) ) {
        
$write_out TRUE;
        
$delete_in TRUE;        
    } else {
        
$write_out FALSE;
        
$delete_in TRUE;        
    }

    if ( 
VisitUrl($complete_url) && AcceptUrl($complete_url) ) {
        
$write_out TRUE;
        
$delete_in TRUE;        
    } else {
        
$write_out FALSE;
        
$delete_in TRUE;        
    }

    if ( 
$write_out == FALSE ) { $message " not accepted!"; }
    if ( 
$write_out == TRUE ) { $message " accepted and passed."; }
    


    
// write to OUT table(s)
    /////////////////////////////////////////////////////////////////////////////    
    
if ($write_out == TRUE) {
        
$query "INSERT INTO ConfirmedUrls (url, timestamp_entered, timestamp_confirmed, linked_from_id)
            VALUES ('
$complete_url', '$timestamp', CURRENT_TIMESTAMP, '$linked_from_id');";
        
$query mysql_query($query);
    }

    
// update program control (PRG_CTR!)
    /////////////////////////////////////////////////////////////////////////////
    
if ($write_out == TRUE) {
        
$query "UPDATE ProgramControl SET running = 1, lastrun = CURRENT_TIMESTAMP() WHERE program = 'URL_CHK';";
        
$query_update_control mysql_query($query);
     } elseif ( 
$rows_number == ) {
        
$query "UPDATE ProgramControl SET running = 1, lastrun = CURRENT_TIMESTAMP() WHERE program = 'URL_CHK';";
        
$query_update_control mysql_query($query);
    }

    
// delete from IN table
    /////////////////////////////////////////////////////////////////////////////
    
if ($delete_in == TRUE) {
        
$query "DELETE FROM LinksToConfirm WHERE url = '$url';";
        
$query mysql_query($query);
    }


    
mysql_close($connect);

    
// shell messages
    /////////////////////////////////////////////////////////////////////////////    
    
if ($rows_number == 0) {
        if (
$mode == 'stop') {
            echo 
"\n  table LinksToConfirm empty\n URL_CHK stopped\n";
            return;
        } else {
            
$timer $url_chk_timer_pause;
            echo 
"\n  table LinksToConfirm empty\n  waiting for "
            
$timer " seconds\n  __________________________________________________\n";
        }
    } else {
        if (
$mode == "stop") {
            echo 
"\n  " $complete_url " (-" $rows_number-")";
            echo 
"\n  URL_CHK_2 stopped\n  use 'loop' as argument to cycle the UserUrls table\n";
            return;
        } else {
            
$timer $url_chk_timer;
            
$number $rows_number 1;
            echo 
"\n  " $url $message "\n  (originating site: ID# " $linked_from_id ", " $number ." to go, memory status: " .     round(memory_get_usage()/1024/10243) . ")\n";
        }
    }

    
sleep($timer);

}


// getting table entries for loop
/////////////////////////////////////////////////////////////////////////////

$connect mysql_connect ('localhost''urlchk''builder');
$database_select mysql_select_db ('imagesource'$connect);

$query 'SELECT url FROM LinksToConfirm;';
$query mysql_query($query);
$loop mysql_affected_rows();

// set orange color
/////////////////////////////////////////////////////////////////////////////

$query "UPDATE ProgramControl SET running = 2, lastrun = CURRENT_TIMESTAMP() WHERE program = 'URL_CHK';";
$query_update_control mysql_query($query);

mysql_close($connect);

// loop
/////////////////////////////////////////////////////////////////////////////

for ( $i 1$i <= $loop$i++ ) {

    
Cycle($timer$url_chk_timer$url_chk_timer_pause$url_chk_select_limit$mode);
}


?>