Added BulkActionException to allow clean error feedback from bulk actions
This commit is contained in:
		
							parent
							
								
									7c32b1f7a8
								
							
						
					
					
						commit
						ac63992efa
					
				| @ -1,5 +1,8 @@ | |||||||
| <?php declare(strict_types=1); | <?php declare(strict_types=1); | ||||||
| 
 | 
 | ||||||
|  | class BulkActionException extends SCoreException | ||||||
|  | { | ||||||
|  | } | ||||||
| class BulkActionBlockBuildingEvent extends Event | class BulkActionBlockBuildingEvent extends Event | ||||||
| { | { | ||||||
|     /** @var array  */ |     /** @var array  */ | ||||||
| @ -166,28 +169,32 @@ class BulkActions extends Extension | |||||||
| 
 | 
 | ||||||
|             $action = $_POST['bulk_action']; |             $action = $_POST['bulk_action']; | ||||||
| 
 | 
 | ||||||
|             $items = null; |             try { | ||||||
|             if (isset($_POST['bulk_selected_ids']) && !empty($_POST['bulk_selected_ids'])) { |                 $items = null; | ||||||
|                 $data = json_decode($_POST['bulk_selected_ids']); |                 if (isset($_POST['bulk_selected_ids']) && !empty($_POST['bulk_selected_ids'])) { | ||||||
|                 if (empty($data)) { |                     $data = json_decode($_POST['bulk_selected_ids']); | ||||||
|                     throw new SCoreException("No ids specified in bulk_selected_ids"); |                     if (empty($data)) { | ||||||
|  |                         throw new BulkActionException("No ids specified in bulk_selected_ids"); | ||||||
|  |                     } | ||||||
|  |                     if (is_array($data) && !empty($data)) { | ||||||
|  |                         $items = $this->yield_items($data); | ||||||
|  |                     } | ||||||
|  |                 } elseif (isset($_POST['bulk_query']) && $_POST['bulk_query'] != "") { | ||||||
|  |                     $query = $_POST['bulk_query']; | ||||||
|  |                     if ($query != null && $query != "") { | ||||||
|  |                         $items = $this->yield_search_results($query); | ||||||
|  |                     } | ||||||
|  |                 } else { | ||||||
|  |                     throw new BulkActionException("No ids selected and no query present, cannot perform bulk operation on entire collection"); | ||||||
|                 } |                 } | ||||||
|                 if (is_array($data)&&!empty($data)) { |  | ||||||
|                     $items = $this->yield_items($data); |  | ||||||
|                 } |  | ||||||
|             } elseif (isset($_POST['bulk_query']) && $_POST['bulk_query'] != "") { |  | ||||||
|                 $query = $_POST['bulk_query']; |  | ||||||
|                 if ($query != null && $query != "") { |  | ||||||
|                     $items = $this->yield_search_results($query); |  | ||||||
|                 } |  | ||||||
|             } else { |  | ||||||
|                 throw new SCoreException("No ids selected and no query present, cannot perform bulk operation on entire collection"); |  | ||||||
|             } |  | ||||||
| 
 | 
 | ||||||
|             $bae = new BulkActionEvent($action, $items); |                 $bae = new BulkActionEvent($action, $items); | ||||||
| 
 | 
 | ||||||
|             if (is_iterable($items)) { |                 if (is_iterable($items)) { | ||||||
|                 send_event($bae); |                     send_event($bae); | ||||||
|  |                 } | ||||||
|  |             } catch (BulkActionException $e) { | ||||||
|  |                 log_error(BulkActionsInfo::KEY, $e->getMessage(), $e->getMessage()); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if ($bae->redirect) { |             if ($bae->redirect) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user