PageRenderTime 32ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/wp-content/plugins/wp-all-export-pro/controllers/admin/settings.php

https://bitbucket.org/brunonooo/dance-naturals
PHP | 295 lines | 190 code | 80 blank | 25 comment | 45 complexity | 3a7b9f2ef8c472511493fa41f46de0e2 MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause, MIT, Apache-2.0
  1. <?php
  2. /**
  3. * Admin Statistics page
  4. *
  5. * @author Pavel Kulbakin <p.kulbakin@gmail.com>
  6. */
  7. class PMXE_Admin_Settings extends PMXE_Controller_Admin
  8. {
  9. public $slug = 'wp-all-export-pro';
  10. /** @var \Wpae\App\Service\License\LicenseActivator */
  11. private $licenseActivator;
  12. protected function init()
  13. {
  14. $this->licenseActivator = new \Wpae\App\Service\License\LicenseActivator();
  15. }
  16. public function index()
  17. {
  18. $this->data['post'] = $post = $this->input->post(PMXE_Plugin::getInstance()->getOption());
  19. if ($this->input->post('is_settings_submitted')) { // save settings form
  20. check_admin_referer('edit-settings', '_wpnonce_edit-settings');
  21. if (!$this->errors->get_error_codes()) { // no validation errors detected
  22. PMXE_Plugin::getInstance()->updateOption($post);
  23. if (empty($_POST['pmxe_license_activate']) and empty($_POST['pmxe_license_deactivate'])) {
  24. $post['license_status'] = $this->check_license();
  25. PMXE_Plugin::getInstance()->updateOption($post);
  26. }
  27. isset($_POST['pmxe_license_activate']) and $this->activate_licenses();
  28. wp_redirect(add_query_arg('pmxe_nt', urlencode(__('Settings saved', 'wp_all_export_plugin')), $this->baseUrl));
  29. die();
  30. }
  31. }
  32. if ($this->input->post('is_license_submitted')) { // save license
  33. check_admin_referer('edit-license', '_wpnonce_edit-license');
  34. if (!$this->errors->get_error_codes()) { // no validation errors detected
  35. PMXE_Plugin::getInstance()->updateOption($post);
  36. if (empty($_POST['pmxe_license_activate']) and empty($_POST['pmxe_license_deactivate'])) {
  37. $post['license_status'] = $this->check_license();
  38. if ($post['license_status'] == 'valid') {
  39. $this->data['license_message'] = __('License activated.', 'wp_all_import_plugin');
  40. }
  41. PMXE_Plugin::getInstance()->updateOption($post);
  42. }
  43. isset($_POST['pmxe_license_activate']) and $this->activate_licenses();
  44. }
  45. $this->data['post'] = $post = PMXE_Plugin::getInstance()->getOption();
  46. }
  47. if ($this->input->post('is_scheduling_license_submitted')) {
  48. check_admin_referer('edit-license', '_wpnonce_edit-scheduling-license');
  49. if (!$this->errors->get_error_codes()) { // no validation errors detected
  50. PMXE_Plugin::getInstance()->updateOption($post);
  51. if (empty($_POST['pmxe_scheduling_license_activate']) and empty($_POST['pmxe_scheduling_license_deactivate'])) {
  52. $post['scheduling_license_status'] = $this->check_scheduling_license();
  53. if ($post['scheduling_license_status'] == 'valid') {
  54. $this->data['scheduling_license_message'] = __('License activated.', 'wp_all_import_plugin');
  55. }
  56. PMXE_Plugin::getInstance()->updateOption($post);
  57. if(class_exists('PMXI_Plugin')) {
  58. if(method_exists('PMXI_Plugin', 'getSchedulingName')) {
  59. if(!empty($post['scheduling_license'])) {
  60. $schedulingLicenseData = array();
  61. $schedulingLicenseData['scheduling_license_status'] = $post['scheduling_license_status'];
  62. $schedulingLicenseData['scheduling_license'] = $post['scheduling_license'];
  63. PMXI_Plugin::getInstance()->updateOption($schedulingLicenseData);
  64. }
  65. }
  66. }
  67. $this->activate_scheduling_licenses();
  68. }
  69. }
  70. $this->data['post'] = $post = PMXE_Plugin::getInstance()->getOption();
  71. }
  72. $post['scheduling_license_status'] = $this->check_scheduling_license();
  73. $this->data['is_license_active'] = false;
  74. if (!empty($post['license_status']) && $post['license_status'] == 'valid') {
  75. $this->data['is_license_active'] = true;
  76. }
  77. $this->data['is_scheduling_license_active'] = false;
  78. if (!empty($post['scheduling_license_status']) && $post['scheduling_license_status'] == 'valid') {
  79. $this->data['is_scheduling_license_active'] = true;
  80. }
  81. if ($this->input->post('is_templates_submitted')) { // delete templates form
  82. check_admin_referer('delete-templates', '_wpnonce_delete-templates');
  83. if ($this->input->post('import_templates')) {
  84. if (!empty($_FILES)) {
  85. $file_name = $_FILES['template_file']['name'];
  86. $file_size = $_FILES['template_file']['size'];
  87. $tmp_name = $_FILES['template_file']['tmp_name'];
  88. if (isset($file_name)) {
  89. $filename = stripslashes($file_name);
  90. $extension = strtolower(pmxe_getExtension($filename));
  91. if (($extension != "txt")) {
  92. $this->errors->add('form-validation', __('Unknown File extension. Only txt files are permitted', 'wp_all_export_plugin'));
  93. } else {
  94. $import_data = @file_get_contents($tmp_name);
  95. if (!empty($import_data)) {
  96. $templates_data = json_decode($import_data, true);
  97. if (!empty($templates_data)) {
  98. $templateOptions = empty($templates_data[0]['options']) ? false : unserialize($templates_data[0]['options']);
  99. if (empty($templateOptions)) {
  100. $this->errors->add('form-validation', __('The template is invalid. Options are missing.', 'wp_all_export_plugin'));
  101. } else {
  102. if (!isset($templateOptions['is_user_export'])) {
  103. $this->errors->add('form-validation', __('The template you\'ve uploaded is intended to be used with WP All Import plugin.', 'wp_all_export_plugin'));
  104. } else {
  105. $template = new PMXE_Template_Record();
  106. foreach ($templates_data as $template_data) {
  107. unset($template_data['id']);
  108. $template->clear()->set($template_data)->insert();
  109. }
  110. wp_redirect(add_query_arg('pmxe_nt', urlencode(sprintf(_n('%d template imported', '%d templates imported', count($templates_data), 'wp_all_export_plugin'), count($templates_data))), $this->baseUrl));
  111. die();
  112. }
  113. }
  114. } else $this->errors->add('form-validation', __('Wrong imported data format', 'wp_all_export_plugin'));
  115. } else $this->errors->add('form-validation', __('File is empty or doesn\'t exests', 'wp_all_export_plugin'));
  116. }
  117. } else $this->errors->add('form-validation', __('Undefined entry!', 'wp_all_export_plugin'));
  118. } else $this->errors->add('form-validation', __('Please select file.', 'wp_all_export_plugin'));
  119. } else {
  120. $templates_ids = $this->input->post('templates', array());
  121. if (empty($templates_ids)) {
  122. $this->errors->add('form-validation', __('Templates must be selected', 'wp_all_export_plugin'));
  123. }
  124. if (!$this->errors->get_error_codes()) { // no validation errors detected
  125. if ($this->input->post('delete_templates')) {
  126. $template = new PMXE_Template_Record();
  127. foreach ($templates_ids as $template_id) {
  128. $template->clear()->set('id', $template_id)->delete();
  129. }
  130. wp_redirect(add_query_arg('pmxe_nt', urlencode(sprintf(_n('%d template deleted', '%d templates deleted', count($templates_ids), 'wp_all_export_plugin'), count($templates_ids))), $this->baseUrl));
  131. die();
  132. }
  133. if ($this->input->post('export_templates')) {
  134. $export_data = array();
  135. $template = new PMXE_Template_Record();
  136. foreach ($templates_ids as $template_id) {
  137. $export_data[] = $template->clear()->getBy('id', $template_id)->toArray(TRUE);
  138. }
  139. $uploads = wp_upload_dir();
  140. $targetDir = $uploads['basedir'] . DIRECTORY_SEPARATOR . PMXE_Plugin::TEMP_DIRECTORY;
  141. $export_file_name = "templates_" . uniqid() . ".txt";
  142. file_put_contents($targetDir . DIRECTORY_SEPARATOR . $export_file_name, json_encode($export_data));
  143. PMXE_download::csv($targetDir . DIRECTORY_SEPARATOR . $export_file_name);
  144. }
  145. }
  146. }
  147. }
  148. $this->render();
  149. }
  150. public function dismiss()
  151. {
  152. PMXE_Plugin::getInstance()->updateOption("dismiss", 1);
  153. exit('OK');
  154. }
  155. /*
  156. *
  157. * Activate licenses for main plugin and all premium addons
  158. *
  159. */
  160. protected function activate_licenses()
  161. {
  162. // listen for our activate button to be clicked
  163. if (isset($_POST['pmxe_license_activate'])) {
  164. // retrieve the license from the database
  165. $options = PMXE_Plugin::getInstance()->getOption();
  166. global $wpdb;
  167. delete_transient(PMXE_Plugin::$cache_key);
  168. $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", $this->slug . '_' . PMXE_Plugin::$cache_key) );
  169. $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", $this->slug . '_timeout_' . PMXE_Plugin::$cache_key) );
  170. delete_site_transient('update_plugins');
  171. $this->licenseActivator->activateLicense(PMXE_Plugin::getEddName(), \Wpae\App\Service\License\LicenseActivator::CONTEXT_PMXE);
  172. }
  173. }
  174. /*
  175. *
  176. * Activate licenses for main plugin and all premium addons
  177. *
  178. */
  179. protected function activate_scheduling_licenses()
  180. {
  181. // listen for our activate button to be clicked
  182. global $wpdb;
  183. delete_transient(PMXE_Plugin::$cache_key);
  184. $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", $this->slug . '_' . PMXE_Plugin::$cache_key) );
  185. $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", $this->slug . '_timeout_' . PMXE_Plugin::$cache_key) );
  186. delete_site_transient('update_plugins');
  187. // retrieve the license from the database
  188. return $this->licenseActivator->activateLicense(PMXE_Plugin::getSchedulingName(),\Wpae\App\Service\License\LicenseActivator::CONTEXT_SCHEDULING);
  189. return false;
  190. }
  191. /*
  192. *
  193. * Check plugin's license
  194. *
  195. */
  196. public function check_license()
  197. {
  198. global $wpdb;
  199. delete_transient(PMXE_Plugin::$cache_key);
  200. $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", $this->slug . '_' . PMXE_Plugin::$cache_key) );
  201. $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", $this->slug . '_timeout_' . PMXE_Plugin::$cache_key) );
  202. delete_site_transient('update_plugins');
  203. $options = PMXE_Plugin::getInstance()->getOption();
  204. return $this->licenseActivator->checkLicense(PMXE_Plugin::getEddName(), $options, \Wpae\App\Service\License\LicenseActivator::CONTEXT_PMXE);
  205. }
  206. public function check_scheduling_license()
  207. {
  208. $options = PMXE_Plugin::getInstance()->getOption();
  209. global $wpdb;
  210. delete_transient(PMXE_Plugin::$cache_key);
  211. $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", $this->slug . '_' . PMXE_Plugin::$cache_key) );
  212. $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name = %s", $this->slug . '_timeout_' . PMXE_Plugin::$cache_key) );
  213. return $this->licenseActivator->checkLicense(PMXE_Plugin::getSchedulingName(), $options, \Wpae\App\Service\License\LicenseActivator::CONTEXT_SCHEDULING);
  214. }
  215. }