Changeset 785512
- Timestamp:
- 10/09/2013 07:31:44 PM (12 years ago)
- Location:
- gravity-forms-upload-rules/trunk
- Files:
-
- 2 edited
-
gforms-uploadrules.php (modified) (1 diff)
-
readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
gravity-forms-upload-rules/trunk/gforms-uploadrules.php
r785508 r785512 217 217 218 218 GFUploadRules::actions(); 219 =======220 <?php221 222 class GFUploadRules {223 224 protected static $version = '1.0';225 226 public function localize() {227 228 $locale = apply_filters( 'plugin_locale', get_locale(), 'gforms_uprules' );229 load_textdomain( 'gforms_uprules', WP_LANG_DIR . "/gforms_uprules/gforms_uprules-$locale.mo" );230 load_plugin_textdomain( 'gforms_uprules', null, basename( plugin_dir_path( __FILE__ ) ) . 'lang' );231 }232 233 public function register_scripts() {234 wp_register_script('gform_uprules_plugin_form_editor', plugins_url('/js/form_editor.js', __FILE__), array('jquery'), self::$version, true );235 }236 237 public function editor_js() {238 239 if ( ! in_array( 'gform_uprules_plugin_form_editor', wp_print_scripts(array('gform_uprules_plugin_form_editor')) ) ) :240 ?>241 <script type="text/javascript" id="gform_uprules_plugin_form_editor">242 <?php include plugin_dir_path( __FILE__ ) . 'js/form_editor.js'; ?>243 </script>244 <?php245 endif;246 }247 248 public function dimension_field_label_minwidth() {249 250 $locale = apply_filters( 'plugin_locale', get_locale(), 'gforms_uprules' );251 $label_minwidth_by_locale = apply_filters( 'gforms_uprules_dimension_field_label_minwidth', array( 'en_US' => 50 ) );252 253 if ( isset( $label_minwidth_by_locale[ $locale ] ) )254 return $label_minwidth_by_locale[ $locale ];255 256 //in case somebody has messed things up257 return 50;258 }259 260 public function field_settings( $position ) {261 if ( 200 != $position )262 return;263 264 $label_minwidth = self::dimension_field_label_minwidth();265 ?>266 <li class="uprules_filesize_setting field_setting">267 <label for="field_uprules_filesize">268 <?php _e("Filesize Limit", "gforms_uprules"); ?>269 <?php gform_tooltip("form_field_uprules_filesize"); ?>270 </label>271 <input type="text" id="field_uprules_filesize" style="text-align: right;" onkeyup="SetFieldProperty('uprules_filesize_limit', this.value);" size="10" />272 <select id="field_uprules_filesize_dim" onchange="SetFieldProperty('uprules_filesize_dim', jQuery(this).val() );"><option value="kb">KB</option><option value="mb">MB</option></select>273 </li>274 <li class="uprules_dimensions_setting field_setting">275 <label>276 <?php _e("Image dimensions", "gforms_uprules"); ?>277 278 <select id="field_uprules_dims_ruletype" onchange="SetFieldProperty('uprules_dims_ruletype', jQuery(this).val() );">279 <option value="" style="text-align: center"><?php _e("– Select –", "gforms_uprules"); ?></option>280 <option value="exact"><?php _e("Exact", "gforms_uprules"); ?></option>281 <option value="conditional"><?php _e("Conditional", "gforms_uprules"); ?></option>282 </select>283 284 <?php gform_tooltip("form_field_uprules_dimensions"); ?>285 286 </label>287 288 <div class="uprules_dims_fields_exact" style="display: none;">289 <div>290 <label for="uprules_dims_exact_width" class="inline" style="min-width: <?php echo esc_attr( $label_minwidth ); ?>px; margin-right: 10px;">291 <?php _e("Width", "gforms_uprules"); ?>292 </label>293 <input type="text" id="field_uprules_dims_exact_width" style="text-align: center;" onkeyup="SetFieldProperty('uprules_dims_exact_width', this.value);" size="6" />294 </div>295 <div>296 <label for="uprules_dims_exact_height" class="inline" style="min-width: <?php echo esc_attr( $label_minwidth ); ?>px; margin-right: 10px;">297 <?php _e("Height", "gforms_uprules"); ?>298 </label>299 <input type="text" id="field_uprules_dims_exact_height" style="text-align: center;" onkeyup="SetFieldProperty('uprules_dims_exact_height', this.value);" size="6" />300 </div>301 </div> <!--//-- .uprules_dims_fields_exact -->302 303 <div class="uprules_dims_fields_conditional" style="display: none;">304 <div class="uprules_dims_fields_conditional_min">305 <label for="uprules_dims_minwidth" class="inline" style="min-width: <?php echo esc_attr( $label_minwidth ); ?>px; margin-right: 10px;">306 <?php _e("Min", "gforms_uprules"); ?>307 </label>308 <input type="text" id="field_uprules_dims_minwidth" style="text-align: center;" onkeyup="SetFieldProperty('uprules_dims_minwidth', this.value);" size="6" placeholder="<?php esc_attr_e("Width", "gforms_uprules"); ?>" />309 ×310 <input type="text" id="field_uprules_dims_minheight" style="text-align: center;" onkeyup="SetFieldProperty('uprules_dims_minheight', this.value);" size="6" placeholder="<?php esc_attr_e("Height", "gforms_uprules"); ?>" />311 </div>312 <div class="uprules_dims_fields_conditional_max">313 <label for="uprules_dims_maxwidth" class="inline" style="min-width: <?php echo esc_attr( $label_minwidth ); ?>px; margin-right: 10px;">314 <?php _e("Max", "gforms_uprules"); ?>315 </label>316 <input type="text" id="field_uprules_dims_maxwidth" style="text-align: center;" onkeyup="SetFieldProperty('uprules_dims_maxwidth', this.value);" size="6" placeholder="<?php esc_attr_e("Width", "gforms_uprules"); ?>" />317 ×318 <input type="text" id="field_uprules_dims_maxheight" style="text-align: center;" onkeyup="SetFieldProperty('uprules_dims_maxheight', this.value);" size="6" placeholder="<?php esc_attr_e("Height", "gforms_uprules"); ?>" />319 </div>320 </div> <!--//-- .uprules_dims_fields_conditional -->321 322 </li>323 <?php324 }325 326 public function field_validation( $valid, $value, $form, $field ) {327 if ( ! empty( $_FILES ) && $valid['is_valid'] && in_array( RGFormsModel::get_input_type($field), array( 'fileupload', 'post_image' ) ) ) {328 329 $form_id = $form['id'];330 $input_name = 'input_' . $field['id'];331 $fileinfo = RGFormsModel::get_temp_filename( $form_id, $input_name );332 $temp_filepath = RGFormsModel::get_upload_path($form_id) . "/tmp/" . $fileinfo["temp_filename"];333 334 if ( isset( $_FILES[$input_name] ) && !empty( $_FILES[$input_name] ) ) {335 $bytes = $_FILES[$input_name]['size'];336 $dims = @getimagesize( $_FILES[$input_name]['tmp_name'] );337 }338 elseif ( file_exists( $temp_filepath ) ) {339 $bytes = filesize( $temp_filepath );340 $dims = @getimagesize( $temp_filepath );341 }342 else return $valid;343 344 345 //validate filesize346 if ( isset( $field['uprules_filesize_limit'] ) ) {347 $multipliers = array(348 'kb' => 1024,349 'mb' => 1024 * 1024350 );351 $max_filesize_user = intval( $field['uprules_filesize_limit'] );352 $bytes_multiplier = $multipliers[$field['uprules_filesize_dim']];353 $max_filesize_bytes = $max_filesize_user * $bytes_multiplier;354 }355 356 if ( isset( $bytes ) && $max_filesize_user > 0 && $max_filesize_bytes < $bytes ) {357 $valid['is_valid'] = false;358 $valid['message'] = sprintf( __( 'Max file upload size (%s) exceeded.', 'gravityforms' ), size_format( $max_filesize_bytes, 2 ) );359 }360 //validate image dimensions361 if ( $valid['is_valid'] && is_array( $dims ) && isset( $field['uprules_dims_ruletype'] ) && in_array( $field['uprules_dims_ruletype'], array( 'exact', 'conditional' ) ) ) {362 list( $up_width, $up_height ) = $dims;363 $valid = self::validate_image_dimensions( $field, $up_width, $up_height );364 }365 366 if ( ! $valid['is_valid'] )367 unset( RGFormsModel::$uploaded_files[$form_id][$input_name], $_FILES[$input_name] );368 369 }370 return $valid;371 }372 373 public function is_valid_dim( $val ) {374 return (bool)( trim($val) == absint( $val ) && $val > 0 );375 }376 377 public function validate_image_dimensions( $field, $width, $height ) {378 379 $valid = array( 'is_valid' => true, 'message' => '' );380 switch ( $field['uprules_dims_ruletype'] ) {381 case 'exact':382 if (383 isset( $field['uprules_dims_exact_width'] ) && self::is_valid_dim( $field['uprules_dims_exact_width'] ) && trim( $field['uprules_dims_exact_width'] ) != $width384 || isset( $field['uprules_dims_exact_height'] ) && self::is_valid_dim( $field['uprules_dims_exact_height'] ) && trim( $field['uprules_dims_exact_height'] ) != $height385 )386 $valid['is_valid'] = false;387 $valid['message'] = sprintf( __("Only images with dimensions %d×%d allowed.", "gforms_uprules"), $field['uprules_dims_exact_width'], $field['uprules_dims_exact_height'] );388 break;389 case 'conditional':390 $errors = "";391 392 if ( isset( $field['uprules_dims_minwidth'] ) && self::is_valid_dim( $field['uprules_dims_minwidth'] ) && trim( $field['uprules_dims_minwidth'] ) > $width ) {393 $valid['is_valid'] = false;394 $errors .= '<br/>' . sprintf( __("Min width: <b>%dpx</b>", "gforms_uprules"), $field['uprules_dims_minwidth'] );395 }396 if ( isset( $field['uprules_dims_minheight'] ) && self::is_valid_dim( $field['uprules_dims_minheight'] ) && trim( $field['uprules_dims_minheight'] ) > $height ) {397 $valid['is_valid'] = false;398 $errors .= '<br/>' . sprintf( __("Min height: <b>%dpx</b>", "gforms_uprules"), $field['uprules_dims_minheight'] );399 }400 if ( isset( $field['uprules_dims_maxwidth'] ) && self::is_valid_dim( $field['uprules_dims_maxwidth'] ) && trim( $field['uprules_dims_maxwidth'] ) < $width ) {401 $valid['is_valid'] = false;402 $errors .= '<br/>' . sprintf( __("Max width: <b>%dpx</b>", "gforms_uprules"), $field['uprules_dims_maxwidth'] );403 }404 if ( isset( $field['uprules_dims_maxheight'] ) && self::is_valid_dim( $field['uprules_dims_maxheight'] ) && trim( $field['uprules_dims_maxheight'] ) < $height ) {405 $valid['is_valid'] = false;406 $errors .= '<br/>' . sprintf( __("Max height: <b>%dpx</b>", "gforms_uprules"), $field['uprules_dims_maxheight'] );407 }408 409 if ( ! $valid['is_valid'] && ! empty( $errors ) )410 $valid['message'] = __("Image dimension didn't meet following size conditions:", "gforms_uprules") . $errors;411 412 break;413 }414 return $valid;415 }416 417 public function tooltips( $gf_tooltips ) {418 $gf_uprules_tooltips = array(419 'form_field_uprules_filesize' => "<h6>" . __("Filesize Limit", "gforms_uprules") . "</h6>" . __("Enter filesize limit for uploaded file. Exceeding uploads will be rejected with an error.", "gforms_uprules"),420 'form_field_uprules_dimensions' => "<h6>" . __("Image dimensions", "gforms_uprules") . "</h6>" . __("Set validation conditions for uploaded image. Choose between <i>Exact</i> or <i>Conditional</i> validation methods. Empty fields will be not checked against. All values are in <b>pixels</b>. Non-matching images will be rejected with an error.", "gforms_uprules")421 );422 423 return array_merge( $gf_uprules_tooltips, $gf_tooltips );424 }425 426 public function actions() {427 add_filter( 'gform_field_validation', array( __CLASS__, 'field_validation' ), 10, 4 );428 add_action( 'gform_field_advanced_settings', array( __CLASS__, 'field_settings' ), 5 );429 add_action( 'gform_editor_js', array( __CLASS__, 'editor_js' ), 20 );430 add_filter( 'gform_tooltips', array( __CLASS__, 'tooltips' ) );431 add_action( 'admin_init', array( __CLASS__, 'register_scripts' ) );432 add_action( 'init', array( __CLASS__, 'localize' ) );433 }434 435 }436 437 GFUploadRules::actions();438 -
gravity-forms-upload-rules/trunk/readme.txt
r785508 r785512 1 1 2 === Gravity Forms Upload Rules ===3 Contributors: entr4 Donate link: http://zzlatev.com/gravity-forms-upload-limits/#donate5 Tags: gravity-forms upload-rules upload6 Requires at least: 3.07 Tested up to: 3.68 Stable tag: 1.09 License: GPLv2 or later10 License URI: http://www.gnu.org/licenses/gpl-2.0.html11 12 Adds extra upload rules to file/image Gravity Froms upload fields. You will be able to limit upload file size and dimensions of uploaded images.13 14 == Description ==15 16 Gravity Forms is probably the most popular and mature plugin for building and managing custom forms in WordPress.17 18 = Upload Rules =19 This plugin attempts to fill gaps in Gravity Forms upload fields. It enables you to set file size and image size dimensions limitations to your upload fields - both file upload and image upload.20 21 == Installation ==22 23 1. Upload the `gravity-forms-upload-rules` folder to the `/wp-content/plugins/` directory24 2. Make sure you have Gravity Forms plugin installed and activated.25 3. Activate the Gravity Forms Upload Rules plugin through the 'Plugins' menu in WordPress.26 3. You should be able to use the new field settings under Advanced tab of your upload fields in Gravity Forms - Form Edit screens.27 28 == Frequently asked questions ==29 30 Not yet.31 32 == Screenshots ==33 34 1. Plugin settings in Post Image fields under Advanced tab. Filesize limit and Conditional image dimensions.35 2. Plugin settings in Post Image fields under Advanced tab. Filesize limit and Exact image dimensions.36 37 == Changelog ==38 39 = 1.0 =40 41 * Possible fix for those who don't get upload rules fields in their admin form editor42 43 = 0.91 =44 45 * Fixed JS issue causing "Uncaught TypeError" error46 47 = 0.9 =48 * Initial release49 50 == Upgrade notice =========51 2 === Gravity Forms Upload Rules === 52 3 Contributors: entr
Note: See TracChangeset
for help on using the changeset viewer.