Okay, here's the abstract_usercreator.php:
PHP Code:
<?php
abstract class UserCreator implements Creator{
// The abstract factory class UserCreator
abstract public function create();
abstract public function massproduce();
public static function logincheck(){
global $mysidia;
//Check for cookie
if(!$mysidia->cookies->getcookies("mysuid") or !$mysidia->cookies->getcookies("myssession")) return FALSE;
else{
$uid = secure($mysidia->cookies->getcookies("mysuid"));
$session = secure($mysidia->cookies->getcookies("myssession"));
//Run login operation
$luser = $mysidia->db->select("users", array("uid", "session"), "uid = '{$uid}'")->fetchObject();
$luid=$luser->uid;
$lsess=$luser->session;
if($uid == $luid and $session == $lsess) return TRUE;
else{
if(isset($_COOKIE['mysuid'])) setcookie("mysuid", $uid, time() - 10);
if(isset($_COOKIE['myssession'])) setcookie("myssession", $session, time() - 10);
return FALSE;
}
}
// End of login check
}
protected function getusergroup($userinfo){
global $mysidia;
$whereclause = (is_numeric($userinfo))?"uid ='{$userinfo}'":"username ='{$userinfo}'";
$usergroup = $mysidia->db->select("users", array("usergroup"), $whereclause)->fetchColumn();
if(empty($usergroup)) throw new Exception('Invalid Usergroup, cannot instantiate user object');
return $usergroup;
}
protected function getgroupcategory(){
global $mysidia;
$category = $mysidia->db->select("groups", array("category"), "uid ='{$uid}'")->fetchColumn();
if(empty($category)) throw new Exception('Invalid Usergroup Category, cannot instantiate user object');
return $category;
}
protected function getidentity(){
$spiderip = array();
if(in_array($_SERVER['REMOTE_ADDR'], $spiderip)) $identity = "Spider";
else $identity = "Guest";
return $identity;
}
}
?>
And here's the class_membercreator.php:
PHP Code:
<?php
class MemberCreator extends UserCreator{
// The abstract factory class UserCreator
protected $userinfo;
protected $usergroup;
protected $user;
public function __construct($userinfo){
if(empty($userinfo)) throw new Exception('User id or Username does not exist...');
$this->userinfo = $userinfo;
$this->usergroup = $this->getgroupid();
}
public function getgroupid(){
global $mysidia;
$whereclause = $whereclause = (is_numeric($this->userinfo))?"uid ='{$this->userinfo}'":"username ='{$this->userinfo}'";
$gid = $mysidia->db->select("users", array("usergroup"), $whereclause)->fetchColumn();
return $gid;
}
public function getgroupcategory(){
// This feature will be fully implemented in Mys v1.3.3 or v1.3.4.
if($this->usergroup == 1 or $this->usergroup == 2) return "Admin";
elseif($this->usergroup == 4 or $this->usergroup == 6) return "Mod";
elseif($this->usergroup == 3) return "Registered";
elseif($this->usergroup == 5) return "Banned";
else throw new Exception('Cannot recognize usergroup category for this user, he/she may be a guest, a bot, or else...');
}
public function create(){
$category = $this->getgroupcategory();
switch($category){
case "Admin":
$this->user = $this->create_admin();
break;
case "Mod":
$this->user = $this->create_mod();
break;
case "Banned":
$this->user = $this->create_banned();
break;
default:
$this->user = $this->create_member();
}
return $this->user;
}
public function massproduce(){
return FALSE;
}
private function create_admin(){
return new Admin($this->userinfo);
}
private function create_mod(){
return new Mod($this->userinfo);
}
private function create_member(){
return new Member($this->userinfo);
}
private function create_banned(){
return new Banned($this->userinfo);
}
}
?>
(Sometimes I feel like it's just my job to find as many errors as possible...most of them being my fault for some reason XD)