コード例 #1
0
ファイル: admin-post-type.php プロジェクト: hemangsk/TCB
/**
 * Adds meta box with additional advert information
 * 
 * @uses Adverts
 * @uses Adverts_Form
 * @see add_meta_box()
 * 
 * @param WP_Post $post
 * @since 0.1
 * @return void
 */
function adverts_data_box_content($post)
{
    wp_nonce_field(plugin_basename(__FILE__), 'product_price_box_content_nonce');
    $exclude = array("_adverts_account", "advert_category", "post_title", "gallery", "post_content");
    // Load form data
    $form = new Adverts_Form();
    $form->load(Adverts::instance()->get("form"));
    // Get list of fields from post meta table
    $bind = array();
    foreach ($form->get_fields(array("exclude" => $exclude)) as $f) {
        $bind[$f["name"]] = get_post_meta($post->ID, $f["name"], true);
    }
    // Bind data
    $form->bind($bind);
    // Validate if message 21 will be displayed, that is if form already failed
    // validation in adverts_save_post_validator() function
    if (isset($_GET['message']) && $_GET['message'] == 21) {
        $form->validate();
    }
    ?>

    <style type="text/css">
        .adverts-data-table th.adverts-data-header {
            font-size:1.4em; 
            font-weight: normal; 
            font-variant: small-caps; 
            padding: 20px 10px 0px 0px
        }
        
        .adverts-data-table input[type="text"],
        .adverts-data-table textarea {
            width: 99%;
        }
    </style>
    
    <table class="form-table adverts-data-table">
	<tbody>
        <?php 
    foreach ($form->get_fields(array("exclude" => $exclude)) as $field) {
        ?>
            <tr class="<?php 
        if (isset($field["error"]) && !empty($field["error"])) {
            ?>
form-invalid<?php 
        }
        ?>
">
            <?php 
        if ($field["type"] == "adverts_field_header") {
            ?>
                <th scope="row" colspan="2" class="adverts-data-header">
                    <?php 
            esc_html_e($field["label"]);
            ?>
                </th>
            <?php 
        } else {
            ?>
                <th scope="row">
                    <label for="<?php 
            esc_attr_e($field["name"]);
            ?>
"><?php 
            esc_html_e($field["label"]);
            ?>
</label></th>
                <td>
                    <?php 
            call_user_func(adverts_field_get_renderer($field), $field);
            ?>
                    <?php 
            if (isset($field["error"]) && !empty($field["error"])) {
                ?>
                    <ul>
                        <?php 
                foreach ($field["error"] as $error) {
                    ?>
                        <li><?php 
                    esc_html_e($error);
                    ?>
</li>
                        <?php 
                }
                ?>
                    </ul>
                    <?php 
            }
            ?>
                </td>
            <?php 
        }
        ?>
            </tr>
        <?php 
    }
    ?>
			
        </tbody>
    </table>
  
  <?php 
}
コード例 #2
0
ファイル: shortcodes.php プロジェクト: hemangsk/TCB
/**
 * Generates HTML for ad edit form (in [adverts_manage] shortcode)
 * 
 * @param array $atts Shortcode attributes
 * @since 0.1
 * @return void 
 * @access private
 */
