1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-09 16:17:14 +02:00

Fixes #871 - Banner plugin admin-area and menu rewritten.

This commit is contained in:
Cameron
2015-02-07 22:20:31 -08:00
parent a6ace0b217
commit 5d78d673ad
6 changed files with 761 additions and 103 deletions

View File

@@ -20,11 +20,8 @@
* *
*/ */
// TODO FIXME needs validation (e.g. Click URL field is not checked to be sure it's an URL) - also required fields?
require_once('../../class2.php'); require_once('../../class2.php');
if (!getperms('D')) if (!getperms('D') && !getperms('P'))
{ {
header('location:'.e_BASE.'index.php'); header('location:'.e_BASE.'index.php');
exit; exit;
@@ -32,17 +29,567 @@ if (!getperms('D'))
$e_sub_cat = 'banner'; $e_sub_cat = 'banner';
e107::lan('banner',false,'front');
e107::lan('banner',true,true);
class banner_admin extends e_admin_dispatcher
{
protected $modes = array(
'main' => array(
'controller' => 'banner_ui',
'path' => null,
'ui' => 'banner_form_ui',
'uipath' => null
),
);
protected $adminMenu = array(
'main/list' => array('caption'=> LAN_MANAGE, 'perm' => 'P'),
'main/create' => array('caption'=> LAN_CREATE, 'perm' => 'P'),
'main/menu' => array('caption'=> BNRLAN_36, 'perm' => 'P'),
// 'main/prefs' => array('caption'=> LAN_PREFS, 'perm' => 'P'),
// 'main/custom' => array('caption'=> 'Custom Page', 'perm' => 'P')
);
protected $adminMenuAliases = array(
'main/edit' => 'main/list'
);
protected $menuTitle = 'Banners';
}
class banner_ui extends e_admin_ui
{
protected $pluginTitle = 'Banners';
protected $pluginName = 'banner';
protected $table = 'banner';
protected $pid = 'banner_id';
protected $perPage = 10;
protected $batchDelete = true;
// protected $batchCopy = true;
// protected $sortField = 'somefield_order';
// protected $orderStep = 10;
// protected $tabs = array('General','Advanced'); // Use 'tab'=>0 OR 'tab'=>1 in the $fields below to enable.
// protected $listQry = "SELECT * FROM `#tableName` WHERE field != '' "; // Example Custom Query. LEFT JOINS allowed. Should be without any Order or Limit.
protected $listOrder = 'banner_id DESC';
protected $fields = array (
'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ),
'banner_id' => array ( 'title' => LAN_ID, 'data' => 'int', 'width' => '2%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'banner_campaign' => array ( 'title' => 'Campaign', 'type' => 'method', 'data' => 'str', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'banner_clientname' => array ( 'title' => 'Clientname', 'type' => 'method', 'data' => 'str', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'banner_clientlogin' => array ( 'title' => BNRLAN_12, 'type' => 'method', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'banner_clientpassword' => array ( 'title' => BNRLAN_13, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => 'strength=1&password=1&required=1&generate=1&nomask=1', 'class' => 'center', 'thclass' => 'center', ),
'banner_image' => array ( 'title' => BNRLAN_14, 'type' => 'image', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => 'thumb=0x50', 'writeParms' => 'media=banner&w=600', 'class' => 'left', 'thclass' => 'left', ),
'banner_clickurl' => array ( 'title' => BNRLAN_15, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => 'size=xxlarge&required=1', 'class' => 'left', 'thclass' => 'left', ),
'banner_impurchased' => array ( 'title' => BNRLAN_16, 'type' => 'number', 'data' => 'int', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'banner_startdate' => array ( 'title' => BNRLAN_17, 'type' => 'datestamp', 'data' => 'int', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'banner_enddate' => array ( 'title' => BNRLAN_18, 'type' => 'datestamp', 'data' => 'int', 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'banner_active' => array ( 'title' => LAN_VISIBILITY, 'type' => 'userclass', 'data' => 'int', 'width' => 'auto', 'filter' => true, 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'banner_clicks' => array ( 'title' => BANNERLAN_24, 'type' => 'number', 'noedit'=>true, 'readonly'=>2, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'click_percentage' => array ( 'title' => BANNERLAN_25, 'type' => 'method', 'noedit'=>true, 'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ),
'banner_impressions' => array ( 'title' => 'Impressions', 'type' => 'method', 'noedit'=>true, 'data' => 'int', 'width' => '12%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'banner_ip' => array ( 'title' => LAN_IP, 'type' => 'hidden', 'noedit'=>true, 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'options' => array ( 'title' => LAN_OPTIONS, 'type' => null, 'data' => null, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center last', 'forced' => '1', ),
);
protected $fieldpref = array('banner_id', 'banner_campaign', 'banner_image', 'banner_clickurl', 'banner_clicks', 'banner_active', 'click_percentage', 'banner_impressions' );
/*
protected $prefs = array(
'banner_caption' => array('title'=> 'Banner_caption', 'type'=>'text', 'data' => 'string','help'=>'Help Text goes here'),
'banner_campaign' => array('title'=> 'Banner_campaign', 'type'=>'method', 'data' => 'string','help'=>'Help Text goes here'),
'banner_amount' => array('title'=> 'Banner_amount', 'type'=>'number', 'data' => 'string','help'=>'Help Text goes here'),
'banner_rendertype' => array('title'=> 'Banner_rendertype', 'type'=>'text', 'data' => 'string','help'=>'Help Text goes here'), );
*/
public function init()
{
if (!empty($_POST['update_menu']))
{
$this->menuPageSave();
}
}
// ------- Customize Create --------
public function beforeCreate($new_data)
{
// e107::getMessage()->addDebug(print_a($new_data,true));
if(!empty($new_data['banner_clientname_sel']))
{
$new_data['banner_clientname'] = $new_data['banner_clientname_sel'];
}
if(!empty($new_data['banner_campaign_sel']))
{
$new_data['banner_campaign'] = $new_data['banner_campaign_sel'];
}
return $new_data;
}
public function afterCreate($new_data, $old_data, $id)
{
// do something
}
public function onCreateError($new_data, $old_data)
{
// do something
}
// ------- Customize Update --------
public function beforeUpdate($new_data, $old_data, $id)
{
// e107::getMessage()->addDebug(print_a($new_data,true));
if(!empty($new_data['banner_clientname_sel']))
{
$new_data['banner_clientname'] = $new_data['banner_clientname_sel'];
}
if(!empty($new_data['banner_campaign_sel']))
{
$new_data['banner_campaign'] = $new_data['banner_campaign_sel'];
}
return $new_data;
}
public function afterUpdate($new_data, $old_data, $id)
{
// do something
}
public function onUpdateError($new_data, $old_data, $id)
{
// do something
}
private function menuPageSave()
{
$temp = array();
$tp = e107::getParser();
$log = e107::getAdminLog();
$menu_pref = e107::getConfig('menu')->getPref('');
$temp['banner_caption'] = $tp->toDB($_POST['banner_caption']);
$temp['banner_amount'] = intval($_POST['banner_amount']);
$temp['banner_rendertype'] = intval($_POST['banner_rendertype']);
if (isset($_POST['multiaction_cat_active']))
{
$cat = implode('|', $tp->toDB($_POST['multiaction_cat_active']));
$temp['banner_campaign'] = $cat;
}
if ($log->logArrayDiffs($temp,$menu_pref,'BANNER_01'))
{
$menuPref = e107::getConfig('menu');
//e107::getConfig('menu')->setPref('', $menu_pref);
//e107::getConfig('menu')->save(false, true, false);
foreach ($temp as $k => $v)
{
$menuPref->setPref($k, $v);
}
$menuPref->save(false, true, false);
e107::getMessage()->addSuccess(LAN_SAVED);
$menu_pref = e107::getConfig('menu')->getPref('');
//banners_adminlog('01', $menu_pref['banner_caption'].'[!br!]'.$menu_pref['banner_amount'].', '.$menu_pref['banner_rendertype'].'[!br!]'.$menu_pref['banner_campaign']);
}
}
public function menuPage()
{
$ns = e107::getRender();
$sql = e107::getDb();
$menu_pref = e107::getConfig('menu')->getPref('');
$frm = e107::getForm();
$mes = e107::getMessage();
$in_catname = array(); // Notice removal
$all_catname = array();
$array_cat_in = explode("|", $menu_pref['banner_campaign']);
if (!$menu_pref['banner_caption'])
{
$menu_pref['banner_caption'] = BNRLAN_38;
}
$category_total = $sql->select("banner", "DISTINCT(banner_campaign) as banner_campaign", "ORDER BY banner_campaign", "mode=no_where");
while ($banner_row = $sql -> fetch())
{
$all_catname[] = $banner_row['banner_campaign'];
if (in_array($banner_row['banner_campaign'], $array_cat_in))
{
$in_catname[] = $banner_row['banner_campaign'];
}
}
$text = "
<form method='post' action='".e_REQUEST_URI."' id='menu_conf_form'>
<fieldset id='core-banner-menu'>
<legend class='e-hideme'>".BNRLAN_36."</legend>
<table class='table adminform'>
<colgroup span='2'>
<col class='col-label' />
<col class='col-control' />
</colgroup>
<tbody>
<tr>
<td>".BNRLAN_37."</td>
<td>".$frm->text('banner_caption', $menu_pref['banner_caption'],255,'size=xxlarge')."</td>
</tr>
<tr>
<td>".BNRLAN_39."</td>
<td>
";
if($all_catname)
{
foreach($all_catname as $name)
{
$text .= "
<div class='field-spacer'>
".$frm->checkbox('multiaction_cat_active[]', $name, in_array($name, $in_catname), $name)."
</div>
";
}
$text .= "
<div class='field-spacer control-group form-group'>
".$frm->admin_button('check_all', 'jstarget:multiaction_cat_active', 'checkall', LAN_CHECKALL)."
".$frm->admin_button('uncheck_all','jstarget:multiaction_cat_active', 'checkall', LAN_UNCHECKALL)."
</div>
";
}
else
{
$text .= BNRLAN_40;
}
$renderTypes = array(BNRLAN_44,'1 - '.BNRLAN_45,'2 - '.BNRLAN_46);
$renderTypes[3] = "3 - ".BNRLAN_47; //TODO
$text .= "
</td>
</tr>
<tr>
<td>".BNRLAN_41."</td>
<td>".$frm->number('banner_amount', $menu_pref['banner_amount'], 3)."<span class='field-help'>".BNRLAN_42."</span></td>
</tr>
<tr>
<td>".BNRLAN_43."</td>
<td>".$frm->select('banner_rendertype', $renderTypes, $menu_pref['banner_rendertype'],'size=xxlarge')."</td>
</tr>
</tbody>
</table>
<div class='buttons-bar center'>".
$frm->admin_button('update_menu','no-value','update', LAN_UPDATE)."
</div>
</fieldset>
</form>
";
return $mes->render().$text;
// $ns->tablerender(LAN_PLUGIN_BANNER_NAME.SEP.BNRLAN_36, $mes->render() . $text);
}
}
class banner_form_ui extends e_admin_form_ui
{
private $campaigns = array();
private $clients = array();
private $logins = array();
private $passwords = array();
function init()
{
$sql = e107::getDb();
if ($sql->select("banner"))
{
while ($banner_row = $sql->fetch())
{
if (strpos($banner_row['banner_campaign'], "^") !== FALSE)
{
$campaignsplit = explode("^", $banner_row['banner_campaign']);
$banner_row['banner_campaign'] = $campaignsplit[0];
}
if ($banner_row['banner_campaign'])
{
$this->campaigns[$banner_row['banner_campaign']] = $banner_row['banner_campaign'];
}
if ($banner_row['banner_clientname'])
{
$this->clients[$banner_row['banner_clientname']] = $banner_row['banner_clientname'];
}
if ($banner_row['banner_clientlogin'])
{
$this->logins[] = $banner_row['banner_clientlogin'];
}
if ($banner_row['banner_clientpassword'])
{
$this->passwords[] = $banner_row['banner_clientpassword'];
}
}
}
}
// Custom Method/Function
function banner_clientname($curVal,$mode)
{
$frm = e107::getForm();
switch($mode)
{
case 'read': // List Page
return $curVal;
break;
case 'write': // Edit Page
if (count($this->clients))
{
$text = $frm->select('banner_clientname_sel',$this->clients, $curVal,'', LAN_SELECT);
$text .= $frm->text('banner_clientname','','',array('placeholder'=> 'Or enter a new client'));
}
else
{
$text .= $frm->text('client_name',$curVal);
$text .= "<span class='field-help'>".BNRLAN_29."</span>";
}
return $text;
// return $frm->text('banner_clientname',$curVal);
break;
case 'filter':
case 'batch':
return $this->clients;
break;
}
}
// Custom Method/Function
function banner_clientlogin($curVal,$mode)
{
$frm = e107::getForm();
switch($mode)
{
case 'read': // List Page
return $curVal;
break;
case 'write': // Edit Page
return $frm->text('banner_clientlogin',$curVal);
break;
case 'filter':
case 'batch':
return $array;
break;
}
}
// Custom Method/Function
function banner_impressions($curVal,$mode)
{
$frm = e107::getForm();
switch($mode)
{
case 'read': // List Page
$banner_row = $this->getController()->getListModel()->getData();
// $impressions_left = ($banner_row['banner_impurchased'] ? $banner_row['banner_impurchased'] - $banner_row['banner_impressions'] : BANNERLAN_30);
$impressions_purchased = ($banner_row['banner_impurchased'] ? $banner_row['banner_impurchased'] : BANNERLAN_30);
return $curVal .' / '.$impressions_purchased;
break;
case 'write': // Edit Page
return $frm->text('banner_impressions',$curVal);
break;
case 'filter':
case 'batch':
return $array;
break;
}
}
// Custom Method/Function
function banner_campaign($curVal,$mode)
{
$frm = e107::getForm();
switch($mode)
{
case 'read': // List Page
return $curVal;
break;
case 'write': // Edit Page
if (count($this->campaigns))
{
$text = $frm->select('banner_campaign_sel',$this->campaigns, $curVal,'',LAN_SELECT);
$text .= $frm->text('banner_campaign','','',array('placeholder'=> 'Or enter a new campaign'));
}
else
{
$text = $frm->text('banner_campaign',$curVal);
}
return $text; // $frm->text('banner_campaign',$curVal);
break;
case 'filter':
case 'batch':
return $this->campaigns;
break;
}
}
// Custom Method/Function
function click_percentage($curVal,$mode)
{
if($mode != 'read')
{
return;
}
$frm = e107::getForm();
$banner_row = $this->getController()->getListModel()->getData();
// return print_a($banner_row,true);
$clickpercentage = ($banner_row['banner_clicks'] && $banner_row['banner_impressions'] ? round(($banner_row['banner_clicks'] / $banner_row['banner_impressions']) * 100,1)."%" : "-");
return $clickpercentage;
$impressions_left = ($banner_row['banner_impurchased'] ? $banner_row['banner_impurchased'] - $banner_row['banner_impressions'] : BANNERLAN_30);
$impressions_purchased = ($banner_row['banner_impurchased'] ? $banner_row['banner_impurchased'] : BANNERLAN_30);
}
}
new banner_admin();
require_once(e_ADMIN."auth.php");
e107::getAdminUI()->runPage();
require_once(e_ADMIN."footer.php");
exit;
//TODO - Put client/password in a separate table?
// ---------------------------- UNUSED Below here -------------------------------------------- //
require_once(e_ADMIN.'auth.php'); require_once(e_ADMIN.'auth.php');
require_once(e_HANDLER.'userclass_class.php'); require_once(e_HANDLER.'userclass_class.php');
require_once(e_HANDLER.'file_class.php'); require_once(e_HANDLER.'file_class.php');
$fl = e107::getFile();
$frm = e107::getForm();
$mes = e107::getMessage();
$tp = e107::getParser();
e107::lan('banner',false,'front');
e107::lan('banner',true,true); // e_PLUGIN.'banner/languages/'.e_LANGUAGE.'_admin_banner.php'
if(e_QUERY) if(e_QUERY)
@@ -54,6 +601,8 @@ $images = $fl->get_files(e_IMAGE.'banners/','','standard');
$menu_pref = e107::getConfig('menu')->getPref(''); $menu_pref = e107::getConfig('menu')->getPref('');
if (isset($_POST['update_menu'])) if (isset($_POST['update_menu']))
{ {
$temp['banner_caption'] = $tp->toDB($_POST['banner_caption']); $temp['banner_caption'] = $tp->toDB($_POST['banner_caption']);

View File

@@ -21,6 +21,10 @@ if (!e107::isInstalled('banner'))
} }
e107::includeLan(e_PLUGIN."banner/languages/".e_LANGUAGE."_banner.php"); // TODO e107::includeLan(e_PLUGIN."banner/languages/".e_LANGUAGE."_banner.php"); // TODO
e107::lan('banner');
$mes = e107::getMessage(); $mes = e107::getMessage();
$frm = e107::getForm(); $frm = e107::getForm();
@@ -37,9 +41,27 @@ if(e_QUERY)
exit; exit;
} }
if (!$BANNER_LOGIN_TABLE)
{
if(file_exists(THEME.'templates/banner/banner_template.php')) // v2.x location.
{
require_once (THEME.'templates/banner/banner_template.php');
}
elseif(file_exists(THEME."banner_template.php"))
{
require_once(THEME."banner_template.php");
}
else
{
require_once("banner_template.php");
}
}
require_once(HEADERF); require_once(HEADERF);
if (isset($_POST['clientsubmit'])) { if (isset($_POST['clientsubmit']))
{
$clean_login = $tp->toDB($_POST['clientlogin']); $clean_login = $tp->toDB($_POST['clientlogin']);
$clean_password = $tp->toDB($_POST['clientpassword']); $clean_password = $tp->toDB($_POST['clientpassword']);
@@ -92,39 +114,10 @@ if (isset($_POST['clientsubmit'])) {
} }
} }
// FIXME template loading
if (!$BANNER_TABLE)
{
if (file_exists(THEME."templates/banner/banner_template.php"))
{
require(THEME."templates/banner/banner_template.php");
}
elseif (file_exists(THEME."banner_template.php"))
{
require(THEME."banner_template.php");
}
else
{
require(e_PLUGIN."banner/banner_template.php");
}
}
$textstring .= preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE); $textstring .= preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE);
} }
} }
// FIXME template loading
if (!$BANNER_TABLE)
{
if (file_exists(THEME."banner_template.php"))
{
require(THEME."banner_template.php");
}
else
{
require(e_PLUGIN."banner/banner_template.php");
}
}
$textstart = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE_START); $textstart = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE_START);
$textend = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE_END); $textend = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_TABLE_END);
@@ -141,17 +134,7 @@ $BANNER_LOGIN_TABLE_LOGIN = $frm->text("clientlogin", $id);
$BANNER_LOGIN_TABLE_PASSW = $frm->password("clientpassword", $pw); $BANNER_LOGIN_TABLE_PASSW = $frm->password("clientpassword", $pw);
$BANNER_LOGIN_TABLE_SUBMIT = $frm->button("clientsubmit", LAN_CONTINUE, "submit"); $BANNER_LOGIN_TABLE_SUBMIT = $frm->button("clientsubmit", LAN_CONTINUE, "submit");
if (!$BANNER_LOGIN_TABLE)
{
if(file_exists(THEME."banner_template.php"))
{
require_once(THEME."banner_template.php");
}
else
{
require_once("banner_template.php");
}
}
$text = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_LOGIN_TABLE); $text = preg_replace("/\{(.*?)\}/e", '$\1', $BANNER_LOGIN_TABLE);
$ns->tablerender(BANNERLAN_19, $text); $ns->tablerender(BANNERLAN_19, $text);

