%%document-addObject-writer-scene%%
2002-12-27 18:40

%%preprocess%%
$which= $_POST['which'];
if ($which=="character") {
	// the method must be called with a newobject in the form document:42
	$newobject= str_replace("[", "", strtolower($_POST['newobject']));
	$newobject= str_replace("]", "", $newobject);

	if ($newobject=="") berror("addObject called for character, but without object to add, something is amiss.",0);
	$colonpos= strpos($newobject,":");
	if ($colonpos===false && $newobject!="new") berror("addObject called for character, but without a proper object reference: $newobject",0);

	// characters are layered midframe
	$positionz= 50;

	// if new is triggered, jump to main cast folder (highest ranked and/or newest with flavor=castfolder) or die
	if ($newobject=="new") {
		$castfolder= new Folder;
		$query= "SELECT obj.* FROM folder AS obj WHERE obj.siteid='$site->id' AND obj.flavor='castfolder' $session->wherestatus $session->wherepublic ORDER BY rank DESC, created DESC";
		$castfolder->selectObject($query);
		if ($castfolder->id=="") {
			berror("You must define at least one folder as being of flavor 'castfolder' in order to add characters.",0);
			exit;
			}
		else {
			$castfolder->getBaseUrl();
			$location= "$castfolder->baseUrl/document-.html?method=create&return=".$folder->baseUrl."document-$this->name.html";
			header("Location: $location");
			exit;
			}
		}
	}
elseif ($which=="primarychar" && is_numeric($_POST['primarychar'])) {
	// take the supplied id as a document:id
	$newobject= "document:".$_POST['primarychar'];
	$colonpos= 8;
	$positionz= 50;

	// if different from current $sitemember->characterId, then update
	if ($sitemember->p_characterId!=$_POST['primarychar']) {
		berror("comment-addObject: updating sitemember's p_characterId to $_POST[primarychar] now.",1);
		$sitemember->p_characterId= $_POST['primarychar'];
		$sitemember->update= 1;
		$sitemember->updateObject();
		}
	}
elseif ($which=="object") {
	// the method must be called with an objectRef in the form document:42
	$newobject= str_replace("[", "", strtolower($_POST['objectRef']));
	$newobject= str_replace("]", "", $newobject);

	if ($newobject=="") berror("addObject called for object, but without object to add, something is amiss.",0);
	$colonpos= strpos($newobject,":");
	if ($colonpos===false && $newobject!="new") berror("addObject called for object, but without a proper object reference: $newobject",0);
	
	// objects are layered low in frame
	$positionz= 25;
	}
elseif ($which=="googleimage") {
	// url of google image split-frame display page, as found on google image list page
	// looks like http://images.google.com/imgres?imgurl=$THEIMAGE&imgrefurl=http://www.blah-blah-blah-etc-etc
	// image can be retrieved from http://images.google.com/images?q=tbn:$THEIMAGE
	$newobject= "googleimage:0";
	$colonpos= strpos($newobject,":");
	$label= $_POST[objectRef];

	// googleimages are layered mid in the frame
	$positionz= 50;
	}
else {
	$newobject= "label:0";
	$colonpos= strpos($newobject,":");
	
	// labels are layered high in the frame
	$positionz= 100;
	}
	
// parse $newobject
berror("addObject Preprocess: parsing $newobject with : at $colonpos.",1);
$this->newObjtype= substr($newobject,0,$colonpos);
$this->newId= substr($newobject,$colonpos+1);
berror("addObject Preprocess: going to add $this->newObjtype #$this->newId to frame $this->id with body=$this->body. Parent of frame is $this->parentobjtype:$this->parentid.",1);

// look up this alleged object
if ($this->newObjtype=="label") {
	$label= $_POST['label'];
	$labeltag= "^label=$label";
	}
elseif ($this->newObjtype=="googleimage") {
	$labeltag= "^label=$label";
	$this->imagetag= bparsebml("[googleimage:$label]");
	}
else {
	$command= "\$myObject= new ".ucfirst($this->newObjtype).";";
	eval($command);
	$myObjectQuery= "SELECT obj.* FROM $this->newObjtype AS obj WHERE id='$this->newId' AND obj.siteid='$site->id' $session->statuswhere $session->publicwhere";
	$myObject->selectObject($myObjectQuery);

	if ($myObject->flavor=="Character") {
		// find default pose...
		$pose= new Image;
		$query= "SELECT obj.* FROM image AS obj WHERE obj.siteid='$site->id' AND parentobjtype='document' AND parentid='$this->newId' $session->statuswhere $session->publicwhere ORDER BY rank DESC, created ASC";
		$pose->selectObject($query);
		$this->poseid= $pose->id;
		$this->imagetag= bparsebml("[icon:$this->poseid]");
		$posetag= "^isCharacter=1^poseid=$this->poseid";
		berror("comment-addObject: found default poseid=$pose->id for Character $this->newId",1);
		}
	elseif ($myObject->imageid!="0") {
		$this->poseid= $myObject->imageid;
		$this->imagetag= bparsebml("[icon:$this->poseid]");
		$posetag= "^poseid=$this->poseid";
		}
	elseif ($myObject->objtype=="image") {
		$this->poseid= $myObject->id;
		$this->imagetag= bparsebml("[icon:$this->poseid]");
		$posetag= "^poseid=$this->poseid";
		}
	}

// record looks like objtype=document^id=67^position_x=200^position_y=200^position_z=5^dialogue=Ooooohh!^poseid=34^^
if (substr($this->body,-2)!="^^") {
	$this->body.="^^";
	}
$this->body.= "objtype=$this->newObjtype^id=$this->newId^position_x=100^position_y=100^position_z=$positionz$posetag$labeltag^^";
berror("addObject Preprocess: new body is $this->body",1);
$this->updateObject();

// get baseUrl of parent object for redirect
$parent= $this->getParent();
berror("parent is $parent->baseUrl",1);
$this->redirect= "$parent->baseUrl?frameid=$this->id";

%%header%%

%%css%%

%%template%%
<table class='bodytable'>
<tr> 
<td>
<p><b>Adding frame:$this->newId to $this->parentobjtype:$this->parentid.</b></p>
$this->imagetag
<p><a href='$this->redirect'>Continue...</a> ($GLOBALS[debug])($this->redirect)</p>
</td>
</tr>
</table>


%%listrow%%

%%nullobject%%

%%footer%%

%%postprocess%%
if ($GLOBALS['debug']=="") {
	$redirect= "Location: $this->redirect";
	header($redirect);
	}

%%end of context%%
