<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

function haup_init_editor_panel_js_ad_info(){
	$script_name = 'haup-panel-js-ad-info';

	//投稿タイプを「投稿」に指定し、haup_is_single_filterで追加できるようにする
	$posttypes = 'post,page';
	$posttypes = apply_filters('haup_is_single_filter',$posttypes);
	$posttypes = apply_filters('haup_is_single_ad_info_filter',$posttypes);
	//20250902 explodeだけでは空文字などがあった場合に不具合が出る可能性があるので修正
	$post_types_array = array_map('trim', explode(',', $posttypes));
	$post_types_array = array_filter($post_types_array);

	wp_enqueue_script(
		$script_name,
		plugin_dir_url( __FILE__ ) .'editor-panel-ad-info.js',
		[ 'wp-plugins', 'wp-edit-post', 'wp-element', 'wp-components', 'wp-data', 'wp-i18n' ],
		haup_plugin_version(),
		array( 
			'strategy'  => 'defer',
			'in_footer' => true,// Note: This is the default value.
		)
	);

	//スクリプトに渡すための文字列と翻訳可能文字列を紐づけて配列にする
	$localize_val = array(
		'title' => __('Hide ad prompts','hima-art-utility'),
		'label' => __('Hide','hima-art-utility'),
		'help' => __('Checking this box will prevent the display of a notification indicating that a promotion is included, even if you have included the [ha-ad-info] shortcode in your template or body text.','hima-art-utility'),
		'post_types' => $post_types_array, //適用させる投稿タイプを配列で渡す
	);

	//wp_localize_scriptを使ってスクリプトへ配列を渡す
	wp_localize_script( $script_name , 'HaupLocalizeTextAdInfo', $localize_val);
}
add_action('enqueue_block_editor_assets','haup_init_editor_panel_js_ad_info');

/***** ショートコード *****/
function haup_add_advert_info_shortcode(){
$message = esc_html(__('<Description based on the Act on Premiums and Representations> The content on this site may include product promotions.','hima-art-utility'));

$message = apply_filters('haup_ad_info_text_filter',$message);

$html_before = hau_sanitize_html_tags('<div class="ha-advert-info" data-nosnippet><p class="is-style-ha-para-notice">');
$html_after = hau_sanitize_html_tags('</p></div>');

$swich_ad_info = get_post_meta(get_the_ID(),'hide_ad_info',true);

//20240302 投稿タイプフィルターへの対応
if( haup_is_single_without_front() ){
	if(empty($swich_ad_info)){
		return $html_before.$message.$html_after;
	}else{
		return '';
	}
}

}
add_shortcode( 'ha-ad-info', 'haup_add_advert_info_shortcode' );

/***** 管理画面の列表示とクイック編集 *****/
/* https://wordpress.stackexchange.com/questions/251766/why-does-this-quick-edit-checkbox-save-the-value-only-when-unchecked */
//hide_ad_info

/*** 管理画面の一覧へ列を追加 ***/
/*** 列を追加 ***/
/* 投稿 */
function haup_hide_ad_info_post_columns_callback( $columns ) {
	//20240302 投稿タイプフィルターへの対応
	if(haup_is_single()){
		$columns['adinfo_column'] = __( 'Ad Info', 'hima-art-utility' );
	}

	return $columns;

}
add_filter( 'manage_posts_columns', 'haup_hide_ad_info_post_columns_callback' );

/* 固定ページ */
function haup_hide_ad_info_page_columns_callback( $columns ) {

		$columns['adinfo_column'] = __( 'Ad Info', 'hima-art-utility' );

	return $columns;

}
add_filter( 'manage_pages_columns', 'haup_hide_ad_info_page_columns_callback' );

/* 列へ値を出力 */
function haup_ad_info_post_columns_content( $column_name, $post_id ) {

	switch ( $column_name ) {
        
	case 'adinfo_column' :
		$cf_data = get_post_meta( $post_id, 'hide_ad_info', true );
			if($cf_data == '1'){
				$text = __('Hide','hima-art-utility');
				$style= 'background:#777;color:#fff;';
				
			}else{
				$text = __('Show','hima-art-utility');
				$style = 'background:#04ab04;color:#fff;';
			}
			
			echo '<p class="ad-info-enable" style="'.esc_html($style).' text-align:center;font-weight:700;padding: 2px;border-radius: 4px;">';
			echo '<em>'.esc_html($text).'</em></p>';
        break;
    
	}
}
add_action( 'manage_posts_custom_column', 'haup_ad_info_post_columns_content', 10, 2 );
add_action( 'manage_pages_custom_column', 'haup_ad_info_post_columns_content', 10, 2 );

