vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   conditional won't work together but work's split up? (https://vborg.vbsupport.ru/showthread.php?t=78157)

sabret00the 03-15-2005 12:17 PM

conditional won't work together but work's split up?
 
PHP Code:

if ($postinfo['userid'] != $bbuserinfo[userid] AND !$grps_permissions['groupspostedit']) OR (!$grps_permissions['groupsmoderater']))
{
    
print_no_permission();


i can't figure out what's wrong with it :(

Marco van Herwaarden 03-15-2005 12:38 PM

Should that OR be an AND?

neocorteqz 03-15-2005 12:50 PM

Quote:

Originally Posted by MarcoH64
Should that OR be an AND?

I thought it was just OR, but then again I'm still learning php. :)

and is he not missing a ( at the beginning.

should be

PHP Code:

if (($postinfo['userid'] != $bbuserinfo[userid] AND !$grps_permissions['groupspostedit']) OR (!$grps_permissions['groupsmoderater']))
{
    
print_no_permission();


I'm sure it was just a typo.

Marco van Herwaarden 03-15-2005 01:15 PM

YEs you are right, he is also missing a leading (. He would get a syntax error on that.

sabret00the 03-15-2005 01:17 PM

yeah that was a typo from where i reconstructed the two conditionals to make em once

but php
PHP Code:

if ($postinfo['userid'] != $bbuserinfo[userid] AND !$grps_permissions['groupspostedit']) 

works

and
PHP Code:

if (!$grps_permissions['groupsmoderater']) 

works but when you combine em

PHP Code:

if (($postinfo['userid'] != $bbuserinfo[userid] AND !$grps_permissions['groupspostedit']) OR (!$grps_permissions['groupsmoderater']))
{
    
print_no_permission();


don't :( it just shows the no_permission screen :(

Marco van Herwaarden 03-15-2005 01:27 PM

Like i said......change the OR to AND

sabret00the 03-15-2005 01:47 PM

the OR is supposed to be an AND though

basically if the userid is not the same as your userid and you don't have the usergroup permission anyway then show no permission and the second bit is if you're not a moderator then show no permission, so both are independant.

Marco van Herwaarden 03-15-2005 02:08 PM

Well if you combine 2 (or more) NOT '!' conditions they will get related.

Example of what you want:
1. If you are not the poster AND not have rights to edit (this will mean that if you are the poster, but don't have the right to edit (your own post) you still can edit):
PHP Code:

(($postinfo['userid'] != $bbuserinfo[userid] AND !$grps_permissions['groupspostedit']) 

Let's see what can happen:
- I am the poster, and i have rights to edit. The above is NOT true, so no error msg.
- I am the poster, and i have NO rights to edit. The above is NOT true (the first part of the condition is false), so no error msg.
- I am NOT the poster, and i have rights to edit. The above is NOT true, so no error msg.
- I am the NOT poster, and i have NO rights to edit. The above is true, so i get a no permission page.

Now the second part:
PHP Code:

(!$grps_permissions['groupsmoderater']) 

I guess what we want here is that a moderator (spelling mistake in the permission??) can always edit, no matter if he made the post himself. If not combined with other conditions this would be ok. But now let's see what happens if we combine:

PHP Code:

(($postinfo['userid'] != $bbuserinfo[userid] AND !$grps_permissions['groupspostedit']) OR (!$grps_permissions['groupsmoderater'])) 

Let's call the 3 conditions here 'post_user != cur_user', 'C2' and 'C3', so we could write:
PHP Code:

((post_user != cur_user AND !C2) OR (!C3)) 

We can have the following now:
- User is same, C2 is TRUE (making the test false!!!), and C3 is FALSE(he is not a moderator, making this test true. So we have here a user, who made this post, have edit rights and is not a moderator, this would result in:
1. post_user != cur_user......FALSE (the user is the same)
2. !C2....FALSE (the user has permission to edit)
3. !C3....TRUE (the user is not a moderator)
this will result in:
Code:

((FALSE AND FALSE) OR (TRUE))
this equals to:
Code:

(FALSE OR TRUE)
this equals to:
Code:

TRUE
what you probably need it the following:
PHP Code:

( !($postinfo['userid'] == $bbuserinfo[userid] AND $grps_permissions['groupspostedit']) AND (!$grps_permissions['groupsmoderater'])) 


sabret00the 03-15-2005 02:28 PM

Let's see what can happen:
- I am the poster, and i have rights to edit. The above is NOT true, so no error msg. correct and working as intended
- I am the poster, and i have NO rights to edit. The above is NOT true (the first part of the condition is false), so no error msg. incorrect should see error message
- I am NOT the poster, and i have rights to edit. The above is NOT true, so no error msg. correct and working as intended
- I am the NOT poster, and i have NO rights to edit. The above is true, so i get a no permission page. correct and working as intended

I guess what we want here is that a moderator (spelling mistake in the permission??) can always edit, no matter if he made the post himself. If not combined with other conditions this would be ok. But now let's see what happens if we combine: correct so far

PHP Code:

( !($postinfo['userid'] == $bbuserinfo[userid] AND $grps_permissions['groupspostedit']) AND (!$grps_permissions['groupsmoderater'])) 

here i'm lost because, a user should be able to edit their own posts without being a moderator, however a moderator should be able to edit any post without being the original poster, but your code says they can't be a moderator?

so bascially let me try and do this in conditionals to try and explain myself

PHP Code:

if ($postinfo[userid == $bbuserinfo[userid])
{
$allow_edit TRUE;
}

if (
$grps_permissions[groupspostedit] == TRUE)
{
$allow_edit2 TRUE;
}

if (!
$allow_edit and !$allow_edit2)
{
print_no_permission;
}
else
{
echo 
"edit screen";


but because we want mods to be able to edit posts two, we have to make sure you're not a moderator so

PHP Code:

if ((!$allow_edit and !$allow_edit2) OR ($user_is_moderator == FALSE)
{
print_no_permission;
}
else
{
echo 
"edit screen";



Marco van Herwaarden 03-15-2005 02:38 PM

What my code does is:
If they are NOT (poster AND have edit perms) AND are NOT a moderator: Error message

Edit wrong!


All times are GMT. The time now is 08:17 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.01490 seconds
  • Memory Usage 1,774KB
  • 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
  • (13)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)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