Index: coppa.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/coppa/coppa.admin.inc,v retrieving revision 1.1 diff -u -p -r1.1 coppa.admin.inc --- coppa.admin.inc 9 Feb 2009 19:12:26 -0000 1.1 +++ coppa.admin.inc 4 Mar 2009 21:54:45 -0000 @@ -49,11 +49,16 @@ function coppa_info() { */ function coppa_sign() { global $user; + + $form = array( + '#theme' => 'coppa_sign', + ); + $result = db_query("SELECT DISTINCT u.uid, u.name, c.status, pv.value, pv.fid - FROM {users} u, {coppa} c, {profile_fields} pf, profile_values pv + FROM {users} u, {coppa} c, {profile_fields} pf, {profile_values} pv WHERE c.cid=u.uid AND pv.uid = u.uid AND pf.fid = pv.fid AND pf.name = 'profile_dob' AND c.pid = %d", $user->uid); - $form['children'] = array('#tree' => true); + $form['children'] = array('#tree' => TRUE); $weight = 1; while ($r = db_fetch_object($result)) { @@ -96,9 +101,9 @@ function coppa_sign() { /** * Submit handler for coppa_sign. */ -function coppa_sign_submit($form_id, $edit) { +function coppa_sign_submit($form, &$form_state) { global $user; - foreach ($edit['children'] as $cid => $status) { + foreach ($form_state['values']['children'] as $cid => $status) { if ($status['status'] == 1) { $result = db_query("SELECT status FROM {coppa} WHERE pid= %d AND cid= %d", $user->pid, $cid); $r = db_fetch_object($result); @@ -112,30 +117,30 @@ function coppa_sign_submit($form_id, $ed /** * Theme the COPPA sign page/form. */ -function theme_coppa_sign($edit) { +function theme_coppa_sign($form) { $rows = array(); - if (!isset($edit['children'])) { - $output = $edit['message']['#value']; + if (!isset($form['children'])) { + $output = $form['message']['#value']; } else { $header = array(t('User History'), t('Date of Birth'), t('COPPA Status')); - foreach (element_children($edit['children']) as $uid) { + foreach (element_children($form['children']) as $uid) { unset($row); - $row[] = drupal_render($edit['children'][$uid]['tracker']); - $row[] = drupal_render($edit['children'][$uid]['dob']); - unset($edit['children'][$uid]['status']['#title']); - $row[] = drupal_render($edit['children'][$uid]['status']); + $row[] = drupal_render($form['children'][$uid]['tracker']); + $row[] = drupal_render($form['children'][$uid]['dob']); + unset($form['children'][$uid]['status']['#title']); + $row[] = drupal_render($form['children'][$uid]['status']); $rows[] = $row; } $output = theme('table', $header, $rows, array('id' => 'coppa-sign')); $output .= '
'; - $output .= drupal_render($edit['submit']); + $output .= drupal_render($form['submit']); - $output .= drupal_render($edit['form_id']); + $output .= drupal_render($form['form_id']); - $output .= drupal_render($edit['form_token']); + $output .= drupal_render($form['form_token']); } return $output; @@ -147,8 +152,8 @@ function theme_coppa_sign($edit) { function coppa_admin_settings() { $roles = user_roles(TRUE); - $selected = variable_get('coppa_roles', 0); - $selected = unserialize($selected); + $selected = variable_get('coppa_roles', 'a:0:{}'); + // $selected = unserialize($selected); $form['coppa_roles'] = array( '#type' => 'select', @@ -185,18 +190,14 @@ function coppa_admin_settings() { } /** - * Form submission handler for coppa_admin_settings - */ -function coppa_admin_settings_submit($form_id, $edit) { - $coppa_roles = $edit['coppa_roles']; - variable_set('coppa_roles', serialize($coppa_roles)); -} - -/** * Form for admin/coppa/set-parents */ function coppa_set_parents() { - $form['rows'] = array('#tree' => true); + $form = array( + '#theme' => 'coppa_set_parents', + ); + + $form['rows'] = array('#tree' => TRUE); for ($i = 0; $i < COPPA_ADD_ELEMENTS; $i++) { $form['rows'][$i]['parent'] = array( @@ -223,8 +224,8 @@ function coppa_set_parents() { /** * Form validation for coppa_set_parents_submit */ -function coppa_set_parents_validate($form_id, $form) { - foreach ($form['rows'] as $rid => $row) { +function coppa_set_parents_validate($form, &$form_state) { + foreach ($form_state['values']['rows'] as $rid => $row) { if (!empty($row['parent'])) { if (!empty($row['child'])) { // make sure both are valid usernames (is there a better way than user_load?) @@ -275,12 +276,12 @@ function coppa_set_parents_validate($for /** * Form submission handler for coppa/set-parents */ -function coppa_set_parents_submit($form_id, $form) { +function coppa_set_parents_submit($form, &$form_state) { $inserted = array(); // keep track of what we've added to avoid double inserts (we didn't check for that in validate) // form has gone through validation - foreach ($form['rows'] as $rid => $row) { + foreach ($form_state['values']['rows'] as $rid => $row) { if (!empty($row['child']) && !empty($row['parent'])) { $child = user_load(array('name' => $row['child'])); $parent = user_load(array('name' => $row['parent'])); @@ -304,30 +305,30 @@ function coppa_set_parents_submit($form_ /** * Theme for coppa_set_parents to display in tabular format */ -function theme_coppa_set_parents($edit) { +function theme_coppa_set_parents($form) { $rows = array(); $header = array(t('Parent'), t('Child')); - foreach (element_children($edit['rows']) as $r) { + foreach (element_children($form['rows']) as $r) { unset($row); - unset($edit['rows'][$r]['parent']['#title']); - $row[] = drupal_render($edit['rows'][$r]['parent']); + unset($form['rows'][$r]['parent']['#title']); + $row[] = drupal_render($form['rows'][$r]['parent']); - unset($edit['rows'][$r]['child']['#title']); - $row[] = drupal_render($edit['rows'][$r]['child']); + unset($form['rows'][$r]['child']['#title']); + $row[] = drupal_render($form['rows'][$r]['child']); $rows[] = $row; } $output = theme('table', $header, $rows, array('id' => 'coppa-set-parents')); $output .= '
'; - $output .= drupal_render($edit['submit']); + $output .= drupal_render($form['submit']); - $output .= drupal_render($edit['form_id']); + $output .= drupal_render($form['form_id']); - $output .= drupal_render($edit['form_token']); + $output .= drupal_render($form['form_token']); return $output; } @@ -336,24 +337,26 @@ function theme_coppa_set_parents($edit) * form handler for coppa/manage-relationships */ function coppa_manage_relationships() { - $form = array(); + $form = array( + '#theme' => 'coppa_manage_relationships', + ); $date_format = 'n j Y'; // m/d/y $result = db_query("SELECT cu.uid as cid, cu.name as cname, pu.uid as pid, pu.name as pname, pv.value as dob, c.status FROM {users} cu JOIN {coppa} c ON cu.uid = c.cid JOIN {users} pu ON pu.uid = c.pid - LEFT JOIN profile_values pv ON pv.uid = c.cid - LEFT JOIN profile_fields pf ON pv.fid = pf.fid"); + LEFT JOIN {profile_values} pv ON pv.uid = c.cid + LEFT JOIN {profile_fields} pf ON pv.fid = pf.fid"); while ($r = db_fetch_object($result)) { $r->dob = unserialize($r->dob); if (!isset($form[$r->pid])) { - $form[$r->pid] = array('#tree' => true); + $form[$r->pid] = array('#tree' => TRUE); } if (!isset($form[$r->pid][$r->cid])) { - $form[$r->pid][$r->cid] = array('#tree' => true); + $form[$r->pid][$r->cid] = array('#tree' => TRUE); } $form[$r->pid][$r->cid]['parent'] = array('#type' => 'markup', '#value' => l($r->pname, 'user/'. $r->pid)); @@ -396,9 +399,9 @@ function coppa_manage_relationships() { /** * form submission routine to remove user relationships */ -function coppa_manage_relationships_submit($form_id, $form) { +function coppa_manage_relationships_submit($form, &$form_state) { - foreach ($form as $pid => $child) { + foreach ($form_state['values'] as $pid => $child) { if (is_numeric($pid)) { foreach ($child as $cid => $remove) { if ($remove['remove']) { @@ -412,29 +415,29 @@ function coppa_manage_relationships_subm /** * theming function for coppa_manage_relationships */ -function theme_coppa_manage_relationships($edit) { +function theme_coppa_manage_relationships($form) { $rows = array(); $header = array(t('Parent'), t('Child'), t('Date of Birth'), t('COPPA Status'), t('Delete Relationship')); - foreach (element_children($edit) as $parent) { - foreach (element_children($edit[$parent]) as $child) { + foreach (element_children($form) as $parent) { + foreach (element_children($form[$parent]) as $child) { unset($row); - $row[] = drupal_render($edit[$parent][$child]['parent']); - $row[] = drupal_render($edit[$parent][$child]['child']); - $row[] = drupal_render($edit[$parent][$child]['dob']); - $row[] = drupal_render($edit[$parent][$child]['status']); - $row[] = drupal_render($edit[$parent][$child]['remove']); + $row[] = drupal_render($form[$parent][$child]['parent']); + $row[] = drupal_render($form[$parent][$child]['child']); + $row[] = drupal_render($form[$parent][$child]['dob']); + $row[] = drupal_render($form[$parent][$child]['status']); + $row[] = drupal_render($form[$parent][$child]['remove']); $rows[] = $row; } } $output = theme('table', $header, $rows, array('id' => 'coppa-manage-relationships')); $output .= '
'; - $output .= drupal_render($edit['submit']); + $output .= drupal_render($form['submit']); - $output .= drupal_render($edit['form_id']); + $output .= drupal_render($form['form_id']); - $output .= drupal_render($edit['form_token']); + $output .= drupal_render($form['form_token']); return $output; } Index: coppa.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/coppa/coppa.module,v retrieving revision 1.5 diff -u -p -r1.5 coppa.module --- coppa.module 9 Feb 2009 19:12:26 -0000 1.5 +++ coppa.module 4 Mar 2009 21:54:45 -0000 @@ -18,6 +18,13 @@ function coppa_help($path, $arg) { } /** + * Implementation of hook_perm() + **/ +function coppa_perm() { + return array('can sign coppa compliance'); +} + +/** * Implementation of hook_menu(). */ function coppa_menu() { @@ -69,7 +76,7 @@ function coppa_menu() { 'title' => 'Sign COPPA compliance', 'page callback' => 'drupal_get_form', 'page arguments' => array('coppa_sign'), - 'access arguments' => array('access content'), + 'access arguments' => array('can sign coppa compliance'), 'file' => 'coppa.admin.inc', ); @@ -109,14 +116,14 @@ function coppa_user($op, &$edit, &$accou } /** - * returns true if the user requires coppa compliance to login (or is indeterminate) - * returns false otherwise + * returns TRUE if the user requires coppa compliance to login (or is indeterminate) + * returns FALSE otherwise */ function coppa_needed($uid) { $date_format = 'n j Y'; // m/d/y if (!empty($uid)) { $coppa_roles = variable_get('coppa_roles', 0); - $coppa_roles = unserialize($coppa_roles); + // $coppa_roles = unserialize($coppa_roles); if (!is_array($coppa_roles)) { $coppa_roles = array(); @@ -128,13 +135,13 @@ function coppa_needed($uid) { $user_coppa = array_intersect($user_roles, $coppa_roles); // compute the intersection of the user's roles and coppa roles if (count($user_coppa) == 0) { - return false; // no coppa roles set or no coppa roles for this user + return FALSE; // no coppa roles set or no coppa roles for this user } else { $dob = coppa_get_dob($uid); if (empty($dob)) { // no dob set (or corrupt) for this user assume coppa required - return true; + return TRUE; } else { $temp = date($date_format); @@ -149,11 +156,11 @@ function coppa_needed($uid) { } elseif ((int)$now['year'] - (int)$dob['year'] == COPPA_AGE) { if ((int)$now['month'] - (int)$dob['month'] > 0) { // check month - return false; + return FALSE; } else if ((int)$now['month'] - (int)$dob['month'] == 0) { if ((int)$now['day'] - (int)$dob['day'] >= 0) { // check day - return false; + return FALSE; } else { return !coppa_is_compliant($uid); @@ -168,28 +175,28 @@ function coppa_needed($uid) { } else { // non-authenticated user - return false; + return FALSE; } } /** - * returns true if the user is compliant - * returns false otherwise or if no entry in the coppa table. + * returns TRUE if the user is compliant + * returns FALSE otherwise or if no entry in the coppa table. */ function coppa_is_compliant($uid) { $result = db_query('SELECT status FROM {coppa} WHERE cid = %d', $uid); $r = db_fetch_array($result); if ($r) { if ($r['status'] == 0) { - return false; + return FALSE; } else { - return true; + return TRUE; } } else { // no entry in the coppa table for this user - return false; + return FALSE; } } @@ -198,7 +205,7 @@ function coppa_is_compliant($uid) { * if a profile_dob entry is not found for this user then an empty array is returned */ function coppa_get_dob($uid) { - $result = db_query("SELECT pv.value FROM {profile_values} pv, profile_fields pf, users u WHERE pf.name = 'profile_dob' AND pf.fid = pv.fid AND pv.uid = u.uid AND u.uid = %d", $uid); + $result = db_query("SELECT pv.value FROM {profile_values} pv, {profile_fields} pf, {users} u WHERE pf.name = 'profile_dob' AND pf.fid = pv.fid AND pv.uid = u.uid AND u.uid = %d", $uid); $r = db_fetch_array($result); if ($r) { return unserialize($r['value']); @@ -214,11 +221,15 @@ function coppa_get_dob($uid) { function coppa_theme() { return array( 'coppa_sign' => array( - 'arguments' => array('edit' => NULL), + 'arguments' => array('form' => NULL), 'file' => 'coppa.admin.inc', ), 'coppa_set_parents' => array( - 'arguments' => array('edit' => NULL), + 'arguments' => array('form' => NULL), + 'file' => 'coppa.admin.inc', + ), + 'coppa_manage_relationships' => array( + 'arguments' => array('form' => NULL), 'file' => 'coppa.admin.inc', ), );