(I think we should move the discussion here, in case it's helpful to someone, rather than having it on our pages?)
Alright, before click:
x
After click:
x
I followed your instructions exactly? And your instructions very literally snuggled up the personality to error message right below it, already there by default. When your page is reloaded, it shows a profile. But by default on 1.3.4, at least, it just shows an error. I assume you just designed over the error? I can do that no problem. There -isn't- a profile page by default at that link at all, though, so I assume you made all of it yourself.
However, there are only two references to 'frozen' pages in my script on that page and none of them look like what you have in the step after that. It's just "elseif($this->adopt->isFrozen() == "yes") throw new LevelupException("frozen");" so I couldn't continue your tutorial from there. Line numbers didn't help me at all because none of those matched, and there is no "$document->add($summary);" going on anywhere in that file. Nor any reference to 'document' at all.
1.3.4 levelup.php (with the tiny edit I managed to do):
PHP Code:
<?php
use Resource\Native\Integer;
use Resource\Collection\ArrayList;
use Resource\Utility\Curl;
class LevelupController extends AppController{
const PARAM = "aid";
private $adopt;
private $settings;
public function __construct(){
parent::__construct();
$this->settings = new LevelSetting;
$mysidia = Registry::get("mysidia");
if($mysidia->input->action() == "click" or $mysidia->input->action() == "siggy") $this->adopt = new OwnedAdoptable($mysidia->input->get("aid"));
if($mysidia->user instanceof Member){
$status = $mysidia->user->getstatus();
if($status->canlevel == "no") throw new InvalidActionException("banned");
}
}
public function index(){
throw new InvalidActionException("global_action");
}
public function click(){
$mysidia = Registry::get("mysidia");
$date = new DateTime;
$ip = secure($_SERVER['REMOTE_ADDR']);
if($this->settings->system != "enabled") throw new NoPermissionException("disabled");
elseif($this->adopt->hasVoter($mysidia->user, $date)){
$message = "<div id='personality'>This {$this->adopt->size}-sized, {$this->adopt->nature} novu likes {$this->adopt->likes} and dislikes {$this->adopt->dislikes}.</div>";
$message = $message .= (($mysidia->user instanceof Member)?$mysidia->lang->already_leveled_member:$mysidia->lang->already_leveled_guest);
throw new LevelupException($message);
}
elseif($this->adopt->isFrozen() == "yes") throw new LevelupException("frozen");
elseif($mysidia->user->getVotes() > $this->settings->number) throw new LevelupException("number");
elseif($this->settings->owner == "disabled" and $this->adopt->getOwner() == $mysidia->user->username){
throw new LevelupException("owner");
}
else{
$newClicks = $this->adopt->getTotalClicks() + 1;
$this->adopt->setTotalClicks($newClicks, "update");
$mysidia->db->insert("vote_voters", array("void" => NULL, "date" => $date->format('Y-m-d'), "username" => $mysidia->user->username, "ip" => $ip, "adoptableid" => $mysidia->input->get("aid")));
if($this->adopt->hasNextLevel()){
$nextLevel = $this->adopt->getNextLevel();
$requiredClicks = $nextLevel->getRequiredClicks();
if($requiredClicks and $newClicks >= $requiredClicks) $this->adopt->setCurrentLevel($nextLevel->getLevel(), "update");
}
$reward = $mysidia->user->clickreward($this->settings->reward);
$mysidia->user->changecash($reward);
$this->setField("adopt", $this->adopt);
$this->setField("reward", new Integer($reward));
}
}
public function siggy(){
$mysidia = Registry::get("mysidia");
// The adoptable is available, let's collect its info
$usingimage = "no";
$image = $this->adopt->getImage();
$usegd = $mysidia->settings->gdimages;
$imageinfo = @getimagesize($image);
$imagemime = $imageinfo["mime"]; // Mime type of the image file, should be a .gif file...
if(function_exists('imagegif') and $usegd == "yes" and $imagemime == "image/gif"){
$usingimage = "yes"; //Turn the template system off
$type = $this->adopt->getType();
list($width, $height, $type, $attr) = getimagesize($image); // The size of the original adoptable image
// Lets create the new target image, with a size big enough for the text for the adoptable
$newheight = $height + 72;
$newwidth = ($newwidth < 250)?250:$width;
$img_temp = imagecreatetruecolor($newwidth, $newheight);
$alphablending = true;
// Lets create the image and save its transparency
$img_old = @imagecreatefromgif($image);
imagealphablending($img_old, true);
imagesavealpha($img_old, true);
// Lets copy the old image into the new image with
ImageCopyResampled($img_temp, $img_old, 0, 0, 0, 0, $width, $height, $width, $height);
$textheight = $width + 2;
$image = $img_temp;
$bgi = imagecreatetruecolor($newwidth, $newheight);
$color = imagecolorallocate($bgi, 51, 51, 51);
// Build text for siggy
$str1 = "Name: ".$this->adopt->getName();
$str2 = "Owner: ".$this->adopt->getOwner();
$str3 = "Click Here to Feed Me!";
$str4 = "More Adopts at:";
$str5 = "www.".constant("DOMAIN");
// Renger Image
imagestring ($image, 12, 0, $textheight, $str1, $color);
imagestring ($image, 12, 0, $textheight + 13, $str2, $color);
imagestring ($image, 12, 0, $textheight + 26, $str3, $color);
imagestring ($image, 12, 0, $textheight + 42, $str4, $color);
imagestring ($image, 12, 0, $textheight + 55, $str5, $color);
$background = imagecolorallocate($image, 0, 0, 0);
ImageColorTransparent($image, $background);
// At the very last, let's clean up temporary files
header("Content-Type: image/GIF");
ImageGif ($image);
imagedestroy($image);
imagedestroy($img_temp);
imagedestroy($img_old);
imagedestroy($bgi);
}
else{
// We are going to try and get this image the old fashioned way...
$extList = array();
$extList['gif'] = 'image/gif';
$extList['jpg'] = 'image/jpeg';
$extList['jpeg'] = 'image/jpeg';
$extList['png'] = 'image/png';
//Define the output file type
$contentType = 'Content-type: '.$extList[ $imageinfo['extension'] ];
if($imageinfo['extension'] =! "image/gif" and $imageinfo['extension'] =! "image/jpeg" and $imageinfo['extension'] =! "image/png"){
throw new InvalidIDException("The file Extension is not allowed!");
}
else{
// File type is allowed, so proceed
$status = "";
header($contentType);
$curl = new Curl($image);
$curl->setHeader();
$curl->exec();
$curl->close();
}
}
}
public function daycare(){
$daycare = new Daycare;
$adopts = $daycare->getAdopts();
$this->setField("daycare", $daycare);
}
}
?>
However, in 1.3.4, we have another file in view/levelupview.php, and it contains all the document writing variables, but won't be able to find $message written on a local scope in a completely different document, probably:
PHP Code:
<?php
use Resource\Collection\ArrayList;
use Resource\Utility\Curl;
class LevelupView extends View{
public function click(){
$mysidia = Registry::get("mysidia");
$document = $this->document;
$adopt = $this->getField("adopt");
$reward = $this->getField("reward")->getValue();
$document->setTitle("{$this->lang->gave} {$adopt->getName()} one {$this->lang->unit}");
$image = $adopt->getImage("gui");
$image->setLineBreak(TRUE);
$summary = new Division;
$summary->setAlign(new Align("center"));
$summary->add($image);
$summary->add(new Comment("{$this->lang->gave}{$adopt->getName()} one {$this->lang->unit}."));
$summary->add(new Comment($this->lang->encourage));
$summary->add(new Comment("<br> You have earned {$reward} {$mysidia->settings->cost} for leveling up this adoptable. "));
$summary->add(new Comment("You now have {$mysidia->user->getcash()} {$mysidia->settings->cost}"));
$document->add($summary);
}
public function siggy(){
}
public function daycare(){
$mysidia = Registry::get("mysidia");
$document = $this->document;
$document->setTitle($this->lang->daycare_title);
$document->addLangvar($this->lang->daycare, TRUE);
$daycare = $this->getField("daycare");
$adopts = $daycare->getAdopts();
$daycareTable = new Table("daycare", "", FALSE);
$daycareTable->setBordered(FALSE);
$total = $daycare->getTotalAdopts();
$index = 0;
for($row = 0; $row < $daycare->getTotalRows(); $row++){
$daycareRow = new TRow("row{$row}");
for($column = 0; $column < $daycare->getTotalColumns(); $column++){
$adopt = new OwnedAdoptable($adopts[$index]);
$cell = new ArrayList;
$cell->add(new Link("levelup/click/{$adopt->getAdoptID()}", $adopt->getImage("gui"), TRUE));
$cell->add(new Comment($daycare->getStats($adopt)));
$daycareCell = new TCell($cell, "cell{$index}");
$daycareCell->setAlign(new Align("center", "center"));
$daycareRow->add($daycareCell);
$index++;
if($index == $total) break;
}
$daycareTable->add($daycareRow);
}
$document->add($daycareTable);
if($pagination = $daycare->getPagination()) $document->addLangvar($pagination->showPage());
}
}
?>
That's with no modifications, of course, because it's a file you aren't used to and had no instructions for. I
can modify it, of course. I actually don't need anymore help? Seems pretty straight forward from here on out.
I really wish Mysidia would feed pets on a button click, rather than on a page view. *sigh*