<?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

if(!defined('CMS_VERSION')) { exit; }
if(!$this->_HasSufficientPermissions('properties')) { return; }

$tpl         = $this->CreateSmartyTemplate('propertiesform.tpl');
$message     = $params['message'] ?? '';
$themeObject = cms_utils::get_theme_object();
$rowarray    = [];
$rowclass    = 'row1';
$keys        = array_keys($this->GetFieldTypes());
$defns       = $this->GetPropertyDefns();

if(is_array($defns))
{
  foreach($defns as $defn)
  {
    $can_delete = TRUE;
    $propgroups = $this->GetPropertyGroupRelations($defn['name']);
    
    if(count($propgroups))
    {
      foreach($propgroups as $rec)
      {
        if($rec['required'] > 1)
        {
          $can_delete = FALSE;
          break;
        }
      }
    }
    
    $onerow = new StdClass();
    
    if($this->_HasSufficientPermissions('editprop') && !isset($defn['extra']['module']))
    {
      $onerow->name = $this->CreateLink($id, 'addprop', $returnid, $defn['name'], ['propname' => $defn['name']]);
    }
    else
    {
      $onerow->name = $defn['name'];
      if(isset($defn['extra']['module']))
      {
        $onerow->name .= '&nbsp;<em title="' . $this->Lang('title_propmodule') . '">(' . $defn['extra']['module'] .
                         ')</em>';
      }
    }
    
    $onerow->encrypt      = $defn['encrypt'];
    $onerow->prompt       = $defn['prompt'];
    $onerow->type         = $this->Lang($keys[$defn['type']]);
    $onerow->length       = $defn['length'];
    $onerow->force_unique = $defn['force_unique'];
    $onerow->rowclass     = $rowclass;
    $is_moduleprop        = 0;
    
    if(
      isset($defn['extra'])
      && isset($defn['extra']['module'])
      && '' != $defn['extra']['module']
    )
    {
      $tmp = cms_utils::get_module($defn['extra']['module']);
      
      if(is_object($tmp)) { $is_moduleprop = 1; }
    }
    
    if( !isset($defn['extra']['module']) && $this->_HasSufficientPermissions('editprop') )
    {
      $onerow->editlink =
        $this->CreateLink(
          $id, 'addprop', $returnid,
          $themeObject->DisplayImage('icons/system/edit.gif', $this->Lang('edit'), '', '', 'systemicon'),
          ['propname' => $defn['name']]
        );
      
      if($can_delete && !$is_moduleprop)
      {
        $onerow->delete_url = $this->create_url(
          $id, 'admin_deleteprop', $returnid,
          ['propname' => $defn['name'], 'proptype' => $defn['type']]
        );
      }
    }
    
    $rowarray[] = $onerow;
    
    ('row1' == $rowclass ? $rowclass = 'row2' : $rowclass = 'row1');
  }
}

$tpl->assign('title', $this->Lang('properties'));
$tpl->assign('message', $message);
$tpl->assign('nametext', $this->Lang('name'));
$tpl->assign('lengthtext', $this->Lang('length'));
$tpl->assign('prompttext', $this->Lang('prompt'));
$tpl->assign('typetext', $this->Lang('prompt_type'));
$tpl->assign('props', $rowarray);
$tpl->assign('propcount', count($rowarray));
$tpl->assign('propsfound', $this->Lang('propsfound'));

if($this->_HasSufficientPermissions('addprop'))
{
  // todo, add a permission check around this
  // maybe create an "edit frontenduser properties" permission
  $tpl->assign('add_url', $this->create_url($id, 'addprop', $returnid));
}

$tpl->display();

?>