Are newbie does have a valid question here guys. The question is simple, how do you deny the ability to post comments on profiles/photos/videos/music by non-registered end users (notice, I did not say members here) while enabling non-registered end users to read the comments. Now for fun, I just pulled cmts.php (the comments file) out and took a look. It's not a long file, and at first you'll notice it has the commands to check if the enduser is logged or not but it does not have a command in it to deny a non-logged enduser from posting comments.
Now, I know that some of you will say, just hide the comments from all non-logged members, thus removing the checkmark from the Guest box will do it. But that's not what this Opie is asking for, so now I'm eating crow and looking at the file as I figured this was in the Admin Panel. So here's the code to start:
<?
/***************************************************************************
* Dolphin Smart Community Builder
* -----------------
* begin : Mon Mar 23 2006
* copyright : (C) 2006 BoonEx Group
* website : http://www.boonex.com/
* This file is part of Dolphin - Smart Community Builder
*
* Dolphin is free software. This work is licensed under a Creative Commons Attribution 3.0 License.
* http://creativecommons.org/licenses/by/3.0/
*
* Dolphin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the Creative Commons Attribution 3.0 License for more details.
* You should have received a copy of the Creative Commons Attribution 3.0 License along with Dolphin,
* see license.txt file; if not, write to marketing@boonex.com
***************************************************************************/
require_once( 'inc/header.inc.php' );
require_once( BX_DIRECTORY_PATH_INC . 'design.inc.php' );
require_once( BX_DIRECTORY_PATH_INC . 'profiles.inc.php' );
require_once( BX_DIRECTORY_PATH_INC . 'members.inc.php' );
require_once( BX_DIRECTORY_PATH_INC . 'utils.inc.php' );
require_once( BX_DIRECTORY_PATH_ROOT . "templates/tmpl_{$tmpl}/scripts/BxTemplCmtsView.php" );
if ( !( $logged['admin'] = member_auth( 1, false ) ) )
if ( !( $logged['member'] = member_auth( 0, false ) ) )
if ( !( $logged['aff'] = member_auth( 2, false )) )
$logged['moderator'] = member_auth( 3, false );
$sSys = isset($_REQUEST['sys']) ? $_REQUEST['sys'] : '';
$sAction = isset($_REQUEST['action']) && preg_match ('/^[A-Za-z_-]+$/', $_REQUEST['action']) ? $_REQUEST['action'] : '';
$iId = (int)$_REQUEST['id'];
$oCmts = new BxTemplCmtsView('', 0);
if ($sSys && $sAction && $iId && $oCmts->isValidSystem($sSys))
{
$oCmts = new BxTemplCmtsView($sSys, $iId, true);
$sMethod = 'action' . $sAction;
echo $oCmts->$sMethod();
}
?>
Notice the red is checking the type of enduser that is logged in, but it's not stating to deny if not logged. It just goes on to request acction. Shouldn't we need something like this:
else
if (!(notlogged=deny(5,true)))
Now I'm sure that's not the exact way, I hate writing php, but it seems something like this does need to be in the file and shouldn't be that hard to add.