Jump to content

Community

Template Error (OutOfRangeException::0)


Gesundheit
 Share

Go to solution Solved by bfarber,

Recommended Posts

Hello,

I'm using:

{{if request.module == 'forums' && request.controller == 'topic'}}
{{$topic = \IPS\forums\Topic::loadAndCheckPerms( \IPS\Request::i()->id );}}
{{$forumid = $topic->container()->id;}} forum-{$forumid}
{{endif}}

in globalTemplate to get the forum ID for styling purposes. It does its job, however, if users view topics they lack access to, they're presented with a:

[[Template core/front/global/globalTemplate is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

which logs as a template error:

OutOfRangeException::0

 

Link to comment
Share on other sites

You're using loadAndCheckPerms() so naturally if the user does not have access then they will run into an error. You can try something like this instead:

{{ try{ $forumId = \IPS\forums\Forum::loadAndCheckPerms( \IPS\Request::i()->id )->_id; } catch( \OutOfRangeException $e ){ $forumId = 0; } }}

 

Link to comment
Share on other sites

19 minutes ago, bfarber said:

You're using loadAndCheckPerms() so naturally if the user does not have access then they will run into an error. You can try something like this instead:


{{ try{ $forumId = \IPS\forums\Forum::loadAndCheckPerms( \IPS\Request::i()->id )->_id; } catch( \OutOfRangeException $e ){ $forumId = 0; } }}

  

I tried:

{{if request.module == 'forums' && request.controller == 'topic'}}
{{$topic = \IPS\forums\Topic::loadAndCheckPerms( \IPS\Request::i()->id );}}
{{ try{ $forumId = $topic->container()->id; } catch( \OutOfRangeException $e ){ $forumId = 0; } }}
 forum-{$forumId}
{{endif}}

but it's still giving unauthorized users a template error.

Link to comment
Share on other sites

  • Solution
6 minutes ago, Gesundheit said:

I tried:


{{if request.module == 'forums' && request.controller == 'topic'}}
{{$topic = \IPS\forums\Topic::loadAndCheckPerms( \IPS\Request::i()->id );}}
{{ try{ $forumId = $topic->container()->id; } catch( \OutOfRangeException $e ){ $forumId = 0; } }}
 forum-{$forumId}
{{endif}}

but it's still giving unauthorized users a template error.

The line calling loadAndCheckPerms() needs to be wrapped in the try/catch, as that's where the error is thrown.

{{if request.module == 'forums' && request.controller == 'topic'}}
{{ try{ $forumId = \IPS\forums\Topic::loadAndCheckPerms( \IPS\Request::i()->id )->container()->id; } catch( \OutOfRangeException $e ){ $forumId = 0; } }}
 forum-{$forumId}
{{endif}}

 

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We use technologies, such as cookies, to customise content and advertising, to provide social media features and to analyse traffic to the site. We also share information about your use of our site with our trusted social media, advertising and analytics partners. See more about cookies and our Privacy Policy