/**
  * Handles page redirects.
  * 
  * This is called to prevent the plugin from performing the redirect when the plugin is not activated or intervene the activation process.
  * If this is called in the start() method above, it will redirect the user to the page during the activation process 
  * and the user gets a page that is not created because the plugin is not activated.
  * 
  * @callback    action      admin_menu
  * @since       3.5.0
  * @sicne       3.5.3       Change the hook from `admin_init` as the resetting option results in an error 'You do not have permission to access this page.'
  */
 public function _replyToHandleRedirects()
 {
     // When newly installed, the 'welcomed' value is not set.
     $_oOption = AdminPageFrameworkLoader_Option::getInstance();
     if (!$_oOption->get('welcomed')) {
         $this->_setInitialOptions($_oOption, AdminPageFrameworkLoader_Registry::VERSION);
         $this->_gotToWelcomePage();
         // will exit
     }
     if ($_oOption->hasUpgraded()) {
         $this->_setInitialOptions($_oOption, $_oOption->get('version_saved'));
         $this->_gotToWelcomePage();
         // will exit
     }
 }
 /**
  * User constructor.
  * 
  * @since       3.5.0
  */
 public function start()
 {
     if (!$this->oProp->bIsAdmin) {
         return;
     }
     if (!is_network_admin()) {
         return;
     }
     // Enable / disable the demo pages
     if (isset($_GET['enable_apfl_demo_pages'])) {
         // Update the options and reload the page
         $_oOption = AdminPageFrameworkLoader_Option::getInstance(AdminPageFrameworkLoader_Registry::$aOptionKeys['main']);
         $_oOption->update('enable_demo', $_GET['enable_apfl_demo_pages']);
         exit(wp_safe_redirect(remove_query_arg('enable_apfl_demo_pages')));
     }
 }
 /**
  * @since       3.7.4
  * @return      boolean
  */
 private function _shouldLoadDemo()
 {
     if (AdminPageFrameworkLoader_Utility::isSilentMode()) {
         return false;
     }
     // Check if the demo is enabled.
     $_oOption = AdminPageFrameworkLoader_Option::getInstance();
     if (!$_oOption->get('enable_admin_pages')) {
         return false;
     }
     if (!$_oOption->get('enable_demo')) {
         $this->_setPointerToolTips();
         return false;
     }
     return true;
 }
 /**
  * User constructor.
  * 
  * @since       3.5.0
  */
 public function start()
 {
     if (!$this->oProp->bIsAdmin) {
         return;
     }
     if (!is_network_admin()) {
         return;
     }
     // Enable / disable the demo pages
     if (isset($_GET['enable_apfl_demo_pages'])) {
         // Update the options and reload the page
         $_oOption = AdminPageFrameworkLoader_Option::getInstance(AdminPageFrameworkLoader_Registry::$aOptionKeys['main']);
         $_oOption->update('enable_demo', $_GET['enable_apfl_demo_pages']);
         $this->setSettingNotice(__('Enabled demo!', 'admin-page-framework-loader'), 'updated');
         $this->oUtil->goToLocalURL(remove_query_arg('enable_apfl_demo_pages'), array('AdminPageFrameworkLoader_Utility', 'replyToShowRedirectError'));
     }
 }
 /**
  * Sets up admin pages.
  * 
  * @since       3.5.0
  * @callback    action      wp_loaded
  */
 public function setUp()
 {
     $_oOption = AdminPageFrameworkLoader_Option::getInstance();
     if (!$_oOption->get('enable_admin_pages')) {
         return;
     }
     $this->sPageSlug = AdminPageFrameworkLoader_Registry::$aAdminPages['about'];
     // Root page
     $this->setRootMenuPage('Dashboard');
     // Sub-pages
     $this->addSubMenuItems(array('title' => AdminPageFrameworkLoader_Registry::SHORTNAME, 'page_slug' => AdminPageFrameworkLoader_Registry::$aAdminPages['about'], 'show_in_menu' => false, 'style' => array(AdminPageFrameworkLoader_Registry::$sDirPath . '/asset/css/about.css', AdminPageFrameworkLoader_Registry::$sDirPath . '/asset/css/column.css', AdminPageFrameworkLoader_Registry::$sDirPath . '/asset/javascript/flip/jquery.m.flip.css', version_compare($GLOBALS['wp_version'], '3.8', '<') ? ".about-wrap .introduction h2 {\n                                padding: 1em;\n                            }" : "", ".admin-page-framework-section-tab h4 {\n                            padding: 6px 16px 8px;\n                            font-size: 1.2em;\n                            font-weight: 400;\n                        }"), 'script' => array(AdminPageFrameworkLoader_Registry::$sDirPath . '/asset/javascript/flip/jquery.m.flip.js', "jQuery( document ).ready( function() {\n                        jQuery( '.apf-badge-image' ).mflip();\n                    } );")));
     $this->setPluginSettingsLinkLabel('');
     // pass an empty string to disable it.
     // Hook
     add_action("load_" . $this->oProp->sClassName, array($this, 'replyToLoadClassPages'));
     add_action("load_" . AdminPageFrameworkLoader_Registry::$aAdminPages['about'], array($this, 'replyToLoadPage'));
 }
 public function __construct()
 {
     // Check if the demo is enabled.
     $_oOption = AdminPageFrameworkLoader_Option::getInstance();
     if (!$_oOption->get('enable_demo')) {
         return;
     }
     // Otherwise, load it.
     $this->_registerClasses();
     // Backward compatibility.
     define('APFDEMO_FILE', AdminPageFrameworkLoader_Registry::$sFilePath);
     define('APFDEMO_DIRNAME', AdminPageFrameworkLoader_Registry::$sDirPath);
     do_action('admin_page_framework_loader_action_before_loading_demo');
     // Include example components.
     new AdminPageFrameworkLoader_Demo_PostType();
     new AdminPageFrameworkLoader_Demo_AdminPage();
     new AdminPageFrameworkLoader_Demo_Widget();
     new AdminPageFrameworkLoader_Demo_UserMeta();
     do_action('admin_page_framework_loader_action_after_loading_demo');
 }
 /**
  * 
  * @return      array       The demo content.
  */
 private function _getDemo()
 {
     $_oOption = AdminPageFrameworkLoader_Option::getInstance(AdminPageFrameworkLoader_Registry::$aOptionKeys['main']);
     $_bEnabled = $_oOption->get('enable_demo');
     $_sTitle = __('Demo', 'admin=page-framework-loader');
     return array($_sTitle => array('title' => $_sTitle, 'description' => '<div style="text-align: center;" class="aligncenter"><img class="aligncenter" src="' . AdminPageFrameworkLoader_Registry::getPluginURL('/asset/image/icon-128x128.png') . '" alt="' . esc_attr($_sTitle) . '"/></div>' . '<p>' . __('Showcases the features of Admin Page Framework.', 'admin-page-framework-loader') . '</p>', 'link' => add_query_arg(array('enable_apfl_demo_pages' => $_bEnabled ? 0 : 1) + $_GET, admin_url($GLOBALS['pagenow'])), 'label' => $_bEnabled ? __('Deactivate', 'admin-page-framework-loader') : __('Activate', 'admin-page-framework-loader')));
 }