rest_url(WZHF_NS.'/tools'),
'nonce'=> wp_create_nonce('wp_rest')
));
}
public function save(){
if(!wzhf_admin_cap()) wp_die('Forbidden',403); if(!wzhf_verified_nonce()) wp_die('Bad nonce',403);
$opt=wzhf_get_option(); $fields=array('dc','org','cid','sec','scopes','trigger_mode','create_missing','set_status_after_so','status_after_so','contact_addr_sync');
foreach($fields as $f){ $v=isset($_POST[$f])?sanitize_text_field(wp_unslash($_POST[$f])):''; if(in_array($f,array('create_missing','set_status_after_so'))) $v=isset($_POST[$f])?'1':'0'; $opt[$f]=$v; }
if(empty($opt['contact_addr_sync'])) $opt['contact_addr_sync']='always';
update_option(WZHF_OPT,$opt,false); do_action('update_option_'.WZHF_OPT,array(),$opt,WZHF_OPT); wp_safe_redirect(admin_url('admin.php?page='.WZHF_SLUG.'&saved=1')); exit;
}
public function render(){ if(!wzhf_admin_cap()) return; $opt=wzhf_get_option(); $redir=esc_url_raw(rest_url(WZHF_NS.'/oauth/callback'));
if(isset($_GET['wzhf_msg'])){
$msg = sanitize_text_field($_GET['wzhf_msg']);
echo '
';
}
$auth=''; if(!empty($opt['cid']) && !empty($opt['dc']) && !empty($opt['scopes'])){ $acc='https://accounts.zoho'.trim($opt['dc']).'/oauth/v2/auth'; $params=http_build_query(array('response_type'=>'code','client_id'=>$opt['cid'],'scope'=>$opt['scopes'],'redirect_uri'=>$redir,'access_type'=>'offline','prompt'=>'consent')); $auth=$acc.'?'.$params; }
$z = new WZHF_Zoho(); $connected=$z->is_connected(); include WZHF_DIR.'views/settings-page.php';
}
public function patch_so_server(){
if(!wzhf_admin_cap()) wp_die('Forbidden',403);
if(!wzhf_verified_nonce()) wp_die('Bad nonce',403);
$order_id = isset($_POST['order_id_patch']) ? absint($_POST['order_id_patch']) : 0;
if(!$order_id){ wp_safe_redirect(admin_url('admin.php?page='.WZHF_SLUG.'&wzhf_msg='.rawurlencode('Укажите Order ID'))); exit; }
$res = WZHF_Tools::patch_so_from_order($order_id);
if(!empty($res['ok'])){ wp_safe_redirect(admin_url('admin.php?page='.WZHF_SLUG.'&tab=tools&wzhf_msg='.rawurlencode('SO '.$res['so'].' — адрес обновлён'))); }
else { wp_safe_redirect(admin_url('admin.php?page='.WZHF_SLUG+'&tab=tools&wzhf_msg='.rawurlencode('Патч не применён: '.($res['error']??'unknown')))); }
exit;
}
}