$prop) {
$diff = array_diff(array_keys($prop),$max_prop_arr);
foreach($diff as $key) {
trigger_error("unknown dbobj config option '$key'=>".var_export($prop[$key],1)." in '$className' class, '$propName' property",E_USER_ERROR);
}
}
return $conf;
}
dbobj::$connectionParameters = array(
'local' => array(
'driver' => 'pgsql',
'dsn' => 'host=localhost',
'username' => 'dbobjdev',
'password' => 'dbobjdev',
),
);
class user extends dbobj {
static $dbobj_config = array('table'=>'users',
'conn' => 'local',
'properties'=>array(
'id'=>array('type'=>'serial', 'autoID'=>true, 'read_access'=>'public'),
'name'=>array('type'=>'varchar(25)', 'read_access'=>'public'),
'pass'=>array('type'=>'varchar(32)'),
'email'=>array('type'=>'varchar(125)', 'read_access'=>'public')
),
);
function __construct($name, $pass, $email) {
$this->name = $name;
$this->pass = md5($pass);
$this->email = $email;
}
function newpass($oldpass,$newpass) {
if(md5($oldpass) != $this->pass) {
echo "Wrong password!";
break;
}
$this->pass = md5($newpass);
}
}
class post extends dbobj {
static $dbobj_config = array('table'=>'post',
'conn' => 'local',
'properties'=>array(
'id'=>array('type'=>'serial', 'autoID'=>true, 'read_access'=>'public'),
'user_id'=>array('type'=>'integer'),
'user'=>array('sources'=>'user_id','type'=>'>user(id)', 'read_access'=>'public'),
'title'=>array('type'=>'varchar(255)', 'read_access'=>'public'),
'body'=>array('type'=>'text', 'read_access'=>'public'),
),
);
function __construct($user, $title, $body) {
$this->user = $user;
$this->title = $title;
$this->body = $body;
$this->save();
}
}
session_start() || die('session_start error');
echo
''.
'
'.
''.
'dbobj powered forum'.
''.
'';
echo '
';
/** Debug register **
$_REQUEST['action']='register';
$_REQUEST['name'] = 'testuser';
$_REQUEST['pass'] = 'apple';
$_REQUEST['email'] = 'a@b.c';
/** Debug post **
$_REQUEST['action']='post';
$_SESSION['user'] = dbobj_find('user',array('id'=>14));
$_REQUEST['title'] = 'test';
$_REQUEST['body'] = 'Hello World!';
/** Debug delete **
$post = dbobj_find('post',array('id'=>31));
$post->delete_on_save(true);
$post->save();
/** Body **/
switch(@$_REQUEST['action']) {
case 'logout':
$_SESSION['user'] = null;
break;
case 'login':
$users = dbobj_find('user', array('name'=>$_REQUEST['name'],'pass'=>md5($_REQUEST['pass'])));
if(!$users){
echo "Bad username/pass!";
} else {
$_SESSION['user'] = $users->current();
}
break;
case 'register':
if(dbobj_find('user',array('name'=>$_REQUEST['name']))) {
echo "This username is in use!";
} else {
$_SESSION['user'] = new user($_REQUEST['name'],$_REQUEST['pass'],$_REQUEST['email']);
}
break;
}
if(!empty($_SESSION['user'])) {
$u = $_SESSION['user'];
echo 'Hello, '.$u->name.'!'.
' [logout]
';
} else {
echo '
';
echo '
';
}
switch(@$_REQUEST['action']) {
case 'newpass-show':
echo '
';
case 'newpass':
if(empty($_REQUEST['newpass1'])) break;
if($_REQUEST['newpass1'] != $_REQUEST['newpass2']) {
echo "Passwords no not match!";
break;
}
$_SESSION['user']->newpass($_REQUEST['oldpass'],$_REQUEST['newpass1']);
break;
case 'post':
if(!@$_SESSION['user']) break;
new post($_SESSION['user'],$_REQUEST['title'],$_REQUEST['body']);
break;
case 'delete':
if(!@$_SESSION['user']) break;
$post = dbobj_find('post',array('id'=>$_REQUEST['id']));
$post->delete_on_save(true);
$post->save();
}
echo '
';
/*** display posts ***/
$posts = dbobj_find('post');
foreach($posts as $post) {
echo '';
echo '';
if(@$_SESSION['user'])
echo '[delete] ';
echo ''.$post->body.' ';
echo ' |
';
}
echo '
';
if(empty($_SESSION['user'])) {
echo 'Registration required for new post.';
} else {
echo '
';
}
/*
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/
?>