Skip to content

Instantly share code, notes, and snippets.

@remcotolsma
Created June 1, 2017 09:21
Show Gist options
  • Save remcotolsma/60795591c4f623f7f6bcc341e3399884 to your computer and use it in GitHub Desktop.
Save remcotolsma/60795591c4f623f7f6bcc341e3399884 to your computer and use it in GitHub Desktop.
Twinfield lookup.nu
<?php
// ...
/**
* WordPress REST API upload request.
*
* @param WP_REST_Request $request
*/
public function rest_api_upload( WP_REST_Request $request ) {
$authorization = $request->get_header( 'Authorization' );
$prefix = 'Bearer ';
if ( 0 !== strpos( $authorization, $prefix ) ) {
return;
}
$api_key = substr( $authorization, strlen( $prefix ) );
if ( empty( $api_key ) ) {
return;
}
$query = new WP_Query( array(
'post_type' => 'lookup_twinfield',
'posts_per_page' => 1,
'meta_query' => array(
array(
'key' => '_lookup_twinfield_api_key',
'value' => $api_key,
),
),
) );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$this->twinfield_queue_files( get_the_ID(), 'files' );
}
}
}
// ...
/**
* TWinfield queue files.
*
* @param int $post_id
* @param string $name
*/
public function twinfield_queue_files( $post_id, $name ) {
if ( 'lookup_twinfield' !== get_post_type( $post_id ) ) {
return false;
}
if ( 'publish' !== get_post_status( $post_id ) ) {
return false;
}
if ( ! isset( $_FILES[ $name ] ) ) {
return false;
}
$files = wp_unslash( $_FILES[ $name ] );
$uploads = array();
if ( is_array( $files['name'] ) ) {
foreach ( $files['name'] as $i => $name ) {
$file = new stdClass();
$file->name = $files['name'][ $i ];
$file->type = $files['type'][ $i ];
$file->tmp_name = $files['tmp_name'][ $i ];
$file->error = $files['error'][ $i ];
$uploads[] = $file;
}
} else {
$file = new stdClass();
$file->name = $files['name'];
$file->type = $files['type'];
$file->tmp_name = $files['tmp_name'];
$file->error = $files['error'];
$uploads[] = $file;
}
foreach ( $uploads as $file ) {
if ( UPLOAD_ERR_OK === $file->error ) {
global $wpdb;
$result = $wpdb->insert(
$wpdb->lookup_xml_messages,
array(
'filename' => $file->name,
'content_type' => $file->type,
'twinfield_post_id' => $post_id,
'request_message' => file_get_contents( $file->tmp_name ),
),
array(
'filename' => '%s',
'content_type' => '%s',
'twinfield_post_id' => '%d',
'request_message' => '%s',
)
);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment