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

//// TXT_CHK  /////////////////////////// ///// //// /// // /
/// the image source text check //////// ///// //// /// // /
// bot ID #2 ////////////////////////// ///// //// /// // /

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

echo 
"
 ___________  _________ ______________  _______ __
____  __/_  |/ /__  __/ __  ____/__  / / /__  //_/
 __  /  __    /__  /    _  /    __  /_/ /__  ,<   
 _  /   _    | _  /     / /___  _  __  / _  /| |  
 /_/    /_/|_| /_/______\____/  /_/ /_/  /_/ |_|  
                 _/_____/                         

  TXT_CHK is the IMG SRC ORG program to check text on web pages
  in general and to deprecate associated texts and images
  and thus part of the image-source.org search engine
  bot ID #3, the standard timer is set to " 
$timer ." seconds
  IN from table TextsToConfirm, OUT to TextsConfirmed
  __________________________________________________
"
;

// Special Function Definitions

// --

// Main function to loop

function Cycle ($timer$txt_chk_timer$txt_chk_timer_pause$txt_chk_select_limit,
$txt_chk_forbidden_domains$txt_chk_forbidden_folders$txt_chk_forbidden_urls,
$txt_chk_forbidden_words_title$txt_chk_forbidden_authors$txt_chk_forbidden_keywords$txt_chk_forbidden_words_description,
$mode)
{
    
$time time();
    
    
$connect mysql_connect ('localhost''txtchk1''******');
    
$database_select mysql_select_db ('imagesource'$connect);

    
// read from IN table
    /////////////////////////////////////////////////////////////////////////////
     
$query 'SELECT id FROM TextsToConfirm;';
    
$query mysql_query($query);
    
$rows_number mysql_affected_rows();
     
    
$query 'SELECT id, url, timestamp, title, author, keywords, description, linked_from_id
         FROM TextsToConfirm ORDER BY timestamp ASC LIMIT 0, ' 
$txt_chk_select_limit ';';
    
$query mysql_query($query);
    
$query_result mysql_fetch_assoc($query);

    
$id $query_result['id'];
    
$url $query_result['url'];
    
$timestamp $query_result['timestamp'];
    
$title $query_result['title'];
    
$author $query_result['author'];
    
$keywords $query_result['keywords'];
    
$description $query_result['description'];

    
$linked_from_id $query_result['linked_from_id'];

    
/////////////////////////////////////////////////////////////////////////////
    // processing data
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////

    
$write_out TRUE;
    
$delete_in TRUE;

    if ( 
$rows_number == ) { $write_out FALSE; }

    foreach (
$txt_chk_forbidden_domains as $k => $v) {
        if ( 
strstr($url$txt_chk_forbidden_domains[$k]) ) {
            echo 
"-";
            
$write_out FALSE;
            
$message2 "forbidden domain";
        }
    }

    foreach (
$txt_chk_forbidden_folders as $k => $v) {
        if ( 
strstr($url$txt_chk_forbidden_folders[$k]) ) {
            
$write_out FALSE;
            
$message2 "forbidden subfolder";
        }
    }

    foreach (
$txt_chk_forbidden_urls as $k => $v) {
        if ( 
strstr($url$txt_chk_forbidden_urls[$k]) ) {
            
$write_out FALSE;
            
$message2 "forbidden url";
        }
    }

    foreach (
$txt_chk_forbidden_words_title as $k => $v) {
        if ( 
strstr($title$txt_chk_forbidden_words_title[$k]) ) {
            
$write_out FALSE;
            
$message2 "forbidden titlewords";
        }
    }

    foreach (
$txt_chk_forbidden_authors  as $k => $v) {
        if ( 
strstr($author$txt_chk_forbidden_authors[$k]) ) {
            
$write_out FALSE;
            
$message2 "forbidden author";
        }
    }

    foreach (
$txt_chk_forbidden_keywords  as $k => $v) {
        if ( 
strstr($keywords$txt_chk_forbidden_keywords[$k]) ) {
            
$write_out FALSE;
            
$message2 "forbidden keyword";
        }
    }

    foreach (
$txt_chk_forbidden_words_description  as $k => $v) {
        if ( 
strstr($description$txt_chk_forbidden_words_description[$k]) ) {
            
$write_out FALSE;
            
$message2 "forbidden description";
        }
    }


    
// OUT
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////

    
if ($write_out == TRUE) {
        
$query "INSERT INTO TextsConfirmed (id, url, timestamp, title, author, keywords, description, linked_from_id)
            VALUES ( '
$id', '$url', '$timestamp', '$title', '$author', '$keywords', '$description', '$linked_from_id' );";
        
$query_insert mysql_query($query);
    }

    if (
$query_insert) {
        
$message " passed.";
    } else {
        
$message " not passed\n  (reason: " $message2;
    }


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

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

    
// close db
    /////////////////////////////////////////////////////////////////////////////    
    
mysql_close($connect);


    
// take the time
    /////////////////////////////////////////////////////////////////////////////    
    
$time time() - $time;


    
// shell messages
    /////////////////////////////////////////////////////////////////////////////    
    
if ($rows_number == 0) {
        if (
$mode == 'stop') {
            echo 
"\n  table TextsToConfirm empty\n TXT_CHK stopped\n";
            return;
        } else {
            
$timer $txt_chk_timer_pause;
            echo 
"\n  table TextsToConfirm empty\n  waiting "
            
$timer " seconds\n  __________________________________________________\n";
        }
    } else {
        if (
$mode == "stop") {
            echo 
"\n  " $complete_url " (-" $rows_number-")";
            echo 
"\n  TXT_CHK stopped\n  use 'loop' as argument to cycle the TextsToConfirm table\n";
            return;
        } else {
            
$timer $txt_chk_timer;
            
$number $rows_number 1;
            echo 
"\n  " $url $message "\n  (" $number " to go, memory status: " round(memory_get_usage()/1024/10243) . ")\n";
        }
    }

    
sleep($timer);

}


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

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

$query 'SELECT id FROM TextsToConfirm;';
$query mysql_query($query);
$loop mysql_affected_rows();

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

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

mysql_close($connect);

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

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

    
    
Cycle($timer$txt_chk_timer$txt_chk_timer_pause$txt_chk_select_limit,
    
$txt_chk_forbidden_domains$txt_chk_forbidden_folders$txt_chk_forbidden_urls,
    
$txt_chk_forbidden_words_title$txt_chk_forbidden_authors$txt_chk_forbidden_keywords$txt_chk_forbidden_words_description,
    
$mode);

}


?>