コード例 #1
0
 /**
  * Show the form for editing the specific courses a user can access based on what level that they have access to.
  * @param PageBuilder $page The page rendering object.
  * @param Array $levelDetails The list of level details
  */
 private function showMembershipMappingLevels_specificLevel($page, $levelDetails)
 {
     // Show a nice summary of what level is being edited.
     printf('<div id="wpcw_member_level_name_title">%s</div>', sprintf(__('Editing permissions for <b>%s</b> level with <b>%s</b>:', 'wp_courseware'), $levelDetails['name'], $this->extensionName));
     // Get a list of course IDs that exist
     $courses = WPCW_courses_getCourseList(false);
     // Get list of courses already associated with level.
     $courseListInDB = $this->getCourseAccessListForLevel($levelDetails['id']);
     // Create the summary URL to return
     $summaryURL = admin_url('admin.php?page=' . $this->extensionID);
     // Update form...
     $form = new FormBuilder('wpcw_member_levels_edit');
     $form->setSubmitLabel(__('Save Changes', 'wp_courseware'));
     // Create list of courses using checkboxes (max of 2 columns)
     $elem = new FormElement('level_courses', __('Courses user can access at this level', 'wp_courseware'), false);
     $elem->setTypeAsCheckboxList($courses);
     $elem->checkboxListCols = 2;
     $form->addFormElement($elem);
     // Normally would check for errors too, but there's not a lot to check here.
     if ($form->formSubmitted()) {
         if ($form->formValid()) {
             $mapplingList = $form->getValue('level_courses');
             global $wpdb, $wpcwdb;
             $wpdb->show_errors();
             // Remove all previous level mappings (as some will have been removed)
             $wpdb->query($wpdb->prepare("\n\t\t\t\t\t\tDELETE \n\t\t\t\t\t\tFROM {$wpcwdb->map_member_levels} \n\t\t\t\t\t\tWHERE member_level_id = %s\n\t\t\t\t\t", $levelDetails['id']));
             // Add all of the new mappings the user has chosen.
             if ($mapplingList && count($mapplingList) > 0) {
                 foreach ($mapplingList as $courseID => $itemState) {
                     $wpdb->query($wpdb->prepare("\n\t\t\t\t\t\t\t\tINSERT INTO {$wpcwdb->map_member_levels} \n\t\t\t\t\t\t\t\t(course_id, member_level_id)  \n\t\t\t\t\t\t\t\tVALUES (%d, %s)\n\t\t\t\t\t\t\t", $courseID, $levelDetails['id']));
                 }
             }
             // Show a success message.
             $page->showMessage(__('Level and course permissions successfully updated.', 'wp_courseware') . '<br/><br/>' . sprintf(__('Want to return to the <a href="%s">Course Access Settings summary</a>?', 'wp_courseware'), $summaryURL));
         }
         // if ($form->formValid())
     } else {
         $form->setDefaultValues(array('level_courses' => $courseListInDB));
     }
     // Show the form
     echo $form->toString();
     printf('<a href="%s" class="button-secondary">%s</a>', $summaryURL, __('&laquo; Return to Course Access Settings summary', 'wp_courseware'));
 }
