--- og_user_roles.module.5.x-2.0.orig 2007-08-02 13:04:37.000000000 -0700
+++ og_user_roles.module 2007-08-02 13:06:13.000000000 -0700
@@ -1,5 +1,5 @@
t('Select the group type you wish to use for subgroup creation.'),
);
}
+
+ $form['og_user_roles_test'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Test/Debug.'),
+ '#collapsible' => TRUE,
+ );
+ $form['og_user_roles_test']['og_user_roles_test_default'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Output debug data to og_user_test table?'),
+ '#default_value' => variable_get('og_user_roles_test_default', 0),
+ '#description' => t('Every time user_access() is called, it will call og_user_all_roles() which adds group roles to $user->roles. Do you wish to see the output from this function? (Note that this feature is for testing/debug purposes, and could create a very large output file. This feature also requires that the table og_user_test already exist. Details here: http://drupal.org/node/164038)'),
+ );
return system_settings_form($form);
}
@@ -586,6 +598,10 @@ function views_handler_filter_group() {
*/
function og_user_roles_init() {
global $user;
+ // Let's try getting og roles here, just to see what happens
+ $roles = og_user_roles_all_roles($user); // This returns normal $user->roles and includes OG roles if any
+ $user->roles = $roles;
+
// Looking for this format: http://www.scbbs.com/node/add/link?gids[]=29
// We only need to process this if the user is logged in
@@ -1108,6 +1124,16 @@ function og_user_roles_all_roles($user)
$gid = intval(current($_REQUEST['gids']));
}
}
+
+ // File upload: http://www.scbbs.com/node/135/225#comment-225
+ if (arg(0) == 'upload' && arg(1) == 'js') {
+ if ($_SESSION['og_last']) $gid = $_SESSION['og_last']->nid;
+ }
+ // File download
+ if (arg(0) == 'system' && arg(1) == 'files') {
+ if ($_SESSION['og_last']) $gid = $_SESSION['og_last']->nid;
+ }
+
} // end $gid if
//
@@ -1146,9 +1172,11 @@ function og_user_roles_all_roles($user)
$d = $c;
}
- // Write the test data
- //og_user_roles_write_test($user, $location, $gid02, $gid, $uri_request_id, $d, $query);
-
+ // Write the test data: http://drupal.org/node/164038
+ if (variable_get('og_user_roles_test_default', 0) == 1) {
+ og_user_roles_write_test($user, $location, $gid02, $gid, $uri_request_id, $d, $query);
+ }
+
// $d is either the merged results, or just $user->roles;
return $d;
@@ -1163,6 +1191,10 @@ function og_user_roles_getgid($nid, $uid
while ($t = db_fetch_object($result)) {
$gid = $t->gid;
}
+
+ /* Sample:
+ * SELECT node_access.gid from node_access INNER JOIN og_uid ON node_access.gid = og_uid.nid WHERE node_access.realm = 'og_subscriber' AND og_uid.uid = 2 AND (node_access.nid = 194 OR node_access.gid = 194)
+ */
// If $gid still equals 0 then try searching og_term table (if it exists)
// og forums will typically be listed here
@@ -1200,14 +1232,41 @@ function og_user_roles_write_test($user,
$test_aarg1 = arg(1);
$test_aarg2 = arg(2);
$test_aarg3 = arg(3);
- $test_perm = 'Roles Returned: ('. implode(',', $d) .')
db_query = '. $query;
+// $test_perm = 'Roles Returned: ('. implode(',', $d) .')
db_query = '. $query;
+ $test_perm = 'Roles Returned: ('. implode(',', $d) .')';
- if (og_user_roles_user_table_exists('{user_test}')) {
- $test_query = "INSERT INTO user_test (test_status, test_date, test_user, test_username, test_group, test_function, test_subfunction, test_string, test_uri, test_aarg0, test_aarg1, test_aarg2, test_aarg3, test_perm) values ('". $test_status ."','". $test_date ."','". $test_user ."','". $test_username ."','". $test_group ."','". $test_function ."','". $test_subfunction ."','". $test_string ."','". $test_uri ."','". $test_aarg0 ."','". $test_aarg1 ."','". $test_aarg2 ."','". $test_aarg3 ."','". $test_perm ."')";
+ if (og_user_roles_user_table_exists('{og_user_test}')) {
+ $test_query = "INSERT INTO og_user_test (testStatus, testDate, testUser, testUserName, testGroup, testFunction, testSubFunction, testString, testURI, testAArg0, testAArg1, testAArg2, testAArg3, testPerm) values ('". $test_status ."','". $test_date ."','". $test_user ."','". $test_username ."','". $test_group ."','". $test_function ."','". $test_subfunction ."','". $test_string ."','". $test_uri ."','". $test_aarg0 ."','". $test_aarg1 ."','". $test_aarg2 ."','". $test_aarg3 ."','". $test_perm ."')";
db_query($test_query);
}
}
-
+
+/**
+ * Create test table.
+ */
+function og_user_roles_create_test() {
+
+ $query = "
+ CREATE TABLE og_user_test (
+ testDate varchar(25),
+ testUser varchar(5),
+ testUserName varchar(40),
+ testGroup varchar(5),
+ testFunction varchar(60),
+ testSubFunction varchar(80),
+ testString varchar(60),
+ testStatus varchar(10),
+ testURI varchar(200),
+ testAArg0 varchar(40),
+ testAArg1 varchar(40),
+ testAArg2 varchar(40),
+ testAArg3 varchar(40),
+ testPerm long varchar)
+ ";
+
+ db_query($test_query);
+}
+
/**
* Called by og_user_roles_nodeapi('access')
* To check og access permissions