function _adverts_manage_edit($atts)
{
    wp_enqueue_style('adverts-frontend');
    wp_enqueue_style('adverts-icons');
    wp_enqueue_style('adverts-icons-animate');
    wp_enqueue_script('adverts-frontend');
    wp_enqueue_script('adverts-auto-numeric');
    extract(shortcode_atts(array('name' => 'default', 'moderate' => false), $atts));
    include_once ADVERTS_PATH . 'includes/class-html.php';
    include_once ADVERTS_PATH . 'includes/class-form.php';
    $form = new Adverts_Form(Adverts::instance()->get("form"));
    $valid = null;
    $error = array();
    $info = array();
    $bind = array();
    $action = apply_filters('adverts_action', adverts_request("_adverts_action", ""), __FUNCTION__);
    $post_id = adverts_request("advert_id", null);
    // $post_id hijack attempt protection here!
    $post = get_post($post_id);
    if ($post === null) {
        $error[] = __("Ad does not exist.", "adverts");
        adverts_flash(array("error" => $error));
        return;
    }
    if ($post->post_author != get_current_user_id()) {
        $error[] = __("You do not own this Ad.", "adverts");
        adverts_flash(array("error" => $error));
        return;
    }
    $slist = apply_filters("adverts_sh_manage_list_statuses", array('publish', 'expired', 'pending', 'draft'));
    if (!in_array($post->post_status, $slist)) {
        $error[] = sprintf(__("Incorrect post status [%s].", "adverts"), $post->post_status);
        adverts_flash(array("error" => $error));
        return;
    }
    foreach ($form->get_fields() as $f) {
        $bind[$f["name"]] = get_post_meta($post_id, $f["name"], true);
    }
    $bind["_adverts_action"] = "update";
    $bind["_post_id"] = $post_id;
    $bind["post_title"] = $post->post_title;
    $bind["post_content"] = $post->post_content;
    $bind["advert_category"] = array();
    $terms = get_the_terms($post_id, 'advert_category');
    if (is_array($terms)) {
        foreach ($terms as $term) {
            $bind["advert_category"][] = $term->term_id;
        }
    }
    $form->bind($bind);
    if ($action == "update") {
        $form->bind((array) stripslashes_deep($_POST));
        $valid = $form->validate();
        if ($valid) {
            $post_id = Adverts_Post::save($form, $post_id);
            if (is_wp_error($post_id)) {
                $error[] = $post_id->get_error_message();
            } else {
                $info[] = __("Post has been updated.", "adverts");
            }
        } else {
            $error[] = __("Cannot update. There are errors in your form.", "adverts");
        }
    }
    $adverts_flash = array("error" => $error, "info" => $info);
    // adverts/templates/manage-edit.php
    include apply_filters("adverts_template_load", ADVERTS_PATH . 'templates/manage-edit.php');
}
コード例 #3
0
ファイル: functions.php プロジェクト: hemangsk/TCB
/**
 * Layout for forms generated by Adverts in wp-admin panel.
 * 
 * @param Adverts_Form $form
 * @param array $options
 * @since 0.1
 * @return void
 */
function adverts_form_layout_config(Adverts_Form $form, $options = array())
{
    $a = array();
    ?>

    <?php 
    foreach ($form->get_fields(array("type" => array("adverts_field_hidden"))) as $field) {
        ?>
    <?php 
        call_user_func(adverts_field_get_renderer($field), $field);
        ?>
    <?php 
    }
    ?>
    
    <?php 
    foreach ($form->get_fields($options) as $field) {
        ?>
        <?php 
        if ($field["type"] == "adverts_field_header") {
            ?>
        <tr valign="top">
            <th colspan="2" style="padding-bottom:0px">
                <h3 style="border-bottom:1px solid #dfdfdf; line-height:1.4em; font-size:15px"><?php 
            esc_html_e($field["title"]);
            ?>
</h3>
            </th>
        </tr>
        <?php 
        } else {
            ?>
        <tr valign="top" class="<?php 
            if (adverts_field_has_errors($field)) {
                ?>
adverts-field-error<?php 
            }
            ?>
">
            <th scope="row">
                <label <?php 
            if (!in_array($field['type'], $a)) {
                ?>
for="<?php 
                esc_attr_e($field["name"]);
                ?>
"<?php 
            }
            ?>
>
                    <?php 
            esc_html_e($field["label"]);
            ?>
                    <?php 
            if (adverts_field_has_validator($field, "is_required")) {
                ?>
<span class="adverts-red">&nbsp;*</span><?php 
            }
            ?>
                </label>
            </th>
            <td class="">
                
                <?php 
            switch ($field["type"]) {
                case "adverts_field_text":
                    $field["class"] = (isset($field["class"]) ? $field["class"] : '') . ' regular-text';
                    break;
            }
            ?>
                
                <?php 
            call_user_func(adverts_field_get_renderer($field), $field);
            ?>

                <?php 
            if (isset($field['hint']) && !empty($field['hint'])) {
                ?>
                <br/><span class="description"><?php 
                echo $field['hint'];
                ?>
</span>
                <?php 
            }
            ?>

                <?php 
            if (adverts_field_has_errors($field)) {
                ?>
                <ul class="updated adverts-error-list">
                    <?php 
                foreach ($field["error"] as $k => $v) {
                    ?>
                    <li><?php 
                    esc_html_e($v);
                    ?>
</li>
                    <?php 
                }
                ?>
                </ul>
                <?php 
            }
            ?>
            </td>
        </tr>
        <?php 
        }
        ?>
    <?php 
    }
    ?>

<?php 
}
コード例 #4
0
ファイル: class-post.php プロジェクト: hemangsk/TCB
 /**
  * Saves data in DB
  * 
  * @param Adverts_Form $form
  * @param WP_Post $post
  * @param array $defaults
  */
 public static function save(Adverts_Form $form, $post = null, $init = array())
 {
     if (is_numeric($post)) {
         $post = get_post($post);
     }
     // Change Post GUID using post_guid filter if the post is already saved in DB
     // (otherwise guid will be set automatically)
     if (isset($init["post"]["ID"]) && isset($init["post"]["guid"]) && $init["post"]["guid"] == "") {
         self::$_tmp_guid = get_post_permalink($init["post"]["ID"]);
         add_filter("post_guid", array(__CLASS__, "tmp_guid"));
     }
     $data = array();
     $meta = array();
     $taxo = array();
     // Set default values
     if (isset($init["post"]) && is_array($init["post"])) {
         $data = $init["post"];
     }
     if (isset($init["meta"]) && is_array($init["meta"])) {
         $meta = $init["meta"];
     }
     if (isset($init["taxo"]) && is_array($init["taxo"])) {
         $taxo = $init["taxo"];
     }
     // Merge defaults with data from the Adverts_Form
     foreach ($form->get_fields() as $field) {
         if (property_exists("WP_Post", $field["name"])) {
             $data[$field["name"]] = $field["value"];
         } elseif (taxonomy_exists($field["name"])) {
             $taxo[$field["name"]] = $field["value"];
         } elseif (isset($field["value"])) {
             $meta[$field["name"]] = array("field" => $field, "value" => $field["value"]);
         }
     }
     if ($post && $post->ID > 0) {
         // Post already exists, update only.
         $data["ID"] = $post->ID;
         $post_id = wp_update_post(apply_filters("adverts_update_post", $data));
     } else {
         // Post does not exist, insert it.
         $data["comment_status"] = "closed";
         $post_id = wp_insert_post(apply_filters("adverts_insert_post", $data));
     }
     if (is_wp_error($post_id)) {
         return $post_id;
     }
     // Save meta data values
     $fields = Adverts::instance()->get("form_field");
     foreach ($meta as $key => $data) {
         $field = $data["field"];
         $field_type = $field["type"];
         $value = $data["value"];
         $callback_save = $fields[$field_type]["callback_save"];
         if (is_callable($callback_save)) {
             call_user_func($callback_save, $post_id, $key, $value);
         }
     }
     // Save taxonomies
     foreach ($taxo as $key => $tax) {
         wp_set_post_terms($post_id, $tax, $key);
     }
     if (self::$_tmp_guid) {
         // After save tmp_guid filter is no longer needed, remove it.
         self::$_tmp_guid = null;
         remove_filter("post_guid", array(__CLASS__, "tmp_guid"));
     }
     return $post_id;
 }