/home/rei/tagcode.php

<?php
if(isset($_POST['corp'])) {

// MUST PROVIDE AN ID
if( isset($_POST['id']) && is_numeric($_POST['id']) && $_POST['id'] != "" ) {
	$id = $_POST['id'];
} else {
	require_once("includes/bottom.php");
	exit();
}

// MUST PROVIDE CORP
if( isset($_POST['corp']) && is_numeric($_POST['corp']) && $_POST['corp'] != "" ) {
	$corp = $_POST['corp'];
} else {
	require_once("includes/bottom.php");
	exit();
}

// MUST PROVIDE TAGS
if( isset($_POST['comment']) && strlen($_POST['comment']) < 256  ) {
	$comment = $_POST['comment'];
	$comment = strip_tags($comment);
} else {
	require_once("includes/bottom.php");
	exit();
}

function
lookfor($item,$array)
{
	return array_search($item,$array);
}

function
removetagbyid($word,$thetag,$corp,$id,$sqlr,$sqlw)
{
	if(is_numeric($thetag)) $query = "DELETE FROM tagged WHERE id = $id AND corp = $corp AND tag = $thetag";
	$sqlw->d($query);
	echo "<H6>Remove tag: $word</H6>";
}

function
lookup($tag, $sqlr)
{
	$query = "SELECT * FROM tags WHERE tag = '$tag'";
	$array = $sqlr->q($query);
	$result = $array['r'];
	$num = $array['n'];

	if( $num > 0 ) $tagid = mysql_result($result,0,"id");
	else $tagid = "";

	return $tagid;
}

function
fillB($id,$corp,$sqlr)
{
	$query = "SELECT tags.tag FROM tagged LEFT JOIN tags ON tagged.tag = tags.id  WHERE corp=$corp AND tagged.id = $id";
	$array = $sqlr->q($query);
	$result = $array['r'];
	$num = $array['n'];
	$B = array();

	for($i = 0; $i < $num; $i++) {
		$B[] = mysql_result($result,$i,"tag");
	}
	
	return $B;
}
function
istagged($thetag, $id, $tagdb, $corp, $sqlr)
{
	$query = "SELECT * FROM $tagdb WHERE tag = $thetag AND id = $id AND corp = $corp";
	$array = $sqlr->q($query);
	$result = $array['r'];
	$num = $array['n'];

	if( $num > 0 ) $tagid = mysql_result($result,0,"id");
	else $tagid = "";

	return $tagid;
}

function maketag($word, $id, $uid, $sqlw)
{
	$query = "INSERT INTO tags VALUES  ('0', '$word','$uid')";
	$sqlw->i($query);
}
function tag($thetag, $id, $corp, $uid, $tagdb, $sqlw)
{
	$query = "INSERT INTO $tagdb VALUES ('$id', '$corp', '$thetag', '$uid')";
	$sqlw->i($query);
}

function
untagall($id,$corp,$sqlr,$sqlw)
{
	$query = "DELETE FROM tagged WHERE id = $id AND corp = $corp";
	$sqlw->d($query);
	echo "<H6>Removed ALL tags.</H6>";

}

$tagdb = "tagged";
$tag = explode(",", $comment);
$ref = $_SERVER['HTTP_REFERER'];

$A = $tag;
$B = fillB($id,$corp,$sqlr);

if( count($B) == 0 ) {
	// assume we add everything, delete nothing
	foreach( $tag as $word ) {
		$word = trim($word);
		$thetag = lookup($word,$sqlr);
	
		if( strlen($word) > 32 ) {
			echo "<P>Long tag ignored (32 character MAX). Please separate tags with commas.</P>";
		}
		else {
			if( $thetag != "" ) {
				if( istagged($thetag, $id, $tagdb, $corp, $sqlr) ) {
				}
				else {
					tag($thetag, $id, $corp, $uid, $tagdb, $sqlw);
					echo "<P>Tagged it <b>$word</b>.</P>";
				}
			} else {
				maketag($word, $id, $uid, $sqlw);
				echo "<P>Created new tag <b>$word</b>.</P>";

				$thetag = lookup($word, $sqlr);
				tag($thetag, $id, $corp, $uid, $tagdb, $sqlw);
				echo "<P>Tagged it <b>$word</b>.</P>";
			}
		}
	}
}
else {
	if( count($A) == 0 || $A[0] == "" ) {
		// assume we delete everything, add nothing
		untagall($id,$corp,$sqlr,$sqlw);
	}
	else {
		// ugh, so we have to work eh. check for matching tags, ignore
		$A2 = array();
		$B2 = array();
		for($i = 0; $i < count($A); $i++) {
			if( lookfor($A[$i],$B) === FALSE ) $A2[] = $A[$i]; // add unique entry
		}
		for($i = 0; $i < count($B); $i++) {
			if( lookfor($B[$i],$A) === FALSE ) $B2[] = $B[$i]; // add unique entry
		}

		// add all $A2's
		foreach( $A2 as $word ) {
			$word = trim($word);
			$thetag = lookup($word,$sqlr);
		
			if( strlen($word) > 32 ) {
				echo "<P>Long tag ignored (32 character MAX). Please separate tags with commas.</P>";
			}
			else {
				if( $thetag != "" ) {
					tag($thetag, $id, $corp, $uid, $tagdb, $sqlw);
					echo "<P>Tagged it <b>$word</b>.</P>";
					
				} else {
					maketag($word, $id, $uid, $sqlw);
					echo "<P>Created new tag <b>$word</b>.</P>";

					$thetag = lookup($word, $sqlr);
					tag($thetag, $id, $corp, $uid, $tagdb, $sqlw);
					echo "<P>Tagged it <b>$word</b>.</P>";
				}
			}
		}

		// delete all $B2's
		foreach( $B2 as $word ) {
			$word = trim($word);
			$thetag = lookup($word,$sqlr);
		
			if($thetag != "") removetagbyid($word,$thetag,$corp,$id,$sqlr,$sqlw);
		}
	}
}


} // all of this conditional on $_POST['corp']
?>

Generated by GNU enscript 1.6.4.