modPermission('can_view_moderation_log') ): $return .= << IPSCONTENT; endif; $return .= <<isAjax() ): $return .= <<

IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $announcement->mapped( 'title' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; if ( !$announcement->active ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'announcement_not_active', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

IPSCONTENT; endif; $return .= <<
isAjax() ): $return .= <<
IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $announcement->author(), 'tiny' ); $return .= <<

IPSCONTENT; $htmlsprintf = array($announcement->author()->link()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) ); $return .= << IPSCONTENT; if ( $announcement->start ): $return .= << IPSCONTENT; $val = ( $announcement->start instanceof \IPS\DateTime ) ? $announcement->start : \IPS\DateTime::ts( $announcement->start );$return .= (string) $val->localeDate(); $return .= << IPSCONTENT; endif; $return .= <<

{$announcement->mapped( 'content' )}
IPSCONTENT; if ( \IPS\Member::loggedIn()->modPermission('can_manage_announcements') and ( $announcement->canEdit() or $announcement->canDelete() ) ): $return .= <<
  • IPSCONTENT; endif; $return .= << IPSCONTENT; if ( \IPS\Widget\Request::i()->isAjax() ): $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; if ( $banEnd instanceof \IPS\DateTime ): $return .= <<language()->addToStack( htmlspecialchars( 'suspended', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'banned', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $val = "{$message}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( $warnings ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warnings', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << {$warnings} IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'need_more_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'need_more_info_text', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    {$form}
    IPSCONTENT; return $return; } function completeValidation( $member, $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL ) { $return = ''; $return .= << IPSCONTENT; foreach ( $hiddenValues as $k => $v ): $return .= << IPSCONTENT; endforeach; $return .= <<

    IPSCONTENT; $sprintf = array($member->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'registration_validate_heading', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'registration_validate_explain', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; return $return; } function completeWizardTemplate( $stepNames, $activeStep, $output, $baseUrl, $showSteps ) { $return = ''; $return .= <<
    IPSCONTENT; $completion = \intval( (string) \IPS\Member::loggedIn()->profileCompletionPercentage() ); $return .= << IPSCONTENT; $sprintf = array($completion . '%'); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profile_completion_percent', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<
    {$output}
    IPSCONTENT; return $return; } function contact( $form ) { $return = ''; $return .= <<isAjax() ): $return .= <<getTemplate( "global", \IPS\Request::i()->app )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('contact') ); $return .= << IPSCONTENT; endif; $return .= << {$form} IPSCONTENT; return $return; } function contactConfirmVerify( $form ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'contact_verify', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    {$form}
    IPSCONTENT; return $return; } function contactDone( ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'contact_sent', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'contact_sent_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; return $return; } function contactFormReferrer( $referrer ) { $return = ''; $return .= << IPSCONTENT; $return .= sprintf( \IPS\Member::loggedIn()->language()->get( 'contact_form_referrer' ), $referrer, $referrer ); $return .= << IPSCONTENT; return $return; } function contactVerify( ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'contact_verify', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'contact_verify_your_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; return $return; } function cookies( ) { $return = ''; $return .= <<isAjax() ): $return .= \IPS\Theme::i()->getTemplate( "global", \IPS\Request::i()->app )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('cookies_about') ); endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookies_about_header', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookies_standard', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookie_standard_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookies_standard', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; foreach ( \IPS\Request::getEssentialCookies() as $cookie ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $prefix, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; $val = "cookie_{$cookie}_description"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endforeach; $return .= <<
    IPSCONTENT; if ( \IPS\Widget\Request::i()->cookieConsentEnabled() ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookies_optional', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<url()); $return .= <<optionalCookiesAllowed; $return .= << IPSCONTENT; $allowed = $status ? "" : 'data-checked' ; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookies_optional_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<language()->checkKeyExists('cookie_3rdpartynotice_value') AND !empty( \IPS\Member::loggedIn()->language()->get('cookie_3rdpartynotice_value') ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookies_third_party', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookie_3rdpartynotice_value', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookies_change_header', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cookies_change_text', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; return $return; } function coppa( $form, $postBeforeRegister ) { $return = ''; $return .= << IPSCONTENT; if ( $postBeforeRegister ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'post_before_register_headline', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'post_before_register_subtext', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_up', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'existing_user', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_in_short', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_verify', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_verification_only', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<privacy_type != "none" ): $return .= <<privacy_link; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'privacy', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<. IPSCONTENT; endif; $return .= << {$form->customTemplate( array( \IPS\Theme::i()->getTemplate( 'system', 'core', 'front' ), 'coppaForm' ) )}

    IPSCONTENT; return $return; } function coppaConsent( ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Settings::i()->board_name; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $sprintf = array(\IPS\Settings::i()->board_name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_intro', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_child_name', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_child_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<     IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_disclaimer', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_name', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_relation', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
       
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_phone', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
       
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_sig', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
     
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_date', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
     
    IPSCONTENT; if ( \IPS\Settings::i()->privacy_type != "none" ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_privacy', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<privacy_type == "internal" ): $return .= <<privacy_link; $return .= <<
    IPSCONTENT; endif; $return .= <<coppa_address ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_form_mail', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<coppa_address ); $return .= << IPSCONTENT; endif; $return .= <<coppa_fax ): $return .= << IPSCONTENT; if ( \IPS\Settings::i()->coppa_address and \IPS\Settings::i()->coppa_fax ): $return .= <<language()->addToStack( htmlspecialchars( 'or', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'coppa_form_fax', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<coppa_fax; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function coppaForm( $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL ) { $return = ''; $return .= << IPSCONTENT; foreach ( $hiddenValues as $k => $v ): $return .= << IPSCONTENT; endforeach; $return .= <<name}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'continue', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; return $return; } function finishRegistration( $harryPotter ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'complete_your_profile', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    {$harryPotter} IPSCONTENT; return $return; } function followedContent( $types, $currentAppModule, $currentType, $table ) { $return = ''; $return .= <<isAjax() ): $return .= <<getTemplate( "global", "core" )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('menu_followed_content') ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "system", "core" )->followedContentSection( $types, $currentAppModule, $currentType, (string) $table ); $return .= << IPSCONTENT; if ( !\IPS\Widget\Request::i()->isAjax() ): $return .= << IPSCONTENT; endif; $return .= <<member_id ); $return .= <<_followData['follow_rel_id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $loadedMember, 'small' ); $return .= <<

    {$loadedMember->link( NULL, FALSE )}

    IPSCONTENT; if ( $loadedMember->isOnline() ): $return .= << $sprintf ) ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member\Group::load( $row->member_group_id )->formattedName; $return .= <<last_activity ): $return .= <<language()->addToStack( htmlspecialchars( 'members_last_visit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<last_activity instanceof \IPS\DateTime ) ? $loadedMember->last_activity : \IPS\DateTime::ts( $loadedMember->last_activity );$return .= $val->html(useTitle: true); $return .= <<

    • IPSCONTENT; if ( $row->_followData['follow_notify_freq'] == 'none' ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    • _followData['follow_is_anon'] ): $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "system", "core" )->manageFollow( $row->_followData['follow_app'], $row->_followData['follow_area'], $row->_followData['follow_rel_id'] ); $return .= <<
    IPSCONTENT; if ( $table->canModerate() ): $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= <<

    IPSCONTENT; if ( is_subclass_of( $types[ $currentAppModule ][ $currentType ], 'IPS\Content\Item' ) ): $return .= <<language()->addToStack( $types[ $currentAppModule ][ $currentType ]::$title . '_pl' )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stuff_i_follow', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<language()->addToStack( htmlspecialchars( 'members_i_follow', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( $types[ $currentAppModule ][ $currentType ]::$nodeTitle )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stuff_i_follow', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << {$table}

    IPSCONTENT; return $return; } function followedContentTagRow( $table, $headers, $rows ) { $return = ''; $return .= <<_followData['follow_rel_id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= <<
    {$pagination}
    IPSCONTENT; if ( !\IPS\Widget\Request::i()->isAjax() ): $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; endif; $return .= <<isAjax() ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function followersRows( $followers ) { $return = ''; $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( \IPS\Member::load( $follower['follow_member_id'] ), 'tiny' ); $return .= <<
    IPSCONTENT; $link = \IPS\Member::load( $follower['follow_member_id'] )->link(); $return .= << IPSCONTENT; $val = ( $follower['follow_added'] instanceof \IPS\DateTime ) ? $follower['follow_added'] : \IPS\DateTime::ts( $follower['follow_added'] );$return .= $val->html(useTitle: true); $return .= <<
    IPSCONTENT; endforeach; $return .= <<isAjax() ): $return .= <<
    {$actionButtons[0]} IPSCONTENT; if ( isset( $actionButtons[1] ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'follow_button_notification_settings', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; return $return; } function guidelines( $guidelines ) { $return = ''; $return .= << IPSCONTENT; if ( !\IPS\Widget\Request::i()->isAjax() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'guidelines', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->richText( \IPS\Member::loggedIn()->language()->addToStack('guidelines_value'), array('') ); $return .= <<

    IPSCONTENT; return $return; } function helpfulButton( $comment, $item ) { $return = ''; $return .= <<canMarkHelpful() ): $return .= << IPSCONTENT; if ( !$comment->markedHelpful() ): $return .= << 'toggleHelpful', 'answer' => $comment->pid ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mark_helpful', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<group['gbw_view_helpful'] && $comment->helpfulCount() != 0 ): $return .= <<helpfulCount(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; else: $return .= << 'toggleHelpful', 'answer' => $comment->pid ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'unmark_helpful', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<group['gbw_view_helpful'] && $comment->helpfulCount() != 0 ): $return .= <<helpfulCount(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= <<group['gbw_view_helpful'] && $comment->helpfulCount() != 0 ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $comment->helpfulCount(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; elseif ( $comment->helpfulCount() != 0 ): $return .= << IPSCONTENT; if ( \IPS\Member::loggedIn()->group['gbw_view_helpful'] ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mark_helpful', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<helpfulCount(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mark_helpful', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<helpfulCount(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

    IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<getTemplate( "global", \IPS\Request::i()->app )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('ignored_users'), \IPS\Member::loggedIn()->language()->addToStack('ignored_users_blurb') ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ignored_users_add', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ignored_users_add_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    {$form}
    {$table}
    IPSCONTENT; return $return; } function ignoreEditForm( $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL ) { $return = ''; $return .= << $v ): $return .= << IPSCONTENT; foreach ( $hiddenValues as $k => $v ): $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; foreach ( $elements as $collection ): $return .= <<
      IPSCONTENT; foreach ( $collection as $input ): $return .= <<
    IPSCONTENT; return $return; } function ignoreForm( $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL ) { $return = ''; $return .= << $v ): $return .= << IPSCONTENT; foreach ( $hiddenValues as $k => $v ): $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; foreach ( $elements as $collection ): $return .= <<
    {$input->html()} IPSCONTENT; if ( $input->error ): $return .= << IPSCONTENT; $val = "{$input->error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ignored_users_ignore', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; foreach ( $collection as $input ): $return .= << {$input->html()}
    IPSCONTENT; return $return; } function ignoreTable( $table, $headers, $rows, $quickSearch ) { $return = ''; $return .= << IPSCONTENT; if ( $table->title ): $return .= << IPSCONTENT; $val = "{$table->title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $table->pages > 1 ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->pagination( $table->baseUrl, $table->pages, $table->page, $table->limit ); $return .= << IPSCONTENT; endif; $return .= <<
      IPSCONTENT; $return .= $table->rowsTemplate[0]->{$table->rowsTemplate[1]}( $table, $headers, $rows ); $return .= << IPSCONTENT; if ( $table->pages > 1 ): $return .= <<
      IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->pagination( $table->baseUrl, $table->pages, $table->page, $table->limit ); $return .= <<
      IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function ignoreTableRows( $table, $headers, $rows ) { $return = ''; $return .= <<
      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_results', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<
      IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( \IPS\Member::load( $r['ignore_ignore_id'] ), 'fluid' ); $return .= << IPSCONTENT; endforeach; $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'block_invite', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'link_to_site', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( \count( $links ) ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'share_externally', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
        IPSCONTENT; foreach ( $links as $link ): $return .= <<{$link} IPSCONTENT; endforeach; $return .= <<
        IPSCONTENT; endif; $return .= << $sprintf ) ); $return .= << $sprintf ) ); $return .= << IPSCONTENT; if ( \count( $links ) ): $return .= <<language()->addToStack( htmlspecialchars( 'more_share_options', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'share', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; return $return; } function login( $login, $ref, $error ) { $return = ''; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/login", "login:inside-start", [ $login,$ref,$error ] ); $return .= << IPSCONTENT; if ( $ref ): $return .= << IPSCONTENT; endif; $return .= <<usernamePasswordMethods(); $return .= <<buttonMethods(); $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; elseif ( $usernamePasswordMethods ): $return .= << IPSCONTENT; if ( $error ): $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( !\IPS\Widget\Request::i()->isAjax() ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_in_short', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( \IPS\Login::registrationType() != 'disabled' ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'dont_have_an_account', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<language()->addToStack( htmlspecialchars( 'sign_up', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<getTemplate( "system", "core" )->loginForm( $login ); $return .= <<

      IPSCONTENT; elseif ( $buttonMethods ): $return .= << IPSCONTENT; if ( $error ): $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; return $return; } function notCoppaValidated( ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'coppa_consent_required', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; return $return; } function notifications( $table ) { $return = ''; $return .= <<
    {$table}
    IPSCONTENT; return $return; } function notificationsAjax( $notifications ) { $return = ''; $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_results_notifications', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<read_time ): $return .= << IPSCONTENT; if ( isset( $notification['data']['url'] ) ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( isset( $notification['data']['author'] ) ): $return .= <<getTemplate( "global", "core" )->userPhoto( $notification['data']['author'], 'fluid' ); $return .= <<

    IPSCONTENT; if ( isset( $notification['data']['url'] ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $notification['data']['title'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; else: $return .= <<

    IPSCONTENT; $val = ( $notification['notification']->updated_time instanceof \IPS\DateTime ) ? $notification['notification']->updated_time : \IPS\DateTime::ts( $notification['notification']->updated_time );$return .= $val->html(useTitle: true); $return .= <<

    IPSCONTENT; endforeach; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'notification_options', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; foreach ( $categories as $k => $enabled ): $return .= <<getTemplate( "system", \IPS\Request::i()->app )->notificationSettingsIndexRow( $k, $enabled ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'where_you_receive_notifications', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'member_notifications_inline', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'member_notifications_inline_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; if ( \IPS\Notification::webPushEnabled() || \count( \IPS\Member::loggedIn()->getPwaAuths() ) ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'member_notifications_push', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'member_notifications_push_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; if ( \IPS\Notification::webPushEnabled() ): $return .= <<

    IPSCONTENT; if ( \IPS\core\Stream\Subscription::hasSubscribedStreams() ): $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_subscriptions', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
    IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->tabScrollers( ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mobile_enable_chrome_android', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mobile_enable_chrome_android_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mobile_enable_chrome_desktop', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mobile_enable_chrome_desktop_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; return $return; } function reauthenticate( $login, $error, $blurb=NULL ) { $return = ''; $return .= << IPSCONTENT; $usernamePasswordMethods = $login->usernamePasswordMethods(); $return .= <<buttonMethods(); $return .= << IPSCONTENT; $val = "{$blurb}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
    • IPSCONTENT; if ( \IPS\Settings::i()->allow_forgot_password != 'disabled' ): $return .= <<allow_forgot_password == 'redirect' ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forgotten_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forgotten_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reauthenticate', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reauthenticate_alt_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

    IPSCONTENT; foreach ( $buttonMethods as $method ): $return .= << {$method->button()}
    IPSCONTENT; endforeach; $return .= <<
    IPSCONTENT; elseif ( $usernamePasswordMethods ): $return .= <<
  • IPSCONTENT; if ( \IPS\Settings::i()->allow_forgot_password != 'disabled' ): $return .= <<allow_forgot_password == 'redirect' ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<language()->addToStack( htmlspecialchars( 'forgotten_password', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reauthenticate', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
  • IPSCONTENT; elseif ( $buttonMethods ): $return .= << IPSCONTENT; if ( !$blurb ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reauthenticate_button_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; foreach ( $buttonMethods as $method ): $return .= << {$method->button()} IPSCONTENT; endforeach; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function reconfirmTerms( $terms, $privacy, $form, $subprocessors ) { $return = ''; $return .= <<
    IPSCONTENT; if ( \IPS\Member::loggedIn()->joined->getTimestamp() < ( time() - 60 ) ): $return .= << IPSCONTENT; if ( $terms and $privacy ): $return .= <<language()->addToStack( htmlspecialchars( 'reconfirm_terms_and_policy_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'reconfirm_terms_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'reconfirm_privacy_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_terms', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_rules_value', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
    IPSCONTENT; endif; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'privacy', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
    {$form}

    IPSCONTENT; return $return; } function referralsRows( $table, $headers, $rows ) { $return = ''; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $member, 'tiny' ); $return .= << IPSCONTENT; $return .= htmlspecialchars( \IPS\Member::load( $row['member_id'] )->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
    IPSCONTENT; $val = ( $row['joined'] instanceof \IPS\DateTime ) ? $row['joined'] : \IPS\DateTime::ts( $row['joined'] );$return .= $val->html(useTitle: true); $return .= << IPSCONTENT; endforeach; $return .= <<getPaginationKey() != 'page' ): $return .= << IPSCONTENT; if ( $table->title ): $return .= << IPSCONTENT; $val = "{$table->title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
      IPSCONTENT; $return .= $table->rowsTemplate[0]->{$table->rowsTemplate[1]}( $table, $headers, $rows ); $return .= << IPSCONTENT; if ( $table->pages > 1 ): $return .= <<
      IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->pagination( $table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey() ); $return .= <<
      IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'referral_no_referrals', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function register( $form, $login, $postBeforeRegister ) { $return = ''; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/register", "registerForm:before", [ $form,$login,$postBeforeRegister ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/register", "registerForm:inside-start", [ $form,$login,$postBeforeRegister ] ); $return .= << IPSCONTENT; $buttonMethods = $login->buttonMethods(); $return .= <<
      IPSCONTENT; endif; $return .= <<
      IPSCONTENT; if ( $postBeforeRegister ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'post_before_register_headline', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( !\IPS\Widget\Request::i()->hidereminder ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'post_before_register_subtext', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_up', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'existing_user', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sign_in_short', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; endif; $return .= << {$form}
      IPSCONTENT; if ( $buttonMethods ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_start_faster', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_connect', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; foreach ( $buttonMethods as $method ): $return .= << {$method->button()}
      IPSCONTENT; endforeach; $return .= <<

      IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/register", "registerForm:inside-end", [ $form,$login,$postBeforeRegister ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/register", "registerForm:after", [ $form,$login,$postBeforeRegister ] ); $return .= << IPSCONTENT; return $return; } function registerSetPassword( $form,$member ) { $return = ''; $return .= <<getTemplate( "global", \IPS\Request::i()->app )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack( 'set_password_title', FALSE, array( 'sprintf' => array( $member->name ) ) ) ); $return .= << {$form} IPSCONTENT; return $return; } function registerWrapper( $content ) { $return = ''; $return .= << {$content} IPSCONTENT; return $return; } function reportedAlready( $index, $report, $content ) { $return = ''; $return .= <<
      IPSCONTENT; return $return; } function reportForm( $form ) { $return = ''; $return .= <<getTemplate( "global", "core" )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('report') ); $return .= << {$form} IPSCONTENT; return $return; } function resetPass( $form ) { $return = ''; $return .= <<getTemplate( "global", \IPS\Request::i()->app )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('lost_password') ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reset_pass_instructions', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      {$form} IPSCONTENT; return $return; } function searchResult( $indexData, $summaryLanguage, $authorData, $itemData, $unread, $objectUrl, $itemUrl, $containerUrl, $containerTitle, $repCount, $showRepUrl, $snippet, $iPostedIn, $view, $canIgnoreComments=FALSE, $reactions=array(), $extraClass='' ) { $return = ''; $return .= << IPSCONTENT; if ( \in_array( 'IPS\Content\Comment', class_parents( $indexData['index_class'] ) ) ): $return .= <<
      IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "icon:before", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "icon:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= <<getTemplate( "global", "core" )->userPhotoFromData( $authorData['member_id'], $authorData['name'], $authorData['members_seo_name'], \IPS\Member::photoUrl( $authorData ), 'fluid' ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "icon:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentHeader:before", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentHeader:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; if ( $unread or $iPostedIn ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentTitle:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= <<getTemplate( "global", "core" )->prefix( rawurlencode($indexData['index_prefix']), $indexData['index_prefix'] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['title'] ], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentTitle:inside-end", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentTitle:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentBadges:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; elseif ( $indexData['index_hidden'] === 1 ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentBadges:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= <<
      IPSCONTENT; if ( $indexData['index_title'] ): $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<{$containerTitle}
      IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentHeader:inside-end", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentHeader:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentSnippet:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= <<member_id and isset( $authorData['member_id'] ) and isset ( $authorData['member_group_id'] ) and \IPS\Member::loggedIn()->isIgnoring( $authorData, 'topics' ) and $view != 'condensed' ): $return .= << IPSCONTENT; $sprintf = array($authorData['name']); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ignoring_content', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'options', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      {$snippet}
      IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentSnippet:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentStats:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= <<
      IPSCONTENT; $val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html(useTitle: true); $return .= << IPSCONTENT; if ( isset( $itemClass::$databaseColumnMap['num_comments'] ) and isset( $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] ) and $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] > ( $itemClass::$firstCommentRequired ? 1 : 0 ) ): $return .= << IPSCONTENT; if ( $itemClass::$firstCommentRequired ): $return .= << IPSCONTENT; $pluralize = array( $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] - 1 ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_replies', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= << IPSCONTENT; $pluralize = array( $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_comments'] ] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_comments', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $pluralize = array( $itemData[ $itemClass::$databasePrefix . $itemClass::$databaseColumnMap['num_reviews'] ] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_reviews', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= << IPSCONTENT; endif; $return .= <<reputation_enabled and \count( $reactions ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "search", "core" )->searchReaction( $reactions, $itemUrl->setQueryString('do', 'showReactionsReview')->setQueryString('review', $indexData['index_object_id']), $repCount ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "search", "core" )->searchReaction( $reactions, $itemUrl->setQueryString('do', 'showReactionsComment')->setQueryString('comment', $indexData['index_object_id']), $repCount ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->tags( explode( ',', $indexData['index_tags'] ), true ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "commentStats:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; else: $return .= <<
      IPSCONTENT; if ( isset( $itemClass::$databaseColumnMap['author'] ) ): $return .= <<getTemplate( "global", "core" )->userPhotoFromData( $authorData['member_id'], $authorData['name'], $authorData['members_seo_name'], \IPS\Member::photoUrl( $authorData ), 'fluid' ); $return .= <<
      IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemHeader:before", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemHeader:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; if ( $unread ): $return .= << IPSCONTENT; elseif ( $iPostedIn ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemTitle:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= <<getTemplate( "global", "core" )->prefix( rawurlencode($indexData['index_prefix']), $indexData['index_prefix'] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $indexData['index_title'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemTitle:inside-end", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemTitle:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemBadges:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemBadges:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; if ( $containerTitle ): $return .= << IPSCONTENT; if ( isset( $itemClass::$databaseColumnMap['author'] ) ): $return .= <<language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'ucfirst' => TRUE ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<{$containerTitle}
      IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemHeader:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemSnippet:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemSnippet:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemStats:inside-start", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; $val = ( $indexData['index_date_created'] instanceof \IPS\DateTime ) ? $indexData['index_date_created'] : \IPS\DateTime::ts( $indexData['index_date_created'] );$return .= $val->html(useTitle: true); $return .= << IPSCONTENT; endif; $return .= << ( $indexData['index_class']::$firstCommentRequired ? 1 : 0 ) ): $return .= << IPSCONTENT; if ( $indexData['index_class']::$firstCommentRequired ): $return .= << IPSCONTENT; $pluralize = array( $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ] - 1 ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_replies', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= << IPSCONTENT; $pluralize = array( $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_comments'] ] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_comments', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $pluralize = array( $itemData[ $indexData['index_class']::$databasePrefix . $indexData['index_class']::$databaseColumnMap['num_reviews'] ] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_reviews', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) ); $return .= << IPSCONTENT; endif; $return .= <<reputation_enabled and \count( $reactions ) ): $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "search", "core" )->searchReaction( $reactions, $itemUrl->setQueryString('do', 'showReactions'), $repCount ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "global", "core" )->tags( explode( ',', $indexData['index_tags'] ), true ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/system/searchResult", "itemStats:after", [ $indexData,$summaryLanguage,$authorData,$itemData,$unread,$objectUrl,$itemUrl,$containerUrl,$containerTitle,$repCount,$showRepUrl,$snippet,$iPostedIn,$view,$canIgnoreComments,$reactions,$extraClass ] ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function searchResultSnippet( $indexData, $itemData=null ) { $return = ''; $return .= << IPSCONTENT; if ( trim( $indexData['index_content'] ) !== '' ): $return .= <<application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'search' ) ): $return .= << IPSCONTENT; $return .= \IPS\Content\Search\Result::preDisplay( $indexData['index_content'] ); $return .= <<
      IPSCONTENT; endif; $return .= << IPSCONTENT; endforeach; $return .= << IPSCONTENT; endif; $return .= <<getTemplate( "global", "core" )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('settings'), \IPS\Member::loggedIn()->language()->addToStack('settings_blurb') ); $return .= << IPSCONTENT; return $return; } function settingsApps( $apps ) { $return = ''; $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_apps', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_apps_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; endforeach; $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_apps_empty', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function settingsDevices( $devices, $ipAddresses ) { $return = ''; $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ucp_devices', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'device_management_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'device_list_secure_account', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; if ( \IPS\Settings::i()->new_device_email ): $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ucp_devices_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<members_bitoptions['new_device_email'] ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ucp_devices_email_on', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ucp_devices_email_off', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ucp_devices_email_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; if ( \IPS\Member::loggedIn()->members_bitoptions['new_device_email'] ): $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ucp_devices_email_disable', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ucp_devices_email_enable', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; foreach ( $devices as $device ): $return .= <<

      IPSCONTENT; if ( $device->userAgent()->platform === 'Macintosh' ): $return .= << IPSCONTENT; elseif ( $device->userAgent()->platform === 'Android' or $device->userAgent()->platform === 'Windows Phone' ): $return .= << IPSCONTENT; elseif ( $device->userAgent()->platform === 'iPad' ): $return .= << IPSCONTENT; elseif ( $device->userAgent()->platform === 'iPhone' ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<

      IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $device->userAgent()->platform, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<

      IPSCONTENT; if ( isset( \IPS\Widget\Request::i()->cookie['device_key'] ) and \IPS\Widget\Request::i()->cookie['device_key'] === $device->device_key ): $return .= <<language()->addToStack( htmlspecialchars( 'current_device', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<last_seen )->relative()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'device_last_loggedin', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<

      IPSCONTENT; if ( $device->login_key or isset( $apps[ $device->device_key ] ) ): $return .= <<device_key}" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings_devices", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE ); $return .= << IPSCONTENT; if ( isset( \IPS\Widget\Request::i()->cookie['device_key'] ) and \IPS\Widget\Request::i()->cookie['device_key'] === $device->device_key ): $return .= <<language()->addToStack( htmlspecialchars( 'disable_automatic_login', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'sign_out', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
      • IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'device_table_user_agent', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
        IPSCONTENT; if ( \in_array( $device->userAgent()->browser, array( 'Android Browser', 'AppleWebKit', 'Camino', 'Chrome', 'Edge', 'Firefox', 'IEMobile', 'Midori', 'MSIE', 'Opera', 'Puffin', 'Safari', 'SamsungBrowser', 'Silk', 'UCBrowser', 'Vivaldi' ) ) ): $return .= <<userAgent()->browser ); $return .= << IPSCONTENT; endif; $return .= <<userAgent()->browser, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<userAgent()->browserVersion, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
      • IPSCONTENT; if ( $loginMethod = $device->loginMethod() and $logo = $loginMethod->logoForDeviceInformation() ): $return .= <<
        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'device_table_login_handler', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
        IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $loginMethod->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
        IPSCONTENT; endif; $return .= <<device_key ] ) ): $return .= <<
        IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'oauth_apps', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
          IPSCONTENT; foreach ( $apps[ $device->device_key ] as $clientId => $app ): $return .= << IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $oauthClients[ $clientId ]->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; endforeach; $return .= <<
        IPSCONTENT; endif; $return .= <<
        IPSCONTENT; if ( \IPS\Settings::i()->ipsgeoip ): $return .= <<language()->addToStack( htmlspecialchars( 'device_last_locations', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<language()->addToStack( htmlspecialchars( 'device_last_logins', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
          IPSCONTENT; foreach ( $ipAddresses[ $device->device_key ] as $ipAddress => $details ): $return .= << IPSCONTENT; if ( \IPS\Settings::i()->ipsgeoip ): $return .= << IPSCONTENT; $val = ( $details['date'] instanceof \IPS\DateTime ) ? $details['date'] : \IPS\DateTime::ts( $details['date'] );$return .= $val->html(useTitle: true); $return .= << IPSCONTENT; endforeach; $return .= <<
      IPSCONTENT; endforeach; $return .= << IPSCONTENT; if ( \IPS\Settings::i()->ipsgeoip ): $return .= <<* IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ip_geolocation_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= <<
      IPSCONTENT; if ( $userAgent->platform === 'Macintosh' ): $return .= << IPSCONTENT; elseif ( $userAgent->platform === 'Android' or $userAgent->platform === 'Windows Phone' ): $return .= << IPSCONTENT; elseif ( $userAgent->platform === 'iPad' ): $return .= << IPSCONTENT; elseif ( $userAgent->platform === 'iPhone' ): $return .= << IPSCONTENT; else: $return .= << IPSCONTENT; endif; $return .= <<

      IPSCONTENT; $return .= \IPS\Theme\Template::htmlspecialchars( $userAgent->platform, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'current_device', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      • IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'device_table_user_agent', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
        IPSCONTENT; if ( \in_array( $userAgent->browser, array( 'Android Browser', 'AppleWebKit', 'Camino', 'Chrome', 'Edge', 'Firefox', 'IEMobile', 'Midori', 'MSIE', 'Opera', 'Puffin', 'Safari', 'SamsungBrowser', 'Silk', 'UCBrowser', 'Vivaldi' ) ) ): $return .= <<browser ); $return .= << IPSCONTENT; endif; $return .= <<browser, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<browserVersion, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE ); $return .= <<
      IPSCONTENT; endif; $return .= << IPSCONTENT; return $return; } function settingsEmail( $form=NULL, $login=NULL, $error=NULL ) { $return = ''; $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_email_address', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      IPSCONTENT; if ( $form ): $return .= <<reg_auth_type == 'user' or \IPS\Settings::i()->reg_auth_type == 'admin_user' ): $return .= <<
      1. IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_email_explain_1', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      2. IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_email_explain_2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; endif; $return .= <<getTemplate( "system", \IPS\Request::i()->app )->reauthenticate( $login, $error ); $return .= <<
      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_email_admin_1', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      1. IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_email_admin_2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      2. IPSCONTENT; $sprintf = array(\IPS\Member::loggedIn()->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_email_admin_3', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) ); $return .= <<
      3. IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_email_admin_4', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      4. IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_email_admin_5', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      IPSCONTENT; endif; $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'profile_settings_cvb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<

      {$form} IPSCONTENT; return $return; } function settingsLoginConnect( $method, $login, $error ) { $return = ''; $return .= << IPSCONTENT; $val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( $method->type() === \IPS\Login::TYPE_USERNAME_PASSWORD ): $return .= <<
    1. IPSCONTENT; $authType = $method->authType(); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'email_address', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'required', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<
      auth ) ): $return .= <<
    2. password ) ): $return .= <<
    3. IPSCONTENT; else: $return .= << IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'hide_online_status', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; if ( \IPS\Settings::i()->core_datalayer_enabled AND \IPS\Settings::i()->core_datalayer_include_pii AND \IPS\Settings::i()->core_datalayer_member_pii_choice ): $return .= << IPSCONTENT; endif; $return .= << IPSCONTENT; endif; $return .= <<

      IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ucp_mfa', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= << IPSCONTENT; $return .= \IPS\Theme::i()->getTemplate( "system", \IPS\Request::i()->app )->reauthenticate( $login, $error, 'mfa_ucp_blurb_password' ); $return .= <<
      {$configurationScreen}
      IPSCONTENT; return $return; } function settingsOverview( $loginMethods, $canChangePassword ) { $return = ''; $return .= <<

    IPSCONTENT; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'go_community_home', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) ); $return .= <<