View File

@@ -19,17 +19,6 @@
if (!defined('e107_INIT')) { exit; } if (!defined('e107_INIT')) { exit; }
/*
To define your own banner to use here ...
1. Go to admin -> banners and create a campaign, then add your banner to it
2. Add this line to this file ...
$campaign = NAME_OF_YOUR_CAMPAIGN
3. Save file
*/
if(file_exists(THEME.'templates/banner/banner_template.php')) // v2.x location. if(file_exists(THEME.'templates/banner/banner_template.php')) // v2.x location.
{ {
@@ -46,16 +35,22 @@ else
$menu_pref = e107::getConfig('menu')->getPref(''); $menu_pref = e107::getConfig('menu')->getPref('');
if(isset($campaign)) if(defset('BOOTSTRAP'))
{ {
$parm = $campaign; $BANNER_MENU_START = $BANNER_TEMPLATE['menu']['start'];
$txt = $BANNER_MENU_START; $BANNER_MENU_ITEM = $BANNER_TEMPLATE['menu']['item'];
$txt .= e107::getParser()->parseTemplate("{BANNER=".$parm."}",true); $BANNER_MENU_END = $BANNER_TEMPLATE['menu']['end'];
$txt .= $BANNER_MENU_END;
} }
else else
{ {
$BANNER_MENU_ITEM = $BANNER_MENU;
}
/*
if(isset($menu_pref['banner_campaign']) && $menu_pref['banner_campaign']) if(isset($menu_pref['banner_campaign']) && $menu_pref['banner_campaign'])
{ {
$parms = array(); $parms = array();
@@ -79,27 +74,128 @@ else
$parms[] = $menu_pref['banner_campaign']; $parms[] = $menu_pref['banner_campaign'];
} }
$txt = $BANNER_MENU_START; $txt = e107::getParser()->parseTemplate($BANNER_MENU_START,true);
$sc = e107::getScBatch('banner');
foreach ($parms as $parm) foreach ($parms as $parm)
{ {
$txt .= e107::getParser()->parseTemplate("{BANNER=".$parm."}",true); $p = array('banner_campaign'=>$parm);
$sc->setVars($p);
$txt .= e107::getParser()->parseTemplate($BANNER_MENU_ITEM, true, $sc);
// $txt .= e107::getParser()->parseTemplate("{BANNER=".$parm."}",true);
} }
$txt .= $BANNER_MENU_END; $txt .= e107::getParser()->parseTemplate($BANNER_MENU_END,true);
} }
*/
}
if(isset($menu_pref['banner_rendertype']) && $menu_pref['banner_rendertype'] == 2) if(!empty($menu_pref['banner_campaign']) && !empty($menu_pref['banner_amount']))
{ {
$ns->tablerender($menu_pref['banner_caption'], $txt); $sc = e107::getScBatch('banner');
}
else $ret = array();
$head = e107::getParser()->parseTemplate($BANNER_MENU_START,true);
mt_srand ((double) microtime() * 1000000);
$seed = mt_rand(1,2000000000);
$time = time();
$tmp = explode("|", $menu_pref['banner_campaign']);
foreach($tmp as $v)
{ {
echo $txt; $filter[] = "banner_campaign=\"".$v."\"";
}
$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 .= ($parm ? " AND banner_campaign='".$tp->toDB($parm)."'" : '');
$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', $query,true))
{
foreach($data as $k=>$row)
{
$var = array('BANNER' => $sc->renderBanner($row));
$cat = $row['banner_campaign'];
$ret[$cat][] = $tp->simpleParse($BANNER_MENU_ITEM, $var);
}
}
$foot = e107::getParser()->parseTemplate($BANNER_MENU_END,true);
switch ($menu_pref['banner_rendertype'])
{
case 0: // All banners - no render or caption.
$text = "";
foreach($ret as $cat)
{
foreach($cat as $val)
{
$text .= $head.$val.$foot;
}
}
echo $text;
break;
case 1: // One menu for each campaign.
$text = "";
foreach($ret as $cat)
{
$text = "";
foreach($cat as $val)
{
$text .= $head.$val.$foot;
}
$ns->tablerender($menu_pref['banner_caption'], $text, 'banner-menu');
}
break;
case 3: // one rendered menu per banner
foreach($ret as $cat)
{
foreach($cat as $val)
{
$ns->tablerender($menu_pref['banner_caption'], $head.$val.$foot, 'banner-menu');
}
}
break;
case 2: // all campaigns/banners single menu.
default:
$text = "";
foreach($ret as $cat)
{
foreach($cat as $val)
{
$text .= $head.$val.$foot;
}
}
$ns->tablerender($menu_pref['banner_caption'], $text, 'banner-menu');
break;
} }
}
?> ?>

View File

@@ -96,6 +96,17 @@ if(!isset($BANNER_MENU_END))
{ {
$BANNER_MENU_END = "</div>"; $BANNER_MENU_END = "</div>";
} }
// ##### ------------------------------------------------------------------------------------------
// ##### ------------------------------------ v2.x ------------------------------------------------------
$BANNER_TEMPLATE['menu']['start'] = "<div class='banner-menu text-center'>{SETIMAGE: w=800}";
$BANNER_TEMPLATE['menu']['item'] = "<div class='banner-menu-item'>{BANNER}<br /><br /></div>";
$BANNER_TEMPLATE['menu']['end'] = "</div>";
?> ?>

View File

@@ -19,10 +19,14 @@
* @subpackage banner * @subpackage banner
*/ */
class banner_shortcodes class banner_shortcodes extends e_shortcode
{ {
function sc_banner($parm)
function sc_banner($parm='')
{ {
$e107 = e107::getInstance(); $e107 = e107::getInstance();
$sql = e107::getDb(); $sql = e107::getDb();
$tp = e107::getParser(); $tp = e107::getParser();
@@ -41,6 +45,20 @@ class banner_shortcodes
if($sql->select('banner', 'banner_id, banner_image, banner_clickurl', $query)) if($sql->select('banner', 'banner_id, banner_image, banner_clickurl', $query))
{ {
$row = $sql->fetch(); $row = $sql->fetch();
return $this->renderBanner($row);
}
else
{
return '&nbsp;';
}
}
// Also used by banner_menu.php
public function renderBanner($row)
{
$sql = e107::getDb('banner');
$tp = e107::getParser();
if(!$row['banner_image']) if(!$row['banner_image'])
{ {
@@ -48,6 +66,7 @@ class banner_shortcodes
} }
$fileext1 = substr(strrchr($row['banner_image'], '.'), 1); $fileext1 = substr(strrchr($row['banner_image'], '.'), 1);
$sql->update('banner', 'banner_impressions=banner_impressions+1 WHERE banner_id='.(int)$row['banner_id']); $sql->update('banner', 'banner_impressions=banner_impressions+1 WHERE banner_id='.(int)$row['banner_id']);
switch ($fileext1) switch ($fileext1)
@@ -62,25 +81,25 @@ class banner_shortcodes
</object> </object>
"; ";
break; break;
case 'html': case 'html':
case 'js': case 'js':
case 'php': // Code - may 'echo' text, or may return it as a value case 'php': // Code - may 'echo' text, or may return it as a value
$file_data = file_get_contents(e_IMAGE.'banners/'.$row['banner_image']); $file_data = file_get_contents(e_IMAGE.'banners/'.$row['banner_image']);
return $file_data; return $file_data;
break; break;
default: default:
$src = ($row['banner_image'][0] == '{') ? $tp->replaceConstants($row['banner_image'],'full') : e_IMAGE_ABS.'banners/'.$row['banner_image']; $src = ($row['banner_image'][0] == '{') ? $tp->thumbUrl($row['banner_image']) : e_IMAGE_ABS.'banners/'.$row['banner_image'];
$ban_ret = "<img class='e-banner img-responsive' src='".$src."' alt='".$row['banner_clickurl']."' style='border:0' />"; $ban_ret = "<img class='e-banner img-responsive' src='".$src."' alt='".$row['banner_clickurl']."' style='border:0' />";
break; break;
} }
return "<a href='".e_HTTP.'banner.php?'.$row['banner_id']."' rel='external'>".$ban_ret.'</a>'; return "<a href='".e_HTTP.'banner.php?'.$row['banner_id']."' rel='external'>".$ban_ret.'</a>';
} }
else
{
return '&nbsp;';
}
}
} }
?> ?>

View File

@@ -61,6 +61,6 @@ define("BNRLAN_43", "How to show the campaigns?"); // BANNER_MENU_L10
define("BNRLAN_44", "Choose render type ..."); // BANNER_MENU_L11 define("BNRLAN_44", "Choose render type ..."); // BANNER_MENU_L11
define("BNRLAN_45", "One campaign in a single menu"); // BANNER_MENU_L12 define("BNRLAN_45", "One campaign in a single menu"); // BANNER_MENU_L12
define("BNRLAN_46", "All selected campaigns in one single menu"); // BANNER_MENU_L13 define("BNRLAN_46", "All selected campaigns in one single menu"); // BANNER_MENU_L13
// define("BNRLAN_47", "All selected campaigns in separate menus"); // BANNER_MENU_L14 define("BNRLAN_47", "All selected campaigns in separate menus"); // BANNER_MENU_L14
?> ?>