File: D:/HostingSpaces/ERijn/knijft.eu/wwwroot/wp-content/themes/cheope/core/yit/Portfolio.php
<?php
/**
* Your Inspiration Themes
*
* @package WordPress
* @subpackage Your Inspiration Themes
* @author Your Inspiration Themes Team <info@yithemes.com>
*
* This source file is subject to the GNU GENERAL PUBLIC LICENSE (GPL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://www.gnu.org/licenses/gpl-3.0.txt
*/
require_once YIT_CORE_PATH . '/lib/yit/Portfolio_type/Portfolio_type.php';
/**
* Portfolio
*
* Class to manage the gallery posts. This classe use the other class Portfolio.
*
* @see class YIT_Portfolio_type
*
*
* @since 1.0.0
*/
class YIT_Portfolio extends YIT_Portfolio_type {
/**
* Constructor
*
*/
public function __construct() {}
/**
* Init
*
*/
public function init($portfolio_type_name = false) {
// change the basic configuration for the post type
add_action( 'yit_portfolio_type_args_portfolios', array( &$this, 'change_args' ) );
// change the configuration for each item of post type
add_action( 'yit_portfolios_item_configuration', array( &$this, 'change_item_configuration' ) );
// set the name of the shortcode
$this->shortcode_name = 'portfolio';
// set the ID of the option used to define the type of portfolio
$this->_fieldTypeName = 'portfolio_type';
// call the init of Portfolio, setting the name of post type to "galleries"
parent::init('portfolios');
}
/**
* Change the basic configuration for the post type
*
* @since 1.0.0
*/
public function change_args( $args ) {
return array(
'settings' => array(
array(
'name' => __( 'Portfolio Type', 'yit' ),
'id' => 'portfolio_type',
'type' => 'select',
'options' => $this->_portfolioTypes,
'std' => '',
'desc' => 'Select the portfolio type.'
), /*
array(
'name' => __( 'Slug', 'yit' ),
'id' => 'rewrite',
'type' => 'text',
'desc' => __( 'Select the word to use in the URL of each element of the portfolio.', 'yit' ),
'std' => ''
), */
array(
'type' => 'sep'
),
array(
'desc' => __( 'Publish the portfolio to configure it.', 'yit' ),
'type' => 'simple-text',
'only__not_saved' => true
)
),
// 'settings_item' => array(
// 'slider_type:elastic' => 'title, subtitle, link, content'
// ),
'settings_item' => 'title, subtitle, content-editor',
'labels' => array(
'singular_name' => __( 'Portfolio', 'yit' ),
'plural_name' => __( 'Portfolios', 'yit' ),
'item_name_sing' => __( 'Work', 'yit' ),
'item_name_plur' => __( 'Works', 'yit' ),
),
'icon_menu' => YIT_CORE_ASSETS_URL . '/images/menu/portfolio.png',
);
}
/**
* Change the configuration for each item
*
* @since 1.0.0
*/
public function change_item_configuration( $args ) {
return array(
array( 'type' => 'sep' ),
array(
'id' => 'video_url',
'name' => __( 'Video URL', 'yit' ),
'type' => 'text',
'std' => '',
'desc' => __( 'If you want a video before the description, write here its URL (Youtube or Vimeo)', 'yit' ),
),
array( 'type' => 'sep' ),
array(
'id' => 'customer',
'name' => __( 'Customer', 'yit' ),
'type' => 'text',
'std' => '',
'desc' => __( 'Insert the customer (leave empty to not use it)', 'yit' ),
),
array(
'id' => 'year',
'name' => __( 'Year', 'yit' ),
'type' => 'text',
'std' => '',
'desc' => __( 'Insert the year (leave empty to not use it)', 'yit' ),
),
array(
'id' => 'skills_label',
'name' => __( 'Skills Label', 'yit' ),
'type' => 'text',
'std' => __( 'Project', 'yit' ),
'desc' => __( 'The label for the "Skill" field', 'yit' ),
),
array(
'id' => 'skills',
'name' => __( 'Skills', 'yit' ),
'type' => 'text',
'std' => '',
'desc' => __( 'Type here if you want to show some skills', 'yit' ),
),
array(
'id' => 'website_name',
'name' => __( 'Website', 'yit' ),
'type' => 'text',
'std' => '',
'desc' => __( 'The website name of customer (leave empty to not use it)', 'yit' ),
),
array(
'id' => 'website_url',
'name' => __( 'Website URL', 'yit' ),
'type' => 'text',
'std' => '',
'desc' => __( 'The website url of customer (leave empty to not use it)', 'yit' ),
),
array( 'type' => 'sep' ),
array(
'id' => 'excerpt_length',
'name' => __( 'Text length', 'yit' ),
'type' => 'number',
'std' => 20,
'desc' => __( 'Insert length of the text of the post, in the list page.', 'yit' ),
),
array(
'id' => 'read_more_text',
'name' => __( 'Read More Text', 'yit' ),
'type' => 'text',
'std' => __( 'View Project', 'yit' ),
'desc' => __( 'Define the text of read more button (leave empty, to not use it).', 'yit' ),
),
array( 'type' => 'sep' ),
array(
'id' => 'terms',
'name' => __( 'Categories', 'yit' ),
'type' => 'categories',
'desc' => __( 'Define the categories for this element.', 'yit' )
),
array( 'type' => 'sep' ),
array(
'id' => 'is_sticky',
'name' => __( 'Featured item', 'yit' ),
'type' => 'checkbox',
'std' => '',
'desc' => __( 'Select if you want to show this item as a special item in section shortcode.', 'yit' ),
),
array( 'type' => 'sep' ),
array(
'id' => 'extra-images',
'name' => __( 'Additional Images', 'yit' ),
'type' => 'images',
'desc' => __( 'Upload here if you want to attach some other images to the project (you can only upload image one by one).', 'yit' )
),
array( 'type' => 'sep' ),
);
}
}
/**
* Add the slider configurations for the slider page
*
* @param $portfolio_type string The slider type
* @param $options array The fields of the configuration page, for the slider type defined
* @since 1.0.0
*/
function yit_add_portfolio_config( $portfolio_type, $options = array() ) {
yit_get_model('portfolio')->add_portfolio_config( $portfolio_type, $options );
}
/**
* Add the slides support, to configure the information to add inside each slide.
*
* @param $portfolio_type string The slider type
* @param $options array The fields of the configuration page, for the slider type defined
* @since 1.0.0
*/
function yit_add_work_support( $portfolio_type, $custom_options ) {
yit_get_model('portfolio')->add_work_support( $portfolio_type, $custom_options );
}
/**
* Register the script javascript file in the common array, then used to enqueue the scripts
* in the head of the webpage
*
* @param $portfolio_type string The type of the slider that needs of this asset
* @param $asset string The url of the asset (in case it's relative, it will be get from the slider folder)
* @since 1.0.0
*/
function yit_register_portfolio_script( $portfolio_type, $handle, $asset ) {
yit_get_model('portfolio')->register_portfolio_script( $portfolio_type, $handle, $asset );
}
/**
* Register the css file in the common array, then used to enqueue the scripts
* in the head of the webpage
*
* @param $portfolio_type string The type of the slider that needs of this asset
* @param $asset string The url of the asset (in case it's relative, it will be get from the slider folder)
* @since 1.0.0
*/
function yit_register_portfolio_style( $portfolio_type, $handle, $asset ) {
yit_get_model('portfolio')->register_portfolio_style( $portfolio_type, $handle, $asset );
}
/**
* Get the slider type of current slider
*
* @since 1.0
*/
function yit_portfolio_type() {
return yit_get_model('portfolio')->get('portfolio_type');
}
/**
* Set the slider loop and reset all indexes
*
* @param $slider_id string/int The ID (or the slug) of the slider post, where get the slides
*
* @since 1.0
*/
function yit_set_portfolio_loop( $ID_or_slug ) {
yit_get_model('portfolio')->set_portfolio_loop( $ID_or_slug );
}
/**
* Check if there is slides yet and increment the index and update the $current_slide
* attribute, with current slide arguments.
*
* This function is used in the loop, to generate the markup of slider, on the main code.
*
* @since 1.0
*/
function yit_have_works() {
return yit_get_model('portfolio')->have_works();
}
/**
* Check if there is slides yet and increment the index and update the $current_slide
* attribute, with current slide arguments.
*
* This function is used in the loop, to generate the markup of slider, on the main code.
*
* @since 1.0
*/
function yit_is_portfolio_empty() {
return yit_get_model('portfolio')->is_empty();
}
/**
* Echo the parameter of the current slide
*
* @param string $var The parameter.
*
* @since 1.0
*/
function yit_work_the( $var, $args = array() ) {
yit_get_model('portfolio')->the( $var, $args );
}
/**
* Get the parameter of the current slide
*
* @param string $var The parameter.
*
* @since 1.0
*/
function yit_work_get( $var, $args = array() ) {
return yit_get_model('portfolio')->get( $var, $args );
}
/**
* Echo the classes of the current slide.
*
* @param string $class Extra class.
*
* @since 1.0
*/
function yit_work_class( $class = '', $echo = true ) {
return yit_get_model('portfolio')->work_class( $class, $echo );
}
/**
* Echo the classes of the current slide.
*
* @param string $class Extra class.
*
* @since 1.0
*/
function yit_portfolio( $slider_name = false ) {
echo do_shortcode( '[portfolio name="' . $slider_name . '"]' );
}
/**
* Print the pagination of the current loop of portfolio
*
* @param string $class Extra class.
*
* @since 1.0
*/
function yit_portfolio_pagination( $pages = false ) {
yit_get_model('portfolio')->get_pagination( $pages );
}
/**
* Get the vars of single page of portfolio item
*
* @return array
*
* @since 1.0
*/
function yit_portfolio_query_vars() {
return (object) yit_get_model('cpt_unlimited')->query_vars;
}
/**
* Get portfolio item permalink
*
* @return array
*
* @since 1.0
*/
function yit_work_permalink( $item_id = false ) {
$args = ! $item_id ? array() : array( 'item_id' => $item_id );
return yit_get_model('cpt_unlimited')->get_permalink( $args );
}
/**
* Get portfolio term permalink
*
* @return array
*
* @since 1.0
*/
function yit_term_link( $term ) {
$args = ! is_array( $term ) ? array( 'cat' => $term ) : $term;
return yit_get_model('cpt_unlimited')->get_term_link( $args );
}
/**
* Get list of terms
*
* @return array
*
* @since 1.0
*/
function yit_the_terms( $sep = ',' ) {
$terms = yit_work_get('terms');
if ( empty( $terms ) ) {
$vars = yit_portfolio_query_vars();
if ( ! empty( $vars->item['terms'] ) ) {
$terms = $vars->item['terms'];
} else {
return;
}
}
$categories = yit_work_get('categories');
foreach ( $terms as $i => $term ) {
$terms[$i] = '<a href="' . yit_term_link( $term ) . '">' . $categories[$term] . '</a>';
}
echo implode( "$sep ", $terms );
}
/**
* Get number of items in specified category
*
* @return int
*
* @since 1.0
*/
function yit_work_items_in_category($category, $post_id = false) {
return yit_get_model('portfolio')->get_items_in_category($category, $post_id);
}
/**
* Get the list of portfolios
*
* @return array
*
* @since 1.0
*/
function yit_portfolios() {
return yit_get_model('cpt_unlimited')->get_posts_types( 'portfolios' );
}
/**
* Print the pagination of the current loop of portfolio
*
* @param string $class Extra class.
*
* @since 1.0
*/
function yit_portfolio_get_setting( $var, $post_id = false ) {
if ( ! $post_id ) {
$return = yit_get_model('portfolio')->get( $var );
} else {
$return = yit_get_model('cpt_unlimited')->get_setting( $var, $post_id );
if ( empty( $return ) ) {
$portfolio_type = yit_get_model('cpt_unlimited')->get_setting( 'portfolio_type', $post_id );
$return = yit_get_model('cpt_unlimited')->get_setting( $var . '_' . $portfolio_type, $post_id );
}
}
return $return;
}