Thursday, April 2, 2020

Add Cookies Alert with AngularJs

Html code
<div class="cookieinfo-flag" data-ng-if="cookie_flag" style="background: #ea5031; bottom: 0px; color: white; font-family: "verdana", "arial", sans-serif; font-size: 14px; height: auto; left: 0px; line-height: 21px; min-height: 21px; opacity: 1; padding: 8px 18px; right: 0px; text-align: left; z-index: 2147483647;">
  <div class="cookieinfo-close" data-ng-click="setCookieFlag()" style="background: #f1d600; border-radius: 5px; color: black; cursor: pointer; display: block; float: right; margin-left: 5px; min-width: 100px; padding: 5px 8px; text-align: center;">Got it!</div>
  >span style="display: block; padding: 5px 0 5px 0;">We use cookies to enhance your experience. By continuing to visit this site you agree to our use of cookies. <a href="https://wikipedia.org/wiki/HTTP_cookie/#" style="color: #f1d600; text-decoration: none;">More info</a></span>
</div>
Angular js code
var app = angular.module("myApp", []);  
app.controller("mainController", function($scope, $cookies) {
    /**
     * Check CookieFlag is set
     * if not then show flag alert (.cookieinfo-flag)
     */
    $scope.cookie_flag = true;
    if ($cookies.get('CookieFlag')) {
        $scope.cookie_flag = false;
    }
    /**
     * Set illusparkCookieFlag and hide flag alert (.cookieinfo-flag)
     */
    $scope.setCookieFlag = function() {
        $cookies.put('CookieFlag', true, {
            'expires': new Date('01/01/9999'),
            'path': '/'
        });
        $scope.cookie_flag = false;
    };

Thursday, February 6, 2020

Paid Memberships Pro LevelMeta (Addon)

/*
Plugin Name: Paid Memberships Pro LevelMeta (Addon)
Plugin URI: https://pk-techie.blogspot.com/2020/02/paid-memberships-pro-levelmeta-addon.html
Description: Useful to get, update, delete memership level meta data like wordpress meta data
Author: PrakharKant
Version: 1.0
Author URI: https://pk-techie.blogspot.com/
*/


register_activation_hook( __FILE__, 'pkLm_plugin_activate' );
function pkLm_plugin_activate(){

    // Require parent plugin
    if ( ! is_plugin_active( 'paid-memberships-pro/paid-memberships-pro.php' ) and current_user_can( 'activate_plugins' ) ) {
        // Deactivate the plugin
        deactivate_plugins(__FILE__);
       
        // Throw an error in the wordpress admin console
        $error_message = __('This plugin requires Paid Memberships Pro plugin to be active!');

        die($error_message);

    }
}


function pk_update_pmprolevel_meta($object_id, $meta_key, $meta_value) {
    global $wpdb;

    $table = $wpdb->pmpro_membership_levelmeta;
    $column = 'pmpro_membership_level_id';

    $object_id = absint( $object_id );

    if ( ! $object_id ) { return false; }

    // expected_slashed ($meta_key)
    $meta_key = wp_unslash($meta_key);
    $meta_value = wp_unslash($meta_value);
    $meta_value = sanitize_meta( $meta_key, $meta_value, $column );
    $meta_value = maybe_serialize( $meta_value );

    $meta_ids = $wpdb->get_col(
                    $wpdb->prepare(
                        "SELECT meta_id FROM $table WHERE meta_key = %s AND $column = %d",
                        $meta_key,
                        $object_id
                    )
                );

    if ( empty( $meta_ids ) ) {
        $result = $wpdb->insert( $table, array(
            $column => $object_id,
            'meta_key' => $meta_key,
            'meta_value' => $meta_value
        ) );

        $meta_id = (int) $wpdb->insert_id;
        return $meta_id;
    }

    $data  = compact( 'meta_value' );
    $where = array( $column => $object_id, 'meta_key' => $meta_key );

    $result = $wpdb->update( $table, $data, $where );

    var_dump($result);
}


function pk_delete_pmprolevel_meta($object_id, $meta_key, $meta_value = '') {
    global $wpdb;

    $table = $wpdb->pmpro_membership_levelmeta;
    $column = 'pmpro_membership_level_id';

    if ( ! $meta_key || ! is_numeric( $object_id ) ) {
        return false;
    }

    $object_id = absint( $object_id );

    if ( ! $object_id ) { return false; }

    // expected_slashed ($meta_key)
    $meta_key = wp_unslash($meta_key);
    $meta_value = wp_unslash($meta_value);
    $meta_value = maybe_serialize( $meta_value );

    $query = $wpdb->prepare(
        "DELETE FROM $table WHERE $column = %d AND meta_key = %s ",
        $object_id,
        $meta_key
    );

    if ( '' !== $meta_value && null !== $meta_value && false !== $meta_value )
        $query .= $wpdb->prepare(" AND meta_value = %s", $meta_value );

    $count = $wpdb->query($query);

    if ( !$count )
        return false;

    return true;
}


function pk_get_pmprolevel_meta($object_id, $meta_key = '', $single = false) {
    global $wpdb;

    $table = $wpdb->pmpro_membership_levelmeta;
    $column = 'pmpro_membership_level_id';

    if ( ! is_numeric( $object_id ) ) {
        return false;
    }

    $object_id = absint( $object_id );

    if ( ! $object_id ) { return false; }

    $query = "SELECT * FROM $table WHERE $column = $object_id";

    if( !$meta_key ) {
        $result = $wpdb->get_results($query);
    }

    $query .= " AND meta_key = '$meta_key'";
    $result = $wpdb->get_row($query);

    if( !$result )
        return false;

    if( !$single )
        return $result;

    $value = maybe_unserialize($result->meta_value);
    return $value;
}

/*
* delete all meta data on deletion of membership deletion
*/

add_action('pmpro_delete_membership_level', function($level_id){
    global $wpdb;

    $table = $wpdb->pmpro_membership_levelmeta;
    $column = 'pmpro_membership_level_id';

    $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $table WHERE $column = %d ", $level_id ));
   
    foreach ( $meta_ids as $mid ) {
        $result = (bool) $wpdb->delete( $table, array( 'meta_id' => $mid ) );
    }

}); 

Get current page url in javascript

var curPageURL = window.location.origin + window.location.pathname;

Thursday, January 30, 2020

Validate given string is JSON

function isJson(str) {
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}

Convert a JavaScript Object to FormData Object

/* takes a {} object and returns a FormData object */
function objectToFormData(obj, form, namespace) {
    var fd = form || new FormData();
    var form_key;
    for (var property in obj) {
        if (obj.hasOwnProperty(property) && property != '$$hashKey') {
            if (namespace) {
                form_key = namespace + '[' + property + ']';
            } else {
                form_key = property;
            }
            /*if the property is an object, but not a File,*/
            /*use recursivity.*/
            if (obj[property] instanceof Date) {
                fd.append(form_key, obj[property].toISOString());
            } else if (typeof obj[property] === 'object' && !(obj[property] instanceof File)) {
                objectToFormData(obj[property], fd, form_key);
            } else {
                /*if it's a string or a File object*/
                if (!empty(obj[property])) {
                    fd.append(form_key, obj[property]);
                }
            }
        }
    }
    return fd;
}