diff -r 490d5cc509ed -r cf61fcea0001 wp/wp-content/plugins/portfolio/portfolio.php
--- a/wp/wp-content/plugins/portfolio/portfolio.php Tue Jun 09 11:14:17 2015 +0000
+++ b/wp/wp-content/plugins/portfolio/portfolio.php Mon Oct 14 17:39:30 2019 +0200
@@ -1,16 +1,18 @@
' . __( '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 );
+ }
+
+ add_action( 'load-' . $settings, 'prtfl_add_tabs' );
+ add_action( 'load-post-new.php', 'prtfl_add_tabs' );
+ add_action( 'load-post.php', 'prtfl_add_tabs' );
+ add_action( 'load-edit.php', 'prtfl_add_tabs' );
+ }
+}
+
+/* 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' ) ) {
+if ( ! function_exists( 'prtfl_init' ) ) {
function prtfl_init() {
global $prtfl_boxes, $prtfl_plugin_info;
- /* Internationalization, first(!) */
- load_plugin_textdomain( 'portfolio', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
- require_once( dirname( __FILE__ ) . '/bws_menu/bws_functions.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' ) )
+ if ( ! function_exists( 'get_plugin_data' ) ) {
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
+ }
$prtfl_plugin_info = get_plugin_data( __FILE__ );
}
/* Function check if plugin is compatible with current WP version */
- bws_wp_version_check( plugin_basename( __FILE__ ), $prtfl_plugin_info, "3.1" );
+ bws_wp_min_version_check( plugin_basename( __FILE__ ), $prtfl_plugin_info, '3.9' );
$prtfl_boxes['Portfolio-Info'] = array(
- array( '_prtfl_short_descr', __( 'Short description', 'portfolio' ), __( 'A short description which you\'d like to be displayed on your portfolio page', 'portfolio' ), '', '' ),
- array( '_prtfl_date_compl', __( 'Date of completion', 'portfolio' ), __( 'The date when the task was completed', 'portfolio' ), '', '' ),
- array( '_prtfl_link', __( 'Link', 'portfolio' ), __( 'A link to the site', 'portfolio' ), '', '' ),
- array( '_prtfl_svn', __( 'SVN', 'portfolio' ), __( 'SVN URL', 'portfolio' ), '', '' ),
+ array(
+ 'name' => '_prtfl_short_descr',
+ 'title' => __( 'Short description', 'portfolio' ),
+ 'type' => 'text'
+ ),
+ array(
+ 'name' => '_prtfl_date_compl',
+ 'title' => __( 'Date of completion', 'portfolio' ),
+ 'type' => 'text'
+ ),
+ array(
+ 'name' => '_prtfl_link',
+ 'title' => __( 'Link', 'portfolio' ),
+ 'type' => 'url'
+ ),
+ array(
+ 'name' => '_prtfl_svn',
+ 'title' => __( 'SVN URL', 'portfolio' ),
+ 'type' => 'url'
+ )
);
/* Call register settings function */
register_prtfl_settings();
- /* Register post type */
+ /* Register post type and taxonomy for portfolio */
prtfl_post_type_portfolio();
- /* Register taxonomy for portfolio */
- prtfl_taxonomy_portfolio();
+
+ if ( ! is_admin() ) {
+ /* add template for gallery pages */
+ add_action( 'template_include', 'prtfl_template_include' );
+ }
+
+ /* demo data */
+ $demo_options = get_option( 'prtfl_demo_options' );
+ if ( ! empty( $demo_options ) || ( isset( $_GET['page'] ) && 'portfolio.php' == $_GET['page'] ) ) {
+ prtfl_include_demo_data();
+ }
}
}
if ( ! function_exists( 'prtfl_admin_init' ) ) {
function prtfl_admin_init() {
- global $bws_plugin_info, $prtfl_plugin_info;
+ global $bws_plugin_info, $prtfl_plugin_info, $bws_shortcode_list, $wpdb;
+
+ if ( empty( $bws_plugin_info ) ) {
+ $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' );
- if ( ! isset( $bws_plugin_info ) || empty( $bws_plugin_info ) )
- $bws_plugin_info = array( 'id' => '74', 'version' => $prtfl_plugin_info["Version"] );
+ }
+}
- prtfl_admin_error();
+/* Function for activation plugin */
+if ( ! function_exists( 'prtfl_plugin_activate' ) ) {
+ function prtfl_plugin_activate() {
+ if ( is_multisite() ) {
+ switch_to_blog( 1 );
+ register_uninstall_hook( __FILE__, 'prtfl_plugin_uninstall' );
+ restore_current_blog();
+ } else {
+ register_uninstall_hook( __FILE__, 'prtfl_plugin_uninstall' );
+ }
}
}
/* Register settings function */
if ( ! function_exists( 'register_prtfl_settings' ) ) {
function register_prtfl_settings() {
- global $prtfl_options, $prtfl_plugin_info;
-
- $prtfl_option_defaults = array(
- 'prtfl_custom_size_name' => array( 'portfolio-thumb', 'portfolio-photo-thumb' ),
- 'prtfl_custom_size_px' => array( array( 280, 300 ), array( 240, 260 ) ),
- 'prtfl_order_by' => 'menu_order',
- 'prtfl_order' => 'ASC',
- 'prtfl_custom_image_row_count' => 3,
- 'prtfl_date_additional_field' => 1,
- 'prtfl_link_additional_field' => 1,
- 'prtfl_shrdescription_additional_field' => 1,
- 'prtfl_description_additional_field' => 1,
- 'prtfl_svn_additional_field' => 1,
- 'prtfl_executor_additional_field' => 1,
- 'prtfl_technologies_additional_field' => 1,
- 'prtfl_link_additional_field_for_non_registered' => 1,
- 'prtfl_date_text_field' => __( 'Date of completion:', 'portfolio' ),
- 'prtfl_link_text_field' => __( 'Link:', 'portfolio' ),
- 'prtfl_shrdescription_text_field' => __( 'Short description:', 'portfolio' ),
- 'prtfl_description_text_field' => __( 'Description:', 'portfolio' ),
- 'prtfl_svn_text_field' => __( 'SVN:', 'portfolio' ),
- 'prtfl_executor_text_field' => __( 'Executor Profile:', 'portfolio' ),
- 'prtfl_screenshot_text_field' => __( 'More screenshots:', 'portfolio' ),
- 'prtfl_technologies_text_field' => __( 'Technologies:', 'portfolio' ),
- 'prtfl_slug' => 'portfolio',
- 'prtfl_rewrite_template' => 1,
- 'prtfl_rename_file' => 0,
- 'plugin_option_version' => $prtfl_plugin_info["Version"],
- 'widget_updated' => 1 /* this option is for updating plugin was added in v2.29 */
- );
+ global $prtfl_options, $prtfl_plugin_info, $wpdb;
/* Install the option defaults */
- if ( ! get_option( 'prtfl_options' ) )
- add_option( 'prtfl_options', $prtfl_option_defaults );
+ if ( ! get_option( 'prtfl_options' ) ) {
+ $option_defaults = prtfl_get_options_default();
+ add_option( 'prtfl_options', $option_defaults );
+ }
/* Get options from the database */
$prtfl_options = get_option( 'prtfl_options' );
- if ( isset( $prtfl_options['prtfl_prettyPhoto_style'] ) )
- unset( $prtfl_options['prtfl_prettyPhoto_style'] );
-
/* 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'] < '2.29' )
- $prtfl_option_defaults['widget_updated'] = 0;
+
+ $wpdb->query( "UPDATE {$wpdb->prefix}posts SET post_type = 'bws-portfolio' WHERE post_type = 'portfolio'" );
+
+ $option_defaults = prtfl_get_options_default();
- $prtfl_options = array_merge( $prtfl_option_defaults, $prtfl_options );
- $prtfl_options['plugin_option_version'] = $prtfl_plugin_info["Version"];
+ if ( ! isset( $prtfl_options['plugin_option_version'] ) || $prtfl_options['plugin_option_version'] < '2.29' ) {
+ $option_defaults['widget_updated'] = 0;
+ }
+ /* Add options 'post_type_name' */
+ if ( ! isset( $prtfl_options['post_type_name'] ) ) {
+ $option_defaults['post_type_name'] = 'bws-portfolio';
+ }
+
+ $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();
+
update_option( 'prtfl_options', $prtfl_options );
- /* update templates when updating plugin */
- prtfl_plugin_install();
}
if ( function_exists( 'add_image_size' ) ) {
- add_image_size( 'portfolio-thumb', $prtfl_options['prtfl_custom_size_px'][0][0], $prtfl_options['prtfl_custom_size_px'][0][1], true );
- add_image_size( 'portfolio-photo-thumb', $prtfl_options['prtfl_custom_size_px'][1][0], $prtfl_options['prtfl_custom_size_px'][1][1], true );
- }
- }
-}
-
-
-if ( ! function_exists( 'prtfl_plugin_install' ) ) {
- function prtfl_plugin_install() {
- global $prtfl_filenames, $prtfl_filepath, $prtfl_themepath, $prtfl_options;
-
- if ( empty( $prtfl_options ) )
- register_prtfl_settings();
-
- foreach ( $prtfl_filenames as $filename ) {
- if ( ! file_exists( $prtfl_themepath . $filename ) ) {
- $handle = @fopen( $prtfl_filepath . $filename, "r" );
- $contents = @fread( $handle, filesize( $prtfl_filepath . $filename ) );
- @fclose( $handle );
- if ( ! ( $handle = @fopen( $prtfl_themepath . $filename, 'w' ) ) )
- return false;
- @fwrite( $handle, $contents );
- @fclose( $handle );
- @chmod( $prtfl_themepath . $filename, octdec( 755 ) );
- } elseif ( ! isset( $prtfl_options['prtfl_rewrite_template'] ) || 1 == $prtfl_options['prtfl_rewrite_template'] ) {
- $handle = @fopen( $prtfl_themepath . $filename, "r" );
- $contents = @fread( $handle, filesize( $prtfl_themepath . $filename ) );
- @fclose( $handle );
- if ( ! ( $handle = @fopen( $prtfl_themepath . $filename . '.bak', 'w' ) ) )
- return false;
- @fwrite( $handle, $contents );
- @fclose( $handle );
-
- $handle = @fopen( $prtfl_filepath . $filename, "r" );
- $contents = @fread( $handle, filesize( $prtfl_filepath . $filename ) );
- @fclose( $handle );
- if ( ! ( $handle = @fopen( $prtfl_themepath . $filename, 'w' ) ) )
- return false;
- @fwrite( $handle, $contents );
- @fclose( $handle );
- @chmod( $prtfl_themepath . $filename, octdec( 755 ) );
+ 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'] ) {
+ 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 );
}
}
}
}
-if ( ! function_exists ( 'prtfl_after_switch_theme' ) ) {
- function prtfl_after_switch_theme() {
- global $prtfl_filenames, $prtfl_themepath;
- $file_exists_flag = true;
- foreach ( $prtfl_filenames as $filename ) {
- if ( ! file_exists( $prtfl_themepath . $filename ) )
- $file_exists_flag = false;
- }
- if ( ! $file_exists_flag )
- prtfl_plugin_install();
- }
-}
-
-if ( ! function_exists( 'prtfl_admin_error' ) ) {
- function prtfl_admin_error() {
- global $prtfl_filenames, $prtfl_filepath, $prtfl_themepath;
-
- $post = isset( $_REQUEST['post'] ) ? $_REQUEST['post'] : "" ;
- $post_type = isset( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : "" ;
- $file_exists_flag = true;
- if ( ( 'portfolio' == get_post_type( $post ) || 'portfolio' == $post_type ) || ( isset( $_REQUEST['page'] ) && 'portfolio.php' == $_REQUEST['page'] ) ) {
- foreach ( $prtfl_filenames as $filename ) {
- if ( ! file_exists( $prtfl_themepath . $filename ) )
- $file_exists_flag = false;
- }
- }
- if ( ! $file_exists_flag )
- echo '
' . __( 'The files "portfolio.php" and "portfolio-post.php" are not found in your theme directory. Please copy them from the directory `wp-content/plugins/portfolio/template/` to your theme directory for correct work of the Portfolio plugin', 'portfolio' ) . '
';
- }
-}
-
-if ( ! function_exists( 'prtfl_settings_page' ) ) {
- function prtfl_settings_page() {
- global $prtfl_options, $wpdb, $wp_version, $prtfl_plugin_info;
- $error = $message = $cstmsrch_options_name = "";
- $plugin_basename = plugin_basename( __FILE__ );
-
- if ( false !== get_option( 'cstmsrchpr_options' ) )
- $cstmsrch_options_name = "cstmsrchpr_options";
- elseif ( false !== get_option( 'cstmsrch_options' ) )
- $cstmsrch_options_name = "cstmsrch_options";
- elseif ( false !== get_option( 'bws_custom_search' ) )
- $cstmsrch_options_name = "bws_custom_search";
-
- $all_plugins = get_plugins();
- if ( isset( $cstmsrch_options_name ) && "" != $cstmsrch_options_name )
- $cstmsrch_options = get_option( $cstmsrch_options_name );
-
- /* Save data for settings page */
- if ( isset( $_REQUEST['prtfl_form_submit'] ) && check_admin_referer( $plugin_basename, 'prtfl_nonce_name' ) ) {
- $prtfl_request_options = array();
- $prtfl_request_options["prtfl_custom_size_name"] = $prtfl_options["prtfl_custom_size_name"];
-
- $prtfl_request_options["prtfl_custom_size_px"] = array(
- array( intval( trim( $_REQUEST['prtfl_custom_image_size_w_album'] ) ), intval( trim( $_REQUEST['prtfl_custom_image_size_h_album'] ) ) ),
- array( intval( trim( $_REQUEST['prtfl_custom_image_size_w_photo'] ) ), intval( trim( $_REQUEST['prtfl_custom_image_size_h_photo'] ) ) )
- );
- $prtfl_request_options["prtfl_custom_image_row_count"] = intval( $_REQUEST['prtfl_custom_image_row_count'] );
- if ( "" == $prtfl_request_options["prtfl_custom_image_row_count"] || 1 > $prtfl_request_options["prtfl_custom_image_row_count"] )
- $prtfl_request_options["prtfl_custom_image_row_count"] = 1;
-
- $prtfl_request_options["prtfl_order_by"] = $_REQUEST['prtfl_order_by'];
- $prtfl_request_options["prtfl_order"] = $_REQUEST['prtfl_order'];
-
- $prtfl_request_options["prtfl_date_additional_field"] = isset( $_REQUEST["prtfl_date_additional_field"] ) ? $_REQUEST["prtfl_date_additional_field"] : 0;
- $prtfl_request_options["prtfl_link_additional_field"] = isset( $_REQUEST["prtfl_link_additional_field"] ) ? $_REQUEST["prtfl_link_additional_field"] : 0;
- $prtfl_request_options["prtfl_shrdescription_additional_field"] = isset( $_REQUEST["prtfl_shrdescription_additional_field"] ) ? $_REQUEST["prtfl_shrdescription_additional_field"] : 0;
- $prtfl_request_options["prtfl_description_additional_field"] = isset( $_REQUEST["prtfl_description_additional_field"] ) ? $_REQUEST["prtfl_description_additional_field"] : 0;
- $prtfl_request_options["prtfl_svn_additional_field"] = isset( $_REQUEST["prtfl_svn_additional_field"] ) ? $_REQUEST["prtfl_svn_additional_field"] : 0;
- $prtfl_request_options["prtfl_executor_additional_field"] = isset( $_REQUEST["prtfl_executor_additional_field"] ) ? $_REQUEST["prtfl_executor_additional_field"] : 0;
- $prtfl_request_options["prtfl_technologies_additional_field"] = isset( $_REQUEST["prtfl_technologies_additional_field"] ) ? $_REQUEST["prtfl_technologies_additional_field"] : 0;
-
- $prtfl_request_options["prtfl_link_additional_field_for_non_registered"] = isset( $_REQUEST["prtfl_link_additional_field_for_non_registered"] ) ? $_REQUEST["prtfl_link_additional_field_for_non_registered"] : 0;
-
- $prtfl_request_options["prtfl_date_text_field"] = stripslashes( esc_html( $_REQUEST["prtfl_date_text_field"] ) );
- $prtfl_request_options["prtfl_link_text_field"] = stripslashes( esc_html( $_REQUEST["prtfl_link_text_field"] ) );
- $prtfl_request_options["prtfl_shrdescription_text_field"] = stripslashes( esc_html( $_REQUEST["prtfl_shrdescription_text_field"] ) );
- $prtfl_request_options["prtfl_description_text_field"] = stripslashes( esc_html( $_REQUEST["prtfl_description_text_field"] ) );
- $prtfl_request_options["prtfl_svn_text_field"] = stripslashes( esc_html( $_REQUEST["prtfl_svn_text_field"] ) );
- $prtfl_request_options["prtfl_executor_text_field"] = stripslashes( esc_html( $_REQUEST["prtfl_executor_text_field"] ) );
- $prtfl_request_options["prtfl_screenshot_text_field"] = stripslashes( esc_html( $_REQUEST["prtfl_screenshot_text_field"] ) );
- $prtfl_request_options["prtfl_technologies_text_field"] = stripslashes( esc_html( $_REQUEST["prtfl_technologies_text_field"] ) );
-
- $prtfl_request_options["prtfl_slug"] = trim( $_REQUEST['prtfl_slug'] );
- $prtfl_request_options["prtfl_slug"] = strtolower( $prtfl_request_options["prtfl_slug"] );
- $prtfl_request_options["prtfl_slug"] = preg_replace( "/[^a-z0-9\s-]/", "", $prtfl_request_options["prtfl_slug"] );
- $prtfl_request_options["prtfl_slug"] = trim( preg_replace( "/[\s-]+/", " ", $prtfl_request_options["prtfl_slug"] ) );
- $prtfl_request_options["prtfl_slug"] = preg_replace( "/\s/", "-", $prtfl_request_options["prtfl_slug"] );
-
- $prtfl_request_options["prtfl_rewrite_template"] = isset( $_REQUEST["prtfl_rewrite_template"] ) ? 1 : 0;
- $prtfl_request_options["prtfl_rename_file"] = isset( $_REQUEST["prtfl_rename_file"] ) ? 1 : 0;
-
- if ( isset( $_REQUEST['prtfl_add_to_search'] ) && "" != $cstmsrch_options_name ) {
- if ( false !== get_option( $cstmsrch_options_name ) ) {
- $cstmsrch_options = get_option( $cstmsrch_options_name );
- if ( ! in_array( 'portfolio', $cstmsrch_options ) ) {
- array_push( $cstmsrch_options, 'portfolio' );
- update_option( $cstmsrch_options_name, $cstmsrch_options );
- }
- }
- } else {
- if ( false !== get_option( $cstmsrch_options_name ) ) {
- $cstmsrch_options = get_option( $cstmsrch_options_name );
- if ( in_array( 'portfolio', $cstmsrch_options ) ) {
- $key = array_search( 'portfolio', $cstmsrch_options );
- unset( $cstmsrch_options[ $key ] );
- update_option( $cstmsrch_options_name, $cstmsrch_options );
- }
- }
- }
-
- /* For revrite prtfl_slug */
- global $wp_rewrite;
- $rules = get_option( 'rewrite_rules' );
- prtfl_custom_permalinks( $rules );
- $wp_rewrite->flush_rules();
-
- /* Array merge incase this version has added new options */
- $prtfl_options = array_merge( $prtfl_options, $prtfl_request_options );
+/**
+ * Get Plugin default options
+ */
+if ( ! function_exists( 'prtfl_get_options_default' ) ) {
+ function prtfl_get_options_default() {
+ global $prtfl_plugin_info;
- /* Check select one point in the blocks Arithmetic actions and Difficulty on settings page */
- update_option( 'prtfl_options', $prtfl_options );
- $message = __( "Settings saved.", 'portfolio' );
-
- }
- /* GO PRO */
- if ( isset( $_GET['action'] ) && 'go_pro' == $_GET['action'] ) {
- $go_pro_result = bws_go_pro_tab_check( $plugin_basename );
- if ( ! empty( $go_pro_result['error'] ) )
- $error = $go_pro_result['error'];
- }
- /* Display form on the setting page */ ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
[latest_portfolio_items count=3],
- get_var( "SELECT `meta_id` FROM `" . $wpdb->postmeta . "` WHERE `meta_key` = '" . $prefix . "_short_descr' LIMIT 1" ) ) { ?>
-
-
-
-
-
-
-
- $prtfl_plugin_info["Version"],
+ 'first_install' => strtotime( "now" ),
+ 'suggest_feature_banner' => 1,
+ 'display_settings_notice' => 1,
+ /* internal */
+ '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,
+ 'date_additional_field' => 1,
+ 'link_additional_field' => 1,
+ 'shrdescription_additional_field' => 1,
+ 'description_additional_field' => 1,
+ 'svn_additional_field' => 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' => __( 'Link:', 'portfolio' ),
+ 'shrdescription_text_field' => __( 'Short description:', 'portfolio' ),
+ 'description_text_field' => __( 'Description:', 'portfolio' ),
+ 'svn_text_field' => __( 'SVN:', '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',
+ /* other */
+ '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 */
@@ -520,35 +251,39 @@
function prtfl_post_type_portfolio() {
global $wpdb, $prtfl_options;
- $slug = isset( $prtfl_options['prtfl_slug'] ) && ! empty( $prtfl_options['prtfl_slug'] ) ? $prtfl_options['prtfl_slug'] : 'portfolio';
register_post_type(
- 'portfolio',
+ $prtfl_options['post_type_name'],
array(
'labels' => array(
- 'name' => __( 'Portfolio', 'portfolio' ),
- 'singular_name' => __( 'Portfolio', 'portfolio' ),
- 'add_new' => __( 'Add New', 'portfolio' ),
- 'add_new_item' => __( 'Add New Portfolio', 'portfolio' ),
- 'edit' => __( 'Edit', 'portfolio' ),
- 'edit_item' => __( 'Edit Portfolio', 'portfolio' ),
- 'new_item' => __( 'New Portfolio', 'portfolio' ),
- 'view' => __( 'View Portfolio', 'portfolio' ),
- 'view_item' => __( 'View Portfolio', 'portfolio' ),
- 'search_items' => __( 'Search Portfolio', 'portfolio' ),
- 'not_found' => __( 'No portfolio found', 'portfolio' ),
- 'not_found_in_trash' => __( 'No portfolio found in Trash', 'portfolio' ),
- 'parent' => __( 'Parent Portfolio', 'portfolio' ),
+ '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 portfolio 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' => $slug ),
- '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',
@@ -559,82 +294,126 @@
)
)
);
- }
-}
-/* Create taxonomy for portfolio - Technologies and Executors Profile */
-if ( ! function_exists( 'prtfl_taxonomy_portfolio' ) ) {
- function prtfl_taxonomy_portfolio() {
register_taxonomy(
'portfolio_executor_profile',
- 'portfolio',
+ $prtfl_options['post_type_name'],
array(
- 'hierarchical' => false,
- 'update_count_callback' => '_update_post_term_count',
- 'labels' => array(
- 'name' => __( 'Executor Profiles', 'portfolio' ),
- 'singular_name' => __( 'Executor Profile', 'portfolio' ),
- 'search_items' => __( 'Search Executor Profiles', 'portfolio' ),
- 'popular_items' => __( 'Popular Executor Profiles', 'portfolio' ),
- 'all_items' => __( 'All Executor Profiles', 'portfolio' ),
- 'parent_item' => __( 'Parent Executor Profile', 'portfolio' ),
- 'parent_item_colon' => __( 'Parent Executor Profile:', 'portfolio' ),
- 'edit_item' => __( 'Edit Executor Profile', 'portfolio' ),
- 'update_item' => __( 'Update Executor Profile', 'portfolio' ),
- 'add_new_item' => __( 'Add New Executor Profile', 'portfolio' ),
- 'new_item_name' => __( 'New Executor Name', 'portfolio' ),
- 'separate_items_with_commas' => __( 'Separate Executor Profiles with commas', 'portfolio' ),
- 'add_or_remove_items' => __( 'Add or remove Executor Profile', 'portfolio' ),
- 'choose_from_most_used' => __( 'Choose from the most used Executor Profiles', 'portfolio' ),
- 'menu_name' => __( 'Executors', 'portfolio' )
+ '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' )
),
- '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
)
);
register_taxonomy(
'portfolio_technologies',
- 'portfolio',
+ $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' )
+ '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' ),
- 'public' => true,
- 'show_ui' => true,
- '_builtin' => 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"] ) {
+ flush_rewrite_rules();
+ $prtfl_options["flush_rewrite_rules"] = 0;
+ update_option( 'prtfl_options', $prtfl_options );
+ }
}
}
+/**
+ * Plugin include demo
+ * @return void
+ */
+if ( ! function_exists( 'prtfl_include_demo_data' ) ) {
+ 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/'
+ );
+ $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 );
+ }
+}
+
+/**
+ * Plugin settings page
+ * @return void
+ */
+if ( ! function_exists( 'prtfl_settings_page' ) ) {
+ function prtfl_settings_page() {
+ require_once( dirname( __FILE__ ) . '/inc/class-prtfl-settings.php' );
+ $page = new Prtfl_Settings_Tabs( plugin_basename( __FILE__ ) ); ?>
+
+
+ display_content(); ?>
+
+ query_vars["technologies"] ) || isset( $query->query_vars["portfolio_executor_profile"] ) ) && ( ! is_admin() ) )
- $query->set( 'post_type', array( 'portfolio' ) );
+ global $prtfl_options;
+
+ 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;
}
}
@@ -658,13 +440,13 @@
parent::__construct(
'portfolio_technologies_widget',
__( 'Technologies', 'portfolio' ),
- array( 'description' => __( 'Your most used portfolio technologies as a tag cloud', 'portfolio' ) )
+ array( 'description' => __( 'The tag cloud with your most used portfolio technologies.', 'portfolio' ) )
);
}
/* 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, '', 'portfolio_technologies_widget' );
+ $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'];
@@ -676,7 +458,7 @@
/* 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;
+ $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 */
@@ -698,82 +480,154 @@
/* Create custom permalinks for portfolio post type */
if ( ! function_exists( 'prtfl_custom_permalinks' ) ) {
function prtfl_custom_permalinks( $rules ) {
+ global $prtfl_options;
$newrules = array();
- $newrules['portfolio/page/([^/]+)/?$'] = 'index.php?pagename=portfolio&paged=$matches[1]';
- $newrules['portfolio/page/([^/]+)?$'] = 'index.php?pagename=portfolio&paged=$matches[1]';
- /* return $newrules + $rules; */
+
+ if ( empty( $prtfl_options ) ) {
+ $prtfl_options = get_option( 'prtfl_options' );
+ if ( empty( $prtfl_options ) ) {
+ register_prtfl_settings();
+ }
+ }
+
+ if ( ! empty( $prtfl_options['page_id_portfolio_template'] ) ) {
+ $parent = get_post( $prtfl_options['page_id_portfolio_template'] );
+ if ( ! empty( $parent ) ) {
+ 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]';
+ }
+ }
+ }
+
+ /* fix feed permalink ( ) on the attachment single page (if the attachment is Attached to the portfolio page) */
+ if ( ! empty( $prtfl_options['slug'] ) ) {
+ $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 )
return array_merge( $newrules, $rules );
}
}
-/* flush_rules() if our rules are not yet included */
-if ( ! function_exists( 'prtfl_flush_rules' ) ) {
- function prtfl_flush_rules() {
- $rules = get_option( 'rewrite_rules' );
- if ( ! isset( $rules['portfolio/page/([^/]+)/?$'] ) ) {
- global $wp_rewrite;
- $wp_rewrite->flush_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' ) ) {
+ function prtfl_template_include( $template ) {
+ global $prtfl_options, $wp_query;
+
+ if ( function_exists( 'is_embed' ) && is_embed() ) {
+ return $template;
}
+
+ $post_type = get_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'] ) ) ) {
+ $file = 'portfolio.php';
+ } elseif ( ! empty( $prtfl_options['page_id_portfolio_template'] ) && is_page( $prtfl_options['page_id_portfolio_template'] ) ) {
+ $file = 'portfolio.php';
+ }
+
+ 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' ) );
+ }
+
+ $find = array( $file, 'bws-templates/' . $file );
+ $template = locate_template( $find );
+
+ if ( ! $template ) {
+ $template = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/templates/' . $file;
+ }
+ }
+
+ return $template;
}
}
/* Initialization of all metaboxes on the 'Add Portfolio' and Edit Portfolio pages */
if ( ! function_exists( 'prtfl_init_metaboxes' ) ) {
function prtfl_init_metaboxes() {
- add_meta_box( 'Portfolio-Info', __( 'Portfolio Info', 'portfolio' ), 'prtfl_post_custom_box', 'portfolio', 'normal', 'high' ); /* Description metaboxe */
- add_meta_box( 'prtfl_categories_meta_box', __( 'Categories', 'portfolio' ), 'prtfl_categories_meta_box', 'portfolio', 'side', 'low' );
- if ( ! ( function_exists( 'rttchr_metabox_content_in_post' ) || function_exists( 'rttchrpr_metabox_content_in_post' ) ) ) {
- add_meta_box( 'prtfl_rttchr_metabox_ad', __( 'Already attached', 'portfolio' ), 'prtfl_rttchr_attach_box', 'portfolio', 'side', 'low' );
+ global $prtfl_options;
+ add_meta_box( 'prtfl_metabox_images', __( 'Images', 'portfolio' ), 'prtfl_metabox_images_block', $prtfl_options['post_type_name'], 'normal', 'high' );
+ add_meta_box( 'Portfolio-Info', __( 'General', 'portfolio' ), 'prtfl_post_custom_box', $prtfl_options['post_type_name'], 'normal', 'high' );
+
+ $bws_hide_premium_options_check = bws_hide_premium_options_check( $prtfl_options );
+ if ( ! $bws_hide_premium_options_check ) {
+ add_meta_box( 'prtfl_categories_meta_box', __( 'Categories', 'portfolio' ), 'prtfl_categories_meta_box', $prtfl_options['post_type_name'], 'side', 'low' );
+ add_meta_box( 'prtfl_sectors_meta_box', __( 'Sectors', 'portfolio' ), 'prtfl_sectors_meta_box', $prtfl_options['post_type_name'], 'side', 'low' );
+ add_meta_box( 'prtfl_services_meta_box', __( 'Services', 'portfolio' ), 'prtfl_services_meta_box', $prtfl_options['post_type_name'], 'side', 'low' );
}
-
}
}
/* Create custom meta box for portfolio post type */
if ( ! function_exists( 'prtfl_post_custom_box' ) ) {
function prtfl_post_custom_box( $obj = '', $box = '' ) {
- global $prtfl_boxes;
+ global $prtfl_boxes, $prtfl_plugin_info, $wp_version, $prtfl_options;
/* Generate box contents */
- foreach ( $prtfl_boxes[ $box[ 'id' ] ] as $prtfl_box ) {
- echo prtfl_text_field( $prtfl_box );
+ foreach ( $prtfl_boxes[ $box['id'] ] as $box ) {
+ echo prtfl_general_field( $box );
}
+
+ $bws_hide_premium_options_check = bws_hide_premium_options_check( $prtfl_options );
+ if ( ! $bws_hide_premium_options_check ) { ?>
+
+
+
+
+
+
+
+ 1,
+ 'textarea_name' => 'prtfl_client',
+ 'textarea_rows' => 5,
+ 'tinymce' => 1
+ );
+ wp_editor( '', 'prtfl_client', $settings ); ?>
+
+
+
+
+
+
-
- $wp_version ) { ?>
-
-
-
-
-
-
-
- " style="margin:0px 5px 2px;">
-
-
+ $post_meta = get_post_meta( $post->ID, 'prtfl_information', true );
+ $value = ! empty( $post_meta ) && is_array( $post_meta ) && ! empty( $post_meta[ $args['name'] ] ) ? $post_meta[ $args['name'] ] : ""; ?>
+
-
+
+
+
+
@@ -837,61 +712,142 @@
ID, 'prtfl_information', true);
- $args[2] = is_array( $post_meta ) ? esc_html( $post_meta[ $args[0] ] ) : "" ;
- } else {
- $args[2] = esc_html( get_post_meta( $post->ID, $args[0], true ) );
- }
- $label_format =
- '
' .
- '
%2$s
' .
- '
' .
- '
' . $description .'
' .
- '
';
- if ( '_prtfl_date_compl' == $args[0] )
- echo '';
- return vsprintf( $label_format, $args );
- }
+/**
+ * Banner on Portfolio Edit Page
+ */
+if ( ! function_exists( 'prtfl_services_meta_box' ) ) {
+ function prtfl_services_meta_box() {
+ global $prtfl_plugin_info, $wp_version; ?>
+
+
+
+
+
+ ID, '_prtfl_images' ) ) {
+ $prtfl_images = get_post_meta( $post->ID, '_prtfl_images', true );
+ } else {
+ /* Compatibility with old version 1.0.3 */
+ $args = array(
+ 'post_parent' => $post->ID,
+ 'post_type' => 'attachment',
+ 'post_mime_type' => 'image',
+ 'numberposts' => -1,
+ 'orderby' => 'menu_order',
+ 'order' => 'ASC',
+ 'exclude' => get_post_thumbnail_id(),
+ 'fields' => 'ids'
+ );
+ $attachments = get_children( $args );
+ $prtfl_images = implode( ',', $attachments );
+ }
+
+ $attachments = array_filter( explode( ',', $prtfl_images ) );
+
+ $update_meta = false;
+
+ if ( ! empty( $attachments ) ) {
+ foreach ( $attachments as $attachment_id ) {
+ $attachment = wp_get_attachment_image( $attachment_id, 'thumbnail' );
+
+ /* skip if attachment is empty */
+ if ( empty( $attachment ) ) {
+ $update_meta = true;
+ continue;
+ }
+
+ echo '
+ ' . $attachment . '
+ ' . __( 'Delete', 'portfolio' ) . '
+ ';
+
+ $updated_images_ids[] = $attachment_id;
+ }
+
+ /* update product meta to set new portfolio ids */
+ if ( $update_meta )
+ update_post_meta( $post->ID, '_prtfl_images', implode( ',', $updated_images_ids ) );
+ } ?>
+
+
+
+
+
+
+ post_type && ! wp_is_post_revision( $post_id ) && ! empty( $_POST ) ) { /* Don't store custom data twice */
+ 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 ) ) {
+ if ( ! current_user_can( 'edit_page', $post->ID ) ) {
return $post->ID;
}
/* We'll put it into an array to make it easier to loop though. The data is already in $prtfl_boxes, but we need to flatten it out. */
foreach ( $prtfl_boxes as $prtfl_boxe ) {
foreach ( $prtfl_boxe as $prtfl_fields ) {
- if ( $prtfl_fields[0] == '_prtfl_link' || $prtfl_fields[0] == '_prtfl_svn' )
- $my_data[ $prtfl_fields[0] ] = esc_url( $_POST[ $prtfl_fields[0] ] );
- else
- $my_data[ $prtfl_fields[0] ] = stripslashes( esc_html( $_POST[ $prtfl_fields[0] ] ) );
+ if ( isset( $_POST[ $prtfl_fields['name'] ] ) ) {
+ if ( 'url' == $prtfl_fields['type'] ) {
+ $my_data[ $prtfl_fields['name'] ] = esc_url( $_POST[ $prtfl_fields['name'] ] );
+ } else {
+ $my_data[ $prtfl_fields['name'] ] = stripslashes( esc_html( $_POST[ $prtfl_fields['name'] ] ) );
+ }
+ }
}
}
- /* 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 ) ) {
- /* Custom field has a value and this custom field exists in database */
- update_post_meta( $post->ID, 'prtfl_information', $my_data );
- } elseif ( $value ) {
- /* Custom field has a value, but this custom field does not exist in database */
- add_post_meta( $post->ID, 'prtfl_information', $my_data );
- } else {
- /* Custom field does not have a value, but this custom field exists in database */
- update_post_meta( $post->ID, 'prtfl_information', $my_data );
+ 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 ) ) {
+ /* Custom field has a value and this custom field exists in database */
+ update_post_meta( $post->ID, 'prtfl_information', $my_data );
+ } else {
+ /* Custom field does not have a value, but this custom field exists in database */
+ update_post_meta( $post->ID, 'prtfl_information', $my_data );
+ }
+ }
+ if ( isset( $_POST['prtfl_images'] ) ) {
+ $attachment_ids = ! empty( $_POST['prtfl_images'] ) ? array_filter( explode( ',', sanitize_text_field( $_POST['prtfl_images'] ) ) ) : array();
+ update_post_meta( $post_id, '_prtfl_images', implode( ',', $attachment_ids ) );
}
}
}
@@ -900,10 +856,10 @@
/**
* Replace shortcode [latest_portfolio_items] from portfolio content before portfolio saving
*/
-if ( ! function_exists ( 'prtfl_content_save_pre' ) ) {
+if ( ! function_exists( 'prtfl_content_save_pre' ) ) {
function prtfl_content_save_pre( $content ) {
- global $post;
- if ( isset( $post ) && "portfolio" == $post->post_type && ! wp_is_post_revision( $post->ID ) && ! empty( $_POST ) ) {
+ global $post, $prtfl_options;
+ 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 );
}
@@ -911,126 +867,283 @@
}
}
-if ( ! function_exists ( 'prtfl_register_plugin_links' ) ) {
- function prtfl_register_plugin_links( $links, $file ) {
- $base = plugin_basename(__FILE__);
- if ( $file == $base ) {
- if ( ! is_network_admin() )
- $links[] = '
' . __( 'Settings', 'portfolio' ) . ' ';
- $links[] = '
' . __( 'FAQ', 'portfolio' ) . ' ';
- $links[] = '
' . __( 'Support', 'portfolio' ) . ' ';
- }
- return $links;
- }
-}
+/* this function add custom fields and images for PDF&Print plugin in Portfolio post */
+if ( ! function_exists( 'prtfl_add_pdf_print_content' ) ) {
+ function prtfl_add_pdf_print_content( $content ) {
+ global $post, $prtfl_options;
+ $current_post_type = get_post_type();
+ $custom_content = '';
+
+ 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();
+
+ if ( 1 == $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 ) {
+ $custom_content .= '
' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '
';
+ } else {
+ $custom_content .= '
' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '
';
+ }
+ } else {
+ $custom_content .= '
' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '
';
+ }
+ }
+ if ( 0 != $user_id ) {
+ if ( 1 == $prtfl_options['svn_additional_field'] && ! empty( $post_meta['_prtfl_svn'] ) ) {
+ $custom_content .= '
' . $prtfl_options['svn_text_field'] . ' ' . $post_meta['_prtfl_svn'] . '
';
+ }
+
+ if ( 1 == $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;
+ foreach ( $executors_profile as $profile ) {
+ if ( $count > 0 ) {
+ $custom_content .= ', ';
+ }
+ $custom_content .= '' . $profile->name . ' ';
+ $count++;
+ }
+ $custom_content .= '
';
+ }
+ }
+ }
+
+ } 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' );
+ }
-if ( ! function_exists ( 'prtfl_plugin_action_links' ) ) {
- 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__ );
+ $count = 0;
+ if ( get_query_var( 'paged' ) ) {
+ $paged = get_query_var( 'paged' );
+ } elseif ( get_query_var( 'page' ) ) {
+ $paged = get_query_var( 'page' );
+ } 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 ) {
+ $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(
+ array(
+ 'taxonomy' => 'portfolio_technologies',
+ 'field' => 'slug',
+ 'terms' => $technologies
+ )
+ )
+ );
+ } 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(
+ array(
+ '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
+ );
+ }
+
+ $second_query = new WP_Query( $args );
+ $request = $second_query->request;
+
+ if ( $second_query->have_posts() ) {
+ while ( $second_query->have_posts() ) {
+ $second_query->the_post();
+ $custom_content .= '
+
';
+
+ $post_meta = get_post_meta( $post->ID, 'prtfl_information', true );
+ $user_id = get_current_user_id();
- if ( $file == $this_plugin ) {
- $settings_link = '
' . __( 'Settings', 'portfolio' ) . ' ';
- array_unshift( $links, $settings_link );
+ $short_descr = isset( $post_meta['_prtfl_short_descr'] ) ? $post_meta['_prtfl_short_descr'] : '';
+ if ( empty( $short_descr ) ) {
+ $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 );
+ if ( empty( $post_thumbnail_id ) ) {
+ $args = array(
+ 'post_parent' => $post->ID,
+ 'post_type' => 'attachment',
+ 'post_mime_type' => 'image',
+ 'numberposts' => 1
+ );
+ $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'] ) ) {
+
+ $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'] ) {
+ $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 );
+
+ $custom_content .= '
';
+ }
+ }
+
+ $custom_content .= '
+
';
+ if ( 1 == $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 ) {
+ $custom_content .= '
' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '
';
+ } else {
+ $custom_content .= '
' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '
';
+ }
+ } else {
+ $custom_content .= '
' . $prtfl_options['link_text_field'] . ' ' . $post_meta['_prtfl_link'] . '
';
+ }
+ }
+ if ( 1 == $prtfl_options['shrdescription_additional_field'] ) {
+ $custom_content .= '
' . $prtfl_options['shrdescription_text_field'] . ' ' . $short_descr . '
';
+ }
+ $custom_content .= '
+
+
';
+ }
}
}
- return $links;
+ return $content . $custom_content;
}
}
-
-
-if ( ! function_exists( 'prtfl_template_redirect' ) ) {
- function prtfl_template_redirect() {
- global $wp_query, $post, $posts, $prtfl_filenames, $prtfl_themepath;
- if ( 'portfolio' == get_post_type() && "" == $wp_query->query_vars["s"] && ! isset( $wp_query->query_vars["technologies"] ) && ! isset( $wp_query->query_vars["portfolio_executor_profile"] ) ) {
- $file_exists_flag = true;
- foreach ( $prtfl_filenames as $filename ) {
- if ( ! file_exists( $prtfl_themepath . $filename ) )
- $file_exists_flag = false;
- }
- if ( $file_exists_flag ) {
- include( get_stylesheet_directory() . '/portfolio-post.php' );
- exit();
- }
- } elseif ( 'portfolio' == get_post_type() && ( isset( $wp_query->query_vars["technologies"] ) || isset( $wp_query->query_vars["portfolio_executor_profile"] ) ) ) {
- $file_exists_flag = true;
- foreach ( $prtfl_filenames as $filename ) {
- if ( ! file_exists( $prtfl_themepath . $filename ) )
- $file_exists_flag = false;
- }
- if ( $file_exists_flag ) {
- include( get_stylesheet_directory() . '/portfolio.php' );
- exit();
- }
- }
- }
-}
-
+/* adding class to manu items */
if ( ! function_exists( 'prtfl_add_portfolio_ancestor_to_menu' ) ) {
function prtfl_add_portfolio_ancestor_to_menu( $classes, $item ) {
- if ( is_singular( 'portfolio' ) ) {
+ 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 ) && $parent == strtolower( $item->title ) ) {
$classes[] = 'current-page-ancestor';
+ }
}
return $classes;
}
}
+/* forming content for portfolio items */
if ( ! function_exists( 'prtfl_latest_items' ) ) {
function prtfl_latest_items( $atts ) {
+ global $prtfl_options, $wp_query;
+ $old_wp_query = $wp_query;
+
$content = '
';
- if ( empty( $atts['count'] ) )
+ if ( empty( $atts['count'] ) ) {
$atts['count'] = 3;
+ }
$args = array(
- 'post_type' => 'portfolio',
- 'post_status' => 'publish',
- 'orderby' => 'date',
- 'order' => 'DESC',
- 'posts_per_page' => $atts['count'],
+ 'post_type' => $prtfl_options['post_type_name'],
+ 'post_status' => 'publish',
+ 'orderby' => 'date',
+ 'order' => 'DESC',
+ 'posts_per_page' => $atts['count'],
);
- query_posts( $args );
+ $second_query = new WP_Query( $args );
+ $request = $second_query->request;
- while ( have_posts() ) : the_post();
+ if ( $second_query->have_posts() ) {
+ while ( $second_query->have_posts() ) {
+ $second_query->the_post();
$content .= '
';
global $post;
- $meta_values = get_post_custom($post->ID);
- $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
- if( empty ( $post_thumbnail_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
);
- $attachments = get_children( $args );
- $post_thumbnail_id = key($attachments);
+ $attachments = get_children( $args );
+ $post_thumbnail_id = key( $attachments );
}
- $image = wp_get_attachment_image_src( $post_thumbnail_id, 'portfolio-thumb' );
+ $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);
- $date_compl = isset( $post_meta['_prtfl_date_compl'] ) ? $post_meta['_prtfl_date_compl'] : '';
- if ( ! empty( $date_compl ) && 'in progress' != $date_compl ) {
- $date_compl = explode( "/", $date_compl );
- $date_compl = date( get_option( 'date_format' ), strtotime( $date_compl[1]."-".$date_compl[0].'-'.$date_compl[2] ) );
+ $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'] : '';
+ $short_descr = isset( $post_meta['_prtfl_short_descr'] ) ? $post_meta['_prtfl_short_descr'] : '';
+ if ( empty( $short_descr ) ) {
+ $short_descr = get_the_excerpt();
}
- $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();
$title = get_the_title();
- if ( empty( $title ) )
- $title = '(' . __( 'No title', 'portfolio-pro' ) . ')';
+ if ( empty( $title ) ) {
+ $title = '(' . __( 'No title', 'portfolio' ) . ')';
+ }
$permalink = get_permalink();
-
+
$content .= '
@@ -1040,124 +1153,208 @@
' . $title . '
';
- $content .= '
' . $short_descr . '
-
+ if ( 1 == $prtfl_options['shrdescription_additional_field'] && ( ! empty( $short_descr ) ) ) {
+ $content .= '
' . $short_descr . '
';
+ }
+ $content .= '
';
- $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 .= '
name ) . '" ' . '>' . $term->name . ' ';
- $count++;
+ 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 .= ', ';
+ }
+ $content .= '
name ) . '" ' . '>' . $term->name . ' ';
+ $count++;
+ }
+ } else {
+ $content .= ' ';
}
- } else {
- $content .= ' ';
}
$content .= '
';
$content .= '
';
- endwhile;
+ }
+ }
$content .= ' ';
wp_reset_query();
+ $wp_query = $old_wp_query;
return $content;
}
}
/* Register style and script files */
-if ( ! function_exists ( 'prtfl_admin_head' ) ) {
+if ( ! function_exists( 'prtfl_admin_head' ) ) {
function prtfl_admin_head() {
- global $wp_version, $prtfl_plugin_info, $post_type;
- if ( $wp_version < 3.8 )
- wp_enqueue_style( 'prtfl_stylesheet', plugins_url( 'css/style_wp_before_3.8.css', __FILE__ ) );
- else
+ global $prtfl_plugin_info, $hook_suffix, $post_type, $prtfl_options;
+
+ wp_enqueue_style( 'prtfl_icon', plugins_url( 'css/icon.css', __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_datepicker_stylesheet', plugins_url( 'datepicker/datepicker.css', __FILE__ ) );
+ wp_enqueue_style( 'prtfl_jquery-style', plugins_url( 'css/jquery-ui.css', __FILE__ ) );
+ wp_enqueue_script( 'jquery-ui-datepicker' );
- if ( isset( $_GET['page'] ) && "portfolio.php" == $_GET['page'] ) {
wp_enqueue_script( 'prtfl_script', plugins_url( 'js/script.js', __FILE__ ) );
- wp_localize_script( 'prtfl_script', 'prtfl_var', array(
+ 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' ) ) );
+ '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();
}
- wp_enqueue_script( 'prtfl_datepicker_script', plugins_url( 'datepicker/datepicker.js', __FILE__ ) );
}
}
-if ( ! function_exists ( 'prtfl_wp_head' ) ) {
- function prtfl_wp_head() {
+/* enqueue fancybox script and style css */
+if ( ! function_exists( 'prtfl_wp_enqueue_scripts' ) ) {
+ function prtfl_wp_enqueue_scripts() {
wp_enqueue_style( 'prtfl_stylesheet', plugins_url( 'css/style.css', __FILE__ ) );
-
- if ( ! function_exists( 'is_plugin_active' ) )
- require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
-
- $all_plugins = get_plugins();
-
- if ( ! is_plugin_active( 'gallery-plugin-pro/gallery-plugin-pro.php' ) || ( isset( $all_plugins["gallery-plugin-pro/gallery-plugin-pro.php"]["Version"] ) && "1.3.0" >= $all_plugins["gallery-plugin-pro/gallery-plugin-pro.php"]["Version"] ) ) {
- wp_enqueue_style( 'prtfl_lightbox_stylesheet', plugins_url( 'fancybox/jquery.fancybox-1.3.4.css', __FILE__ ) );
- wp_enqueue_script( 'prtfl_fancybox_mousewheelJs', plugins_url( 'fancybox/jquery.mousewheel-3.0.4.pack.js', __FILE__ ), array( 'jquery' ) );
- wp_enqueue_script( 'prtfl_fancyboxJs', plugins_url( 'fancybox/jquery.fancybox-1.3.4.pack.js', __FILE__ ), array( 'jquery' ) );
+ wp_enqueue_style( 'prtfl_lightbox_stylesheet', plugins_url( 'fancybox/jquery.fancybox.min.css', __FILE__ ) );
+ }
+}
+
+/* styles for IE */
+if ( ! function_exists( 'prtfl_wp_head' ) ) {
+ 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 ) {
+ $post_type = get_post_type();
+ if ( is_single() && $prtfl_options['post_type_name'] == $post_type ) { ?>
+
+ 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' ) );
+
+ /* Initialization of fancybox script */
+ if ( ! empty( $image[0] ) ) { ?>
+
+ get_results( $wpdb->prepare( "SELECT ID FROM " . $wpdb->posts . " WHERE post_type = %s", 'portfolio' ) , ARRAY_N );
- $array_parent_id = array();
+ $array_parent_id = $wpdb->get_col( "SELECT `ID` FROM $wpdb->posts WHERE `post_type` = {$prtfl_options['post_type_name']}" );
+ if ( ! empty( $array_parent_id ) ) {
+ $string_parent_id = implode( ",", $array_parent_id );
+
+ $metas = $wpdb->get_results( "SELECT `meta_value` FROM $wpdb->postmeta WHERE `meta_key` = '_prtfl_images' AND `post_id` IN (" . $string_parent_id . ")", ARRAY_A );
- while ( list( $key, $val ) = each( $result_parent_id ) )
- $array_parent_id[] = $val[0];
+ $result_attachment_id = '';
+ foreach ( $metas as $key => $value ) {
+ if ( ! empty( $value['meta_value'] ) ) {
+ $result_attachment_id .= $value['meta_value'] . ',';
+ }
+ }
+ $result_attachment_id_array = explode( ",", rtrim( $result_attachment_id, ',' ) );
- $string_parent_id = implode( ",", $array_parent_id );
-
- $result_attachment_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 . ")" );
- echo json_encode( $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 );
+ foreach ( $attached_id as $key => $value ) {
+ $result_attachment_id_array[] = $value['ID'];
+ }
+ echo 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'];
+ $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;
case 'update_options':
- add_option( 'prtfl_images_update', '1', '', 'no' );
+ unset( $prtfl_options['need_image_update'] );
+ update_option( 'prtfl_options', $prtfl_options );
break;
}
die();
}
}
-if ( ! function_exists ( 'prtfl_wp_generate_attachment_metadata' ) ) {
+if ( ! function_exists( 'prtfl_wp_generate_attachment_metadata' ) ) {
function prtfl_wp_generate_attachment_metadata( $attachment_id, $file, $metadata ) {
global $prtfl_options;
$attachment = get_post( $attachment_id );
- add_image_size( 'portfolio-thumb', $prtfl_options['prtfl_custom_size_px'][0][0], $prtfl_options['prtfl_custom_size_px'][0][1], true );
- add_image_size( 'portfolio-photo-thumb', $prtfl_options['prtfl_custom_size_px'][1][0], $prtfl_options['prtfl_custom_size_px'][1][1], true );
+ $image_size = array( 'thumbnail' );
+
+ 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'] ) {
+ 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'";
+ 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'";
/* Make the file path relative to the upload dir */
$metadata['file']= _wp_relative_upload_path( $file );
@@ -1165,50 +1362,53 @@
/* Make thumbnails and other intermediate sizes */
global $_wp_additional_image_sizes;
- $image_size = array( 'portfolio-thumb', 'portfolio-photo-thumb' );/* get_intermediate_image_sizes(); */
-
foreach ( $image_size as $s ) {
$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 */
- else
+ if ( isset( $_wp_additional_image_sizes[ $s ]['width'] ) ) {
+ $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 */
- if ( isset( $_wp_additional_image_sizes[$s]['height'] ) )
- $sizes[ $s ]['height'] = intval( $_wp_additional_image_sizes[$s]['height'] ); /* For theme-added sizes */
- else
+ }
+ if ( isset( $_wp_additional_image_sizes[ $s ]['height'] ) ) {
+ $sizes[ $s ]['height'] = intval( $_wp_additional_image_sizes[ $s ]['height'] ); /* For theme-added sizes */
+ } else {
$sizes[ $s ]['height'] = get_option( "{$s}_size_h" ); /* For default sizes set in options */
- if ( isset( $_wp_additional_image_sizes[$s]['crop'] ) )
- $sizes[ $s ]['crop'] = intval( $_wp_additional_image_sizes[$s]['crop'] ); /* For theme-added sizes */
- else
+ }
+ if ( isset( $_wp_additional_image_sizes[ $s ]['crop'] ) ) {
+ $sizes[ $s ]['crop'] = intval( $_wp_additional_image_sizes[ $s ]['crop'] ); /* For theme-added sizes */
+ } else {
$sizes[ $s ]['crop'] = get_option( "{$s}_crop" ); /* For default sizes set in options */
+ }
}
$sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes );
foreach ( $sizes as $size => $size_data ) {
$resized = prtfl_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'] );
- if ( $resized )
- $metadata['sizes'][$size] = $resized;
+ if ( $resized ) {
+ $metadata['sizes'][ $size ] = $resized;
+ }
}
/* Fetch additional metadata from exif/iptc */
$image_meta = wp_read_image_metadata( $file );
- if ( $image_meta )
+ if ( $image_meta ) {
$metadata['image_meta'] = $image_meta;
+ }
}
return apply_filters( 'wp_generate_attachment_metadata', $metadata, $attachment_id );
}
}
-if ( ! function_exists ( 'prtfl_image_make_intermediate_size' ) ) {
+if ( ! function_exists( 'prtfl_image_make_intermediate_size' ) ) {
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],
+ 'file' => wp_basename( $resized_file ),
+ 'width' => $info[0],
+ 'height' => $info[1],
);
}
}
@@ -1216,87 +1416,96 @@
}
}
-if ( ! function_exists ( 'prtfl_image_resize' ) ) {
+if ( ! function_exists( 'prtfl_image_resize' ) ) {
function prtfl_image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 ) {
$size = @getimagesize( $file );
- if ( !$size )
+ if ( ! $size ) {
return new WP_Error( 'invalid_image', __( 'Image size not defined', 'portfolio' ), $file );
+ }
$type = $size[2];
- if ( 3 == $type )
+ if ( 3 == $type ) {
$image = imagecreatefrompng( $file );
- else if ( 2 == $type )
+ } elseif ( 2 == $type ) {
$image = imagecreatefromjpeg( $file );
- else if ( 1 == $type )
+ } elseif ( 1 == $type ) {
$image = imagecreatefromgif( $file );
- else if ( 15 == $type )
+ } elseif ( 15 == $type ) {
$image = imagecreatefromwbmp( $file );
- else if ( 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, please, manually reload image.', 'portfolio' ), $file );
-
- if ( ! is_resource( $image ) )
+ } 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 );
+ }
+ if ( ! is_resource( $image ) ) {
return new WP_Error( 'error_loading_image', $image, $file );
-
+ }
/* $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 )
+ if ( ! $dims ) {
return new WP_Error( 'error_getting_dimensions', __( 'Image size changes not defined', 'portfolio' ) );
+ }
list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims;
$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 */
imagedestroy( $image );
/* $suffix will be appended to the destination filename, just before the extension */
- if ( ! $suffix )
+ if ( ! $suffix ) {
$suffix = "{$dst_w}x{$dst_h}";
+ }
+ $info = pathinfo( $file );
+ $dir = $info['dirname'];
+ $ext = $info['extension'];
+ $name = wp_basename( $file, ".$ext" );
- $info = pathinfo( $file );
- $dir = $info['dirname'];
- $ext = $info['extension'];
- $name = wp_basename( $file, ".$ext" );
-
- if ( ! is_null( $dest_path ) and $_dest_path = realpath( $dest_path ) )
+ if ( ! is_null( $dest_path ) and $_dest_path = realpath( $dest_path ) ) {
$dir = $_dest_path;
+ }
$destfilename = "{$dir}/{$name}-{$suffix}.{$ext}";
if ( IMAGETYPE_GIF == $orig_type ) {
- if ( ! imagegif( $newimage, $destfilename ) )
+ if ( ! imagegif( $newimage, $destfilename ) ) {
return new WP_Error( 'resize_path_invalid', __( 'Invalid path', 'portfolio' ) );
+ }
} elseif ( IMAGETYPE_PNG == $orig_type ) {
- if ( ! imagepng( $newimage, $destfilename ) )
+ if ( ! imagepng( $newimage, $destfilename ) ) {
return new WP_Error( 'resize_path_invalid', __( 'Invalid path', 'portfolio' ) );
+ }
} else {
/* All other formats are converted to jpg */
$destfilename = "{$dir}/{$name}-{$suffix}.jpg";
- if ( ! imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) )
+ if ( ! imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) ) {
return new WP_Error( 'resize_path_invalid', __( 'Invalid path', 'portfolio' ) );
+ }
}
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' ) ) {
+if ( ! function_exists( 'prtfl_image_resize_dimensions' ) ) {
function prtfl_image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = false ) {
- if ( 0 >= $orig_w || 0 >= $orig_h )
+ if ( 0 >= $orig_w || 0 >= $orig_h ) {
return false;
+ }
/* At least one of dest_w or dest_h must be specific */
- if ( 0 >= $dest_w && 0 >= $dest_h )
+ if ( 0 >= $dest_w && 0 >= $dest_h ) {
return false;
+ }
if ( $crop ) {
/* Crop the largest possible portion of the original image that we can size to $dest_w x $dest_h */
@@ -1327,132 +1536,711 @@
}
/* If the resulting image would be the same size or larger we don't want to resize it */
- if ( $new_w >= $orig_w && $new_h >= $orig_h )
+ 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 );
+ 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_sanitize_file_name' ) ) {
- function prtfl_sanitize_file_name( $file_name ) {
+if ( ! function_exists( 'prtfl_theme_body_classes' ) ) {
+ function prtfl_theme_body_classes( $classes ) {
global $prtfl_options;
- if ( isset( $_REQUEST['post_id'] ) && 'portfolio' == get_post_type( $_REQUEST['post_id'] )
- && isset( $prtfl_options['prtfl_rename_file'] ) && $prtfl_options['prtfl_rename_file'] == 1 ) {
- $file_name_old = explode( '.', $file_name );
- $file_name_new = preg_replace( '/--+/', '-', preg_replace( '/[^a-zA-Z0-9_-]/', '', $file_name_old[0] ) );
-
- if ( $file_name_new == '' || $file_name_new == '-' ) {
- $slug = isset( $prtfl_options['prtfl_slug'] ) && ! empty( $prtfl_options['prtfl_slug'] ) ? $prtfl_options['prtfl_slug'] : 'portfolio';
- $file_name_new = $slug . '-' . time();
- }
- $file_name = $file_name_new . '.' . $file_name_old[1];
- }
- return $file_name;
- }
-}
-
-if ( ! function_exists( 'prtfl_filter_image_sizes' ) ) {
- function prtfl_filter_image_sizes( $sizes ) {
- if ( isset( $_REQUEST['post_id'] ) && 'portfolio' == get_post_type( $_REQUEST['post_id'] ) ) {
- $prtfl_image_size = array( 'portfolio-thumb', 'portfolio-photo-thumb', 'large' );
- foreach ( $sizes as $key => $value ) {
- if ( ! in_array( $key, $prtfl_image_size ) ) {
- unset( $sizes[ $key ] );
- }
- }
- }
- return $sizes;
- }
-}
-
-if ( ! function_exists ( 'prtfl_theme_body_classes' ) ) {
- function prtfl_theme_body_classes( $classes ) {
if ( function_exists( 'wp_get_theme' ) ) {
$current_theme = wp_get_theme();
$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';
+ }
return $classes;
}
}
-if ( ! function_exists ( 'prtfl_admin_notices' ) ) {
+if ( ! function_exists( 'prtfl_register_plugin_links' ) ) {
+ function prtfl_register_plugin_links( $links, $file ) {
+ global $prtfl_options;
+ $base = plugin_basename( __FILE__ );
+ if ( $file == $base ) {
+ if ( ! is_network_admin() ) {
+ $links[] = '' . __( 'Settings', 'portfolio' ) . ' ';
+ }
+ $links[] = '' . __( 'FAQ', 'portfolio' ) . ' ';
+ $links[] = '' . __( 'Support', 'portfolio' ) . ' ';
+ }
+ return $links;
+ }
+}
+
+if ( ! function_exists( 'prtfl_plugin_action_links' ) ) {
+ 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 ( $file == $this_plugin ) {
+ global $prtfl_options;
+ $settings_link = '' . __( 'Settings', 'portfolio' ) . ' ';
+ array_unshift( $links, $settings_link );
+ }
+ }
+ return $links;
+ }
+}
+
+if ( ! function_exists( 'prtfl_admin_notices' ) ) {
function prtfl_admin_notices() {
- global $hook_suffix, $prtfl_plugin_info, $prtfl_options;
-
- if ( 'plugins.php' == $hook_suffix ) {
- bws_plugin_banner( $prtfl_plugin_info, 'prtfl', 'portfolio', '56e6c97d1bca3199fb16cb817793a8f6', '74', '//ps.w.org/portfolio/assets/icon-128x128.png' );
+ global $hook_suffix, $prtfl_plugin_info, $prtfl_options, $prtfl_BWS_demo_data;
+
+ if ( 'plugins.php' == $hook_suffix || ( isset( $_GET['page'] ) && 'portfolio.php' == $_GET['page'] ) ) {
/* Get options from the database */
- if ( ! $prtfl_options )
+ if ( ! $prtfl_options ) {
$prtfl_options = get_option( 'prtfl_options' );
+ }
+
+ if ( ! $prtfl_BWS_demo_data ) {
+ prtfl_include_demo_data();
+ }
+ $prtfl_BWS_demo_data->bws_handle_demo_notice( $prtfl_options['display_demo_notice'] );
- if ( $prtfl_options['widget_updated'] == 0 ) {
- /* 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 { ?>
-
-
-
+ if ( 'plugins.php' == $hook_suffix ) {
+ if ( isset( $prtfl_options['first_install'] ) && strtotime( '-1 week' ) > $prtfl_options['first_install'] ) {
+ bws_plugin_banner( $prtfl_plugin_info, 'prtfl', 'portfolio', '56e6c97d1bca3199fb16cb817793a8f6', '74', '//ps.w.org/portfolio/assets/icon-128x128.png' );
+ }
+ 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'] ) {
+ /* 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 { ?>
+
-
- 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'] );
+ } else {
+ the_title( '
', ' ' );
+ }
+ }
+}
+
+/* This function will display title for portfolio post type template */
+if ( ! function_exists( 'prtfl_post_template_title' ) ) {
+ function prtfl_post_template_title() {
+ $title = get_the_title();
+ echo empty( $title ) ? '(' . __( 'No title', 'portfolio' ) . ')' : '
'. $title . ' ' ;
+ }
+}
+
+/**
+ * Prepare arguments for post query
+ * @return array|false
+ */
+if ( ! function_exists( 'prtfl_get_query_args' ) ) {
+ function prtfl_get_query_args() {
+ global $prtfl_options;
+ $count = 0;
+ if ( get_query_var( 'paged' ) ) {
+ $paged = get_query_var( 'paged' );
+ } elseif ( get_query_var( 'page' ) ) {
+ $paged = get_query_var( 'page' );
+ } else {
+ $paged = 1;
+ }
+ $per_page = $showitems = get_option( 'posts_per_page' );
+
+ 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(
+ array(
+ 'taxonomy' => 'portfolio_technologies',
+ 'field' => 'slug',
+ 'terms' => $wp_query->query_vars["technologies"]
+ )
+ )
+ );
+ } 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(
+ array(
+ '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
+ );
+ }
+
+ if ( isset( $args ) ) {
+ return $args;
+ } else {
+ return false;
+ }
+ }
+}
+
+/**
+ * Display template content
+ * @return void
+ */
+if ( ! function_exists( 'prtfl_get_content' ) ) {
+ function prtfl_get_content( $second_query ) {
+ global $post, $prtfl_options;
+
+ $request = $second_query->request;
+
+ 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 );
+ /* dublicate filter 'the_content' - as we couldnt use it */
+ if ( function_exists( 'wptexturize' ) ) {
+ $page_content = wptexturize( $page_content );
+ }
+ if ( function_exists( 'convert_smilies' ) ) {
+ $page_content = convert_smilies( $page_content );
+ }
+ if ( function_exists( 'wpautop' ) ) {
+ $page_content = wpautop( $page_content );
+ }
+ if ( function_exists( 'shortcode_unautop' ) ) {
+ $page_content = shortcode_unautop( $page_content );
+ }
+ if ( function_exists( 'prepend_attachment' ) ) {
+ $page_content = prepend_attachment( $page_content );
+ }
+ if ( 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 );
+ } ?>
+
+ have_posts() ) {
+ while ( $second_query->have_posts() ) {
+ $second_query->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 );
+
+ $short_descr = isset( $post_meta['_prtfl_short_descr'] ) ? $post_meta['_prtfl_short_descr'] : '';
+ if ( empty( $short_descr ) ) {
+ $short_descr = get_the_excerpt();
+ }
+ $title = get_the_title();
+ if ( empty( $title ) ) {
+ $title = '(' . __( 'No title', 'portfolio' ) . ')';
+ }
+ $permalink = get_permalink();
+ if ( ! empty( $image[0] ) ) {
+ /* get width and height for 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 ); ?>
+
+
+
+
+
+
+ ' . $prtfl_options['date_text_field'] . ''; ?>
+
+
+
' . $prtfl_options['link_text_field'] . ''; ?>
+
+
' . $prtfl_options['link_text_field'] . ''; ?>
+ prtfl_options
+
' . $prtfl_options['link_text_field'] . ''; ?>
+
+
' . $prtfl_options['shrdescription_text_field'] . ''; ?>
+
+
+
+
+
+
+
+
+ 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 );
+
+ 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;
+ /* get width and height for 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 ); ?>
+
+
+
+
+
+ ' . $portfolio_options['date_text_field'] . ''; ?>
+
+
+
+
'. $portfolio_options['link_text_field'] . ''; ?>
+
+
' . $portfolio_options['link_text_field'] . ''; ?>
+
+
' . $portfolio_options['link_text_field'] . ''; ?>
+ post_content != "" ? $post->post_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' ) ) {
+ $full_descr = mltlngg_the_content_filter( $full_descr );
+ }
+ /* dublicate filter 'the_content' - as we couldnt use it */
+ if ( function_exists( 'wptexturize' ) ) {
+ $full_descr = wptexturize( $full_descr );
+ }
+ if ( function_exists( 'convert_smilies' ) ) {
+ $full_descr = convert_smilies( $full_descr );
+ }
+ if ( function_exists( 'wpautop' ) ) {
+ $full_descr = wpautop( $full_descr );
+ }
+ if ( function_exists( 'shortcode_unautop' ) ) {
+ $full_descr = shortcode_unautop( $full_descr );
+ }
+ if ( function_exists( 'prepend_attachment' ) ) {
+ $full_descr = prepend_attachment( $full_descr );
+ }
+ if ( 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'] . ''; ?>
+
+
' . $portfolio_options['svn_text_field'] . ''; ?>
+ ID, 'portfolio_executor_profile' );
+ if ( 1 == $portfolio_options['executor_additional_field'] && ! empty( $executors_profile ) ) { ?>
+
' . $portfolio_options['executor_text_field'] . ''; ?>
+ 0 ) {
+ echo ', ';
+ } ?>
+ name; ?>
+
+
+
+
+
+ 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'
+ );
+ $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;
+
+ /* get width and height for 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 {
+ $width = $prtfl_options['custom_size_px']['portfolio-photo-thumb'][0];
+ $height = $prtfl_options['custom_size_px']['portfolio-photo-thumb'][1];
+ }
+
+ if ( 0 == $key ) { ?>
+
' . $portfolio_options['screenshot_text_field'] . ''; ?>
+
+
+
+
+
+
+
+
+
+ found_posts;
+
+ $request = $wp_query->request;
+ $paged = $showitems = $args['paged'];
+ $per_page = $args['posts_per_page'];
+ $pages = intval( $count_all_albums / $per_page );
+
+ if ( $count_all_albums % $per_page > 0 ) {
+ $pages += 1;
+ }
+ $range = 2;
+
+ if ( ! $pages ) {
+ $pages = 1;
+ }
+ if ( 1 != $pages ) { ?>
+
+
+
+
+
+
+
+ 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'
+ );
+ bws_help_tab( $screen, $args );
+ }
+ }
+}
+
+if ( ! function_exists( 'prtfl_plugin_deactivation' ) ) {
+ function prtfl_plugin_deactivation() {
+ global $wpdb, $prtfl_BWS_demo_data;
+
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
+ $old_blog = $wpdb->blogid;
+ /* Get all blog ids */
+ $blogids = $wpdb->get_col( "SELECT `blog_id` FROM $wpdb->blogs" );
+ foreach ( $blogids as $blog_id ) {
+ switch_to_blog( $blog_id );
+ prtfl_include_demo_data();
+ $prtfl_BWS_demo_data->bws_remove_demo_data();
+ }
+ switch_to_blog( $old_blog );
+ } else {
+ global $prtfl_BWS_demo_data;
+
+ if ( ! $prtfl_BWS_demo_data ) {
+ prtfl_include_demo_data();
+ }
+ $prtfl_BWS_demo_data->bws_remove_demo_data();
+ }
+ }
+}
if ( ! function_exists( 'prtfl_plugin_uninstall' ) ) {
function prtfl_plugin_uninstall() {
+ global $wpdb;
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
- if ( file_exists( get_stylesheet_directory() . '/portfolio.php' ) && ! unlink( get_stylesheet_directory() . '/portfolio.php' ) )
- add_action( 'admin_notices', create_function( '', ' return "Error delete template file";' ) );
- if ( file_exists( get_stylesheet_directory() . '/portfolio-post.php' ) && ! unlink( get_stylesheet_directory() . '/portfolio-post.php' ) )
- add_action( 'admin_notices', create_function( '', ' return "Error delete template file";' ) );
+ $plugins_list = get_plugins();
- delete_option( 'prtfl_options' );
- delete_option( 'prtfl_tag_update' );
- $plugins_list = get_plugins();
- if ( ! array_key_exists( 'portfolio-pro/portfolio-pro.php', $plugins_list ) )
- delete_option( 'widget-portfolio_technologies_widget' );
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
+ $old_blog = $wpdb->blogid;
+ /* Get all blog ids */
+ $blogids = $wpdb->get_col( "SELECT `blog_id` FROM $wpdb->blogs" );
+ foreach ( $blogids as $blog_id ) {
+ switch_to_blog( $blog_id );
+ if ( ! array_key_exists( 'portfolio-pro/portfolio-pro.php', $plugins_list ) ) {
+ delete_option( 'widget_portfolio_technologies_widget' );
+ delete_option( 'prtfl_options' );
+ delete_option( 'prtfl_tag_update' );
+ delete_post_meta_by_key( 'prtfl_information' );
+ delete_post_meta_by_key( '_prtfl_images' );
+ delete_post_meta_by_key( 'prtfl_featured' );
+ }
+ }
+ switch_to_blog( $old_blog );
+ } else {
+ if ( ! array_key_exists( 'portfolio-pro/portfolio-pro.php', $plugins_list ) ) {
+ delete_option( 'widget_portfolio_technologies_widget' );
+ delete_option( 'prtfl_options' );
+ delete_option( 'prtfl_tag_update' );
+ delete_post_meta_by_key( 'prtfl_information' );
+ delete_post_meta_by_key( '_prtfl_images' );
+ delete_post_meta_by_key( 'prtfl_featured' );
+ }
+ }
+
+ require_once( dirname( __FILE__ ) . '/bws_menu/bws_include.php' );
+ bws_include_init( plugin_basename( __FILE__ ) );
+ bws_delete_plugin( plugin_basename( __FILE__ ) );
}
}
-register_activation_hook( __FILE__, 'prtfl_plugin_install' ); /* Activate plugin */
+/* Activate plugin */
+register_activation_hook( __FILE__, 'prtfl_plugin_activate' );
/* Add portfolio settings page in admin menu */
add_action( 'admin_menu', 'add_prtfl_admin_menu' );
add_action( 'admin_init', 'prtfl_admin_init' );
add_action( 'init', 'prtfl_init' );
-add_action( 'wp_loaded', 'prtfl_flush_rules' );
+add_action( 'plugins_loaded', 'prtfl_plugins_loaded' );
/* Save custom data from admin */
add_action( 'save_post', 'prtfl_save_postdata', 1, 2 );
add_filter( 'content_save_pre', 'prtfl_content_save_pre', 10, 1 );
-/* Add template for single portfolio page */
-add_action( 'template_redirect', 'prtfl_template_redirect' );
-/* Add template in theme after activate new theme */
-add_action( 'after_switch_theme', 'prtfl_after_switch_theme', 10, 2 );
+/* this function add custom fields and images for PDF&Print plugin in Portfolio post */
+add_filter( 'bwsplgns_get_pdf_print_content', 'prtfl_add_pdf_print_content' );
add_action( 'admin_enqueue_scripts', 'prtfl_admin_head' );
-add_action( 'wp_enqueue_scripts', 'prtfl_wp_head' );
+add_action( 'wp_enqueue_scripts', 'prtfl_wp_enqueue_scripts' );
+add_action( 'wp_head', 'prtfl_wp_head' );
+add_action( 'wp_footer', 'prtfl_wp_footer' );
/* add theme name as class to body tag */
add_filter( 'body_class', 'prtfl_theme_body_classes' );
@@ -1463,6 +2251,8 @@
add_action( 'wp_ajax_prtfl_update_image', 'prtfl_update_image' );
add_shortcode( 'latest_portfolio_items', 'prtfl_latest_items' );
+/* custom filter for bws button in tinyMCE */
+add_filter( 'bws_shortcode_button_content', 'prtfl_shortcode_button_content' );
add_filter( 'request', 'prtfl_request_filter' );
/* Display tachnologies taxonomy */
@@ -1474,10 +2264,6 @@
add_filter( 'nav_menu_css_class', 'prtfl_add_portfolio_ancestor_to_menu', 10, 2 );
-add_filter( 'sanitize_file_name', 'prtfl_sanitize_file_name' );
-add_filter( 'intermediate_image_sizes_advanced', 'prtfl_filter_image_sizes' );
+add_action( 'admin_notices', 'prtfl_admin_notices' );
-add_action( 'admin_notices', 'prtfl_admin_notices');
-
-register_uninstall_hook( __FILE__, 'prtfl_plugin_uninstall' ); /* Deactivate plugin */
-?>
\ No newline at end of file
+register_deactivation_hook( __FILE__, 'prtfl_plugin_deactivation' ); /* Deactivate plugin */
\ No newline at end of file