UserModel
extends Model
in package
This class is used to handle database statements related to User Administration
Tags
Table of Contents
- DEFAULT_DESCRIPTION_LENGTH = 150
- Default maximum character length of a search summary
- MAX_SNIPPET_TITLE_LENGTH = 20
- MIN_SNIPPET_LENGTH = 100
- SNIPPET_LENGTH_LEFT = 20
- SNIPPET_LENGTH_RIGHT = 40
- SNIPPET_TITLE_LENGTH = 20
- $any_fields : array<string|int, mixed>
- These fields if present in $search_array (used by @see getRows() ), but with value "-1", will be skipped as part of the where clause but will be used for order by clause
- $cache : object
- Cache object to be used if we are doing caching
- $db : object
- Reference to a DatasourceManager
- $db_name : string
- Name of the search engine database
- $edited_page_summaries : array<string|int, mixed>
- Associative array of page summaries which might be used to override default page summaries if set.
- $private_db : object
- Reference to a private DatasourceManager
- $private_db_name : string
- Name of the private search engine database
- $search_table_column_map : array<string|int, mixed>
- Associations of the form name of field for web forms => database column names/abbreviations In this case, things will in general map to the USERS table in the Yioop data base var array
- $web_site : object
- Reference to a WebSite object in use to serve pages (if any)
- __construct() : mixed
- Sets up the database manager that will be used and name of the search engine database
- addUser() : mixed
- Add a user with a given username and password to the list of users that can login to the admin panel
- boldKeywords() : string
- Given a string, wraps in bold html tags a set of key words it contains.
- createIfNecessaryDirectory() : int
- Creates a directory and sets it to world permission if it doesn't already exist
- deleteUser() : mixed
- Deletes a user by username from the list of users that can login to the admin panel
- fileGetContents() : string
- Either a wrapper for file_get_contents, or if a WebSite object is being used to serve pages, it reads it in using blocking I/O file_get_contents() and caches it before return its string contents.
- filePutContents() : mixed
- Either a wrapper for file_put_contents, or if a WebSite object is being used to serve pages, writes $data to the persistent file with name $filename. Saves a copy in the RAM cache if there is a copy already there.
- formatSinglePageResult() : array<string|int, mixed>
- Given a page summary, extracts snippets which are related to a set of search words. For each snippet, bold faces the search terms, and then creates a new summary array.
- fromCallback() : string
- Controls which tables and the names of tables underlie the given model and should be used in a getRows call This defaults to the single table whose name is whatever is before Model in the name of the model. For example, by default on FooModel this method would return "FOO". If a different behavior, this can be overridden in subclasses of Model
- getDbmsList() : array<string|int, mixed>
- Gets a list of all DBMS that work with the search engine
- getRecommendations() : mixed
- Gets $num many user recommendations of the given type.
- getResourceRecommendations() : mixed
- getRows() : array<string|int, mixed>
- Gets a range of rows which match the provided search criteria from $th provided table
- getSnippets() : string
- Given a string, extracts a snippets of text related to a given set of key words. For a given word a snippet is a window of characters to its left and right that is less than a maximum total number of characters.
- getUser() : array<string|int, mixed>
- Returns a row from the USERS table based on a username (case-insensitive)
- getUserActivities() : mixed
- Get a list of admin activities that a user is allowed to perform.
- getUserByEmailTime() : array<string|int, mixed>
- Looks up a USERS row based on their $email (potentially not unique) and the time at which their account was create in microseconds
- getUserIconFolder() : mixed
- Returns the path to a user's resource folder (where uploaded files will be stored). It creates the folder if it does not exist
- getUserIconUrl() : string
- Returns the relative url needed to request the given users avatar icon
- getUserId() : string
- Get the user_id associated with a given username (In base class as used as an internal method in both signin and user models)
- getUsername() : string
- Get a username by user_id
- getUserSession() : array<string|int, mixed>
- Returns $_SESSION variable of given user from the last time logged in.
- getUserStatus() : int
- Get the status of user by user_id
- isAllowedUserActivity() : bool
- Checks if a user is allowed to perform the activity given by method name
- isBotUser() : bool
- Checks if a user is bot
- isSingleLocalhost() : bool
- Used to determine if an action involves just one yioop instance on the current local machine or not
- loginDbms() : bool
- Returns whether the provided dbms needs a login and password or not (sqlite or sqlite3)
- postQueryCallback() : array<string|int, mixed>
- Called after getRows has retrieved all the rows that it would retrieve but before they are returned to give one last place where they could be further manipulated. For example, in MachineModel this callback is used to make parallel network calls to get the status of each machine returned by getRows. The default for this method is to leave the rows that would be returned unchanged
- rowCallback() : array<string|int, mixed>
- Called after as row is retrieved by getRows from the database to perform some manipulation that would be useful for this model.
- searchArrayToWhereOrderClauses() : array<string|int, mixed>
- Creates the WHERE and ORDER BY clauses for a query of a Yioop table such as USERS, ROLE, GROUP, which have associated search web forms. Searches are case insensitive
- selectCallback() : string
- Controls which columns and the names of those columns from the tables underlying the given model should be return from a getRows call.
- setUserSession() : mixed
- Stores into DB the $session associative array of given user
- translateDb() : mixed
- Used to get the translation of a string_id stored in the database to the given locale.
- updateBot() : mixed
- Used to update the fields stored in a CHAT_BOT row according to an array holding new values
- updateUser() : mixed
- Used to update the fields stored in a USERS row according to an array holding new values
- updateUserStatus() : mixed
- Set status of user by user_id
- whereCallback() : string
- Controls the WHERE clause of the SQL query that underlies the given model and should be used in a getRows call.
Constants
DEFAULT_DESCRIPTION_LENGTH
Default maximum character length of a search summary
public
mixed
DEFAULT_DESCRIPTION_LENGTH
= 150
MAX_SNIPPET_TITLE_LENGTH
public
mixed
MAX_SNIPPET_TITLE_LENGTH
= 20
MIN_SNIPPET_LENGTH
public
mixed
MIN_SNIPPET_LENGTH
= 100
SNIPPET_LENGTH_LEFT
public
mixed
SNIPPET_LENGTH_LEFT
= 20
SNIPPET_LENGTH_RIGHT
public
mixed
SNIPPET_LENGTH_RIGHT
= 40
SNIPPET_TITLE_LENGTH
public
mixed
SNIPPET_TITLE_LENGTH
= 20
Properties
$any_fields
These fields if present in $search_array (used by @see getRows() ), but with value "-1", will be skipped as part of the where clause but will be used for order by clause
public
array<string|int, mixed>
$any_fields
= ["status"]
$cache
Cache object to be used if we are doing caching
public
static object
$cache
$db
Reference to a DatasourceManager
public
object
$db
$db_name
Name of the search engine database
public
string
$db_name
$edited_page_summaries
Associative array of page summaries which might be used to override default page summaries if set.
public
array<string|int, mixed>
$edited_page_summaries
= null
$private_db
Reference to a private DatasourceManager
public
object
$private_db
$private_db_name
Name of the private search engine database
public
string
$private_db_name
$search_table_column_map
Associations of the form name of field for web forms => database column names/abbreviations In this case, things will in general map to the USERS table in the Yioop data base var array
public
array<string|int, mixed>
$search_table_column_map
= ["first" => "FIRST_NAME", "last" => "LAST_NAME", "user" => "USER_NAME", "email" => "EMAIL", "status" => "STATUS"]
$web_site
Reference to a WebSite object in use to serve pages (if any)
public
object
$web_site
Methods
__construct()
Sets up the database manager that will be used and name of the search engine database
public
__construct([string $db_name = CDB_NAME ][, bool $connect = true ][, mixed $web_site = null ]) : mixed
Parameters
- $db_name : string = CDB_NAME
-
the name of the database for the search engine
- $connect : bool = true
-
whether to connect to the database by default after making the datasource class
- $web_site : mixed = null
Return values
mixed —addUser()
Add a user with a given username and password to the list of users that can login to the admin panel
public
addUser(string $username, string $password[, string $firstname = '' ][, string $lastname = '' ][, string $email = '' ][, int $status = CACTIVE_STATUS ]) : mixed
Parameters
- $username : string
-
the username of the user to be added
- $password : string
-
the password in plaintext of the user to be added
- $firstname : string = ''
-
the firstname of the user to be added
- $lastname : string = ''
-
the lastname of the user to be added
- $email : string = ''
-
the email of the user to be added
- $status : int = CACTIVE_STATUS
-
one of ACTIVE_STATUS, INACTIVE_STATUS, or SUSPENDED_STATUS
Return values
mixed —false if operation not successful, user_id otherwise
boldKeywords()
Given a string, wraps in bold html tags a set of key words it contains.
public
boldKeywords(string $text, array<string|int, mixed> $words) : string
Parameters
- $text : string
-
haystack string to look for the key words
- $words : array<string|int, mixed>
-
an array of words to bold face
Return values
string —the resulting string after boldfacing has been applied
createIfNecessaryDirectory()
Creates a directory and sets it to world permission if it doesn't already exist
public
createIfNecessaryDirectory(string $directory) : int
Parameters
- $directory : string
-
name of directory to create
Return values
int —-1 on failure, 0 if already existed, 1 if created
deleteUser()
Deletes a user by username from the list of users that can login to the admin panel
public
deleteUser(string $user_name) : mixed
Parameters
- $user_name : string
-
the login name of the user to delete
Return values
mixed —fileGetContents()
Either a wrapper for file_get_contents, or if a WebSite object is being used to serve pages, it reads it in using blocking I/O file_get_contents() and caches it before return its string contents.
public
fileGetContents(string $filename[, bool $force_read = false ]) : string
Note this function assumes that only the web server is performing I/O with this file. filemtime() can be used to see if a file on disk has been changed and then you can use $force_read = true below to force re- reading the file into the cache
Parameters
- $filename : string
-
name of file to get contents of
- $force_read : bool = false
-
whether to force the file to be read from persistent storage rather than the cache
Return values
string —contents of the file given by $filename
filePutContents()
Either a wrapper for file_put_contents, or if a WebSite object is being used to serve pages, writes $data to the persistent file with name $filename. Saves a copy in the RAM cache if there is a copy already there.
public
filePutContents(string $filename, string $data) : mixed
Parameters
- $filename : string
-
name of file to write to persistent storages
- $data : string
-
string of data to store in file
Return values
mixed —formatSinglePageResult()
Given a page summary, extracts snippets which are related to a set of search words. For each snippet, bold faces the search terms, and then creates a new summary array.
public
formatSinglePageResult(array<string|int, mixed> $page[, array<string|int, mixed> $words = null ][, int $description_length = self::DEFAULT_DESCRIPTION_LENGTH ]) : array<string|int, mixed>
Parameters
- $page : array<string|int, mixed>
-
a single search result summary
- $words : array<string|int, mixed> = null
-
keywords (typically what was searched on)
- $description_length : int = self::DEFAULT_DESCRIPTION_LENGTH
-
length of the description
Return values
array<string|int, mixed> —$page which has been snippified and bold faced
fromCallback()
Controls which tables and the names of tables underlie the given model and should be used in a getRows call This defaults to the single table whose name is whatever is before Model in the name of the model. For example, by default on FooModel this method would return "FOO". If a different behavior, this can be overridden in subclasses of Model
public
fromCallback([mixed $args = null ]) : string
Parameters
- $args : mixed = null
-
any additional arguments which should be used to determine these tables (in this case none)
Return values
string —a comma separated list of tables suitable for a SQL query
getDbmsList()
Gets a list of all DBMS that work with the search engine
public
getDbmsList() : array<string|int, mixed>
Return values
array<string|int, mixed> —Names of available data sources
getRecommendations()
Gets $num many user recommendations of the given type.
public
getRecommendations(int $timestamp, int $user_id, int $type[, int $num = 3 ]) : mixed
Parameters
- $timestamp : int
-
of the recommendation media job calculation of recommendations (available using cron model item_group_recommendations)
- $user_id : int
-
to user to get recommendations for
- $type : int
-
= one of C\TRENDING_RECOMMENDATION, C\THREAD_RECOMMENDATION, or C\GROUP_RECOMMENDATION
- $num : int = 3
-
the number of recommendations to return
Return values
mixed —getResourceRecommendations()
public
getResourceRecommendations(mixed $user_id[, mixed $num = 3 ]) : mixed
Parameters
- $user_id : mixed
- $num : mixed = 3
Return values
mixed —getRows()
Gets a range of rows which match the provided search criteria from $th provided table
public
getRows(int $limit, int $num, int &$total[, array<string|int, mixed> $search_array = [] ][, array<string|int, mixed> $args = null ]) : array<string|int, mixed>
Parameters
- $limit : int
-
starting row from the potential results to return
- $num : int
-
number of rows after start row to return
- $total : int
-
gets set with the total number of rows that can be returned by the given database query
- $search_array : array<string|int, mixed> = []
-
each element of this is a quadruple name of a field, what comparison to perform, a value to check, and an order (ascending/descending) to sort by
- $args : array<string|int, mixed> = null
-
additional values which may be used to get rows (what these are will typically depend on the subclass implementation)
Return values
array<string|int, mixed> —getSnippets()
Given a string, extracts a snippets of text related to a given set of key words. For a given word a snippet is a window of characters to its left and right that is less than a maximum total number of characters.
public
getSnippets(string $text, array<string|int, mixed> $words, string $description_length) : string
There is also a rule that a snippet should avoid ending in the middle of a word
Parameters
- $text : string
-
haystack to extract snippet from
- $words : array<string|int, mixed>
-
keywords used to make look in haystack
- $description_length : string
-
length of the description desired
Return values
string —a concatenation of the extracted snippets of each word
getUser()
Returns a row from the USERS table based on a username (case-insensitive)
public
getUser(string $username) : array<string|int, mixed>
Parameters
- $username : string
-
user login to be used for look up
Return values
array<string|int, mixed> —corresponds to the row of that user in the USERS table
getUserActivities()
Get a list of admin activities that a user is allowed to perform.
public
getUserActivities(string $user_id) : mixed
This includes their name and their associated method.
Parameters
- $user_id : string
-
id of user to get activities fors
Return values
mixed —getUserByEmailTime()
Looks up a USERS row based on their $email (potentially not unique) and the time at which their account was create in microseconds
public
getUserByEmailTime(string $email, string $creation_time) : array<string|int, mixed>
Parameters
- $email : string
-
of user to lookup
- $creation_time : string
-
when the user's account was created in the current epoch
Return values
array<string|int, mixed> —row from USERS table
getUserIconFolder()
Returns the path to a user's resource folder (where uploaded files will be stored). It creates the folder if it does not exist
public
getUserIconFolder(int $user_id) : mixed
Parameters
- $user_id : int
-
user id of user to get path for
Return values
mixed —getUserIconUrl()
Returns the relative url needed to request the given users avatar icon
public
getUserIconUrl(int $user_id) : string
Parameters
- $user_id : int
-
user to look up path for
Return values
string —path to icon
getUserId()
Get the user_id associated with a given username (In base class as used as an internal method in both signin and user models)
public
getUserId(string $username) : string
Parameters
- $username : string
-
the username to look up
Return values
string —the corresponding userid
getUsername()
Get a username by user_id
public
getUsername(string $user_id) : string
Parameters
- $user_id : string
-
id of the user
Return values
string —the name of the user corresponding to that id
getUserSession()
Returns $_SESSION variable of given user from the last time logged in.
public
getUserSession(int $user_id) : array<string|int, mixed>
Parameters
- $user_id : int
-
id of user to get session for
Return values
array<string|int, mixed> —user's session data
getUserStatus()
Get the status of user by user_id
public
getUserStatus(string $user_id) : int
Parameters
- $user_id : string
-
id of the user
Return values
int —the status flag of the user: ACTIVE, INACTIVE, INVITED, SUSPENDED
isAllowedUserActivity()
Checks if a user is allowed to perform the activity given by method name
public
isAllowedUserActivity(string $user_id, string $method_name[, mixed $get_roles = false ]) : bool
Parameters
- $user_id : string
-
id of user to check
- $method_name : string
-
to see if user allowed to do
- $get_roles : mixed = false
Return values
bool —whether or not the user is allowed
isBotUser()
Checks if a user is bot
public
isBotUser(string $user_id) : bool
Parameters
- $user_id : string
-
id of user to check
Return values
bool —whether or not the user is bot
isSingleLocalhost()
Used to determine if an action involves just one yioop instance on the current local machine or not
public
isSingleLocalhost(array<string|int, mixed> $machine_urls[, string $index_timestamp = -1 ]) : bool
Parameters
- $machine_urls : array<string|int, mixed>
-
urls of yioop instances to which the action applies
- $index_timestamp : string = -1
-
if timestamp exists checks if the index has declared itself to be a no network index.
Return values
bool —whether it involves a single local yioop instance (true) or not (false)
loginDbms()
Returns whether the provided dbms needs a login and password or not (sqlite or sqlite3)
public
loginDbms(string $dbms) : bool
Parameters
- $dbms : string
-
the name of a database management system
Return values
bool —true if needs a login and password; false otherwise
postQueryCallback()
Called after getRows has retrieved all the rows that it would retrieve but before they are returned to give one last place where they could be further manipulated. For example, in MachineModel this callback is used to make parallel network calls to get the status of each machine returned by getRows. The default for this method is to leave the rows that would be returned unchanged
public
postQueryCallback(array<string|int, mixed> $rows) : array<string|int, mixed>
Parameters
- $rows : array<string|int, mixed>
-
that have been calculated so far by getRows
Return values
array<string|int, mixed> —$rows after this final manipulation
rowCallback()
Called after as row is retrieved by getRows from the database to perform some manipulation that would be useful for this model.
public
rowCallback(array<string|int, mixed> $row, mixed $args) : array<string|int, mixed>
For example, in CrawlModel, after a row representing a crawl mix has been gotten, this is used to perform an additional query to marshal its components. By default this method just returns this row unchanged.
Parameters
- $row : array<string|int, mixed>
-
row as retrieved from database query
- $args : mixed
-
additional arguments that might be used by this callback
Return values
array<string|int, mixed> —$row after callback manipulation
searchArrayToWhereOrderClauses()
Creates the WHERE and ORDER BY clauses for a query of a Yioop table such as USERS, ROLE, GROUP, which have associated search web forms. Searches are case insensitive
public
searchArrayToWhereOrderClauses(array<string|int, mixed> $search_array[, array<string|int, mixed> $any_fields = ['status'] ]) : array<string|int, mixed>
Parameters
- $search_array : array<string|int, mixed>
-
each element of this is a quadruple name of a field, what comparison to perform, a value to check, and an order (ascending/descending) to sort by
- $any_fields : array<string|int, mixed> = ['status']
-
these fields if present in search array but with value "-1" will be skipped as part of the where clause but will be used for order by clause
Return values
array<string|int, mixed> —string for where clause, string for order by clause
selectCallback()
Controls which columns and the names of those columns from the tables underlying the given model should be return from a getRows call.
public
selectCallback([mixed $args = null ]) : string
Parameters
- $args : mixed = null
-
any additional arguments which should be used to determine these tables (in this case none)
Return values
string —a comma separated list of columns suitable for a SQL query
setUserSession()
Stores into DB the $session associative array of given user
public
setUserSession(int $user_id, array<string|int, mixed> $session) : mixed
Parameters
- $user_id : int
-
id of user to store session for
- $session : array<string|int, mixed>
-
session data for the given user
Return values
mixed —translateDb()
Used to get the translation of a string_id stored in the database to the given locale.
public
translateDb(string $string_id, string $locale_tag) : mixed
Parameters
- $string_id : string
-
id to translate
- $locale_tag : string
-
to translate to
Return values
mixed —translation if found, $string_id, otherwise
updateBot()
Used to update the fields stored in a CHAT_BOT row according to an array holding new values
public
updateBot(array<string|int, mixed> $user) : mixed
Parameters
- $user : array<string|int, mixed>
-
updated values for a CHAT_BOT row
Return values
mixed —updateUser()
Used to update the fields stored in a USERS row according to an array holding new values
public
updateUser(array<string|int, mixed> $user) : mixed
Parameters
- $user : array<string|int, mixed>
-
updated values for a USERS row
Return values
mixed —updateUserStatus()
Set status of user by user_id
public
updateUserStatus(string $user_id, int $status) : mixed
Parameters
- $user_id : string
-
id of the user
- $status : int
-
one of ACTIVE_STATUS, INACTIVE_STATUS, or SUSPENDED_STATUS
Return values
mixed —whereCallback()
Controls the WHERE clause of the SQL query that underlies the given model and should be used in a getRows call.
public
whereCallback([mixed $args = null ]) : string
Parameters
- $args : mixed = null
-
any additional arguments which should be used to determine these tables (in this case none)
Return values
string —a SQL WHERE clause