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

//// TXT_SCN  /////////////////////////// ///// //// /// // /
/// the image source text scanner ////// ///// //// /// // /
// bot ID #2 ////////////////////////// ///// //// /// // /

ini_set('memory_limit''32M');

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

echo 
"
 ___________  _________ ____________________   __
____  __/_  |/ /__  __/ __  ___/_  ____/__  | / /
 __  /  __    /__  /    _____ \_  /    __   |/ / 
 _  /   _    | _  /     ____/ // /___  _  /|  /  
 /_/    /_/|_| /_/______/____/ \____/  /_/ |_/   
                 _/_____/                        

  TXT_SCN is the IMG SRC ORG program to scan web pages 
  and part of the image-source.org search engine
  bot ID #2, the standard timer is set to " 
$timer ." seconds
  IN from table ConfirmedUrls,
  OUT to LinksToConfirm, TextsToConfirm, ImagesToConfirm
  __________________________________________________
"
;

// Special Function Definitions


// Main function to loop

function Cycle ($timer$txt_scn_timer$txt_scn_timer_pause$txt_scn_select_limit,
$txt_scn_protocols_deprecate$txt_scn_scripts_deprecate$txt_scn_mimes_deprecate$txt_scn_folders_deprecate,
$txt_scn_word_limit$txt_scn_allowed_chars,
$txt_scn_follow_quality_only,
$txt_scn_width_min$txt_scn_width_max$txt_scn_height_min$txt_scn_height_max,
$include_dynamic_pages$dynamic_pages_chars$mode)
{
    
$time time();
    
    
$connect mysql_connect ('localhost''txtscn''******');
    
$database_select mysql_select_db ('imagesource'$connect);

    
// read from IN table
    /////////////////////////////////////////////////////////////////////////////
     
$query 'SELECT url FROM ConfirmedUrls;';
    
$query mysql_query($query);
    
$rows_number mysql_affected_rows();
     
    
$query 'SELECT * FROM ConfirmedUrls ORDER BY timestamp_confirmed ASC LIMIT 0, ' $txt_scn_select_limit ';';
    
$query mysql_query($query);
    
$query_result mysql_fetch_assoc($query);

    
$url $query_result['url'];
    
$timestamp_entered $query_result['timestamp_entered'];
    
$timestamp_confirmed $query_result['timestamp_confirmed'];

    
// in case links come from LinksToConfirm!
    
if ( isset ($query_result['linked_from_id']) && ($query_result['linked_from_id'] != 0) ) {
        
$linked_from_id $query_result['linked_from_id'];
    } else {
        
$linked_from_id "0";
    }

    
// SHOULD BE IMPLEMENTED!


    // read from OUT table: get latest IDs
    /////////////////////////////////////////////////////////////////////////////
     //$query_old_id_1 = 'SELECT id FROM TextsToConfirm ORDER BY id DESC;';


    // ID issue
    /////////////////////////////////////////////////////////////////////////////
    
    
    // check if url already exits (in TextsToConfirm, TextsConfirmed, TextsSaved)
     
$query_old_url_1 "SELECT url FROM TextsToConfirm WHERE url = '$url';";
    
$query_old_url_1 mysql_query($query_old_url_1);
    if (
$query_old_url_1) {
        
$query_result_old_url_1 mysql_fetch_assoc($query_old_url_1);
        
/*echo "1." .*/    $old_url_1 $query_result_old_url_1['url'];
    }

     
$query_old_url_2 "SELECT url FROM TextsConfirmed WHERE url = '$url';";
    
$query_old_url_2 mysql_query($query_old_url_2);
    if (
$query_old_url_2) {
        
$query_result_old_url_2 mysql_fetch_assoc($query_old_url_2);
        
/*echo "2." .*/    $old_url_2 $query_result_old_url_2['url'];
    }

     
$query_old_url_3 "SELECT url FROM TextsSaved WHERE url = '$url';";
    
$query_old_url_3 mysql_query($query_old_url_3);
    if (
$query_old_url_3) {
        
$query_result_old_url_3 mysql_fetch_assoc($query_old_url_3);
        
/*echo "3." .*/    $old_url_3 $query_result_old_url_3['url'];
    }

    if ( (
$old_url_3 == "") && ($old_url_2 == "") && ($old_url_1 == "") ) {
        
/*echo "new".*/    $new_url TRUE;
    }


    
// check for the latest ids and get the highest
    // note: TO MAKE THIS WORK PROPERLY ONLY ONE MODULE CAN RUN AT A TIME!
     
$query_old_id_1 'SELECT id FROM TextsToConfirm ORDER BY id DESC;';
    
$query_old_id_1 mysql_query($query_old_id_1);
    if (
$query_old_id_1) {
        
$query_result_old_id_1 mysql_fetch_assoc($query_old_id_1);
        
/*echo "A." .*/    $old_id[0] = $query_result_old_id_1['id'];
    }

     
$query_old_id_2 'SELECT id FROM TextsConfirmed ORDER BY id DESC;';
    
$query_old_id_2 mysql_query($query_old_id_2);
    if (
$query_old_id_2) {
        
$query_result_old_id_2 mysql_fetch_assoc($query_old_id_2);
        
/*echo "B." .*/    $old_id[1] = $query_result_old_id_2['id'];
    }

     
$query_old_id_3 'SELECT id FROM TextsSaved ORDER BY id DESC;';
    
$query_old_id_3 mysql_query($query_old_id_3);
    if (
$query_old_id_3) {
        
$query_result_old_id_3 mysql_fetch_assoc($query_old_id_3);
        
/*echo "C." .*/    $old_id[2] = $query_result_old_id_3['id'];
    }

    if ( 
$old_id ) { 
        
rsort($old_id);
        
/*echo "hi".*/        $highest_old_id $old_id[0];
    }

    
// if new url
    
if ($new_url == TRUE) {
        
        
// if no send id from LinksToConfirm: assign new ID
        //if (!$id_from_links) {
            
$id $highest_old_id 1;
            
$id_msg "assigned";
            
$delete_in TRUE;
            
$write_out TRUE;

        
/*
         else send id: use sent ID
        } else {
            $id = $id_from_links;
            $id_msg = "used";
            delete_in = TRUE;
            $write_out = TRUE;
        }
        */
    // else old url: delete
    
} else {
        
$delete_in TRUE;
        
$write_out FALSE;
    }
    
//echo "ID" . $id;



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

    // open file
    /////////////////////////////////////////////////////////////////////////////

    
if ($url) {
        
$open_url fopen($url,"r");
        if (
$open_url) {
            
$delete_in TRUE;
            
$write_out TRUE;
        } else {
            
$delete_in TRUE;
            
$write_out FALSE;
        }
    }


    
// get filename, folders and domain from URL
    /////////////////////////////////////////////////////////////////////////////

    
preg_match("/^(http:\/\/)?([^\/]+)/i"$url$matches);
    
$domain_without_slash $matches[0];

    
preg_match("/[\w-][^\.]+\.[\w]{2,4}$/i"$domain_without_slash$match);
    
$domain_name $match[0];

    
$domain $domain_without_slash '/';

    
preg_match("/[\w\d\-_%]+\.[\w_]+$/i"$url$match );
    
// before comma after dot :|    
    
$file $match[0];

    
$folders_all substr $urlstrlen($domain), strlen($url) - strlen($domain) - strlen($file) );
    
