get_charset_collate(); $tickets = $wpdb->prefix . 'dpsupport_tickets'; $messages = $wpdb->prefix . 'dpsupport_messages'; $attachments = $wpdb->prefix . 'dpsupport_attachments'; $activity = $wpdb->prefix . 'dpsupport_activity'; $sql_tickets = "CREATE TABLE {$tickets} ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, ticket_number varchar(30) NOT NULL, customer_id bigint(20) unsigned NULL, customer_name varchar(190) NOT NULL DEFAULT '', customer_email varchar(190) NOT NULL DEFAULT '', subject varchar(255) NOT NULL, category varchar(80) NOT NULL DEFAULT 'allgemein', status varchar(30) NOT NULL DEFAULT 'new', priority varchar(20) NOT NULL DEFAULT 'normal', created_by bigint(20) unsigned NULL, created_at datetime NOT NULL, updated_at datetime NOT NULL, closed_at datetime NULL, archived_at datetime NULL, PRIMARY KEY (id), UNIQUE KEY ticket_number (ticket_number), KEY category (category), KEY status (status), KEY priority (priority), KEY customer_email (customer_email), KEY archived_at (archived_at), KEY updated_at (updated_at) ) {$charset_collate};"; $sql_messages = "CREATE TABLE {$messages} ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, ticket_id bigint(20) unsigned NOT NULL, author_type varchar(20) NOT NULL DEFAULT 'staff', author_user_id bigint(20) unsigned NULL, author_name varchar(190) NOT NULL DEFAULT '', body longtext NOT NULL, is_internal tinyint(1) NOT NULL DEFAULT 0, created_at datetime NOT NULL, PRIMARY KEY (id), KEY ticket_id (ticket_id), KEY created_at (created_at) ) {$charset_collate};"; $sql_attachments = "CREATE TABLE {$attachments} ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, ticket_id bigint(20) unsigned NOT NULL, message_id bigint(20) unsigned NULL, attachment_id bigint(20) unsigned NOT NULL, created_at datetime NOT NULL, PRIMARY KEY (id), KEY ticket_id (ticket_id), KEY message_id (message_id), KEY attachment_id (attachment_id) ) {$charset_collate};"; $sql_activity = "CREATE TABLE {$activity} ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, ticket_id bigint(20) unsigned NOT NULL, user_id bigint(20) unsigned NULL, user_name varchar(190) NOT NULL DEFAULT '', action varchar(50) NOT NULL, message varchar(255) NOT NULL DEFAULT '', created_at datetime NOT NULL, PRIMARY KEY (id), KEY ticket_id (ticket_id), KEY action (action), KEY created_at (created_at) ) {$charset_collate};"; dbDelta( $sql_tickets ); dbDelta( $sql_messages ); dbDelta( $sql_attachments ); dbDelta( $sql_activity ); } private static function add_capabilities() { $agent_role = get_role( 'dpsupport_support_agent' ); if ( ! $agent_role ) { $agent_role = add_role( 'dpsupport_support_agent', __( 'DP Support-Mitarbeiter', '24laser-support-tickets' ), array( 'read' => true, 'dpsupport_view_support' => true, 'dpsupport_reply_support' => true, 'dpsupport_manage_support' => true, ) ); } if ( $agent_role ) { foreach ( array( 'read', 'dpsupport_view_support', 'dpsupport_reply_support', 'dpsupport_manage_support' ) as $cap ) { $agent_role->add_cap( $cap ); } } $shop_manager = get_role( 'shop_manager' ); if ( $shop_manager ) { foreach ( array( 'dpsupport_view_support', 'dpsupport_reply_support', 'dpsupport_manage_support' ) as $cap ) { $shop_manager->add_cap( $cap ); } } $administrator = get_role( 'administrator' ); if ( $administrator ) { foreach ( array( 'dpsupport_view_support', 'dpsupport_reply_support', 'dpsupport_manage_support', 'dpsupport_manage_settings', 'dpsupport_delete_tickets' ) as $cap ) { $administrator->add_cap( $cap ); } } } private static function add_defaults() { add_option( 'dpsupport_categories', array( 'allgemein' => 'Allgemein', 'bestellung' => 'Bestellung', 'reklamation' => 'Reklamation', 'personalisierung' => 'Personalisierung', 'versand' => 'Versand', 'zahlung' => 'Zahlung', 'sonstiges' => 'Sonstiges', ) ); add_option( 'dpsupport_default_category', 'allgemein' ); add_option( 'dpsupport_default_status', 'new' ); add_option( 'dpsupport_default_priority', 'normal' ); add_option( 'dpsupport_notification_email', get_option( 'admin_email', '' ) ); add_option( 'dpsupport_support_from_name', get_bloginfo( 'name' ) . ' Support' ); add_option( 'dpsupport_support_from_email', get_option( 'admin_email', '' ) ); add_option( 'dpsupport_support_reply_to_email', '' ); add_option( 'dpsupport_notify_staff_new_ticket', 'yes' ); add_option( 'dpsupport_notify_staff_customer_reply', 'yes' ); add_option( 'dpsupport_notify_customer_ticket_created', 'yes' ); add_option( 'dpsupport_notify_customer_staff_reply', 'yes' ); add_option( 'dpsupport_frontend_form_enabled', 'yes' ); add_option( 'dpsupport_frontend_form_guests', 'yes' ); add_option( 'dpsupport_frontend_form_title', __( 'Wie können wir helfen?', '24laser-support-tickets' ) ); add_option( 'dpsupport_frontend_form_intro', __( 'Beschreibe deine Frage oder dein Problem. Unser Support-Team erhält daraus direkt ein neues Ticket.', '24laser-support-tickets' ) ); add_option( 'dpsupport_frontend_form_success', __( 'Vielen Dank. Deine Support-Anfrage wurde erfolgreich übermittelt.', '24laser-support-tickets' ) ); } }