'sanitize_text_field',
'mbsrr_teszt_email' => 'sanitize_email',
'mbsrr_felado_email' => 'sanitize_email',
'mbsrr_admin_email' => 'sanitize_email',
'mbsrr_trigger_status' => 'sanitize_key',
'mbsrr_emlekezteto_ora' => 'absint',
'mbsrr_emlekezteto_max' => 'absint',
];
foreach ( $mezok as $mezo => $tisztito ) {
register_setting( 'mbsrr_beallitasok', $mezo, [ 'sanitize_callback' => $tisztito ] );
}
}
public function beallitasok_oldal() {
if ( ! current_user_can( 'manage_woocommerce' ) ) { return; }
$teszt = get_option( 'mbsrr_teszt_mod', '1' );
?>
My-Book Szerzői Rendeléskezelő – beállítások
TESZT ÜZEMMÓD AKTÍV – minden szerzői levél a teszt-címre megy, a szerzők NEM kapnak levelet.
ÉLES ÜZEMMÓD – a szerzők közvetlenül kapják az értesítéseket.
get( \Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController::class )->custom_orders_table_usage_is_enabled()
? wc_get_page_screen_id( 'shop-order' )
: 'shop_order';
add_meta_box(
'mbsrr_metabox',
'Szerzői rendeléskezelés (SRR)',
[ $this, 'metabox_tartalom' ],
$screen,
'normal',
'high'
);
}
public function metabox_tartalom( $post_or_order ) {
$order = ( $post_or_order instanceof WC_Order ) ? $post_or_order : wc_get_order( $post_or_order->ID );
if ( ! $order ) { return; }
$rekordok = $order->get_meta( MBSRR_META_SZERZOK );
if ( empty( $rekordok ) || ! is_array( $rekordok ) ) {
echo 'Ehhez a rendeléshez (még) nincs szerzői értesítési rekord. A rekordok a beállított trigger-státuszra váltáskor jönnek létre.
';
return;
}
$cimkek = MBSRR_Core::allapot_cimkek();
$szinek = MBSRR_Core::allapot_szinek();
foreach ( $rekordok as $term_id => $r ) {
$szin = isset( $szinek[ $r['allapot'] ] ) ? $szinek[ $r['allapot'] ] : '#6c757d';
echo '';
echo '
' . esc_html( $r['nev'] ) . ' <' . esc_html( $r['email'] ) . '> ';
echo ''
. esc_html( isset( $cimkek[ $r['allapot'] ] ) ? $cimkek[ $r['allapot'] ] : $r['allapot'] ) . '
';
if ( ! empty( $r['tortenet'] ) ) {
echo '
';
foreach ( $r['tortenet'] as $e ) {
echo '- ' . esc_html( $e['ido'] . ' – ' . $e['szoveg'] ) . '
';
}
echo '
';
}
// Kézi műveletek
$muveletek = [
'kapcsolatfelvetel' => 'Kapcsolatfelvétel megtörtént',
'lezarva' => 'Lezárva',
'sikertelen' => 'Sikertelen',
'ertesitve' => 'Vissza „Értesítve" állapotba',
];
foreach ( $muveletek as $muvelet => $cimke ) {
if ( $muvelet === $r['allapot'] ) { continue; }
$url = wp_nonce_url( admin_url( 'admin-post.php?action=mbsrr_statusz&order=' . $order->get_id() . '&szerzo=' . $term_id . '&muvelet=' . $muvelet ), 'mbsrr_statusz' );
echo '
' . esc_html( $cimke ) . '';
}
$ujra = wp_nonce_url( admin_url( 'admin-post.php?action=mbsrr_ujrakuldes&order=' . $order->get_id() . '&szerzo=' . $term_id ), 'mbsrr_ujrakuldes' );
echo '
Értesítő újraküldése';
echo '
';
}
}
// =====================================================================
// Rendeléslista oszlop
// =====================================================================
public function oszlop_felvetel( $oszlopok ) {
$uj = [];
foreach ( $oszlopok as $kulcs => $cimke ) {
$uj[ $kulcs ] = $cimke;
if ( 'order_status' === $kulcs ) {
$uj['mbsrr_allapot'] = 'Szerzői állapot';
}
}
if ( ! isset( $uj['mbsrr_allapot'] ) ) { $uj['mbsrr_allapot'] = 'Szerzői állapot'; }
return $uj;
}
public function oszlop_tartalom_hpos( $oszlop, $order ) {
if ( 'mbsrr_allapot' !== $oszlop ) { return; }
$this->oszlop_render( $order );
}
public function oszlop_tartalom_klasszikus( $oszlop, $post_id ) {
if ( 'mbsrr_allapot' !== $oszlop ) { return; }
$order = wc_get_order( $post_id );
if ( $order ) { $this->oszlop_render( $order ); }
}
private function oszlop_render( $order ) {
$rekordok = $order->get_meta( MBSRR_META_SZERZOK );
if ( empty( $rekordok ) || ! is_array( $rekordok ) ) { echo '–'; return; }
$szinek = MBSRR_Core::allapot_szinek();
$cimkek = MBSRR_Core::allapot_cimkek();
foreach ( $rekordok as $r ) {
$szin = isset( $szinek[ $r['allapot'] ] ) ? $szinek[ $r['allapot'] ] : '#6c757d';
$cim = isset( $cimkek[ $r['allapot'] ] ) ? $cimkek[ $r['allapot'] ] : $r['allapot'];
echo ''
. esc_html( $r['nev'] ) . '';
}
}
// =====================================================================
// Kézi műveletek (admin-post)
// =====================================================================
public function kezi_statusz() {
if ( ! current_user_can( 'manage_woocommerce' ) ) { wp_die( 'Nincs jogosultság.' ); }
check_admin_referer( 'mbsrr_statusz' );
$order_id = absint( $_GET['order'] ?? 0 );
$term_id = absint( $_GET['szerzo'] ?? 0 );
$muvelet = sanitize_key( $_GET['muvelet'] ?? '' );
$order = wc_get_order( $order_id );
$cimkek = MBSRR_Core::allapot_cimkek();
if ( $order && $term_id && isset( $cimkek[ $muvelet ] ) ) {
$rekordok = $order->get_meta( MBSRR_META_SZERZOK );
if ( ! empty( $rekordok[ $term_id ] ) ) {
$rekordok[ $term_id ]['allapot'] = $muvelet;
$rekordok[ $term_id ]['utolso_akcio'] = current_time( 'mysql' );
$rekordok[ $term_id ]['tortenet'][] = MBSRR_Core::esemeny( 'Kézi állapot-állítás (admin): ' . $cimkek[ $muvelet ] );
$order->update_meta_data( MBSRR_META_SZERZOK, $rekordok );
$order->update_meta_data( MBSRR_META_NYITOTT, MBSRR_Core::van_nyitott( $rekordok ) ? '1' : '0' );
$order->add_order_note( sprintf( 'SRR: kézi állapot-állítás – %s: %s.', $rekordok[ $term_id ]['nev'], $cimkek[ $muvelet ] ) );
$order->save();
}
}
wp_safe_redirect( $order ? $order->get_edit_order_url() : admin_url() );
exit;
}
public function ujrakuldes() {
if ( ! current_user_can( 'manage_woocommerce' ) ) { wp_die( 'Nincs jogosultság.' ); }
check_admin_referer( 'mbsrr_ujrakuldes' );
$order_id = absint( $_GET['order'] ?? 0 );
$term_id = absint( $_GET['szerzo'] ?? 0 );
$order = wc_get_order( $order_id );
if ( $order && $term_id ) {
$rekordok = $order->get_meta( MBSRR_META_SZERZOK );
if ( ! empty( $rekordok[ $term_id ] ) ) {
$rekordok[ $term_id ] = MBSRR_Core::rekord_frissites( $rekordok[ $term_id ], $term_id );
}
if ( ! empty( $rekordok[ $term_id ] ) && is_email( $rekordok[ $term_id ]['email'] ) ) {
$kimenet = MBSRR_Core::instance()->szerzoi_email_kuldes( $order, $term_id, $rekordok[ $term_id ], false );
$rekordok[ $term_id ]['tortenet'][] = MBSRR_Core::esemeny( 'Kézi újraküldés (admin): ' . ( $kimenet ? 'kiküldve' : 'SIKERTELEN' ) . MBSRR_Core::teszt_jeloles() );
$order->update_meta_data( MBSRR_META_SZERZOK, $rekordok );
$order->add_order_note( sprintf( 'SRR: értesítő kézi újraküldése – %s (%s).', $rekordok[ $term_id ]['nev'], $kimenet ? 'kiküldve' : 'SIKERTELEN' ) );
$order->save();
}
}
wp_safe_redirect( $order ? $order->get_edit_order_url() : admin_url() );
exit;
}
// =====================================================================
// Szerzői e-mail mező a taxonómia szerkesztőben (régi meta kulcs!)
// =====================================================================
public function szerzo_mezo_uj() {
?>
term_id, 'mcisoe_supplier_email', true );
?>
|
Erre a címre megy a rendelés-értesítő. (A korábbi rendszerrel közös adatmező.)
|