$folders preg_split("/\//i"$folders_all0PREG_SPLIT_NO_EMPTY);


    
// read robots.txt and put values into array
    /////////////////////////////////////////////////////////////////////////////

    
$robot $domain 'robots.txt';

    if (
$domain != '/') {
        
$open_robot fopen($robot,"r");
        
        if (
$open_robot) {
            echo 
"\n  $robot was read.";
        } else {
            echo 
"\n  Failed to open " $robot "!";
        }
    }

    if (
$open_robot) {
        
$all_bots_allow = array();
        
$all_bots_disallow = array();
        
$img_src_bot_allow = array();
        
$img_src_bot_disallow = array();

        
$counter = array ('all_bots_allow' => 1'all_bots_disallow' => 1'img_src_bot_allow' => 1'img_src_bot_disallow' => 1);

        while (!
feof($open_robot)) {
            
$line fgets($open_robot);

            
// for all bots
            
if ( preg_match('/^[^#]?User-agent: \*/i'$line)) {
                
$caption_all_set TRUE;
            } elseif ( 
preg_match('/^[^#]?User-agent: /i'$line)) {
                
$caption_all_set FALSE;
            }

            if ( 
preg_match('/^Allow.*/i'$line$match) && $caption_all_set == TRUE ) {
                
preg_match ('/\/.*/'$match[0], $folder);
                
$all_bots_allow[$counter['all_bots_allow']] = $folder[0];
                
$counter['all_bots_allow']++;
            }

            if ( 
preg_match('/^Disallow.*/i'$line$match) && $caption_all_set == TRUE ) {
                
preg_match ('/\/.*/'$match[0], $folder);
                
$all_bots_disallow[$counter['all_bots_disallow']] = $folder[0];
                
$counter['all_bots_disallow']++;
            }

            if ( 
preg_match('/^Crawl-delay:.*/i'$line$match) && $caption_all_set == TRUE ) {
                
preg_match ('/\d+/'$match[0], $number);
                
$all_delay $number[0];
            }

            
// for the image source bot
            
if ( preg_match('/^[^#]?User-agent: IMG_SRC_BOT/i'$line)) {
                
$caption_img_src_bot_set TRUE;
            } elseif ( 
preg_match('/^[^#]?User-agent: /i'$line)) {
                
$caption_img_src_bot_set FALSE;
            }

            if ( 
preg_match('/^Allow.*/i'$line$match) && $caption_img_src_bot_set == TRUE ) {
                
preg_match ('/\/.*/'$match[0], $folder);
                
$img_src_bot_allow[$counter['img_src_bot_allow']] = $folder[0];
                
$counter['img_src_bot_allow']++;
            }

            if ( 
preg_match('/^Disallow.*/i'$line$match) && $caption_img_src_bot_set == TRUE ) {
                
preg_match ('/\/.*/'$match[0], $folder);
                
$img_src_bot_disallow[$counter['img_src_bot_disallow']] = $folder[0];
                
$counter['img_src_bot_disallow']++;
            }

            if ( 
preg_match('/^Crawl-delay:.*/i'$line$match) && $caption_img_src_bot_set == TRUE ) {
                
preg_match ('/\d+/'$match[0], $number);
                
$img_src_delay $number[0];
            }
        }
    
    if (
$open_robot) { fclose($open_robot); }
    }


    
