diff --git a/e107_handlers/shortcode_handler.php b/e107_handlers/shortcode_handler.php
index 920aef23e..04b873aad 100644
--- a/e107_handlers/shortcode_handler.php
+++ b/e107_handlers/shortcode_handler.php
@@ -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
diff --git a/e107_plugins/online/online_shortcodes.php b/e107_plugins/online/online_shortcodes.php
index 9a2d95275..c774de2ad 100644
--- a/e107_plugins/online/online_shortcodes.php
+++ b/e107_plugins/online/online_shortcodes.php
@@ -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 "".$this->currentUser['user_name']."";
+ return "".varset($this->currentUser['user_name'])."";
// $uparams = array('id' => $this->currentUser['user_id'], 'name' => $this->currentUser['user_name']);
// return "".$this->currentUser['user_name']."";
@@ -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 "";
diff --git a/e107_plugins/page/e_shortcode.php b/e107_plugins/page/e_shortcode.php
index 0e46c24ff..40bd398e6 100644
--- a/e107_plugins/page/e_shortcode.php
+++ b/e107_plugins/page/e_shortcode.php
@@ -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 "
Lorem ipsum dolor sit amet, 1 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 2.
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.
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.
[/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); + }