/*** クイック編集画面にチェックボックスを表示 ***/
function haup_ad_info_quick_edit_add( $column_name, $post_type ) {
	$slug = get_post_type( get_the_ID() ); //他の一覧ページで動作しないように投稿タイプの指定をする

	if ( $post_type == $slug ) {
		
?>
<fieldset class="inline-edit-col-right inline-ad-info">
<div class="inline-edit-col column-ad-info">
<label class="inline-edit-group">
<?php 
		
		switch ( $column_name ) {
			case 'adinfo_column' :
				printf( '<input type="checkbox" name="hide_ad_info" class="adinfo_column"> %s', esc_html_e( 'Hide Ad Info', 'hima-art-utility' )
				);
			break;
		}  

?>
</label>
</div>
</fieldset>
<?php
	}
}
add_action( 'quick_edit_custom_box', 'haup_ad_info_quick_edit_add', 10, 2 );

/*** 新たに入力した値へ更新 ***/
function haup_ad_info_qedit_save_post( $post_id, $post ) {
// pointless if $_POST is empty (this happens on bulk edit)
	if ( empty( $_POST ) ) {
		return $post_id;
	}
    
// Nonceフィールドの設置
	if ( empty( $_POST[ '_inline_edit' ] ) ) {
		return $post_id;
	}

// Nonce認証
	if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash($_POST[ '_inline_edit' ])), 'inlineeditnonce' ) ) {
		return $post_id;
	}

// 自動保存では何もしない
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
		return $post_id;
	}

// リビジョンでは何もしない
	if ( isset( $post->post_type ) && 'revision' === $post->post_type ) {
		return $post_id;
	}

	if ( isset( $_POST[ '_inline_edit' ] ) && wp_verify_nonce( sanitize_text_field( wp_unslash($_POST[ '_inline_edit' ])), 'inlineeditnonce' ) ) {
		if ( isset( $_POST['hide_ad_info'] ) ) {   
			update_post_meta( $post_id, 'hide_ad_info', '1' );
		} else {
			delete_post_meta( $post_id, 'hide_ad_info' );
		}                   
	}
}
add_action( 'save_post', 'haup_ad_info_qedit_save_post', 10, 2 );

// カスタムフィールドの値によって、クイック編集画面のチェック／未チェックを判断
function haup_ad_info_quick_edit_javascript($post_id='') {
//他の一覧ページで動作しないように投稿タイプの指定をする
	global $post_type;
	$slug = get_post_type( $post_id ); 

	if ( $post_type == $slug ) {

//チェックがあるかどうかで表示を切り替える
?>
<script type="text/javascript">
	function checked_ad_info( fieldValue ) {
		inlineEditPost.revert();
		jQuery( '.adinfo_column' ).attr( 'checked', 0 == fieldValue ? false : true );
	}
</script>
<?php
	}
}
add_action( 'admin_footer', 'haup_ad_info_quick_edit_javascript' );

function haup_ad_info_expand_quick_edit_link( $actions, $post ) {
	global $current_screen;
	$data = get_post_meta( $post->ID, 'hide_ad_info', true );
	$data = empty( $data ) ? 0 : 1;
	$actions['inline hide-if-no-js']  = '<a href="#" class="editinline"';
	$actions['inline hide-if-no-js'] .=    ' title="' . esc_attr( __( 'Edit this item inline','hima-art-utility' ) ) . '"';
	$actions['inline hide-if-no-js'] .=    " onclick=\"checked_ad_info('{$data}')\" >";
	$actions['inline hide-if-no-js'] .=   __( 'Quick Edit','hima-art-utility' );
	$actions['inline hide-if-no-js'] .= '</a>';

	return $actions;
}
add_filter( 'post_row_actions', 'haup_ad_info_expand_quick_edit_link', 10, 2 );

/*** 管理画面上のスタイル ***/
function haup_admin_hide_ad_info_column_style_init(){
$custom_css_pre = "
/* HAUP Ad Info Column Width */
body.edit-php #adinfo_column {width: 10%;}
.inline-edit-col .column-adinfo_column {width: 100%;}
";

	//スタイルコードを改行なしで整形する
	$custom_css = str_replace(PHP_EOL, '', $custom_css_pre);

	wp_add_inline_style('haup-only-admin-style', $custom_css );
}
add_action('admin_enqueue_scripts','haup_admin_hide_ad_info_column_style_init');