I've been having an issue with the alts too, and on a brand new 1.3.5 website set up on mysidiahost. I'd been having an issue with it on my wamp site too, even with a fresh install to check if I'd done something wrong. It throws this error:
Fatal error: Call to undefined method Adoptable::getAltStatus() in /home/beanpets/public_html/adopt.php on line 32
So I checked adopt.php and there is this line on line 32:
$alts = $adopt->getAltStatus();
But from what I can see this is never defined in class_adoptable so I think the error is because it doesn't know what it means? If I delete that line the error goes away and allows me to adopt things, but any alt form I set in adminCP doesn't get applied so that's not a proper fix lol
This is my class_adoptable if anyone can help:
PHP Code:
<?php
use Resource\Native\String;
class Adoptable extends Model{
protected $id;
protected $type;
protected $class;
protected $description;
protected $eggimage;
protected $whenisavail;
protected $alternates;
protected $altoutlevel;
protected $shop;
protected $cost;
protected $conditions;
protected $levels;
protected $alternateModels;
public function __construct($adoptinfo){
$mysidia = Registry::get("mysidia");
if($adoptinfo instanceof String) $adoptinfo = $adoptinfo->getValue();
$whereClause = (is_numeric($adoptinfo))?"id ='{$adoptinfo}'":"type ='{$adoptinfo}'";
$row = $mysidia->db->select("adoptables", array(), $whereClause)->fetchObject();
if(!is_object($row)) throw new AdoptNotfoundException("Adoptable {$adoptinfo} does not exist...");
foreach($row as $key => $val){
$this->$key = $val;
}
}
public function getID(){
return $this->id;
}
public function getType(){
return $this->type;
}
public function getClass(){
return $this->class;
}
public function getDescription(){
return $this->description;
}
public function getEggImage($fetchMode = ""){
if($fetchMode == Model::GUI) return new Image($this->eggimage);
return $this->eggimage;
}
public function getWhenAvailable(){
return $this->whenisavail;
}
public function hasAlternates(){
return $this->alternates;
}
public function getAltLevel(){
return $this->altoutlevel;
}
public function getShop($fetchMode = ""){
if($fetchMode == Model::MODEL) return new AdoptShop($this->shop);
else return $this->shop;
}
public function getCost(){
return $this->cost;
}
public function getConditions(){
if(!$this->conditions) $this->conditions = new AdoptConditions($this);
return $this->conditions;
}
public function getLevel($level){
if(!$this->levels) return new AdoptLevel($this->type, $level);
return $this->levels[$level];
}
public function getLevels(){
if(!$this->levels){
$mysidia = Registry::get("mysidia");
$this->levels = new ArrayObject;
$num = $mysidia->db->select("levels", array("thisislevel"), "adoptiename='{$this->type}'")->rowCount();
for($i = 0; $i <= $num; $i++){
$this->levels->append(new AdoptLevel($this->type, $i));
}
}
return $this->levels;
}
public function getAlternatesForLevel($level){
if(!$this->alternateModels){
$mysidia = Registry::get("mysidia");
$this->alternateModels = new ArrayObject;
$stmt = $mysidia->db->select("alternates", array(), "adopt='{$this->type}' AND level='{$level}'");
while($alternate = $stmt->fetchObject()){
$this->alternateModels->append(new AdoptAlternate($alternate));
}
}
return $this->alternateModels;
}
protected function canUseAlternate($level){
if($this->alternates == "enabled" and $level >= $this->altoutlevel) return TRUE;
if($this->getAlternatesForLevel($level)->count() > 0) return TRUE;
return FALSE;
}
public function getMaxLevel(){
return $this->levels->count();
}
public function getCode(){
return codegen(10, 0);
}
public function getGender(){
$genders = array('f', 'm');
$rand = rand(0,1);
return $genders[$rand];
}
protected function save($field, $value){
$mysidia = Registry::get("mysidia");
$mysidia->db->update("adoptables", array($field => $value), "id='{$this->id}'");
}
}
?>
I haven't touched it other than to look inside so I've definitely not deleted anything.
Update: I tried using the 1.3.4 files adopt.php and class_adoptable.php and they both work (with a slight change to make usealternates say alternates in adopt.php). It seems the 1.3.5 class_adoptable doesn't have this section that the 1.3.4 version does.
PHP Code:
public function getAltStatus(){
if($this->alternates == "enabled" and $this->altoutlevel == 0){
$rand = mt_rand(1, $this->altchance);
if($rand == 1) return "yes";
}
return "no";
}