コード例 #2
0
ファイル: utils_easyform.inc.php プロジェクト: NClaus/Ambrose
 /**
  * Convert an array of details into a form element.
  * @param String $fieldName The name of the form element
  * @param Array $fieldDetails The list of details for the form element.
  */
 protected function createElementObject($fieldName, $fieldDetails)
 {
     // Extract fields
     $label = $this->formObj->getArrayValue($fieldDetails, 'label');
     $type = $this->formObj->getArrayValue($fieldDetails, 'type');
     // Required 'true' or true are valid
     $required = $this->formObj->getArrayValue($fieldDetails, 'required');
     $required = $required == 'true' || $required == '1';
     // Start creating form element if anything other than a break.
     $elem = false;
     if ($type != 'break') {
         $elem = new FormElement($fieldName, $label, $required);
     }
     // Handle specific types
     switch ($type) {
         // Text Area
         case 'textarea':
             $rows = $this->formObj->getArrayValue($fieldDetails, 'rows') + 0;
             if ($rows == 0) {
                 $rows = 5;
             }
             $elem->setTypeAsTextArea($rows, 70);
             break;
             // Select/Dropdown
         // Select/Dropdown
         case 'select':
             $options = false;
             if (isset($fieldDetails['data']) && is_array($fieldDetails['data'])) {
                 $options = $fieldDetails['data'];
             }
             $elem->setTypeAsComboBox($options);
             break;
             // Radio Buttons
         // Radio Buttons
         case 'radio':
             $options = false;
             if (isset($fieldDetails['data']) && is_array($fieldDetails['data'])) {
                 $options = $fieldDetails['data'];
             }
             $elem->setTypeAsRadioButtons($options);
             break;
             // Checkbox
         // Checkbox
         case 'checkbox':
             $label = false;
             if (isset($fieldDetails['extralabel'])) {
                 $label = $fieldDetails['extralabel'];
             }
             $elem->setTypeAsCheckbox($label);
             break;
             // Checkbox List
         // Checkbox List
         case 'checkboxlist':
             $options = false;
             if (isset($fieldDetails['data']) && is_array($fieldDetails['data'])) {
                 $options = $fieldDetails['data'];
             }
             $elem->setTypeAsCheckboxList($options);
             break;
             // Merged Fields - process each sub element
         // Merged Fields - process each sub element
         case 'merge':
             $elementList = array();
             if (!empty($fieldDetails['merge'])) {
                 foreach ($fieldDetails['merge'] as $fieldName => $fieldDetails) {
                     $elementList[] = $this->createElementObject($fieldName, $fieldDetails);
                 }
             }
             $elem->setTypeAsMergedElements($elementList);
             break;
             // File upload
         // File upload
         case 'uploadfile':
             $elem->setTypeAsUploadFile($this->formObj->getArrayValue($fieldDetails, 'show_existing'), $this->formObj->getArrayValue($fieldDetails, 'valid_if_value'));
             break;
             // Custom HTML
         // Custom HTML
         case 'custom':
             $elem->setTypeAsCustom($this->formObj->getArrayValue($fieldDetails, 'html'));
             break;
             // Hidden field
         // Hidden field
         case 'hidden':
             $elem->setTypeAsHidden();
             break;
             // Section break
         // Section break
         case 'break':
             $this->formObj->addBreak($fieldName, $this->formObj->getArrayValue($fieldDetails, 'html'));
             break;
             // Text box
         // Text box
         default:
             break;
     }
     // Add optional fields
     if ($type != 'break') {
         // Element description
         if ($desc = $this->formObj->getArrayValue($fieldDetails, 'desc')) {
             $elem->description = $desc;
         }
         // Extra CSS
         if ($cssclass = $this->formObj->getArrayValue($fieldDetails, 'cssclass')) {
             $elem->cssclass = $cssclass;
         }
         // Add extra HTML if provided.
         $extraHTML = $this->formObj->getArrayValue($fieldDetails, 'extrahtml');
         if ($extraHTML) {
             $elem->afterFormElementHTML = $extraHTML;
         }
         // Add custom error message if there is one
         $elem->errorMessage = $this->formObj->getArrayValue($fieldDetails, 'errormsg');
         // Validation rules
         if (isset($fieldDetails['validate']) && is_array($fieldDetails['validate'])) {
             // Is it a custom function? If so, get the function name.
             if ($this->formObj->getArrayValue($fieldDetails['validate'], 'type') == 'function') {
                 $elem->validationFn = $this->formObj->getArrayValue($fieldDetails['validate'], 'fname');
                 $elem->errorMessage = $this->formObj->getArrayValue($fieldDetails['validate'], 'error');
             } else {
                 $elem->setValidationRules($fieldDetails['validate']);
             }
         }
         // See if there are any suffix items? If so, parse them.
         // See wiki for documentation on how to structure this.
         if (!empty($fieldDetails['suffix_subitems'])) {
             $suffixItems = array();
             // suffix_subitems contains a list of 'position' => array(fieldName => fieldDetails)
             foreach ($fieldDetails['suffix_subitems'] as $position => $elementDetails) {
                 $suffixItems[$position] = array();
                 // Need to process each field now we know the position.
                 foreach ($elementDetails as $fieldName => $fieldDetails) {
                     // Add the position of this item (in order), with the object for this element.
                     $suffixItems[$position][] = $this->createElementObject($fieldName, $fieldDetails);
                 }
             }
             // Update the form element with the subitems
             $elem->setSuffixItems($suffixItems);
         }
     }
     return $elem;
 }