// get page meta data
    /////////////////////////////////////////////////////////////////////////////

    
if ($open_url) {
        
$meta_tags get_meta_tags($url);
        
// author, description, keywords, robots, img_src_bot
    
}


    
// decide to index and/or follow or not
    /////////////////////////////////////////////////////////////////////////////

    
$index TRUE;
    
$follow TRUE;

    if (
$all_bots_disallow && $open_robot) {
        if ( 
in_array("/"$all_bots_disallow) ) {
            
$index FALSE;
        }
    }

    if (
$img_src_bot_disallow && $open_robot) {
        if ( 
in_array("/"$img_src_bot_disallow) ) {
            
$index FALSE;
        }
    }

    if (
$url && $open_robot) {
        foreach (
$all_bots_disallow as $key => $value) {
            if ( 
strstr($url$all_bots_disallow[$key]) ) {
                
$index FALSE;
                
// echo "a part of the url was found in the * disallowed section i.e. noindex";
            
}
        }

        foreach (
$img_src_bot_disallow as $key => $value) {
            if ( 
strstr($url$img_src_bot_disallow[$value]) ) {
                
$index FALSE;
                
// echo "a part of the url was found in the IMG_SRC_BOT disallowed section i.e. noindex";
            
}
        }
    }

    if (
$meta_tags['robots']) {
        if (
strstr($meta_tags['robots'], "noindex")) {
            
$index FALSE;
            
// echo "meta tag says noindex";
        
}
        if (
strstr($meta_tags['robots'], "nofollow")) {
            
$follow FALSE;
            
// echo "meta tag says nofollow";
        
}
    }

    
// strip html tags and clean up
    /////////////////////////////////////////////////////////////////////////////

    
$file_content preg_replace('/<script.[^<>]*>.*<\/script>/'''file_get_contents($url));
    
// html entity does not strip closing script tags  (bug?)

    // title
    
preg_match("/<title>(.*)<\/title>/ims"$file_content$title);
    
