PHP 8.0.30
Preview: unitecreator_import_changelog.class.php Size: 4.84 KB
/home/certprox/test.certproxywizard.com/wp-content/plugins/unlimited-elements-for-elementor/inc_php/unitecreator_import_changelog.class.php

<?php
/**
 * @package Unlimited Elements
 * @author unlimited-elements.com
 * @copyright (C) 2021 Unlimited Elements, All Rights Reserved.
 * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 * */
if ( ! defined( 'ABSPATH' ) ) exit;

class UniteCreatorImportExportChangelog{

	/**
	 *  Export Changelog.
	 *
	 * @return void
	 */
	public function exportChangelog($typeExport) {
		
		global $wpdb;


		$changelogTable = UniteFunctionsWPUC::prefixDBTable(GlobalsUC::TABLE_CHANGELOG_NAME);
		$addonsTable = GlobalsUc::$table_addons;

		$query = "
            SELECT changelog.type, changelog.text, changelog.plugin_version, changelog.created_at, addons.name 
                AS addon_name  
              FROM $changelogTable 
                AS changelog
         LEFT JOIN $addonsTable 
                AS addons
                ON changelog.addon_id = addons.id
        ";

		// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
		$items = $wpdb->get_results($query);

		$arrayItems = array();

		foreach($items as $item){
			$arrayItems[] = $item;
		}

		$filename = "changelog-" . current_time("mysql") . ".json";
		$content  = json_encode($arrayItems);

		if($typeExport == 'export-file')
			UniteFunctionsUC::downloadJson($filename, $content);

		if($typeExport == 'export-json')
			uelm_echo($content);
		
	}


	/**
	 *  Import Changelog.
	 *
	 * @return void
	 */
	public function importChangelog() {
		$nonce = UniteFunctionsUC::getPostGetVariable("nonce", "", UniteFunctionsUC::SANITIZE_NOTHING);
		$urlViewImport = HelperUC::getViewUrl(GlobalsUnlimitedElements::VIEW_CHANGELOG_IMPORT);

		//check nonce

		$hasPermissions = UniteFunctionsWPUC::isCurrentUserHasPermissions();

		$isNonceValid = wp_verify_nonce($nonce, 'import_json_changelog_action');

		if ($hasPermissions == false || $isNonceValid == false) {

			$this->processImportJsonAction_error("Security check failed or insufficient permissions.", "unlimited-elements-for-elementor");

			return(false);
		}

		//check that data is valid

		if (empty($_FILES['json_file']['tmp_name']) || $_FILES['json_file']['type'] !== 'application/json') {

			$this->processImportJsonAction_error(__("Invalid file or upload error.", "unlimited-elements-for-elementor"));

			return(false);
		}

		$jsonData = UniteFunctionsUC::fileGetContents($_FILES['json_file']['tmp_name']);

		$decodedData = json_decode($jsonData, true);

		if(empty($decodedData))
			$this->processImportJsonAction_error(__("Invalid JSON data found", "unlimited-elements-for-elementor"));

		$success = $this->processRecordChangelogAction($decodedData);

		if($success == false)
			$this->processImportJsonAction_error(__("Import processing failed", "unlimited-elements-for-elementor"));


		//if all ok, show success data

		set_transient("uc_changelog_import_success", __("Change Log imported successfully!", "unlimited-elements-for-elementor"), 30);

		wp_redirect($urlViewImport);
	}

	/**
	 * Process the record changelog json action.
	 *
	 * @return void
	 */

	public function processRecordChangelogAction($data){

		$isChangelogImportDisabled = HelperProviderUC::isAddonChangelogImportDisabled();
		if($isChangelogImportDisabled){
			echo esc_attr(__( "The import operation disabled in the general settings.", "unlimited-elements-for-elementor" ));
			exit;
		}


		global $wpdb;

		if(empty($data))
			return(false);

		$objAddons = new UniteCreatorAddons();
		$addons = $objAddons->getArrAddonsShort('', array(), GlobalsUC::ADDON_TYPE_ELEMENTOR);

		$arrAddonsAssoc = array();

		//prepare assoc array of addons

		foreach ($addons as $addon) {

			$arrAddonsAssoc[$addon["name"]] = array(
				'id' => $addon['id'],
				'title' => $addon['title']
			);

		}

		$changelogTable = UniteFunctionsWPUC::prefixDBTable(GlobalsUC::TABLE_CHANGELOG_NAME);

		//delete the table

		$wpdb->query("TRUNCATE TABLE {$changelogTable}");
		
		$adminUserID = get_current_user_id();
		
		foreach ($data as $item) {

			$addon = UniteFunctionsUC::getVal($arrAddonsAssoc, $item['addon_name']);

			if(empty($addon))
				continue;

			$data_to_insert = array(
				'addon_id'       => $addon['id'],
				'user_id'        => $adminUserID,
				'type'           => $item['type'],
				'text'           => $item['text'],
				'plugin_version' => $item['plugin_version'],
				'created_at'     => $item['created_at'],
				'addon_title'    => $addon['title']
			);

			$wpdb->insert($changelogTable, $data_to_insert);
		}

		return true;
	}


	/**
	 * set error message
	 */
	private function processImportJsonAction_error($errorMessage){

		$keyError = "uc_changelog_import_error";
		$urlViewImport = HelperUC::getViewUrl(GlobalsUnlimitedElements::VIEW_CHANGELOG_IMPORT);

		set_transient($keyError, $errorMessage, 30);
		wp_redirect($urlViewImport);
	}

}

Directory Contents

Dirs: 5 × Files: 43

Name Size Perms Modified Actions
- drwxr-xr-x 2026-03-06 14:07:45
Edit Download
framework DIR
- drwxr-xr-x 2026-03-06 14:07:46
Edit Download
layouts DIR
- drwxr-xr-x 2026-03-06 14:07:46
Edit Download
manager DIR
- drwxr-xr-x 2026-03-06 14:07:46
Edit Download
plugins DIR
- drwxr-xr-x 2026-03-06 14:07:46
Edit Download
0 B lrw-r--r-- 2026-03-06 14:07:46
Edit Download
23.25 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
78.50 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
46.33 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
9.19 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
5.25 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
5.85 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
6.05 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
14.47 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
55.40 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
40.10 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
11.32 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
19.25 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
30.78 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
23.56 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
10.15 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
13.16 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
1.60 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
64.92 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
14.96 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
37.29 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
1.58 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
88.12 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
55.69 KB lrw-r--r-- 2026-03-06 14:07:46
Edit Download
11.59 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
44.11 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
34.12 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
4.84 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
4.39 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
26.69 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
111.62 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
23.60 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
9.58 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
56.63 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
20.23 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
48.70 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
57.64 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
40.78 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
48.07 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
36.22 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
4.96 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
34.40 KB lrw-r--r-- 2026-03-06 14:07:47
Edit Download
287 B lrw-r--r-- 2026-03-06 14:07:47
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).