From 66b18be324deca4d392ee51f8b73a6d65b75eacc Mon Sep 17 00:00:00 2001
From: David M The Where userdata is the array containing the aforementioned data. This method is the primary way of determining what a user can and cannot do for a given option globally or in a given forum. The method should be called in the following way: Where option is a string representing the required option, e.g. 'f_list', 'm_edit', 'a_adduser', etc. By adding a ! in front of the option, e.g. '!f_list' the result of this method will be negated. The optional forum term is the integer forum_id. The method should be called thus: As with the acl
method is the initialisation routine for all the acl functions. If you intend calling any acl method you must first call this. The method takes as its one and only required parameter an associative array containing user information as stored in the database. This array must contain at least the following information; user_id, user_permissions and user_type. It is called in the following way:
-$auth->acl(
userdata
);
+$auth->acl(userdata
);
userdata
);
-$result = $auth->acl_get(
option
[, forum
]);
+$result = $auth->acl_get(option
[, forum
]);
option
[, forum
]);
-$result = $auth->acl_gets(
option1
[, option2
, ..., optionN
, forum
]);
+$result = $auth->acl_gets(option1
[, option2
, ..., optionN
, forum
]);
acl_get
method the options are strings representing the required permissions to check. The forum again is an integer representing a given forum_id.option1
[, option2
, ...,
-$result = $auth->acl_getf(option
[,clean
]); +$result = $auth->acl_getf(option
[,clean
]);
Just like in the acl_get
method the option is a string specifying the permission which has to be checked (negation using ! is allowed). The second parameter is a boolean. If it is set to false this method returns all forums with either zero or a positive integer. If it is set to true only those forums with a positive integer as the result will be returned.
option
[, clean
]);
The method returns an associative array of the form:
-array(forum_id1 => array(option => integer), forum_id2 => ...) +array(forum_id1 => array(option => integer), forum_id2 => ...)
Where option is the option passed to the method and integer is either zero or a positive integer and the same acl_get(option, forum_id)
would return.
The empty()
function is useful if you want to check if a variable is not set or being empty (an empty string, 0 as an integer or string, NULL, false, an empty array or a variable declared, but without a value in a class). Therefore empty should be used in favor of isset($array) && sizeof($array) > 0
- this can be written in a shorter way as !empty($array)
.
The empty()
function is useful if you want to check if a variable is not set or being empty (an empty string, 0 as an integer or string, NULL, false, an empty array or a variable declared, but without a value in a class). Therefore empty should be used in favor of isset($array) && sizeof($array) > 0
- this can be written in a shorter way as !empty($array)
.
Switch/case code blocks can get a bit long sometimes. To have some level of notice and being in-line with the opening/closing brace requirement (where they are on the same line for better readability), this also applies to switch/case code blocks and the breaks. An example:
@@ -769,9 +769,9 @@ $sql = 'SELECT *$sql_ary = array( - 'somedata' => $my_string, - 'otherdata' => $an_int, - 'moredata' => $another_int + 'somedata' => $my_string, + 'otherdata' => $an_int, + 'moredata' => $another_int ); $db->sql_query('INSERT INTO ' . SOME_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); @@ -781,9 +781,9 @@ $db->sql_query('INSERT INTO ' . SOME_TABLE . ' ' . $db->sql_build_array('I$sql_ary = array( - 'somedata' => $my_string, - 'otherdata' => $an_int, - 'moredata' => $another_int + 'somedata' => $my_string, + 'otherdata' => $an_int, + 'moredata' => $another_int ); $sql = 'UPDATE ' . SOME_TABLE . ' @@ -850,24 +850,24 @@ SELECT FROM phpbb_forums WHERE forum_id <> 1$sql_array = array( - 'SELECT' => 'f.*, ft.mark_time', + 'SELECT' => 'f.*, ft.mark_time', - 'FROM' => array( - FORUMS_WATCH_TABLE => 'fw', - FORUMS_TABLE => 'f' + 'FROM' => array( + FORUMS_WATCH_TABLE => 'fw', + FORUMS_TABLE => 'f' ), - 'LEFT_JOIN' => array( + 'LEFT_JOIN' => array( array( - 'FROM' => array(FORUMS_TRACK_TABLE => 'ft'), - 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id' + 'FROM' => array(FORUMS_TRACK_TABLE => 'ft'), + 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id' ) ), - 'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . ' + 'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . ' AND f.forum_id = fw.forum_id', - 'ORDER_BY' => 'left_id' + 'ORDER_BY' => 'left_id' ); $sql = $db->sql_build_query('SELECT', $sql_array); @@ -877,25 +877,25 @@ $sql = $db->sql_build_query('SELECT', $sql_array);$sql_array = array( - 'SELECT' => 'f.*', + 'SELECT' => 'f.*', - 'FROM' => array( - FORUMS_WATCH_TABLE => 'fw', - FORUMS_TABLE => 'f' + 'FROM' => array( + FORUMS_WATCH_TABLE => 'fw', + FORUMS_TABLE => 'f' ), - 'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . ' + 'WHERE' => 'fw.user_id = ' . $user->data['user_id'] . ' AND f.forum_id = fw.forum_id', - 'ORDER_BY' => 'left_id' + 'ORDER_BY' => 'left_id' ); if ($config['load_db_lastread']) { $sql_array['LEFT_JOIN'] = array( array( - 'FROM' => array(FORUMS_TRACK_TABLE => 'ft'), - 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id' + 'FROM' => array(FORUMS_TRACK_TABLE => 'ft'), + 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id' ) ); @@ -984,7 +984,7 @@ $mark_array = request_var('mark', array(0));// Getting an array, keys are strings, value defaults to 0
-$action_ary = request_var('action', array('' => 0)); +$action_ary = request_var('action', array('' => 0));Login checks/redirection:
@@ -999,12 +999,12 @@ $action_ary = request_var('action', array('' => 0));Sessions should be initiated on each page, as near the top as possible using the following code:
--$user->session_begin(); -$auth->acl($user->data); -$user->setup(); +$user->session_begin(); +$auth->acl($user->data); +$user->setup();The
+$user->setup()
call can be used to pass on additional language definition and a custom style (used in viewforum).The
$user->setup()
call can be used to pass on additional language definition and a custom style (used in viewforum).Errors and messages:
All messages/errors should be outputed by calling
@@ -1328,7 +1328,7 @@ divtrigger_error()
using the appropriate message type and language string. Example:You are even able to check the number of items within a loop by comparing it with values within the IF condition:
-<!-- IF .loop > 2 --> +<!-- IF .loop > 2 --> <!-- BEGIN loop --> markup <!-- END loop -->