$title substr$title[0], 7strlen($title[0]) --);

    
$file_content html_entity_decodestr_replace'&nbsp;'' '$file_content ));

    
// make (several) new lines to one space
    
$file_content preg_replace('/\n{1,}/'' '$file_content);
    
// erase groups of white space that are longer than 1
    
$file_content preg_replace('/\s{1,}/'' '$file_content);

    
$file_content_images =  strip_tags($file_content'<img>');
    
$file_content_links =  strip_tags($file_content'<a>');
    
// no longer intended: $file_content_headings =  strip_tags($file_content, '<h1> <h2> <h3> <h4> <h5> <h6>');


    // find images, values around, into array
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////

    
preg_match_all('/<img .[^<>]*>/i'$file_content_images$image_tagsPREG_OFFSET_CAPTURE);

    foreach (
$image_tags[0] as $key => $value) {
        
// TAG!
        
$images[$key][tag] = $image_tags[0][$key][0];

        
// src
        
preg_match_all("/src[=\"']{1,2}.[^ ]*['\">]/i"$image_tags[0][$key][0], $match_location );
        
$replaced substr$match_location[0][0], 4strlen($match_location[0][0]) );
        
$replaced str_replace('"'''$replaced);
        
$replaced str_replace('\''''$replaced);
        
$replaced str_replace('>'''$replaced);
        
$image_tags[0][$key][src] = $replaced;
        
$images[$key][src] = $replaced;

        
// file
        
preg_match("/[\w\d\-_\.,]*\.[\w_]+$/i"$images[$key][src], $match );
        
$images[$key][file] = $match[0];

        
// mime
        
preg_match_all("/\.[\w_]+$/i"$images[$key][src], $match_mime );
        
$replaced substr$match_mime[0][0], 1strlen($match_mime[0][0]) );
        
$images[$key][mime] = $replaced;

        
// path
        
$images[$key][path] = preg_split("/\//i"$image_tags[0][$key][src], $match_foldersPREG_SPLIT_NO_EMPTY );

        foreach (
$images[$key][path] as $k => $v) {
            
$image_path $path $v ":";
        }
        
$path '';

        
// subdirs
        
$images[$key][subdirs] = preg_match_all("/\.\.\//"$image_tags[0][$key][src], $matches);


        
// width
        
preg_match_all("/width[ =:\"']{1,2}[0-9]*[px]*[ '\",;]/i"$image_tags[0][$key][0], $match_attribute );
        
preg_match("/\d+/"$match_attribute[0][0], $match_number);
        
$images[$key][width] = $match_number[0];

        
// height
        
preg_match_all("/height[ =:\"']{1,2}[0-9]*[px]*[ '\",;]/i"$image_tags[0][$key][0], $match_attribute );
        
preg_match("/\d+/"$match_attribute[0][0], $match_number);
        
$images[$key][height] = $match_number[0];

        
// alt
        
preg_match_all("/alt=['\"][^<'\"]*['\"]/i"$image_tags[0][$key][0], $match_attribute );
        
$replaced substr$match_attribute[0][0], 4strlen($match_attribute[0][0]) );
        
$replaced str_replace('"'''$replaced);
        
$replaced str_replace('\''''$replaced);
        
$images[$key][alt] = $replaced;

        
// longdesc
        
preg_match_all("/longdesc=['\"][^<'\"]*['\"]/i"$image_tags[0][$key][0], $match_attribute );
        
$replaced substr$match_attribute[0][0], 9strlen($match_attribute[0][0]) );
        
$replaced str_replace('"'''$replaced);
        
$replaced str_replace('\''''$replaced);
        
$images[$key][longdesc] = $replaced;

        
// text around    images
        
$images[$key][offset] = $image_tags[0][$key][1];
        
$images[$key][tag_length] = strlen($image_tags[0][$key][0]);
        
        
$number $txt_scn_word_limit;
        
$chars $txt_scn_allowed_chars;

        
$string strip_tagssubstr$file_content_images0$images[$key][offset]) );
        
$pattern "/(\s+[" $chars "]+){0," $number "}[ .]*$/i";
        
preg_match($pattern$string$match);
        
