1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-31 20:00:37 +02:00

PHP8 fixes. Tests added for online shortcodes, page/e_shortcode.php

This commit is contained in:
Cameron
2021-01-08 11:46:30 -08:00
parent e33b403093
commit eec9a163cb
5 changed files with 149 additions and 17 deletions

View File

@@ -135,6 +135,13 @@ class e_parse_shortcode
}
public function clearRegistered()
{
$this->registered_codes = array();
$this->scClasses = array();
}
/**
* Register shortcode
* $classFunc could be function name, class name or object

View File

@@ -15,6 +15,8 @@ if (!defined('e107_INIT')) { exit; }
register_shortcode('online_shortcodes', true);
$online_shortcodes = initShortcodeClass('online_shortcodes');
e107::plugLan('online', null);
class online_shortcodes extends e_shortcode
{
protected $e107;
@@ -55,9 +57,9 @@ class online_shortcodes extends e_shortcode
// Last Seen Menu
function sc_lastseen_userlink()
{
$uparams = array('id' => $this->currentUser['user_id'], 'name' => $this->currentUser['user_name']);
$uparams = array('id' => varset($this->currentUser['user_id']), 'name' => varset($this->currentUser['user_name']));
$link = e107::getUrl()->create('user/profile/view', $uparams);
return "<a href='".$link."'>".$this->currentUser['user_name']."</a>";
return "<a href='".$link."'>".varset($this->currentUser['user_name'])."</a>";
// $uparams = array('id' => $this->currentUser['user_id'], 'name' => $this->currentUser['user_name']);
// return "<a href='".e_BASE."user.php?id.".$this->currentUser['user_id']."'>".$this->currentUser['user_name']."</a>";
@@ -65,6 +67,11 @@ class online_shortcodes extends e_shortcode
function sc_lastseen_date()
{
if(empty($this->currentUser['user_currentvisit']))
{
return null;
}
$seen_ago = $this->gen->computeLapse($this->currentUser['user_currentvisit'], false, false, true, 'short');
return $seen_ago;
// return ($seen_ago ? $seen_ago : '1 '.LANDT_09).' '.LANDT_AGO;
@@ -186,8 +193,13 @@ class online_shortcodes extends e_shortcode
}
function sc_online_most_datestamp($parm='short')
function sc_online_most_datestamp($parm=null)
{
if(empty($parm))
{
$parm = 'short';
}
return $this->gen->convert_date($this->memberInfo->get('most_online_datestamp'), $parm);
}
@@ -284,16 +296,15 @@ class online_shortcodes extends e_shortcode
$parm= array('type'=> $parm);
}
if($parm['type'] == 'avatar')
if(isset($parm['type']) && ($parm['type'] === 'avatar'))
{
$userData = array(
'user_image' => $this->currentMember['oimage'],
'user_name' => $this->currentMember['oname']
'user_image' => varset($this->currentMember['oimage']),
'user_name' => varset($this->currentMember['oname'])
);
return e107::getParser()->toAvatar($userData, $parm);
// return e107::getParser()->parseTemplate("{USER_AVATAR=".$this->currentMember['oimage']."}",true);
}
return "<img src='".e_IMAGE_ABS."admin_images/users_16.png' alt='' style='vertical-align:middle' />";

View File

@@ -125,8 +125,13 @@ class page_shortcodes extends e_shortcode
/**
* New in v2.x. eg. {CMENU=feature-1} Renders a menu called 'feature-1' as found in the e107_page table See admin Pages/Menus .
*/
function sc_cmenu($parm='')
function sc_cmenu($parm=null)
{
if(empty($parm))
{
return null;
}
return e107::getMenu()->renderMenu($parm, false, false, true);
}
@@ -140,6 +145,16 @@ class page_shortcodes extends e_shortcode
*/
function sc_chapter_menus($parm=null)
{
if(empty($parm['name']))
{
if(ADMIN)
{
return "<div class='alert alert-danger'>Missing 'name'. eg: {CHAPTER_MENUS: name=chapter-sef-url}</div>";
}
return null;
}
$tp = e107::getParser();
$text = '';
@@ -271,14 +286,22 @@ class page_shortcodes extends e_shortcode
* @example {BOOK_CHAPTERS: name=book-sef-url&template=xxxxx&limit=3}
* @return string
*/
function sc_book_chapters($parm)
function sc_book_chapters($parm=null)
{
if(empty($parm['name']))
{
if(ADMIN)
{
return "<div class='alert alert-danger'>Missing 'name'. eg: {BOOK_CHAPTER: name=book-sef-url}</div>";
}
return null;
}
$tp = e107::getParser();
$sef = $tp->filter($parm['name'],'str');
$tmplKey = varset($parm['template'],'panel');
$limit = (int) varset($parm['limit'], 3);

View File

@@ -146,13 +146,15 @@ while(&#036;row = &#036;sql-&gt;fetch())
public function testParseTemplateWithCoreAddonShortcodes()
{
e107::getPlugin()->uninstall('online');
e107::getScParser()->__construct();
$sc = e107::getScParser();
$sc->__construct();
$sc->clearRegistered();
$result = $this->tp->parseTemplate('{ONLINE_MEMBER_PAGE}', false);
$this->assertEmpty($result);
$result = $this->tp->parseTemplate('{ONLINE_MEMBER_PAGE}', true);
$this->assertEmpty($result);
$this->assertEmpty($result, "{ONLINE_MEMBER_PAGE} wasn't empty: ".$result);
$shortcodeObject = e107::getScBatch('online', true);

View File

@@ -276,11 +276,11 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
public function testLoginShortcodes()
{
require_once(e_CORE."shortcodes/batch/error_shortcodes.php");
require_once(e_CORE."shortcodes/batch/login_shortcodes.php");
try
{
$sc = $this->make('error_shortcodes');
$sc = $this->make('login_shortcodes');
}
catch (Exception $e)
{
@@ -405,7 +405,7 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
}
public function testPageShortcodes()
public function testPageShortcodes()
{
require_once(e_CORE."shortcodes/batch/page_shortcodes.php");
@@ -455,6 +455,73 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
$this->processShortcodeMethods($sc, $exclude);
}
public function testPageEShortcodes()
{
require_once(e_PLUGIN."page/e_shortcode.php");
try
{
/** @var page_shortcodes $sc */
$sc = $this->make('page_shortcodes');
}
catch (Exception $e)
{
$this->fail($e->getMessage());
}
$vars = array('page_id' => '1',
/* 'page_title' => 'Article 1',
'page_subtitle' => 'My subtitle goes here.',
'page_sef' => 'article-1',
'page_chapter' => '2',
'page_metakeys' => 'keywords',
'page_metadscr' => 'Meta Description',
'page_metarobots' => 'noindex',
'page_text' => '[html]<p>Lorem ipsum dolor sit amet, <sup>1</sup> consectetur adipiscing elit. Donec libero ipsum; imperdiet at risus non, dictum sagittis odio! Nulla facilisi. Pellentesque adipiscing facilisis pharetra. Morbi imperdiet augue in ligula luctus, et iaculis est porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In ultricies vitae nisi ut porttitor. Curabitur lectus tellus, feugiat a elit vel, gravida iaculis dui. Nulla vulputate turpis dui, ac faucibus enim dignissim non. Ut non tellus suscipit, scelerisque orci sed, scelerisque sapien. Aenean convallis sodales nulla in porttitor. In pretium ante sapien, a tempor eros blandit nec <sup>2</sup>.<br><br>Nulla non est nibh? Fusce lacinia quam adipiscing magna posuere dapibus. Sed mollis condimentum rhoncus. Morbi sollicitudin tellus a ligula luctus, ac varius arcu ullamcorper. Mauris in aliquet tellus, nec porttitor dui. Quisque interdum euismod mi sed bibendum. Vivamus non odio quis quam lacinia rhoncus in nec nibh. Integer vitae turpis condimentum, laoreet diam nec viverra fusce.</p>[/html]',
'page_author' => '1',
'page_datestamp' => '1371420000',
'page_rating_flag' => '1',
'page_comment_flag' => '1',
'page_password' => '',
'page_class' => '0',
'page_ip_restrict' => '',
'page_template' => 'default',
'page_order' => '20',
'page_fields' => NULL,'menu_name' => '',
'menu_title' => 'Heading 1',
'menu_text' => '[html]<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus auctor egestas condimentum. Suspendisse placerat nunc orci, a ultrices tortor eleifend in. Vestibulum tincidunt fringilla malesuada? Phasellus dolor risus, aliquam eu odio quis, mattis cursus magna. Integer ut blandit purus; vitae posuere ante. Vivamus sapien nisl, pulvinar vel turpis a, malesuada vehicula lorem! Curabitur magna justo; laoreet at congue sit amet, tincidunt sit amet erat. Integer vehicula eros quis odio tincidunt, nec dapibus sem molestie. Cras sed viverra eros. Nulla ut lectus tellus.</p>[/html]',
'menu_image' => '{e_THEME}steminst_eu/_content/2019-07/chromosome_dna_pattern_genetic_3_d_psychedelic_1920x1200.jpg',
'menu_icon' => '',
'menu_template' => 'button',
'menu_class' => '0',
'menu_button_url' => '',
'menu_button_text' => '',*/
'chapter_id' => '1',
'chapter_parent' => '0',
'chapter_name' => 'General',
'chapter_sef' => 'general',
'chapter_meta_description' => 'Lorem ipsum dolor sit amet.',
'chapter_meta_keywords' => '',
'chapter_manager' => '0',
'chapter_icon' => '',
'chapter_image' => '',
'chapter_order' => '0',
'chapter_template' => '',
'chapter_visibility' => '0',
'chapter_fields' => NULL
)
;
$sc->setVars($vars);
// $exclude = array('sc_cpagemessage'); // system messages
$this->processShortcodeMethods($sc);
}
@@ -828,6 +895,8 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
$sc->setVars($vars);
$exclude = array('sc_info'); // uses time with seconds.
$this->processShortcodeMethods($sc);
}
@@ -1131,6 +1200,26 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
$this->processShortcodeMethods($sc);
}
public function testOnlineShortcodes()
{
require_once(e_PLUGIN."online/online_shortcodes.php");
try
{
/** @var online_shortcodes $sc */
$sc = $this->make('online_shortcodes');
}
catch (Exception $e)
{
$this->fail($e->getMessage());
}
$sc->__construct();
$this->processShortcodeMethods($sc);
}