professional-sql-02-lib-User.php / php
<?php class User { // Permission levels const CREATE_FORUM = 2; const MOVE_MESSAGE = 4; const DELETE_MESSAGE = 8; const DELETE_FORUM = 16; private // user id private fields; // other record fields // initialize a User object public function __construct() { this->fields = array('username' => '', 'password' => '', 'emailAddr' => '', 'isActive' => false, 'permission' => 0); } // override magic method to retrieve properties public function __get(field == 'userId') { return this->fields[// override magic method to set properties public function __set(field, field, this->fields[value; } } // return if username is valid format public static function validateUsername(/i', // return if email address is valid format public static function validateEmailAddr(email) { return filter_var(// return an object populated based on the record's user id public static function getById(userId) { query = sprintf('SELECT USERNAME, PASSWORD, EMAIL_ADDR, ' . 'IS_ACTIVE, PERMISSION FROM\ %sUSER WHERE USER_ID =\ %d', DB_TBL_PREFIX, result = mysql_query(GLOBALS['DB']); if (mysql_num_rows(row = mysql_fetch_assoc(u->username = u->password = u->emailAddr = u->isActive = u->permission = u->uid = result); return // return an object populated based on the record's username public static function getByUsername(username) { query = sprintf('SELECT USER_ID, PASSWORD, EMAIL_ADDR, ' . 'IS_ACTIVE, PERMISSION FROM\ %sUSER WHERE USERNAME = "\ %s"', DB_TBL_PREFIX, mysql_real_escape_string(GLOBALS['DB'])); query, result)) { result); username; row['PASSWORD']; row['EMAIL_ADDR']; row['IS_ACTIVE']; row['PERMISSION']; row['USER_ID']; } mysql_free_result(u; } // save the record to the database public function save() { if (query = sprintf('UPDATE\ %sUSER SET USERNAME = "\ %s", ' . 'PASSWORD = "\ %s", EMAIL_ADDR = "\ %s", IS_ACTIVE =\ %d, ' . 'PERMISSION =\ %d WHERE USER_ID =\ %d', DB_TBL_PREFIX, mysql_real_escape_string(GLOBALS['DB']), mysql_real_escape_string(GLOBALS['DB']), mysql_real_escape_string(GLOBALS['DB']), this->permission, query, query = sprintf('INSERT INTO\ %sUSER (USERNAME, PASSWORD, ' . 'EMAIL_ADDR, IS_ACTIVE, PERMISSION) VALUES ("\ %s", "\ %s", ' . '"\ %s",\ %d,\ %d)', DB_TBL_PREFIX, mysql_real_escape_string(GLOBALS['DB']), mysql_real_escape_string(GLOBALS['DB']), mysql_real_escape_string(GLOBALS['DB']), this->permission); if (mysql_query(GLOBALS['DB'])) { GLOBALS['DB']); return true; } else { return false; } } } // ... the rest of User beyond this point is left unchanged // set the record as inactive and return an activation token public function setPending() { this->save(); // make sure the record is saved query = sprintf('INSERT INTO\ %sPENDING (USER_ID, TOKEN) ' . 'VALUES (\ %d, "\ %s")', DB_TBL_PREFIX, token); return (mysql_query(GLOBALS['DB'])) ? // clear the user's pending status and set the record as active public function clearPending(token) {\ %sPENDING WHERE USER_ID =\ %d ' . 'AND TOKEN = "\ %s"', DB_TBL_PREFIX, this->uid, mysql_real_escape_string(GLOBALS['DB'])); query, result)) { mysql_free_result(result);\ %sPENDING WHERE USER_ID =\ %d ' . 'AND TOKEN = "\ %s"', DB_TBL_PREFIX, this->uid, mysql_real_escape_string(GLOBALS['DB'])); if (!mysql_query(GLOBALS['DB'])) { return false; } else { this->save(); } } } } ?>
(C) Æliens 20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.