$images[$key][left] = trimpreg_replace("/\s{1,}/"" ",$match[0]) );

        
$match =  preg_replace("/[\s\.\-\_]{3,}/"" "$match[0]) ;
        
$images[$key][left] = trim (preg_replace("/[\"\'«»‹›\:]/"""$match) );


        
$string strip_tagssubstr$file_content_images$images[$key][offset]+$images[$key][tag_length],
            
strlen($file_content_images)-$images[$key][offset]-$images[$key][tag_length] ) );
        
$pattern "/^[ .]*([" $chars "]+\s+){0," $number "}/i";
        
preg_match($pattern$string$match);
        
        
$match =  preg_replace("/[\s\.\-\_]{2,}/"" "$match[0]) ;
        
$images[$key][right] = trim preg_replace("/[\"\'«»‹›\:]/"""$match) );

        
$use_image TRUE;

        if ( 
$use_image == TRUE ) {
            
// reference to an IMAGE in the same folder or in web root
            
if ( count($images[$key][path]) == ) {

                if ( 
substr ($images[$key][src], 0) == '/' ) {

                    
$images[$key][link] = $domain $images[$key][file];
                } else {
                    
$images[$key][link] = $domain $folders_all $images[$key][file];

                }

            
// global link    to an IMAGE starting with http://
            
} elseif ( substr($images[$key][path][0], 05) == 'http:' ) {

                
$images[$key][link] = $images[$key][src];

            
// link to an IMAGE in subdir(s)
            
} elseif ( $images[$key][subdirs] > 0) {

                
$images_pop $folders;
                for ( 
$i count($images[$key][path]); $i count($images[$key][path]) - $images[$key][subdirs]; $i-- )
                {
                    
array_pop($images_pop);
                }

                foreach (
$images_pop as $k => $v) { $dir $dir $v '/'; }

                
$images[$key][link] = $domain $dir $images[$key][file];

            } else {
                
// link to an image in the server's root
                
if ( substr ($images[$key][src], 01) == '/' ) {
                    
$images[$key][link] = $domain substr $images[$key][src], 1strlen($images[$key][src]) -);

                
// everything else
                
} else {
                    
$images[$key][link] = $domain $folders_all $images[$key][src];

                }
            }    
        }
        
// // // // //
        
$dir '';
    }

    
// print_r($images); 


    // find links, into array
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////

    
preg_match_all('/<a .[^<>]*>/i'$file_content$anchor_tagsPREG_OFFSET_CAPTURE);

    foreach (
$anchor_tags[0] as $key => $value) {
        
// TAG!
        
$links[$key][tag] = $anchor_tags[0][$key][0];

        
// href
        
preg_match_all("/href[=\"']{1,2}.[^ ]*['\">]/i"$links[$key][tag], $match_location );
        
$replaced substr$match_location[0][0], 5strlen($match_location[0][0]) );
        
$replaced str_replace('"'''$replaced);
        
$replaced str_replace('\''''$replaced);
        
$links[$key][href] = str_replace('>'''$replaced);

        
// file
        
preg_match("/[\w\d\-_]*\.[\w_]+$/i"$links[$key][href], $match );
        
$links[$key][file] = $match[0];

        
$follow_link TRUE;

        foreach (
$txt_scn_protocols_deprecate as $k => $v) {
            if ( 
strstr($replaced$txt_scn_protocols_deprecate[$k]) ) {
                
$follow_link FALSE;
            }
        }

        foreach (
$txt_scn_scripts_deprecate as $k => $v) {
            if ( 
strstr($replaced$txt_scn_scripts_deprecate[$k]) ) {
                
$follow_link FALSE;
            }
        }

        foreach (
$txt_scn_mimes_deprecate as $k => $v) {
            
$pattern "/\\" $txt_scn_mimes_deprecate[$k] . "$/i";
            if ( 
preg_match($pattern$replaced) ) {
                
$follow_link FALSE;
            }
        }

        
// dont index the same page twice
        
if ( strstr($replaced'#') ) {
            
$follow_link FALSE;
        }

        
// non static pages
        
if ( $include_dynamic_pages == FALSE ) {
            foreach (
$dynamic_pages_chars as $k => $v) {
                if ( 
strstr($replaced$dynamic_pages_chars[$k]) ) {
                    
$follow_link FALSE;
                }
            }
        }


        
