/**
  * run() method execute abstract derived admin object
  *
  * @param string $sAdminType : type of interface to display
  * @param array $aRequest : request
  * @return array $aDisplay : empty => false / not empty => true
  */
 public function run($sAdminType, $aRequest)
 {
     // set
     $aDisplay = array();
     // include interface
     require_once _FPC_PATH_LIB_ADMIN . 'i-admin.php';
     switch ($sAdminType) {
         case 'display':
             // include matched admin object
             require_once _FPC_PATH_LIB_ADMIN . 'admin-display_class.php';
             $oAdminType = BT_AdminDisplay::create();
             break;
         case 'update':
             // update basic settings /
             // include matched admin object
             require_once _FPC_PATH_LIB_ADMIN . 'admin-update_class.php';
             $oAdminType = BT_AdminUpdate::create();
             break;
         default:
             $oAdminType = false;
             break;
     }
     // process data to use in view (tpl)
     if (!empty($oAdminType)) {
         $aDisplay = $oAdminType->run($aRequest);
         // destruct
         unset($oAdminType);
     }
     return $aDisplay;
 }
 /**
  * _updateBasic() method update basic settings
  *
  * @param array $aPost
  * @return array
  */
 private function _updateBasic(array $aPost)
 {
     // clean headers
     @ob_end_clean();
     // set
     $aUpdate = array();
     try {
         // use case - check display fancy popin for asking to associate FB account with PS
         $bDisplayAskFbPopin = Tools::getIsset(strtolower(_FPC_MODULE_NAME) . 'DisplayFbPopin') && Tools::getValue(strtolower(_FPC_MODULE_NAME) . 'DisplayFbPopin') == 'true' ? true : false;
         if (!Configuration::updateValue(_FPC_MODULE_NAME . '_DISPLAY_FB_POPIN', $bDisplayAskFbPopin)) {
             throw new Exception(FacebookPsConnect::$oModule->l('An error occurred during FB association popin update', 'admin-update_class') . '.', 110);
         }
         // use case - check display block
         $bDisplayBlock = Tools::getIsset(strtolower(_FPC_MODULE_NAME) . 'DisplayBlock') && Tools::getValue(strtolower(_FPC_MODULE_NAME) . 'DisplayBlock') == 'true' ? true : false;
         if (!Configuration::updateValue(_FPC_MODULE_NAME . '_DISPLAY_BLOCK', $bDisplayBlock)) {
             throw new Exception(FacebookPsConnect::$oModule->l('An error occurred during block display update', 'admin-update_class') . '.', 111);
         }
         // use case - check display account information block
         $bDisplayBlockInfoAccount = Tools::getIsset(strtolower(_FPC_MODULE_NAME) . 'DisplayBlockInfoAccount') && Tools::getValue(strtolower(_FPC_MODULE_NAME) . 'DisplayBlockInfoAccount') == 'true' ? true : false;
         if (!Configuration::updateValue(_FPC_MODULE_NAME . '_DISPLAY_BLOCK_INFO_ACCOUNT', $bDisplayBlockInfoAccount)) {
             throw new Exception(FacebookPsConnect::$oModule->l('An error occurred during block display update', 'admin-update_class') . '.', 112);
         }
         // use case - check display cart information block
         $bDisplayBlockInfoCart = Tools::getIsset(strtolower(_FPC_MODULE_NAME) . 'DisplayBlockInfoCart') && Tools::getValue(strtolower(_FPC_MODULE_NAME) . 'DisplayBlockInfoCart') == 'true' ? true : false;
         if (!Configuration::updateValue(_FPC_MODULE_NAME . '_DISPLAY_BLOCK_INFO_CART', $bDisplayBlockInfoCart)) {
             throw new Exception(FacebookPsConnect::$oModule->l('An error occurred during block display update', 'admin-update_class') . '.', 113);
         }
         // use case - set  default customer group
         if (Tools::getIsset(strtolower(_FPC_MODULE_NAME) . 'DefaultGroup')) {
             $iDefaultCustGroup = Tools::getValue(strtolower(_FPC_MODULE_NAME) . 'DefaultGroup');
             if (is_numeric($iDefaultCustGroup)) {
                 if (!Configuration::updateValue(_FPC_MODULE_NAME . '_DEFAULT_CUSTOMER_GROUP', $iDefaultCustGroup)) {
                     throw new Exception(FacebookPsConnect::$oModule->l('An error occurred during default customer group update', 'admin-update_class') . '.', 114);
                 }
             } else {
                 throw new Exception(FacebookPsConnect::$oModule->l('Default customer group is not a numeric', 'admin-update_class') . '.', 115);
             }
         }
         // use case - set  default API request method
         if (Tools::getIsset(strtolower(_FPC_MODULE_NAME) . 'ApiRequestType')) {
             $iDefaultApiMethod = Tools::getValue(strtolower(_FPC_MODULE_NAME) . 'ApiRequestType');
             if (!empty($iDefaultApiMethod)) {
                 if (!Configuration::updateValue(_FPC_MODULE_NAME . '_API_REQUEST_METHOD', $iDefaultApiMethod)) {
                     throw new Exception(FacebookPsConnect::$oModule->l('An error occurred during default API request method update', 'admin-update_class') . '.', 116);
                 }
             }
         }
         // use case - if OPC activate, update block's text below connectors' button
         if (Tools::getIsset(strtolower(_FPC_MODULE_NAME) . 'DisplayBlockInfoCart')) {
             $bDisplayBlockOpc = Tools::getValue(strtolower(_FPC_MODULE_NAME) . 'DisplayBlockInfoCart') == 'true' ? true : false;
             if (!Configuration::updateValue(_FPC_MODULE_NAME . '_DISPLAY_BLOCK_INFO_CART', $bDisplayBlockOpc)) {
                 throw new Exception(FacebookPsConnect::$oModule->l('An error occurred during display block cart update', 'admin-update_class') . '.', 117);
             }
         }
     } catch (Exception $e) {
         $aUpdate['aErrors'][] = array('msg' => $e->getMessage(), 'code' => $e->getCode());
     }
     // get configuration options
     BT_FPCModuleTools::getConfiguration();
     // require admin configure class - to factorise
     require_once _FPC_PATH_LIB_ADMIN . 'admin-display_class.php';
     // get run of admin display in order to display first page of admin with basic settings updated
     $aData = BT_AdminDisplay::create()->run(array('sType' => 'basic'));
     // use case - empty error and updating status
     $aData['assign'] = array_merge($aData['assign'], array('iActiveTab' => 1, 'bUpdate' => empty($aUpdate['aErrors']) ? true : false), $aUpdate);
     // destruct
     unset($aUpdate);
     return $aData;
 }