/** * 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; }
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));