// path
        
$links[$key][path] = preg_split("/\//i"$links[$key][href], $match_foldersPREG_SPLIT_NO_EMPTY );

        if ( 
substr($links[$key][path][0], 05) == 'http:' )    {
            
$links[$key][path][0] = 'http:/';
        }

        foreach (
$links[$key][path] as $k => $v) {
            
$path_link $path_link $v '/';
        }

        
// subdirs
        
$links[$key][subdirs] = preg_match_all("/\.\.\//"$links[$key][href], $matches);


        if ( 
$follow_link == TRUE ) {
            
// link to file (or folder) in the same folder
            
if ( count($links[$key][path]) == ) {
                if ( 
substr ($images[$key][src], 0) == '/' ) {
                    
$links[$key][link] = $domain substr$links[$key][href], 1strlen($links[$key][href]) -);
                } else {
                    
$links[$key][link] = $domain $folders_all substr$links[$key][href], 1strlen($links[$key][href]) -);
                }

            
// global link    starting with http://
            
} elseif ( substr($links[$key][path][0], 05) == 'http:' ) {

                
$links[$key][link] = $links[$key][href];

            
// link to file (or folder) in subdir(s)
            
} elseif ( $links[$key][subdirs] > 0) {

                
$folders_pop $folders;
                for ( 
$i count($links[$key][path]); $i count($links[$key][path]) - $links[$key][subdirs]; $i-- )
                {
                    
array_pop($folders_pop);
                }

                foreach (
$folders_pop as $k => $v) { $dir $dir $v '/'; }

                
$links[$key][link] = $domain $dir $links[$key][file];

            
// links to others dirs and files without going back
            
} else {

                
$links[$key][link] = $domain $folders_all substr$links[$key][href], 1strlen($links[$key][href]) -);
            }
        }
    }

    
/* print_r($links); */


    // close file
    /////////////////////////////////////////////////////////////////////////////
    
