<?php
/** Course importer. Idempotent on _bw_src_course (slug). Body from Laravel. */
if ( ! defined('ABSPATH') ) { exit; }
$rows = json_decode( file_get_contents( WP_CONTENT_DIR . '/_import/course.json' ), true );
$created=0;$updated=0;$tnew=0;

// pre-create terms
$buckets = array('course_category'=>'category','course_subject'=>'subjects','course_grade'=>'grades');
foreach($buckets as $tax=>$field){
	$names=array();
	foreach($rows as $r){ foreach($r[$field] as $n){ $names[$n]=1; } }
	foreach(array_keys($names) as $n){ if(!term_exists($n,$tax)){ wp_insert_term($n,$tax); $tnew++; } }
}

foreach($rows as $r){
	$existing = get_posts(array('post_type'=>'course','post_status'=>'any','numberposts'=>1,
		'meta_key'=>'_bw_src_course','meta_value'=>$r['slug'],'fields'=>'ids'));
	$postarr=array('post_type'=>'course','post_title'=>$r['title'],'post_content'=>$r['body'],
		'post_status'=>$r['state'],'post_name'=>$r['slug']);
	if(!empty($r['date'])){ $d=strlen($r['date'])<=10?$r['date'].' 00:00:00':$r['date'];
		$postarr['post_date']=$d; $postarr['post_date_gmt']=get_gmt_from_date($d); }
	if($existing){ $postarr['ID']=$existing[0]; $pid=wp_update_post($postarr); $updated++; }
	else { $pid=wp_insert_post($postarr); add_post_meta($pid,'_bw_src_course',$r['slug'],true); $created++; }
	if(is_wp_error($pid)||!$pid){ continue; }
	if(get_post_status($pid)==='future'){ global $wpdb; $wpdb->update($wpdb->posts,array('post_status'=>'publish'),array('ID'=>$pid)); wp_clear_scheduled_hook('publish_future_post',array((int)$pid)); clean_post_cache($pid); }

	update_field('field_bwm_course_ap',       $r['ap']?1:0, $pid);
	update_field('field_bwm_course_elective', $r['elective']?1:0, $pid);
	update_field('field_bwm_course_credit',   $r['credit'], $pid);

	if(!empty($r['category'])) wp_set_object_terms($pid,$r['category'],'course_category',false);
	if(!empty($r['subjects'])) wp_set_object_terms($pid,$r['subjects'],'course_subject',false);
	if(!empty($r['grades']))   wp_set_object_terms($pid,$r['grades'],'course_grade',false);

	if($r['yoast_title']!=='') update_post_meta($pid,'_yoast_wpseo_title',$r['yoast_title']);
	if($r['yoast_desc']!=='')  update_post_meta($pid,'_yoast_wpseo_metadesc',$r['yoast_desc']);
}
echo "COURSE: created=$created updated=$updated term_new=$tnew\n";
