<?php
/**
 * Custom post types — services + projects — with their meta boxes.
 *
 * Both are admin-only (no front-end single pages): the homepage queries them.
 * Ordering is by `menu_order` (Page Attributes box / Quick Edit).
 *
 * @package Iliya
 */

if (! defined('ABSPATH')) {
    exit;
}

/**
 * Icon keys offered in the service icon dropdown.
 * Every key MUST exist in iliya_icon()'s map (functions.php).
 *
 * @return array<string,string> key => Persian label.
 */
function iliya_service_icon_choices() {
    return [
        'recycle'   => 'بازیافت / ضایعات',
        'crane'     => 'جرثقیل / عمران',
        'bolt'      => 'برق و تأسیسات',
        'structure' => 'سازه فلزی',
        'leaf'      => 'فضای سبز',
        'globe'     => 'بازرگانی / صادرات',
        'shield'    => 'ایمنی',
        'medal'     => 'کیفیت',
        'clock'     => 'زمان‌بندی',
        'users'     => 'تیم',
    ];
}

/**
 * Register the `iliya_service` + `iliya_project` post types.
 */
function iliya_register_content_cpts() {
    register_post_type('iliya_service', [
        'labels' => [
            'name'                  => 'خدمات',
            'singular_name'         => 'خدمت',
            'menu_name'             => 'خدمات',
            'all_items'             => 'همه خدمات',
            'add_new'               => 'افزودن خدمت',
            'add_new_item'          => 'افزودن خدمت تازه',
            'edit_item'             => 'ویرایش خدمت',
            'new_item'              => 'خدمت تازه',
            'view_item'             => 'مشاهده خدمت',
            'search_items'          => 'جستجوی خدمات',
            'not_found'             => 'خدمتی یافت نشد',
            'not_found_in_trash'    => 'خدمتی در زباله‌دان نیست',
            'featured_image'        => 'تصویر خدمت',
            'set_featured_image'    => 'انتخاب تصویر خدمت',
            'remove_featured_image' => 'حذف تصویر خدمت',
            'use_featured_image'    => 'استفاده به‌عنوان تصویر خدمت',
        ],
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'menu_position'      => 24,
        'menu_icon'          => 'dashicons-admin-tools',
        'supports'           => ['title', 'editor', 'thumbnail', 'page-attributes'],
        'has_archive'        => false,
        'rewrite'            => ['slug' => 'service', 'with_front' => false],
    ]);

    register_post_type('iliya_project', [
        'labels' => [
            'name'                  => 'پروژه‌ها',
            'singular_name'         => 'پروژه',
            'menu_name'             => 'پروژه‌ها',
            'all_items'             => 'همه پروژه‌ها',
            'add_new'               => 'افزودن پروژه',
            'add_new_item'          => 'افزودن پروژه تازه',
            'edit_item'             => 'ویرایش پروژه',
            'new_item'              => 'پروژه تازه',
            'view_item'             => 'مشاهده پروژه',
            'search_items'          => 'جستجوی پروژه‌ها',
            'not_found'             => 'پروژه‌ای یافت نشد',
            'not_found_in_trash'    => 'پروژه‌ای در زباله‌دان نیست',
            'featured_image'        => 'تصویر پروژه',
            'set_featured_image'    => 'انتخاب تصویر پروژه',
            'remove_featured_image' => 'حذف تصویر پروژه',
            'use_featured_image'    => 'استفاده به‌عنوان تصویر پروژه',
        ],
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'menu_position'      => 25,
        'menu_icon'          => 'dashicons-portfolio',
        'supports'           => ['title', 'editor', 'thumbnail', 'page-attributes'],
        'has_archive'        => false,
        'rewrite'            => ['slug' => 'project', 'with_front' => false],
    ]);
}
add_action('init', 'iliya_register_content_cpts');

/**
 * Flush rewrite rules once after the CPT slugs change (self-heals on deploy,
 * so the new /service/… and /project/… single-page URLs resolve).
 * Bump the version string whenever a CPT slug/rewrite changes.
 */
function iliya_maybe_flush_rewrites() {
    if (get_option('iliya_rewrite_v') !== '2') {
        flush_rewrite_rules(false);
        update_option('iliya_rewrite_v', '2');
    }
}
add_action('init', 'iliya_maybe_flush_rewrites', 20);

/**
 * Order the CPT list tables by menu_order so the admin list matches the site.
 */
