class wfPage { const PAGE_DASHBOARD = 'dashboard'; const PAGE_DASHBOARD_OPTIONS = 'dashboard-options'; const PAGE_FIREWALL = 'firewall'; const PAGE_FIREWALL_OPTIONS = 'firewall-options'; const PAGE_BLOCKING = 'blocking'; const PAGE_BLOCKING_OPTIONS = 'blocking-options'; const PAGE_SCAN = 'scan'; const PAGE_SCAN_OPTIONS = 'scan-options'; const PAGE_TOOLS_2FA = 'tools-2fa'; const PAGE_TOOLS_LIVE_TRAFFIC = 'tools-2fa'; const PAGE_TOOLS_COMMENT_SPAM = 'tools-comment-spam'; const PAGE_TOOLS_WHOIS = 'tools-whois'; const PAGE_TOOLS_DIAGNOSTICS = 'tools-diagnostics'; const PAGE_SUPPORT = 'support'; /** @var string */ private $_identifier; /** * Provides validation for a user-provided page identifier. * * @param string $identifier * @return bool */ public static function isValidPage($identifier) { switch ($identifier) { case self::PAGE_DASHBOARD: case self::PAGE_DASHBOARD_OPTIONS: case self::PAGE_FIREWALL: case self::PAGE_FIREWALL_OPTIONS: case self::PAGE_BLOCKING: case self::PAGE_BLOCKING_OPTIONS: case self::PAGE_SCAN: case self::PAGE_SCAN_OPTIONS: case self::PAGE_TOOLS_2FA: case self::PAGE_TOOLS_LIVE_TRAFFIC: case self::PAGE_TOOLS_COMMENT_SPAM: case self::PAGE_TOOLS_WHOIS: case self::PAGE_TOOLS_DIAGNOSTICS: case self::PAGE_SUPPORT: return true; } return false; } /** * Convenience function for returning the user-displayable label for the given page. * * @param string $identifier * @return bool|string */ public static function pageLabel($identifier) { $page = new wfPage($identifier); return $page->label(); } /** * Convenience function for returning the canonical URL for the given page. * * @param string $identifier * @param string|bool $source The source page identifier to append to the URL if wanted. * @return string */ public static function pageURL($identifier, $source = false) { $page = new wfPage($identifier); return $page->url($source); } public function __construct($identifier) { $this->_identifier = $identifier; } public function __get($key) { switch ($key) { case 'identifier': return $this->_identifier; } throw new OutOfBoundsException("{$key} is not a valid property"); } public function __isset($key) { switch ($key) { case 'identifier': return true; } return false; } /** * Returns the user-displayable label for the page. * * @return bool|string */ public function label() { switch ($this->identifier) { case self::PAGE_DASHBOARD: return __('Dashboard', 'wordfence'); case self::PAGE_DASHBOARD_OPTIONS: return __('Global Options', 'wordfence'); case self::PAGE_FIREWALL: return __('Firewall', 'wordfence'); case self::PAGE_FIREWALL_OPTIONS: return __('Firewall Options', 'wordfence'); case self::PAGE_BLOCKING: return __('Blocking', 'wordfence'); case self::PAGE_BLOCKING_OPTIONS: return __('Blocking Options', 'wordfence'); case self::PAGE_SCAN: return __('Scan', 'wordfence'); case self::PAGE_SCAN_OPTIONS: return __('Scan Options', 'wordfence'); case self::PAGE_TOOLS_2FA: return __('Two Factor Authentication', 'wordfence'); case self::PAGE_TOOLS_LIVE_TRAFFIC: return __('Live Traffic', 'wordfence'); case self::PAGE_TOOLS_COMMENT_SPAM: return __('Comment Spam Filter', 'wordfence'); case self::PAGE_TOOLS_WHOIS: return __('Whois Lookup', 'wordfence'); case self::PAGE_TOOLS_DIAGNOSTICS: return __('Diagnostics', 'wordfence'); case self::PAGE_SUPPORT: return __('Support', 'wordfence'); } return false; } /** * Returns the canonical URL for the page. * * @param string|bool $source The source page identifier to append to the URL if wanted. * @return string */ public function url($source = false) { $page = ''; $subpage = ''; $hash = ''; switch ($this->identifier) { case self::PAGE_DASHBOARD: $page = 'Wordfence'; break; case self::PAGE_DASHBOARD_OPTIONS: $page = 'Wordfence'; $subpage = 'global_options'; break; case self::PAGE_FIREWALL: $page = 'WordfenceWAF'; break; case self::PAGE_FIREWALL_OPTIONS: $page = 'WordfenceWAF'; $subpage = 'waf_options'; break; case self::PAGE_BLOCKING: $page = 'WordfenceWAF'; $hash = '#top#blocking'; break; case self::PAGE_BLOCKING_OPTIONS: $page = 'WordfenceWAF'; $subpage = 'blocking_options'; break; case self::PAGE_SCAN: $page = 'WordfenceScan'; break; case self::PAGE_SCAN_OPTIONS: $page = 'WordfenceScan'; $subpage = 'scan_options'; break; case self::PAGE_TOOLS_2FA: $page = 'WordfenceTools'; $subpage = 'twofactor'; break; case self::PAGE_TOOLS_LIVE_TRAFFIC: $page = 'WordfenceTools'; $subpage = 'livetraffic'; break; case self::PAGE_TOOLS_COMMENT_SPAM: $page = 'WordfenceTools'; $subpage = 'commentspam'; break; case self::PAGE_TOOLS_WHOIS: $page = 'WordfenceTools'; $subpage = 'whois'; break; case self::PAGE_TOOLS_DIAGNOSTICS: $page = 'WordfenceTools'; $subpage = 'diagnostics'; break; case self::PAGE_SUPPORT: $page = 'WordfenceSupport'; break; } $baseURL = 'admin.php?'; $baseURL .= 'page=' . rawurlencode($page); if (!empty($subpage)) { $baseURL .= '&subpage=' . rawurlencode($subpage); } if (self::isValidPage($source)) { $baseURL .= '&source=' . rawurlencode($source); } if (!empty($hash)) { $baseURL .= $this->_hashURLEncode($hash); } if (function_exists('network_admin_url') && is_multisite()) { return network_admin_url($baseURL); } return admin_url($baseURL); } /** * Splits a URI hash component and URL-encodes its members. * * @param string $hash * @return string */ private function _hashURLEncode($hash) { $components = explode('#', $hash); foreach ($components as &$c) { $c = rawurlencode($c); } return implode('#', $components); } /** * Returns an ordered array of the pages required to reach this page, this page being the last entry in the array. * * @return array */ public function breadcrumbs() { switch ($this->identifier) { case self::PAGE_DASHBOARD: return array($this); case self::PAGE_DASHBOARD_OPTIONS: return array(new wfPage(wfPage::PAGE_DASHBOARD), $this); case self::PAGE_FIREWALL: return array($this); case self::PAGE_FIREWALL_OPTIONS: return array(new wfPage(wfPage::PAGE_FIREWALL), $this); case self::PAGE_BLOCKING: return array($this); case self::PAGE_BLOCKING_OPTIONS: return array(new wfPage(wfPage::PAGE_BLOCKING), $this); case self::PAGE_SCAN: return array($this); case self::PAGE_SCAN_OPTIONS: return array(new wfPage(wfPage::PAGE_SCAN), $this); case self::PAGE_TOOLS_2FA: return array($this); case self::PAGE_TOOLS_LIVE_TRAFFIC: return array($this); case self::PAGE_TOOLS_COMMENT_SPAM: return array($this); case self::PAGE_TOOLS_WHOIS: return array($this); case self::PAGE_TOOLS_DIAGNOSTICS: return array($this); case self::PAGE_SUPPORT: return array($this); } return array(); } } /** * Defines a UI tab. * * @property string $id * @property string $a * @property string $tabTitle * @property string $pageTitle * @property bool $active */ class wfTab { protected $_id; protected $_a; protected $_tabTitle; protected $_pageTitle; protected $_active; public function __construct($id, $a, $tabTitle, $pageTitle, $active = false) { $this->_id = $id; $this->_a = $a; $this->_tabTitle = $tabTitle; $this->_pageTitle = $pageTitle; $this->_active = $active; } public function __get($name) { switch ($name) { case 'id': return $this->_id; case 'a': return $this->_a; case 'tabTitle': return $this->_tabTitle; case 'pageTitle': return $this->_pageTitle; case 'active': return $this->_active; } throw new OutOfBoundsException('Invalid key: ' . $name); } } Staff | Ocean Shores

Curt Zander, President of Ocean Shores Golf Course, Inc.




OSGC, Inc. operates this public golf course which is owned by the City of Ocean Shores.

Curt Zander, a 31-year PGA Professional is President of OSGC. He is also Maintenance Superintendent for the course. Curt grew up in Renton, Washington where he and his brothers began playing golf when they were in high school.

Curt’s wife Tonya, is also involved in the business, operating the snack bar at the course and helping out in the pro shop. Both Curt and Tonya are very family oriented, with four children.