/** * Sanitize widget form values as they are saved. * * @see WP_Widget::update() * * @param array $new_instance Values just sent to be saved. * @param array $old_instance Previously saved values from database. * * @return array Updated safe values to be saved. */ public function update($new_instance, $old_instance) { $instance = array(); if (!empty($new_instance['title'])) { $instance['title'] = strip_tags($new_instance['title']); } if (!class_exists('Facebook_Like_Box')) { require_once dirname(dirname(__FILE__)) . '/class-facebook-like-box.php'; } // include values when checkboxes not present $box = Facebook_Like_Box::fromArray(array_merge(array('show_faces' => false, 'stream' => false, 'header' => false, 'force_wall' => false), $new_instance)); if ($box) { $box_options = $box->toHTMLDataArray(); if (isset($box_options['href'])) { // sanitize if href has changed if (!isset($old_instance['href']) || $old_instance['href'] !== $box_options['href']) { $box_options['href'] = self::sanitize_facebook_page_url($box_options['href']); } } // convert the booleans foreach (array('stream', 'header') as $bool_property) { if (isset($box_options[$bool_property])) { if ($box_options[$bool_property] === 'false') { $box_options[$bool_property] = false; } else { $box_options[$bool_property] = true; } } } // dashes to underscores if (isset($box_options['border-color'])) { $box_options['border_color'] = $box_options['border-color']; unset($box_options['border-color']); } if (isset($box_options['max-age'])) { $box_options['max_age'] = absint($box_options['max-age']); unset($box_options['max-age']); } // bool with dash if (isset($box_options['force-wall'])) { if ($box_options['force-wall'] === 'true') { $box_options['force_wall'] = true; } else { $box_options['force_wall'] = false; } unset($box_options['force-wall']); } // bool with dash if (isset($box_options['show-faces'])) { if ($box_options['show-faces'] === 'false') { $box_options['show_faces'] = false; } else { $box_options['show_faces'] = true; } unset($box_options['show-faces']); } if (isset($box_options['width'])) { $box_options['width'] = absint($box_options['width']); if ($box_options['width'] > 0) { // correct an invalid value to the closest allowed value if ($box_options['width'] < Facebook_Like_Box::MIN_WIDTH) { $box_options['width'] = Facebook_Like_Box::MIN_WIDTH; } } else { unset($box_options['width']); } } if (isset($box_options['height'])) { $box_options['height'] = absint($box_options['height']); // default is the same as minimum. remove invalid value if ($box_options['height'] < Facebook_Like_Box::MIN_HEIGHT) { unset($box_options['height']); } } return array_merge($instance, $box_options); } return $instance; }
/** * Sanitize widget form values as they are saved. * * @see WP_Widget::update() * * @since 1.0 * * @param array $new_instance Values just sent to be saved. * @param array $old_instance Previously saved values from database. * * @return array Updated safe values to be saved. */ public function update($new_instance, $old_instance) { $instance = array(); $new_instance = (array) $new_instance; if (!empty($new_instance['title'])) { $instance['title'] = strip_tags($new_instance['title']); } // set the booleans foreach (array('stream', 'header', 'show_border', 'force_wall', 'show_faces') as $bool_option) { if (isset($new_instance[$bool_option])) { $new_instance[$bool_option] = true; } else { $new_instance[$bool_option] = false; } } if (isset($new_instance['href'])) { // sanitize if href has changed if (!isset($old_instance['href']) || $old_instance['href'] !== $new_instance['href']) { $new_instance['href'] = self::sanitize_facebook_page_url($new_instance['href']); } } foreach (array('width', 'height') as $option) { if (isset($new_instance[$option])) { $new_instance[$option] = absint($new_instance[$option]); } } if (!class_exists('Facebook_Like_Box')) { require_once dirname(dirname(__FILE__)) . '/class-facebook-like-box.php'; } // include values when checkboxes not present $box = Facebook_Like_Box::fromArray($new_instance); if ($box) { $box_options = $box->toHTMLDataArray(); // convert dashes used to construct data-* attributes into underscore properties foreach (array('stream' => 'stream', 'header' => 'header', 'show-border' => 'show_border', 'force-wall' => 'force_wall', 'show-faces' => 'show_faces') as $data => $prop) { if (!isset($box_options[$data])) { continue; } if ($box_options[$data] === 'true') { $box_options[$data] = true; } else { if ($box_options[$data] === 'false') { $box_options[$data] = false; } } if ($data !== $prop) { $box_options[$prop] = $box_options[$data]; unset($box_options[$data]); } } // unsigned ints foreach (array('width', 'height') as $option) { if (isset($box_options[$option])) { $box_options[$option] = absint($box_options[$option]); } } return array_merge($instance, $box_options); } return $instance; }