devdaily home | apple | java | perl | unix | directory | blog

What this is

This file is included in the DevDaily.com "PHP Source Code Warehouse" project. The intent of this project is to help you "Learn PHP by Example" TM.

Other links

The source code

<?php
require_once('../wp-config.php');
/**
** get_option_widget()
** parameters:
** option_result - result set containing option_id, option_name, option_type,
**                 option_value, option_description, option_admin_level
** editable      - flag to determine whether the returned widget will be editable
**/
function get_option_widget($option_result, $editable, $between)
{
    global $wpdb, $tableoptionvalues;
    $disabled = $editable ? '' : 'disabled';

    switch ($option_result->option_type) {
        case 1: // integer
        case 3: // string
        case 8: // float
        case 6:  // range -- treat same as integer for now!
            if (($option_result->option_type == 1) || ($option_result->option_type == 1)) {
                $width = 6;
            } else {
                $width = $option_result->option_width;
            }
            return <<<TEXTINPUT
                    <label for="$option_result->option_name">$option_result->option_name</label>$between
                    <input type="text" name="$option_result->option_name" size="$width" value="$option_result->option_value" $disabled/>
TEXTINPUT;
            //break;

        case 2: // boolean
            $true_selected = ($option_result->option_value == '1') ? 'selected' : '';
            $false_selected = ($option_result->option_value == '0') ? 'selected' : '';
            return <<<BOOLSELECT
                    <label for="$option_result->option_name">$option_result->option_name</label>$between
                    <select name="$option_result->option_name" $disabled>
                    <option value="1" $true_selected>true</option>
                    <option value="0" $false_selected>false</option>
                    </select>
BOOLSELECT;
            //break;
            
        case 5: // select
            $ret = <<<SELECT
                    <label for="$option_result->option_name">$option_result->option_name</label>$between
                    <select name="$option_result->option_name" id="$option_result->option_name" $disabled>
SELECT;

            $select = $wpdb->get_results("SELECT optionvalue, optionvalue_desc "
                                         ."FROM $tableoptionvalues "
                                         ."WHERE option_id = $option_result->option_id "
                                         ."ORDER BY optionvalue_seq");
            if ($select) {
                foreach($select as $option) {
                    $ret .= '<option value="'.$option->optionvalue.'"';
                    //error_log("comparing [$option_result->option_value] == [$option->optionvalue]");
                    if ($option_result->option_value == $option->optionvalue) {
                        $ret .=' selected';
                    }
                    $ret .= ">$option->optionvalue_desc</option>\n";
                }
            }
            $ret .= '</select>';
            return $ret;
            //break;
        
        case 7: // SQL select
            // first get the sql to run
            $sql = $wpdb->get_var("SELECT optionvalue FROM $tableoptionvalues WHERE option_id = $option_result->option_id");
            if (!$sql) {
                return $option_result->option_name . $editable;
            }

            // now we may need to do table name substitution
           eval("include('../wp-config.php');\$sql = \"$sql\";");

            $ret = <<<SELECT
                    <label for="$option_result->option_name">$option_result->option_name</label>$between
                    <select name="$option_result->option_name" $disabled>
SELECT;
	
            $select = $wpdb->get_results("$sql");
            if ($select) {
                foreach($select as $option) {
                    $ret .= '<option value="'.$option->value.'"';
                    //error_log("comparing [$option_result->option_value] == [$option->optionvalue]");
                    if ($option_result->option_value == $option->value) {
                        $ret .=' selected';
                    }
                    $ret .= ">$option->label</option>\n";
                }
            }
            $ret .= '</select>';
            return $ret;
            //break;

    } // end switch
    return $option_result->option_name . $editable;
} // end function get_option_widget


function validate_option($option, $name, $val) {
    global $wpdb, $tableoptionvalues;
    $msg = '';
    switch ($option->option_type) {
        case 6: // range
            // get range
            $range = $wpdb->get_row("SELECT optionvalue_max, optionvalue_min FROM $tableoptionvalues WHERE option_id = $option->option_id");
            if ($range) {
                if (($val < $range->optionvalue_min) || ($val > $range->optionvalue_max)) {
                    $msg = "$name is outside the valid range ($range->optionvalue_min - $range->optionvalue_max). ";
                }
            }
    } // end switch
    return $msg;
} // end validate_option
    
?>




Copyright 1998-2008 Alvin Alexander
All Rights Reserved.
 
devdaily.com is based in louisville, kentucky, and this web site is hosted by godaddy.com