function pf_groupfilter() { //gets current user info global $current_user; get_currentuserinfo(); //form validation script $message = ""; if (isset($_POST['Submit']) && $_POST['WhichForm'] == 'groupfilter') { //set new validator object for this form (see http://www.html-form-guide.com/php-form/php-form-validation.html for syntax) $validator = new FormValidator(); //required $validator->addValidation("Group", "req", "No group selected"); $validator->addValidation("Group", "num", "Error: groupID invalid"); //tests what was sumbitted if ($validator->ValidateForm()) { //add POST to db update_user_meta($current_user->ID, 'pf_currentgroup', $_POST['Group']); } else { $error_hash = $validator->GetErrors(); foreach ($error_hash as $inpname => $inp_err) { $message .= "{$inp_err}<br>\n"; } } } //gets current group $current_group = get_user_meta($current_user->ID, 'pf_currentgroup', true); //gets groups for current user $groups = pf_getgroups(); if (!$groups) { pf_newgroup("New Group"); $groups = pf_getgroups(); } //output echo "<form name='groupfilter' method='POST' action='' accept-charset='UTF-8'>"; echo "Select your group: "; echo "<select name='Group'>"; foreach ($groups as $group) { echo "<option value=" . $group->ID; if ($group->ID == $current_group) { echo " selected='selected'"; } echo ">" . $group->group_name . "</option>"; } echo "</select>"; echo "<input type='hidden' name='WhichForm' value='groupfilter'>"; echo "<input type='submit' name='Submit' value='Update'>"; echo "<a href='?page_id=144'>Edit Groups</a>"; echo "</form>"; echo $message; }
function pf_students() { global $wpdb; global $table_prefix; if (!isset($wpdb->pf_students)) { $wpdb->pf_students = $table_prefix . 'pf_students'; } //gets current user info global $current_user; get_currentuserinfo(); //gets current group $current_group = get_user_meta($current_user->ID, 'pf_currentgroup', true); //gets groups for current user $groups = pf_getgroups(); $message = ""; //add students if (isset($_POST['Submit']) && $_POST['WhichForm'] == 'addstudents') { $validator = new FormValidator(); $student->ID = "new"; require "validation_studentdata.php"; if ($validator->ValidateForm()) { // add the new student $newstudent = array($_POST['firstname_new'], $_POST['lastname_new'], $_POST['pass_new'], $_POST['email_new'], $_POST['group_new']); pf_addstudenttodb($newstudent); $message = "New student added."; } else { $error_hash = $validator->GetErrors(); foreach ($error_hash as $inpname => $inp_err) { $message .= "{$inp_err}<br>\n"; } } } //import students from csv file if (isset($_POST['Submit']) && $_POST['WhichForm'] == 'csvimport') { ini_set('auto_detect_line_endings', true); //check the file is a .csv file $file = $_FILES['csv_file']; $allowedExtensions = array("csv"); if ($file['error'] == UPLOAD_ERR_OK) { if (!in_array(end(explode(".", strtolower($file['name']))), $allowedExtensions)) { $message = "Invalid file type! File must be a .csv file."; } else { $arr_rows = file($_FILES['csv_file']['tmp_name']); if (is_array($arr_rows)) { $validator = new FormValidator(); foreach ($arr_rows as $row) { //this is messy but is to make the validation script work // split into values: first, last, pass, email $arr_values = split(",", $row); $_POST['firstname_new'] = $arr_values[0]; $_POST['lastname_new'] = $arr_values[1]; $_POST['pass_new'] = trim($arr_values[2]); $_POST['email_new'] = trim($arr_values[3]); $_POST['group_new'] = $current_group; $student->ID = "new"; require "validation_studentdata.php"; } if ($validator->ValidateForm()) { //update db foreach ($arr_rows as $row) { // split into values: first, last, pass, email $arr_values = split(",", $row); // add the new student $newstudent = array($arr_values[0], $arr_values[1], trim($arr_values[2]), trim($arr_values[3]), $current_group); pf_addstudenttodb($newstudent); } $message = "Import Success"; } else { $error_hash = $validator->GetErrors(); foreach ($error_hash as $inpname => $inp_err) { $message .= "{$inp_err}<br>\n"; } } } } } } //edit students if (isset($_POST['Submit']) && $_POST['WhichForm'] == 'editstudents') { $students = $wpdb->get_results($wpdb->prepare("SELECT ID FROM {$wpdb->pf_students} WHERE groupID={$current_group} AND student_status=0")); $validator = new FormValidator(); foreach ($students as $student) { require "validation_studentdata.php"; } if ($validator->ValidateForm()) { //update db foreach ($students as $student) { // update student $studentdata = array($_POST['firstname_' . $student->ID], $_POST['lastname_' . $student->ID], $_POST['pass_' . $student->ID], $_POST['email_' . $student->ID], $_POST['group_' . $student->ID], $student->ID); pf_updatestudentindb($studentdata); if ($_POST['delete_' . $student->ID]) { //this doesn't delete student from db, just changes status to 1 $studentstatusdata = array(1, $student->ID); pf_changestudentstatusindb($studentstatusdata); } } $message .= "Changes Saved"; } else { $error_hash = $validator->GetErrors(); foreach ($error_hash as $inpname => $inp_err) { $message .= "{$inp_err}<br>\n"; } } } //gets student info $students = $wpdb->get_results($wpdb->prepare("SELECT student_firstname, student_lastname, student_pass, student_email, ID FROM {$wpdb->pf_students} WHERE groupID={$current_group} AND student_status=0")); echo "<font color=red>" . $message . "</font>"; echo "<table>"; //headings of table echo "<tr>\n <th>First Name</th>\n <th>Last Name</th>\n <th>Password</th>\n <th>Email</th>\n <th>Group</th>\n <th>Delete Student</th>\n </tr>"; if ($students) { echo "<form name='editstudents' method='POST' action='' accept-charset='UTF-8'>"; foreach ($students as $student) { echo "<tr>"; echo "<td><input type='text' name='firstname_" . $student->ID . "' size='12' maxlength='60' value='" . $student->student_firstname . "'></td>"; echo "<td><input type='text' name='lastname_" . $student->ID . "' size='12' maxlength='60' value='" . $student->student_lastname . "'></td>"; echo "<td><input type='text' name='pass_" . $student->ID . "' size='12' maxlength='60' value='" . $student->student_pass . "'></td>"; echo "<td><input type='text' name='email_" . $student->ID . "' size='12' maxlength='60' value='" . $student->student_email . "'></td>"; echo "<td><select name='group_" . $student->ID . "'>"; foreach ($groups as $group) { echo "<option value=" . $group->ID; if ($group->ID == $current_group) { echo " selected='selected'"; } echo ">" . $group->group_name . "</option>"; } echo "</select></td>"; echo "<td><input type='checkbox' name='delete_" . $student->ID . "' value=true></td>"; echo "</tr>"; } echo "<tr><td colspan=6 align=center>\n <input type='hidden' name='WhichForm' value='editstudents'>\n <input type='submit' name='Submit' value='Save Changes'>\n <br><br> \n </td></tr>\n </form>"; } echo "<form name='addstudents' method='POST' action='' accept-charset='UTF-8'>"; //blank row echo "<tr>"; echo "<td><input type='text' name='firstname_new' size='12' maxlength='60' value=''></td>"; echo "<td><input type='text' name='lastname_new' size='12' maxlength='60' value=''></td>"; echo "<td><input type='text' name='pass_new' size='12' maxlength='60' value=''></td>"; echo "<td><input type='text' name='email_new' size='12' maxlength='60' value=''></td>"; echo "<td><select name='group_new'>"; foreach ($groups as $group) { echo "<option value=" . $group->ID; if ($group->ID == $current_group) { echo " selected='selected'"; } echo ">" . $group->group_name . "</option>"; } echo "</select></td>"; echo "<td> "; echo "<input type='hidden' name='WhichForm' value='addstudents'>"; echo "<input type='submit' name='Submit' value='Add Student'>"; echo "</td>"; echo "</tr>"; echo "</form>"; echo "<tr><td colspan=6 align=center>"; echo "<form name=csvimport' method='POST' action='' enctype='multipart/form-data'>"; echo "<b>Upload a class roster</b><br>\n <ol>\n <li>Export your class roster to a .csv (comma separated) file.</li>\n <li>Edit your class roster so that you just have 4 columns of data: First Name, Last Name, Password, Email.</li>\n <li>Check that your names are only letters, email addresses are valid etc...</li>\n <input type='hidden' name='WhichForm' value='csvimport'> \n <li><input type='file' name='csv_file' /> </li> \n <li><input type='submit' name='Submit' value='Upload' /></li>\n <ol>\n </form>\n </td>\n </tr>\n </table>"; }
function pf_editgroups() { global $wpdb; global $table_prefix; if (!isset($wpdb->pf_groups)) { $wpdb->pf_groups = $table_prefix . 'pf_groups'; } //gets current user info global $current_user; get_currentuserinfo(); //gets groups for current user $groups = pf_getgroups(); $archived_groups = pf_getarchivedgroups(); //form validation script $message = ""; if (isset($_POST['Submit']) && $_POST['WhichForm'] == 'archivegroups') { //set new validator object for this form (see http://www.html-form-guide.com/php-form/php-form-validation.html for syntax) $validator = new FormValidator(); foreach ($groups as $group) { $validator->addValidation("status_" . $group->ID, "req", "Error: No status selected for group " . $group->group_name); $validator->addValidation("status_" . $group->ID, "num", "Error: group_status invalid for group " . $group->group_name); $validator->addValidation("group_" . $group->ID, "req", "Error: Name left blank (was " . $group->group_name . ")"); $validator->addValidation("group_" . $group->ID, "maxlen=60", "Error: Name too long - max 60 (was " . $group->group_name . ")"); $validator->addValidation("group_" . $group->ID, "alnum_s", "Error: Only letters, numbers and spaces allowed (was " . $group->group_name . ")"); } foreach ($archived_groups as $group) { $validator->addValidation("status_" . $group->ID, "req", "Error: No status selected for group " . $group->group_name); $validator->addValidation("status_" . $group->ID, "num", "Error: group_status invalid for group " . $group->group_name); $validator->addValidation("group_" . $group->ID, "req", "Error: Name left blank (was " . $group->group_name . ")"); $validator->addValidation("group_" . $group->ID, "maxlen=60", "Error: Name too long - max 60 (was " . $group->group_name . ")"); $validator->addValidation("group_" . $group->ID, "alnum_s", "Error: Only letters, numbers and spaces allowed (was " . $group->group_name . ")"); } if ($validator->ValidateForm()) { //update db foreach ($groups as $group) { $wpdb->query($wpdb->prepare("UPDATE {$wpdb->pf_groups} SET group_status=" . $_POST['status_' . $group->ID] . " WHERE ID={$group->ID}")); $wpdb->query($wpdb->prepare("UPDATE {$wpdb->pf_groups} SET group_name='" . $_POST['group_' . $group->ID] . "' WHERE ID={$group->ID}")); } foreach ($archived_groups as $group) { $wpdb->query($wpdb->prepare("UPDATE {$wpdb->pf_groups} SET group_status=" . $_POST['status_' . $group->ID] . " WHERE ID={$group->ID}")); $wpdb->query($wpdb->prepare("UPDATE {$wpdb->pf_groups} SET group_name='" . $_POST['group_' . $group->ID] . "' WHERE ID={$group->ID}")); if ($_POST['delete_' . $group->ID]) { // don't delete group, just change status to 2 $wpdb->query($wpdb->prepare("UPDATE {$wpdb->pf_groups} SET group_status=2 WHERE ID={$group->ID}")); $message .= "You just deleted: " . $_POST['group_' . $group->ID] . "<br>"; } } $message .= "Saved"; } else { $error_hash = $validator->GetErrors(); foreach ($error_hash as $inpname => $inp_err) { $message .= "{$inp_err}<br>\n"; } } } //output //gets groups for current user $groups = pf_getgroups(); $archived_groups = pf_getarchivedgroups(); echo "<font color=red>" . $message . "</font>"; echo "<table>"; //headings of table echo "<tr>\n <th>Group</th>\n <th>Status</th>\n <th>Delete Group</th>\n </tr>"; echo "<form name='archivegroups' method='POST' action='' accept-charset='UTF-8'>"; foreach ($groups as $group) { echo "<tr>"; echo "<td><input type='text' name='group_" . $group->ID . "' size='12' maxlength='60' value='" . $group->group_name . "'></td>"; echo "<td><select name='status_" . $group->ID . "'>"; echo " <option value=0 selected='selected'>Active</option>"; echo " <option value=1>Archived</option>"; echo " </select></td>"; echo "<td>Must archive first</td>"; echo "</tr>"; } foreach ($archived_groups as $group) { echo "<tr>"; echo "<td><input type='text' name='group_" . $group->ID . "' size='12' maxlength='60' value='" . $group->group_name . "'></td>"; echo "<td><select name='status_" . $group->ID . "'>"; echo " <option value=0>Active</option>"; echo " <option value=1 selected='selected'>Archived</option>"; echo " </select></td>"; echo "<td><input type='checkbox' name='delete_" . $group->ID . "' value=true></td>"; echo "</tr>"; } echo "<tr><td colspan=3>\n <input type='hidden' name='WhichForm' value='archivegroups'>\n <input type='submit' name='Submit' value='Save Changes'>\n </td></tr>"; echo "</form>\n </table>"; }