Account Class

Here is the Account class. It may run out to the right a bit.


<?php
/*
##################################################
#
# Filename..........: $RCSfile: Account.php,v $
# Original Author...: Anthony L. Awtrey
# Version...........: $Revision: 0.1 $
# Last Modified By..: $Author: aawtrey $
# Last Modified.....: $Date: 2006/09/21 18:15:56 $
#
# Copyright 2006 Anthony Awtrey
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
*/

/*
 * This class provides the mechanisms to manage the data in the account
 * database.
 */
class Account {

  var 
$page;
  var 
$data;
  var 
$error_string;

  
/*
   * Class initialization
   */
  
function  __construct() {
    global 
$_SERVER;
    global 
$_SESSION;
    global 
$_REQUEST;
    global 
$_POST;
    global 
$_GET;
  }

  function 
__destruct()
  {
  }

  
/*
   * This method prints a form to change account information
   */
  
function print_change_form() {
    
$this->data = new Data("account");
    list(
$inId$inLogin$inPassword$inName$inEmail) = array_values($this->data->get_record('id',$_SESSION['login']));
    
$page              = new Page();
    
$page->title       "Change Information";
    
$page->description "Change account information for this website.";
    
$page->content "";
    if (
$this->error_string) { $page->content .= "<p class="error">" $this->error_string "</p>n"; }
    require_once(
'Form.php');
    
$form = new Form('account.php','post');
    
$form->hidden('action','edit');
    
$form->hidden('inId',$inId);
    
$form->hidden('backto',$_REQUEST['backto']);
    
$form->text('Login','inLogin',$inLogin,20);
    
$form->text('Password','inPassword',$inPassword,20);
    
$form->text('Name','inName',$inName,20);
    
$form->text('Email Address','inEmail',$inEmail,20);
    
$form->submit('submit','Change');
    
$form->submit('submit','Cancel');
    
$page->content .= $form->render();
    
$page->display();
  }

  
/*
   * This method prints a login form
   */
  
function print_login_form() {
    
$page              = new Page();
    
$page->title       "Login";
    
$page->description "Login to this website.";
    
$page->content "";
    if (
$this->error_string) { $page->content .= "<p class="error">" $this->error_string "</p>n"; }
    require_once(
'Form.php');
    
$form = new Form('account.php','post');
    
$form->hidden('action','login');
    
$form->hidden('backto',$_REQUEST['backto']);
    
$form->text('Login','inLogin',$_POST['inLogin'],20);
    
$form->password('Password','inPassword','',20);
    
$form->submit('submit','Login');
    
$form->submit('submit','Cancel');
    
$page->content .= $form->render();
    
$page->display();
  }

  
/*
   * This is the method that processing POST/GET events for this object.
   */
  
function run() {
    if ( 
$_SERVER["REQUEST_METHOD"] == 'POST' ) {
      if ( 
$_POST['submit'] == 'Cancel' ) {
        
redirect('./'.$_POST['backto']);
      }
      if ( 
$_POST['action'] == 'login' ) {
        if ( 
$_POST['inLogin'] && $_POST['inPassword'] ) {
          if ( 
login($_POST['inLogin'],$_POST['inPassword']) ) {
            
redirect('./'.$_POST['backto']);
          } else {
            
$this->error_string "The account or password was incorrect!n";
            
$this->print_login_form();
          }
        } else {
          
$error_string "You must supply both a login and password!n";
          
$this->print_login_form();
        }
      } elseif ( 
$_POST['action'] == 'edit' && $_SESSION['login'] ) {
        if ( 
$_POST['inLogin'] && $_POST['inPassword'] && $_POST['inName'] && $_POST['inEmail'] ) {
          
$account = new Data("account");
          
$account->set_attribute('id'$_POST['inId']);
          
$account->set_attribute('login'$_POST['inLogin']);
          
$account->set_attribute('password'$_POST['inPassword']);
          
$account->set_attribute('name'$_POST['inName']);
          
$account->set_attribute('email'$_POST['inEmail']);
          if ( 
$account->save() ) {
            
redirect('./'.$_POST['backto']);
          }
        } else {
          
$this->error_string "You must supply a login, password, name and email!n";
          
$this->print_change_form();
        }
      }
    } elseif ( 
$_GET['action'] == 'logout' && $_SESSION['login'] ) {
      
logout();
      
redirect('./'.$_GET['backto']);
    } elseif ( 
$_GET['action'] == 'edit' && $_SESSION['login'] ) {
      
$this->print_change_form();
    } else {
      
$this->print_login_form();
    }
  }

}

?>