public static function canAccessOrderStatusIds(Role $role) { if (isset(self::$_cache['accessOrderStatusIds'])) { self::$_cache['accessOrderStatusIds'] = array(); } if (!isset(self::$_cache['accessOrderStatusIds'][$role->getId()])) { switch ($role->getId()) { case Role::ID_STORE_MANAGER: case Role::ID_SYSTEM_ADMIN: case Role::ID_SALES: self::$_cache['accessOrderStatusIds'][$role->getId()] = array_map(create_function('$a', 'return intval($a->getId());'), OrderStatus::getAllByCriteria('id not in(?,?) ', array(OrderStatus::ID_CANCELLED, OrderStatus::ID_SHIPPED))); break; case Role::ID_ACCOUNTING: self::$_cache['accessOrderStatusIds'][$role->getId()] = array_map(create_function('$a', 'return intval($a->getId());'), OrderStatus::getAllByCriteria('id not in(?,?) ', array(OrderStatus::ID_CANCELLED, OrderStatus::ID_SHIPPED))); break; case Role::ID_PURCHASING: self::$_cache['accessOrderStatusIds'][$role->getId()] = array(OrderStatus::ID_NEW, OrderStatus::ID_INSUFFICIENT_STOCK); break; case Role::ID_WAREHOUSE: self::$_cache['accessOrderStatusIds'][$role->getId()] = array(OrderStatus::ID_ETA, OrderStatus::ID_STOCK_CHECKED_BY_PURCHASING, OrderStatus::ID_PICKED, OrderStatus::ID_INSUFFICIENT_STOCK); break; case Role::ID_WORKSHOP: self::$_cache['accessOrderStatusIds'][$role->getId()] = array(OrderStatus::ID_STOCK_CHECKED_BY_PURCHASING, OrderStatus::ID_NEW); break; } } return self::$_cache['accessOrderStatusIds'][$role->getId()]; }