Esempio n. 1
0
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;
}
Esempio n. 2
0
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>";
}
Esempio n. 3
0
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>";
}