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

Banner plugin may use keywords to display relevant banners on current news/pages. (exact match only, so use with caution)

This commit is contained in:
Cameron
2016-03-11 23:12:19 -08:00
parent e9869319f3
commit 85f67aa084
5 changed files with 33 additions and 12 deletions

View File

@@ -2885,7 +2885,9 @@ class e_form
} }
$tags = str_replace(', ',',', $tags); //BC Fix, all tags should be comma separated without spaces ie. one,two NOT one, two $tags = str_replace(', ',',', $tags); //BC Fix, all tags should be comma separated without spaces ie. one,two NOT one, two
e107::setRegistry('core/form/related',$tags); // TODO Move to elsewhere so it works without rendering? e107::related() set and get by plugins?
if(!varset($parm['limit'])) if(!varset($parm['limit']))
{ {
$parm = array('limit' => 5); $parm = array('limit' => 5);
@@ -2925,7 +2927,10 @@ class e_form
continue; continue;
} }
$parm['current'] = intval(varset($curVal[$plug])); $parm['current'] = intval(varset($curVal[$plug]));
$tmp = $obj->compile($tags,$parm); $tmp = $obj->compile($tags,$parm);

View File

@@ -125,6 +125,7 @@ class banner_ui extends e_admin_ui
'banner_tooltip' => array ( 'title' => BNRLAN_49, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => array('size'=>'xxlarge'), 'class' => 'center', 'thclass' => 'center', ), 'banner_tooltip' => array ( 'title' => BNRLAN_49, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => array('size'=>'xxlarge'), 'class' => 'center', 'thclass' => 'center', ),
'banner_description' => array ( 'title' => LAN_DESCRIPTION, 'type' => 'textarea', 'data' => 'str', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'banner_description' => array ( 'title' => LAN_DESCRIPTION, 'type' => 'textarea', 'data' => 'str', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'banner_keywords' => array ( 'title' => LAN_KEYWORDS, 'type' => 'tags', 'data' => 'str', 'width' => 'auto', 'filter' => false, 'help' => 'When news or pages are loaded, this will limit banner result to matching keywords. Use with caution.', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'banner_startdate' => array ( 'title' => BNRLAN_17, 'type' => 'datestamp', 'tab'=>1,'data' => 'int', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'banner_startdate' => array ( 'title' => BNRLAN_17, 'type' => 'datestamp', 'tab'=>1,'data' => 'int', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'banner_enddate' => array ( 'title' => BNRLAN_18, 'type' => 'datestamp', 'tab'=>1, 'data' => 'int', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'banner_enddate' => array ( 'title' => BNRLAN_18, 'type' => 'datestamp', 'tab'=>1, 'data' => 'int', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),

View File

@@ -101,7 +101,14 @@ if(!empty($menu_pref['banner_campaign']) && !empty($menu_pref['banner_amount']))
$query = " (banner_startdate=0 OR banner_startdate <= {$time}) AND (banner_enddate=0 OR banner_enddate > {$time}) AND (banner_impurchased=0 OR banner_impressions<=banner_impurchased)"; $query = " (banner_startdate=0 OR banner_startdate <= {$time}) AND (banner_enddate=0 OR banner_enddate > {$time}) AND (banner_impurchased=0 OR banner_impressions<=banner_impurchased)";
$query .= (count($filter)) ? " AND (".implode(" OR ",$filter)." ) " : ""; $query .= (count($filter)) ? " AND (".implode(" OR ",$filter)." ) " : "";
$query .= ($parm ? " AND banner_campaign='".$tp->toDB($parm)."'" : ''); $query .= ($parm ? " AND banner_campaign='".$tp->toDB($parm)."'" : '');
if($tags = e107::getRegistry('core/form/related'))
{
$tags_regexp = "'(^|,)(".str_replace(",", "|", $tags).")(,|$)'";
$query .= " AND banner_keywords REGEXP ".$tags_regexp;
}
$query .= " AND banner_active IN (".USERCLASS_LIST.") ORDER BY RAND($seed) LIMIT ".intval($menu_pref['banner_amount']); $query .= " AND banner_active IN (".USERCLASS_LIST.") ORDER BY RAND($seed) LIMIT ".intval($menu_pref['banner_amount']);
if($data = $sql->retrieve('banner', 'banner_id, banner_image, banner_clickurl,banner_campaign, banner_description', $query,true)) if($data = $sql->retrieve('banner', 'banner_id, banner_image, banner_clickurl,banner_campaign, banner_description', $query,true))
@@ -122,7 +129,6 @@ if(!empty($menu_pref['banner_campaign']) && !empty($menu_pref['banner_amount']))
$foot = e107::getParser()->parseTemplate($BANNER_MENU_END,true); $foot = e107::getParser()->parseTemplate($BANNER_MENU_END,true);
switch ($menu_pref['banner_rendertype']) switch ($menu_pref['banner_rendertype'])
{ {

View File

@@ -15,5 +15,6 @@ CREATE TABLE banner (
banner_tooltip varchar(250) NOT NULL default '', banner_tooltip varchar(250) NOT NULL default '',
banner_description text NOT NULL, banner_description text NOT NULL,
banner_campaign varchar(150) NOT NULL default '', banner_campaign varchar(150) NOT NULL default '',
banner_keywords varchar(250) NOT NULL default '',
PRIMARY KEY (banner_id) PRIMARY KEY (banner_id)
) ENGINE=MyISAM; ) ENGINE=MyISAM;

View File

@@ -27,21 +27,26 @@ class banner_shortcodes extends e_shortcode
function sc_banner($parm='') function sc_banner($parm='')
{ {
$e107 = e107::getInstance();
$sql = e107::getDb(); $sql = e107::getDb();
$tp = e107::getParser(); $tp = e107::getParser();
$ret = '';
$text = '';
mt_srand ((double) microtime() * 1000000); mt_srand ((double) microtime() * 1000000);
$seed = mt_rand(1,2000000000); $seed = mt_rand(1,2000000000);
$time = time(); $time = time();
$query = " (banner_startdate=0 OR banner_startdate <= {$time}) AND (banner_enddate=0 OR banner_enddate > {$time}) AND (banner_impurchased=0 OR banner_impressions<=banner_impurchased)".($parm ? " AND banner_campaign='".$tp->toDB($parm)."'" : '')." $query = " (banner_startdate=0 OR banner_startdate <= {$time}) AND (banner_enddate=0 OR banner_enddate > {$time}) AND (banner_impurchased=0 OR banner_impressions<=banner_impurchased)".($parm ? " AND banner_campaign='".$tp->toDB($parm)."'" : '')."
AND banner_active IN (".USERCLASS_LIST.") AND banner_active IN (".USERCLASS_LIST.") ";
ORDER BY RAND($seed) LIMIT 1";
if($tags = e107::getRegistry('core/form/related'))
{
$tags_regexp = "'(^|,)(".str_replace(",", "|", $tags).")(,|$)'";
$query .= " AND banner_keywords REGEXP ".$tags_regexp;
}
$query .= " ORDER BY RAND($seed) LIMIT 1";
if($sql->select('banner', 'banner_id, banner_image, banner_clickurl, banner_description', $query)) if($sql->select('banner', 'banner_id, banner_image, banner_clickurl, banner_description', $query))
{ {
$row = $sql->fetch(); $row = $sql->fetch();
@@ -110,6 +115,9 @@ class banner_shortcodes extends e_shortcode
$text .= "<div class='e-banner-description'>".$start.$tp->toHtml($row['banner_description'], true).$end. "</div>"; $text .= "<div class='e-banner-description'>".$start.$tp->toHtml($row['banner_description'], true).$end. "</div>";
} }
return $text; return $text;
} }