本文整理汇总了PHP中yit_avoid_duplicate函数的典型用法代码示例。如果您正苦于以下问题:PHP yit_avoid_duplicate函数的具体用法?PHP yit_avoid_duplicate怎么用?PHP yit_avoid_duplicate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了yit_avoid_duplicate函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: yit_update_1_3_0
/**
* 1.3.0
*/
function yit_update_1_3_0()
{
/* ====== Update CPTU ====== */
global $wpdb;
$temp = array();
$prefixes = array('sliders' => 'sl_', 'portfolios' => 'po_', 'feature-tabs' => 'ft_', 'teams' => 'team_');
foreach ($prefixes as $post_type => $prefix) {
$args = array('post_type' => $post_type, 'posts_per_page' => -1, 'post_status' => 'publish');
$post_types = get_posts($args);
foreach ($post_types as $the) {
$from = substr($prefix . $the->post_name, 0, 20);
$to = yit_avoid_duplicate(str_replace('-', '_', substr($prefix . $the->post_name, 0, 16)), $temp);
$temp[] = $to;
$to_parent = substr($to, 3);
/* Update Child Post Type*/
$wpdb->update($wpdb->posts, array('post_type' => $to), array('post_type' => $from));
/* Update Parent Post Name */
$wpdb->update($wpdb->posts, array('post_name' => $to_parent), array('post_name' => $the->post_name));
/* Update Slider Name in Post Meta */
if ('sliders' == $post_type) {
$where = array('meta_key' => '_slider_name', 'meta_value' => $the->post_name);
$wpdb->update($wpdb->postmeta, array('meta_value' => $to_parent), $where);
}
}
}
set_transient('cptu_1_3_0_update', true);
}
示例2: yit_avoid_duplicate
/**
* Check if something exists. If yes, add a -N to the value where N is a number.
*
* @param mixed $value
* @param array $array
* @param string $check
* @return mixed
* @since 2.0.0
* @author Antonino Scarf� <antonino.scarfi@yithemes.com>
*/
function yit_avoid_duplicate($value, $array, $check = 'value')
{
$match = array();
if (!is_array($array)) {
return $value;
}
if ($check == 'value' && !in_array($value, $array) || $check == 'key' && !isset($array[$value])) {
return $value;
} else {
if (!preg_match('/([a-z]+)-([0-9]+)/', $value, $match)) {
$i = 2;
} else {
$i = intval($match[2]) + 1;
$value = $match[1];
}
return yit_avoid_duplicate($value . '-' . $i, $array, $check);
}
}
示例3: register_cptu_post_types
/**
* Register portfolio post types
*
* Register the post types for each portfolio created by admin
*
* @return void
* @since 1.0
* @author Antonino Scarfi' <antonino.scarfi@yithemes.com>
*/
public function register_cptu_post_types() {
$post_types = $this->get_post_types();
$pts = array();
foreach ( $post_types as $pt ) {
extract( $this->_cpt_args( $pt ) );
$name = $pt->post_name;
$title = $pt->post_title;
$labels = array(
'name' => $title,
'singular_name' => $label_singular,
'add_new' => sprintf( __( 'Add %s', 'yith-plugin-fw' ), $label_singular ),
'add_new_item' => sprintf( __( 'Add New %s', 'yith-plugin-fw' ), $label_singular ),
'edit_item' => sprintf( __( 'Edit %s', 'yith-plugin-fw' ), $label_singular ),
'new_item' => sprintf( __( 'New %s', 'yith-plugin-fw' ), $label_singular ),
'all_items' => sprintf( __( 'All %s', 'yith-plugin-fw' ), $label_plural ),
'view_item' => sprintf( __( 'View %s', 'yith-plugin-fw' ), $label_singular ),
'search_items' => sprintf( __( 'Search %s', 'yith-plugin-fw' ), $label_plural ),
'not_found' => sprintf( __( 'No %s found', 'yith-plugin-fw' ), $label_plural ),
'not_found_in_trash' => sprintf( __( 'No %s found in Trash', 'yith-plugin-fw' ), $label_plural ),
'parent_item_colon' => '',
'menu_name' => $title
);
$args = array(
'labels' => apply_filters( 'yit_' . $this->_prefix_cpt . $name . '_labels', $labels ),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => false,
'query_var' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'thumbnail' )
);
if ( ! $this->_args['has_single'] ) {
$args['public'] = false;
$args['publicly_queryable'] = false;
$args['query_var'] = false;
}
if ( $this->_args['manage_layouts'] && isset($this->layouts[ $layout ]) && ! $this->layouts[ $layout ]['support']['description'] ) {
unset( $args['supports'][1] ); // remove 'editor'
}
if ( ! empty( $rewrite ) ) {
$args['rewrite'] = array( 'slug' => $rewrite );
}
// register post type
$post_type = yit_avoid_duplicate( str_replace( '-', '_', substr( $this->_prefix_cpt . $name, 0, 16) ), $post_types );
register_post_type( $post_type, apply_filters( 'yit_' . $this->_prefix_cpt . $name . '_args', $args, $pt ) ); // save the post type in post meta
update_post_meta( $pt->ID, '_post_type', $post_type );
$pts[] = $post_type;
// register taxonomy
if ( $this->_args['has_taxonomy'] && ! empty( $taxonomy ) ) {
$labels = array(
'name' => sprintf( _x( '%s Categories', 'taxonomy general name', 'yith-plugin-fw' ), $label_singular ),
'singular_name' => _x( 'Category', 'taxonomy singular name', 'yith-plugin-fw' ),
'search_items' => __( 'Search Categories', 'yith-plugin-fw' ),
'all_items' => __( 'All Categories', 'yith-plugin-fw' ),
'parent_item' => __( 'Parent Category', 'yith-plugin-fw' ),
'parent_item_colon' => __( 'Parent Category:', 'yith-plugin-fw' ),
'edit_item' => __( 'Edit Category', 'yith-plugin-fw' ),
'update_item' => __( 'Update Category', 'yith-plugin-fw' ),
'add_new_item' => __( 'Add New Category', 'yith-plugin-fw' ),
'new_item_name' => __( 'New Category Name', 'yith-plugin-fw' ),
'menu_name' => __( 'Category', 'yith-plugin-fw' ),
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
);
if ( ! empty( $taxonomy_rewrite ) ) {
$args['rewrite'] = array( 'slug' => $taxonomy_rewrite );
}
register_taxonomy( substr( $taxonomy, 0, 32 ), $post_type, $args );
//.........这里部分代码省略.........
示例4: create_backup
/**
* Create a backup file
*
* This method create an encrypt backup file to save theme options settings
* The file will be save in <theme_folder>/theme/assets/backups
*
* @param string $name the file name
*
* @return void
* @since 2.0.0
* @author Andrea Grillo <andrea.grillo@yithemes.com>
*
*/
public function create_backup($name = '')
{
$options = YIT_Registry::get_instance()->options->get_options_from_prefix(YIT_Registry::get_instance()->options->options_name);
if ($_POST['backup_name']) {
$name = preg_replace("/[^a-zA-Z0-9_-]/", "", trim(str_replace(' ', '-', $_POST['backup_name'])));
}
$name = !empty($name) ? $name : 'backup';
$name = yit_avoid_duplicate($name, $this->_backups_list);
array_walk_recursive($options, array($this, 'convert_url'), 'in_export');
$error = file_put_contents($this->_backups_upload_dir . $name, base64_encode(serialize($options[YIT_Registry::get_instance()->options->options_name])));
if (!$error) {
YIT_Registry::get_instance()->message->addMessage(__('Error. Unable to create backup!', 'yit'), 'error');
} else {
YIT_Registry::get_instance()->message->addMessage(__('Success. Backup created!', 'yit'));
}
YIT_Registry::get_instance()->message->printGlobalMessages();
echo '<div class="hide" id="backup-temp-name" data-name="' . $name . '"></div>';
die;
}
示例5: add_category
/**
* Add category via AJAX
*
* @since 1.0.0
*/
public function add_category()
{
$post_id = isset($_POST['post_id']) ? $_POST['post_id'] : false;
$new_category = isset($_POST['new_category']) ? $_POST['new_category'] : null;
if (empty($post_id) && empty($new_category)) {
return;
}
$cats = $this->get_setting('categories', $post_id);
$new_cat_slug = yit_avoid_duplicate(sanitize_key($new_category), $cats, 'key');
// add category
$cats[$new_cat_slug] = $new_category;
// sort alphabetical
ksort($cats);
// update in the database
$this->update_setting('categories', $cats, $post_id);
// echo JSON for the javascript of only new element
echo json_encode(array('slug' => $new_cat_slug, 'name' => $new_category));
die;
}
示例6: save_options_callback
/**
* Save all options in the database, after panel submit
*
* @since 1.0.0
*/
public function save_options_callback()
{
if (!(isset($_POST['_yit_theme_options_nonce']) && wp_verify_nonce($_POST['_yit_theme_options_nonce'], 'yit-theme-options'))) {
return;
}
if (isset($_POST['yit-subpage']) && $_POST['yit-subpage'] == 'backup') {
if ($_POST['yit-action'] == 'import-file' && isset($_FILES['import-file'])) {
require_once YIT_CORE_LIB . '/yit/Backup/Backup.php';
if (YIT_Backup::import_backup()) {
yit_add_message($this->_messages['imported'], 'updated', 'panel');
} else {
yit_add_message($this->_messages['imported-error'], 'error', 'panel');
}
} elseif ($_POST['yit-action'] == 'export-file') {
require_once YIT_CORE_LIB . '/yit/Backup/Backup.php';
$backup = YIT_Backup::export_backup();
header("Content-type: application/gzip-compressed");
header("Content-Disposition: attachment; filename={$backup['filename']}");
header("Content-Length: " . strlen($backup['content']));
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
header("Pragma: no-cache");
header("Expires: 0");
echo $backup['content'];
} elseif ($_POST['yit-action'] == 'configuration-save') {
if (isset($_POST['configuration-name']) && $_POST['configuration-name'] != '') {
$configs = get_option($this->configs_name);
if ($configs != false) {
$configs = maybe_unserialize($configs);
} else {
$configs = array();
}
$new_config = array();
$new_config_name = esc_attr($_POST['configuration-name']);
$new_config_slug = yit_avoid_duplicate(sanitize_title($new_config_name), $configs, 'key');
$new_config_backup = base64_encode(serialize($this->db_options));
$new_config[$new_config_slug] = array('name' => $new_config_name, 'values' => $new_config_backup);
if (update_option($this->configs_name, array_merge($configs, $new_config))) {
yit_get_model('message')->addMessage(__('Configuration has been saved.', 'yit'), 'updated', 'panel');
if (defined('DOING_AJAX')) {
yit_get_model('message')->printMessages();
die;
}
} else {
yit_get_model('message')->addMessage(__('An error occurring while trying to save configuration. Please try again.', 'yit'), 'error', 'panel');
if (defined('DOING_AJAX')) {
yit_get_model('message')->printMessages();
die;
}
}
} else {
yit_get_model('message')->addMessage(__('Configuration name is missing.', 'yit'), 'error', 'panel');
if (defined('DOING_AJAX')) {
yit_get_model('message')->printMessages();
die;
}
}
} elseif ($_POST['yit-action'] == 'configuration-restore') {
$configs = get_option($this->configs_name);
$config_name = $_POST['configuration-restore'];
$config = unserialize(base64_decode($configs[$config_name]['values']));
if (is_array($config)) {
if (update_option($this->option_name, $config)) {
yit_get_model('message')->addMessage(__('Configuration has been restored.', 'yit'), 'updated', 'panel');
if (defined('DOING_AJAX')) {
yit_get_model('message')->printMessages();
die;
}
} else {
yit_get_model('message')->addMessage(__('An error occurring while trying to restore configuration. Please try again.', 'yit'), 'error', 'panel');
if (defined('DOING_AJAX')) {
yit_get_model('message')->printMessages();
die;
}
}
} else {
yit_get_model('message')->addMessage(__('An error occurring while trying to restore configuration. The backup seems to be damaged.', 'yit'), 'error', 'panel');
if (defined('DOING_AJAX')) {
yit_get_model('message')->printMessages();
die;
}
}
} elseif ($_POST['yit-action'] == 'configuration-remove') {
$configs = get_option($this->configs_name);
if ($configs != false) {
$configs = maybe_unserialize($configs);
} else {
$configs = array();
}
$to_delete = esc_attr($_POST['configuration-remove']);
if (isset($configs[$to_delete])) {
unset($configs[$to_delete]);
}
if (update_option($this->configs_name, $configs)) {
yit_get_model('message')->addMessage(__('Configuration has been deleted.', 'yit'), 'updated', 'panel');
//.........这里部分代码省略.........
示例7: save_options
/**
* Save the options in the database
*
* Get the options send by the theme options form and then save the options value
* in the database.
*
*
* @param mixed $save_data
*
* @return mixed
* @since 2.0.0
* @author Antonino Scarfi' <antonino.scarfi@yithemes.com>
*/
public function save_options($save_data = null)
{
if (($this->request->post('action') != 'yit-panel-save' || !$this->request->verify_nonce('yit_panel')) && $this->request->post('action') != 'yit_restore_backup') {
return;
}
if ($this->request->post('action') == 'yit-panel-save') {
$post_data = $this->request->post('yit_panel_option');
} else {
$post_data = $save_data;
}
/* Change Skin */
if (isset($post_data['general-skin']) && (defined('YIT_DEV') && !YIT_DEV || !defined('YIT_DEV'))) {
unset($post_data['general-skin']);
}
/* Change Theme Options Value */
if (empty($this->_panel)) {
$this->_panel = $this->getModel('panel')->get_theme_options_from_files();
}
$page_options = !$this->request->post('yit-subpage') ? $this->_panel['theme-options'] : $this->_panel[$this->request->post('yit-subpage')];
foreach ($page_options as $tab => $subtabs) {
foreach ($subtabs as $options) {
foreach ($options as $option) {
// must be process the saving also when there are the ID and the TYPE set for this option
if (!(isset($option['id']) && isset($option['type']))) {
continue;
}
// the option types that are one checkbox
$checkbox_type = array('checkbox', 'onoff');
$multicheck_type = array('cat', 'pag', 'checklist');
// if there isn't this option in the form data sent and it's not a checkbox, can't process this option
if (!in_array($option['type'], $checkbox_type) && !in_array($option['type'], $multicheck_type) && !isset($post_data[$option['id']])) {
continue;
}
// if the option is a checkbox and the data it's not sent in the form data, it means that the checkbox is not checked
if (in_array($option['type'], $checkbox_type) && !isset($post_data[$option['id']])) {
$post_data[$option['id']] = 'no';
}
// for the types "cat" and "pag", if there are
if (in_array($option['type'], $multicheck_type) && !isset($post_data[$option['id']])) {
$post_data[$option['id']] = array();
}
// get the value from the POST data, after having done all controls
$value = $post_data[$option['id']];
// validation
if (isset($option['validate'])) {
if (is_array($option['validate'])) {
$validate_filters = $option['validate'];
} else {
$validate_filters = array($option['validate']);
}
foreach ($validate_filters as $filter) {
switch ($filter) {
case 'yit_avoid_duplicate':
$value = yit_avoid_duplicate($value, $this->get_option($option['id']));
break;
default:
$value = call_user_func($filter, $value);
break;
}
}
}
// check if is defined the "data" index, with 'array-merge', that add the value in an array
if (isset($option['data']) && 'array-merge' == $option['data']) {
if (empty($value)) {
continue;
}
$existing_array = $this->get_option($option['id'], array());
if (!is_array($existing_array) || empty($existing_array)) {
$value = array($value);
} else {
$value = array_merge(array($value), $existing_array);
}
}
// Update the option in the database
$this->update_option($option['id'], $value);
}
}
}
// Add a CSS Rule to an array ready to write on dynamics.css file
$this->getModel('css')->save_css();
// add the feedback message
if ($this->request->post('action') == 'yit-panel-save') {
$this->getModel('message')->addMessage(__('Options Saved!', 'yit'), 'updated', 'panel');
// if AJAX, print the message and die
if ($this->request->is_ajax) {
$this->update_db_options();
$this->getModel('message')->printMessages();
//.........这里部分代码省略.........