if ($open_url) { fclose($open_url); }


    
// check if already indexed
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////
    /*
    $query_select = mysql_query("SELECT url FROM TextsToConfirm WHERE url = '$url'");
    $select_result = mysql_fetch_array( $query_select );

    if ( $select_result[0] ) {
        $write_out = FALSE;    
    }

    // if there are no images to index on this site
    if ( $select_result[0] ) {
        $write_out = FALSE;    
    }
    */    
    

    // page out
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////

    
if ($new_url != TRUE) { $write_out == FALSE; }
    
    if ( 
$write_out == TRUE ) {
        
$query "INSERT INTO TextsToConfirm (id, url, timestamp, title, author, keywords, description, linked_from_id)
            VALUES ('
$id', '$url', CURRENT_TIMESTAMP(), '$title', '$meta_tags[author]', '$meta_tags[keywords]', '$meta_tags[description]', '$linked_from_id ');";
            
$query_insert_page mysql_query($query);

            
// echo"Test Insert>". $query_insert_page ."<";
    
}


    
// images out
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////
    
$counter_images_added 0;

    
    for (
$i 0$i count($images); $i++) {
        if ( (
$images[$i][src] != ''
        
/* &&  ( $id != 0 ) */
            
&& ( $images[$i][mime] == 'jpg' ||  $images[$i][mime] == 'jpeg' )
            && ( 
$images[$i][width] >= $txt_scn_width_min || $images[$i][width] == '' )
            && ( 
$images[$i][width] <= $txt_scn_width_max || $images[$i][width] == '' )
            && ( 
$images[$i][height] >= $txt_scn_height_min || $images[$i][height] == '' )                                         
            && ( 
$images[$i][height] <= $txt_scn_height_max || $images[$i][height] == '' )
           )
            {
                if (
$write_out == TRUE) {

                    
$query "INSERT INTO ImagesToConfirm (id, url, timestamp, width, height, alt, longdesc, leftside, rightside)
                        VALUES ('" 
$id "', '" $images[$i][link] . "', CURRENT_TIMESTAMP(), 
                        '" 
$images[$i][width] . "', '" $images[$i][height] . "', 
                        '" 
$images[$i][alt] . "', '" $images[$i][longdesc] ."' , 
                        '" 
$images[$i][left] . "', '" $images[$i][right] . "');";
                    
$query_insert_images mysql_query($query);
                    
$counter_images_added++;


                }
            }
    }

    
// delete page if there were no suitable images
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////

    // no images -- delete page
    
if ( $counter_images_added == ) {
    
        
$query "DELETE FROM TextsToConfirm WHERE id = '$id'";
        
$query_delete_texts mysql_query($query);

        if (
$query_delete_texts) { $message "\n  deprecated (no image found, remaining entries deleted,\n  "; }

        
$delete_out TRUE;
    
    
// success -- keep page and image(s)
    
} elseif ( $query_insert_page && $query_insert_images ) {
    
        
$message "passed, \n  (";
        
$delete_out FALSE;
    
    
// no page (error) -- delelte image(s)
    
} elseif ( $query_insert_page == FALSE ) {
    
        
$query "DELETE FROM ImagesToConfirm WHERE id = '$id'";
        
$query_delete_images mysql_query($query);
        
        if (
$query_delete_images) { $message "\n  deprecated (page not added, assigned images deleted,\n  "; }

        
$delete_out TRUE;

    }


    
// links out
    /////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////
    
$counter_links_added 0;
    
    if(
$write_out == FALSE || $delete_out != FALSE) {
        
$linked_from_id 0;
    } else {
        
$linked_from_id $id;
    }

    for (
$i 0$i <= count($links); $i++) {
        if ( 
$links[$i][link] != '' && $id != ) {

            if ( 
$txt_scn_follow_quality_only == TRUE ) {

                if ( !
stristr($links[$i][link], $domain_name) && (substr_count($links[$i][link], '/') > )
                && 
$linked_from_id != 0) {
                    if (
$write_out == TRUE) {
                        
$query "INSERT INTO LinksToConfirm (linked_from_id, url, timestamp)
                            VALUES ('" 
$linked_from_id "', '" $links[$i][link] . "', CURRENT_TIMESTAMP());";
                        
$query_insert1 mysql_query($query);
                        if (
$query_insert1) { $counter_links_added++; }
                    }
                }

            } elseif (
$write_out == TRUE) {
                
$query "INSERT INTO LinksToConfirm (id, url, timestamp)
                    VALUES ('" 
$id "', '" $links[$i][link] . "', CURRENT_TIMESTAMP());";
                
$query_insert2 mysql_query($query);
                if (
$query_insert2) { $counter_links_added++; }
            }
        }
    }

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

    
// delete from IN table
    /////////////////////////////////////////////////////////////////////////////
    
if ($delete_in == TRUE) {
        
$query "DELETE FROM ConfirmedUrls 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 ConfirmedUrls empty\n TXT_SCN stopped\n";
            return;
        } else {
            
$timer $txt_scn_timer_pause;
            echo 
"\n  table ConfirmedUrls empty\n  waiting "
            
$timer " seconds\n  __________________________________________________\n";
        }
    } else {
        if (
$mode == "stop") {
            echo 
"\n  " $complete_url " (-" $rows_number-")";
            echo 
"\n  TXT_SCN stopped\n  use 'loop' as argument to cycle the ConfirmedTybles table\n";
            return;
        } else {
            
$timer $txt_scn_timer;
            
$number $rows_number 1;
            echo 
"\n  " $url " " $message $counter_images_added " images and " $counter_links_added  " links extracted,\n  ID# "
            
$id " " $id_msg ", " $number ." to go, " $time " s needed, " .
            
"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 ConfirmedUrls;';
$query mysql_query($query);
$loop mysql_affected_rows();

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

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

mysql_close($connect);

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

for ( $i 1$i <= $loop$i++ ) {
    
    
Cycle($timer$txt_scn_timer$txt_scn_timer_pause$txt_scn_select_limit,
    
$txt_scn_protocols_deprecate$txt_scn_scripts_deprecate$txt_scn_mimes_deprecate$txt_scn_folders_deprecate,
    
$txt_scn_word_limit$txt_scn_allowed_chars,
    
$txt_scn_follow_quality_only,
    
$txt_scn_width_min$txt_scn_width_max$txt_scn_height_min$txt_scn_height_max,
    
$include_dynamic_pages$dynamic_pages_chars$mode);

}


?>