rules = $this->rules = get_option(self::CONFIG_OPTION, NULL); if($this->rules === NULL) { $this->defaults(); } } public function save() { update_option(self::CONFIG_OPTION, $this->rules); } public function getAll() { return $this->rules; } public function getActions($event) { $actions = array(); foreach($this->rules as $rule) { if($rule['event'] == $event) { $actions[] = $rule['action']; } } return $actions; } public function set($rules) { if(!is_array($rules)) { throw new InvalidArgumentException('rules needs to be array'); } foreach($rules as $rule) { if(!isset($rule['event']) || !isset($rule['action'])) { throw new InvalidArgumentException('rules needs an event and action'); } $event = $rule['event']; $action = $rule['action']; if(!array_key_exists($event, AmzFulfillment_Event::$events)) { throw new InvalidArgumentException('Unknown event id: ' . $event); } if(!array_key_exists($action, AmzFulfillment_Action::$actions)) { throw new InvalidArgumentException('Unknown action id: ' . $action); } } $this->rules = $rules; } public function setByArrays($eventArray, $actionArray) { $rules = array(); for($i = 0; $i < count($eventArray); $i++) { if(!isset($eventArray[$i]) || !isset($actionArray[$i])) { break; } $event = $eventArray[$i]; $action = $actionArray[$i]; if(empty($event) || empty($action)) { continue; } $rules[] = array( 'event' => $event, 'action' => $action ); } $this->set($rules); } public function defaults() { $this->rules = array( array( 'event' => AmzFulfillment_Event::WOOCOMMERCE_ORDER_PROCESSING, 'action' => AmzFulfillment_Action::AMAZON_FULFILLMENT_CREATE ), array( 'event' => AmzFulfillment_Event::AMAZON_FULFILLMENT_CANCELLED, 'action' => AmzFulfillment_Action::WOOCOMMERCE_ORDER_CANCELLED ), array( 'event' => AmzFulfillment_Event::AMAZON_FULFILLMENT_INVALID, 'action' => AmzFulfillment_Action::WOOCOMMERCE_ORDER_FAILED ), array( 'event' => AmzFulfillment_Event::AMAZON_FULFILLMENT_COMPLETE, 'action' => AmzFulfillment_Action::WOOCOMMERCE_ORDER_COMPLETED ), array( 'event' => AmzFulfillment_Event::AMAZON_FULFILLMENT_UNFULFILLABLE, 'action' => AmzFulfillment_Action::WOOCOMMERCE_ORDER_FAILED ) ); } }