Index: og_user_roles.install =================================================================== --- og_user_roles.install (revision 3312) +++ og_user_roles.install (working copy) @@ -24,6 +24,12 @@ PRIMARY KEY (realm) ) /*!40100 DEFAULT CHARACTER SET utf8 */;"); + db_query("CREATE TABLE {og_user_roles_variable} ( + name varchar(128) NOT NULL DEFAULT '', + value longtext NOT NULL, + PRIMARY KEY (name) + ) /*!40100 DEFAULT CHARACTER SET utf8 */;"); + break; case 'pgsql': @@ -46,6 +52,12 @@ PRIMARY KEY (realm) );"); + db_query("CREATE TABLE {og_user_roles_variable} ( + name varchar(128) NOT NULL DEFAULT '', + value longtext NOT NULL, + PRIMARY KEY (name) + );"); + break; } @@ -129,5 +141,45 @@ ) /*!40100 DEFAULT CHARACTER SET utf8 */;"); return $items; } - -?> \ No newline at end of file + +function og_user_roles_update_5292() { + $ret = array(); + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $ret[] = update_sql("CREATE TABLE {og_user_roles_variable} ( + name varchar(128) NOT NULL DEFAULT '', + value longtext NOT NULL, + PRIMARY KEY (name) + ) /*!40100 DEFAULT CHARACTER SET utf8 */;"); + break; + + case 'pgsql': + $ret[] = update_sql("CREATE TABLE {og_user_roles_variable} ( + name varchar(128) NOT NULL DEFAULT '', + value longtext NOT NULL, + PRIMARY KEY (name) + );"); + break; + } + + // Move existing variable settings from the variable table to the new + // og_user_roles_variable table. + $result = db_query("SELECT name, value FROM {variable} WHERE name RLIKE 'og_user_roles_.*[0-9]$'"); + while ($row = db_fetch_object($result)) { + db_query("INSERT INTO {og_user_roles_variable} (name, value) VALUES('%s', '%s')", $row->name, $row->value); + variable_del($row->name); + } + + // Merge og_user_roles_roles_, og_user_roles_assign_typegrouprole_, + // og_user_roles_typegrouprole_value_ vars into one variable per group. + $group_types = og_get_types('group'); + foreach ($group_types as $type) { + $group_info['roles'] = variable_get('og_user_roles_roles_'. $type, array()); + $group_info['assign_typegrouprole'] = variable_get('og_user_roles_assign_typegrouprole_'. $type, 0); + $group_info['typegrouprole_value'] = variable_get('og_user_roles_typegrouprole_value_'. $type, 0); + variable_set('og_user_roles_group_'. $type, $group_info); + } + + return $ret; +} Index: og_user_roles.module =================================================================== --- og_user_roles.module (revision 3312) +++ og_user_roles.module (working copy) @@ -69,6 +69,7 @@ // Create a fieldset for each group type containing role selections foreach ($types as $type => $name) { + $group_info = variable_get('og_user_roles_group_'. $type, array()); $form["og_user_roles_$type"] = array( '#type' => 'fieldset', '#title' => t('%type_name role options', array('%type_name' => $name)), @@ -77,19 +78,19 @@ '#type' => 'checkboxes', '#title' => t('Assignable roles'), '#options' => $roles, - '#default_value' => variable_get("og_user_roles_roles_$type", array()), + '#default_value' => $group_info['roles'], ); $form["og_user_roles_$type"]["og_user_roles_assign_typegrouprole_$type"] = array( '#type' => 'checkbox', '#title' => t('Set default basic group (group limited) role for users who join groups of this type: %type_name?', array('%type_name' => $name)), - '#default_value' => variable_get("og_user_roles_assign_typegrouprole_$type", 0), + '#default_value' => $group_info['assign_typegrouprole'], '#description' => t('Do you wish to automatically assign a specific "basic group role" to every new group subscriber at the time he subscribes to a group of this type: %type_name? The role is limited to the group that he is subscribed to. This role assignment can be removed by the groups\' admins', array('%type_name' => $name)), ); $form["og_user_roles_$type"]["og_user_roles_typegrouprole_value_$type"] = array( '#type' => 'select', '#title' => t('Role to use as a group type %type_name role', array('%type_name' => $name)), '#options' => $roles, - '#default_value' => variable_get("og_user_roles_typegrouprole_value_$type", 0), + '#default_value' => $group_info['typegrouprole_value'], '#description' => t('Select the role you wish to use as the "group role" for every new groupmember to groups of this type: %type_name.', array('%type_name' => $name)), ); } @@ -372,9 +373,63 @@ '#description' => t('This is the counter for the og_users_roles table. You do not need to set this. It will update itself. It should NOT be set lower than the number of records currently in the table.'), ); - return system_settings_form($form); + $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration') ); + $form['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset to defaults') ); + + return $form; } +function og_user_roles_admin_settings_submit($form_id, $form_values) { + $op = isset($form_values['op']) ? $form_values['op'] : ''; + + // Exclude unnecessary elements. + unset($form_values['submit'], $form_values['reset'], $form_values['form_id'], $form_values['op'], $form_values['form_token']); + + // Get list of all og-enabled node types + $processed = array(); + $group_types = og_get_types('group'); + foreach ($group_types as $type) { + $processed[] = 'og_user_roles_roles_'. $type; + $processed[] = 'og_user_roles_assign_typegrouprole_'. $type; + $processed[] = 'og_user_roles_typegrouprole_value_'. $type; + if ($op == t('Reset to defaults')) { + variable_del('og_user_roles_group_'. $type); + } + else { + $group_info = array(); + $group_info['roles'] = (isset($form_values['og_user_roles_roles_'. $type])) ? $form_values['og_user_roles_roles_'. $type] : array(); + if (is_array($group_info['roles']) && isset($form_values['array_filter'])) { + $group_info['roles'] = array_keys(array_filter($group_info['roles'])); + } + $group_info['assign_typegrouprole'] = (isset($form_values['og_user_roles_assign_typegrouprole_'. $type])) ? $form_values['og_user_roles_assign_typegrouprole_'. $type] : 0; + $group_info['typegrouprole_value'] = (isset($form_values['og_user_roles_typegrouprole_value_'. $type])) ? $form_values['og_user_roles_typegrouprole_value_'. $type] : 0; + variable_set('og_user_roles_group_'. $type, $group_info); + } + } + + foreach ($form_values as $key => $value) { + if (!in_array($key, $processed)) { + if ($op == t('Reset to defaults')) { + variable_del($key); + } + else { + if (is_array($value) && isset($form_values['array_filter'])) { + $value = array_keys(array_filter($value)); + } + variable_set($key, $value); + } + } + } + if ($op == t('Reset to defaults')) { + drupal_set_message(t('The configuration options have been reset to their default values.')); + } + else { + drupal_set_message(t('The configuration options have been saved.')); + } + +} + + /** * Generate multinode access UI form. */ @@ -621,7 +676,8 @@ $node = node_load($gid); // Get roles associated with this group. We rebuild the associative // array because the settings form only passes RID and we need the name. - $role_ids = variable_get("og_user_roles_roles_{$node->type}", array()); + $group_info = variable_get('og_user_roles_group_'. $node->type, array()); + $role_ids = $group_info['roles']; $all_roles = user_roles(); foreach ($role_ids as $rid => $checked) { if ($checked != 0) { @@ -795,7 +851,8 @@ */ function og_user_roles_is_allowed($nid) { $node = node_load($nid); - if (in_array($node->type, og_get_types('group')) && variable_get("og_user_roles_roles_$node->type", NULL)) { + $group_info = variable_get('og_user_roles_group_'. $node->type, array()); + if (in_array($node->type, og_get_types('group')) && $group_info['roles']) { return TRUE; } else { @@ -856,8 +913,8 @@ * Remove og_user_roles variables for a group node that has been deleted. */ function og_user_roles_variable_remove($gid) { - if (variable_get('og_user_roles_basicgrouprole_value_' . $gid, 0)) variable_del('og_user_roles_basicgrouprole_value_' . $gid); - if (variable_get('og_user_roles_assign_basicgrouprole_' . $gid, 0)) variable_del('og_user_roles_assign_basicgrouprole_' . $gid); + if (og_user_roles_variable_get('og_user_roles_basicgrouprole_value_' . $gid, 0)) og_user_roles_variable_del('og_user_roles_basicgrouprole_value_' . $gid); + if (og_user_roles_variable_get('og_user_roles_assign_basicgrouprole_' . $gid, 0)) og_user_roles_variable_del('og_user_roles_assign_basicgrouprole_' . $gid); } /** @@ -1063,7 +1120,8 @@ } // Get roles associated with this group. We rebuild the associative // array because the settings form only passes RID and we need the name. - $role_ids = variable_get("og_user_roles_roles_{$group}", array()); + $group_info = variable_get('og_user_roles_group_'. $group, array()); + $role_ids = $group_info['roles']; $all_roles = user_roles(); foreach ($role_ids as $rid => $checked) { if ($checked != 0) { @@ -1451,11 +1509,11 @@ $return = og_save_subscription($gid, $user->uid, array('is_active' => 1)); // as per http://drupal.org/node/156224 drupal_set_message(t('Subscription request to ' . l($title, 'node/'. $gid) . ' approved.')); // Delete this registration code if 'delete_regcode' is set - if (variable_get('og_user_roles_delete_regcode_' . $gid, 0) == 1) og_user_roles_delete_regcode($gid, $edit['og_user_roles_regcode']); + if (og_user_roles_variable_get('og_user_roles_delete_regcode_' . $gid, 0) == 1) og_user_roles_delete_regcode($gid, $edit['og_user_roles_regcode']); // Places all new registration code group subscribers into default regcode role. - if (variable_get('og_user_roles_assign_regcoderole_' . $gid, 0)) { // check to see if this variable exists - if (variable_get('og_user_roles_assign_regcode_gid', 0) == 1 && variable_get('og_user_roles_assign_regcoderole_' . $gid, 0) == 1 ) { - $rid = variable_get('og_user_roles_regcoderole_value_' . $gid, 0); + if (og_user_roles_variable_get('og_user_roles_assign_regcoderole_' . $gid, 0)) { // check to see if this variable exists + if (variable_get('og_user_roles_assign_regcode_gid', 0) == 1 && og_user_roles_variable_get('og_user_roles_assign_regcoderole_' . $gid, 0) == 1 ) { + $rid = og_user_roles_variable_get('og_user_roles_regcoderole_value_' . $gid, 0); og_user_roles_role_join($user->uid, $rid, $gid); // assign user to group role in that group } } @@ -1560,9 +1618,9 @@ // Places all new group subscribers into default role. // Same as above, except these settings are set by Group Admin in the // group node. So, the variables are set by group. - if (variable_get('og_user_roles_assign_basicgrouprole_' . $nid, 0)) { // check to see if this variable exists - if (variable_get('og_user_roles_assign_basicgrouprole_gid', 0) == 1 && variable_get('og_user_roles_assign_basicgrouprole_' . $nid, 0) == 1 ) { - $rid = variable_get('og_user_roles_basicgrouprole_value_' . $nid, 0); + if (og_user_roles_variable_get('og_user_roles_assign_basicgrouprole_' . $nid, 0)) { // check to see if this variable exists + if (variable_get('og_user_roles_assign_basicgrouprole_gid', 0) == 1 && og_user_roles_variable_get('og_user_roles_assign_basicgrouprole_' . $nid, 0) == 1 ) { + $rid = og_user_roles_variable_get('og_user_roles_basicgrouprole_value_' . $nid, 0); og_user_roles_role_join($uid, $rid, $nid); // assign user to group role in that group } } @@ -1582,9 +1640,10 @@ // --- Modification - 2008-03-10 - as per: http://drupal.org/node/229715 // Places all new group subscribers into default role per group type. $type = $node->type; - if (variable_get('og_user_roles_assign_typegrouprole_' . $type, 0)) { - if (variable_get('og_user_roles_assign_typegrouprole_' . $type, 0) == 1) { - $rid = variable_get('og_user_roles_typegrouprole_value_' . $type, 0); + $group_info = variable_get('og_user_roles_group_'. $type, array()); + if ($group_info['assign_typegrouprole']) { + if ($group_info['assign_typegrouprole'] == 1) { + $rid = $group_info['typegrouprole_value']; og_user_roles_role_join($uid, $rid, $nid); // assign user to group role in that group } } @@ -1785,7 +1844,7 @@ } // Check the nopublic variable for this group - if (variable_get('og_user_roles_assign_nopublic_' . $gid, 0) == 1) { + if (og_user_roles_variable_get('og_user_roles_assign_nopublic_' . $gid, 0) == 1) { // Check public status of this post if ($node->og_public) { form_set_error('og_public', t('No public posts allowed in this group. You may NOT check the Public box on this post.')); @@ -2934,7 +2993,7 @@ if ($group_node = og_get_group_context()) { $location .= "A"; $gid = $group_node->nid; - $logo = variable_get('og_user_roles_logo_' . $gid, ''); + $logo = og_user_roles_variable_get('og_user_roles_logo_' . $gid, ''); $_SESSION['oglogo'] = $logo; variable_set('oglogo_' . $addr, $logo); } @@ -2943,7 +3002,7 @@ $location .= "B"; $nid = (int)$ref_arg[2]; $gid = og_user_roles_getgid($nid, $uid); - $logo = variable_get('og_user_roles_logo_' . $gid, ''); + $logo = og_user_roles_variable_get('og_user_roles_logo_' . $gid, ''); $_SESSION['oglogo'] = $logo; variable_set('oglogo_' . $addr, $logo); } @@ -2952,7 +3011,7 @@ $location .= "C"; $nid = (int)arg(3); $gid = og_user_roles_getgid($nid, $uid); - $logo = variable_get('og_user_roles_logo_' . $gid, ''); + $logo = og_user_roles_variable_get('og_user_roles_logo_' . $gid, ''); $_SESSION['oglogo'] = $logo; variable_set('oglogo_' . $addr, $logo); } @@ -2961,7 +3020,7 @@ $location .= "D"; $nid = (int)$ref_arg[4]; $gid = og_user_roles_getgid($nid, $uid); - $logo = variable_get('og_user_roles_logo_' . $gid, ''); + $logo = og_user_roles_variable_get('og_user_roles_logo_' . $gid, ''); $_SESSION['oglogo'] = $logo; variable_set('oglogo_' . $addr, $logo); } @@ -2976,7 +3035,7 @@ // $location .= "F"; // $nid = $_SESSION['og_last']; // $gid = og_user_roles_getgid($nid, $uid); -// $logo = variable_get('og_user_roles_logo_' . $gid, ''); +// $logo = og_user_roles_variable_get('og_user_roles_logo_' . $gid, ''); // } // IE Print Problem: If we found $logo above, use this to locate it. @@ -3038,7 +3097,7 @@ */ function og_user_roles_oglogo_gid($gid) { - $logo = variable_get('og_user_roles_logo_' . $gid, ''); + $logo = og_user_roles_variable_get('og_user_roles_logo_' . $gid, ''); return $logo; } @@ -3191,7 +3250,8 @@ $group_types = og_get_types('group'); foreach ($group_types as $type) { // Get list of assignable group roles for this group type - $role_ids = variable_get("og_user_roles_roles_{$type}", array()); + $group_info = variable_get('og_user_roles_group_'. $type, array()); + $role_ids = $group_info['roles']; $all_roles = user_roles(); foreach ($role_ids as $rid => $checked) { if ($checked != 0) { @@ -3210,14 +3270,14 @@ $form['og_user_roles_basicgrouprole_gid']['og_user_roles_assign_basicgrouprole_' . $gid] = array( '#type' => 'checkbox', '#title' => t('Set default basic group (group limited) role for users who join this group?'), - '#default_value' => variable_get('og_user_roles_assign_basicgrouprole_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_assign_basicgrouprole_' . $gid, 0), '#description' => t('Do you wish to automatically assign a specific "basic group role" to every new subscriber to this group at the time he subscribes to this group? The role is limited to this group. This role assignment can be be removed by the groups\' admin(s)'), ); $form['og_user_roles_basicgrouprole_gid']['og_user_roles_basicgrouprole_value_' . $gid] = array( '#type' => 'select', '#title' => t('Role to use as a basic group role'), '#options' => $roles, - '#default_value' => variable_get('og_user_roles_basicgrouprole_value_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_basicgrouprole_value_' . $gid, 0), '#description' => t('Select the role you wish to use as the "basic group role" for every new subscriber to this group.'), ); $form['#submit'] += array('og_user_roles_basicgrouprole_form_submit' => array($form_id, &$form)); @@ -3233,7 +3293,8 @@ $group_types = og_get_types('group'); foreach ($group_types as $type) { // Get list of assignable group roles for this group type - $role_ids = variable_get("og_user_roles_roles_{$type}", array()); + $group_info = variable_get('og_user_roles_group_'. $type, array()); + $role_ids = $group_info['roles']; $all_roles = user_roles(); foreach ($role_ids as $rid => $checked) { if ($checked != 0) { @@ -3257,7 +3318,7 @@ $form['og_user_roles_logo']['og_user_roles_logo_' . $gid] = array( '#type' => 'textfield', '#title' => t('Location of group logo?'), - '#default_value' => variable_get('og_user_roles_logo_' . $gid, ''), + '#default_value' => og_user_roles_variable_get('og_user_roles_logo_' . $gid, ''), '#description' => t('Enter either the local file path or the remote URL for the image to be used as the logo for this group. Enter one of the following formats: http://www.yoursite.com/yourlogo.gif (for remote file) or files/yourlogo.gif (for local file). You can attach the file you wish to use to this group using File attachments section below, then supply local path here once the file is uploaded (attached). Your logo image must not exceed these size dimensions: Width (in pixels): ' . variable_get('og_user_roles_logo_width', '135') . 'px Height (in pixels): ' . variable_get('og_user_roles_logo_height', '113') . 'px'), ); $form['#validate'] += array('og_user_roles_logo_form_validate' => array($form_id, &$form)); @@ -3276,13 +3337,13 @@ $form['og_user_roles_links_gid']['og_user_roles_links_content_' . $gid] = array( '#type' => 'checkbox', '#title' => t('Display the Create content link?'), - '#default_value' => variable_get('og_user_roles_links_content_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_links_content_' . $gid, 0), '#description' => t('Do you wish to display the OGUR Create content link on this group\'s menu?'), ); $form['og_user_roles_links_gid']['og_user_roles_links_remove_' . $gid] = array( '#type' => 'checkbox', '#title' => t('Remove the default Create links?'), - '#default_value' => variable_get('og_user_roles_links_remove_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_links_remove_' . $gid, 0), '#description' => t('Do you wish to remove the default OG Create content links on this group\'s menu?'), ); $form['#submit'] += array('og_user_roles_links_form_submit' => array($form_id, &$form)); @@ -3301,7 +3362,7 @@ $form['og_user_roles_nopublic_gid']['og_user_roles_assign_nopublic_' . $gid] = array( '#type' => 'checkbox', '#title' => t('Do not allow public posts in this group?'), - '#default_value' => variable_get('og_user_roles_assign_nopublic_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_assign_nopublic_' . $gid, 0), '#description' => t('Do you wish to disallow public postings from this group?'), ); $form['#submit'] += array('og_user_roles_nopublic_form_submit' => array($form_id, &$form)); @@ -3321,19 +3382,19 @@ $form['og_user_roles_regcode_gid']['og_user_roles_assign_regcode_' . $gid] = array( '#type' => 'checkbox', '#title' => t('Set registration codes to allow users to join this group?'), - '#default_value' => variable_get('og_user_roles_assign_regcode_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_assign_regcode_' . $gid, 0), '#description' => t('Do you wish to enter registration codes that will allow new subscribers to bypass admin approval and join this group?'), ); $form['og_user_roles_regcode_gid']['og_user_roles_delete_regcode_' . $gid] = array( '#type' => 'checkbox', '#title' => t('Delete registration code after it is used?'), - '#default_value' => variable_get('og_user_roles_delete_regcode_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_delete_regcode_' . $gid, 0), '#description' => t('Do you want to delete each individual registration code after it is used to successfully subscribe a user to the group?'), ); $form['og_user_roles_regcode_gid']['og_user_roles_regcode_value_' . $gid] = array( '#type' => 'textarea', '#title' => t('Registration codes for allowing users to subscribe to this group without admin approval'), - '#default_value' => variable_get('og_user_roles_regcode_value_' . $gid, ''), + '#default_value' => og_user_roles_variable_get('og_user_roles_regcode_value_' . $gid, ''), '#cols' => 50, '#rows' => 2, '#description' => t('Specify here the registration codes which will allow users who enter them to subscribe to this moderated group without being manually approved by the group administrator. Structure your entries like this: @@ -3345,14 +3406,14 @@ $form['og_user_roles_regcode_gid']['og_user_roles_assign_regcoderole_' . $gid] = array( '#type' => 'checkbox', '#title' => t('Set default basic group (group limited) role for users who join this group using this registration code?'), - '#default_value' => variable_get('og_user_roles_assign_regcoderole_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_assign_regcoderole_' . $gid, 0), '#description' => t('Do you wish to automatically assign a specific "registration code group role" to new subscribers to this group who use this registration code to subscribe to this group? The role is limited to this group. This role assignment can be be removed by the groups\' admin(s)'), ); $form['og_user_roles_regcode_gid']['og_user_roles_regcoderole_value_' . $gid] = array( '#type' => 'select', '#title' => t('Role to assign'), '#options' => $roles, - '#default_value' => variable_get('og_user_roles_regcoderole_value_' . $gid, 0), + '#default_value' => og_user_roles_variable_get('og_user_roles_regcoderole_value_' . $gid, 0), '#description' => t('Select the role you wish to use as the "registration code group role" for every new subscriber who subscribes to this group using one of the registration codes above.'), ); } @@ -3377,12 +3438,12 @@ function og_user_roles_basicgrouprole_form_submit($form_id, $form_values) { $gid = arg(1); - variable_set('og_user_roles_assign_basicgrouprole_' . $gid, $form_values['og_user_roles_assign_basicgrouprole_' . $gid]); - variable_set('og_user_roles_basicgrouprole_value_' . $gid, $form_values['og_user_roles_basicgrouprole_value_' . $gid]); + og_user_roles_variable_set('og_user_roles_assign_basicgrouprole_' . $gid, $form_values['og_user_roles_assign_basicgrouprole_' . $gid]); + og_user_roles_variable_set('og_user_roles_basicgrouprole_value_' . $gid, $form_values['og_user_roles_basicgrouprole_value_' . $gid]); } function og_user_roles_logo_form_submit($form_id, $form_values) { $gid = arg(1); - variable_set('og_user_roles_logo_' . $gid, $form_values['og_user_roles_logo_' . $gid]); + og_user_roles_variable_set('og_user_roles_logo_' . $gid, $form_values['og_user_roles_logo_' . $gid]); } /* * Here we want to make sure that the submitted logo does not exceed size restrictions. @@ -3402,20 +3463,20 @@ } function og_user_roles_links_form_submit($form_id, $form_values) { $gid = arg(1); - variable_set('og_user_roles_links_content_' . $gid, $form_values['og_user_roles_links_content_' . $gid]); - variable_set('og_user_roles_links_remove_' . $gid, $form_values['og_user_roles_links_remove_' . $gid]); + og_user_roles_variable_set('og_user_roles_links_content_' . $gid, $form_values['og_user_roles_links_content_' . $gid]); + og_user_roles_variable_set('og_user_roles_links_remove_' . $gid, $form_values['og_user_roles_links_remove_' . $gid]); } function og_user_roles_nopublic_form_submit($form_id, $form_values) { $gid = arg(1); - variable_set('og_user_roles_assign_nopublic_' . $gid, $form_values['og_user_roles_assign_nopublic_' . $gid]); + og_user_roles_variable_set('og_user_roles_assign_nopublic_' . $gid, $form_values['og_user_roles_assign_nopublic_' . $gid]); } function og_user_roles_regcode_form_submit($form_id, $form_values) { $gid = arg(1); - variable_set('og_user_roles_assign_regcode_' . $gid, $form_values['og_user_roles_assign_regcode_' . $gid]); - variable_set('og_user_roles_delete_regcode_' . $gid, $form_values['og_user_roles_delete_regcode_' . $gid]); - variable_set('og_user_roles_regcode_value_' . $gid, $form_values['og_user_roles_regcode_value_' . $gid]); - variable_set('og_user_roles_assign_regcoderole_' . $gid, $form_values['og_user_roles_assign_regcoderole_' . $gid]); - variable_set('og_user_roles_regcoderole_value_' . $gid, $form_values['og_user_roles_regcoderole_value_' . $gid]); + og_user_roles_variable_set('og_user_roles_assign_regcode_' . $gid, $form_values['og_user_roles_assign_regcode_' . $gid]); + og_user_roles_variable_set('og_user_roles_delete_regcode_' . $gid, $form_values['og_user_roles_delete_regcode_' . $gid]); + og_user_roles_variable_set('og_user_roles_regcode_value_' . $gid, $form_values['og_user_roles_regcode_value_' . $gid]); + og_user_roles_variable_set('og_user_roles_assign_regcoderole_' . $gid, $form_values['og_user_roles_assign_regcoderole_' . $gid]); + og_user_roles_variable_set('og_user_roles_regcoderole_value_' . $gid, $form_values['og_user_roles_regcoderole_value_' . $gid]); } /* * Here we want to make sure that the submitted regcode value is not duplicated in another group. @@ -3534,7 +3595,7 @@ * $group is an object containing the group node */ function og_user_roles_og_create_links($group) { - if (variable_get('og_user_roles_links_content_' . $group->nid, 0) == 1) { + if (og_user_roles_variable_get('og_user_roles_links_content_' . $group->nid, 0) == 1) { $links[] = l(t('Create content'), "node/ognodeadd", array('title' => t('Add new content in this group.')), "gids[]=$group->nid"); return $links; } @@ -3547,7 +3608,7 @@ * Optionally remove create_ links. */ function og_user_roles_og_link_alter(&$links, $group_node) { - if (variable_get('og_user_roles_links_remove_' . $group_node->nid, 0) == 1) { + if (og_user_roles_variable_get('og_user_roles_links_remove_' . $group_node->nid, 0) == 1) { foreach($links as $key => $value) { if(substr($key,0,7) == 'create_') { unset($links["$key"]); @@ -3578,7 +3639,7 @@ $subscription = og_user_roles_og_status($node); if ($subscription == 'none') { if ($user->uid) { - if (variable_get('og_user_roles_assign_regcode_gid', 0) == 1 && variable_get('og_user_roles_assign_regcode_' . $node->nid, 0) == 1 ) { + if (variable_get('og_user_roles_assign_regcode_gid', 0) == 1 && og_user_roles_variable_get('og_user_roles_assign_regcode_' . $node->nid, 0) == 1 ) { $block = array('subject' => t('Register Codes'), 'content' => l('Enter your registration code', 'og/regcode')); } } @@ -3587,7 +3648,7 @@ break; case 1: if ($node = og_get_group_context()) { - if ($logo = variable_get('og_user_roles_logo_' . $node->nid, '')) { + if ($logo = og_user_roles_variable_get('og_user_roles_logo_' . $node->nid, '')) { // $width = variable_get('og_user_roles_logo_width', '135'); // $height = variable_get('og_user_roles_logo_height', '113'); // $attributes = array('width' => $width, 'height' => $height); @@ -3612,7 +3673,7 @@ * if in moderation. */ function og_user_roles_og_block_details($group) { - if ($group->og_selective == OG_MODERATED && variable_get('og_user_roles_assign_regcode_gid', 0) == 1 && variable_get('og_user_roles_assign_regcode_' . $group->nid, '') == 1) { + if ($group->og_selective == OG_MODERATED && variable_get('og_user_roles_assign_regcode_gid', 0) == 1 && og_user_roles_variable_get('og_user_roles_assign_regcode_' . $group->nid, '') == 1) { $links[] = l(t('Enter registration code'), "og/regcode", array('title' => t('Subscribe to this group using a registration code.'))); } $oldblock = og_og_block_details($group); @@ -3673,11 +3734,11 @@ $return = og_save_subscription($gid, $user->uid, array('is_active' => 1)); // as per http://drupal.org/node/156224 drupal_set_message(t('Subscription request to ' . l($title, 'node/'. $gid) . ' approved.')); // Delete this registration code if 'delete_regcode' is set - if (variable_get('og_user_roles_delete_regcode_' . $gid, 0) == 1) og_user_roles_delete_regcode($gid, $form_values['og_user_roles_regcode']); + if (og_user_roles_variable_get('og_user_roles_delete_regcode_' . $gid, 0) == 1) og_user_roles_delete_regcode($gid, $form_values['og_user_roles_regcode']); // Places all new registration code group subscribers into default regcode role. - if (variable_get('og_user_roles_assign_regcoderole_' . $gid, 0)) { // check to see if this variable exists - if (variable_get('og_user_roles_assign_regcode_gid', 0) == 1 && variable_get('og_user_roles_assign_regcoderole_' . $gid, 0) == 1 ) { - $rid = variable_get('og_user_roles_regcoderole_value_' . $gid, 0); + if (og_user_roles_variable_get('og_user_roles_assign_regcoderole_' . $gid, 0)) { // check to see if this variable exists + if (variable_get('og_user_roles_assign_regcode_gid', 0) == 1 && og_user_roles_variable_get('og_user_roles_assign_regcoderole_' . $gid, 0) == 1 ) { + $rid = og_user_roles_variable_get('og_user_roles_regcoderole_value_' . $gid, 0); og_user_roles_role_join($user->uid, $rid, $gid); // assign user to group role in that group } } @@ -3690,7 +3751,7 @@ function og_user_roles_delete_regcode($gid, $regcode) { // Get the array of registration codes for this $gid - $group_array = explode(',', variable_get('og_user_roles_regcode_value_' . $gid, '')); + $group_array = explode(',', og_user_roles_variable_get('og_user_roles_regcode_value_' . $gid, '')); // Create new array that contains all codes for this one. foreach ($group_array as $item) { if ($item != $regcode) { @@ -3700,7 +3761,7 @@ // Implode the new array $new = implode(",", $new_array); // Write the new value. - variable_set('og_user_roles_regcode_value_' . $gid, $new); + og_user_roles_variable_set('og_user_roles_regcode_value_' . $gid, $new); } /** @@ -3916,5 +3977,17 @@ } } - -?> + +function og_user_roles_variable_get($name, $default) { + $value = db_result(db_query("SELECT value FROM {og_user_roles_variable} WHERE name = '%s'", $name)); + return isset($value) ? unserialize($value) : $default; +} + +function og_user_roles_variable_set($name, $value) { + og_user_roles_variable_del($name); + db_query("INSERT INTO {og_user_roles_variable} (name, value) VALUES ('%s', '%s')", $name, serialize($value)); +} + +function og_user_roles_variable_del($name) { + db_query("DELETE FROM {og_user_roles_variable} WHERE name = '%s'", $name); +}