679 lines
21 KiB
PHP
679 lines
21 KiB
PHP
<?php
|
|
/**
|
|
* <pre>
|
|
* Invision Power Services
|
|
* IP.Board v3.4.6
|
|
* Custom field management
|
|
* Last Updated: $Date: 2012-08-28 17:56:22 -0400 (Tue, 28 Aug 2012) $
|
|
* </pre>
|
|
*
|
|
* @author $Author: bfarber $
|
|
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
|
* @license http://www.invisionpower.com/company/standards.php#license
|
|
* @package IP.Board
|
|
* @subpackage Members
|
|
* @link http://www.invisionpower.com
|
|
* @version $Revision: 11296 $
|
|
*/
|
|
|
|
if ( ! defined( 'IN_ACP' ) )
|
|
{
|
|
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
|
|
exit();
|
|
}
|
|
|
|
class admin_members_cfields_customfields extends ipsCommand
|
|
{
|
|
/**
|
|
* Skin object
|
|
*
|
|
* @var object Skin templates
|
|
*/
|
|
protected $html;
|
|
|
|
/**
|
|
* Shortcut for url
|
|
*
|
|
* @var string URL shortcut
|
|
*/
|
|
protected $form_code;
|
|
|
|
/**
|
|
* Shortcut for url (javascript)
|
|
*
|
|
* @var string JS URL shortcut
|
|
*/
|
|
protected $form_code_js;
|
|
|
|
/**
|
|
* Main class entry point
|
|
*
|
|
* @param object ipsRegistry reference
|
|
* @return @e void [Outputs to screen]
|
|
*/
|
|
public function doExecute( ipsRegistry $registry )
|
|
{
|
|
//-----------------------------------------
|
|
// Load skin & lang
|
|
//-----------------------------------------
|
|
|
|
$this->html = $this->registry->output->loadTemplate( 'cp_skin_profilefields' );
|
|
$this->registry->class_localization->loadLanguageFile( array( 'admin_member' ) );
|
|
|
|
$this->form_code = $this->html->form_code = '&module=cfields&section=customfields&';
|
|
$this->js_form_code = $this->html->form_code_js = '&module=cfields§ion=customfields&';
|
|
|
|
//-----------------------------------------
|
|
// switch-a-magoo
|
|
//-----------------------------------------
|
|
|
|
switch( $this->request['do'] )
|
|
{
|
|
case 'add':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_add' );
|
|
$this->mainForm( 'add' );
|
|
break;
|
|
|
|
case 'doadd':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_add' );
|
|
$this->mainSave( 'add' );
|
|
break;
|
|
|
|
case 'edit':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_edit' );
|
|
$this->mainForm( 'edit' );
|
|
break;
|
|
|
|
case 'doedit':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_edit' );
|
|
$this->mainSave( 'edit' );
|
|
break;
|
|
|
|
case 'delete':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_delete' );
|
|
$this->deleteForm();
|
|
break;
|
|
|
|
case 'dodelete':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_delete' );
|
|
$this->doDelete();
|
|
break;
|
|
|
|
case 'group_form_add':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_add' );
|
|
$this->groupForm( 'add' );
|
|
break;
|
|
|
|
case 'group_form_edit':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_edit' );
|
|
$this->groupForm( 'edit' );
|
|
break;
|
|
|
|
case 'do_add_group':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_add' );
|
|
$this->groupSave( 'add' );
|
|
break;
|
|
|
|
case 'do_edit_group':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_edit' );
|
|
$this->groupSave( 'edit' );
|
|
break;
|
|
|
|
case 'group_form_delete':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_global' );
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_delete' );
|
|
$this->groupDelete();
|
|
break;
|
|
|
|
case 'reorder':
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_global' );
|
|
$this->reorder();
|
|
break;
|
|
|
|
default:
|
|
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_global' );
|
|
$this->mainScreen();
|
|
break;
|
|
}
|
|
|
|
/* Output */
|
|
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
|
|
$this->registry->output->sendOutput();
|
|
}
|
|
|
|
/**
|
|
* Remove a profile field group
|
|
*
|
|
* @return @e void
|
|
*/
|
|
public function groupDelete()
|
|
{
|
|
/* ID */
|
|
$id = intval( $this->request['id'] );
|
|
|
|
if( ! $id )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_gid'], 11211 );
|
|
}
|
|
|
|
/* Do the delete */
|
|
$this->DB->delete( 'pfields_groups', "pf_group_id={$id}" );
|
|
|
|
/* Done */
|
|
$this->registry->output->global_message = $this->lang->words['cf_gremoved'];
|
|
$this->rebuildCache();
|
|
$this->mainScreen();
|
|
}
|
|
|
|
/**
|
|
* Handles the form for adding/editing profile field groups
|
|
*
|
|
* @param string $mode Either add or edit
|
|
* @return @e void
|
|
*/
|
|
public function groupSave( $mode='add' )
|
|
{
|
|
/* Error Checking */
|
|
if( ! $this->request['pf_group_name'] || ! $this->request['pf_group_key'] )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_completeform'], 11212 );
|
|
}
|
|
|
|
/* DB Array */
|
|
$db_array = array(
|
|
'pf_group_name' => $this->request['pf_group_name'],
|
|
'pf_group_key' => str_replace( ' ', '_', $this->request['pf_group_key'] ),
|
|
);
|
|
|
|
/* Create the field */
|
|
if( $mode == 'add' )
|
|
{
|
|
/* Make sure the key is unique */
|
|
$chk = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'pfields_groups', 'where' => "pf_group_key='{$db_array['pf_group_key']}'" ) );
|
|
|
|
if( $chk )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_gkey'], 11213 );
|
|
}
|
|
|
|
/* Insert the group */
|
|
$this->DB->insert( 'pfields_groups', $db_array );
|
|
|
|
/* Done */
|
|
$this->registry->output->global_message = $this->lang->words['cf_gadded'];
|
|
}
|
|
/* Edit the field */
|
|
else
|
|
{
|
|
/* ID */
|
|
$id = intval( $this->request['id'] );
|
|
|
|
if( ! $id )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_gid'], 11214 );
|
|
}
|
|
|
|
/* Make sure the key is unique */
|
|
$chk = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'pfields_groups', 'where' => "pf_group_key='{$db_array['pf_group_key']}' AND pf_group_id <> {$id}" ) );
|
|
|
|
if( $chk )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_gkey'], 11215 );
|
|
}
|
|
|
|
/* Update the group */
|
|
$this->DB->update( 'pfields_groups', $db_array, "pf_group_id={$id}" );
|
|
|
|
/* Done */
|
|
$this->registry->output->global_message = $this->lang->words['cf_gmodified'];
|
|
}
|
|
|
|
/* Done */
|
|
$this->rebuildCache();
|
|
$this->mainScreen();
|
|
}
|
|
|
|
/**
|
|
* Builds the form for adding/editing profile field groups
|
|
*
|
|
* @param string $mode Either add or edit
|
|
* @return @e void
|
|
*/
|
|
public function groupForm( $mode='add' )
|
|
{
|
|
/* Add Form */
|
|
if( $mode == 'add' )
|
|
{
|
|
/* ID */
|
|
$id = 0;
|
|
|
|
/* Data */
|
|
$data = array();
|
|
|
|
/* Text Bits */
|
|
$title = $this->lang->words['cf_gcreate'];
|
|
$do = 'do_add_group';
|
|
$button = $this->lang->words['cf_g_save'];
|
|
}
|
|
/* Edit Form */
|
|
else
|
|
{
|
|
/* ID */
|
|
$id = intval( $this->request['id'] );
|
|
|
|
if( ! $id )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_gid'], 11216 );
|
|
}
|
|
|
|
/* Data */
|
|
$data = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'pfields_groups', 'where' => "pf_group_id={$id}" ) );
|
|
|
|
/* Text Bits */
|
|
$title = $this->lang->words['cf_gedit'];
|
|
$do = 'do_edit_group';
|
|
$button = $this->lang->words['cf_g_editbutton'];
|
|
}
|
|
|
|
/* Default Values */
|
|
$data = array(
|
|
'pf_group_name' => $this->request['pf_group_name'] ? $this->request['pf_group_name'] : $data['pf_group_name'],
|
|
'pf_group_key' => $this->request['pf_group_key'] ? $this->request['pf_group_key'] : $data['pf_group_key'],
|
|
);
|
|
|
|
/* Output */
|
|
$this->registry->output->html .= $this->html->groupForm( $id, $data, $title, $do, $button );
|
|
}
|
|
|
|
/**
|
|
* Rebuilds the custom profile field cache
|
|
*
|
|
* @return @e void
|
|
*/
|
|
public function rebuildCache()
|
|
{
|
|
/* INIT */
|
|
$profile_fields = array();
|
|
|
|
/* Query the fields */
|
|
$this->DB->build( array(
|
|
'select' => 'p.*',
|
|
'from' => array( 'pfields_data' => 'p' ),
|
|
'order' => 'p.pf_group_id, p.pf_position',
|
|
'add_join' => array(
|
|
array(
|
|
'select' => 'g.*',
|
|
'from' => array( 'pfields_groups' => 'g' ),
|
|
'where' => 'p.pf_group_id=g.pf_group_id',
|
|
'type' => 'left',
|
|
)
|
|
)
|
|
) );
|
|
$this->DB->execute();
|
|
|
|
while( $r = $this->DB->fetch() )
|
|
{
|
|
$r['pf_group_key'] = $r['pf_group_key'] ? $r['pf_group_key'] : '_other';
|
|
$profile_fields[ $r['pf_id'] ] = $r;
|
|
}
|
|
|
|
/* Update the cache */
|
|
$this->cache->setCache( 'profilefields', $profile_fields, array( 'array' => 1 ) );
|
|
}
|
|
|
|
/**
|
|
* Confirm field deletion form
|
|
*
|
|
* @return @e void
|
|
*/
|
|
public function deleteForm()
|
|
{
|
|
/* INI */
|
|
$id = intval( $this->request['id'] );
|
|
|
|
if( ! $id )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_gid'], 11217 );
|
|
}
|
|
|
|
/* Query the field */
|
|
$this->DB->build( array( 'select' => 'pf_title', 'from' => 'pfields_data', 'where' => "pf_id={$id}" ) );
|
|
$this->DB->execute();
|
|
|
|
if ( ! $field = $this->DB->fetch() )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_norow'], 11218 );
|
|
}
|
|
|
|
/* Output */
|
|
$this->registry->output->html .= $this->html->customProfileFieldDelete( $id, $field['pf_title'] );
|
|
}
|
|
|
|
/**
|
|
* Removes a field from the database
|
|
*
|
|
* @return @e void
|
|
*/
|
|
public function doDelete()
|
|
{
|
|
/* INI */
|
|
$id = intval( $this->request['id'] );
|
|
|
|
if( ! $id )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_gid'], 11219 );
|
|
}
|
|
|
|
/* Query the field */
|
|
$this->DB->build( array( 'select' => '*', 'from' => 'pfields_data', 'where' => "pf_id={$id}" ) );
|
|
$this->DB->execute();
|
|
|
|
if ( ! $row = $this->DB->fetch() )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_norow'], 11220 );
|
|
}
|
|
|
|
/* Remove the filed */
|
|
$this->DB->dropField( 'pfields_content', "field_{$row['pf_id']}" );
|
|
$this->DB->delete( 'pfields_data', "pf_id={$id}" );
|
|
|
|
/* Rebuild the cache and redirect */
|
|
$this->rebuildCache();
|
|
|
|
$this->registry->output->global_message = $this->lang->words['cf_removed'];
|
|
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code );
|
|
}
|
|
|
|
|
|
/**
|
|
* Saves a custom field form
|
|
*
|
|
* @param string Type (add|edit)
|
|
* @return @e void
|
|
*/
|
|
public function mainSave( $type='edit' )
|
|
{
|
|
/* ID */
|
|
$id = intval( $this->request['id'] );
|
|
|
|
/* Custom Fields Class */
|
|
$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classCustomFields.php', 'classCustomFields' );
|
|
$cfields_class = new $classToLoad( array() );
|
|
|
|
if( ! $this->request['pf_title'] )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_entertitle'], 11221 );
|
|
}
|
|
|
|
if( ! $this->request['pf_key'] )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_enterkey'], 11221.5 );
|
|
}
|
|
else
|
|
{
|
|
if( $type == 'edit' )
|
|
{
|
|
$_exist = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'pfields_data', 'where' => "pf_key='{$this->request['pf_key']}' AND pf_id <> {$id}" ) );
|
|
}
|
|
else
|
|
{
|
|
$_exist = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'pfields_data', 'where' => "pf_key='{$this->request['pf_key']}'" ) );
|
|
}
|
|
|
|
if( $_exist['pf_id'] )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_duplicatekey'], 11221.6 );
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// check-da-motcha
|
|
//-----------------------------------------
|
|
|
|
if( $type == 'edit' )
|
|
{
|
|
if( ! $id )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_norow'], 11222 );
|
|
}
|
|
}
|
|
|
|
$content = "";
|
|
|
|
if( $_POST['pf_content'] != "" )
|
|
{
|
|
$content = $cfields_class->formatContentForSave( $_POST['pf_content'] );
|
|
}
|
|
|
|
$db_string = array( 'pf_title' => $this->request['pf_title'],
|
|
'pf_desc' => $this->request['pf_desc'],
|
|
'pf_content' => IPSText::stripslashes( $content ),
|
|
'pf_type' => $this->request['pf_type'],
|
|
'pf_not_null' => intval( $this->request['pf_not_null'] ),
|
|
'pf_member_hide' => intval( $this->request['pf_member_hide'] ),
|
|
'pf_max_input' => intval( $this->request['pf_max_input'] ),
|
|
'pf_member_edit' => intval( $this->request['pf_member_edit'] ),
|
|
'pf_position' => intval( $this->request['pf_position'] ),
|
|
'pf_show_on_reg' => intval( $this->request['pf_show_on_reg'] ),
|
|
'pf_input_format' => $this->request['pf_input_format'],
|
|
'pf_admin_only' => intval( $this->request['pf_admin_only'] ),
|
|
'pf_topic_format' => IPSText::stripslashes( $_POST['pf_topic_format'] ),
|
|
'pf_group_id' => intval( $this->request['pf_group_id'] ),
|
|
'pf_icon' => trim($this->request['pf_icon']),
|
|
'pf_key' => trim($this->request['pf_key']),
|
|
'pf_search_type' => trim($this->request['pf_search_type']),
|
|
'pf_filtering' => intval($this->request['pf_filtering']),
|
|
);
|
|
|
|
|
|
if ($type == 'edit')
|
|
{
|
|
$this->DB->update( 'pfields_data', $db_string, 'pf_id=' . $id );
|
|
|
|
$this->registry->output->global_message = $this->lang->words['cf_edited'];
|
|
}
|
|
else
|
|
{
|
|
$this->DB->insert( 'pfields_data', $db_string );
|
|
$new_id = $this->DB->getInsertId();
|
|
$this->DB->addField( 'pfields_content', "field_$new_id", 'text' );
|
|
$this->DB->optimize( 'pfields_content' );
|
|
|
|
$this->registry->output->global_message = $this->lang->words['cf_added'];
|
|
}
|
|
|
|
$this->rebuildCache();
|
|
$this->mainScreen();
|
|
}
|
|
|
|
/**
|
|
* Shows a custom field form
|
|
*
|
|
* @param string Type (add|edit)
|
|
* @return @e void
|
|
*/
|
|
public function mainForm( $type='edit' )
|
|
{
|
|
/* INI */
|
|
$id = intval( $this->request['id'] );
|
|
|
|
/* Custom Fields Class */
|
|
$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classCustomFields.php', 'classCustomFields' );
|
|
$cfields_class = new $classToLoad( array() );
|
|
|
|
/* Type of form */
|
|
if( $type == 'edit' )
|
|
{
|
|
/* Check for id */
|
|
if ( ! $id )
|
|
{
|
|
$this->registry->output->showError( $this->lang->words['cf_gid'], 11223 );
|
|
}
|
|
|
|
/* Query data */
|
|
$this->DB->build( array( 'select' => '*', 'from' => 'pfields_data', 'where' => "pf_id=" . $id ) );
|
|
$this->DB->execute();
|
|
$fields = $this->DB->fetch();
|
|
|
|
/* Form Setup */
|
|
$form_code = 'doedit';
|
|
$button = $this->lang->words['cf_editbutton'];
|
|
$title = $this->lang->words['cf_pagetitle_edit'];
|
|
}
|
|
else
|
|
{
|
|
/* Form Setup */
|
|
$form_code = 'doadd';
|
|
$button = $this->lang->words['cf_addbutton'];
|
|
|
|
/* Data */
|
|
$fields = array( 'pf_topic_format' => '<span class="ft">{title}:</span><span class="fc">{content}</span>' );
|
|
$title = $this->lang->words['cf_pagetitle_add'];
|
|
}
|
|
|
|
/* Format Content */
|
|
$fields['pf_content'] = $cfields_class->formatContentForEdit($fields['pf_content'] );
|
|
|
|
/* Form Fields */
|
|
$fields['pf_show_on_reg'] = $this->registry->output->formYesNo( 'pf_show_on_reg', $fields['pf_show_on_reg'] );
|
|
$fields['pf_not_null'] = $this->registry->output->formYesNo( 'pf_not_null', $fields['pf_not_null'] );
|
|
$fields['pf_member_edit'] = $this->registry->output->formYesNo( 'pf_member_edit', $fields['pf_member_edit'] );
|
|
$fields['pf_member_hide'] = $this->registry->output->formYesNo( 'pf_member_hide', $fields['pf_member_hide'] );
|
|
$fields['pf_admin_only'] = $this->registry->output->formYesNo( 'pf_admin_only', $fields['pf_admin_only'] );
|
|
$fields['pf_type'] = $this->registry->output->formDropdown( 'pf_type', $cfields_class->getFieldTypes(), $fields['pf_type'] );
|
|
$fields['pf_icon'] = $this->registry->output->formInput( 'pf_icon', $fields['pf_icon'] );
|
|
$fields['pf_key'] = $this->registry->output->formInput( 'pf_key', $fields['pf_key'] );
|
|
$fields['pf_search_type'] = $this->registry->output->formDropdown( 'pf_search_type', $cfields_class->getFieldSearchTypes(), $fields['pf_search_type'] );
|
|
$fields['pf_filtering'] = $this->registry->output->formYesNo( 'pf_filtering', $fields['pf_filtering'] );
|
|
|
|
/* Grab the groups */
|
|
$this->DB->build( array( 'select' => '*', 'from' => 'pfields_groups' ) );
|
|
$this->DB->execute();
|
|
|
|
$_groups = array();
|
|
while( $r = $this->DB->fetch() )
|
|
{
|
|
$_groups[] = array( $r['pf_group_id'], $r['pf_group_name'] );
|
|
}
|
|
|
|
$fields['pf_group_id'] = $this->registry->output->formDropdown( 'pf_group_id', $_groups, $fields['pf_group_id'] );
|
|
|
|
/* Output */
|
|
$this->registry->output->html .= $this->html->customProfileFieldForm( $id, $form_code, $button, $fields, $title );
|
|
}
|
|
|
|
/**
|
|
* Lists the current custom profile fields
|
|
*
|
|
* @return @e void
|
|
*/
|
|
public function mainScreen()
|
|
{
|
|
/* Get the fields */
|
|
$this->DB->build( array(
|
|
'select' => 'p.*',
|
|
'from' => array( 'pfields_data' => 'p' ),
|
|
'order' => 'p.pf_position',
|
|
'add_join' => array(
|
|
array(
|
|
'select' => 'g.*',
|
|
'from' => array( 'pfields_groups' => 'g' ),
|
|
'where' => 'p.pf_group_id=g.pf_group_id',
|
|
'type' => 'left'
|
|
)
|
|
)
|
|
) );
|
|
$this->DB->execute();
|
|
|
|
/* Loop through and build list */
|
|
$fields = array();
|
|
|
|
if ( $this->DB->getTotalRows() )
|
|
{
|
|
while ( $r = $this->DB->fetch() )
|
|
{
|
|
/* Hidden */
|
|
$r['_hide'] = ( $r['pf_member_hide'] ) ? 'tick.png' : 'cross.png';
|
|
$r['_req'] = ( $r['pf_not_null'] ) ? 'tick.png' : 'cross.png';
|
|
$r['_regi'] = ( $r['pf_show_on_reg'] ) ? 'tick.png' : 'cross.png';
|
|
$r['_admin'] = ( $r['pf_admin_only'] ) ? 'tick.png' : 'cross.png';
|
|
|
|
/* Add to fields */
|
|
$key = $r['pf_group_name'] ? $r['pf_group_name'] : $this->lang->words['nogroup_other'];
|
|
|
|
$fields[$key][] = $r;
|
|
|
|
}
|
|
}
|
|
|
|
/* Make sure we have all of the groups
|
|
@link http://community.invisionpower.com/tracker/issue-33386-custom-fields-groups-dont-appear-after-created-while-is-empty */
|
|
$this->DB->build( array( 'select' => '*', 'from' => 'pfields_groups' ) );
|
|
$this->DB->execute();
|
|
|
|
while( $r = $this->DB->fetch() )
|
|
{
|
|
$key = $r['pf_group_name'] ? $r['pf_group_name'] : $this->lang->words['nogroup_other'];
|
|
$fields[ $key ] = count($fields[ $key ]) ? $fields[ $key ] : $r['pf_group_id'];
|
|
}
|
|
|
|
/* Output */
|
|
$this->registry->output->html .= $this->html->customProfileFieldsList( $fields );
|
|
}
|
|
|
|
/**
|
|
* Reorder fields
|
|
*
|
|
* @return @e void [Outputs to screen]
|
|
*/
|
|
protected function reorder()
|
|
{
|
|
//-----------------------------------------
|
|
// INIT
|
|
//-----------------------------------------
|
|
|
|
$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classAjax.php', 'classAjax' );
|
|
$ajax = new $classToLoad();
|
|
|
|
//-----------------------------------------
|
|
// Checks...
|
|
//-----------------------------------------
|
|
|
|
if( $this->registry->adminFunctions->checkSecurityKey( $this->request['md5check'], true ) === false )
|
|
{
|
|
$ajax->returnString( $this->lang->words['postform_badmd5'] );
|
|
exit();
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Save new position
|
|
//-----------------------------------------
|
|
|
|
$position = 1;
|
|
|
|
if( is_array($this->request['fields']) AND count($this->request['fields']) )
|
|
{
|
|
foreach( $this->request['fields'] as $this_id )
|
|
{
|
|
$this->DB->update( 'pfields_data', array( 'pf_position' => $position ), 'pf_id=' . $this_id );
|
|
|
|
$position++;
|
|
}
|
|
}
|
|
|
|
$this->rebuildCache();
|
|
|
|
$ajax->returnString( 'OK' );
|
|
exit();
|
|
}
|
|
} |