<?php
#BEGIN_LICENSE
#-------------------------------------------------------------------------
# Module: MAMS (c) 2020-2021 by CMS Made Simple Foundation
#  An add-on module for CMS Made Simple to provide useful functions
#  and commonly used gui capabilities to other modules.
#-------------------------------------------------------------------------
# A fork of:
#
# Module: FrontEndUsers (c) 2008-2014 by Robert Campbell
#         (calguy1000@cmsmadesimple.org)
#
#-------------------------------------------------------------------------
#
# CMSMS - CMS Made Simple is (c) 2006 - 2021 by CMS Made Simple Foundation
# CMSMS - CMS Made Simple is (c) 2005 by Ted Kulp (wishy@cmsmadesimple.org)
# Visit the CMSMS Homepage at: http://www.cmsmadesimple.org
#
#-------------------------------------------------------------------------
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# However, as a special exception to the GPL, this software is distributed
# as an addon module to CMS Made Simple.  You may not use this software
# in any Non GPL version of CMS Made simple, or in any version of CMS
# Made simple that does not indicate clearly and obviously in its admin
# section that the site was built with CMS Made simple.
#
# This program 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
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Or read it online: http://www.gnu.org/licenses/licenses.html#GPL
#
#-------------------------------------------------------------------------
#END_LICENSE

final class mams_smarty_plugins
{
    private function __construct() {}

    public static function mams_user_options($params, $template)
    {
        $selected = xt_param::get_string($params,'selected');
        $notdisabled = xt_param::get_bool($params,'notdisabled');
        $notexpired = xt_param::get_bool($params,'notexpired');
        $group = xt_param::get_string($params,'group');
        $use_userids = xt_param::get_bool($params,'use_userids');

        // get a list of all of the users matching the criteria
        $query = new mams_user_query;
        if( $group ) $query->add_and_opt( mams_user_query_opt::MATCH_GROUP, $group );
        if( $notexpired ) $query->add_and_opt( mams_user_query_opt::MATCH_NOTEXPIRED );
        if( $notdisabled ) $query->add_and_opt( mams_user_query_opt::MATCH_NOTDISABLED );
        $rs = $query->execute();
        if( !$rs || !$rs->get_found_rows() ) return;

        $out = null;
        $selfmt = '<option value="%s" selected>%s</option>'."\n";
        $ffmt = '<option value="%s">%s</option>'."\n";
        while( $rs && !$rs->EOF() ) {
            $rec = $rs->fields;
            $val = $rec['username'];
            if( $use_userids ) $val = $rec['id'];
            $username = $rec['username'];
            if( $selected != $val ) {
                $out .= sprintf($ffmt,$val,$username);
            } else {
                $out .= sprintf($selfmt,$val,$username);
            }
            $rs->MoveNext();
        }
        return $out;
    }

    public static function mams_protect($params,$content,&$smarty,$repeat)
    {
        if( !$content ) return;

        $mams = \cms_utils::get_module(MOD_MAMS);
        if( !$mams ) return;
        if( !($uid = $mams->LoggedInId()) ) return;

        $groups = null;
        if( isset($params['group']) ) {
            $groups = explode(',',$params['group']);
            foreach( $groups as &$grp ) {
                $grp = trim($grp);
            }
        }
        else if( isset($params['groups']) ) {
            $groups = explode(',',$params['groups']);
            foreach( $groups as &$grp ) {
                $grp = trim($grp);
            }
        }

        if( !is_array($groups) || count($groups) == 0 ) {
            // empty groups array specified.
            return;
        }

        // convert group names to ids
        $grouplist = $mams->GetGroupList();
        $gids = array();
        foreach($groups as $name) {
            if( (int)$name > 0 ) {
                $gids[] = (int)$name;
            }
            else if( isset($grouplist[$name]) ) {
                $gids[] = $grouplist[$name];
            }
        }
        if( !count($gids) ) return;

        $membergroups = $mams->GetMemberGroupsArray($uid);
        if( !is_array($membergroups) || count($groups) == 0 ) {
            // groups specified, but user is not a member of any groups.
            return;
        }

        // FINAL test, if the user is a member of any of these groups, output the content.
        for($i = 0, $iMax = count($membergroups); $i < $iMax; $i++ ) {
            $gid = $membergroups[$i]['groupid'];
            if( in_array($gid,$gids) ) return $content;
        }

        // user is not a member of any of the specified groups.
    }
} // end of class
?>
