class Akismet_REST_API { /** * Register the REST API routes. */ public static function init() { if ( ! function_exists( 'register_rest_route' ) ) { // The REST API wasn't integrated into core until 4.4, and we support 4.0+ (for now). return false; } register_rest_route( 'akismet/v1', '/key', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_key' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_key' ), 'args' => array( 'key' => array( 'required' => true, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'delete_key' ), ) ) ); register_rest_route( 'akismet/v1', '/settings/', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_settings' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_boolean_settings' ), 'args' => array( 'akismet_strictness' => array( 'required' => false, 'type' => 'boolean', 'description' => __( 'If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder.', 'akismet' ), ), 'akismet_show_user_comments_approved' => array( 'required' => false, 'type' => 'boolean', 'description' => __( 'If true, show the number of approved comments beside each comment author in the comments list page.', 'akismet' ), ), ), ) ) ); register_rest_route( 'akismet/v1', '/stats', array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_stats' ), 'args' => array( 'interval' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_interval' ), 'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ), 'default' => 'all', ), ), ) ); register_rest_route( 'akismet/v1', '/stats/(?P[\w+])', array( 'args' => array( 'interval' => array( 'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_stats' ), ) ) ); register_rest_route( 'akismet/v1', '/alert', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'delete_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ) ) ); } /** * Get the current Akismet API key. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_key( $request = null ) { return rest_ensure_response( Akismet::get_api_key() ); } /** * Set the API key, if possible. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_key( $request ) { if ( defined( 'WPCOM_API_KEY' ) ) { return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be changed via the API.', 'akismet' ), array( 'status'=> 409 ) ) ); } $new_api_key = $request->get_param( 'key' ); if ( ! self::key_is_valid( $new_api_key ) ) { return rest_ensure_response( new WP_Error( 'invalid_key', __( 'The value provided is not a valid and registered API key.', 'akismet' ), array( 'status' => 400 ) ) ); } update_option( 'wordpress_api_key', $new_api_key ); return self::get_key(); } /** * Unset the API key, if possible. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function delete_key( $request ) { if ( defined( 'WPCOM_API_KEY' ) ) { return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be deleted.', 'akismet' ), array( 'status'=> 409 ) ) ); } delete_option( 'wordpress_api_key' ); return rest_ensure_response( true ); } /** * Get the Akismet settings. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_settings( $request = null ) { return rest_ensure_response( array( 'akismet_strictness' => ( get_option( 'akismet_strictness', '1' ) === '1' ), 'akismet_show_user_comments_approved' => ( get_option( 'akismet_show_user_comments_approved', '1' ) === '1' ), ) ); } /** * Update the Akismet settings. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_boolean_settings( $request ) { foreach ( array( 'akismet_strictness', 'akismet_show_user_comments_approved', ) as $setting_key ) { $setting_value = $request->get_param( $setting_key ); if ( is_null( $setting_value ) ) { // This setting was not specified. continue; } // From 4.7+, WP core will ensure that these are always boolean // values because they are registered with 'type' => 'boolean', // but we need to do this ourselves for prior versions. $setting_value = Akismet_REST_API::parse_boolean( $setting_value ); update_option( $setting_key, $setting_value ? '1' : '0' ); } return self::get_settings(); } /** * Parse a numeric or string boolean value into a boolean. * * @param mixed $value The value to convert into a boolean. * @return bool The converted value. */ public static function parse_boolean( $value ) { switch ( $value ) { case true: case 'true': case '1': case 1: return true; case false: case 'false': case '0': case 0: return false; default: return (bool) $value; } } /** * Get the Akismet stats for a given time period. * * Possible `interval` values: * - all * - 60-days * - 6-months * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_stats( $request ) { $api_key = Akismet::get_api_key(); $interval = $request->get_param( 'interval' ); $stat_totals = array(); $response = Akismet::http_post( Akismet::build_query( array( 'blog' => get_option( 'home' ), 'key' => $api_key, 'from' => $interval ) ), 'get-stats' ); if ( ! empty( $response[1] ) ) { $stat_totals[$interval] = json_decode( $response[1] ); } return rest_ensure_response( $stat_totals ); } /** * Get the current alert code and message. Alert codes are used to notify the site owner * if there's a problem, like a connection issue between their site and the Akismet API, * invalid requests being sent, etc. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_alert( $request ) { return rest_ensure_response( array( 'code' => get_option( 'akismet_alert_code' ), 'message' => get_option( 'akismet_alert_msg' ), ) ); } /** * Update the current alert code and message by triggering a call to the Akismet server. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_alert( $request ) { delete_option( 'akismet_alert_code' ); delete_option( 'akismet_alert_msg' ); // Make a request so the most recent alert code and message are retrieved. Akismet::verify_key( Akismet::get_api_key() ); return self::get_alert( $request ); } /** * Clear the current alert code and message. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function delete_alert( $request ) { delete_option( 'akismet_alert_code' ); delete_option( 'akismet_alert_msg' ); return self::get_alert( $request ); } private static function key_is_valid( $key ) { $response = Akismet::http_post( Akismet::build_query( array( 'key' => $key, 'blog' => get_option( 'home' ) ) ), 'verify-key' ); if ( $response[1] == 'valid' ) { return true; } return false; } public static function privileged_permission_callback() { return current_user_can( 'manage_options' ); } /** * For calls that Akismet.com makes to the site to clear outdated alert codes, use the API key for authorization. */ public static function remote_call_permission_callback( $request ) { $local_key = Akismet::get_api_key(); return $local_key && ( strtolower( $request->get_param( 'key' ) ) === strtolower( $local_key ) ); } public static function sanitize_interval( $interval, $request, $param ) { $interval = trim( $interval ); $valid_intervals = array( '60-days', '6-months', 'all', ); if ( ! in_array( $interval, $valid_intervals ) ) { $interval = 'all'; } return $interval; } public static function sanitize_key( $key, $request, $param ) { return trim( $key ); } } The Lost Art of Wrestling with Your Kids | Bearded Nom Nom /** * Redux Framework is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * any later version. * * Redux Framework is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Redux Framework. If not, see . * * @package Redux Framework * @subpackage Spectrum Color Picker * @author Kevin Provance (kprovance) * @version 1.0.0 */ // Exit if accessed directly if( !defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if( !class_exists( 'ReduxFramework_color_rgba' ) ) { /** * Main ReduxFramework_color_rgba class * * @since 1.0.0 */ class ReduxFramework_color_rgba { /** * Class Constructor. Defines the args for the extions class * * @since 1.0.0 * @access public * @param array $field Field sections. * @param array $value Values. * @param array $parent Parent object. * @return void */ public function __construct( $field = array(), $value ='', $parent ) { // Set required variables $this->parent = $parent; $this->field = $field; $this->value = $value; $defaults = array( 'color' => '', 'alpha' => 1, 'rgba' => '' ); $this->value = wp_parse_args( $this->value, $defaults ); $this->field['options']['show_input'] = isset($this->field['options']['show_input']) ? $this->field['options']['show_input'] : true; $this->field['options']['show_initial'] = isset($this->field['options']['show_initial']) ? $this->field['options']['show_initial'] : false; $this->field['options']['show_alpha'] = isset($this->field['options']['show_alpha']) ? $this->field['options']['show_alpha'] : true; $this->field['options']['show_palette'] = isset($this->field['options']['show_palette']) ? $this->field['options']['show_palette'] : false; $this->field['options']['show_palette_only'] = isset($this->field['options']['show_palette_only']) ? $this->field['options']['show_palette_only'] : false; $this->field['options']['max_palette_size'] = isset($this->field['options']['max_palette_size']) ? $this->field['options']['max_palette_size'] : 10; $this->field['options']['show_selection_palette'] = isset($this->field['options']['show_selection_palette']) ? $this->field['options']['show_selection_palette'] : false; $this->field['options']['allow_empty'] = isset($this->field['options']['allow_empty']) ? $this->field['options']['allow_empty'] : true; $this->field['options']['clickout_fires_change'] = isset($this->field['options']['clickout_fires_change']) ? $this->field['options']['clickout_fires_change'] : false; $this->field['options']['choose_text'] = isset($this->field['options']['choose_text']) ? $this->field['options']['choose_text'] : 'Choose'; $this->field['options']['cancel_text'] = isset($this->field['options']['cancel_text']) ? $this->field['options']['cancel_text'] : 'Cancel'; $this->field['options']['show_buttons'] = isset($this->field['options']['show_buttons']) ? $this->field['options']['show_buttons'] : true; $this->field['options']['palette'] = isset($this->field['options']['palette']) ? $this->field['options']['palette'] : null; $this->field['options']['input_text'] = isset($this->field['options']['input_text']) ? $this->field['options']['input_text'] : 'Select Color'; // Convert empty array to null, if there. $this->field['options']['palette'] = empty($this->field['options']['palette']) ? null : $this->field['options']['palette']; $this->field['output_transparent'] = isset($this->field['output_transparent']) ? $this->field['output_transparent'] : false; } /** * Field Render Function. * * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { $field_id = $this->field['id']; // Color picker container echo '
'; // Colour picker layout $opt_name = $this->parent->args['opt_name']; if ('' == $this->value['color'] || 'transparent' == $this->value['color']) { $color = ''; } else { $color = Redux_Helpers::hex2rgba($this->value['color'], $this->value['alpha']); } if ($this->value['rgba'] == ''){ $this->value['rgba'] = Redux_Helpers::hex2rgba($this->value['color'], $this->value['alpha']); } echo ''; echo ''; // Hidden input for alpha channel echo ''; // Hidden input for rgba echo ''; echo '
'; } /** * Enqueue Function. * * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { // Set up min files for dev_mode = false. $min = Redux_Functions::isMin(); // Field dependent JS if (!wp_script_is ( 'redux-field-color-rgba-js' )) { wp_enqueue_script( 'redux-field-color-rgba-js', ReduxFramework::$_url . 'inc/fields/color_rgba/field_color_rgba' . Redux_Functions::isMin() . '.js', array('jquery', 'redux-spectrum-js'), time(), true ); } // Spectrum CSS if (!wp_style_is ( 'redux-spectrum-css' )) { wp_enqueue_style('redux-spectrum-css'); } if ($this->parent->args['dev_mode']) { if (!wp_style_is ( 'redux-field-color-rgba-css' )) { wp_enqueue_style( 'redux-field-color-rgba-css', ReduxFramework::$_url . 'inc/fields/color_rgba/field_color_rgba.css', array(), time(), 'all' ); } } } /** * getColorVal. Returns formatted color val in hex or rgba. * * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access private * @return string */ private function getColorVal(){ // No notices $color = ''; $alpha = 1; $rgba = ''; // Must be an array if (is_array($this->value)) { // Enum array to parse values foreach($this->value as $id => $val) { // Sanitize alpha if ($id == 'alpha') { $alpha = !empty($val) ? $val : 1; } elseif ($id == 'color') { $color = !empty($val) ? $val : ''; } elseif ($id == 'rgba') { $rgba = !empty($val) ? $val : ''; $rgba = Redux_Helpers::hex2rgba($color, $alpha); } } // Only build rgba output if alpha ia less than 1 if ( $alpha < 1 && $alpha <> '' ) { $color = $rgba; } } return $color; } /** * Output Function. * * Used to enqueue to the front-end * * @since 1.0.0 * @access public * @return void */ public function output() { if (!empty($this->value)) { $style = ''; $mode = ( isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'color' ); $color_val = $this->getColorVal(); $style .= $mode . ':' . $color_val . ';'; if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $css = Redux_Functions::parseCSS( $this->field['output'], $style, $color_val ); $this->parent->outputCSS .= $css; } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $css = Redux_Functions::parseCSS( $this->field['compiler'], $style, $color_val ); $this->parent->compilerCSS .= $css ; } } } } }

Follow me

The Lost Art of Wrestling with Your Kids
August 5, 2015|FatherhoodFeatured

The Lost Art of Wrestling with Your Kids

The Lost Art of Wrestling with Your Kids

Yelling.

Screaming.

Breathlessness.

Sweat.

Flailing body parts.

Is it war?!?!

No…it’s just another night of wrestling in our house. Seriously, my wife says it sounds like a beast has been unleashed and is murdering our children simultaneously. Sound like chaos?

It is… The best kind.

Wrestling with your kids is a lost art and we need our own personal renaissance of this cultural past time. Think about it…I bet most of you can remember a time when you wrestled as a kid and if those memories don’t involve a merciless big brother, you most likely LOVED. EVERY. MINUTE. OF. IT.

Why?

Because…THIS.

(old footage ahead…excuse the bad quality)

Here’s 4 reasons YOU should wrestle with your kids:

Connection

Wrestling breaks down barriers while building connection between you and your kids. Life is busy and sometimes we only have a few hours a day to build a meaningful connection with our kids. Between school work, dinner, & chores sometimes more yelling and mandatory “to dos” are done than genuine connection building.

When you take time to wrestle with your child you break down any built up feelings of separation and you help your child feel close to you. There’s also an unspoken truth spoken to your children by wrestling: You are a part of something.

Think about it…how often do you find yourself wrestling with other grown men?! I personally JUST. DON’T. I would find it, well, uncomfortable. I don’t wrestle with anyone but my family. Wrestling with me is exclusive and there’s something to be said about that.

Exercise

Good GRIEF. Kids these days don’t hardly ever get outside!!! I remember the days when we’d all head out to the creek and fish for crawdads using pieces of hot dog or go riding our bikes through the neighborhood for hours…exploring, reading epic books, discovering and just being a kid.

Now kids spend the majority of their time staring at a screen. We live in a different time and our kids are experiencing life differently but they STILL NEED PHYSICAL EXERCISE! Exercise is an invaluable form of stress relief. What better way to get them to “get winded” than by playing and wrestling?

Matter of fact, it’s good for you! Instead of going to the gym every Monday, Wednesday, Friday – purposely wrestle with your kids for 20-30 minutes…you’ll get a good work out if you’re all in…especially when you have 4 kids like me.

Life Lessons

Through wrestling you have an opportunity to teach your children about life. What happens when dad is whooping everyone’s rear? Do they give up or do they band together to defeat dad? Will your child press through against resistance and a bigger, stronger foe or will they come back and try a different tactic? Wrestling helps your children simulate hard situations in a place that is safe and controlled (well, to some extent…). They can learn the power of pressing in and not giving up.

Is wrestling with your children really fair? No…because you can win every time…until they’re bigger anyway. But since it’s not fair, at some point, hopefully you’re going to let them win in some way shape or form. I don’t let mine win all the time because they do need to know that sometimes life isn’t fair but through this, children learn that wrestling together isn’t just about winning or someone being the alpha male…it’s about having fun together and considering other’s emotions and feelings. It’s the perfect opportunity to model thinking of those who have less power or ability and/or are disadvantaged for whatever reason. That’s a lesson every leader needs to learn.

Lastly, wrestling enables you to teach your child how to handle his/her emotions. When wrestling, sometimes tempers flare or a child can take things too far and hit too hard. This creates an opportunity for you to show your child how to calm themselves and play appropriately while handling his/her emotions in a healthy way.

It’s FUN

Wrestling is fun in and of itself but you can make it EPIC by adding some crazy masks or capes.  Create your own character and let your kids battle it out with their arch nemesis.  Don’t take yourself too seriously – let loose and have fun.

So, just do it…start connecting, teaching and best of all, build memories that will last a lifetime.

If you liked this post, you’ll probably wanna read this one:

How to Initiate Wrestling with Your Children

15 Fun Ways to Initiate Wrestling with Your Kids

 

no coments
Share
Maybe Something Good?
About Bearded Nom Nom
Encouraging fathers, beards, integrity...beards...fun...and more beards.
My Wife Wrote a Book!
Whatcha Think?