354 lines
13 KiB
PHP
354 lines
13 KiB
PHP
<?php
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Register The Auto Loader
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Composer provides a convenient, automatically generated class loader for
|
|
| our theme. We will simply require it into the script here so that we
|
|
| don't have to worry about manually loading any of our classes later on.
|
|
|
|
|
*/
|
|
|
|
if (! file_exists($composer = __DIR__.'/vendor/autoload.php')) {
|
|
wp_die(__('Error locating autoloader. Please run <code>composer install</code>.', 'sage'));
|
|
}
|
|
|
|
require $composer;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Register The Bootloader
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| The first thing we will do is schedule a new Acorn application container
|
|
| to boot when WordPress is finished loading the theme. The application
|
|
| serves as the "glue" for all the components of Laravel and is
|
|
| the IoC container for the system binding all of the various parts.
|
|
|
|
|
*/
|
|
|
|
if (! function_exists('\Roots\bootloader')) {
|
|
wp_die(
|
|
__('You need to install Acorn to use this theme.', 'sage'),
|
|
'',
|
|
[
|
|
'link_url' => 'https://roots.io/acorn/docs/installation/',
|
|
'link_text' => __('Acorn Docs: Installation', 'sage'),
|
|
]
|
|
);
|
|
}
|
|
|
|
\Roots\bootloader()->boot();
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Register Sage Theme Files
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Out of the box, Sage ships with categorically named theme files
|
|
| containing common functionality and setup to be bootstrapped with your
|
|
| theme. Simply add (or remove) files from the array below to change what
|
|
| is registered alongside Sage.
|
|
|
|
|
*/
|
|
|
|
collect(['setup', 'filters'])
|
|
->each(function ($file) {
|
|
if (! locate_template($file = "app/{$file}.php", true, true)) {
|
|
wp_die(
|
|
/* translators: %s is replaced with the relative file path */
|
|
sprintf(__('Error locating <code>%s</code> for inclusion.', 'sage'), $file)
|
|
);
|
|
}
|
|
});
|
|
|
|
//ajout des champs personnalisés Minutage et Images; pour les afficher rdv dans le fichier content-single
|
|
//le faire qu'une suele fois et après mettre en commentaire
|
|
// function ajout_champs() {
|
|
// add_post_meta(get_the_ID(), 'Index', true);
|
|
// add_post_meta(get_the_ID(), 'Minutage', true);
|
|
// add_post_meta(get_the_ID(), 'Images', true);
|
|
// add_post_meta(get_the_ID(), 'BandeSon', true);
|
|
// add_post_meta(get_the_ID(), 'Ecrits', true);
|
|
// add_post_meta(get_the_ID(), 'VoixOffIn', true);
|
|
// add_post_meta(get_the_ID(), 'isMainPart', true);
|
|
// add_post_meta(get_the_ID(), 'isSubPart', true);
|
|
|
|
// }
|
|
// add_action('init', 'ajout_champs');
|
|
|
|
|
|
|
|
|
|
function cacher_bloc_head_admin() {
|
|
// Cache le bloc head du plugin de PublicPress
|
|
echo '<style>.pp-version-notice-bold-purple { display: none; }</style>';
|
|
echo '<style>.notice-warning { display: none; }</style>';
|
|
|
|
}
|
|
add_action('admin_head', 'cacher_bloc_head_admin');
|
|
|
|
function cacher_bloc_foot_admin() {
|
|
// Cache le bloc foot du plugin de PublicPress
|
|
echo '<style>.pp-rating { display: none; }</style>';
|
|
echo '<style>.pp-pressshack-logo { display: none; }</style>';
|
|
echo '<style> footer nav{ display: none; }</style>';
|
|
echo '<style> ul.subsubsub li:nth-child(1) a { display: none;}</style>';
|
|
|
|
}
|
|
add_action('admin_footer', 'cacher_bloc_foot_admin');
|
|
|
|
|
|
function custom_filter_dropdown() {
|
|
global $typenow;
|
|
if ($typenow == 'post') { // Adjust post type if needed
|
|
$selected = isset($_GET['custom_field_filter']) ? $_GET['custom_field_filter'] : '';
|
|
$options = array(
|
|
'isMainPart' => __('isMainPart', 'textdomain'),
|
|
'isSubPart' => __('isSubPart', 'textdomain'),
|
|
);
|
|
|
|
echo '<select name="custom_field_filter">';
|
|
echo '<option value="">' . __('All Custom Fields', 'textdomain') . '</option>';
|
|
foreach ($options as $key => $label) {
|
|
echo '<option value="' . $key . '"' . selected($selected, $key, false) . '>' . $label . '</option>';
|
|
}
|
|
echo '</select>';
|
|
}
|
|
}
|
|
|
|
add_action('restrict_manage_posts', 'custom_filter_dropdown');
|
|
|
|
|
|
|
|
function filter_by_custom_field($query) {
|
|
global $pagenow;
|
|
if (is_admin() && $pagenow == 'edit.php' && isset($_GET['custom_field_filter'])) {
|
|
$custom_field_key = sanitize_text_field($_GET['custom_field_filter']);
|
|
if (!empty($custom_field_key)) {
|
|
$meta_query = array(
|
|
array(
|
|
'key' => $custom_field_key,
|
|
'compare' => 'EXISTS',
|
|
),
|
|
);
|
|
$query->query_vars['meta_query'] = $meta_query;
|
|
}
|
|
}
|
|
}
|
|
|
|
add_filter('parse_query', 'filter_by_custom_field');
|
|
|
|
|
|
add_action('wp', 'generate_csv');
|
|
|
|
function generate_csv() {
|
|
if ('csv' === (isset($_GET['format']) ? $_GET['format'] : null)) {
|
|
// Query to get all posts
|
|
$args = array(
|
|
'post_type' => 'post',
|
|
'posts_per_page' => -1,
|
|
'meta_key' => 'index',
|
|
'meta_type' => 'NUMERIC',
|
|
'orderby' => 'meta_value',
|
|
'order' => 'ASC'
|
|
);
|
|
|
|
$posts = get_posts($args);
|
|
|
|
if (!empty($posts)) {
|
|
// Initialize CSV data array
|
|
$csvData = array();
|
|
|
|
// Add CSV header row
|
|
$csvData[] = array('Temps', 'Images', 'Voix Off et In', 'Bande Son', 'Écrits', 'Section');
|
|
|
|
// Loop through posts and add them to the CSV data array
|
|
foreach ($posts as $post) {
|
|
$post_content = wp_strip_all_tags($post->post_content);
|
|
$content_array = explode("---", $post_content);
|
|
|
|
$temps = $post->post_title;
|
|
$images = isset($content_array[1]) ? $content_array[1] : '';
|
|
$images = substr($images, 0, -15);
|
|
$voixOffIn = isset($content_array[2]) ? $content_array[2] : '';
|
|
$voixOffIn = substr($voixOffIn, 0, -10);
|
|
$bandeson = isset($content_array[3]) ? $content_array[3] : '';
|
|
$bandeson = substr($bandeson, 0, -8);
|
|
$ecrits = isset($content_array[4]) ? $content_array[4] : '';
|
|
|
|
if (get_post_meta($post->ID, 'isMainPart', true)) {
|
|
$section = get_post_meta($post->ID, 'isMainPart', true);
|
|
} elseif (get_post_meta($post->ID, 'isSubPart', true)) {
|
|
$section = get_post_meta($post->ID, 'isSubPart', true);
|
|
} else {
|
|
$section = '';
|
|
}
|
|
$csvData[] = array(
|
|
$temps,
|
|
$images,
|
|
$voixOffIn,
|
|
$bandeson,
|
|
$ecrits,
|
|
$section,
|
|
);
|
|
}
|
|
|
|
$csvFileName = 'partition_livre_d_image.csv';
|
|
|
|
header('Content-Encoding: UTF-8');
|
|
header('Content-Type: text/csv; charset=utf-8');
|
|
header('Content-Disposition: attachment; filename=' . $csvFileName);
|
|
echo "\xEF\xBB\xBF"; // UTF-8 BOM
|
|
|
|
// Output CSV data
|
|
$output = fopen('php://output', 'w');
|
|
foreach ($csvData as $row) {
|
|
fputcsv($output, $row);
|
|
}
|
|
fclose($output);
|
|
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
|
|
function custom_admin_styles() {
|
|
wp_enqueue_style('custom-admin', get_template_directory_uri() . '/resources/styles/admin_custom.css');
|
|
wp_enqueue_script('custom-admin-script', get_template_directory_uri() . '/resources/scripts/custom-admin-script.js', array(), null, true);
|
|
}
|
|
add_action('admin_enqueue_scripts', 'custom_admin_styles');
|
|
|
|
function restrict_revisions_by_author($query) {
|
|
global $current_user;
|
|
|
|
// Check if the user is logged in
|
|
if (is_user_logged_in()) {
|
|
get_currentuserinfo();
|
|
$author_id = $current_user->ID;
|
|
|
|
// Modify the query to filter revisions by author
|
|
if (isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'revision') {
|
|
$query->set('author', $author_id);
|
|
}
|
|
}
|
|
}
|
|
add_action('pre_get_posts', 'restrict_revisions_by_author');
|
|
|
|
function customize_editor_for_editor_role() {
|
|
if (current_user_can('revisor')) {
|
|
wp_enqueue_script('custom-editor-script', get_template_directory_uri() . '/resources/scripts/custom-editor-script.js', array(), null, true);
|
|
wp_enqueue_style('custom-editor-style', get_template_directory_uri() . '/resources/styles/custom-editor-style.css');
|
|
|
|
// Create my revisions page
|
|
$current_user = wp_get_current_user();
|
|
$author_id = $current_user->ID;
|
|
$revisionary_page = admin_url('admin.php?page=revisionary-q&author=' . $author_id);
|
|
|
|
// Get the content of the specific page (replace '123' with the actual page ID)
|
|
$page_id = 13940;
|
|
$page_content = get_post_field('post_content', $page_id);
|
|
|
|
$website_url = site_url();
|
|
|
|
// Localize the page content to be accessible in your custom script
|
|
wp_localize_script('custom-editor-script', 'pageContentData', array(
|
|
'content' => $page_content,
|
|
'websiteUrl' => $website_url,
|
|
'myRevisionsUrl' => $revisionary_page,
|
|
));
|
|
}
|
|
}
|
|
add_action('admin_enqueue_scripts', 'customize_editor_for_editor_role');
|
|
|
|
function remove_roles() {
|
|
remove_role('author');
|
|
remove_role('editor');
|
|
remove_role('subscriber');
|
|
remove_role('contributor');
|
|
}
|
|
add_action('init', 'remove_roles');
|
|
|
|
// Redirect all post URLs to the homepage
|
|
function redirect_single_posts_to_homepage() {
|
|
if (is_single() && isset($_GET['p'])) {
|
|
wp_redirect(home_url(), 301);
|
|
exit();
|
|
}
|
|
}
|
|
add_action('template_redirect', 'redirect_single_posts_to_homepage');
|
|
|
|
function log_posts_with_user_revisions() {
|
|
$current_user = wp_get_current_user();
|
|
if (current_user_can('revisor')) {
|
|
if ($current_user instanceof WP_User) {
|
|
$current_user_id = $current_user->ID;
|
|
$args = array(
|
|
'post_type' => 'revision', // Fetch all post types including revisions
|
|
'post_status' => 'inherit', // Fetch all post statuses including revisions
|
|
'posts_per_page' => -1, // Retrieve all posts
|
|
'author' => $current_user_id,
|
|
'fields' => 'ids', // Retrieve only IDs to speed up the query
|
|
);
|
|
|
|
$all_posts = get_posts($args);
|
|
$parents_posts_ids = array();
|
|
|
|
$revisions_dates = array();
|
|
|
|
foreach ($all_posts as $post_id) {
|
|
$current_revision_date = array();
|
|
$current_revision_date[] = get_post(wp_get_post_parent_id($post_id))->post_title;
|
|
$current_revision_date[] = get_post($post_id)->post_date;
|
|
$revisions_dates[] = $current_revision_date;
|
|
$parents_posts_ids[] = wp_get_post_parent_id($post_id);
|
|
}
|
|
|
|
$parents_posts_ids = array_unique($parents_posts_ids);
|
|
|
|
$history_posts_titles = array();
|
|
$history_posts_contents = array();
|
|
|
|
foreach ($parents_posts_ids as $parent_post_id) {
|
|
$history_posts_titles[] = get_post($parent_post_id)->post_title;
|
|
$history_posts_contents[] = strip_tags(get_post($parent_post_id)->post_content);
|
|
}
|
|
|
|
// Enqueue the script
|
|
wp_enqueue_script('contribution-history-script', get_template_directory_uri() . '/resources/scripts/contribution_history.js', array('jquery'), '1.0', true);
|
|
|
|
// Localize script to pass data to JavaScript
|
|
wp_localize_script('contribution-history-script', 'historyData', array(
|
|
'titles' => $history_posts_titles,
|
|
'contents' => $history_posts_contents,
|
|
'dates' => $revisions_dates
|
|
));
|
|
}
|
|
}
|
|
}
|
|
|
|
add_action('admin_enqueue_scripts', 'log_posts_with_user_revisions');
|
|
|
|
function custom_logout_redirect() {
|
|
wp_redirect( home_url() );
|
|
exit();
|
|
}
|
|
add_action('wp_logout','custom_logout_redirect');
|
|
|
|
|
|
// function supprimer_tous_les_articles() {
|
|
// $args = array(
|
|
// 'post_type' => 'post',
|
|
// 'posts_per_page' => -1,
|
|
// );
|
|
|
|
// $posts = get_posts($args);
|
|
|
|
// foreach ($posts as $post) {
|
|
// wp_delete_post($post->ID, true);
|
|
// }
|
|
// }
|
|
// add_action('init', 'supprimer_tous_les_articles');
|