Please or Register to create posts and topics.

Hide uploads from logged in users with conditions

Hi,

I’m trying to complete the behaviour of  the functionality “hide_uploads_from_guests” by adding another case :
If a user is logged in but does not have a special permission (thanks to a membership), so he can’t see the uploaded files.

That is working in ‘forum-uploads.php’, after this IF

if (!is_user_logged_in() && $this->asgarosforum->options['hide_uploads_from_guests'])

by adding the following ELSEIF (including the permission check) :

elseif (is_user_logged_in() && $this->asgarosforum->options['hide_uploads_from_guests'] && [[SPECIAL-USER-PERMISSION]]) {

$uploadedFiles .= '<li>'.__('Please <a href="/link-to-upgrade">UPGRADE</a>.', 'asgaros-forum').'</li>';

Instead of the uploaded files, it displays “Please UPGRADE” with a link to the upgrade page.

In this case, the problem is that every uploaded files are hidden, even those uploaded by the current user. The current user should be able to see his own uploaded files.

I tried this, by adding in the ELSEIF another condition : When the current user browses another user’s posts, he can’t see the uploaded files.

elseif (is_user_logged_in() && $this->asgarosforum->options['hide_uploads_from_guests'] && [[SPECIAL-USER-PERMISSION]] && (get_current_user_id() != $author_id=$post->post_author)) { 

$uploadedFiles .= '<li>'.__('Please <a href="/link-to-upgrade">UPGRADE</a>.', 'asgaros-forum').'</li>';

But it does not work. I guess the code is incorrect :

&& (get_current_user_id() != $author_id=$post->post_author)

Could you help me please ?

How to show to the current user only his own uploaded files when he browses the forum ? Ideally just by editing the ELSEIF I’ve described.

Thanks a lot in advance,
Al.

The full function for the context :

public function show_uploaded_files($post_id, $post_uploads) {
  $path = $this->upload_path.$post_id.'/';
      $url = $this->upload_url.$post_id.'/';
      $uploads = maybe_unserialize($post_uploads);
      $uploadedFiles = '';
  $output = '';

      if (!empty($uploads) && is_dir($path)) {
    // Generate special message instead of file-list when hiding uploads for guests.
    
    if (!is_user_logged_in() && $this->asgarosforum->options['hide_uploads_from_guests']) {
      $uploadedFiles .= '<li>'.__('You need to login to have access to uploads.', 'asgaros-forum').'</li>';
    } 


                     elseif... (see code above)


                     else {
      foreach ($uploads as $upload) {
                if (is_file($path.wp_basename($upload))) {
          $file_extension = strtolower(pathinfo($path.wp_basename($upload), PATHINFO_EXTENSION));
          $imageThumbnail = ($this->asgarosforum->options['uploads_show_thumbnails'] && $file_extension !== 'pdf') ? wp_get_image_editor($path.wp_basename($upload)) : false;

          $uploadedFiles .= '<li class="uploaded-file">';

          if ($imageThumbnail && !is_wp_error($imageThumbnail)) {
            $uploadedFiles .= '<a href="'.$url.utf8_uri_encode($upload).'" target="_blank"><img class="resize" src="'.$url.utf8_uri_encode($upload).'" alt="'.$upload.'"></a>';
          } else {
            $uploadedFiles .= '<a href="'.$url.utf8_uri_encode($upload).'" target="_blank">'.$upload.'</a>';
          }

          $uploadedFiles .= '</li>';
                }
            }
    }

    if (!empty($uploadedFiles)) {
              $output .= '<strong class="uploaded-files-title">'.__('Uploaded files:', 'asgaros-forum').'</strong>';
              $output .= '<ul>'.$uploadedFiles.'</ul>';
    }
      }

  return $output;
  }

I hope there’s nothing to change into the ‘ELSE’…

Thank you for your help.
Al.

 

Hi @asgaros (and @qualmy91 as you’re a strong Asgaros Forum partner / contributor), if you have any concrete idea how to do, I’m available to discuss it. Tschüss !