Browse Source

qdr-temporary-shared-storage: rermalink changes (not working propertly yet)

Dalibor Votruba 1 year ago
parent
commit
26aa8fa588

+ 1 - 1
qdr-temporary-shared-storage/admin/class-qdr-tss-media-page.php

@@ -194,7 +194,7 @@ class QDR_TSS_Media_Page {
      *
      * @since    1.0.0
      */
-    public function ajax_get_item_details() {
+   public function ajax_get_item_details() {
         // Check nonce
         if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'qdr_tss_nonce')) {
             wp_send_json_error(array('message' => __('Security check failed.', 'qdr-temporary-shared-storage')));

+ 7 - 0
qdr-temporary-shared-storage/includes/class-qdr-tss-activator.php

@@ -61,6 +61,13 @@ class QDR_TSS_Activator {
         // Set version number in database
         update_option('qdr_tss_version', QDR_TSS_VERSION);
         
+        // Add rewrite rules
+        add_rewrite_rule(
+            '^shared-file-download/([a-zA-Z0-9]+)/?$',
+            'index.php?pagename=shared-file-download&qdr_file_id=$matches[1]',
+            'top'
+        );
+        
         // Clear permalinks
         flush_rewrite_rules();
     }

+ 5 - 1
qdr-temporary-shared-storage/includes/class-qdr-tss.php

@@ -203,7 +203,7 @@ class QDR_TSS {
      * @since    1.0.0
      * @access   private
      */
-    private function define_public_hooks() {
+   private function define_public_hooks() {
         $plugin_public = new QDR_TSS_Public($this->get_plugin_name(), $this->get_version());
         $plugin_shortcode = new QDR_TSS_Shortcode($this->get_plugin_name(), $this->get_version());
         $plugin_download = new QDR_TSS_Download($this->get_plugin_name(), $this->get_version());
@@ -212,6 +212,10 @@ class QDR_TSS {
         $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_styles');
         $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_scripts');
         $this->loader->add_action('init', $plugin_public, 'create_download_page');
+        
+        // Add rewrite rules
+        $this->loader->add_action('init', $plugin_public, 'add_rewrite_rules');
+        $this->loader->add_filter('query_vars', $plugin_public, 'add_query_vars');
 
         // Shortcode registration
         $this->loader->add_action('init', $plugin_shortcode, 'register_shortcodes');

+ 5 - 2
qdr-temporary-shared-storage/public/class-qdr-tss-download.php

@@ -64,17 +64,20 @@ class QDR_TSS_Download {
      * @param    array    $atts    Shortcode attributes.
      * @return   string            Download form or file download.
      */
-    public function process_download_request($atts) {
+public function process_download_request($atts) {
         // Extract attributes
         $atts = shortcode_atts(array(
             'id' => null,
         ), $atts, 'qdr_tss_download');
         
-        // Get fileid from shortcode attribute or URL parameter
+        // Get fileid from shortcode attribute, URL parameter, or query var
         $fileid = $atts['id'];
         if (!$fileid && isset($_GET['id'])) {
             $fileid = sanitize_text_field($_GET['id']);
         }
+        if (!$fileid) {
+            $fileid = get_query_var('qdr_file_id', '');
+        }
         
         // If no fileid, show form to enter fileid, password and reference
         if (!$fileid) {

+ 26 - 1
qdr-temporary-shared-storage/public/class-qdr-tss-public.php

@@ -82,7 +82,7 @@ class QDR_TSS_Public {
      *
      * @since    1.0.0
      */
-    public function create_download_page() {
+     public function create_download_page() {
         $download_page = get_page_by_path('shared-file-download');
         if (!$download_page) {
             wp_insert_post(array(
@@ -94,4 +94,29 @@ class QDR_TSS_Public {
             ));
         }
     }
+
+      /**
+     * Add rewrite rules for pretty download URLs
+     *
+     * @since    1.0.0
+     */
+    public function add_rewrite_rules() {
+        add_rewrite_rule(
+            '^shared-file-download/([a-zA-Z0-9]+)/?$',
+            'index.php?pagename=shared-file-download&qdr_file_id=$matches[1]',
+            'top'
+        );
+    }
+
+    /**
+     * Add query vars
+     *
+     * @since    1.0.0
+     * @param    array    $vars    The array of query vars.
+     * @return   array             The modified array of query vars.
+     */
+    public function add_query_vars($vars) {
+        $vars[] = 'qdr_file_id';
+        return $vars;
+    }
 }