![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/hessa.corals.io/wp-content/plugins/powerkit/core/ |
<?php /** * The basic helpers functions * * @package Powerkit * @subpackage Core * @version 1.0.0 * @since 1.0.0 */ /** * Output error message. * * @param string $message The error message. */ function powerkit_alert_warning( $message ) { if ( current_user_can( 'editor' ) || current_user_can( 'administrator' ) ) { ?> <p class="pk-alert pk-alert-warning" role="alert"> <object> <?php call_user_func( 'printf', '%s', $message ); ?> </object> <?php esc_html_e( ' Don’t worry, this error is visible to site admins only, and your site visitors won’t see it.', 'powerkit' ); ?> </p> <?php } } /** * Processing path of style. * * @param string $path URL to the stylesheet. */ function powerkit_style( $path ) { // Check RTL. if ( is_rtl() ) { return $path; } // Check Dev. $dev = POWERKIT_PATH . 'assets/css/powerkit-dev.css'; if ( file_exists( $dev ) ) { return str_replace( '.css', '-dev.css', $path ); } return $path; } /** * Generate AMP style. * * @param string $path Path to the stylesheet. */ function powerkit_amp_style( $path ) { if ( file_exists( $path ) ) { $output = call_user_func( 'file_get_contents', $path ); call_user_func( 'printf', '%s', $output ); } } /** * Check post views module. * * @return string Type. */ function powerkit_post_views_enabled() { // Post Views Counter. if ( class_exists( 'Post_Views_Counter' ) ) { return 'post_views'; } // Powerkit Post Views. if ( powerkit_module_enabled( 'post_views' ) ) { return 'pk_post_views'; } } /** * Process shortcode atts. * * @param array $atts Attributes in shortcode tag. */ function powerkit_shortcode_atts( $atts ) { if ( is_array( $atts ) ) { foreach ( $atts as $name => $val ) { if ( is_string( $val ) && 'true' === $val ) { $atts[ $name ] = true; } if ( is_string( $val ) && 'false' === $val ) { $atts[ $name ] = false; } } } return $atts; } /** * Retrieves a post meta field for the given post ID. * * @param int $post_id Post ID. * @param string $key Optional. The meta key to retrieve. By default, returns * data for all keys. Default empty. * @param bool $single Optional. If true, returns only the first value for the specified meta key. * This parameter has no effect if $key is not specified. Default false. * @param mixed $default Default value. * @return mixed Will be an array if $single is false. Will be value of the meta * field if $single is true. */ function powerkit_get_post_metadata( $post_id, $key = '', $single = false, $default = null ) { if ( ! metadata_exists( 'post', $post_id, $key ) && $default ) { return $default; } return get_metadata( 'post', $post_id, $key, $single ); } /** * Get locale in uniform format. */ function powerkit_get_locale() { $locale = get_locale(); if ( preg_match( '#^[a-z]{2}\-[A-Z]{2}$#', $locale ) ) { $locale = str_replace( '-', '_', $locale ); } elseif ( preg_match( '#^[a-z]{2}$#', $locale ) ) { if ( function_exists( 'mb_strtoupper' ) ) { $locale .= '_' . mb_strtoupper( $locale, 'UTF-8' ); } else { $locale .= '_' . mb_strtoupper( $locale ); } } if ( empty( $locale ) ) { $locale = 'en_US'; } return apply_filters( 'powerkit_locale', $locale ); } /** * Get rounded number. * * @param int $number Input number. * @param int $min_value Minimum value to round number. * @param int $decimal How may decimals shall be in the rounded number. */ function powerkit_get_round_number( $number, $min_value = 1000, $decimal = 1 ) { if ( $number < $min_value ) { return number_format_i18n( $number ); } $alphabets = array( 1000000000 => esc_html__( 'B', 'powerkit' ), 1000000 => esc_html__( 'M', 'powerkit' ), 1000 => esc_html__( 'K', 'powerkit' ), ); foreach ( $alphabets as $key => $value ) { if ( $number >= $key ) { return number_format_i18n( round( $number / $key, $decimal ), $decimal ) . $value; } } } /** * Convert dates to readable format * * @param string $a Time string (timeformat). * @return string Formatted time. */ function powerkit_relative_time( $a ) { // Get current timestampt. $b = strtotime( 'now' ); // Get timestamp when tweet created. $c = strtotime( $a ); // Get difference. $d = $b - $c; // Calculate different time values. $minute = 60; $hour = $minute * 60; $day = $hour * 24; $week = $day * 7; if ( is_numeric( $d ) && $d > 0 ) : // If less then 3 seconds. if ( $d < 3 ) { return esc_html__( 'right now', 'powerkit' ); } // If less then minute. if ( $d < $minute ) { return floor( $d ) . esc_html__( ' seconds ago', 'powerkit' ); } // If less then 2 minutes. if ( $d < $minute * 2 ) { return esc_html__( 'about 1 minute ago', 'powerkit' ); } // If less then hour. if ( $d < $hour ) { return floor( $d / $minute ) . esc_html__( ' minutes ago', 'powerkit' ); } // If less then 2 hours. if ( $d < $hour * 2 ) { return esc_html__( 'about 1 hour ago', 'powerkit' ); } // If less then day. if ( $d < $day ) { return floor( $d / $hour ) . esc_html__( ' hours ago', 'powerkit' ); } // If more then day, but less then 2 days. if ( $d > $day && $d < $day * 2 ) { return esc_html__( 'yesterday', 'powerkit' ); } // If less then year. if ( $d < $day * 365 ) { return floor( $d / $day ) . esc_html__( ' days ago', 'powerkit' ); } // else return more than a year. return esc_html__( 'over a year ago', 'powerkit' ); endif; } /** * Truncates string with specified length * * @param string $string Text string. * @param int $length Letters length. * @param string $etc End truncate. * @param bool $break_words Break words or not. * @return string */ function powerkit_str_truncate( $string, $length = 80, $etc = '…', $break_words = false ) { if ( 0 === $length ) { return ''; } if ( function_exists( 'mb_strlen' ) ) { // MultiBite string functions. if ( mb_strlen( $string ) > $length ) { $length -= min( $length, mb_strlen( $etc ) ); if ( ! $break_words ) { $string = preg_replace( '/\s+?(\S+)?$/', '', mb_substr( $string, 0, $length + 1 ) ); } return mb_substr( $string, 0, $length ) . $etc; } } else { // Default string functions. if ( strlen( $string ) > $length ) { $length -= min( $length, strlen( $etc ) ); if ( ! $break_words ) { $string = preg_replace( '/\s+?(\S+)?$/', '', substr( $string, 0, $length + 1 ) ); } return substr( $string, 0, $length ) . $etc; } } return $string; } /** * Set number to Short Form * * @param int $n The number. * @param int $decimal The decimal. */ function powerkit_abridged_number( $n, $decimal = 1 ) { // First strip any formatting. $n = (float) str_replace( ',', '', $n ); // Is this a number? if ( ! is_numeric( $n ) ) { return false; } // Return current count. if ( $n < 1000 ) { return number_format_i18n( $n ); } // Add suffix. $suffix = array( 1000000000 => esc_html__( 'B', 'powerkit' ), // Billion. 1000000 => esc_html__( 'M', 'powerkit' ), // Million. 1000 => esc_html__( 'K', 'powerkit' ), // Thousand. ); foreach ( $suffix as $k => $v ) { if ( $n >= $k ) { return number_format_i18n( $n / $k, $decimal ) . $v; } } } /** * Time ago * * @param string $time The time. * @return string */ function powerkit_timing_ago( $time ) { $periods = array( esc_html__( 'second', 'powerkit' ), esc_html__( 'minute', 'powerkit' ), esc_html__( 'hour', 'powerkit' ), esc_html__( 'day', 'powerkit' ), esc_html__( 'week', 'powerkit' ), esc_html__( 'month', 'powerkit' ), esc_html__( 'year', 'powerkit' ), esc_html__( 'decade', 'powerkit' ) ); $lengths = array( '60', '60', '24', '7', '4.35', '12', '10' ); $now = time(); $difference = $now - $time; $tense = esc_html__( 'ago', 'powerkit' ); $lengths_count = count( $lengths ); for ( $j = 0; $difference >= $lengths[ $j ] && $j < $lengths_count - 1; $j++ ) { $difference /= $lengths[ $j ]; } $difference = round( $difference ); if ( 1 !== $difference ) { $periods[ $j ] .= 's'; } return "$difference $periods[$j] {$tense} "; } /** * Encode data * * @param mixed $content The content. * @param string $secret_key The key. * @return string */ function powerkit_encode_data( $content, $secret_key = 'powerkit' ) { $content = wp_json_encode( $content ); return base64_encode( $content ); } /** * Decode data * * @param string $content The content. * @param string $secret_key The key. * @return string */ function powerkit_decode_data( $content, $secret_key = 'powerkit' ) { $content = base64_decode( $content ); return json_decode( $content ); } /** * Encrypt data * * @param mixed $content The content. * @param string $secret_key The key. * @return string */ function powerkit_encrypt_data( $content, $secret_key = 'powerkit' ) { $content = maybe_serialize( $content ); if ( function_exists( 'openssl_encrypt' ) && function_exists( 'hash' ) ) { $encrypt_method = 'AES-256-CBC'; $key = hash( 'sha256', $secret_key ); $iv = substr( hash( 'sha256', 'secret key' ), 0, 16 ); return base64_encode( openssl_encrypt( $content, $encrypt_method, $key, 0, $iv ) ); } else { return base64_encode( $content ); } } /** * Decrypt data * * @param string $content The content. * @param string $secret_key The key. * @return string */ function powerkit_decrypt_data( $content, $secret_key = 'powerkit' ) { if ( function_exists( 'openssl_encrypt' ) && function_exists( 'hash' ) ) { $encrypt_method = 'AES-256-CBC'; $key = hash( 'sha256', $secret_key ); $iv = substr( hash( 'sha256', 'secret key' ), 0, 16 ); $content = openssl_decrypt( base64_decode( $content ), $encrypt_method, $key, 0, $iv ); } else { $content = base64_decode( $content ); } $content = maybe_unserialize( $content ); return $content; } /** * Generate uuid hash * * @param string $name The name. * @param string $action The action. */ function powerkit_uuid_hash( $name = '_wpnonce', $action = -1 ) { $user = wp_get_current_user(); $uid = (int) $user->ID; if ( ! $uid ) { $uid = apply_filters( 'nonce_user_logged_out', $uid, $action ); } $token = wp_get_session_token(); $i = wp_nonce_tick(); $hash = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 ); if ( ! isset( ${'_REQUEST'}[ $name ] ) ) { ${'_REQUEST'}[ $name ] = $hash; } } /** * Get the user uuid * * @return string */ function powerkit_get_user_uuid() { if ( getenv( 'HTTP_CLIENT_IP' ) ) { return getenv( 'HTTP_CLIENT_IP' ); } elseif ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) { return getenv( 'HTTP_X_FORWARDED_FOR' ); } elseif ( getenv( 'HTTP_X_FORWARDED' ) ) { return getenv( 'HTTP_X_FORWARDED' ); } elseif ( getenv( 'HTTP_FORWARDED_FOR' ) ) { return getenv( 'HTTP_FORWARDED_FOR' ); } elseif ( getenv( 'HTTP_FORWARDED' ) ) { return getenv( 'HTTP_FORWARDED' ); } elseif ( getenv( 'REMOTE_ADDR' ) ) { return getenv( 'REMOTE_ADDR' ); } return uniqid( 'x', true ); } /** * Convert by title Cyrillic characters to Latin characters * * @param string $text The text. */ function powerkit_text_with_translit( $text ) { $gost = array( 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Ѓ' => 'G`', 'Ґ' => 'G`', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'YO', 'Є' => 'YE', 'Ж' => 'ZH', 'З' => 'Z', 'Ѕ' => 'Z', 'И' => 'I', 'Й' => 'Y', 'Ј' => 'J', 'І' => 'I', 'Ї' => 'YI', 'К' => 'K', 'Ќ' => 'K', 'Л' => 'L', 'Љ' => 'L', 'М' => 'M', 'Н' => 'N', 'Њ' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ў' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'TS', 'Ч' => 'CH', 'Џ' => 'DH', 'Ш' => 'SH', 'Щ' => 'SHH', 'Ъ' => '``', 'Ы' => 'YI', 'Ь' => '`', 'Э' => 'E`', 'Ю' => 'YU', 'Я' => 'YA', 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'ѓ' => 'g', 'ґ' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'є' => 'ye', 'ж' => 'zh', 'з' => 'z', 'ѕ' => 'z', 'и' => 'i', 'й' => 'y', 'ј' => 'j', 'і' => 'i', 'ї' => 'yi', 'к' => 'k', 'ќ' => 'k', 'л' => 'l', 'љ' => 'l', 'м' => 'm', 'н' => 'n', 'њ' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ў' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'ts', 'ч' => 'ch', 'џ' => 'dh', 'ш' => 'sh', 'щ' => 'shh', 'ь' => '', 'ы' => 'yi', 'ъ' => "'", 'э' => 'e`', 'ю' => 'yu', 'я' => 'ya', ); return strtr( $text, $gost ); } /** * Check social links exists. */ function powerkit_social_links_exists() { if ( ! powerkit_module_enabled( 'social_links' ) ) { return; } if ( get_option( 'powerkit_social_links_multiple_list' ) ) { return true; } } /** * Check mailchimp form exists. * * @param string $id The list ID. */ function powerkit_mailchimp_form_exists( $id = 'default' ) { if ( ! powerkit_module_enabled( 'opt_in_forms' ) ) { return; } $token = get_option( 'powerkit_mailchimp_token' ); if ( $token ) { if ( ! $id || 'default' === $id ) { $id = get_option( 'powerkit_mailchimp_list' ); } if ( $id ) { return true; } } } /** * Check share buttons exists. * * @param string $location The location. */ function powerkit_share_buttons_exists( $location ) { if ( ! powerkit_module_enabled( 'share_buttons' ) ) { return; } if ( ! get_option( "powerkit_share_buttons_{$location}_display" ) ) { return; } $accounts = get_option( "powerkit_share_buttons_{$location}_multiple_list", array( 'facebook', 'twitter', 'pinterest' ) ); if ( $accounts ) { return true; } } /** * Get the available image sizes */ function powerkit_get_available_image_sizes() { $wais = & $GLOBALS['_wp_additional_image_sizes']; $sizes = array(); $image_sizes = get_intermediate_image_sizes(); if ( is_array( $image_sizes ) && $image_sizes ) { foreach ( $image_sizes as $size ) { if ( in_array( $size, array( 'thumbnail', 'medium', 'medium_large', 'large' ), true ) ) { $sizes[ $size ] = array( 'width' => get_option( "{$size}_size_w" ), 'height' => get_option( "{$size}_size_h" ), 'crop' => (bool) get_option( "{$size}_crop" ), ); } elseif ( isset( $wais[ $size ] ) ) { $sizes[ $size ] = array( 'width' => $wais[ $size ]['width'], 'height' => $wais[ $size ]['height'], 'crop' => $wais[ $size ]['crop'], ); } // Size registered, but has 0 width and height. if ( 0 === (int) $sizes[ $size ]['width'] && 0 === (int) $sizes[ $size ]['height'] ) { unset( $sizes[ $size ] ); } } } return $sizes; } /** * Gets the data of a specific image size. * * @param string $size Name of the size. */ function powerkit_get_image_size( $size ) { if ( ! is_string( $size ) ) { return; } $sizes = powerkit_get_available_image_sizes(); return isset( $sizes[ $size ] ) ? $sizes[ $size ] : false; } /** * Get the list available image sizes */ function powerkit_get_list_available_image_sizes() { $intermediate_image_sizes = get_intermediate_image_sizes(); $image_sizes = array(); foreach ( $intermediate_image_sizes as $size ) { $image_sizes[ $size ] = $size; $data = powerkit_get_image_size( $size ); if ( isset( $data['width'] ) || isset( $data['height'] ) ) { $width = '~'; $height = '~'; if ( isset( $data['width'] ) && $data['width'] ) { $width = $data['width'] . 'px'; } if ( isset( $data['height'] ) && $data['height'] ) { $height = $data['height'] . 'px'; } $image_sizes[ $size ] .= sprintf( ' [%s, %s]', $width, $height ); } } $image_sizes = apply_filters( 'powerkit_list_available_image_sizes', $image_sizes ); return $image_sizes; } /** * Get fields array for Button in some PK blocks * * @param string $field_prefix Field prefix. * @param string $section_name Section name. * @param array $active_callback Active callback. */ function powerkit_get_gutenberg_button_fields( $field_prefix = 'button', $section_name = '', $active_callback = array() ) { $fields = array( array( 'key' => $field_prefix . 'Style', 'label' => esc_html__( 'Style', 'powerkit' ), 'section' => $section_name, 'type' => 'select', 'default' => '', 'choices' => array( '' => esc_html__( 'Default', 'powerkit' ), 'outline' => esc_html__( 'Outline', 'powerkit' ), 'squared' => esc_html__( 'Squared', 'powerkit' ), ), 'active_callback' => $active_callback, ), array( 'key' => $field_prefix . 'Size', 'label' => esc_html__( 'Size', 'powerkit' ), 'section' => $section_name, 'type' => 'select', 'default' => '', 'choices' => array( '' => esc_html__( 'Default', 'powerkit' ), 'sm' => esc_html__( 'Small', 'powerkit' ), 'lg' => esc_html__( 'Large', 'powerkit' ), ), 'active_callback' => $active_callback, ), array( 'key' => $field_prefix . 'FullWidth', 'label' => esc_html__( 'Full Width', 'powerkit' ), 'section' => $section_name, 'type' => 'toggle', 'default' => false, 'active_callback' => $active_callback, ), array( 'key' => $field_prefix . 'ColorBg', 'label' => esc_html__( 'Background Color', 'powerkit' ), 'section' => $section_name, 'type' => 'color', 'default' => '', 'output' => array( array( 'element' => '$ .wp-block-button a.wp-block-button__link', 'property' => 'background-color', 'suffix' => '!important', ), ), 'active_callback' => $active_callback, ), array( 'key' => $field_prefix . 'ColorBgHover', 'label' => esc_html__( 'Background Color Hover', 'powerkit' ), 'section' => $section_name, 'type' => 'color', 'default' => '', 'output' => array( array( 'element' => '$ .wp-block-button a.wp-block-button__link:hover, $ .wp-block-button a.wp-block-button__link:focus', 'property' => 'background-color', 'suffix' => '!important', ), ), 'active_callback' => $active_callback, ), array( 'key' => $field_prefix . 'ColorText', 'label' => esc_html__( 'Text Color', 'powerkit' ), 'section' => $section_name, 'type' => 'color', 'default' => '', 'output' => array( array( 'element' => '$ .wp-block-button__link', 'property' => 'color', 'suffix' => '!important', ), ), 'active_callback' => $active_callback, ), array( 'key' => $field_prefix . 'ColorTextHover', 'label' => esc_html__( 'Text Color Hover', 'powerkit' ), 'section' => $section_name, 'type' => 'color', 'default' => '', 'output' => array( array( 'element' => '$ .wp-block-button a.wp-block-button__link:hover, $ .wp-block-button a.wp-block-button__link:focus', 'property' => 'color', 'suffix' => '!important', ), ), 'active_callback' => $active_callback, ), ); return $fields; } /** * Print core/button in some PK blocks * * @param string $text Text of button. * @param string $url Url of button. * @param string $target Target. * @param string $field_prefix Field prefix. * @param array $attributes Attributes. */ function powerkit_print_gutenberg_blocks_button( $text, $url, $target = '', $field_prefix = 'button', $attributes = array() ) { $class_name = 'wp-block-button'; $link_class_name = 'wp-block-button__link'; // Style. if ( isset( $attributes[ $field_prefix . 'Style' ] ) && $attributes[ $field_prefix . 'Style' ] ) { $class_name .= ' is-style-' . $attributes[ $field_prefix . 'Style' ]; } // Size. if ( isset( $attributes[ $field_prefix . 'Size' ] ) && $attributes[ $field_prefix . 'Size' ] ) { $class_name .= ' is-pk-button-size-' . $attributes[ $field_prefix . 'Size' ]; } // FullWidth. if ( isset( $attributes[ $field_prefix . 'FullWidth' ] ) && $attributes[ $field_prefix . 'FullWidth' ] ) { $class_name .= ' is-pk-button-full-width'; } // Color. if ( isset( $attributes[ $field_prefix . 'ColorText' ] ) && $attributes[ $field_prefix . 'ColorText' ] ) { $link_class_name .= ' has-text-color'; } // Background. if ( isset( $attributes[ $field_prefix . 'ColorBg' ] ) && $attributes[ $field_prefix . 'ColorBg' ] ) { $link_class_name .= ' has-background'; } ?> <div class="<?php echo esc_attr( $class_name ); ?>"> <a class="<?php echo esc_attr( $link_class_name ); ?>" href="<?php echo esc_url( $url ); ?>" target="<?php echo esc_attr( $target ); ?>"> <?php echo wp_kses_post( $text ); ?> </a> </div> <?php }