Created
May 23, 2012 04:07
-
-
Save norv/2773218 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace smCore\storage; | |
use smCore\storage\Storage, smCore\cache\Cache; | |
/** | |
* Database services concerning members. This class' methods allow us to retrieve, add and update | |
* information in/from the database about members. | |
* Every method deals with the necessary query/queries alone, as much as possible, thus allowing a single | |
* point where potential other Storage classes may override the query, for performance or other needs. | |
*/ | |
class UserStorage | |
{ | |
/** | |
* Retrieve all registered members | |
* Specify approval status, and banning status. | |
* | |
* @param bool $approved | |
* @param bool $notBanned | |
*/ | |
public static function loadMembers($approved = false, $notBanned = false) | |
{ | |
// @todo | |
} | |
/** | |
* NB: This works on SMF database structure (modified) | |
* not original smCore. | |
* | |
* @param $name | |
* @return array|null | |
*/ | |
public static function getMemberForName($name) | |
{ | |
$request = database()->query('', ' | |
SELECT passwd, id_member, lngfile, is_activated, email_address, member_name, password_salt, passwd_flood | |
FROM {db_prefix}members | |
WHERE ' . (database()->isCaseSensitive() ? 'LOWER(member_name) = LOWER({string:user_name})' : 'member_name = {string:user_name}') . ' | |
LIMIT 1', | |
array( | |
'user_name' => database()->isCaseSensitive() ? strtolower($name) : $name, | |
) | |
); | |
if (database()->num_rows($request) == 0) | |
return null; | |
$userSettings = database()->fetch_assoc($request); | |
database()->free_result($request); | |
return $userSettings; | |
} | |
/** | |
* NB: This works on SMF database structure (simplified) | |
* not original smCore. | |
* | |
* @param $email | |
* @return array|null | |
*/ | |
public static function getMemberForEmail($email) | |
{ | |
$request = database()->query('', ' | |
SELECT passwd, id_member, lngfile, is_activated, email_address, | |
member_name, password_salt, passwd_flood | |
FROM {db_prefix}members | |
WHERE email_address = {string:email} | |
LIMIT 1', | |
array( | |
'email' => $email, | |
) | |
); | |
if (database()->num_rows($request) == 0) | |
return null; | |
$userSettings = database()->fetch_assoc($request); | |
database()->free_result($request); | |
return $userSettings; | |
} | |
public static function getMembersInGroup($group) | |
{ | |
// ; | |
} | |
public static function loadMembersForIDs($ids) | |
{ | |
// | |
$select = database()->query('', ' | |
SELECT id_user, user_display_name FROM {db_prefix}users | |
WHERE id_user IN $ids', array( | |
$ids) | |
); | |
$result = database()->query($select); | |
if (database()->affectedRows($result) > 0) | |
{ | |
$users = array(); | |
while ($row = database()->fetch_row($result)) | |
$users[$row->id_user] = $row->user_display_name; | |
return $users; | |
} | |
return false; | |
} | |
public static function loadMemberForID($id) | |
{ | |
// Load their settings. | |
// Add cache here | |
$request = database()->query('', ' | |
SELECT m.* | |
FROM {db_prefix}members AS m | |
WHERE mem.id_member = {int:id_member} | |
LIMIT 1', | |
array( | |
'id_member' => $id, | |
) | |
); | |
$user_settings = database()->fetch_assoc($request); | |
database()->free_result($request); | |
} | |
return $user_settings; | |
} | |
/** | |
* Load users whose display name matches the string given. | |
* The string only has to be a part of the name. | |
* | |
* @static | |
* @param $name | |
* @return array|bool | |
*/ | |
public static function loadMembersForName($name) | |
{ | |
$result = database()->query(" | |
SELECT id_member, display_name | |
FROM {db_prefix}members | |
WHERE display_name LIKE ?", array('%' . $name . '%')); | |
if (database()->affectedRows($result) > 0) | |
{ | |
$users = array(); | |
while ($row = database()->fetch_row($result)) | |
$users[] = array( | |
'id' => $row->id_user, | |
'label' => $row->user_display_name, | |
'value' => $row->user_display_name, | |
); | |
return $users; | |
} | |
return false; | |
} | |
public static function deleteMembers($members) | |
{ | |
// delete these members | |
// and all their associated data | |
// trigger the deletion event for modules | |
} | |
/** | |
* Retrieve a list of members with the given permission | |
* for the eventually specified resource. | |
* (for a forum, this may be a board) | |
* | |
* @param string $permission | |
* @param int $resource | |
* @return array | |
*/ | |
public static function membersAllowedTo($permission, $resource) | |
{ | |
// | |
} | |
/** | |
* Retrieve a list of groups/roles with the given permission | |
* for the eventually specified resource. | |
* (for a forum, this may be a board) | |
* | |
* @param string $permission | |
* @param int $resource | |
* @return array | |
*/ | |
public static function groupsAllowedTo($permission, $resource) | |
{ | |
// | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment