/**
 * Adds Listing Limit validator to the Advert form and "Max Listings" and Listing Interval"
 * fields to Pricing configuration form.
 * 
 * This function is applied to "adverts_form_load" filter in Adverts_Form::load()
 * when Advert form is being loaded.
 * 
 * @see Adverts_Form::load()
 * 
 * @param array $form
 * @return array
 */
function limit_listings_form_load($form)
{
    if ($form["name"] == "payment") {
        $form["field"][] = array("name" => "limit_listing_max", "type" => "adverts_field_text", "label" => __("Max Listings", "limit_listings"), "order" => 100, "validator" => array(array("name" => "is_integer")));
        $form["field"][] = array("name" => "limit_listing_interval", "type" => "adverts_field_text", "label" => __("Interval", "limit_listings"), "hint" => __("Number of days in which the listings can be used.", "limit_listing"), "order" => 100, "validator" => array(array("name" => "is_integer")));
    }
    if ($form["name"] == "advert" && !is_admin()) {
        foreach ($form["field"] as $k => $f) {
            if ($f["name"] == "payments_listing_type") {
                if (!isset($f["validator"]) || !is_array($f["validator"])) {
                    $f["validator"] = array();
                }
                adverts_form_add_validator("limit_listings", array("callback" => "limit_listings_validator", "label" => __("Listings Limit", "limit_listings"), "params" => array(), "default_error" => __("You reached maximum postings limit for this listing type.", "limit_listings"), "on_failure" => "break", "validate_empty" => false));
                $f["validator"][] = array("name" => "limit_listings");
                $form["field"][$k] = $f;
            }
        }
    }
    return $form;
}
Esempio n. 2
0
adverts_form_add_field("adverts_field_select", array("renderer" => "adverts_field_select", "callback_save" => "adverts_save_multi", "callback_bind" => "adverts_bind_multi"));
// Register <input type="checkbox" /> input
/** @see adverts_field_checkbox() */
adverts_form_add_field("adverts_field_checkbox", array("renderer" => "adverts_field_checkbox", "callback_save" => "adverts_save_multi", "callback_bind" => "adverts_bind_multi"));
// Register <input type="radio" /> input
/** @see adverts_field_radio() */
adverts_form_add_field("adverts_field_radio", array("renderer" => "adverts_field_radio", "callback_save" => "adverts_save_single", "callback_bind" => "adverts_bind_single"));
// Register custom image upload field
/** @see adverts_field_gallery() */
adverts_form_add_field("adverts_field_gallery", array("renderer" => "adverts_field_gallery", "callback_save" => null, "callback_bind" => null));
// Register <input type="hidden" /> input
/** @see adverts_field_account() */
adverts_form_add_field("adverts_field_account", array("renderer" => "adverts_field_account", "callback_save" => "adverts_save_multi", "callback_bind" => "adverts_bind_multi"));
/* REGISTER FORM FILTERS */
// Register money filter (text input with currency validation)
/** @see adverts_filter_money() */
adverts_form_add_filter("money", array("callback" => "adverts_filter_money"));
/* REGISTER FORM VALIDATORS */
// Register "is required" validator
/** @see adverts_is_required() */
adverts_form_add_validator("is_required", array("callback" => "adverts_is_required", "label" => __("Is Required", "adverts"), "params" => array(), "default_error" => __("Field cannot be empty.", "adverts"), "on_failure" => "break", "validate_empty" => true));
// Register "is email" validator
/** @see adverts_is_email() */
adverts_form_add_validator("is_email", array("callback" => "adverts_is_email", "label" => __("Email", "adverts"), "params" => array(), "default_error" => __("Provided email address is invalid.", "adverts"), "validate_empty" => false));
// Register "is integer" validator
/** @see adverts_is_integer() */
adverts_form_add_validator("is_integer", array("callback" => "adverts_is_integer", "label" => __("Is Integer", "adverts"), "params" => array(), "default_error" => __("Provided value is not an integer.", "adverts"), "validate_empty" => false));
// Register "string length" validator
/** @see adverts_string_length() */
adverts_form_add_validator("string_length", array("callback" => "adverts_string_length", "label" => __("String Length", "adverts"), "params" => array(), "default_error" => __("Incorrect string length.", "adverts"), "message" => array("to_short" => __("Text needs to be at least %min% characters long.", "adverts"), "to_long" => __("Text cannot be longer than %max% characters.", "adverts")), "validate_empty" => false));