Seditio Source
Root |
./othercms/ips_4.3.4/applications/nexus/extensions/core/ContactUs/SupportRequest.php
<?php
/**
 * @brief        Contact Us extension
 * @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        29 Sep 2016
 */

namespace IPS\nexus\extensions\core\ContactUs;

/* 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;
}

/**
 * Contact Us extension
 */
class _SupportRequest
{
   
/**
     * Process Form
     *
     * @param    \IPS\Helpers\Form        $form        The form
     * @param    array                   $formFields Additional Configuration Formfields
     * @param    array                   $options    Type Radio Form Options
     * @param    array                   $toggles    Type Radio Form Toggles
     * @param    array                   $disabled   Type Radio Form Disabled Options
     * @return    void
     */
   
public function process( &$form, &$formFields, &$options, &$toggles, &$disabled )
    {
        if (
count( \IPS\nexus\Support\Department::roots() ) )
        {
           
$options['contact_nexus_department'] = 'contact_nexus_department';
        }
        else
        {
           
$options['contact_nexus_no_departments'] = 'contact_nexus_no_departments';
           
$disabled['contact_nexus_no_departments'] = 'contact_nexus_no_departments';
        }
       
$toggles['contact_nexus_department'] = array( 'contact_nexus' );

        if (
count( \IPS\nexus\Support\Department::roots() ) )
        {
           
$formFields[]    = new \IPS\Helpers\Form\Node( 'contact_nexus_department', \IPS\Settings::i()->contact_nexus_department , FALSE, array( 'class' => 'IPS\nexus\Support\Department' ), function( $value ){
                if( !
$value AND \IPS\Request::i()->contact_type == 'contact_nexus_department' )
                {
                    throw new \
DomainException( 'form_required' );
                }
            },
NULL, NULL, 'contact_nexus' );
        }
    }

   
/**
     * Handle the Form
     *
     * @param    array                   $values     Values from form
     * @return    bool
     */
   
public function handleForm( $values )
    {
        if ( \
IPS\Settings::i()->contact_type == 'contact_nexus_department' )
        {
           
$fromEmail = ( \IPS\Member::loggedIn()->member_id ) ? \IPS\Member::loggedIn()->email : $values['email_address'];
           
$content = $values['contact_text'];

           
$department = \IPS\nexus\Support\Department::load( \IPS\Settings::i()->contact_nexus_department );
           
$member = \IPS\Member::loggedIn();

           
$request = new \IPS\nexus\Support\Request;
           
$request->status = \IPS\nexus\Support\Status::load( TRUE, 'status_default_member' );
           
$request->severity = \IPS\nexus\Support\Severity::load( TRUE, 'sev_default' );
           
$request->last_reply = time();
           
$request->last_reply_by = (int) $member->member_id;
           
$request->last_new_reply = time();
           
$request->started = time();
           
$request->replies = 1;
           
$request->title = \IPS\Member::loggedIn()->language()->get( 'contact_nexus_title' );

            if ( \
IPS\Member::loggedIn()->member_id)
            {
               
$request->member = \IPS\Member::loggedIn()->member_id;
            }
            else
            {
               
$request->email = $fromEmail;
            }
           
$request->department = $department;
           
$request->save();

           
$reply = new \IPS\nexus\Support\Reply;
           
$reply->request = $request->id;
           
$reply->member = (int) \IPS\Member::loggedIn()->member_id;
           
$reply->post = $content;
           
$reply->type = \IPS\Member::loggedIn()->member_id ? $reply::REPLY_MEMBER  : $reply::REPLY_EMAIL;
           
$reply->date = time();
           
$reply->email = $fromEmail;
           
$reply->ip_address = \IPS\Request::i()->ipAddress();
           
$reply->save();
           
$request->processAfterCreate( $reply, $values );
           
$request->sendNotifications();

            return
TRUE;
        }
        return
FALSE;

    }

   
/**
     * Allows extensions to do something before the form is shown... e.g. add your own custom fields, or redirect the page
     *
     * @param    \IPS\Helpers\Form        $form        The form
     * @return    void
     */
   
public function runBeforeFormOutput( &$form )
    {

    }


}