Created
June 1, 2017 09:21
-
-
Save remcotolsma/60795591c4f623f7f6bcc341e3399884 to your computer and use it in GitHub Desktop.
Twinfield lookup.nu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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