vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   How to return error phrase in attachdata_presave hook? (https://vborg.vbsupport.ru/showthread.php?t=278105)

JamesAB 02-06-2012 02:16 AM

kh99,
I'm glad you could duplicate the issue.

My gut feeling is that it is in issue with using the data manager, but I'm open to any suggestions.

kh99 02-06-2012 02:59 AM

Yeah, it's caused by this code in class_upload.php (around line 957):

Code:

if (!($result = $this->data->save()))
{
        if (empty($this->data->errors[0]) OR !($this->registry->userinfo['permissions']['adminpermissions'] & $this->registry->bf_ugp_adminpermissions['cancontrolpanel']))
        {
                $this->set_error('upload_file_failed');
        }
        else
        {
                $this->error =& $this->data->errors[0];
        }
}


For some reason if you're not an admin it doesn't use the errors from the attachment object.

JamesAB 02-06-2012 03:12 AM

Thanks so much for finding that. It makes sense now why it it is a usergroup problem. I'm guessing the VB developers didn't want to show more descriptive error messages to anyone except admin users.

Now I just need to find the most sensible workaround to show other usergroups my phrase in this scenario.

Thanks again,
James

kh99 02-06-2012 03:24 AM

I knew that wasn't really going to be a lot of help in fixing the problem. :) Anyway, I was thinking maybe upload_accept, although i'm not sure if the file data is in a variable at that point.

JamesAB 02-06-2012 04:03 AM

I'm looking at upload_accept, but it doesn't look like the filehash has been created yet and I don't think I have the file data yet to create one myself. I'll keep digging.

Thanks,
James

--------------- Added [DATE]1328546156[/DATE] at [TIME]1328546156[/TIME] ---------------

Quote:

Originally Posted by kh99 (Post 2296655)
Yeah, it's caused by this code in class_upload.php (around line 957):

Code:

if (!($result = $this->data->save()))
{
        if (empty($this->data->errors[0]) OR !($this->registry->userinfo['permissions']['adminpermissions'] & $this->registry->bf_ugp_adminpermissions['cancontrolpanel']))
        {
                $this->set_error('upload_file_failed');
        }
        else
        {
                $this->error =& $this->data->errors[0];
        }
}


For some reason if you're not an admin it doesn't use the errors from the attachment object.

I hate editing more standard VB files for mods, but I think a quick change in class_upload.php might be the best fix.

This works:
Code:

                if (!($result = $this->data->save()))
                {
                        echo "<script>alert('class_upload error ". $this->data->errors[0] ."')</script>";
                        if (empty($this->data->errors[0]) OR !($this->registry->userinfo['permissions']['adminpermissions'] & $this->registry->bf_ugp_adminpermissions['cancontrolpanel']) AND ($this->data->errors[0] != "This file is not allowed to be uploaded on our website."))
                        {
                                $this->set_error('upload_file_failed');
                        }
                        else
                        {
                                $this->error =& $this->data->errors[0];
                        }
                }

However, I know I shouldn't use the string literal here. How can I get the text of the phrase jb_file_not_allowed_here to use in the comparison here in class_upload.php ?

Thanks,
James


All times are GMT. The time now is 09:43 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01096 seconds
  • Memory Usage 1,728KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (5)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete