Seditio Source
Root |
./othercms/ips_4.3.4/applications/core/extensions/core/MemberRestrictions/Content.php
<?php
/**
 * @brief        Member Restrictions: Content
 * @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        30 Nov 2017
 */

namespace IPS\core\extensions\core\MemberRestrictions;

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

/**
 * @brief    Member Restrictions: Content
 */
class _Content extends \IPS\core\MemberACPProfile\Restriction
{
   
/**
     * Modify Edit Restrictions form
     *
     * @param    \IPS\Helpers\Form    $form    The form
     * @return    void
     */
   
public function form( \IPS\Helpers\Form $form )
    {
       
$form->add( new \IPS\Helpers\Form\Date( 'restrict_post', $this->member->restrict_post, FALSE, array( 'time' => TRUE, 'unlimited' => -1, 'unlimitedLang' => 'indefinitely' ), NULL, \IPS\Member::loggedIn()->language()->addToStack('until') ) );
       
$form->add( new \IPS\Helpers\Form\Date( 'mod_posts', $this->member->mod_posts, FALSE, array( 'time' => TRUE, 'unlimited' => -1, 'unlimitedLang' => 'indefinitely' ), NULL, \IPS\Member::loggedIn()->language()->addToStack('until') ) );
    }
   
   
/**
     * Save Form
     *
     * @param    array    $values    Values from form
     * @return    array
     */
   
public function save( $values )
    {
       
$return = array();
       
       
$modPosts = is_object( $values['mod_posts'] ) ? $values['mod_posts']->getTimestamp() : ( $values['mod_posts'] ?: 0 );
        if (
$modPosts != $this->member->mod_posts )
        {
           
$return['mod_posts'] = array( 'old' => $this->member->mod_posts, 'new' => $modPosts );
           
$this->member->mod_posts = $modPosts;
        }
       
       
$restrictPost = is_object( $values['restrict_post'] ) ? $values['restrict_post']->getTimestamp() : ( $values['restrict_post'] ?: 0 );
        if (
$restrictPost != $this->member->restrict_post )
        {
           
$return['restrict_post'] = array( 'old' => $this->member->restrict_post, 'new' => $restrictPost );
           
$this->member->restrict_post = $restrictPost;
        }
       
        return
$return;
    }
   
   
/**
     * What restrictions are active on the account?
     *
     * @return    array
     */
   
public function activeRestrictions()
    {
       
$return = array();
       
        if (
$this->member->restrict_post )
        {
           
$return[] = 'moderation_nopost';
        }
        elseif (
$this->member->mod_posts )
        {
           
$return[] = 'moderation_modq';
        }
       
        return
$return;
    }
   
   
/**
     * Get details of a change to show on history
     *
     * @param    array    $changes    Changes as set in save()
     * @return    array
     */
   
public static function changesForHistory( $changes )
    {
       
$return = array();
       
        foreach ( array(
'modq' => 'mod_posts', 'nopost' => 'restrict_post', 'banned' => 'temp_ban' ) as $k => $v )
        {
            if ( isset(
$changes[ $v ] ) )
            {
                if (
$changes[ $v ]['new'] )
                {
                   
$c = \IPS\Member::loggedIn()->language()->addToStack( 'moderation_' . $k );
                    if (
$changes[ $v ]['new'] != -1 )
                    {
                       
$interval = \IPS\DateTime::formatInterval( ( is_numeric( $changes[ $v ]['new'] ) ) ? \IPS\DateTime::create()->diff( \IPS\DateTime::ts( $changes[ $v ]['new'] ) ) : new \DateInterval( $changes[ $v ]['new'] ), 2 );
                       
$c = \IPS\Member::loggedIn()->language()->addToStack( 'history_received_warning_penalty_time', FALSE, array( 'sprintf' => array( $c, $interval ) ) );
                    }
                }
                else
                {
                   
$c = \IPS\Member::loggedIn()->language()->addToStack( 'history_warning_revoke_' . $v );
                }
               
$return[] = $c;
            }
        }
       
        return
$return;
    }
}