Seditio Source
Root |
./othercms/ips_4.3.4/applications/core/sources/ProfileFields/Group.php
<?php
/**
 * @brief        Custom Profile Field Group Node
 * @author        <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
 * @copyright    (c) Invision Power Services, Inc.
 * @license        https://www.invisioncommunity.com/legal/standards/
 * @package        Invision Community
 * @since        10 Apr 2013
 */

namespace IPS\core\ProfileFields;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
   
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
    exit;
}

/**
 * Custom Profile Field Group Node
 */
class _Group extends \IPS\Node\Model
{
   
/**
     * @brief    [ActiveRecord] Multiton Store
     */
   
protected static $multitons;

   
/**
     * @brief    [ActiveRecord] Database Table
     */
   
public static $databaseTable = 'core_pfields_groups';
   
   
/**
     * @brief    [ActiveRecord] Database Prefix
     */
   
public static $databasePrefix = 'pf_group_';
   
   
/**
     * @brief    [ActiveRecord] ID Database Column
     */
   
public static $databaseColumnId = 'id';
   
   
/**
     * @brief    [Node] Order Database Column
     */
   
public static $databaseColumnOrder = 'order';
   
   
/**
     * @brief    [Node] Node Title
     */
   
public static $nodeTitle = 'profile_fields';
   
   
/**
     * @brief    [Node] Subnode class
     */
   
public static $subnodeClass = 'IPS\core\ProfileFields\Field';
   
   
/**
     * @brief    [Node] Show forms modally?
     */
   
public static $modalForms = TRUE;
   
   
/**
     * @brief    [Node] ACP Restrictions
     */
   
protected static $restrictions = array(
       
'app'        => 'core',
       
'module'    => 'membersettings',
       
'prefix'    => 'profilefieldgroups_',
    );

   
/**
     * @brief    [Node] Title prefix.  If specified, will look for a language key with "{$key}_title" as the key
     */
   
public static $titleLangPrefix = 'core_pfieldgroups_';

   
/**
     * [Node] Add/Edit Form
     *
     * @param    \IPS\Helpers\Form    $form    The form
     * @return    void
     */
   
public function form( &$form )
    {
       
$form->add( new \IPS\Helpers\Form\Translatable( 'pfield_group_title', NULL, TRUE, array( 'app' => 'core', 'key' => ( $this->id ? "core_pfieldgroups_{$this->id}" : NULL ) ) ) );
    }
   
   
/**
     * [Node] Save Add/Edit Form
     *
     * @param    array    $values    Values from the form
     * @return    void
     */
   
public function saveForm( $values )
    {
        if ( !
$this->id )
        {
           
$this->save();
        }
       
        \
IPS\Lang::saveCustom( 'core', "core_pfieldgroups_{$this->id}", $values['pfield_group_title'] );
    }
       
   
/**
     * [Node] Does the currently logged in user have permission to edit permissions for this node?
     *
     * @return    bool
     */
   
public function canManagePermissions()
    {
        return
false;
    }

   
/**
     * [Node] Get buttons to display in tree
     * Example code explains return value
     *
     * @code
         array(
             array(
                 'icon'    =>    'plus-circle', // Name of FontAwesome icon to use
                 'title'    => 'foo',        // Language key to use for button's title parameter
                 'link'    => \IPS\Http\Url::internal( 'app=foo...' )    // URI to link to
                 'class'    => 'modalLink'    // CSS Class to use on link (Optional)
             ),
             ...                            // Additional buttons
         );
     * @endcode
     * @param    string    $url        Base URL
     * @param    bool    $subnode    Is this a subnode?
     * @return    array
     */
   
public function getButtons( $url, $subnode=FALSE )
    {
       
$buttons    = parent::getButtons( $url, $subnode );

       
$buttons['add']['title']    = 'add_profile_field';

        return
$buttons;
    }
}