diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-content/plugins/portfolio/portfolio.php --- a/wp/wp-content/plugins/portfolio/portfolio.php Thu Sep 29 08:06:27 2022 +0200 +++ b/wp/wp-content/plugins/portfolio/portfolio.php Fri Sep 05 18:40:08 2025 +0200 @@ -1,35 +1,37 @@ ' . __( 'Upgrade to Pro', 'portfolio' ) . '', 'manage_options', - 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/?k=f047e20c92c972c398187a4f70240285&pn=74&v=' . $prtfl_plugin_info["Version"] . '&wp_v=' . $wp_version ); + 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/?k=f047e20c92c972c398187a4f70240285&pn=74&v=' . $prtfl_plugin_info['Version'] . '&wp_v=' . $wp_version, + ); } add_action( 'load-' . $settings, 'prtfl_add_tabs' ); @@ -55,23 +58,19 @@ } } -/* Internationalization, first(!) */ -if ( ! function_exists( 'prtfl_plugins_loaded' ) ) { - function prtfl_plugins_loaded() { - load_plugin_textdomain( 'portfolio', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); - } -} - if ( ! function_exists( 'prtfl_init' ) ) { + /** + * Main init function + */ function prtfl_init() { global $prtfl_boxes, $prtfl_plugin_info; - require_once( dirname( __FILE__ ) . '/bws_menu/bws_include.php' ); + require_once dirname( __FILE__ ) . '/bws_menu/bws_include.php'; bws_include_init( plugin_basename( __FILE__ ) ); if ( ! $prtfl_plugin_info ) { if ( ! function_exists( 'get_plugin_data' ) ) { - require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); + require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $prtfl_plugin_info = get_plugin_data( __FILE__ ); } @@ -80,25 +79,25 @@ $prtfl_boxes['Portfolio-Info'] = array( array( - 'name' => '_prtfl_short_descr', - 'title' => __( 'Short description', 'portfolio' ), - 'type' => 'text' + 'name' => '_prtfl_short_descr', + 'title' => __( 'Short description', 'portfolio' ), + 'type' => 'text', ), array( - 'name' => '_prtfl_date_compl', - 'title' => __( 'Date of completion', 'portfolio' ), - 'type' => 'text' + 'name' => '_prtfl_date_compl', + 'title' => __( 'Date of completion', 'portfolio' ), + 'type' => 'text', ), array( - 'name' => '_prtfl_link', - 'title' => __( 'Project, URL', 'portfolio' ), - 'type' => 'url' + 'name' => '_prtfl_link', + 'title' => __( 'Project, URL', 'portfolio' ), + 'type' => 'url', ), array( - 'name' => '_prtfl_svn', - 'title' => __( 'Source Files, URL', 'portfolio' ), - 'type' => 'url' - ) + 'name' => '_prtfl_svn', + 'title' => __( 'Source Files, URL', 'portfolio' ), + 'type' => 'url', + ), ); /* Call register settings function */ register_prtfl_settings(); @@ -110,26 +109,35 @@ add_action( 'template_include', 'prtfl_template_include' ); } - /* demo data */ + /* Demo data */ $demo_options = get_option( 'prtfl_demo_options' ); - if ( ! empty( $demo_options ) || ( isset( $_GET['page'] ) && 'portfolio.php' == $_GET['page'] ) ) { + if ( ! empty( $demo_options ) || ( isset( $_GET['page'] ) && 'portfolio.php' === $_GET['page'] ) ) { prtfl_include_demo_data(); } } } if ( ! function_exists( 'prtfl_admin_init' ) ) { + /** + * Init for dashboard + */ function prtfl_admin_init() { global $bws_plugin_info, $prtfl_plugin_info, $bws_shortcode_list, $wpdb, $pagenow, $prtfl_options; if ( empty( $bws_plugin_info ) ) { - $bws_plugin_info = array( 'id' => '74', 'version' => $prtfl_plugin_info["Version"] ); + $bws_plugin_info = array( + 'id' => '74', + 'version' => $prtfl_plugin_info['Version'], + ); } /* add Portfolio to global $bws_shortcode_list */ - $bws_shortcode_list['prtfl'] = array( 'name' => 'Portfolio', 'js_function' => 'prtfl_shortcode_init' ); + $bws_shortcode_list['prtfl'] = array( + 'name' => 'Portfolio', + 'js_function' => 'prtfl_shortcode_init', + ); - if ( 'plugins.php' == $pagenow ) { + if ( 'plugins.php' === $pagenow ) { /* Install the option defaults */ if ( function_exists( 'bws_plugin_banner_go_pro' ) ) { register_prtfl_settings(); @@ -139,8 +147,19 @@ } } -/* Function for activation plugin */ +if ( ! function_exists( 'prtfl_plugins_loaded' ) ) { + /** + * Load textdomain + */ + function prtfl_plugins_loaded() { + load_plugin_textdomain( 'portfolio', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); + } +} + if ( ! function_exists( 'prtfl_plugin_activate' ) ) { + /** + * Creating a default options for showing ads. Starts on plugin activation + */ function prtfl_plugin_activate() { if ( is_multisite() ) { switch_to_blog( 1 ); @@ -152,8 +171,10 @@ } } -/* Register settings function */ if ( ! function_exists( 'register_prtfl_settings' ) ) { + /** + * Register settings function + */ function register_prtfl_settings() { global $prtfl_options, $prtfl_plugin_info, $wpdb; @@ -167,7 +188,7 @@ $prtfl_options = get_option( 'prtfl_options' ); /* Array merge incase this version has added new options */ - if ( ! isset( $prtfl_options['plugin_option_version'] ) || $prtfl_options['plugin_option_version'] != $prtfl_plugin_info["Version"] ) { + if ( ! isset( $prtfl_options['plugin_option_version'] ) || $prtfl_options['plugin_option_version'] !== $prtfl_plugin_info['Version'] ) { $wpdb->query( "UPDATE {$wpdb->prefix}posts SET post_type = 'bws-portfolio' WHERE post_type = 'portfolio'" ); @@ -181,7 +202,7 @@ $option_defaults['post_type_name'] = 'bws-portfolio'; } - $prtfl_options = array_merge( $option_defaults, $prtfl_options ); + $prtfl_options = array_merge( $option_defaults, $prtfl_options ); $prtfl_options['plugin_option_version'] = $option_defaults['plugin_option_version']; /* show pro features */ $prtfl_options['hide_premium_options'] = array(); @@ -190,117 +211,119 @@ } if ( function_exists( 'add_image_size' ) ) { - if ( 'portfolio-thumb' == $prtfl_options['image_size_album'] ) { + if ( 'portfolio-thumb' === $prtfl_options['image_size_album'] ) { add_image_size( 'portfolio-thumb', $prtfl_options['custom_size_px']['portfolio-thumb'][0], $prtfl_options['custom_size_px']['portfolio-thumb'][1], true ); } - if ( 'portfolio-photo-thumb' == $prtfl_options['image_size_photo'] ) { + if ( 'portfolio-photo-thumb' === $prtfl_options['image_size_photo'] ) { add_image_size( 'portfolio-photo-thumb', $prtfl_options['custom_size_px']['portfolio-photo-thumb'][0], $prtfl_options['custom_size_px']['portfolio-photo-thumb'][1], true ); } } } } -/** - * Get Plugin default options - */ if ( ! function_exists( 'prtfl_get_options_default' ) ) { + /** + * Get Plugin default options + */ function prtfl_get_options_default() { global $prtfl_plugin_info; $option_defaults = array( /* internal general */ - 'plugin_option_version' => $prtfl_plugin_info["Version"], - 'first_install' => strtotime( "now" ), - 'suggest_feature_banner' => 1, - 'display_settings_notice' => 1, + 'plugin_option_version' => $prtfl_plugin_info['Version'], + 'first_install' => strtotime( 'now' ), + 'suggest_feature_banner' => 1, + 'display_settings_notice' => 1, /* internal */ - 'display_demo_notice' => 1, + 'display_demo_notice' => 1, /* settings */ - 'image_size_album' => 'medium', - 'image_size_photo' => 'thumbnail', - 'custom_size_px' => array( - 'portfolio-thumb' => array( 280, 300 ), - 'portfolio-photo-thumb' => array( 240, 260 ) - ), - 'page_id_portfolio_template' => '', - 'order_by' => 'date', - 'order' => 'DESC', - 'custom_image_row_count' => 3, - 'custom_portfolio_row_count' => 1, - 'date_additional_field' => 1, - 'link_additional_field' => 1, - 'shrdescription_additional_field' => 1, - 'description_additional_field' => 1, - 'svn_additional_field' => 1, - 'svn_additional_field_for_non_logged' => 1, - 'executor_additional_field' => 1, - 'technologies_additional_field' => 1, - 'link_additional_field_for_non_registered' => 1, - 'date_text_field' => __( 'Date of completion:', 'portfolio' ), - 'link_text_field' => __( 'Project, URL:', 'portfolio' ), - 'shrdescription_text_field' => __( 'Short description:', 'portfolio' ), - 'description_text_field' => __( 'Description:', 'portfolio' ), - 'svn_text_field' => __( 'Source Files, URL:', 'portfolio' ), - 'executor_text_field' => __( 'Executor:', 'portfolio' ), - 'screenshot_text_field' => __( 'More screenshots:', 'portfolio' ), - 'technologies_text_field' => __( 'Technologies:', 'portfolio' ), + 'image_size_album' => 'medium', + 'image_size_photo' => 'thumbnail', + 'custom_size_px' => array( + 'portfolio-thumb' => array( 280, 300 ), + 'portfolio-photo-thumb' => array( 240, 260 ), + ), + 'page_id_portfolio_template' => '', + 'order_by' => 'date', + 'order' => 'DESC', + 'custom_image_row_count' => 3, + 'custom_portfolio_row_count' => 1, + 'date_additional_field' => 1, + 'link_additional_field' => 1, + 'shrdescription_additional_field' => 1, + 'description_additional_field' => 1, + 'svn_additional_field' => 1, + 'svn_additional_field_for_non_logged' => 1, + 'executor_additional_field' => 1, + 'technologies_additional_field' => 1, + 'link_additional_field_for_non_registered' => 1, + 'date_text_field' => __( 'Date of completion:', 'portfolio' ), + 'link_text_field' => __( 'Project, URL:', 'portfolio' ), + 'shrdescription_text_field' => __( 'Short description:', 'portfolio' ), + 'description_text_field' => __( 'Description:', 'portfolio' ), + 'svn_text_field' => __( 'Source Files, URL:', 'portfolio' ), + 'executor_text_field' => __( 'Executor:', 'portfolio' ), + 'screenshot_text_field' => __( 'More screenshots:', 'portfolio' ), + 'technologies_text_field' => __( 'Technologies:', 'portfolio' ), /* misc */ - 'slug' => 'portfolio', - 'post_type_name' => 'bws-portfolio', + 'slug' => 'portfolio', + 'post_type_name' => 'bws-portfolio', /* other */ - 'widget_updated' => 1, /* this option is for updating plugin was added in v2.29 */ - 'flush_rewrite_rules' => 1, + 'widget_updated' => 1, /* this option is for updating plugin was added in v2.29 */ + 'flush_rewrite_rules' => 1, ); return $option_defaults; } } -/* Create post type for portfolio */ if ( ! function_exists( 'prtfl_post_type_portfolio' ) ) { + /** + * Create post type for portfolio + */ function prtfl_post_type_portfolio() { global $wpdb, $prtfl_options; register_post_type( $prtfl_options['post_type_name'], array( - 'labels' => array( - 'name' => __( 'Portfolio', 'portfolio' ), - 'all_items' => __( 'Projects', 'portfolio' ), - 'singular_name' => __( 'Project', 'portfolio' ), - 'add_new' => __( 'Add New', 'portfolio' ), - 'add_new_item' => __( 'Add New Project', 'portfolio' ), - 'edit' => __( 'Edit', 'portfolio' ), - 'edit_item' => __( 'Edit Project', 'portfolio' ), - 'new_item' => __( 'New Project', 'portfolio' ), - 'view' => __( 'View Project', 'portfolio' ), - 'view_item' => __( 'View Project', 'portfolio' ), - 'search_items' => __( 'Search Projects', 'portfolio' ), - 'not_found' => __( 'No project found', 'portfolio' ), - 'not_found_in_trash' => __( 'No project found in Trash', 'portfolio' ), - 'parent' => __( 'Parent Project', 'portfolio' ), - 'filter_items_list' => __( 'Filter projects list', 'portfolio' ), - 'items_list_navigation' => __( 'Projects list navigation', 'portfolio' ), - 'items_list' => __( 'Projects list', 'portfolio' ) + 'labels' => array( + 'name' => __( 'Portfolio', 'portfolio' ), + 'all_items' => __( 'Projects', 'portfolio' ), + 'singular_name' => __( 'Project', 'portfolio' ), + 'add_new' => __( 'Add New', 'portfolio' ), + 'add_new_item' => __( 'Add New Project', 'portfolio' ), + 'edit' => __( 'Edit', 'portfolio' ), + 'edit_item' => __( 'Edit Project', 'portfolio' ), + 'new_item' => __( 'New Project', 'portfolio' ), + 'view' => __( 'View Project', 'portfolio' ), + 'view_item' => __( 'View Project', 'portfolio' ), + 'search_items' => __( 'Search Projects', 'portfolio' ), + 'not_found' => __( 'No project found', 'portfolio' ), + 'not_found_in_trash' => __( 'No project found in Trash', 'portfolio' ), + 'parent' => __( 'Parent Project', 'portfolio' ), + 'filter_items_list' => __( 'Filter projects list', 'portfolio' ), + 'items_list_navigation' => __( 'Projects list navigation', 'portfolio' ), + 'items_list' => __( 'Projects list', 'portfolio' ), ), - 'description' => __( 'Create a project item', 'portfolio' ), - 'public' => true, - 'show_ui' => true, - 'publicly_queryable' => true, - 'exclude_from_search' => true, - 'hierarchical' => true, - 'query_var' => true, - 'register_meta_box_cb' => 'prtfl_init_metaboxes', - 'rewrite' => array( 'slug' => $prtfl_options['slug'] ), - 'menu_icon' => 'dashicons-id-alt', - 'supports' => array( + 'description' => __( 'Create a project item', 'portfolio' ), + 'public' => true, + 'show_ui' => true, + 'publicly_queryable' => true, + 'exclude_from_search' => true, + 'hierarchical' => true, + 'query_var' => true, + 'register_meta_box_cb' => 'prtfl_init_metaboxes', + 'rewrite' => array( 'slug' => $prtfl_options['slug'] ), + 'menu_icon' => 'dashicons-id-alt', + 'supports' => array( 'title', /* Text input field to create a post title. */ 'editor', 'custom-fields', 'comments', /* Ability to turn on/off comments. */ 'thumbnail', /* Displays a box for featured image. */ 'author', - 'page-attributes' - ) + 'page-attributes', + ), ) ); @@ -308,31 +331,31 @@ 'portfolio_executor_profile', $prtfl_options['post_type_name'], array( - 'hierarchical' => false, + 'hierarchical' => false, 'update_count_callback' => '_update_post_term_count', - 'labels' => array( - 'name' => __( 'Executors', 'portfolio' ), - 'singular_name' => __( 'Executor', 'portfolio' ), - 'search_items' => __( 'Search Executors', 'portfolio' ), - 'popular_items' => __( 'Popular Executors', 'portfolio' ), - 'all_items' => __( 'All Executors', 'portfolio' ), - 'parent_item' => __( 'Parent Executor', 'portfolio' ), - 'parent_item_colon' => __( 'Parent Executor:', 'portfolio' ), - 'edit_item' => __( 'Edit Executor', 'portfolio' ), - 'update_item' => __( 'Update Executor', 'portfolio' ), - 'add_new_item' => __( 'Add New Executor', 'portfolio' ), - 'new_item_name' => __( 'New Executor Name', 'portfolio' ), - 'separate_items_with_commas' => __( 'Separate executors with commas', 'portfolio' ), - 'add_or_remove_items' => __( 'Add or remove Executor', 'portfolio' ), - 'choose_from_most_used' => __( 'Choose from the most used Executors', 'portfolio' ), - 'menu_name' => __( 'Executors', 'portfolio' ), - 'items_list_navigation' => __( 'Executors list navigation', 'portfolio' ), - 'items_list' => __( 'Executors list', 'portfolio' ) + 'labels' => array( + 'name' => __( 'Executors', 'portfolio' ), + 'singular_name' => __( 'Executor', 'portfolio' ), + 'search_items' => __( 'Search Executors', 'portfolio' ), + 'popular_items' => __( 'Popular Executors', 'portfolio' ), + 'all_items' => __( 'All Executors', 'portfolio' ), + 'parent_item' => __( 'Parent Executor', 'portfolio' ), + 'parent_item_colon' => __( 'Parent Executor:', 'portfolio' ), + 'edit_item' => __( 'Edit Executor', 'portfolio' ), + 'update_item' => __( 'Update Executor', 'portfolio' ), + 'add_new_item' => __( 'Add New Executor', 'portfolio' ), + 'new_item_name' => __( 'New Executor Name', 'portfolio' ), + 'separate_items_with_commas' => __( 'Separate executors with commas', 'portfolio' ), + 'add_or_remove_items' => __( 'Add or remove Executor', 'portfolio' ), + 'choose_from_most_used' => __( 'Choose from the most used Executors', 'portfolio' ), + 'menu_name' => __( 'Executors', 'portfolio' ), + 'items_list_navigation' => __( 'Executors list navigation', 'portfolio' ), + 'items_list' => __( 'Executors list', 'portfolio' ), ), - 'sort' => true, - 'args' => array( 'orderby' => 'term_order' ), - 'rewrite' => array( 'slug' => 'executor_profile' ), - 'show_tagcloud' => false + 'sort' => true, + 'args' => array( 'orderby' => 'term_order' ), + 'rewrite' => array( 'slug' => 'executor_profile' ), + 'show_tagcloud' => false, ) ); @@ -340,92 +363,98 @@ 'portfolio_technologies', $prtfl_options['post_type_name'], array( - 'hierarchical' => false, - 'update_count_callback' => '_update_post_term_count', - 'labels' => array( - 'name' => __( 'Technologies', 'portfolio' ), - 'singular_name' => __( 'Technology', 'portfolio' ), - 'search_items' => __( 'Search Technologies', 'portfolio' ), - 'popular_items' => __( 'Popular Technologies', 'portfolio' ), - 'all_items' => __( 'All Technologies', 'portfolio' ), - 'parent_item' => __( 'Parent Technology', 'portfolio' ), - 'parent_item_colon' => __( 'Parent Technology:', 'portfolio' ), - 'edit_item' => __( 'Edit Technology', 'portfolio' ), - 'update_item' => __( 'Update Technology', 'portfolio' ), - 'add_new_item' => __( 'Add New Technology', 'portfolio' ), - 'new_item_name' => __( 'New Technology Name', 'portfolio' ), - 'separate_items_with_commas' => __( 'Separate technologies with commas', 'portfolio' ), - 'add_or_remove_items' => __( 'Add or remove Technology', 'portfolio' ), - 'choose_from_most_used' => __( 'Choose from the most used technologies', 'portfolio' ), - 'menu_name' => __( 'Technologies', 'portfolio' ), - 'items_list_navigation' => __( 'Technologies list navigation', 'portfolio' ), - 'items_list' => __( 'Technologies list', 'portfolio' ) + 'hierarchical' => false, + 'update_count_callback' => '_update_post_term_count', + 'labels' => array( + 'name' => __( 'Technologies', 'portfolio' ), + 'singular_name' => __( 'Technology', 'portfolio' ), + 'search_items' => __( 'Search Technologies', 'portfolio' ), + 'popular_items' => __( 'Popular Technologies', 'portfolio' ), + 'all_items' => __( 'All Technologies', 'portfolio' ), + 'parent_item' => __( 'Parent Technology', 'portfolio' ), + 'parent_item_colon' => __( 'Parent Technology:', 'portfolio' ), + 'edit_item' => __( 'Edit Technology', 'portfolio' ), + 'update_item' => __( 'Update Technology', 'portfolio' ), + 'add_new_item' => __( 'Add New Technology', 'portfolio' ), + 'new_item_name' => __( 'New Technology Name', 'portfolio' ), + 'separate_items_with_commas' => __( 'Separate technologies with commas', 'portfolio' ), + 'add_or_remove_items' => __( 'Add or remove Technology', 'portfolio' ), + 'choose_from_most_used' => __( 'Choose from the most used technologies', 'portfolio' ), + 'menu_name' => __( 'Technologies', 'portfolio' ), + 'items_list_navigation' => __( 'Technologies list navigation', 'portfolio' ), + 'items_list' => __( 'Technologies list', 'portfolio' ), ), - 'query_var' => 'technologies', - 'rewrite' => array( 'slug' => 'technologies' ), - 'show_ui' => true, - 'show_tagcloud' => false + 'query_var' => 'technologies', + 'rewrite' => array( 'slug' => 'technologies' ), + 'show_ui' => true, + 'show_tagcloud' => false, ) ); - if ( isset( $prtfl_options["flush_rewrite_rules"] ) && 1 == $prtfl_options["flush_rewrite_rules"] ) { + if ( isset( $prtfl_options['flush_rewrite_rules'] ) && 1 === absint( $prtfl_options['flush_rewrite_rules'] ) ) { flush_rewrite_rules(); - $prtfl_options["flush_rewrite_rules"] = 0; + $prtfl_options['flush_rewrite_rules'] = 0; update_option( 'prtfl_options', $prtfl_options ); } } } -/** - * Plugin include demo - * @return void - */ if ( ! function_exists( 'prtfl_include_demo_data' ) ) { + /** + * Plugin include demo + */ function prtfl_include_demo_data() { - global $prtfl_BWS_demo_data; - require_once( plugin_dir_path( __FILE__ ) . 'inc/demo-data/class-bws-demo-data.php' ); - $args = array( - 'plugin_basename' => plugin_basename( __FILE__ ), - 'plugin_prefix' => 'prtfl_', - 'plugin_name' => 'Portfolio', - 'plugin_page' => 'portfolio.php&bws_active_tab=import-export', - 'demo_folder' => plugin_dir_path( __FILE__ ) . 'inc/demo-data/' + global $prtfl_bws_demo_data; + require_once plugin_dir_path( __FILE__ ) . 'includes/demo-data/class-bws-demo-data.php'; + $args = array( + 'plugin_basename' => plugin_basename( __FILE__ ), + 'plugin_prefix' => 'prtfl_', + 'plugin_name' => 'Portfolio', + 'plugin_page' => 'portfolio.php&bws_active_tab=import-export', + 'demo_folder' => plugin_dir_path( __FILE__ ) . 'includes/demo-data/', ); - $prtfl_BWS_demo_data = new Bws_Demo_Data( $args ); + $prtfl_bws_demo_data = new Bws_Demo_Data( $args ); /* filter for image url from demo data */ - add_filter( 'wp_get_attachment_url', array( $prtfl_BWS_demo_data, 'bws_wp_get_attachment_url' ), 10, 2 ); - add_filter( 'wp_get_attachment_image_attributes', array( $prtfl_BWS_demo_data, 'bws_wp_get_attachment_image_attributes' ), 10, 3 ); - add_filter( 'wp_update_attachment_metadata',array( $prtfl_BWS_demo_data, 'bws_wp_update_attachment_metadata' ), 10, 2 ); + add_filter( 'wp_get_attachment_url', array( $prtfl_bws_demo_data, 'bws_wp_get_attachment_url' ), 10, 2 ); + add_filter( 'wp_get_attachment_image_attributes', array( $prtfl_bws_demo_data, 'bws_wp_get_attachment_image_attributes' ), 10, 3 ); + add_filter( 'wp_update_attachment_metadata', array( $prtfl_bws_demo_data, 'bws_wp_update_attachment_metadata' ), 10, 2 ); } } -/** - * Plugin settings page - * @return void - */ if ( ! function_exists( 'prtfl_settings_page' ) ) { + /** + * Plugin settings page + */ function prtfl_settings_page() { - if ( ! class_exists( 'Bws_Settings_Tabs' ) ) - require_once( dirname( __FILE__ ) . '/bws_menu/class-bws-settings.php' ); - require_once( dirname( __FILE__ ) . '/inc/class-prtfl-settings.php' ); + if ( ! class_exists( 'Bws_Settings_Tabs' ) ) { + require_once dirname( __FILE__ ) . '/bws_menu/class-bws-settings.php'; + } + require_once dirname( __FILE__ ) . '/includes/class-prtfl-settings.php'; $page = new Prtfl_Settings_Tabs( plugin_basename( __FILE__ ) ); - if ( method_exists( $page,'add_request_feature' ) ) - $page->add_request_feature(); ?> + if ( method_exists( $page, 'add_request_feature' ) ) { + $page->add_request_feature(); + } ?>
-

