public function getButtons()
 {
     $buttons = [['place' => self::PLACE_COMMON, 'order' => 2, 'title' => pm_Locale::lmsg('commonButtonTitle'), 'description' => pm_Locale::lmsg('commonButtonDescription'), 'icon' => pm_Context::getBaseUrl() . 'images/icon.png', 'link' => pm_Context::getActionUrl('index')], ['place' => self::PLACE_COMMON, 'order' => 3, 'title' => 'Common Button #2', 'icon' => pm_Context::getBaseUrl() . 'images/icon.png', 'link' => pm_Context::getActionUrl('index')], ['place' => self::PLACE_COMMON, 'order' => 4, 'title' => 'Common Button #3', 'icon' => pm_Context::getBaseUrl() . 'images/icon.png', 'link' => pm_Context::getActionUrl('index')], ['place' => self::PLACE_ADMIN_HOME, 'title' => 'Admin Home Button', 'description' => 'Description for admin home button', 'icon' => pm_Context::getBaseUrl() . 'images/icon.png', 'link' => 'http://www.plesk.com/', 'newWindow' => true], ['place' => self::PLACE_CUSTOMER_HOME, 'title' => 'Customer Home Button', 'description' => 'Description for customer home button', 'icon' => pm_Context::getBaseUrl() . 'images/icon.png', 'link' => pm_Context::getActionUrl('index')], ['place' => self::PLACE_DOMAIN, 'title' => 'Domain Button', 'description' => 'Description for domain button', 'icon' => pm_Context::getBaseUrl() . 'images/icon.png', 'link' => pm_Context::getActionUrl('index')], ['place' => array_filter([self::PLACE_HOSTING_PANEL_NAVIGATION, version_compare(pm_ProductInfo::getVersion(), '17.0') >= 0 ? self::PLACE_HOSTING_PANEL_TABS : null, self::PLACE_ADMIN_TOOLS_AND_SETTINGS, self::PLACE_RESELLER_TOOLS_AND_SETTINGS]), 'title' => 'Multi Place Button', 'description' => 'Description for multi place button', 'link' => pm_Context::getActionUrl('index', 'another')], ['place' => self::PLACE_DOMAIN, 'targetId' => 'buttonBackup', 'hidden' => true], ['place' => self::PLACE_DOMAIN_PROPERTIES, 'targetId' => 'buttonLogs', 'hidden' => true, 'contextParams' => true], ['place' => self::PLACE_DOMAIN_PROPERTIES, 'targetId' => 'buttonSitebuilder', 'title' => 'Sitebuilder', 'description' => 'My Sitebuilder', 'link' => pm_Context::getActionUrl('index'), 'contextParams' => true], ['place' => self::PLACE_DOMAIN_PROPERTIES, 'title' => 'Domain Properties Button', 'description' => 'Description for domain properties button', 'link' => pm_Context::getActionUrl('index', 'another'), 'contextParams' => true], ['place' => self::PLACE_RESELLER_HOME, 'title' => 'Reseller Home Button', 'description' => 'Description for Reseller home button', 'icon' => pm_Context::getBaseUrl() . 'images/icon.png', 'link' => 'http://www.plesk.com/', 'newWindow' => true], ['place' => self::PLACE_ADMIN_TOOLS_AND_SETTINGS, 'title' => 'Tools and settings button', 'section' => 'securityPanel-tools-list', 'order' => 3, 'description' => 'Description for multi place button', 'link' => pm_Context::getActionUrl('index', 'another')]];
     if (version_compare(pm_ProductInfo::getVersion(), '12.1') >= 0) {
         $buttons[] = ['place' => self::PLACE_TOOLBAR, 'id' => 'toolbox-button-id', 'title' => 'Toolbar Button', 'description' => 'Description for toolbar button', 'icon' => pm_Context::getBaseUrl() . 'images/icon.png', 'link' => pm_Context::getActionUrl('index', 'another'), 'visibility' => function ($options) {
             if (isset($options['controller']) && 'email-address' == $options['controller']) {
                 return true;
             }
             return false;
         }];
     }
     if (version_compare(pm_ProductInfo::getVersion(), '17.0') >= 0) {
         $newButtons = [['place' => self::PLACE_ADMIN_TOOLS_AND_SETTINGS, 'section' => 'mailButtons', 'order' => 2, 'title' => 'Mail Settings Button', 'description' => 'Description for Mail Settings Button', 'link' => pm_Context::getActionUrl('index', 'another')], ['place' => self::PLACE_ADMIN_NAVIGATION, 'section' => 'hosting', 'order' => 4, 'title' => 'Admin Navigation Button', 'description' => 'Description for Admin Navigation Button', 'link' => pm_Context::getActionUrl('index', 'another')], ['place' => self::PLACE_RESELLER_NAVIGATION, 'section' => 'profile', 'order' => 3, 'title' => 'Reseller Navigation Button', 'description' => 'Description for Navigation Button', 'link' => pm_Context::getActionUrl('index', 'another')], ['place' => self::PLACE_DOMAIN_PROPERTIES, 'order' => 1, 'title' => 'Domain Properties Button', 'additionalComments' => 'Additional comment for Domain Properties Button', 'description' => 'Description for domain properties button', 'link' => pm_Context::getActionUrl('index', 'another'), 'contextParams' => true], ['place' => self::PLACE_RESELLER_TOOLS_AND_SETTINGS, 'section' => 'toolsButtons', 'order' => 5, 'title' => 'Reseller Tools And Settings button', 'additionalComments' => 'Additional comment for Reseller Tools And Settings button', 'description' => 'Description for Reseller Tools And Settings button', 'link' => pm_Context::getActionUrl('index', 'another'), 'contextParams' => true], ['place' => self::PLACE_RESELLER_TOOLS_AND_SETTINGS, 'section' => self::SECTION_RESELLER_TOOLS_SERVICES, 'title' => 'Reseller Tools and Utilities', 'additionalComments' => 'Additional comment for Reseller Tools and Utilities button', 'description' => 'Description for Reseller Tools and Utilities button', 'link' => pm_Context::getActionUrl('index', 'another'), 'contextParams' => true], ['place' => self::PLACE_RESELLER_TOOLS_AND_SETTINGS, 'section' => self::SECTION_RESELLER_TOOLS_RESOURCES, 'title' => 'Reseller Tools and Utilities', 'additionalComments' => 'Additional comment for Reseller Tools and Utilities button', 'description' => 'Description for Reseller Tools and Utilities button', 'link' => pm_Context::getActionUrl('index', 'another'), 'contextParams' => true], ['place' => self::PLACE_RESELLER_TOOLS_AND_SETTINGS, 'section' => self::SECTION_RESELLER_TOOLS_ADDITIONAL_SERVICES, 'title' => 'Reseller Tools and Utilities', 'additionalComments' => 'Additional comment for Reseller Tools and Utilities button', 'description' => 'Description for Reseller Tools and Utilities button', 'link' => pm_Context::getActionUrl('index', 'another'), 'contextParams' => true]];
         $buttons = array_merge($buttons, $newButtons);
     }
     return $buttons;
 }
 private function _call(Modules_SlaveDnsManager_Slave $slave, $arguments, $verbose = false)
 {
     $arguments = "-c \"{$slave->getConfigPath()}\" {$arguments} 2>&1";
     if (pm_ProductInfo::isWindows()) {
         $command = '"' . PRODUCT_ROOT . '\\dns\\bin\\rndc.exe"';
     } else {
         $command = '/usr/sbin/rndc';
     }
     exec("{$command} {$arguments}", $out, $code);
     $output = implode("\n", $out);
     if ($verbose) {
         if ($code != 0) {
             throw new pm_Exception("Error code {$code}: {$output}");
         }
         return $output;
     }
     if ($code != 0) {
         // Cannot send output header due to possible API-RPC calls
         error_log("Error code {$code}: {$output}");
     }
     return $code == 0;
 }
<?php

// Copyright 1999-2014. Parallels IP Holdings GmbH. All Rights Reserved.
if (pm_ProductInfo::isWindows()) {
    if (!file_exists(PRODUCT_ROOT . '\\dns\\bin\\rndc.exe')) {
        echo "BIND DNS Server is not installed.";
        exit(1);
    }
}