Automattic\WooCommerce\Internal

DownloadPermissionsAdjuster::get_download_files_and_permissions()privateWC 1.0

Get the existing downloadable files and download permissions for a given product. The returned value is an array with two keys:

  • download_ids_by_file_url: an associative array of file url => download_id.
  • permission_data_by_file_order_user: an associative array where key is "file_url:customer_id:order_id" and value is the full permission data set.

Method of the class: DownloadPermissionsAdjuster{}

No Hooks.

Return

Array[]. Information about the downloadable files and permissions for the product.

Usage

// private - for code of main (parent) class only
$result = $this->get_download_files_and_permissions( $product );
$product(\WC_Product) (required)
The product to get the downloadable files and permissions for.

DownloadPermissionsAdjuster::get_download_files_and_permissions() code WC 8.7.0

private function get_download_files_and_permissions( \WC_Product $product ) {
	$result    = array(
		'permission_data_by_file_order_user' => array(),
		'download_ids_by_file_url'           => array(),
	);
	$downloads = $product->get_downloads();
	foreach ( $downloads as $download ) {
		$result['download_ids_by_file_url'][ $download->get_file() ] = $download->get_id();
	}

	$permissions = $this->downloads_data_store->get_downloads( array( 'product_id' => $product->get_id() ) );
	foreach ( $permissions as $permission ) {
		$permission_data = (array) $permission->data;
		if ( array_key_exists( $permission_data['download_id'], $downloads ) ) {
			$file = $downloads[ $permission_data['download_id'] ]->get_file();
			$data = array(
				'file' => $file,
				'data' => (array) $permission->data,
			);
			$result['permission_data_by_file_order_user'][ "{$file}:{$permission_data['user_id']}:{$permission_data['order_id']}" ] = $data;
		}
	}

	return $result;
}