Version 5.0.6

This commit is contained in:
Neo committed 2025-12-19 18:55:49 -08:00
1 parent a3a4a9ccbd
commit b89858b2ff
1214 files changed
+92828 -14859

No files matched your search

+137 -161
View File
@@ -225,7 +225,7 @@ $return .= <<<IPSCONTENT
</div>
<div class="ipsData__meta">
<ul class='ipsList ipsList--sep'>
<li class='i-font-weight_600'>
<li>
IPSCONTENT;
if ( ! $row->viewed ):
@@ -2058,7 +2058,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$item = $row->object();
if ( $item = $row->object() ):
$return .= <<<IPSCONTENT
<li class='ipsData__item i-padding_0'>
@@ -2312,6 +2312,12 @@ $return .= <<<IPSCONTENT
</div>
</article>
</li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
@@ -3612,7 +3618,7 @@ IPSCONTENT;
if ( $total > 250 ):
$return .= <<<IPSCONTENT
<div class="i-padding_4 something-small-but-dont-know-new-classes">
<div class="i-padding_4">
IPSCONTENT;
@@ -3853,10 +3859,10 @@ IPSCONTENT;
$return = '';
$return .= <<<IPSCONTENT
<div class='ipsBox__padding i-border-bottom_1 ipsFieldRow ipsFieldRow--primary' id='elModCPIPTools'>
<div class='i-border-bottom_3' id='elModCPIPTools'>
{$form}
</div>
<div class='ipsBox__padding ipsFieldRow ipsFieldRow--primary' id='elModCPIPMemberTools'>
<div id='elModCPIPMemberTools'>
{$members}
</div>
IPSCONTENT;
@@ -4055,7 +4061,7 @@ $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->tabScroll
$return .= <<<IPSCONTENT
</i-tabs>
<section id='elmodCPTabs_content' class='ipsTabs__panels ipsTabs__panels--padded'>
<section id='elmodCPTabs_content' class='ipsTabs__panels'>
<div id="elmodCPTabs_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $activeTab, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -4224,7 +4230,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( $internalText ):
if ( $internalText and $item->object()->canFeature() ):
$return .= <<<IPSCONTENT
<a href="
@@ -4341,7 +4347,7 @@ $return .= <<<IPSCONTENT
<li>
IPSCONTENT;
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html();
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html(useTitle: true);
$return .= <<<IPSCONTENT
</li>
</ul>
@@ -5570,7 +5576,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $report->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' data-action='editComment'><i class="fa-regular fa-pen-to-square"></i><span>
' data-action='editComment'><i class="fa-solid fa-pen-to-square"></i><span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'edit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -6126,7 +6132,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$val = ( $r['date_reported'] instanceof \IPS\DateTime ) ? $r['date_reported'] : \IPS\DateTime::ts( $r['date_reported'] );$return .= $val->html();
$val = ( $r['date_reported'] instanceof \IPS\DateTime ) ? $r['date_reported'] : \IPS\DateTime::ts( $r['date_reported'] );$return .= $val->html(useTitle: true);
$return .= <<<IPSCONTENT
</p>
@@ -6496,7 +6502,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$val = ( $row->last_updated instanceof \IPS\DateTime ) ? $row->last_updated : \IPS\DateTime::ts( $row->last_updated );$return .= $val->html();
$val = ( $row->last_updated instanceof \IPS\DateTime ) ? $row->last_updated : \IPS\DateTime::ts( $row->last_updated );$return .= $val->html(useTitle: true);
$return .= <<<IPSCONTENT
IPSCONTENT;
@@ -6506,7 +6512,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$val = ( $row->first_report_date instanceof \IPS\DateTime ) ? $row->first_report_date : \IPS\DateTime::ts( $row->first_report_date );$return .= $val->html();
$val = ( $row->first_report_date instanceof \IPS\DateTime ) ? $row->first_report_date : \IPS\DateTime::ts( $row->first_report_date );$return .= $val->html(useTitle: true);
$return .= <<<IPSCONTENT
IPSCONTENT;
@@ -6737,7 +6743,7 @@ IPSCONTENT;
$return = '';
$return .= <<<IPSCONTENT
<div class="ipsMargin_top:half">
<div class="i-margin-top_2">
<i class='fa-solid fa-
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $class::$icon, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -6785,7 +6791,7 @@ IPSCONTENT;
if ( $report->status == \IPS\core\Reports\Report::STATUS_REJECTED ):
$return .= <<<IPSCONTENT
<span class="ipsBadge ipsBadge_negative">
<span class="ipsBadge ipsBadge--negative">
IPSCONTENT;
$val = "report_status_{$report->status}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -6797,7 +6803,7 @@ IPSCONTENT;
elseif ( $report->status == \IPS\core\Reports\Report::STATUS_OPEN ):
$return .= <<<IPSCONTENT
<span class="ipsBadge ipsBadge_recommended">
<span class="ipsBadge ipsBadge--recommended">
IPSCONTENT;
$val = "report_status_{$report->status}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -6809,7 +6815,7 @@ IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<span class="ipsBadge ipsBadge_positive">
<span class="ipsBadge ipsBadge--positive">
IPSCONTENT;
$val = "report_status_{$report->status}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -6827,7 +6833,7 @@ IPSCONTENT;
foreach ( $report->getReportedTypes() as $name ):
$return .= <<<IPSCONTENT
<span class="ipsBadge ipsBadge_style1">
<span class="ipsBadge ipsBadge--style1">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -7089,7 +7095,7 @@ IPSCONTENT;
return $return;
}
function template( $content, $tabs, $activeTab, $approvalCount ) {
function template( $content, $tabs, $activeTab, $counters=null ) {
$return = '';
$return .= <<<IPSCONTENT
@@ -7098,12 +7104,12 @@ IPSCONTENT;
IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:before", [ $content,$tabs,$activeTab,$approvalCount ] );
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:before", [ $content,$tabs,$activeTab,$counters ] );
$return .= <<<IPSCONTENT
<div class="cModCP_header i-padding-inline_3 i-padding-block_3 i-flex i-align-items_center i-flex-wrap_wrap i-gap_2 i-border-bottom_3" data-ips-hook="modcp_header">
IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:inside-start", [ $content,$tabs,$activeTab,$approvalCount ] );
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:inside-start", [ $content,$tabs,$activeTab,$counters ] );
$return .= <<<IPSCONTENT
<h1 class="ipsTitle ipsTitle--h2 i-flex_11 i-flex i-align-items_center i-gap_2"><i class="fa-solid fa-user-lock i-color_soft i-opacity_5"></i>
@@ -7115,65 +7121,34 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( \IPS\Member::loggedIn()->canAccessReportCenter() ):
if ( !empty( $counters ) ):
$return .= <<<IPSCONTENT
<ul class="ipsList ipsList--inline i-gap_4 i-row-gap_1 i-font-weight_500">
<li
IPSCONTENT;
if ( !$approvalCount ):
foreach ( $counters as $counter ):
$return .= <<<IPSCONTENT
<li
IPSCONTENT;
if ( !$counter['total'] ):
$return .= <<<IPSCONTENT
class="i-color_soft"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
><span id="elModCPApprovalCount" class="ipsBadge
><span id="
IPSCONTENT;
if ( !$approvalCount ):
$return .= \IPS\Theme\Template::htmlspecialchars( $counter['id'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
ipsBadge--positive
" class="ipsBadge
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
ipsBadge--warning
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
i-margin-end_icon">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $approvalCount, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'modcp_approval', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</li>
IPSCONTENT;
$reportCount = \IPS\Member::loggedIn()->reportCount( TRUE );
$return .= <<<IPSCONTENT
<li
IPSCONTENT;
if ( !$reportCount ):
$return .= <<<IPSCONTENT
class="i-color_soft"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
><span class="ipsBadge
IPSCONTENT;
if ( !$reportCount ):
if ( !$counter['total'] ):
$return .= <<<IPSCONTENT
ipsBadge--positive
IPSCONTENT;
@@ -7187,14 +7162,20 @@ endif;
$return .= <<<IPSCONTENT
i-margin-end_icon">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $reportCount, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= \IPS\Theme\Template::htmlspecialchars( $counter['total'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'active_reports', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$val = "{$counter['title']}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
IPSCONTENT;
@@ -7205,12 +7186,12 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:inside-end", [ $content,$tabs,$activeTab,$approvalCount ] );
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:inside-end", [ $content,$tabs,$activeTab,$counters ] );
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:after", [ $content,$tabs,$activeTab,$approvalCount ] );
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/modcp/template", "modcp_header:after", [ $content,$tabs,$activeTab,$counters ] );
$return .= <<<IPSCONTENT
<section class="ipsColumns ipsColumns--modcpanel i-gap_0">
@@ -7484,10 +7465,8 @@ IPSCONTENT;
$return = '';
$return .= <<<IPSCONTENT
<!-- v5 todo: Not sure where this page is used -->
<style>*{color:#ca0!important;}</style>
<div class="i-background_3 i-padding_3">
<h3 class='ipsTitle ipsTitle--h3'>
<div class="i-padding_3 i-border-bottom_3">
<h3 class='ipsTitle ipsTitle--h4 i-margin-bottom_2'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'assigned_point_levels', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -7499,323 +7478,320 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_points_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<i-data>
<ol class="ipsData ipsData--table ipsData--compact">
</div>
<i-data>
<ol class="ipsData ipsData--table ipsData--compact ipsData--warnActions">
IPSCONTENT;
if ( $min ):
$return .= <<<IPSCONTENT
<li class="ipsData__item">
<div class=''>
<span class="ipsWarningPoints"><i class='fa-solid fa-angle-left'></i>
<li class="ipsData__item">
<div class="i-basis_40 i-text-align_center">
<span class="i-font-weight_bold i-color_negative"><span><i class='fa-solid fa-angle-left'></i>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $min, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
</div>
<div class='ipsData__main'>
<p class="i-color_soft">
</span></span>
</div>
<div class='ipsData__main'>
<p class="i-color_soft">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_punishment', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
</div>
</li>
</div>
</li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
foreach ( $actions as $action ):
$return .= <<<IPSCONTENT
<li class="ipsData__item">
<div class=''>
<span class="ipsWarningPoints">
<li class="ipsData__item">
<div class='i-basis_40 i-text-align_center'>
<span class="i-font-weight_bold i-color_negative">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $action['wa_points'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
</div>
<div class='ipsData__main'>
</div>
<div class='ipsData__main'>
IPSCONTENT;
if ( $action['wa_mq'] or $action['wa_rpa'] or $action['wa_suspend'] ):
$return .= <<<IPSCONTENT
<ul>
<ul>
IPSCONTENT;
if ( $action['wa_mq'] ):
$return .= <<<IPSCONTENT
<li>
<strong>
<li>
<div class="ipsData__title">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_mq', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</strong>
<br>
<span class="i-color_soft">
<i class='fa-regular fa-clock'></i>
</div>
<div class="i-color_soft">
<i class='fa-regular fa-clock'></i>
IPSCONTENT;
if ( $action['wa_mq'] != -1 ):
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $action['wa_mq_unit'] == 'h' ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$pluralize = array( $action['wa_mq'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_hours', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
IPSCONTENT;
$pluralize = array( $action['wa_mq'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_days', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'indefinitely', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</span>
</li>
</div>
</li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $action['wa_rpa'] ):
$return .= <<<IPSCONTENT
<li>
<strong>
<li>
<div class="ipsData__title">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_rpa', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</strong>
<br>
<span class="i-color_soft">
<i class='fa-regular fa-clock'></i>
</div>
<div class="i-color_soft">
<i class='fa-regular fa-clock'></i>
IPSCONTENT;
if ( $action['wa_rpa'] != -1 ):
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $action['wa_rpa_unit'] == 'h' ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$pluralize = array( $action['wa_rpa'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_hours', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
IPSCONTENT;
$pluralize = array( $action['wa_rpa'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_days', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'indefinitely', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</span>
</li>
</div>
</li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $action['wa_suspend'] ):
$return .= <<<IPSCONTENT
<li>
<strong>
<li>
<div class="ipsData__title">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_suspend', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</strong>
<br>
<span class="i-color_soft">
<i class='fa-regular fa-clock'></i>
</div>
<div class="i-color_soft">
<i class='fa-regular fa-clock'></i>
IPSCONTENT;
if ( $action['wa_suspend'] != -1 ):
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $action['wa_suspend_unit'] == 'h' ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$pluralize = array( $action['wa_suspend'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_hours', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
IPSCONTENT;
$pluralize = array( $action['wa_suspend'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'f_days', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'indefinitely', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</span>
</li>
</div>
</li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</ul>
</ul>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<p class='i-color_soft'>
<p class='i-color_soft'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_punishment', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</li>
</div>
</li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ol>
</i-data>
</div>
</ol>
</i-data>
IPSCONTENT;
return $return;
@@ -8043,7 +8019,7 @@ $return .= <<<IPSCONTENT
<p>
IPSCONTENT;
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html();
$val = ( $warning->date instanceof \IPS\DateTime ) ? $warning->date : \IPS\DateTime::ts( $warning->date );$return .= $val->html(useTitle: true);
$return .= <<<IPSCONTENT
</p>
<p>