コード例 #3
0
ファイル: utils_easyform.inc.php プロジェクト: nerdhaus/avse
 /**
  * Convert an array of details into a form element.
  * @param String $fieldName The name of the form element
  * @param Array $fieldDetails The list of details for the form element.
  */
 protected function createElementObject($fieldName, $fieldDetails)
 {
     // Extract fields
     $label = $this->formObj->getArrayValue($fieldDetails, 'label');
     $type = $this->formObj->getArrayValue($fieldDetails, 'type');
     // Required 'true' or true are valid
     $required = $this->formObj->getArrayValue($fieldDetails, 'required');
     $required = $required == 'true' || $required == '1';
     // Start creating form element if anything other than a break.
     $elem = false;
     if ($type != 'break') {
         $elem = new FormElement($fieldName, $label, $required);
     }
     // Handle specific types
     switch ($type) {
         // Text Area
         case 'textarea':
             $rows = $this->formObj->getArrayValue($fieldDetails, 'rows') + 0;
             if ($rows == 0) {
                 $rows = 5;
             }
             $elem->setTypeAsTextArea($rows, 70);
             break;
             // Select/Dropdown
         // Select/Dropdown
         case 'select':
             $options = false;
             if (isset($fieldDetails['data']) && is_array($fieldDetails['data'])) {
                 $options = $fieldDetails['data'];
             }
             $elem->setTypeAsComboBox($options);
             break;
             // Radio Buttons
         // Radio Buttons
         case 'radio':
             $options = false;
             if (isset($fieldDetails['data']) && is_array($fieldDetails['data'])) {
                 $options = $fieldDetails['data'];
             }
             $elem->setTypeAsRadioButtons($options);
             break;
             // Checkbox
         // Checkbox
         case 'checkbox':
             $label = false;
             if (isset($fieldDetails['extralabel'])) {
                 $label = $fieldDetails['extralabel'];
             }
             $elem->setTypeAsCheckbox($label);
             break;
             // Checkbox List
         // Checkbox List
         case 'checkboxlist':
             $options = false;
             if (isset($fieldDetails['data']) && is_array($fieldDetails['data'])) {
                 $options = $fieldDetails['data'];
             }
             $elem->setTypeAsCheckboxList($options);
             break;
             // Merged Fields - process each sub element
         // Merged Fields - process each sub element
         case 'merge':
             $elementList = array();
             if (!empty($fieldDetails['merge'])) {
                 foreach ($fieldDetails['merge'] as $fieldName => $fieldDetails) {
                     $elementList[] = $this->createElementObject($fieldName, $fieldDetails);
                 }
             }
             $elem->setTypeAsMergedElements($elementList);
             break;
             // Custom HTML
         // Custom HTML
         case 'custom':
             $elem->setTypeAsCustom($this->formObj->getArrayValue($fieldDetails, 'html'));
             break;
             // Hidden field
         // Hidden field
         case 'hidden':
             $elem->setTypeAsHidden();
             break;
             // Section break
         // Section break
         case 'break':
             $this->formObj->addBreak($fieldName, $this->formObj->getArrayValue($fieldDetails, 'html'));
             break;
             // Text box
         // Text box
         default:
             break;
     }
     // Add optional fields
     if ($type != 'break') {
         // Element description
         if ($desc = $this->formObj->getArrayValue($fieldDetails, 'desc')) {
             $elem->description = $desc;
         }
         // Extra CSS
         if ($cssclass = $this->formObj->getArrayValue($fieldDetails, 'cssclass')) {
             $elem->cssclass = $cssclass;
         }
         // Add extra HTML if provided.
         $extraHTML = $this->formObj->getArrayValue($fieldDetails, 'extrahtml');
         if ($extraHTML) {
             $elem->afterFormElementHTML = $extraHTML;
         }
         // Validation rules
         if (isset($fieldDetails['validate']) && is_array($fieldDetails['validate'])) {
             // Is it a custom function? If so, get the function name.
             if ($this->formObj->getArrayValue($fieldDetails['validate'], 'type') == 'function') {
                 $elem->validationFn = $this->formObj->getArrayValue($fieldDetails['validate'], 'fname');
                 $elem->errorMessage = $this->formObj->getArrayValue($fieldDetails['validate'], 'error');
             } else {
                 $elem->setValidationRules($fieldDetails['validate']);
             }
         }
     }
     return $elem;
 }