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

//// IMG_CHK  /////////////////////////// ///// //// /// // /
/// the image source image check /////// ///// //// /// // /
// bot ID #4 ////////////////////////// ///// //// /// // /

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

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

  IMG_CHK is the IMG SRC ORG program to check images on surrounding 
  texts, file size and aspect ratios to decide upon an admittance 
  to the index and thus part of the image-source.org search engine
  bot ID #4, the standard timer is set to " 
$timer ." seconds
  IN from table ImagesToConfirm, OUT to ImagesConfirmed
  __________________________________________________
"
;

// Special Function Definitions

// --

// Main function to loop

function Cycle ($timer$img_chk_timer$img_chk_timer_pause$img_chk_select_limit,
$img_chk_forbidden_words_near$img_chk_forbidden_words_alt,
$img_chk_width_min$img_chk_width_max$img_chk_height_min$img_chk_height_max,
$img_chk_aspect_min$img_chk_aspect_max,
$img_chk_file_size_min$img_chk_file_size_max,
$mode)
{
    
$time time();
    
    
$connect mysql_connect ('localhost''imgchk1''******');
    
$database_select mysql_select_db ('imagesource'$connect);

    
// read from IN table
    /////////////////////////////////////////////////////////////////////////////
     
$query 'SELECT id FROM ImagesToConfirm;';
    
$query mysql_query($query);
    
$rows_number mysql_affected_rows();
     
    
$query 'SELECT id, url, timestamp, updated, width, height, alt, longdesc, leftside, rightside
         FROM ImagesToConfirm ORDER BY timestamp ASC LIMIT 0, ' 
$img_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'];
    
$updated $query_result['updated'];

    
$width $query_result['width'];
    
$height $query_result['height'];
    
$alt $query_result['alt'];
    
$longdesc $query_result['longdesc'];

    
$leftside $query_result['leftside'];
    
$rightside $query_result['rightside'];

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

    
$write_out TRUE;
    
$delete_in TRUE;

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

    foreach (
$img_chk_forbidden_words_near as $k => $v) {
        if ( 
stristr($leftside$img_chk_forbidden_words_near[$k]) ) {
            
$write_out FALSE;
            
$reason "left side";
        }
    }

    foreach (
$img_chk_forbidden_words_near as $k => $v) {
        if ( 
stristr($rightside$img_chk_forbidden_words_near[$k]) ) {
            
$write_out FALSE;
            
$reason "right side";
        }
    }

    foreach (
$img_chk_forbidden_words_alt as $k => $v) {
        if ( 
stristr($alt$img_chk_forbidden_words_alt[$k]) ) {
            
$write_out FALSE;
            
$reason "alt-tag";
        }
    }

    if ( isset(
$url) && $write_out == TRUE ) {
        
$output shell_exec"identify -format '%w,%h,%b' " $url );
        
$matches preg_split("/\,/i"$output0PREG_SPLIT_NO_EMPTY );

        
$width $matches[0];
        
$height $matches[1];
        
$size $matches[2];

        echo 
"\n  Real width (" $width ") and height (" $height ") detected of:"//, size " . $size . " bytes:";

        
$aspect $width $height;
        
        
/*
        //Testing
        echo $img_chk_width_min;
        echo $img_chk_width_max;
        echo $img_chk_height_min;
        echo $img_chk_height_max;
        */

        
if ( $width <= $img_chk_width_min || $width >= $img_chk_width_max ) {
            
$write_out FALSE;
            
$reason "width";
        }

        if ( 
$height <= $img_chk_height_min || $height >= $img_chk_height_max ) {
            
$write_out FALSE;
            
$reason "height";
        }

        if ( 
$size <= $img_chk_file_size_min || $size >= $img_chk_file_size_max ) {
            
$write_out FALSE;
            
$reason "file size";
        }

        if ( 
$aspect <= $img_chk_aspect_min || $aspect >= $img_chk_aspect_max ) {
            
$write_out FALSE;
            
$reason "aspect ratio";
        }
    }


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

     
$query_text_check "SELECT " $id " FROM TextsConfirmed;";
    
$query_text_check mysql_query($query_text_check);
    
$rows_number_text_check mysql_affected_rows();

     
$query_image_check "SELECT " $id " FROM ImagesConfirmed;";
    
$query_image_check mysql_query($query_image_check);
    
$rows_number_image_check mysql_affected_rows();

// das stimmt noch nicht


    // if ID in TextsConfirmed pass on; if not: dont pass on
    // immer nur wenn es auch das letzte bild mit der ID in der tabelle ist!
    
if ( ($rows_number_text_check 1) ) {
        
$write_out FALSE;
echo 
"not in TxtConf! last in ImgConf";
    }

    
// img chk sagt nein, aber der dazugehoerige text ist bereits in TextsConfirmed? delete from TextsConfirmed
    // immer nur wenn es auch das letzte bild mit der ID in der tabelle ist!
    
if ( ($write_out == FALSE) && ($rows_number_text_check >= 1) && ($rows_number_image_check <= 1) ) {
echo 
"WO flase, but in Txtconf , last in TXtC";

        
$query "DELETE FROM TextsConfirmed WHERE id = $id";
        
$query_del mysql_query($query);

        if (
$query_del) {
            
$query_del_msg "\n  Note: Text from TextsConfirmed removed!";

echo 
" del ok";
        }

    }

    if (
$write_out == TRUE) {
        
$query "INSERT INTO ImagesConfirmed (id, url, timestamp, updated, width, height, aspect, size, alt, longdesc, leftside, rightside)
            VALUES ( '
$id', '$url', '$timestamp', '$updated', '$width', '$height', '$aspect', '$size', '$alt', '$longdesc', '$leftside', '$rightside');";
        
$query_insert mysql_query($query);
echo 
" insret ok";
    }


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

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

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


    
// take the time + make messages
    /////////////////////////////////////////////////////////////////////////////    
    
$time time() - $time;

    if ( 
$query_insert && $query_delete ) {
        
$confirm " passed.\n  (";
    } else {
        
$confirm "\n  deprecated (reason: " $reason ",\n  ";
    }


    
// shell messages
    /////////////////////////////////////////////////////////////////////////////    
    
if ($rows_number == 0) {
        if (
$mode == 'stop') {
            echo 
"\n  table ImagesToConfirm empty\n img_CHK stopped\n";
            return;
        } else {
            
$timer $img_chk_timer_pause;
            echo 
"\n  table ImagesToConfirm empty\n  waiting "
            
$timer " seconds\n  __________________________________________________\n";
        }
    } else {
        if (
$mode == "stop") {
            echo 
"\n  " $complete_url " (-" $rows_number-")";
            echo 
"\n  IMG_CHK stopped\n  use 'loop' as argument to cycle the ImagesToConfirm table\n";
            return;
        } else {
            
$timer $img_chk_timer;
            
$number $rows_number 1;
            
            echo 
"\n  " $url $confirm $number ." to go, " $time " s needed, memory status: " .
            
round(memory_get_usage()/1024/10243) . ")" $query_del_msg "\n";
        }
    }

    
sleep($timer);

}

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

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

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

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

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

mysql_close($connect);

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

for ( $i 1$i <= $loop$i++ ) {
    
    
Cycle ($timer$img_chk_timer$img_chk_timer_pause$img_chk_select_limit,
    
$img_chk_forbidden_words_near$img_chk_forbidden_words_alt,
    
$img_chk_width_min$img_chk_width_max$img_chk_height_min$img_chk_height_max,
    
$img_chk_aspect_min$img_chk_aspect_max,
    
$img_chk_file_size_min$img_chk_file_size_max,
    
$mode);

}

?>