51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| class TabulizerCalcAdd {
 | |
| 	function calc($row_id, $column_id, $values, $custom_arg) {				
 | |
| 		$sum = null;
 | |
| 		$count = 0;				
 | |
| 				
 | |
| 		if (!empty($values)) {
 | |
| 			$sum = 0;
 | |
| 			foreach ($values as $coord => $value) {				
 | |
| 				if (!empty($custom_arg)) {					
 | |
| 					list($value_row_id, $value_column_id) = explode(',',$coord);
 | |
| 					switch ($custom_arg) {
 | |
| 						case 'above':
 | |
| 							$id = intval($value_row_id);
 | |
| 							if ($id >= $row_id) continue 2; 
 | |
| 							break;
 | |
| 						case 'below':
 | |
| 							$id = intval($value_row_id);
 | |
| 							if ($id <= $row_id) continue 2;
 | |
| 							break;
 | |
| 						case 'left':
 | |
| 							$id = intval($value_column_id);
 | |
| 							if ($id >= $row_id) continue 2;
 | |
| 							break;
 | |
| 						case 'right':
 | |
| 							$id = intval($value_column_id);
 | |
| 							if ($id <= $row_id) continue 2;
 | |
| 							break;
 | |
| 						default:
 | |
| 							// unknow case
 | |
| 							continue 2;								
 | |
| 					}
 | |
| 				}								
 | |
| 				
 | |
| 				$value = TabulizerMath::getNumericValue($value);
 | |
| 				if (is_numeric($value)) {
 | |
| 					$sum += $value;
 | |
| 					$count++;
 | |
| 				}
 | |
| 			}
 | |
| 		}				
 | |
| 		
 | |
| 		if ($count) {			
 | |
| 			return $sum;
 | |
| 		} else {
 | |
| 			return null;
 | |
| 		}
 | |
| 		
 | |
| 	}
 | |
| }
 | |
| ?>
 |