+

display_content(); ?>
- query_vars["technologies"] ) || isset( $query->query_vars["portfolio_executor_profile"] ) ) && ( ! is_admin() ) ) { + if ( ( isset( $query->query_vars['technologies'] ) || isset( $query->query_vars['portfolio_executor_profile'] ) ) && ( ! is_admin() ) ) { $query->set( 'post_type', array( $prtfl_options['post_type_name'] ) ); } return $query; } } -/** - * Class extends WP class WP_Widget, and create new widget - */ -if ( ! class_exists( 'portfolio_technologies_widget' ) ) { - class portfolio_technologies_widget extends WP_Widget { - /* constructor of class */ - function __construct() { - parent::__construct( - 'portfolio_technologies_widget', - __( 'Technologies', 'portfolio' ), - array( 'description' => __( 'The tag cloud with your most used portfolio technologies.', 'portfolio' ) ) - ); +if ( ! function_exists( 'prtfl_register_widget' ) ) { + /** + * Create new widget + */ + function prtfl_register_widget() { + if ( ! class_exists( 'Portfolio_Technologies_Widget' ) ) { + require_once dirname( __FILE__ ) . '/includes/class-portfolio-technologies-widget.php'; } - /* Function to displaying widget in front end */ - function widget( $args, $instance ) { - $widget_title = isset( $instance['widget_title'] ) ? $instance['widget_title'] : null; - $widget_title = apply_filters( 'widget_title', $widget_title, $instance, $this->id_base ); - echo $args['before_widget']; - if ( $widget_title ) - echo $args['before_title'] . $widget_title . $args['after_title']; - echo '
'; - wp_tag_cloud( apply_filters( 'widget_tag_cloud_args', array( 'taxonomy' => 'portfolio_technologies', 'number' => 0 ) ) ); - echo "
\n"; - echo $args['after_widget']; + register_widget( 'Portfolio_Technologies_Widget' ); + if ( ! class_exists( 'Prtfl_Widget' ) ) { + require_once dirname( __FILE__ ) . '/includes/class-prtfl-widget.php'; } - /* Function to save widget settings */ - function update( $new_instance, $old_instance ) { - $instance = array(); - $instance['widget_title'] = ( ! empty( $new_instance['widget_title'] ) ) ? strip_tags( $new_instance['widget_title'] ) : null; - return $instance; - } - /* Function to displaying widget settings in back end */ - function form( $instance ) { - $widget_title = isset( $instance['widget_title'] ) ? stripslashes( esc_html( $instance['widget_title'] ) ) : null; ?> -

- - -

- post_name . '/([^/]+)/?$'] ) || ! isset( $rules[ $parent->post_name . '/([^/]+)/?$'] ) ) { - $newrules['(.+)/' . $parent->post_name . '/([^/]+)/?$'] = 'index.php?post_type=' . $prtfl_options['post_type_name'] . '&name=$matches[2]&posts_per_page=-1'; - $newrules[ $parent->post_name . '/([^/]+)/?$'] = 'index.php?post_type=' . $prtfl_options['post_type_name'] . '&name=$matches[1]&posts_per_page=-1'; - $newrules[ $parent->post_name . '/page/([^/]+)/?$'] = 'index.php?pagename=' . $parent->post_name . '&paged=$matches[1]'; - $newrules[ $parent->post_name . '/page/([^/]+)?$'] = 'index.php?pagename=' . $parent->post_name . '&paged=$matches[1]'; + if ( ! isset( $rules[ '(.+)/' . $parent->post_name . '/([^/]+)/?$' ] ) || ! isset( $rules[ $parent->post_name . '/([^/]+)/?$' ] ) ) { + $newrules[ '(.+)/' . $parent->post_name . '/([^/]+)/?$' ] = 'index.php?post_type=' . $prtfl_options['post_type_name'] . '&name=$matches[2]&posts_per_page=-1'; + $newrules[ $parent->post_name . '/([^/]+)/?$' ] = 'index.php?post_type=' . $prtfl_options['post_type_name'] . '&name=$matches[1]&posts_per_page=-1'; + $newrules[ $parent->post_name . '/page/([^/]+)/?$' ] = 'index.php?pagename=' . $parent->post_name . '&paged=$matches[1]'; + $newrules[ $parent->post_name . '/page/([^/]+)?$' ] = 'index.php?pagename=' . $parent->post_name . '&paged=$matches[1]'; } } } @@ -520,31 +529,40 @@ $newrules[ $prtfl_options['slug'] . '/.+?/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?attachment=$matches[1]&feed=$matches[2]'; $newrules[ $prtfl_options['slug'] . '/.+?/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?attachment=$matches[1]&feed=$matches[2]'; } - if ( $rules ) + if ( $rules ) { return array_merge( $newrules, $rules ); + } } } -/** -* Load a template. Handles template usage so that plugin can use own templates instead of the themes. -* -* Templates are in the 'templates' folder. -* overrides in /{theme}/bws-templates/ by default. -* @param mixed $template -* @return string -*/ if ( ! function_exists( 'prtfl_template_include' ) ) { + /** + * Load a template. Handles template usage so that plugin can use own templates instead of the themes. + * + * Templates are in the 'templates' folder. + * overrides in /{theme}/bws-templates/ by default. + * + * @param mixed $template Template for this post. + * @return string $template New template. + */ function prtfl_template_include( $template ) { - global $prtfl_options, $wp_query; + global $prtfl_options, $wp_query, $prtfl_plugin_info; + + if ( ! $prtfl_plugin_info ) { + if ( ! function_exists( 'get_plugin_data' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + $prtfl_plugin_info = get_plugin_data( __FILE__ ); + } if ( function_exists( 'is_embed' ) && is_embed() ) { return $template; } $post_type = get_post_type(); - if ( is_single() && $prtfl_options['post_type_name'] == $post_type ) { + if ( is_single() && $prtfl_options['post_type_name'] === $post_type ) { $file = 'portfolio-post.php'; - } elseif ( $prtfl_options['post_type_name'] == $post_type && ( isset( $wp_query->query_vars['technologies'] ) || isset( $wp_query->query_vars['portfolio_executor_profile'] ) ) ) { + } elseif ( $prtfl_options['post_type_name'] === $post_type && ( isset( $wp_query->query_vars['technologies'] ) || isset( $wp_query->query_vars['portfolio_executor_profile'] ) ) ) { $file = 'portfolio.php'; } elseif ( ! empty( $prtfl_options['page_id_portfolio_template'] ) && is_page( $prtfl_options['page_id_portfolio_template'] ) ) { $file = 'portfolio.php'; @@ -552,10 +570,10 @@ if ( isset( $file ) ) { if ( ! wp_script_is( 'prtfl_front_script', 'registered' ) ) { - wp_register_script( 'prtfl_front_script', plugins_url( 'js/front_script.js', __FILE__ ), array( 'jquery' ) ); + wp_register_script( 'prtfl_front_script', plugins_url( 'js/front_script.js', __FILE__ ), array( 'jquery' ), $prtfl_plugin_info['Version'], true ); } - $find = array( $file, 'bws-templates/' . $file ); + $find = array( $file, 'bws-templates/' . $file ); $template = locate_template( $find ); if ( ! $template ) { @@ -567,8 +585,10 @@ } } -/* Initialization of all metaboxes on the 'Add Portfolio' and Edit Portfolio pages */ if ( ! function_exists( 'prtfl_init_metaboxes' ) ) { + /** + * Initialization of all metaboxes on the 'Add Portfolio' and Edit Portfolio pages + */ function prtfl_init_metaboxes() { global $prtfl_options; add_meta_box( 'prtfl_metabox_images', __( 'Images', 'portfolio' ), 'prtfl_metabox_images_block', $prtfl_options['post_type_name'], 'normal', 'high' ); @@ -583,73 +603,85 @@ } } -/* Create custom meta box for portfolio post type */ if ( ! function_exists( 'prtfl_post_custom_box' ) ) { + /** + * Create custom meta box for portfolio post type + * + * @param string $obj Object. + * @param array $box Box array. + */ function prtfl_post_custom_box( $obj = '', $box = '' ) { global $prtfl_boxes, $prtfl_plugin_info, $wp_version, $prtfl_options; /* Generate box contents */ foreach ( $prtfl_boxes[ $box['id'] ] as $box ) { - echo prtfl_general_field( $box ); + echo wp_kses_post( prtfl_general_field( $box ) ); } $bws_hide_premium_options_check = bws_hide_premium_options_check( $prtfl_options ); - if ( ! $bws_hide_premium_options_check ) { ?> + if ( ! $bws_hide_premium_options_check ) { + ?>
-

-

+ 1, 'textarea_name' => 'prtfl_client', 'textarea_rows' => 5, - 'tinymce' => 1 + 'tinymce' => 1, ); - wp_editor( '', 'prtfl_client', $settings ); ?> + wp_editor( '', 'prtfl_client', $settings ); + ?>
-

+

- +

- ID, 'prtfl_information', true ); - $value = ! empty( $post_meta ) && is_array( $post_meta ) && ! empty( $post_meta[ $args['name'] ] ) ? $post_meta[ $args['name'] ] : ""; ?> + $value = ! empty( $post_meta ) && is_array( $post_meta ) && ! empty( $post_meta[ $args['name'] ] ) ? $post_meta[ $args['name'] ] : ''; + ?>
-

-

+

+

- + global $prtfl_plugin_info, $wp_version; + ?>
@@ -657,39 +689,41 @@
    -
  • -
  • +
  • +
    - +
- &wp_v=" target="_blank" title="Portfolio Pro Plugin"> +
- + global $prtfl_plugin_info, $wp_version; + ?>
@@ -697,40 +731,42 @@
    -
  • -
  • +
  • +
    - - + +
- &wp_v=" target="_blank" title="Portfolio Pro Plugin"> +
- + global $prtfl_plugin_info, $wp_version; + ?>
@@ -738,55 +774,61 @@
    -
  • -
  • +
  • +
    - - + +
- &wp_v=" target="_blank" title="Portfolio Pro Plugin"> +
- + global $post; + ?>
- +

- +

- post_type && ! wp_is_post_revision( $post_id ) && ! empty( $_POST ) ) { /* Don't store custom data twice */ - /* Verify this came from the our screen and with proper authorization, because save_post can be triggered at other times */ + if ( $prtfl_options['post_type_name'] === $post->post_type && ! wp_is_post_revision( $post_id ) && ! empty( $_POST ) ) { + /** + * Don't store custom data twice + * Verify this came from the our screen and with proper authorization, because save_post can be triggered at other times + */ if ( ! current_user_can( 'edit_page', $post->ID ) ) { return $post->ID; } @@ -840,17 +893,17 @@ foreach ( $prtfl_boxes as $prtfl_boxe ) { foreach ( $prtfl_boxe as $prtfl_fields ) { if ( isset( $_POST[ $prtfl_fields['name'] ] ) ) { - if ( 'url' == $prtfl_fields['type'] ) { - $my_data[ $prtfl_fields['name'] ] = esc_url( $_POST[ $prtfl_fields['name'] ] ); + if ( 'url' === $prtfl_fields['type'] ) { + $my_data[ $prtfl_fields['name'] ] = esc_url( wp_unslash( $_POST[ $prtfl_fields['name'] ] ) ); } else { - $my_data[ $prtfl_fields['name'] ] = stripslashes( esc_html( $_POST[ $prtfl_fields['name'] ] ) ); + $my_data[ $prtfl_fields['name'] ] = sanitize_text_field( wp_unslash( $_POST[ $prtfl_fields['name'] ] ) ); } } } } if ( isset( $my_data ) ) { /* Add values of $my_data as custom fields. Let's cycle through the $my_data array! */ - if ( get_post_meta( $post->ID, 'prtfl_information', FALSE ) ) { + if ( get_post_meta( $post->ID, 'prtfl_information', false ) ) { /* Custom field has a value and this custom field exists in database */ update_post_meta( $post->ID, 'prtfl_information', $my_data ); } else { @@ -859,20 +912,23 @@ } } if ( isset( $_POST['prtfl_images'] ) ) { - $attachment_ids = ! empty( $_POST['prtfl_images'] ) ? array_filter( explode( ',', sanitize_text_field( $_POST['prtfl_images'] ) ) ) : array(); + $attachment_ids = ! empty( $_POST['prtfl_images'] ) ? array_filter( explode( ',', sanitize_text_field( wp_unslash( $_POST['prtfl_images'] ) ) ) ) : array(); update_post_meta( $post_id, '_prtfl_images', implode( ',', $attachment_ids ) ); } } } } -/** - * Replace shortcode [latest_portfolio_items] from portfolio content before portfolio saving - */ if ( ! function_exists( 'prtfl_content_save_pre' ) ) { + /** + * Replace shortcode [latest_portfolio_items] from portfolio content before portfolio saving + * + * @param string $content Content. + * @returnm string $content Content. + */ function prtfl_content_save_pre( $content ) { global $post, $prtfl_options; - if ( isset( $post ) && $prtfl_options['post_type_name'] == $post->post_type && ! wp_is_post_revision( $post->ID ) && ! empty( $_POST ) ) { + if ( isset( $post ) && $prtfl_options['post_type_name'] === $post->post_type && ! wp_is_post_revision( $post->ID ) && ! empty( $_POST ) ) { /* remove shortcode */ $content = preg_replace( '/\[latest_portfolio_items count=[\d]*\]/', '', $content ); } @@ -880,33 +936,41 @@ } } -/* this function add custom fields and images for PDF&Print plugin in Portfolio post */ if ( ! function_exists( 'prtfl_add_pdf_print_content' ) ) { + /** + * Add custom fields and images for PDF&Print plugin in Portfolio post + * + * @param string $content Contetn for print. + */ function prtfl_add_pdf_print_content( $content ) { global $post, $prtfl_options; $current_post_type = get_post_type(); - $custom_content = ''; + $custom_content = ''; - if ( $prtfl_options['post_type_name'] == $current_post_type && ! empty( $post ) ) { + if ( ! $prtfl_options ) { + $prtfl_options = get_option( 'prtfl_options' ); + } + + if ( $prtfl_options['post_type_name'] === $current_post_type && ! empty( $post ) ) { if ( ! $prtfl_options ) { $prtfl_options = get_option( 'prtfl_options' ); } - $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); - $user_id = get_current_user_id(); + $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); + $user_id = get_current_user_id(); - if ( 1 == $prtfl_options['date_additional_field'] ) { - $date_compl = isset( $post_meta['_prtfl_date_compl'] ) ? $post_meta['_prtfl_date_compl'] : ''; + if ( 1 === absint( $prtfl_options['date_additional_field'] ) ) { + $date_compl = isset( $post_meta['_prtfl_date_compl'] ) ? $post_meta['_prtfl_date_compl'] : ''; if ( ! empty( $date_compl ) ) { - $custom_content .= '

' . $prtfl_options['date_text_field'] .' ' . $date_compl . '

'; + $custom_content .= '

' . $prtfl_options['date_text_field'] . ' ' . $date_compl . '

'; } } - if ( 1 == $prtfl_options['link_additional_field'] && ! empty( $post_meta['_prtfl_link'] ) ) { + if ( 1 === absint( $prtfl_options['link_additional_field'] ) && ! empty( $post_meta['_prtfl_link'] ) ) { - if ( false !== parse_url( $post_meta['_prtfl_link'] ) ) { - if ( ( 0 == $user_id && 0 == $prtfl_options['link_additional_field_for_non_registered'] ) || 0 != $user_id ) { + if ( false !== wp_parse_url( $post_meta['_prtfl_link'] ) ) { + if ( ( 0 === $user_id && 0 === absint( $prtfl_options['link_additional_field_for_non_registered'] ) ) || 0 !== $user_id ) { $custom_content .= '

' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '

'; } else { $custom_content .= '

' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '

'; @@ -915,17 +979,17 @@ $custom_content .= '

' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '

'; } } - if ( 0 != $user_id || 0 == $prtfl_options['svn_additional_field_for_non_logged'] ) { - if ( 1 == $prtfl_options['svn_additional_field'] && ! empty( $post_meta['_prtfl_svn'] ) ) { + if ( 0 !== $user_id || 0 === absint( $prtfl_options['svn_additional_field_for_non_logged'] ) ) { + if ( 1 === absint( $prtfl_options['svn_additional_field'] ) && ! empty( $post_meta['_prtfl_svn'] ) ) { $custom_content .= '

' . $prtfl_options['svn_text_field'] . ' ' . $post_meta['_prtfl_svn'] . '

'; - } + } } - if ( 0 != $user_id ) { - if ( 1 == $prtfl_options['executor_additional_field'] ) { + if ( 0 !== $user_id ) { + if ( 1 === absint( $prtfl_options['executor_additional_field'] ) ) { $executors_profile = wp_get_object_terms( $post->ID, 'portfolio_executor_profile' ); if ( ! empty( $executors_profile ) ) { $custom_content .= '

' . $prtfl_options['executor_text_field'] . ''; - $count = 0; + $count = 0; foreach ( $executors_profile as $profile ) { if ( $count > 0 ) { $custom_content .= ', '; @@ -937,13 +1001,8 @@ } } } - - } elseif ( 'portfolio.php' == basename( get_page_template() ) ) { - global $wp_query, $request, $prtfl_options, $pdfprnt_options_array, $pdfprntpr_options; - - if ( ! $prtfl_options ) { - $prtfl_options = get_option( 'prtfl_options' ); - } + } elseif ( 'portfolio.php' === basename( get_page_template() ) || ( ! empty( $prtfl_options['page_id_portfolio_template'] ) && $post->ID === $prtfl_options['page_id_portfolio_template'] ) ) { + global $wp_query, $request, $pdfprnt_options_array, $pdfprnt_options; $count = 0; if ( get_query_var( 'paged' ) ) { @@ -953,54 +1012,55 @@ } else { $paged = 1; } - $per_page = $showitems = get_option( 'posts_per_page' ); - $technologies = isset( $wp_query->query_vars["technologies"] ) ? $wp_query->query_vars["technologies"] : ""; - $executor_profile = isset( $wp_query->query_vars["portfolio_executor_profile"] ) ? $wp_query->query_vars["portfolio_executor_profile"] : ""; - if ( "" != $technologies ) { + $per_page = get_option( 'posts_per_page' ); + $showitems = $per_page; + $technologies = isset( $wp_query->query_vars['technologies'] ) ? $wp_query->query_vars['technologies'] : ''; + $executor_profile = isset( $wp_query->query_vars['portfolio_executor_profile'] ) ? $wp_query->query_vars['portfolio_executor_profile'] : ''; + if ( '' !== $technologies ) { $args = array( - 'post_type' => $prtfl_options['post_type_name'], - 'post_status' => 'publish', - 'orderby' => $prtfl_options['order_by'], - 'order' => $prtfl_options['order'], - 'posts_per_page' => $per_page, - 'paged' => $paged, - 'tax_query' => array( + 'post_type' => $prtfl_options['post_type_name'], + 'post_status' => 'publish', + 'orderby' => $prtfl_options['order_by'], + 'order' => $prtfl_options['order'], + 'posts_per_page' => $per_page, + 'paged' => $paged, + 'tax_query' => array( array( - 'taxonomy' => 'portfolio_technologies', - 'field' => 'slug', - 'terms' => $technologies - ) - ) + 'taxonomy' => 'portfolio_technologies', + 'field' => 'slug', + 'terms' => $technologies, + ), + ), ); - } elseif ( "" != $executor_profile ) { + } elseif ( '' !== $executor_profile ) { $args = array( - 'post_type' => $prtfl_options['post_type_name'], - 'post_status' => 'publish', - 'orderby' => $prtfl_options['order_by'], - 'order' => $prtfl_options['order'], - 'posts_per_page' => $per_page, - 'paged' => $paged, - 'tax_query' => array( + 'post_type' => $prtfl_options['post_type_name'], + 'post_status' => 'publish', + 'orderby' => $prtfl_options['order_by'], + 'order' => $prtfl_options['order'], + 'posts_per_page' => $per_page, + 'paged' => $paged, + 'tax_query' => array( array( - 'taxonomy' => 'portfolio_executor_profile', - 'field' => 'slug', - 'terms' => $executor_profile - ) - ) + 'taxonomy' => 'portfolio_executor_profile', + 'field' => 'slug', + 'terms' => $executor_profile, + ), + ), ); } else { $args = array( - 'post_type' => $prtfl_options['post_type_name'], - 'post_status' => 'publish', - 'orderby' => $prtfl_options['order_by'], - 'order' => $prtfl_options['order'], - 'posts_per_page' => $per_page, - 'paged' => $paged + 'post_type' => $prtfl_options['post_type_name'], + 'post_status' => 'publish', + 'orderby' => $prtfl_options['order_by'], + 'order' => $prtfl_options['order'], + 'posts_per_page' => $per_page, + 'paged' => $paged, ); } $second_query = new WP_Query( $args ); - $request = $second_query->request; + $request = $second_query->request; if ( $second_query->have_posts() ) { while ( $second_query->have_posts() ) { @@ -1009,43 +1069,43 @@

'; $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); - $user_id = get_current_user_id(); + $user_id = get_current_user_id(); $short_descr = isset( $post_meta['_prtfl_short_descr'] ) ? $post_meta['_prtfl_short_descr'] : ''; if ( empty( $short_descr ) ) { - $short_descr = get_the_excerpt(); + $short_descr = get_the_excerpt(); } $title = get_the_title(); if ( empty( $title ) ) { $title = '(' . __( 'No title', 'portfolio' ) . ')'; } - $post_thumbnail_id = get_post_thumbnail_id( $post->ID ); + $post_thumbnail_id = get_post_thumbnail_id( $post->ID ); if ( empty( $post_thumbnail_id ) ) { - $args = array( - 'post_parent' => $post->ID, - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - 'numberposts' => 1 + $args = array( + 'post_parent' => $post->ID, + 'post_type' => 'attachment', + 'post_mime_type' => 'image', + 'numberposts' => 1, ); - $attachments = get_children( $args ); - $post_thumbnail_id = key( $attachments ); + $attachments = get_children( $args ); + $post_thumbnail_id = key( $attachments ); } - if ( ( isset( $pdfprnt_options_array['show_featured_image'] ) && 1 == $pdfprnt_options_array['show_featured_image'] ) - || ( isset( $pdfprntpr_options['show_featured_image'] ) && 1 == $pdfprntpr_options['show_featured_image'] ) ) { + if ( ( isset( $pdfprnt_options_array['show_featured_image'] ) && 1 === absint( $pdfprnt_options_array['show_featured_image'] ) ) + || ( isset( $pdfprnt_options['show_featured_image'] ) && 1 === absint( $pdfprnt_options['show_featured_image'] ) ) ) { $image = wp_get_attachment_image_src( $post_thumbnail_id, $prtfl_options['image_size_album'] ); if ( ! empty( $image[0] ) ) { /* get width and height for image_size_album */ - if ( 'portfolio-thumb' != $prtfl_options['image_size_album'] ) { + if ( 'portfolio-thumb' !== $prtfl_options['image_size_album'] ) { $width = absint( get_option( $prtfl_options['image_size_album'] . '_size_w' ) ); $height = absint( get_option( $prtfl_options['image_size_album'] . '_size_h' ) ); } else { $width = $prtfl_options['custom_size_px']['portfolio-thumb'][0]; $height = $prtfl_options['custom_size_px']['portfolio-thumb'][1]; } - $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); + $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); $custom_content .= '
' . $image_alt . '
'; } @@ -1055,16 +1115,16 @@

' . $title . '

'; - if ( 1 == $prtfl_options['date_additional_field'] ) { - $date_compl = isset( $post_meta['_prtfl_date_compl'] ) ? $post_meta['_prtfl_date_compl'] : ''; + if ( 1 === absint( $prtfl_options['date_additional_field'] ) ) { + $date_compl = isset( $post_meta['_prtfl_date_compl'] ) ? $post_meta['_prtfl_date_compl'] : ''; if ( ! empty( $date_compl ) ) { $custom_content .= '

' . $prtfl_options['date_text_field'] . ' ' . $date_compl . '

'; } } - if ( 1 == $prtfl_options['link_additional_field'] && ! empty( $post_meta['_prtfl_link'] ) ) { - if ( false !== parse_url( $post_meta['_prtfl_link'] ) ) { - if ( ( 0 == $user_id && 0 == $prtfl_options['link_additional_field_for_non_registered'] ) || 0 != $user_id ) { + if ( 1 === absint( $prtfl_options['link_additional_field'] ) && ! empty( $post_meta['_prtfl_link'] ) ) { + if ( false !== wp_parse_url( $post_meta['_prtfl_link'] ) ) { + if ( ( 0 === $user_id && 0 === absint( $prtfl_options['link_additional_field_for_non_registered'] ) ) || 0 !== $user_id ) { $custom_content .= '

' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '

'; } else { $custom_content .= '

' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '

'; @@ -1073,7 +1133,7 @@ $custom_content .= '

' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '

'; } } - if ( 1 == $prtfl_options['shrdescription_additional_field'] ) { + if ( 1 === absint( $prtfl_options['shrdescription_additional_field'] ) ) { $custom_content .= '

' . $prtfl_options['shrdescription_text_field'] . ' ' . $short_descr . '

'; } $custom_content .= '
@@ -1085,15 +1145,22 @@ return $content . $custom_content; } } -/* adding class to manu items */ + if ( ! function_exists( 'prtfl_add_portfolio_ancestor_to_menu' ) ) { + /** + * Adding class to manu items + * + * @param array $classes Array with classes. + * @param object $item Post object. + * @return array $classes Array with classes. + */ function prtfl_add_portfolio_ancestor_to_menu( $classes, $item ) { global $prtfl_options; if ( is_singular( $prtfl_options['post_type_name'] ) ) { global $wpdb, $post; $parent = $wpdb->get_var( "SELECT $wpdb->posts.post_name FROM $wpdb->posts, $wpdb->postmeta WHERE meta_key = '_wp_page_template' AND meta_value = 'portfolio.php' AND (post_status = 'publish' OR post_status = 'private') AND $wpdb->posts.ID = $wpdb->postmeta.post_id" ); - if ( in_array( 'menu-item-' . $item->ID, $classes ) && $parent == strtolower( $item->title ) ) { + if ( in_array( 'menu-item-' . $item->ID, $classes ) && strtolower( $item->title ) === $parent ) { $classes[] = 'current-page-ancestor'; } } @@ -1101,70 +1168,75 @@ } } -/* forming content for portfolio items */ if ( ! function_exists( 'prtfl_latest_items' ) ) { - function prtfl_latest_items( $atts, $widget = false ) { + /** + * Forming content for portfolio items + * + * @param array $atts Attributes. + * @param array $count Count or false. + */ + function prtfl_latest_items( $atts, $count = false ) { global $prtfl_options, $wp_query; - $old_wp_query = $wp_query; - $count_portfolio_row_block = 0; - if ( $widget == false) { - $custom_portfolio_row_count = $prtfl_options['custom_portfolio_row_count']; - } else { - $custom_portfolio_row_count = $widget; - } - $prtfl_widht = 100 / $custom_portfolio_row_count; - + if ( ! defined( 'DOING_AJAX' ) || ( defined( 'DOING_AJAX' ) && ! DOING_AJAX ) ) { + $old_wp_query = $wp_query; + $count_portfolio_row_block = 0; + if ( false === $count || empty( $count ) ) { + $custom_portfolio_row_count = $prtfl_options['custom_portfolio_row_count']; + } else { + $custom_portfolio_row_count = $count; + } + $prtfl_widht = 100 / $custom_portfolio_row_count; - if( 1 < $custom_portfolio_row_count ) { - $prtfl_img_width = ''; - }else{ - $prtfl_img_width = 'style="width:165px"'; - } - - $content = '
'; - if ( empty( $atts['count'] ) ) { - $atts['count'] = 3; - } - $args = array( - 'post_type' => $prtfl_options['post_type_name'], - 'post_status' => 'publish', - 'orderby' => 'date', - 'order' => $prtfl_options['order'], - 'posts_per_page' => $atts['count'], + if ( 1 < $custom_portfolio_row_count ) { + $prtfl_img_width = ''; + } else { + $prtfl_img_width = 'style="width:165px"'; + } + + $content = '
'; + if ( empty( $atts['count'] ) ) { + $atts['count'] = 3; + } + $args = array( + 'post_type' => $prtfl_options['post_type_name'], + 'post_status' => 'publish', + 'orderby' => 'date', + 'order' => $prtfl_options['order'], + 'posts_per_page' => $atts['count'], ); $second_query = new WP_Query( $args ); - $request = $second_query->request; + $request = $second_query->request; if ( $second_query->have_posts() ) { while ( $second_query->have_posts() ) { $second_query->the_post(); - if ( $count_portfolio_row_block % $custom_portfolio_row_count == 0 ) { + if ( 0 === $count_portfolio_row_block % $custom_portfolio_row_count ) { $content .= '
'; } $content .= '
-
-
'; +
+
'; global $post; $post_thumbnail_id = get_post_thumbnail_id( $post->ID ); - if ( empty ( $post_thumbnail_id ) ) { - $args = array( - 'post_parent' => $post->ID, - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - 'numberposts' => 1 + if ( empty( $post_thumbnail_id ) ) { + $args = array( + 'post_parent' => $post->ID, + 'post_type' => 'attachment', + 'post_mime_type' => 'image', + 'numberposts' => 1, ); - $attachments = get_children( $args ); + $attachments = get_children( $args ); $post_thumbnail_id = key( $attachments ); } $image = wp_get_attachment_image_src( $post_thumbnail_id, $prtfl_options['image_size_album'] ); - $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); - $image_desc = get_post( $post_thumbnail_id ); - $image_desc = $image_desc->post_content; - $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); + $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); + $image_desc = get_post( $post_thumbnail_id ); + $image_desc = $image_desc->post_content; + $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); - $date_compl = isset( $post_meta['_prtfl_date_compl'] ) ? $post_meta['_prtfl_date_compl'] : ''; - $link = isset( $post_meta['_prtfl_link'] ) ? $post_meta['_prtfl_link'] : ''; + $date_compl = isset( $post_meta['_prtfl_date_compl'] ) ? $post_meta['_prtfl_date_compl'] : ''; + $link = isset( $post_meta['_prtfl_link'] ) ? $post_meta['_prtfl_link'] : ''; $short_descr = isset( $post_meta['_prtfl_short_descr'] ) ? $post_meta['_prtfl_short_descr'] : ''; if ( empty( $short_descr ) ) { $short_descr = get_the_excerpt(); @@ -1176,75 +1248,93 @@ $permalink = get_permalink(); $content .= '
- ' . $image_alt . ' -
-
-
-

- ' . $title . ' -

-
'; - if ( 1 == $prtfl_options['shrdescription_additional_field'] && ( ! empty( $short_descr ) ) ) { - $content .= '

' . $short_descr . '

'; - } + ' . $image_alt . ' +
+
+
+

+ ' . $title . ' +

+
'; + if ( 1 === absint( $prtfl_options['shrdescription_additional_field'] ) && ( ! empty( $short_descr ) ) ) { + $content .= '

' . $short_descr . '

'; + } $content .= '
-
- -
'; - if ( 1 == $prtfl_options['technologies_additional_field'] ) { - $terms = wp_get_object_terms( $post->ID, 'portfolio_technologies' ); - if ( is_array( $terms ) && 0 < count( $terms ) ) { - $content .= __( 'Technologies', 'portfolio' ) . ':'; - $count = 0; - foreach ( $terms as $term ) { - if ( $count > 0 ) { - $content .= ', '; +
+ +
'; + if ( 1 === absint( $prtfl_options['technologies_additional_field'] ) ) { + $terms = wp_get_object_terms( $post->ID, 'portfolio_technologies' ); + if ( is_array( $terms ) && 0 < count( $terms ) ) { + $content .= '' . __( 'Technologies', 'portfolio' ) . ': '; + $count = 0; + foreach ( $terms as $term ) { + if ( $count > 0 ) { + $content .= ', '; + } + $content .= '' . $term->name . ''; + $count++; } - $content .= 'name ) . '" ' . '>' . $term->name . ''; - $count++; + } else { + $content .= ' '; } - } else { - $content .= ' '; } + $content .= '
'; + $content .= '
'; + if ( ( $count_portfolio_row_block % $custom_portfolio_row_count ) === ( $custom_portfolio_row_count - 1 ) ) { + $content .= '
+
'; + } + $count_portfolio_row_block++; } - $content .= '
'; - $content .= '
'; - if ( ( $count_portfolio_row_block % $custom_portfolio_row_count ) == ( $custom_portfolio_row_count - 1 ) ) { - $content .= '
-
'; } - $count_portfolio_row_block = $count_portfolio_row_block + 1; - } + $content .= '
'; + wp_reset_query(); + $wp_query = $old_wp_query; + return $content; } - $content .= '
'; - wp_reset_query(); - $wp_query = $old_wp_query; - return $content; } } -/* Register style and script files */ if ( ! function_exists( 'prtfl_admin_head' ) ) { + /** + * Register style and script files + */ function prtfl_admin_head() { global $prtfl_plugin_info, $hook_suffix, $post_type, $prtfl_options; - wp_enqueue_style( 'prtfl_icon', plugins_url( 'css/icon.css', __FILE__ ) ); + if ( ! $prtfl_plugin_info ) { + if ( ! function_exists( 'get_plugin_data' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + $prtfl_plugin_info = get_plugin_data( __FILE__ ); + } - if ( ( ( 'post.php' == $hook_suffix || 'post-new.php' == $hook_suffix ) && isset( $post_type ) && $prtfl_options['post_type_name'] == $post_type ) || - ( isset( $_GET['page'] ) && 'portfolio.php' == $_GET['page'] ) ) { - wp_enqueue_style( 'prtfl_stylesheet', plugins_url( 'css/style.css', __FILE__ ) ); - wp_enqueue_style( 'prtfl_jquery-style', plugins_url( 'css/jquery-ui.css', __FILE__ ) ); + wp_enqueue_style( 'prtfl_icon', plugins_url( 'css/icon.css', __FILE__ ), array(), $prtfl_plugin_info['Version'] ); + + if ( ( ( 'post.php' === $hook_suffix || 'post-new.php' === $hook_suffix ) && isset( $post_type ) && $prtfl_options['post_type_name'] === $post_type ) || + ( isset( $_GET['page'] ) && 'portfolio.php' === $_GET['page'] ) ) { + wp_enqueue_style( 'prtfl_stylesheet', plugins_url( 'css/style.css', __FILE__ ), array(), $prtfl_plugin_info['Version'] ); + wp_enqueue_style( 'prtfl_jquery-style', plugins_url( 'css/jquery-ui.css', __FILE__ ), array(), $prtfl_plugin_info['Version'] ); wp_enqueue_script( 'jquery-ui-datepicker' ); - wp_enqueue_script( 'prtfl_script', plugins_url( 'js/script.js', __FILE__ ) ); - wp_localize_script( 'prtfl_script', 'prtfl_vars', array( - 'prtfl_nonce' => wp_create_nonce( plugin_basename( __FILE__ ), 'prtfl_ajax_nonce_field' ), - 'update_img_message' => __( 'Updating images...', 'portfolio' ) . '', - 'not_found_img_info' => __( 'No image found.', 'portfolio' ), - 'img_success' => __( 'All images are updated.', 'portfolio' ), - 'img_error' => __( 'Error:', 'portfolio' ) ) ); + wp_enqueue_script( 'prtfl_script', plugins_url( 'js/script.js', __FILE__ ), array(), $prtfl_plugin_info['Version'], true ); + wp_localize_script( + 'prtfl_script', + 'prtfl_vars', + array( + 'prtfl_nonce' => wp_create_nonce( plugin_basename( __FILE__ ), 'prtfl_ajax_nonce_field' ), + 'update_img_message' => __( 'Updating images...', 'portfolio' ) . '', + 'not_found_img_info' => __( 'No image found.', 'portfolio' ), + 'img_success' => __( 'All images are updated.', 'portfolio' ), + 'img_error' => __( + 'Error:', + 'portfolio' + ), + ) + ); bws_enqueue_settings_scripts(); bws_plugins_include_codemirror(); @@ -1252,22 +1342,35 @@ } } -/* enqueue fancybox script and style css */ if ( ! function_exists( 'prtfl_wp_enqueue_scripts' ) ) { + /** + * Enqueue fancybox script and style css + */ function prtfl_wp_enqueue_scripts() { - wp_enqueue_style( 'prtfl_stylesheet', plugins_url( 'css/style.css', __FILE__ ) ); - wp_enqueue_style( 'prtfl_lightbox_stylesheet', plugins_url( 'fancybox/jquery.fancybox.min.css', __FILE__ ) ); + global $prtfl_plugin_info; + + if ( ! $prtfl_plugin_info ) { + if ( ! function_exists( 'get_plugin_data' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + $prtfl_plugin_info = get_plugin_data( __FILE__ ); + } + wp_enqueue_style( 'prtfl_stylesheet', plugins_url( 'css/style.css', __FILE__ ), array(), $prtfl_plugin_info['Version'] ); + wp_enqueue_style( 'prtfl_lightbox_stylesheet', plugins_url( 'fancybox/jquery.fancybox.min.css', __FILE__ ), array(), $prtfl_plugin_info['Version'] ); } } -/* styles for IE */ if ( ! function_exists( 'prtfl_wp_head' ) ) { + /** + * Styles for IE + */ function prtfl_wp_head() { global $prtfl_options; /* Add style for IE compatibility */ - if ( isset( $_SERVER['HTTP_USER_AGENT'] ) && strpos( $_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0' ) !== false || strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE' ) !== false ) { + if ( isset( $_SERVER['HTTP_USER_AGENT'] ) && strpos( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ), 'Trident/7.0; rv:11.0' ) !== false || strpos( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ), 'MSIE' ) !== false ) { $post_type = get_post_type(); - if ( is_single() && $prtfl_options['post_type_name'] == $post_type ) { ?> + if ( is_single() && $prtfl_options['post_type_name'] === $post_type ) { + ?> - post->ID ) ) { + if ( ! empty( $wp_query->post->ID ) ) { $post_thumbnail_id = get_post_thumbnail_id( $wp_query->post->ID ); } $image = wp_get_attachment_image_src( $post_thumbnail_id, $prtfl_options['image_size_album'] ); if ( wp_script_is( 'prtfl_front_script', 'registered' ) ) { wp_enqueue_script( 'prtfl_front_script' ); - wp_enqueue_script( 'prtfl_fancyboxJs', plugins_url( 'fancybox/jquery.fancybox.min.js', __FILE__ ), array( 'jquery' ) ); + wp_enqueue_script( 'prtfl_fancyboxJs', plugins_url( 'fancybox/jquery.fancybox.min.js', __FILE__ ), array( 'jquery' ), $prtfl_plugin_info['Version'] ); /* Initialization of fancybox script */ if ( ! empty( $image[0] ) ) { $script = "( function( $ ){ - $( document ).ready( function(){ - $( \"a[data-fancybox=portfolio_fancybox]\" ).fancybox({ - loop : true, - arrows : false, - infobar : true, - speed : 500, - toolbar: false, - animationEffect : 'zoom', - openEffect : 'elastic', - closeEffect : 'elastic' - } ); - } ); - } )( jQuery );"; - wp_register_script( 'prtfl_fancybox_script', '' ); + $( document ).ready( function(){ + $( \"a[data-fancybox=portfolio_fancybox]\" ).fancybox({ + loop : true, + arrows : false, + infobar : true, + speed : 500, + toolbar: false, + animationEffect : 'zoom', + openEffect : 'elastic', + closeEffect : 'elastic' + } ); + } ); + } )( jQuery );"; + wp_register_script( 'prtfl_fancybox_script', '', array(), $prtfl_plugin_info['Version'] ); wp_enqueue_script( 'prtfl_fancybox_script' ); wp_add_inline_script( 'prtfl_fancybox_script', sprintf( $script ) ); } @@ -1320,40 +1433,40 @@ } } -/** - * Ajax function for updating images - * @return void - */ if ( ! function_exists( 'prtfl_update_image' ) ) { + /** + * Ajax function for updating images + */ function prtfl_update_image() { global $wpdb, $prtfl_options; check_ajax_referer( plugin_basename( __FILE__ ), 'prtfl_ajax_nonce_field' ); - $action = isset( $_REQUEST['action1'] ) ? $_REQUEST['action1'] : ""; - $id = isset( $_REQUEST['id'] ) ? $_REQUEST['id'] : ""; + $action = isset( $_REQUEST['action1'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['action1'] ) ) : ''; + $id = isset( $_REQUEST['id'] ) ? absint( $_REQUEST['id'] ) : ''; switch ( $action ) { case 'get_all_attachment': - - $array_parent_id = $wpdb->get_col( $wpdb->prepare( " - SELECT - ID - FROM - {$wpdb->posts} - WHERE - post_type = %s - ", $prtfl_options['post_type_name'] ) ); + $array_parent_id = $wpdb->get_col( + $wpdb->prepare( + 'SELECT ID + FROM ' . $wpdb->posts . ' + WHERE post_type = %s', + $prtfl_options['post_type_name'] + ) + ); if ( ! empty( $array_parent_id ) ) { - $string_parent_id = implode( ",", $array_parent_id ); + $parent_id_placeholders = implode( ', ', array_fill( 0, count( (array) $array_parent_id ), '%d' ) ); - $metas = $wpdb->get_results( " - SELECT - meta_value - FROM - {$wpdb->postmeta} - WHERE - meta_key = '_prtfl_images' AND - post_id IN (" . $string_parent_id . ") - ", ARRAY_A ); + $metas = $wpdb->get_results( + $wpdb->prepare( + 'SELECT meta_value + FROM ' . $wpdb->postmeta . ' + WHERE meta_key = %s + AND post_id IN (' . $parent_id_placeholders . ')', + '_prtfl_images', + $array_parent_id + ), + ARRAY_A + ); $result_attachment_id = ''; foreach ( $metas as $key => $value ) { @@ -1361,30 +1474,33 @@ $result_attachment_id .= $value['meta_value'] . ','; } } - $result_attachment_id_array = explode( ",", rtrim( $result_attachment_id, ',' ) ); + $result_attachment_id_array = explode( ',', rtrim( $result_attachment_id, ',' ) ); - $attached_id = $wpdb->get_results( " - SELECT - ID - FROM - {$wpdb->posts} - WHERE - post_type = 'attachment' AND - post_mime_type LIKE 'image%' AND - post_parent IN (" . $string_parent_id . ") - ", ARRAY_A ); + $attached_id = $wpdb->get_results( + $wpdb->prepare( + 'SELECT ID + FROM ' . $wpdb->posts . ' + WHERE post_type = %s + AND post_mime_type LIKE %s + AND post_parent IN (' . $parent_id_placeholders . ')', + 'attachment', + 'image%', + $array_parent_id + ), + ARRAY_A + ); foreach ( $attached_id as $key => $value ) { $result_attachment_id_array[] = $value['ID']; } - echo json_encode( array_unique( $result_attachment_id_array ) ); + echo wp_json_encode( array_unique( $result_attachment_id_array ) ); } break; case 'update_image': - $metadata = wp_get_attachment_metadata( $id ); - $uploads = wp_upload_dir(); - $path = $uploads['basedir'] . "/" . $metadata['file']; - require_once( ABSPATH . 'wp-admin/includes/image.php' ); + $metadata = wp_get_attachment_metadata( $id ); + $uploads = wp_upload_dir(); + $path = $uploads['basedir'] . '/' . $metadata['file']; + require_once ABSPATH . 'wp-admin/includes/image.php'; $metadata_new = prtfl_wp_generate_attachment_metadata( $id, $path, $metadata ); wp_update_attachment_metadata( $id, array_merge( $metadata, $metadata_new ) ); break; @@ -1398,38 +1514,49 @@ } if ( ! function_exists( 'prtfl_wp_generate_attachment_metadata' ) ) { + /** + * Add attachment metadata for portfolio images + * + * @param int $attachment_id Attachment ID. + * @param string $file File string. + * @param array $metadata Array with metadata. + */ function prtfl_wp_generate_attachment_metadata( $attachment_id, $file, $metadata ) { global $prtfl_options; - $attachment = get_post( $attachment_id ); - $image_size = array( 'thumbnail' ); + $attachment = get_post( $attachment_id ); + $image_size = array( 'thumbnail' ); - if ( 'portfolio-thumb' == $prtfl_options['image_size_album'] ) { + if ( 'portfolio-thumb' === $prtfl_options['image_size_album'] ) { add_image_size( 'portfolio-thumb', $prtfl_options['custom_size_px']['portfolio-thumb'][0], $prtfl_options['custom_size_px']['portfolio-thumb'][1], true ); $image_size[] = 'portfolio-thumb'; } - if ( 'portfolio-photo-thumb' == $prtfl_options['image_size_photo'] ) { + if ( 'portfolio-photo-thumb' === $prtfl_options['image_size_photo'] ) { add_image_size( 'portfolio-photo-thumb', $prtfl_options['custom_size_px']['portfolio-photo-thumb'][0], $prtfl_options['custom_size_px']['portfolio-photo-thumb'][1], true ); $image_size[] = 'portfolio-photo-thumb'; } $metadata = array(); if ( preg_match( '!^image/!', get_post_mime_type( $attachment ) ) && file_is_displayable_image( $file ) ) { - $imagesize = getimagesize( $file ); - $metadata['width'] = $imagesize[0]; - $metadata['height'] = $imagesize[1]; - list( $uwidth, $uheight ) = wp_constrain_dimensions( $metadata['width'], $metadata['height'], 128, 96 ); - $metadata['hwstring_small'] = "height='$uheight' width='$uwidth'"; + $imagesize = getimagesize( $file ); + $metadata['width'] = $imagesize[0]; + $metadata['height'] = $imagesize[1]; + list( $uwidth, $uheight ) = wp_constrain_dimensions( $metadata['width'], $metadata['height'], 128, 96 ); + $metadata['hwstring_small'] = "height='$uheight' width='$uwidth'"; /* Make the file path relative to the upload dir */ - $metadata['file']= _wp_relative_upload_path( $file ); + $metadata['file'] = _wp_relative_upload_path( $file ); /* Make thumbnails and other intermediate sizes */ global $_wp_additional_image_sizes; foreach ( $image_size as $s ) { - $sizes[ $s ] = array( 'width' => '', 'height' => '', 'crop' => FALSE ); + $sizes[ $s ] = array( + 'width' => '', + 'height' => '', + 'crop' => false, + ); if ( isset( $_wp_additional_image_sizes[ $s ]['width'] ) ) { - $sizes[ $s]['width'] = intval( $_wp_additional_image_sizes[ $s ]['width'] ); /* For theme-added sizes */ + $sizes[ $s ]['width'] = intval( $_wp_additional_image_sizes[ $s ]['width'] ); /* For theme-added sizes */ } else { $sizes[ $s ]['width'] = get_option( "{$s}_size_w" ); /* For default sizes set in options */ } @@ -1464,16 +1591,27 @@ } if ( ! function_exists( 'prtfl_image_make_intermediate_size' ) ) { - function prtfl_image_make_intermediate_size( $file, $width, $height, $crop=false ) { + /** + * Change size for attachment + * + * @param string $file File string. + * @param int $width Width for attachment. + * @param int $height Height for attachment. + * @param bool $crop Flag for crop. + */ + function prtfl_image_make_intermediate_size( $file, $width, $height, $crop = false ) { if ( $width || $height ) { $resized_file = prtfl_image_resize( $file, $width, $height, $crop ); - if ( ! is_wp_error( $resized_file ) && $resized_file && $info = getimagesize( $resized_file ) ) { - $resized_file = apply_filters( 'image_make_intermediate_size', $resized_file ); - return array( - 'file' => wp_basename( $resized_file ), - 'width' => $info[0], - 'height' => $info[1], - ); + if ( ! is_wp_error( $resized_file ) && $resized_file ) { + $info = getimagesize( $resized_file ); + if ( ! empty( $info ) ) { + $resized_file = apply_filters( 'image_make_intermediate_size', $resized_file ); + return array( + 'file' => wp_basename( $resized_file ), + 'width' => $info[0], + 'height' => $info[1], + ); + } } } return false; @@ -1481,6 +1619,17 @@ } if ( ! function_exists( 'prtfl_image_resize' ) ) { + /** + * Resize for attachment + * + * @param string $file File string. + * @param int $max_w Max width for attachment. + * @param int $max_h Max height for attachment. + * @param bool $crop Flag for crop. + * @param string $suffix Suffix for file name. + * @param string $dest_path Destination path. + * @param int $jpeg_quality Quality for attachment. + */ function prtfl_image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 ) { $size = @getimagesize( $file ); if ( ! $size ) { @@ -1488,15 +1637,15 @@ } $type = $size[2]; - if ( 3 == $type ) { + if ( 3 === $type ) { $image = imagecreatefrompng( $file ); - } elseif ( 2 == $type ) { + } elseif ( 2 === $type ) { $image = imagecreatefromjpeg( $file ); - } elseif ( 1 == $type ) { + } elseif ( 1 === $type ) { $image = imagecreatefromgif( $file ); - } elseif ( 15 == $type ) { + } elseif ( 15 === $type ) { $image = imagecreatefromwbmp( $file ); - } elseif ( 16 == $type ) { + } elseif ( 16 === $type ) { $image = imagecreatefromxbm( $file ); } else { return new WP_Error( 'invalid_image', __( 'We can update only PNG, JPEG, GIF, WPMP or XBM filetype. For other image formats, please manually reload image.', 'portfolio' ), $file ); @@ -1506,7 +1655,7 @@ } /* $size = @getimagesize( $file ); */ list( $orig_w, $orig_h, $orig_type ) = $size; - $dims = prtfl_image_resize_dimensions( $orig_w, $orig_h, $max_w, $max_h, $crop ); + $dims = prtfl_image_resize_dimensions( $orig_w, $orig_h, $max_w, $max_h, $crop ); if ( ! $dims ) { return new WP_Error( 'error_getting_dimensions', __( 'Image size changes not defined', 'portfolio' ) ); @@ -1515,7 +1664,7 @@ $newimage = wp_imagecreatetruecolor( $dst_w, $dst_h ); imagecopyresampled( $newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ); /* Convert from full colors to index colors, like original PNG. */ - if ( IMAGETYPE_PNG == $orig_type && function_exists( 'imageistruecolor' ) && ! imageistruecolor( $image ) ) { + if ( IMAGETYPE_PNG === $orig_type && function_exists( 'imageistruecolor' ) && ! imageistruecolor( $image ) ) { imagetruecolortopalette( $newimage, false, imagecolorstotal( $image ) ); } /* We don't need the original in memory anymore */ @@ -1526,20 +1675,23 @@ $suffix = "{$dst_w}x{$dst_h}"; } $info = pathinfo( $file ); - $dir = $info['dirname']; - $ext = $info['extension']; + $dir = $info['dirname']; + $ext = $info['extension']; $name = wp_basename( $file, ".$ext" ); - if ( ! is_null( $dest_path ) and $_dest_path = realpath( $dest_path ) ) { - $dir = $_dest_path; + if ( ! is_null( $dest_path ) ) { + $_dest_path = realpath( $dest_path ); + if ( $_dest_path ) { + $dir = $_dest_path; + } } $destfilename = "{$dir}/{$name}-{$suffix}.{$ext}"; - if ( IMAGETYPE_GIF == $orig_type ) { + if ( IMAGETYPE_GIF === $orig_type ) { if ( ! imagegif( $newimage, $destfilename ) ) { return new WP_Error( 'resize_path_invalid', __( 'Invalid path', 'portfolio' ) ); } - } elseif ( IMAGETYPE_PNG == $orig_type ) { + } elseif ( IMAGETYPE_PNG === $orig_type ) { if ( ! imagepng( $newimage, $destfilename ) ) { return new WP_Error( 'resize_path_invalid', __( 'Invalid path', 'portfolio' ) ); } @@ -1553,14 +1705,23 @@ imagedestroy( $newimage ); /* Set correct file permissions */ - $stat = stat( dirname( $destfilename ) ); - $perms = $stat['mode'] & 0000666; /* Same permissions as parent folder, strip off the executable bits */ + $stat = stat( dirname( $destfilename ) ); + $perms = $stat['mode'] & 0000666; /* Same permissions as parent folder, strip off the executable bits */ @chmod( $destfilename, $perms ); return $destfilename; } } if ( ! function_exists( 'prtfl_image_resize_dimensions' ) ) { + /** + * Resize dimensions for attachment + * + * @param int $orig_w Original width for attachment. + * @param int $orig_h Original height for attachment. + * @param int $dest_w New width for attachment. + * @param int $dest_h New height for attachment. + * @param bool $crop Flag for crop. + */ function prtfl_image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = false ) { if ( 0 >= $orig_w || 0 >= $orig_h ) { @@ -1573,9 +1734,9 @@ if ( $crop ) { /* Crop the largest possible portion of the original image that we can size to $dest_w x $dest_h */ - $aspect_ratio = $orig_w / $orig_h; - $new_w = min( $dest_w, $orig_w ); - $new_h = min( $dest_h, $orig_h ); + $aspect_ratio = $orig_w / $orig_h; + $new_w = min( $dest_w, $orig_w ); + $new_h = min( $dest_h, $orig_h ); if ( ! $new_w ) { $new_w = intval( $new_h * $aspect_ratio ); @@ -1585,17 +1746,17 @@ $new_h = intval( $new_w / $aspect_ratio ); } - $size_ratio = max( $new_w / $orig_w, $new_h / $orig_h ); - $crop_w = round( $new_w / $size_ratio ); - $crop_h = round( $new_h / $size_ratio ); - $s_x = floor( ( $orig_w - $crop_w ) / 2 ); - $s_y = 0; + $size_ratio = max( $new_w / $orig_w, $new_h / $orig_h ); + $crop_w = round( $new_w / $size_ratio ); + $crop_h = round( $new_h / $size_ratio ); + $s_x = floor( ( $orig_w - $crop_w ) / 2 ); + $s_y = 0; } else { /* Don't crop, just resize using $dest_w x $dest_h as a maximum bounding box */ - $crop_w = $orig_w; - $crop_h = $orig_h; - $s_x = 0; - $s_y = 0; + $crop_w = $orig_w; + $crop_h = $orig_h; + $s_x = 0; + $s_y = 0; list( $new_w, $new_h ) = wp_constrain_dimensions( $orig_w, $orig_h, $dest_w, $dest_h ); } @@ -1603,50 +1764,73 @@ if ( $new_w >= $orig_w && $new_h >= $orig_h ) { return false; } - /* The return array matches the parameters to imagecopyresampled() */ - /* Int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h */ - return array( 0, 0, ( int ) $s_x, ( int ) $s_y, ( int ) $new_w, ( int ) $new_h, ( int ) $crop_w, ( int ) $crop_h ); + /** + * The return array matches the parameters to imagecopyresampled() + * Int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h + */ + return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h ); } } if ( ! function_exists( 'prtfl_theme_body_classes' ) ) { + /** + * Add class for body + * + * @param array $classes Classes array. + */ function prtfl_theme_body_classes( $classes ) { global $prtfl_options; if ( function_exists( 'wp_get_theme' ) ) { $current_theme = wp_get_theme(); - $classes[] = 'prtfl_' . basename( $current_theme->get( 'ThemeURI' ) ); + $classes[] = 'prtfl_' . basename( $current_theme->get( 'ThemeURI' ) ); } if ( in_array( 'page-id-' . $prtfl_options['page_id_portfolio_template'], $classes ) ) { - $classes[] = 'prtfl-page-template'; - $classes[] = 'has-sidebar'; + $classes[] = 'prtfl-page-template'; + $classes[] = 'has-sidebar'; } return $classes; } } if ( ! function_exists( 'prtfl_register_plugin_links' ) ) { + /** + * Add Settings and Support links + * + * @param array $links Action link array. + * @param file $file Plugin file. + * @return array $links Returned link array. + */ function prtfl_register_plugin_links( $links, $file ) { global $prtfl_options; $base = plugin_basename( __FILE__ ); - if ( $file == $base ) { + if ( $file === $base ) { if ( ! is_network_admin() ) { - $links[] = '' . __( 'Settings', 'portfolio' ) . ''; + $links[] = '' . __( 'Settings', 'portfolio' ) . ''; } - $links[] = '' . __( 'FAQ', 'portfolio' ) . ''; - $links[] = '' . __( 'Support', 'portfolio' ) . ''; + $links[] = '' . __( 'FAQ', 'portfolio' ) . ''; + $links[] = '' . __( 'Support', 'portfolio' ) . ''; } return $links; } } if ( ! function_exists( 'prtfl_plugin_action_links' ) ) { + /** + * Add action links + * + * @param array $links Action link array. + * @param file $file Plugin file. + * @return array $links Returned link array. + */ function prtfl_plugin_action_links( $links, $file ) { if ( ! is_network_admin() ) { /* Static so we don't call plugin_basename on every plugin row. */ static $this_plugin; - if ( ! $this_plugin ) $this_plugin = plugin_basename( __FILE__ ); + if ( ! $this_plugin ) { + $this_plugin = plugin_basename( __FILE__ ); + } - if ( $file == $this_plugin ) { + if ( $file === $this_plugin ) { global $prtfl_options; $settings_link = '' . __( 'Settings', 'portfolio' ) . ''; array_unshift( $links, $settings_link ); @@ -1657,47 +1841,52 @@ } if ( ! function_exists( 'prtfl_admin_notices' ) ) { + /** + * Display notice in the main dashboard page / plugins page + */ function prtfl_admin_notices() { - global $hook_suffix, $prtfl_plugin_info, $prtfl_options, $prtfl_BWS_demo_data; + global $hook_suffix, $prtfl_plugin_info, $prtfl_options, $prtfl_bws_demo_data; - if ( 'plugins.php' == $hook_suffix || ( isset( $_GET['page'] ) && 'portfolio.php' == $_GET['page'] ) ) { + if ( 'plugins.php' === $hook_suffix || ( isset( $_GET['page'] ) && 'portfolio.php' === $_GET['page'] ) ) { - if ( ! $prtfl_BWS_demo_data ) { + if ( ! $prtfl_bws_demo_data ) { prtfl_include_demo_data(); } - if ( isset( $_GET['page'] ) && 'portfolio.php' == $_GET['page'] ) { - $prtfl_BWS_demo_data->bws_handle_demo_notice( $prtfl_options['display_demo_notice'] ); + if ( isset( $_GET['page'] ) && 'portfolio.php' === $_GET['page'] ) { + $prtfl_bws_demo_data->bws_handle_demo_notice( $prtfl_options['display_demo_notice'] ); } - if ( 'plugins.php' == $hook_suffix ) { + if ( 'plugins.php' === $hook_suffix ) { if ( ! is_network_admin() ) { bws_plugin_banner_to_settings( $prtfl_plugin_info, 'prtfl_options', 'portfolio', 'edit.php?post_type=portfolio&page=portfolio.php', 'Portfolio' ); } - if ( 0 == $prtfl_options['widget_updated'] ) { + if ( 0 === absint( $prtfl_options['widget_updated'] ) ) { /* Save data for settings page */ if ( isset( $_REQUEST['prtfl_form_submit'] ) && check_admin_referer( plugin_basename( __FILE__ ), 'prtfl_nonce_name' ) ) { $prtfl_options['widget_updated'] = 1; update_option( 'prtfl_options', $prtfl_options ); - } else { ?> + } else { + ?>
-
+

- - + +

- +

- query_vars["technologies"] ) ) { - $term = get_term_by( 'slug', $wp_query->query_vars["technologies"], 'portfolio_technologies' ); - echo $prtfl_options['technologies_text_field'] . " " . ( $term->name ); - } elseif ( isset( $wp_query->query_vars["portfolio_executor_profile"] ) ) { - $term = get_term_by( 'slug', $wp_query->query_vars["portfolio_executor_profile"], 'portfolio_executor_profile' ); - echo $prtfl_options['executor_text_field'] . "

" . ( $term->name ) . "

"; - $_SESSION['prtfl_page_name'] = $prtfl_options['executor_text_field'] . " " . ( $term->name ); - $_SESSION['prtfl_page_url'] = get_pagenum_link( $wp_query->query_vars['paged'] ); + if ( isset( $wp_query->query_vars['technologies'] ) ) { + $term = get_term_by( 'slug', $wp_query->query_vars['technologies'], 'portfolio_technologies' ); + echo esc_html( $prtfl_options['technologies_text_field'] . ' ' . $term->name ); + } elseif ( isset( $wp_query->query_vars['portfolio_executor_profile'] ) ) { + $term = get_term_by( 'slug', $wp_query->query_vars['portfolio_executor_profile'], 'portfolio_executor_profile' ); + echo esc_html( $prtfl_options['executor_text_field'] ) . '

' . esc_html( $term->name ) . '

'; + $_SESSION['prtfl_page_name'] = $prtfl_options['executor_text_field'] . ' ' . $term->name; + $_SESSION['prtfl_page_url'] = get_pagenum_link( $wp_query->query_vars['paged'] ); } else { the_title( '

', '

' ); } } } -/* This function will display title for portfolio post type template */ if ( ! function_exists( 'prtfl_post_template_title' ) ) { + /** + * This function will display title for portfolio post type template + */ function prtfl_post_template_title() { $title = get_the_title(); - echo empty( $title ) ? '(' . __( 'No title', 'portfolio' ) . ')' : '

'. $title . '

' ; + echo empty( $title ) ? '(' . esc_html__( 'No title', 'portfolio' ) . ')' : '

' . esc_html( $title ) . '

'; } } -/** - * Prepare arguments for post query - * @return array|false - */ if ( ! function_exists( 'prtfl_get_query_args' ) ) { + /** + * Prepare arguments for post query + * + * @return array|false + */ function prtfl_get_query_args() { global $prtfl_options, $wp_query; $count = 0; @@ -1748,48 +1942,49 @@ } else { $paged = 1; } - $per_page = $showitems = get_option( 'posts_per_page' ); + $per_page = get_option( 'posts_per_page' ); + $showitems = $per_page; - if ( ! empty( $wp_query->query_vars["technologies"] ) ) { + if ( ! empty( $wp_query->query_vars['technologies'] ) ) { $args = array( - 'post_type' => $prtfl_options['post_type_name'], - 'post_status' => 'publish', - 'orderby' => $prtfl_options['order_by'], - 'order' => $prtfl_options['order'], - 'posts_per_page' => $per_page, - 'paged' => $paged, - 'tax_query' => array( + 'post_type' => $prtfl_options['post_type_name'], + 'post_status' => 'publish', + 'orderby' => $prtfl_options['order_by'], + 'order' => $prtfl_options['order'], + 'posts_per_page' => $per_page, + 'paged' => $paged, + 'tax_query' => array( array( - 'taxonomy' => 'portfolio_technologies', - 'field' => 'slug', - 'terms' => $wp_query->query_vars["technologies"] - ) - ) + 'taxonomy' => 'portfolio_technologies', + 'field' => 'slug', + 'terms' => $wp_query->query_vars['technologies'], + ), + ), ); - } elseif ( ! empty( $wp_query->query_vars["portfolio_executor_profile"] ) ) { + } elseif ( ! empty( $wp_query->query_vars['portfolio_executor_profile'] ) ) { $args = array( - 'post_type' => $prtfl_options['post_type_name'], - 'post_status' => 'publish', - 'orderby' => $prtfl_options['order_by'], - 'order' => $prtfl_options['order'], - 'posts_per_page' => $per_page, - 'paged' => $paged, - 'tax_query' => array( + 'post_type' => $prtfl_options['post_type_name'], + 'post_status' => 'publish', + 'orderby' => $prtfl_options['order_by'], + 'order' => $prtfl_options['order'], + 'posts_per_page' => $per_page, + 'paged' => $paged, + 'tax_query' => array( array( - 'taxonomy' => 'portfolio_executor_profile', - 'field' => 'slug', - 'terms' => $wp_query->query_vars["portfolio_executor_profile"] - ) - ) + 'taxonomy' => 'portfolio_executor_profile', + 'field' => 'slug', + 'terms' => $wp_query->query_vars['portfolio_executor_profile'], + ), + ), ); } else { $args = array( - 'post_type' => $prtfl_options['post_type_name'], - 'post_status' => 'publish', - 'orderby' => $prtfl_options['order_by'], - 'order' => $prtfl_options['order'], - 'posts_per_page' => $per_page, - 'paged' => $paged + 'post_type' => $prtfl_options['post_type_name'], + 'post_status' => 'publish', + 'orderby' => $prtfl_options['order_by'], + 'order' => $prtfl_options['order'], + 'posts_per_page' => $per_page, + 'paged' => $paged, ); } @@ -1801,21 +1996,24 @@ } } -/** - * Display template content - * @return void - */ if ( ! function_exists( 'prtfl_get_content' ) ) { + /** + * Display template content + * + * @param object $second_query Query object. + */ function prtfl_get_content( $second_query ) { global $post, $prtfl_options; - $request = $second_query->request; + $request = $second_query->request; $count_portfolio_row_block = 0; - $prtfl_widht = 99 / $prtfl_options['custom_portfolio_row_count']; + $prtfl_widht = 99 / $prtfl_options['custom_portfolio_row_count']; if ( ! empty( $post ) && ! empty( $post->post_content ) ) { $page_content = $post->post_content; - if ( function_exists( 'mltlngg_the_content_filter' ) ) $page_content = mltlngg_the_content_filter( $page_content ); + if ( function_exists( 'mltlngg_the_content_filter' ) ) { + $page_content = mltlngg_the_content_filter( $page_content ); + } /* dublicate filter 'the_content' - as we couldnt use it */ if ( function_exists( 'wptexturize' ) ) { $page_content = wptexturize( $page_content ); @@ -1832,30 +2030,37 @@ if ( function_exists( 'prepend_attachment' ) ) { $page_content = prepend_attachment( $page_content ); } - if ( function_exists( 'wp_make_content_images_responsive' ) ) { + if ( function_exists( 'wp_filter_content_tags' ) ) { + $page_content = wp_filter_content_tags( $page_content ); + } elseif ( function_exists( 'wp_make_content_images_responsive' ) ) { $page_content = wp_make_content_images_responsive( $page_content ); } if ( function_exists( 'do_shortcode' ) ) { - $page_content = do_shortcode( $page_content ); - } ?> + $page_content = do_shortcode( $page_content ); + } + ?>
-
+
- have_posts() ) { while ( $second_query->have_posts() ) { $second_query->the_post(); - if ( $count_portfolio_row_block % $prtfl_options['custom_portfolio_row_count'] == 0 ) {?> -
-
-
+ if ( 0 === $count_portfolio_row_block % $prtfl_options['custom_portfolio_row_count'] ) { + ?> +
+ +
+
- ID ); - $image = wp_get_attachment_image_src( $post_thumbnail_id, $prtfl_options['image_size_album'] ); - $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); + ID ); + $image = wp_get_attachment_image_src( $post_thumbnail_id, $prtfl_options['image_size_album'] ); + $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); $short_descr = isset( $post_meta['_prtfl_short_descr'] ) ? $post_meta['_prtfl_short_descr'] : ''; if ( empty( $short_descr ) ) { @@ -1868,148 +2073,192 @@ $permalink = get_permalink(); if ( ! empty( $image[0] ) ) { /* get width and height for image_size_album */ - if ( 'portfolio-thumb' != $prtfl_options['image_size_album'] ) { + if ( 'portfolio-thumb' !== $prtfl_options['image_size_album'] ) { $width = absint( get_option( $prtfl_options['image_size_album'] . '_size_w' ) ); $height = absint( get_option( $prtfl_options['image_size_album'] . '_size_h' ) ); } else { $width = $prtfl_options['custom_size_px']['portfolio-thumb'][0]; $height = $prtfl_options['custom_size_px']['portfolio-thumb'][1]; } - $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); ?> + $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); + ?>

- +

- +

- ' . $prtfl_options['date_text_field'] . ''; ?> + ' . wp_kses_post( $prtfl_options['date_text_field'] ) . ''; ?>

- -

' . $prtfl_options['link_text_field'] . ''; ?>

+ if ( false !== wp_parse_url( $link ) ) { + if ( ( 0 === $user_id && 0 === absint( $prtfl_options['link_additional_field_for_non_registered'] ) ) || 0 !== $user_id ) { + ?> +

' . wp_kses_post( $prtfl_options['link_text_field'] ) . ''; ?>

-

' . $prtfl_options['link_text_field'] . ''; ?>

- prtfl_options -

' . $prtfl_options['link_text_field'] . ''; ?>

- ' . wp_kses_post( $prtfl_options['link_text_field'] ) . ''; ?>

+ +

' . wp_kses_post( $prtfl_options['link_text_field'] ) . ''; ?>

+ -

' . $prtfl_options['shrdescription_text_field'] . ''; ?>

+ if ( 1 === absint( $prtfl_options['shrdescription_additional_field'] ) ) { + ?> +

' . wp_kses_post( $prtfl_options['shrdescription_text_field'] ) . ''; ?>

+ + } + ?>
-
- -
-
+ +
+
+
+ + -
+ + while ( have_posts() ) : + the_post(); + ?>
+
- ID ); - $image = wp_get_attachment_image_src( $post_thumbnail_id, $prtfl_options['image_size_album'] ); - $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); + $image = wp_get_attachment_image_src( $post_thumbnail_id, $prtfl_options['image_size_album'] ); + $post_meta = get_post_meta( $post->ID, 'prtfl_information', true ); if ( ! empty( $image[0] ) ) { $image_large = wp_get_attachment_image_src( $post_thumbnail_id, 'large' ); - $image_desc = get_post( $post_thumbnail_id ); - $image_desc = $image_desc->post_content; + $image_desc = get_post( $post_thumbnail_id ); + $image_desc = $image_desc->post_content; /* get width and height for image_size_album */ - if ( 'portfolio-thumb' != $prtfl_options['image_size_album'] ) { + if ( 'portfolio-thumb' !== $prtfl_options['image_size_album'] ) { $width = absint( get_option( $prtfl_options['image_size_album'] . '_size_w' ) ); $height = absint( get_option( $prtfl_options['image_size_album'] . '_size_h' ) ); } else { $width = $prtfl_options['custom_size_px']['portfolio-thumb'][0]; $height = $prtfl_options['custom_size_px']['portfolio-thumb'][1]; } - $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); ?> + $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); + ?>
- +

- ' . $portfolio_options['date_text_field'] . ''; ?> + ' . wp_kses_post( $portfolio_options['date_text_field'] ) . ''; ?>

- - -

'. $portfolio_options['link_text_field'] . ''; ?>

+ if ( false !== wp_parse_url( $link ) ) { + ?> + +

' . wp_kses_post( $portfolio_options['link_text_field'] ) . ''; ?>

-

' . $portfolio_options['link_text_field'] . ''; ?>

- -

' . $portfolio_options['link_text_field'] . ''; ?>

- ' . wp_kses_post( $portfolio_options['link_text_field'] ) . ''; ?>

+ +

' . wp_kses_post( $portfolio_options['link_text_field'] ) . ''; ?>

+ post_content != "" ? $post->post_content : ''; - if ( empty( $full_descr ) ){ + if ( 1 === absint( $portfolio_options['description_additional_field'] ) ) { + remove_filter( 'the_content', 'pdfprnt_content' ); + $full_descr = '' !== $post->post_content ? apply_filters( 'the_content', $post->post_content ) : ''; + add_filter( 'the_content', 'pdfprnt_content' ); + if ( empty( $full_descr ) ) { $full_descr = isset( $post_meta['_prtfl_short_descr'] ) ? $post_meta['_prtfl_short_descr'] : ''; } else { if ( function_exists( 'mltlngg_the_content_filter' ) ) { @@ -2031,69 +2280,83 @@ if ( function_exists( 'prepend_attachment' ) ) { $full_descr = prepend_attachment( $full_descr ); } - if ( function_exists( 'wp_make_content_images_responsive' ) ) { + if ( function_exists( 'wp_filter_content_tags' ) ) { + $full_descr = wp_filter_content_tags( $full_descr ); + } elseif ( function_exists( 'wp_make_content_images_responsive' ) ) { $full_descr = wp_make_content_images_responsive( $full_descr ); } if ( function_exists( 'do_shortcode' ) ) { $full_descr = do_shortcode( $full_descr ); } } - if ( ! empty( $full_descr ) ) { ?> -
' . $prtfl_options['description_text_field'] . ''; ?>
- +
' . wp_kses_post( $prtfl_options['description_text_field'] ) . ''; ?>
+ -

' . $portfolio_options['svn_text_field'] . ''; ?>

- +

' . wp_kses_post( $portfolio_options['svn_text_field'] ) . ''; ?>

+ ID, 'portfolio_executor_profile' ); - if ( 1 == $portfolio_options['executor_additional_field'] && ! empty( $executors_profile ) ) { ?> -

' . $portfolio_options['executor_text_field'] . ''; ?> - +

' . wp_kses_post( $portfolio_options['executor_text_field'] ) . ''; ?> + 0 ) { echo ', '; - } ?> - name; ?> - + } + ?> + name ); ?> +

- +
-
- ID, '_prtfl_images' ) ) { +
+ ID, '_prtfl_images' ) ) { $array_post_thumbnail_id = array_filter( explode( ',', get_post_meta( $post->ID, '_prtfl_images', true ) ) ); } else { /* Compatibility with old plugin version 2.37 */ - $args = array( - 'post_parent' => $post->ID, - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - 'numberposts' => -1, - 'orderby' => 'menu_order', - 'order' => 'ASC', - 'exclude' => $post_thumbnail_id, - 'fields' => 'ids' + $args = array( + 'post_parent' => $post->ID, + 'post_type' => 'attachment', + 'post_mime_type' => 'image', + 'numberposts' => -1, + 'orderby' => 'menu_order', + 'order' => 'ASC', + 'exclude' => $post_thumbnail_id, + 'fields' => 'ids', ); $array_post_thumbnail_id = get_children( $args ); } $count_element = count( $array_post_thumbnail_id ); foreach ( $array_post_thumbnail_id as $key => $value ) { - $image = wp_get_attachment_image_src( $value, $prtfl_options['image_size_photo'] ); - $image_large = wp_get_attachment_image_src( $value, 'large' ); - $image_alt = get_post_meta( $value, '_wp_attachment_image_alt', true ); - $image_title = get_post_meta( $value, '_wp_attachment_image_title', true ); - $image_desc = get_post( $value ); - $image_desc = $image_desc->post_content; + $image = wp_get_attachment_image_src( $value, $prtfl_options['image_size_photo'] ); + $image_large = wp_get_attachment_image_src( $value, 'large' ); + $image_alt = get_post_meta( $value, '_wp_attachment_image_alt', true ); + $image_title = get_post_meta( $value, '_wp_attachment_image_title', true ); + $image_desc = get_post( $value ); + $image_desc = $image_desc->post_content; /* get width and height for image_size_photo */ - if ( 'portfolio-photo-thumb' != $prtfl_options['image_size_photo'] ) { + if ( 'portfolio-photo-thumb' !== $prtfl_options['image_size_photo'] ) { $width = absint( get_option( $prtfl_options['image_size_photo'] . '_size_w' ) ); $height = absint( get_option( $prtfl_options['image_size_photo'] . '_size_h' ) ); } else { @@ -2101,138 +2364,235 @@ $height = $prtfl_options['custom_size_px']['portfolio-photo-thumb'][1]; } - if ( 0 == $key ) { ?> - ' . $portfolio_options['screenshot_text_field'] . ''; ?> + if ( 0 === $key ) { + ?> + ' . wp_kses_post( $portfolio_options['screenshot_text_field'] ) . ''; ?>
- + if ( 0 < $count_element ) { + ?>
+
- found_posts; - $request = $wp_query->request; - $paged = $showitems = $args['paged']; - $per_page = $args['posts_per_page']; - $pages = intval( $count_all_albums / $per_page ); + $request = $wp_query->request; + $paged = $args['paged']; + $showitems = $paged; + $per_page = $args['posts_per_page']; + $pages = intval( $count_all_albums / $per_page ); if ( $count_all_albums % $per_page > 0 ) { - $pages += 1; + $pages++; } $range = 2; if ( ! $pages ) { $pages = 1; } - if ( 1 != $pages ) { ?> + if ( 1 !== $pages ) { + ?>
- +
- + /** + * Add shortcode content + * + * @param string $content Shortcode content. + */ + function prtfl_shortcode_button_content( $content ) { + ?> - 'bws-portfolio', + 'include' => $prtfl_id_list, + ) : array( 'post_type' => 'bws-portfolio' ); + $prtfl_posts = get_posts( $args ); + + } elseif ( is_int( $prtfl_id ) || is_string( $prtfl_id ) ) { + + $prtfl_int_id = is_int( $prtfl_id ) ? $prtfl_id : intval( $prtfl_id ); + $prtfl_posts = get_post( $prtfl_int_id ); + + } + + $prtfl_posts_end = array(); + foreach ( (array) $prtfl_posts as $key => $prtfl_post ) { + + $prtfl_meta = get_post_meta( $prtfl_post->ID, '' ); + unset( $prtfl_meta['_edit_lock'] ); + unset( $prtfl_meta['_edit_last'] ); + + foreach ( $prtfl_meta['prtfl_information'] as $key => $prtfl_information ) { + $prtfl_information = isset( $prtfl_information ) ? unserialize( $prtfl_information ) : ''; + $prtfl_meta['prtfl_information'][ $key ] = $prtfl_information; + } + + foreach ( $prtfl_meta['_prtfl_images'] as $key => $prtfl_images ) { + $prtfl_images_all = isset( $prtfl_images ) ? explode( ',', $prtfl_images ) : ''; + $args = array( + 'post_type' => 'attachment', + 'include' => $prtfl_images_all, + ); + $prtfl_images = ! empty( $prtfl_images_all ) ? get_posts( $args ) : ''; + $prtfl_meta['_prtfl_images'][ $key ] = $prtfl_images; + } + + $prtfl_posts[ $key ]->prtfl_post_meta = $prtfl_meta; + } + + return $prtfl_posts; + } +} + if ( ! function_exists( 'prtfl_add_tabs' ) ) { + /** + * Add help tab + */ function prtfl_add_tabs() { global $prtfl_options; $screen = get_current_screen(); - if ( ( ! empty( $screen->post_type ) && $prtfl_options['post_type_name'] == $screen->post_type ) || - ( ! empty( $screen->taxonomy ) && 'portfolio_executor_profile' == $screen->taxonomy ) || - ( ! empty( $screen->taxonomy ) && 'portfolio_technologies' == $screen->taxonomy ) || - ( isset( $_GET['page'] ) && 'portfolio.php' == $_GET['page'] ) ) { + if ( ( ! empty( $screen->post_type ) && $prtfl_options['post_type_name'] === $screen->post_type ) || + ( ! empty( $screen->taxonomy ) && 'portfolio_executor_profile' === $screen->taxonomy ) || + ( ! empty( $screen->taxonomy ) && 'portfolio_technologies' === $screen->taxonomy ) || + ( isset( $_GET['page'] ) && 'portfolio.php' === $_GET['page'] ) ) { $args = array( - 'id' => 'prtfl', - 'section' => '200538929' + 'id' => 'prtfl', + 'section' => '200538929', ); bws_help_tab( $screen, $args ); } @@ -2240,8 +2600,11 @@ } if ( ! function_exists( 'prtfl_plugin_deactivation' ) ) { + /** + * Action when deactivating the plugin + */ function prtfl_plugin_deactivation() { - global $wpdb, $prtfl_BWS_demo_data; + global $wpdb, $prtfl_bws_demo_data; if ( function_exists( 'is_multisite' ) && is_multisite() ) { $old_blog = $wpdb->blogid; @@ -2250,24 +2613,27 @@ foreach ( $blogids as $blog_id ) { switch_to_blog( $blog_id ); prtfl_include_demo_data(); - $prtfl_BWS_demo_data->bws_remove_demo_data(); + $prtfl_bws_demo_data->bws_remove_demo_data(); } switch_to_blog( $old_blog ); } else { - global $prtfl_BWS_demo_data; + global $prtfl_bws_demo_data; - if ( ! $prtfl_BWS_demo_data ) { + if ( ! $prtfl_bws_demo_data ) { prtfl_include_demo_data(); } - $prtfl_BWS_demo_data->bws_remove_demo_data(); + $prtfl_bws_demo_data->bws_remove_demo_data(); } } } if ( ! function_exists( 'prtfl_plugin_uninstall' ) ) { + /** + * Action when uninstalling the plugin + */ function prtfl_plugin_uninstall() { global $wpdb; - require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); + require_once ABSPATH . 'wp-admin/includes/plugin.php'; $plugins_list = get_plugins(); @@ -2298,139 +2664,12 @@ } } - require_once( dirname( __FILE__ ) . '/bws_menu/bws_include.php' ); + require_once dirname( __FILE__ ) . '/bws_menu/bws_include.php'; bws_include_init( plugin_basename( __FILE__ ) ); bws_delete_plugin( plugin_basename( __FILE__ ) ); } } - -if ( ! function_exists( 'prtfl_get_data' ) ) { - function prtfl_get_data( $prtfl_id ) { - - $post_type = array('bws-portfolio'); - - $prtfl_posts = $prtfl_images_all = array(); - - if ( 'all' == $prtfl_id || is_array( $prtfl_id ) ) { - - $prtfl_id_list = ( is_array( $prtfl_id ) && ! empty( $prtfl_id ) ) ? $prtfl_id : array(); - $args = ( is_array( $prtfl_id ) ) ? array( 'post_type' => 'bws-portfolio', - 'include' => $prtfl_id_list ) : array( 'post_type' => 'bws-portfolio'); - $prtfl_posts = get_posts( $args ); - - } else if ( is_int( $prtfl_id ) || is_string( $prtfl_id ) ) { - - $prtfl_int_id = is_int( $prtfl_id ) ? $prtfl_id : intval( $prtfl_id ); - $prtfl_posts = get_post( $prtfl_int_id ); - - } - - $prtfl_posts_end = array(); - foreach ( (array)$prtfl_posts as $key => $prtfl_post ) { - - $prtfl_meta = get_post_meta( $prtfl_post->ID, '' ); - unset($prtfl_meta['_edit_lock']); - unset($prtfl_meta['_edit_last']); - - foreach ( $prtfl_meta['prtfl_information'] as $key => $prtfl_information ) { - - $prtfl_information = isset( $prtfl_information ) ? unserialize( $prtfl_information ) : ""; - $prtfl_meta['prtfl_information'][$key] = $prtfl_information; - } - - foreach ( $prtfl_meta['_prtfl_images'] as $key => $prtfl_images ) { - - $prtfl_images_all = isset( $prtfl_images ) ? explode( ',' , $prtfl_images ) : ""; - $args = array( 'post_type' => 'attachment','include' => $prtfl_images_all ) ; - $prtfl_images = ! empty( $prtfl_images_all ) ? get_posts( $args ) : ""; - $prtfl_meta['_prtfl_images'][$key] = $prtfl_images; - } - - $prtfl_posts[$key]->prtfl_post_meta = $prtfl_meta; - } - - return $prtfl_posts; - } -} - - -if ( ! function_exists( 'prtfl_widgets_init' ) ) { - function prtfl_widgets_init() { - register_widget( "Prtfl_Widget" ); - } -} - -/** - * Class extends WP class WP_Widget, and create new widget - * - */ -if ( ! class_exists( 'Prtfl_Widget' ) ) { - class Prtfl_Widget extends WP_Widget { - /** - * constructor of class - */ - public function __construct() { - parent::__construct( - 'prtfl_widget', - __( 'Latest Portfolio Items', 'portfolio' ), - array( 'description' => __( 'Displays the latest Portfolio projects.', 'portfolio' ) ) - ); - } - /** - * Function to displaying widget in front end - * @param array() $args array with sidebar settings - * @param array() $instance array with widget settings - * @return void - */ - public function widget( $args, $instance ) { - - $widget_title = ( ! empty( $instance['widget_title'] ) ) ? apply_filters( 'widget_title', $instance['widget_title'], $instance, $this->id_base ) : ''; - $widget_count_posts = ( ! empty( $instance['widget_count_posts'] ) ) ? $instance['widget_count_posts']: ''; - $widget_count_colums = ( ! empty( $instance['widget_count_colums'] ) ) ? $instance['widget_count_colums']: ''; - - $atts['count'] = $widget_count_posts; - $content = prtfl_latest_items( $atts, $widget_count_colums ); - echo $args['before_widget'] . $args['before_title'] . $widget_title . $args['after_title'] . $content; - } - - public function form( $instance ) { - global $sbscrbr_options; - - $widget_title = isset( $instance['widget_title'] ) ? stripslashes( sanitize_text_field( $instance['widget_title'] ) ) : ''; - $widget_count_posts = isset( $instance['widget_count_posts'] ) ? stripslashes( sanitize_text_field( $instance['widget_count_posts'] ) ) : 5; - $widget_count_colums = isset( $instance['widget_count_colums'] ) ? stripslashes( sanitize_text_field( $instance['widget_count_colums'] ) ) : 3; - ?> -

- -

-

- -

-

- -

-