function iliya_admin_order_cpts($query) {
    if (! is_admin() || ! $query->is_main_query()) {
        return;
    }
    if (in_array($query->get('post_type'), ['iliya_service', 'iliya_project'], true)) {
        $query->set('orderby', 'menu_order');
        $query->set('order', 'ASC');
    }
}
add_action('pre_get_posts', 'iliya_admin_order_cpts');

/* ── Meta boxes ─────────────────────────────────────────────────────────── */

/** Register the service-icon + project-fields meta boxes. */
function iliya_content_metaboxes() {
    add_meta_box('iliya_service_icon', 'آیکون خدمت', 'iliya_service_icon_render', 'iliya_service', 'side', 'default');
    add_meta_box('iliya_project_fields', 'مشخصات پروژه', 'iliya_project_fields_render', 'iliya_project', 'side', 'default');
}
add_action('add_meta_boxes', 'iliya_content_metaboxes');

/** Service icon dropdown. */
function iliya_service_icon_render($post) {
    wp_nonce_field('iliya_service_meta', 'iliya_service_meta_nonce');
    $current = get_post_meta($post->ID, '_iliya_icon', true);
    echo '<p style="margin-top:0">آیکونی که کنار این خدمت نمایش داده می‌شود:</p>';
    echo '<select name="iliya_icon" style="width:100%">';
    foreach (iliya_service_icon_choices() as $key => $label) {
        printf('<option value="%s"%s>%s</option>', esc_attr($key), selected($current, $key, false), esc_html($label));
    }
    echo '</select>';
}

/** Project tag + sub-title text fields. */
function iliya_project_fields_render($post) {
    wp_nonce_field('iliya_project_meta', 'iliya_project_meta_nonce');
    $tag  = get_post_meta($post->ID, '_iliya_tag', true);
    $meta = get_post_meta($post->ID, '_iliya_meta', true);
    echo '<p><label for="iliya_tag" style="display:block;font-weight:600;margin-bottom:4px">برچسب (مثلاً: زیرساخت)</label>';
    printf('<input type="text" id="iliya_tag" name="iliya_tag" value="%s" style="width:100%%"></p>', esc_attr($tag));
    echo '<p><label for="iliya_meta" style="display:block;font-weight:600;margin-bottom:4px">زیرعنوان (مثلاً: عمران سنگین)</label>';
    printf('<input type="text" id="iliya_meta" name="iliya_meta" value="%s" style="width:100%%"></p>', esc_attr($meta));
}

/** Persist the meta-box values. */
function iliya_save_content_meta($post_id) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if (! current_user_can('edit_post', $post_id)) {
        return;
    }

    if (
        isset($_POST['iliya_service_meta_nonce'])
        && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['iliya_service_meta_nonce'])), 'iliya_service_meta')
    ) {
        $icon = sanitize_key($_POST['iliya_icon'] ?? '');
        if (array_key_exists($icon, iliya_service_icon_choices())) {
            update_post_meta($post_id, '_iliya_icon', $icon);
        }
    }

    if (
        isset($_POST['iliya_project_meta_nonce'])
        && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['iliya_project_meta_nonce'])), 'iliya_project_meta')
    ) {
        update_post_meta($post_id, '_iliya_tag', sanitize_text_field(wp_unslash($_POST['iliya_tag'] ?? '')));
        update_post_meta($post_id, '_iliya_meta', sanitize_text_field(wp_unslash($_POST['iliya_meta'] ?? '')));
    }
}
add_action('save_post_iliya_service', 'iliya_save_content_meta');
add_action('save_post_iliya_project', 'iliya_save_content_meta');

/* ── Admin list thumbnail column (both CPTs) ────────────────────────────── */

function iliya_cpt_thumb_column($cols) {
    $new = [];
    foreach ($cols as $k => $v) {
        if ($k === 'title') {
            $new['iliya_thumb'] = 'تصویر';
        }
        $new[$k] = $v;
    }
    return $new;
}
add_filter('manage_iliya_service_posts_columns', 'iliya_cpt_thumb_column');
add_filter('manage_iliya_project_posts_columns', 'iliya_cpt_thumb_column');

function iliya_cpt_thumb_content($col, $post_id) {
    if ($col === 'iliya_thumb') {
        echo has_post_thumbnail($post_id)
            ? get_the_post_thumbnail($post_id, [56, 56], ['style' => 'width:56px;height:56px;object-fit:cover'])
            : '—';
    }
}
add_action('manage_iliya_service_posts_custom_column', 'iliya_cpt_thumb_content', 10, 2);
add_action('manage_iliya_project_posts_custom_column', 'iliya_cpt_thumb_content', 10, 2);
