diff --git a/src/classes/api/endpoints/class-tainacan-rest-collections-controller.php b/src/classes/api/endpoints/class-tainacan-rest-collections-controller.php index db4ce10d7..eacc07c4d 100644 --- a/src/classes/api/endpoints/class-tainacan-rest-collections-controller.php +++ b/src/classes/api/endpoints/class-tainacan-rest-collections-controller.php @@ -256,7 +256,7 @@ class REST_Collections_Controller extends REST_Controller { } // Clear private metadata from metadata_order - if ( is_array( $item_arr['metadata_order'] ) && ! current_user_can( 'tnc_col_' . $item->get_id() . '_read_private_metadata' ) ) { + if ( isset($item_arr['metadata_order']) && is_array( $item_arr['metadata_order'] ) && ! current_user_can( 'tnc_col_' . $item->get_id() . '_read_private_metadata' ) ) { $metadata = $item->get_metadata(); $meta_ids = array_map( @@ -275,7 +275,7 @@ class REST_Collections_Controller extends REST_Controller { } // Clear private filters from filters_order - if ( is_array( $item_arr['filters_order'] ) && ! current_user_can( 'tnc_col_' . $item->get_id() . '_read_private_filters' ) ) { + if ( isset($item_arr['filters_order']) && is_array( $item_arr['filters_order'] ) && ! current_user_can( 'tnc_col_' . $item->get_id() . '_read_private_filters' ) ) { $filters = $item->get_filters(); $filters_ids = array_map( diff --git a/src/classes/class-tainacan-private-files.php b/src/classes/class-tainacan-private-files.php index e91eafb45..9e489b2b6 100644 --- a/src/classes/class-tainacan-private-files.php +++ b/src/classes/class-tainacan-private-files.php @@ -202,7 +202,7 @@ class Private_Files { $file_path = \str_replace( '/', $this->dir_separator, str_replace($base_upload_url, '', $requested_uri) ); - $file = $upload_dir['basedir'] . $file_path; + $file = urldecode($upload_dir['basedir'] . $file_path); $existing_file = false; @@ -262,9 +262,10 @@ class Private_Files { * private uploads folder prefix from the attachments URLs */ function image_get_intermediate_size($data, $post_id, $size) { - - $data['path'] = str_replace($this->dir_separator . $this->get_private_folder_prefix(), $this->dir_separator, $data['path']); - $data['url'] = str_replace('/' . $this->get_private_folder_prefix(), '/', $data['url']); + if(isset($data['path'])) + $data['path'] = str_replace($this->dir_separator . $this->get_private_folder_prefix(), $this->dir_separator, $data['path']); + if(isset($data['url'])) + $data['url'] = str_replace('/' . $this->get_private_folder_prefix(), '/', $data['url']); return $data; diff --git a/src/classes/repositories/class-tainacan-logs.php b/src/classes/repositories/class-tainacan-logs.php index 6f5a73233..55f3bc6af 100644 --- a/src/classes/repositories/class-tainacan-logs.php +++ b/src/classes/repositories/class-tainacan-logs.php @@ -309,41 +309,44 @@ class Logs extends Repository { $entity_post = get_post($attachment_post->post_parent); if ( $entity_post ) { - - $entity = Repository::get_entity_by_post( $entity_post ); - - if ( $entity ) { - - $collection_id = method_exists($entity, 'get_collection_id') ? $entity->get_collection_id() : 'default'; - - $log = new Entities\Log(); - - if ( $entity instanceof Entities\Collection ) { - $collection_id = $entity->get_id(); - $log->set_title( sprintf(__( 'File attached to Collection "%s" was removed', 'tainacan'), $entity->get_name() ) ); + try { + $entity = Repository::get_entity_by_post( $entity_post ); + + if ( $entity ) { + + $collection_id = method_exists($entity, 'get_collection_id') ? $entity->get_collection_id() : 'default'; + + $log = new Entities\Log(); + + if ( $entity instanceof Entities\Collection ) { + $collection_id = $entity->get_id(); + $log->set_title( sprintf(__( 'File attached to Collection "%s" was removed', 'tainacan'), $entity->get_name() ) ); + } + if ( $entity instanceof Entities\Item ) { + $log->set_item_id($entity->get_id()); + $log->set_title( sprintf( __( 'File attached to Item "%s" was removed' , 'tainacan'), $entity->get_title() ) ); + } + + $object_type = get_class($entity); + $object_id = $entity->get_id(); + + $preapred = [ + 'id' => $attachment_id, + 'title' => $attachment_post->post_title, + 'description' => $attachment_post->post_content, + ]; + + $log->set_collection_id($collection_id); + $log->set_object_type($object_type); + $log->set_object_id($object_id); + $log->set_old_value($preapred); + $log->set_action('delete-attachment'); + + $this->current_attachment_delete_log = $log; + } - if ( $entity instanceof Entities\Item ) { - $log->set_item_id($entity->get_id()); - $log->set_title( sprintf( __( 'File attached to Item "%s" was removed' , 'tainacan'), $entity->get_title() ) ); - } - - $object_type = get_class($entity); - $object_id = $entity->get_id(); - - $preapred = [ - 'id' => $attachment_id, - 'title' => $attachment_post->post_title, - 'description' => $attachment_post->post_content, - ]; - - $log->set_collection_id($collection_id); - $log->set_object_type($object_type); - $log->set_object_id($object_id); - $log->set_old_value($preapred); - $log->set_action('delete-attachment'); - - $this->current_attachment_delete_log = $log; - + } catch (\Exception $e) { + error_log("[pre_delete_attachment]:" . $e->getMessage()); } }