| Conditions | 40 | 
| Paths | > 20000 | 
| Total Lines | 328 | 
| Code Lines | 180 | 
| Lines | 12 | 
| Ratio | 3.66 % | 
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php  | 
            ||
| 215 | public function form($instance)  | 
            ||
| 216 |     {
 | 
            ||
| 217 | //widgetform in backend  | 
            ||
| 218 | $instance = wp_parse_args((array)$instance,  | 
            ||
| 219 |             array('title' => '',
 | 
            ||
| 220 | 'post_type' => '',  | 
            ||
| 221 | 'category' => array(),  | 
            ||
| 222 | 'category_title' => '',  | 
            ||
| 223 | 'list_sort' => '',  | 
            ||
| 224 | 'list_order' => '',  | 
            ||
| 225 | 'post_number' => '5',  | 
            ||
| 226 | 'layout' => 'gridview_onehalf',  | 
            ||
| 227 | 'listing_width' => '',  | 
            ||
| 228 | 'add_location_filter' => '1',  | 
            ||
| 229 | 'character_count' => '20',  | 
            ||
| 230 | 'show_featured_only' => '',  | 
            ||
| 231 | 'show_special_only' => '',  | 
            ||
| 232 | 'with_pics_only' => '',  | 
            ||
| 233 | 'with_videos_only' => '',  | 
            ||
| 234 | 'use_viewing_post_type' => ''  | 
            ||
| 235 | )  | 
            ||
| 236 | );  | 
            ||
| 237 | |||
| 238 | $title = strip_tags($instance['title']);  | 
            ||
| 239 | |||
| 240 | $post_type = strip_tags($instance['post_type']);  | 
            ||
| 241 | |||
| 242 | $category = $instance['category'];  | 
            ||
| 243 | |||
| 244 | $category_title = strip_tags($instance['category_title']);  | 
            ||
| 245 | |||
| 246 | $list_sort = strip_tags($instance['list_sort']);  | 
            ||
| 247 | |||
| 248 | $list_order = strip_tags($instance['list_order']);  | 
            ||
| 249 | |||
| 250 | $post_number = strip_tags($instance['post_number']);  | 
            ||
| 251 | |||
| 252 | $layout = strip_tags($instance['layout']);  | 
            ||
| 253 | |||
| 254 | $listing_width = strip_tags($instance['listing_width']);  | 
            ||
| 255 | |||
| 256 | $add_location_filter = strip_tags($instance['add_location_filter']);  | 
            ||
| 257 | |||
| 258 | $character_count = $instance['character_count'];  | 
            ||
| 259 | |||
| 260 | $show_featured_only = isset($instance['show_featured_only']) && $instance['show_featured_only'] ? true : false;  | 
            ||
| 261 | $show_special_only = isset($instance['show_special_only']) && $instance['show_special_only'] ? true : false;  | 
            ||
| 262 | $with_pics_only = isset($instance['with_pics_only']) && $instance['with_pics_only'] ? true : false;  | 
            ||
| 263 | $with_videos_only = isset($instance['with_videos_only']) && $instance['with_videos_only'] ? true : false;  | 
            ||
| 264 | $use_viewing_post_type = isset($instance['use_viewing_post_type']) && $instance['use_viewing_post_type'] ? true : false;  | 
            ||
| 265 | |||
| 266 | ?>  | 
            ||
| 267 | |||
| 268 | <p>  | 
            ||
| 269 |             <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:', 'geodirectory');?>
 | 
            ||
| 270 | <small>(%posttype_singular_label% ,  | 
            ||
| 271 |                     %posttype_plural_label% <?php _e('can be used', 'geodirectory');?>)
 | 
            ||
| 272 | </small>  | 
            ||
| 273 | |||
| 274 |                 <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>"
 | 
            ||
| 275 |                        name="<?php echo $this->get_field_name('title'); ?>" type="text"
 | 
            ||
| 276 | value="<?php echo esc_attr($title); ?>"/>  | 
            ||
| 277 | </label>  | 
            ||
| 278 | </p>  | 
            ||
| 279 | |||
| 280 | <p>  | 
            ||
| 281 | <label  | 
            ||
| 282 |                 for="<?php echo $this->get_field_id('post_type'); ?>"><?php _e('Post Type:', 'geodirectory');?>
 | 
            ||
| 283 | |||
| 284 | <?php $postypes = geodir_get_posttypes();  | 
            ||
| 285 | /**  | 
            ||
| 286 | * Filter the post types to display in widget.  | 
            ||
| 287 | *  | 
            ||
| 288 | * @since 1.0.0  | 
            ||
| 289 | *  | 
            ||
| 290 | * @param array $postypes Post types array.  | 
            ||
| 291 | */  | 
            ||
| 292 | 				$postypes = apply_filters('geodir_post_type_list_in_p_widget', $postypes); ?>
 | 
            ||
| 293 | |||
| 294 |                 <select class="widefat" id="<?php echo $this->get_field_id('post_type'); ?>"
 | 
            ||
| 295 |                         name="<?php echo $this->get_field_name('post_type'); ?>"
 | 
            ||
| 296 | onchange="geodir_change_category_list(this)">  | 
            ||
| 297 | |||
| 298 | View Code Duplication |                     <?php foreach ($postypes as $postypes_obj) { ?>
 | 
            |
| 299 | |||
| 300 |                         <option <?php if ($post_type == $postypes_obj) {
 | 
            ||
| 301 | echo 'selected="selected"';  | 
            ||
| 302 |                         } ?> value="<?php echo $postypes_obj; ?>"><?php $extvalue = explode('_', $postypes_obj);
 | 
            ||
| 303 | echo ucfirst($extvalue[1]); ?></option>  | 
            ||
| 304 | |||
| 305 | <?php } ?>  | 
            ||
| 306 | |||
| 307 | </select>  | 
            ||
| 308 | </label>  | 
            ||
| 309 | </p>  | 
            ||
| 310 | |||
| 311 | |||
| 312 | <p id="post_type_cats">  | 
            ||
| 313 | <label  | 
            ||
| 314 |                 for="<?php echo $this->get_field_id('category'); ?>"><?php _e('Post Category:', 'geodirectory');?>
 | 
            ||
| 315 | |||
| 316 | <?php  | 
            ||
| 317 | |||
| 318 | $post_type = ($post_type != '') ? $post_type : 'gd_place';  | 
            ||
| 319 | |||
| 320 | $all_postypes = geodir_get_posttypes();  | 
            ||
| 321 | |||
| 322 | if (!in_array($post_type, $all_postypes))  | 
            ||
| 323 | $post_type = 'gd_place';  | 
            ||
| 324 | |||
| 325 | $category_taxonomy = geodir_get_taxonomies($post_type);  | 
            ||
| 326 |                 $categories = get_terms($category_taxonomy, array('orderby' => 'count', 'order' => 'DESC'));
 | 
            ||
| 327 | |||
| 328 | ?>  | 
            ||
| 329 | |||
| 330 |                 <select multiple="multiple" class="widefat" name="<?php echo $this->get_field_name('category'); ?>[]"
 | 
            ||
| 331 | onchange="geodir_popular_widget_cat_title(this)">  | 
            ||
| 332 | |||
| 333 |                     <option <?php if (!is_array($category) || (is_array($category) && in_array('0', $category))) {
 | 
            ||
| 334 | echo 'selected="selected"';  | 
            ||
| 335 |                     } ?> value="0"><?php _e('All', 'geodirectory'); ?></option>
 | 
            ||
| 336 |                     <?php foreach ($categories as $category_obj) {
 | 
            ||
| 337 | $selected = '';  | 
            ||
| 338 | if (is_array($category) && in_array($category_obj->term_id, $category))  | 
            ||
| 339 | echo $selected = 'selected="selected"';  | 
            ||
| 340 | |||
| 341 | ?>  | 
            ||
| 342 | |||
| 343 | <option <?php echo $selected; ?>  | 
            ||
| 344 | value="<?php echo $category_obj->term_id; ?>"><?php echo ucfirst($category_obj->name); ?></option>  | 
            ||
| 345 | |||
| 346 | <?php } ?>  | 
            ||
| 347 | |||
| 348 | </select>  | 
            ||
| 349 | |||
| 350 | |||
| 351 |                 <input type="hidden" name="<?php echo $this->get_field_name('category_title'); ?>"
 | 
            ||
| 352 |                        id="<?php echo $this->get_field_id('category_title'); ?>"
 | 
            ||
| 353 |                        value="<?php if ($category_title != '') echo $category_title; else echo __('All', 'geodirectory');?>"/>
 | 
            ||
| 354 | |||
| 355 | </label>  | 
            ||
| 356 | </p>  | 
            ||
| 357 | |||
| 358 | <p>  | 
            ||
| 359 | <label  | 
            ||
| 360 |                 for="<?php echo $this->get_field_id('list_sort'); ?>"><?php _e('Sort by:', 'geodirectory');?>
 | 
            ||
| 361 | |||
| 362 |                 <select class="widefat" id="<?php echo $this->get_field_id('list_sort'); ?>"
 | 
            ||
| 363 |                         name="<?php echo $this->get_field_name('list_sort'); ?>">
 | 
            ||
| 364 | |||
| 365 |                     <option <?php if ($list_sort == 'az') {
 | 
            ||
| 366 | echo 'selected="selected"';  | 
            ||
| 367 |                     } ?> value="az"><?php _e('A-Z', 'geodirectory'); ?></option>
 | 
            ||
| 368 | |||
| 369 |                     <option <?php if ($list_sort == 'latest') {
 | 
            ||
| 370 | echo 'selected="selected"';  | 
            ||
| 371 |                     } ?> value="latest"><?php _e('Latest', 'geodirectory'); ?></option>
 | 
            ||
| 372 | |||
| 373 |                     <option <?php if ($list_sort == 'featured') {
 | 
            ||
| 374 | echo 'selected="selected"';  | 
            ||
| 375 |                     } ?> value="featured"><?php _e('Featured', 'geodirectory'); ?></option>
 | 
            ||
| 376 | |||
| 377 |                     <option <?php if ($list_sort == 'high_review') {
 | 
            ||
| 378 | echo 'selected="selected"';  | 
            ||
| 379 |                     } ?> value="high_review"><?php _e('Review', 'geodirectory'); ?></option>
 | 
            ||
| 380 | |||
| 381 |                     <option <?php if ($list_sort == 'high_rating') {
 | 
            ||
| 382 | echo 'selected="selected"';  | 
            ||
| 383 |                     } ?> value="high_rating"><?php _e('Rating', 'geodirectory'); ?></option>
 | 
            ||
| 384 | |||
| 385 |                     <option <?php if ($list_sort == 'random') {
 | 
            ||
| 386 | echo 'selected="selected"';  | 
            ||
| 387 |                     } ?> value="random"><?php _e('Random', 'geodirectory'); ?></option>
 | 
            ||
| 388 | |||
| 389 | </select>  | 
            ||
| 390 | </label>  | 
            ||
| 391 | </p>  | 
            ||
| 392 | |||
| 393 | <p>  | 
            ||
| 394 | |||
| 395 | <label  | 
            ||
| 396 |                 for="<?php echo $this->get_field_id('post_number'); ?>"><?php _e('Number of posts:', 'geodirectory');?>
 | 
            ||
| 397 | |||
| 398 |                 <input class="widefat" id="<?php echo $this->get_field_id('post_number'); ?>"
 | 
            ||
| 399 |                        name="<?php echo $this->get_field_name('post_number'); ?>" type="text"
 | 
            ||
| 400 | value="<?php echo esc_attr($post_number); ?>"/>  | 
            ||
| 401 | </label>  | 
            ||
| 402 | </p>  | 
            ||
| 403 | |||
| 404 | <p>  | 
            ||
| 405 |             <label for="<?php echo $this->get_field_id('layout'); ?>">
 | 
            ||
| 406 |                 <?php _e('Layout:', 'geodirectory');?>
 | 
            ||
| 407 |                 <select class="widefat" id="<?php echo $this->get_field_id('layout'); ?>"
 | 
            ||
| 408 |                         name="<?php echo $this->get_field_name('layout'); ?>">
 | 
            ||
| 409 |                     <option <?php if ($layout == 'gridview_onehalf') {
 | 
            ||
| 410 | echo 'selected="selected"';  | 
            ||
| 411 | } ?>  | 
            ||
| 412 |                         value="gridview_onehalf"><?php _e('Grid View (Two Columns)', 'geodirectory'); ?></option>
 | 
            ||
| 413 |                     <option <?php if ($layout == 'gridview_onethird') {
 | 
            ||
| 414 | echo 'selected="selected"';  | 
            ||
| 415 | } ?>  | 
            ||
| 416 |                         value="gridview_onethird"><?php _e('Grid View (Three Columns)', 'geodirectory'); ?></option>
 | 
            ||
| 417 |                     <option <?php if ($layout == 'gridview_onefourth') {
 | 
            ||
| 418 | echo 'selected="selected"';  | 
            ||
| 419 | } ?>  | 
            ||
| 420 |                         value="gridview_onefourth"><?php _e('Grid View (Four Columns)', 'geodirectory'); ?></option>
 | 
            ||
| 421 |                     <option <?php if ($layout == 'gridview_onefifth') {
 | 
            ||
| 422 | echo 'selected="selected"';  | 
            ||
| 423 | } ?>  | 
            ||
| 424 |                         value="gridview_onefifth"><?php _e('Grid View (Five Columns)', 'geodirectory'); ?></option>
 | 
            ||
| 425 |                     <option <?php if ($layout == 'list') {
 | 
            ||
| 426 | echo 'selected="selected"';  | 
            ||
| 427 |                     } ?> value="list"><?php _e('List view', 'geodirectory'); ?></option>
 | 
            ||
| 428 | |||
| 429 | </select>  | 
            ||
| 430 | </label>  | 
            ||
| 431 | </p>  | 
            ||
| 432 | |||
| 433 | <p>  | 
            ||
| 434 | <label  | 
            ||
| 435 |                 for="<?php echo $this->get_field_id('listing_width'); ?>"><?php _e('Listing width:', 'geodirectory');?>
 | 
            ||
| 436 | |||
| 437 |                 <input class="widefat" id="<?php echo $this->get_field_id('listing_width'); ?>"
 | 
            ||
| 438 |                        name="<?php echo $this->get_field_name('listing_width'); ?>" type="text"
 | 
            ||
| 439 | value="<?php echo esc_attr($listing_width); ?>"/>  | 
            ||
| 440 | </label>  | 
            ||
| 441 | </p>  | 
            ||
| 442 | |||
| 443 | <p>  | 
            ||
| 444 | <label  | 
            ||
| 445 |                 for="<?php echo $this->get_field_id('character_count'); ?>"><?php _e('Post Content excerpt character count :', 'geodirectory');?>
 | 
            ||
| 446 |                 <input class="widefat" id="<?php echo $this->get_field_id('character_count'); ?>"
 | 
            ||
| 447 |                        name="<?php echo $this->get_field_name('character_count'); ?>" type="text"
 | 
            ||
| 448 | value="<?php echo esc_attr($character_count); ?>"/>  | 
            ||
| 449 | </label>  | 
            ||
| 450 | </p>  | 
            ||
| 451 | |||
| 452 | <p>  | 
            ||
| 453 |             <label for="<?php echo $this->get_field_id('add_location_filter'); ?>">
 | 
            ||
| 454 |                 <?php _e('Enable Location Filter:', 'geodirectory');?>
 | 
            ||
| 455 |                 <input type="checkbox" id="<?php echo $this->get_field_id('add_location_filter'); ?>"
 | 
            ||
| 456 |                        name="<?php echo $this->get_field_name('add_location_filter'); ?>" <?php if ($add_location_filter) echo 'checked="checked"';?>
 | 
            ||
| 457 | value="1"/>  | 
            ||
| 458 | </label>  | 
            ||
| 459 | </p>  | 
            ||
| 460 | <p>  | 
            ||
| 461 |             <label for="<?php echo $this->get_field_id('show_featured_only'); ?>">
 | 
            ||
| 462 |                 <?php _e('Show only featured listings:', 'geodirectory');?> <input type="checkbox"
 | 
            ||
| 463 |                                                                                             id="<?php echo $this->get_field_id('show_featured_only'); ?>"
 | 
            ||
| 464 |                                                                                             name="<?php echo $this->get_field_name('show_featured_only'); ?>" <?php if ($show_featured_only) echo 'checked="checked"';?>
 | 
            ||
| 465 | value="1"/>  | 
            ||
| 466 | </label>  | 
            ||
| 467 | </p>  | 
            ||
| 468 | <p>  | 
            ||
| 469 |             <label for="<?php echo $this->get_field_id('show_special_only'); ?>">
 | 
            ||
| 470 |                 <?php _e('Show only listings with special offers:', 'geodirectory');?> <input type="checkbox"
 | 
            ||
| 471 |                                                                                                        id="<?php echo $this->get_field_id('show_special_only'); ?>"
 | 
            ||
| 472 |                                                                                                        name="<?php echo $this->get_field_name('show_special_only'); ?>" <?php if ($show_special_only) echo 'checked="checked"';?>
 | 
            ||
| 473 | value="1"/>  | 
            ||
| 474 | </label>  | 
            ||
| 475 | </p>  | 
            ||
| 476 | <p>  | 
            ||
| 477 |             <label for="<?php echo $this->get_field_id('with_pics_only'); ?>">
 | 
            ||
| 478 |                 <?php _e('Show only listings with pics:', 'geodirectory');?> <input type="checkbox"
 | 
            ||
| 479 |                                                                                              id="<?php echo $this->get_field_id('with_pics_only'); ?>"
 | 
            ||
| 480 |                                                                                              name="<?php echo $this->get_field_name('with_pics_only'); ?>" <?php if ($with_pics_only) echo 'checked="checked"';?>
 | 
            ||
| 481 | value="1"/>  | 
            ||
| 482 | </label>  | 
            ||
| 483 | </p>  | 
            ||
| 484 | <p>  | 
            ||
| 485 |             <label for="<?php echo $this->get_field_id('with_videos_only'); ?>">
 | 
            ||
| 486 |                 <?php _e('Show only listings with videos:', 'geodirectory');?> <input type="checkbox"
 | 
            ||
| 487 |                                                                                                id="<?php echo $this->get_field_id('with_videos_only'); ?>"
 | 
            ||
| 488 |                                                                                                name="<?php echo $this->get_field_name('with_videos_only'); ?>" <?php if ($with_videos_only) echo 'checked="checked"';?>
 | 
            ||
| 489 | value="1"/>  | 
            ||
| 490 | </label>  | 
            ||
| 491 | </p>  | 
            ||
| 492 | <p>  | 
            ||
| 493 | <label  | 
            ||
| 494 |                 for="<?php echo $this->get_field_id('use_viewing_post_type'); ?>"><?php _e('Use current viewing post type:', 'geodirectory'); ?>
 | 
            ||
| 495 |                 <input type="checkbox" id="<?php echo $this->get_field_id('use_viewing_post_type'); ?>"
 | 
            ||
| 496 |                        name="<?php echo $this->get_field_name('use_viewing_post_type'); ?>" <?php if ($use_viewing_post_type) {
 | 
            ||
| 497 | echo 'checked="checked"';  | 
            ||
| 498 | } ?> value="1"/>  | 
            ||
| 499 | </label>  | 
            ||
| 500 | </p>  | 
            ||
| 501 | |||
| 502 | |||
| 503 | <script type="text/javascript">  | 
            ||
| 504 | |||
| 505 |             function geodir_popular_widget_cat_title(val) {
 | 
            ||
| 506 | |||
| 507 |                 jQuery(val).find("option:selected").each(function (i) {
 | 
            ||
| 508 | if (i == 0)  | 
            ||
| 509 |                         jQuery(val).closest('form').find('#post_type_cats input').val(jQuery(this).html());
 | 
            ||
| 510 | |||
| 511 | });  | 
            ||
| 512 | |||
| 513 | }  | 
            ||
| 514 | |||
| 515 |             function geodir_change_category_list(obj, selected) {
 | 
            ||
| 516 | var post_type = obj.value;  | 
            ||
| 517 | |||
| 518 | var ajax_url = '<?php echo geodir_get_ajax_url(); ?>'  | 
            ||
| 519 | |||
| 520 | var myurl = ajax_url + "&geodir_ajax=admin_ajax&ajax_action=get_cat_dl&post_type=" + post_type + "&selected=" + selected;  | 
            ||
| 521 | |||
| 522 |                 jQuery.ajax({
 | 
            ||
| 523 | type: "GET",  | 
            ||
| 524 | url: myurl,  | 
            ||
| 525 |                     success: function (data) {
 | 
            ||
| 526 | |||
| 527 |                         jQuery(obj).closest('form').find('#post_type_cats select').html(data);
 | 
            ||
| 528 | |||
| 529 | }  | 
            ||
| 530 | });  | 
            ||
| 531 | |||
| 532 | }  | 
            ||
| 533 | |||
| 534 | View Code Duplication |             <?php if(is_active_widget( false, false, $this->id_base, true )){ ?>
 | 
            |
| 535 |             var post_type = jQuery('#<?php echo $this->get_field_id('post_type'); ?>').val();
 | 
            ||
| 536 | |||
| 537 | <?php } ?>  | 
            ||
| 538 | |||
| 539 | </script>  | 
            ||
| 540 | |||
| 541 | <?php  | 
            ||
| 542 | }  | 
            ||
| 543 | } // class geodir_popular_postview  | 
            ||
| 545 | register_widget('geodir_popular_postview'); | 
            
There are different options of fixing this problem.
If you want to be on the safe side, you can add an additional type-check:
If you are sure that the expression is traversable, you might want to add a doc comment cast to improve IDE auto-completion and static analysis:
Mark the issue as a false-positive: Just hover the remove button, in the top-right corner of this issue for more options.