public function postProcess() { if (Tools::isSubmit('submitDeleteImgConf')) { $this->_deleteCurrentImg(); } $errors = ''; if (Tools::isSubmit('submitAdvConf')) { if (isset($_FILES['adv_img']) && isset($_FILES['adv_img']['tmp_name']) && !empty($_FILES['adv_img']['tmp_name'])) { if ($error = ImageManager::validateUpload($_FILES['adv_img'], Tools::convertBytes(ini_get('upload_max_filesize')))) { $errors .= $error; } else { Configuration::updateValue('BLOCKADVERT_IMG_EXT', substr($_FILES['adv_img']['name'], strrpos($_FILES['adv_img']['name'], '.') + 1)); // Set the image name with a name contextual to the shop context $this->adv_imgname = 'advertising'; if (Shop::getContext() == Shop::CONTEXT_GROUP) { $this->adv_imgname = 'advertising-g' . (int) $this->context->shop->getContextShopGroupID(); } elseif (Shop::getContext() == Shop::CONTEXT_SHOP) { $this->adv_imgname = 'advertising-s' . (int) $this->context->shop->getContextShopID(); } // Copy the image in the module directory with its new name if (!move_uploaded_file($_FILES['adv_img']['tmp_name'], _PS_MODULE_DIR_ . $this->name . '/img/' . $this->adv_imgname . '.' . Configuration::get('BLOCKADVERT_IMG_EXT'))) { $errors .= $this->l('File upload error.'); } } } // If the link is not set, then delete it in order to use the next default value (either the global value or the group value) if ($link = Tools::getValue('adv_link')) { Configuration::updateValue('BLOCKADVERT_LINK', $link); } elseif (Shop::getContext() == Shop::CONTEXT_SHOP || Shop::getContext() == Shop::CONTEXT_GROUP) { Configuration::deleteFromContext('BLOCKADVERT_LINK'); } // If the title is not set, then delete it in order to use the next default value (either the global value or the group value) if ($title = Tools::getValue('adv_title')) { Configuration::updateValue('BLOCKADVERT_TITLE', $title); } elseif (Shop::getContext() == Shop::CONTEXT_SHOP || Shop::getContext() == Shop::CONTEXT_GROUP) { Configuration::deleteFromContext('BLOCKADVERT_TITLE'); } // Reset the module properties $this->initialize(); $this->_clearCache('blockadvertising.tpl'); if (!$errors) { Tools::redirectAdmin(AdminController::$currentIndex . '&configure=' . $this->name . '&token=' . Tools::getAdminTokenLite('AdminModules') . '&conf=6'); } echo $this->displayError($errors); } }
public static function deleteFromContext($key) { ConfigurationKPI::setKpiDefinition(); $r = parent::deleteFromContext($key); ConfigurationKPI::unsetKpiDefinition(); return $r; }
/** * Update options and preferences */ protected function processUpdateOptions() { $this->beforeUpdateOptions(); $languages = Language::getLanguages(false); $hide_multishop_checkbox = Shop::getTotalShops(false, null) < 2 ? true : false; foreach ($this->fields_options as $category_data) { if (!isset($category_data['fields'])) { continue; } $fields = $category_data['fields']; foreach ($fields as $field => $values) { if (isset($values['type']) && $values['type'] == 'selectLang') { foreach ($languages as $lang) { if (Tools::getValue($field . '_' . strtoupper($lang['iso_code']))) { $fields[$field . '_' . strtoupper($lang['iso_code'])] = array('type' => 'select', 'cast' => 'strval', 'identifier' => 'mode', 'list' => $values['list']); } } } } // Validate fields foreach ($fields as $field => $values) { // We don't validate fields with no visibility if (!$hide_multishop_checkbox && Shop::isFeatureActive() && isset($values['visibility']) && $values['visibility'] > Shop::getContext()) { continue; } // Check if field is required if (!Shop::isFeatureActive() && isset($values['required']) && $values['required'] || Shop::isFeatureActive() && isset($_POST['multishopOverrideOption'][$field]) && isset($values['required']) && $values['required']) { if (isset($values['type']) && $values['type'] == 'textLang') { foreach ($languages as $language) { if (($value = Tools::getValue($field . '_' . $language['id_lang'])) == false && (string) $value != '0') { $this->errors[] = sprintf(Tools::displayError('field %s is required.'), $values['title']); } } } elseif (($value = Tools::getValue($field)) == false && (string) $value != '0') { $this->errors[] = sprintf(Tools::displayError('field %s is required.'), $values['title']); } } // Check field validator if (isset($values['type']) && $values['type'] == 'textLang') { foreach ($languages as $language) { if (Tools::getValue($field . '_' . $language['id_lang']) && isset($values['validation'])) { if (!Validate::$values['validation'](Tools::getValue($field . '_' . $language['id_lang']))) { $this->errors[] = sprintf(Tools::displayError('field %s is invalid.'), $values['title']); } } } } elseif (Tools::getValue($field) && isset($values['validation'])) { if (!Validate::$values['validation'](Tools::getValue($field))) { $this->errors[] = sprintf(Tools::displayError('field %s is invalid.'), $values['title']); } } // Set default value if (Tools::getValue($field) === false && isset($values['default'])) { $_POST[$field] = $values['default']; } } if (!count($this->errors)) { foreach ($fields as $key => $options) { if (Shop::isFeatureActive() && isset($options['visibility']) && $options['visibility'] > Shop::getContext()) { continue; } if (!$hide_multishop_checkbox && Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL && empty($options['no_multishop_checkbox']) && empty($_POST['multishopOverrideOption'][$key])) { Configuration::deleteFromContext($key); continue; } // check if a method updateOptionFieldName is available $method_name = 'updateOption' . Tools::toCamelCase($key, true); if (method_exists($this, $method_name)) { $this->{$method_name}(Tools::getValue($key)); } elseif (isset($options['type']) && in_array($options['type'], array('textLang', 'textareaLang'))) { $list = array(); foreach ($languages as $language) { $key_lang = Tools::getValue($key . '_' . $language['id_lang']); $val = isset($options['cast']) ? $options['cast']($key_lang) : $key_lang; if ($this->validateField($val, $options)) { if (Validate::isCleanHtml($val)) { $list[$language['id_lang']] = $val; } else { $this->errors[] = Tools::displayError('Can not add configuration ' . $key . ' for lang ' . Language::getIsoById((int) $language['id_lang'])); } } } Configuration::updateValue($key, $list); } else { $val = isset($options['cast']) ? $options['cast'](Tools::getValue($key)) : Tools::getValue($key); if ($this->validateField($val, $options)) { if (Validate::isCleanHtml($val)) { Configuration::updateValue($key, $val); } else { $this->errors[] = Tools::displayError('Can not add configuration ' . $key); } } } } } } $this->display = 'list'; if (empty($this->errors)) { $this->confirmations[] = $this->_conf[6]; } }
/** * Update options and preferences * * @param string $token */ protected function updateOptions($token) { if ($this->tabAccess['edit'] === '1') { $this->beforeUpdateOptions(); $language_ids = Language::getIDs(false); foreach ($this->optionsList as $category => $categoryData) { $fields = $categoryData['fields']; /* Check required fields */ foreach ($fields as $field => $values) { if (isset($values['required']) && $values['required'] && !empty($_POST['multishopOverrideOption'][$field])) { if (isset($values['type']) && $values['type'] == 'textLang') { foreach ($language_ids as $id_lang) { if (($value = Tools::getValue($field . '_' . $id_lang)) == false && (string) $value != '0') { $this->_errors[] = sprintf(Tools::displayError('field %s is required.'), $values['title']); } } } elseif (($value = Tools::getValue($field)) == false && (string) $value != '0') { $this->_errors[] = sprintf(Tools::displayError('field %s is required.'), $values['title']); } } } /* Check fields validity */ foreach ($fields as $field => $values) { if (isset($values['type']) && $values['type'] == 'textLang') { foreach ($language_ids as $id_lang) { if (Tools::getValue($field . '_' . $id_lang) && isset($values['validation'])) { $values_validation = $values['validation']; if (!Validate::$values_validation(Tools::getValue($field . '_' . $id_lang))) { $this->_errors[] = sprintf(Tools::displayError('field %s is invalid.'), $values['title']); } } } } elseif (Tools::getValue($field) && isset($values['validation'])) { $values_validation = $values['validation']; if (!Validate::$values_validation(Tools::getValue($field))) { $this->_errors[] = sprintf(Tools::displayError('field %s is invalid.'), $values['title']); } } } /* Default value if null */ foreach ($fields as $field => $values) { if (!Tools::getValue($field) && isset($values['default'])) { $_POST[$field] = $values['default']; } } if (!count($this->_errors)) { foreach ($fields as $key => $options) { if (isset($options['visibility']) && $options['visibility'] > Shop::getContext()) { continue; } if (Shop::isFeatureActive() && empty($_POST['multishopOverrideOption'][$key])) { Configuration::deleteFromContext($key); continue; } // check if a method updateOptionFieldName is available $method_name = 'updateOption' . Tools::toCamelCase($key, true); if (method_exists($this, $method_name)) { $this->{$method_name}(Tools::getValue($key)); } elseif (isset($options['type']) && in_array($options['type'], array('textLang', 'textareaLang'))) { $list = array(); foreach ($language_ids as $id_lang) { $val = isset($options['cast']) ? $options['cast'](Tools::getValue($key . '_' . $id_lang)) : Tools::getValue($key . '_' . $id_lang); if ($this->validateField($val, $options)) { if (Validate::isCleanHtml($val)) { $list[$id_lang] = $val; } else { $this->_errors[] = Tools::displayError('Can not add configuration ' . $key . ' for lang ' . Language::getIsoById((int) $id_lang)); } } } Configuration::updateValue($key, $list); } else { $val = isset($options['cast']) ? $options['cast'](Tools::getValue($key)) : Tools::getValue($key); if ($this->validateField($val, $options)) { if (Validate::isCleanHtml($val)) { Configuration::updateValue($key, $val); } else { $this->_errors[] = Tools::displayError('Can not add configuration ' . $key); } } } } } } if (count($this->_errors) <= 0) { Tools::redirectAdmin(self::$currentIndex . '&conf=6&token=' . $token); } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } }
public function api_3_0_oauth2callback() { if (!Tools::getValue('state')) { die('token missing'); } $state = explode('-', Tools::getValue('state')); if (count($state) != 2) { die('token malformed'); } if ($state[1] != Tools::encrypt($state[0] . Configuration::get('PS_GAPI30_CLIENT_ID_TMP'))) { die('token not valid'); } $oauth2callback = 'undefined'; $url = Configuration::get('PS_GAPI30_REQUEST_URI_TMP'); if (Tools::getValue('error')) { $oauth2callback = 'error'; } elseif (Tools::getValue('code')) { Configuration::updateValue('PS_GAPI30_CLIENT_ID', Configuration::get('PS_GAPI30_CLIENT_ID_TMP')); Configuration::updateValue('PS_GAPI30_CLIENT_SECRET', Configuration::get('PS_GAPI30_CLIENT_SECRET_TMP')); Configuration::updateValue('PS_GAPI_PROFILE', Configuration::get('PS_GAPI_PROFILE_TMP')); Configuration::updateValue('PS_GAPI30_AUTHORIZATION_CODE', Tools::getValue('code')); $oauth2callback = 'success'; } Configuration::deleteFromContext('PS_GAPI30_CLIENT_ID_TMP'); Configuration::deleteFromContext('PS_GAPI30_CLIENT_SECRET_TMP'); Configuration::deleteFromContext('PS_GAPI_PROFILE_TMP'); Configuration::deleteFromContext('PS_GAPI30_REQUEST_URI_TMP'); Configuration::deleteFromContext('PS_GAPI30_REFRESH_TOKEN'); Tools::redirectAdmin($url . '&oauth2callback=' . $oauth2callback); }
/** *This method is called when the user sets the API key and hits the submit button. *It adds the necessary configurations for SendinBlue in PrestaShop which allows *PrestaShop to use the SendinBlue settings. */ public function apiKeyPostProcessConfiguration() { // endif User put new key after having old key $this->postValidation(); if (!count($this->post_errors)) { //If the API key is valid, we activate the module, otherwise we deactivate it. $status = trim(Tools::getValue('status')); if (isset($status)) { Configuration::updateValue('Sendin_Api_Key_Status', $status, '', $this->id_shop_group, $this->id_shop); } if ($status == 1) { $apikey = trim(Tools::getValue('apikey')); $res = $this->getResultListValue($apikey); $row_list = Tools::jsonDecode($res); if (!empty($row_list->errorMsg) && $row_list->errorMsg == 'Key Not Found In Database') { //We reset all settings in case the API key is invalid. Configuration::updateValue('Sendin_Api_Key_Status', 0, '', $this->id_shop_group, $this->id_shop); $this->resetDataBaseValue(); $this->resetConfigSendinSmtp($this->id_shop_group, $this->id_shop); $this->redirectPage($this->l('API key is invalid.'), 'ERROR'); } else { //If a user enters a new API key, we remove all records that belongs to the //old API key. $old_api_key = trim(Configuration::get('Sendin_Api_Key', '', $this->id_shop_group, $this->id_shop)); // Old key if ($apikey != $old_api_key) { // Reset data for old key $id_shop_group = !empty($this->id_shop_group) ? $this->id_shop_group : 'NULL'; $id_shop = !empty($this->id_shop) ? $this->id_shop : 'NULL'; if ($id_shop_group === 'NULL' && $id_shop === 'NULL') { Configuration::deleteByName('Sendin_First_Request'); Configuration::deleteByName('Sendin_Subscribe_Setting'); Configuration::deleteByName('Sendin_Tracking_Status'); Configuration::deleteByName('Sendin_Smtp_Result'); Configuration::deleteByName('Sendin_Api_Key'); Configuration::deleteByName('Sendin_Api_Key_Status'); Configuration::deleteByName('Sendin_Api_Smtp_Status'); Configuration::deleteByName('Sendin_Selected_List_Data'); } else { Configuration::deleteFromContext('Sendin_First_Request'); Configuration::deleteFromContext('Sendin_Subscribe_Setting'); Configuration::deleteFromContext('Sendin_Tracking_Status'); Configuration::deleteFromContext('Sendin_Smtp_Result'); Configuration::deleteFromContext('Sendin_Api_Key'); Configuration::deleteFromContext('Sendin_Api_Key_Status'); Configuration::deleteFromContext('Sendin_Api_Smtp_Status'); Configuration::deleteFromContext('Sendin_Selected_List_Data'); } } if (isset($apikey)) { Configuration::updateValue('Sendin_Api_Key', $apikey, '', $this->id_shop_group, $this->id_shop); } if (isset($status)) { Configuration::updateValue('Sendin_Api_Key_Status', $status, '', $this->id_shop_group, $this->id_shop); } $sendin_listdata = Configuration::get('Sendin_Selected_List_Data', '', $this->id_shop_group, $this->id_shop); $sendin_firstrequest = Configuration::get('Sendin_First_Request', '', $this->id_shop_group, $this->id_shop); if (empty($sendin_listdata) && empty($sendin_firstrequest)) { $this->getOldNewsletterEmails(); Configuration::updateValue('Sendin_First_Request', 1, '', $this->id_shop_group, $this->id_shop); Configuration::updateValue('Sendin_Subscribe_Setting', 1, '', $this->id_shop_group, $this->id_shop); Configuration::updateValue('Sendin_Notify_Cron_Executed', 0, '', $this->id_shop_group, $this->id_shop); //We remove the default newsletter block since we //have to add the Sendin newsletter block. $this->restoreBlocknewsletterBlock(); if (empty($old_api_key)) { $this->enableSendinblueBlock(); } $this->createFolderName(); } //We set the default status of SendinBlue SMTP and tracking code to 0 $this->checkSmtpStatus(); Configuration::updateValue('SENDINBLUE_CONFIGURATION_OK', true, '', $this->id_shop_group, $this->id_shop); $this->redirectPage($this->l('Successfully updated'), 'SUCCESS'); } } } else { $err_msg = ''; foreach ($this->post_errors as $err) { $err_msg .= $err; } $this->redirectPage($this->l($err_msg), 'ERROR'); } }