/root/includes/acp/acp_ads.php
PHP | 676 lines | 639 code | 13 blank | 24 comment | 20 complexity | fdf22f3d2468912a864606e68c50907d MD5 | raw file
Possible License(s): AGPL-1.0
- <?php
- /**
- *
- * @package phpBB3 Advertisement Management
- * @version $Id$
- * @copyright (c) 2008 EXreaction
- * @license http://opensource.org/licenses/gpl-license.php GNU Public License
- *
- */
- /**
- * @ignore
- */
- if (!defined('IN_PHPBB'))
- {
- exit;
- }
- /**
- * @package acp
- */
- class acp_ads
- {
- var $u_action;
- var $new_config = array();
- function main($id, $mode)
- {
- global $db, $user, $auth, $template;
- global $cache, $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
- require($phpbb_root_path . 'ads/constants.' . $phpEx);
- require($phpbb_root_path . 'includes/functions_user.' . $phpEx);
- $user->add_lang('mods/ads');
- $this->tpl_name = 'acp_ads';
- $this->page_title = 'ACP_ADVERTISEMENT_MANAGEMENT';
- $action = request_var('action', '');
- $submit = (isset($_POST['submit'])) ? true : false;
- $position_id = request_var('p', 0);
- $ad_id = request_var('a', 0);
- $error = array();
- $ad_data = $position_data = false;
- // Check Form Key
- add_form_key('acp_ads');
- if ($submit && !check_form_key('acp_ads'))
- {
- trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
- }
- // Get the ad/position info if either id is sent.
- if ($ad_id)
- {
- $result = $db->sql_query('SELECT * FROM ' . ADS_TABLE . ' WHERE ad_id = ' . $ad_id);
- $ad_data = $db->sql_fetchrow($result);
- $db->sql_freeresult($result);
- if ($ad_data)
- {
- $ad_data['forums'] = $ad_data['groups'] = $ad_data['positions'] = array();
- $result = $db->sql_query('SELECT forum_id FROM ' . ADS_FORUMS_TABLE . ' WHERE ad_id = ' . $ad_id);
- while ($row = $db->sql_fetchrow($result))
- {
- $ad_data['forums'][] = $row['forum_id'];
- }
- $db->sql_freeresult($result);
- $result = $db->sql_query('SELECT group_id FROM ' . ADS_GROUPS_TABLE . ' WHERE ad_id = ' . $ad_id);
- while ($row = $db->sql_fetchrow($result))
- {
- $ad_data['groups'][] = $row['group_id'];
- }
- $db->sql_freeresult($result);
- $result = $db->sql_query('SELECT position_id FROM ' . ADS_IN_POSITIONS_TABLE . ' WHERE ad_id = ' . $ad_id);
- while ($row = $db->sql_fetchrow($result))
- {
- $ad_data['positions'][] = $row['position_id'];
- }
- $db->sql_freeresult($result);
- }
- }
- if ($position_id)
- {
- $result = $db->sql_query('SELECT * FROM ' . ADS_POSITIONS_TABLE . ' WHERE position_id = ' . $position_id);
- $position_data = $db->sql_fetchrow($result);
- $db->sql_freeresult($result);
- }
- // Config Variables
- $config_vars = array(
- 'legend1' => 'ACP_ADVERTISEMENT_MANAGEMENT_SETTINGS',
- 'ads_enable' => array('lang' => 'ADS_ENABLE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
- 'ads_rules_groups' => array('lang' => 'ADS_RULES_GROUPS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
- 'ads_rules_forums' => array('lang' => 'ADS_RULES_FORUMS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
- 'ads_count_clicks' => array('lang' => 'ADS_COUNT_CLICKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
- 'ads_count_views' => array('lang' => 'ADS_COUNT_VIEWS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
- 'ads_accurate_views' => array('lang' => 'ADS_ACCURATE_VIEWS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
- 'ads_group' => array('lang' => 'ADS_GROUP', 'validate' => 'int:0', 'type' => 'select', 'method' => 'group_select', 'explain' => true),
- );
- $this->new_config = $config;
- $this->new_config = (isset($_REQUEST['config'])) ? utf8_normalize_nfc(request_var('config', array('' => ''), true)) : $this->new_config;
- // Other settings
- $ad_name = utf8_normalize_nfc(request_var('ad_name', '', true));
- $ad_code = utf8_normalize_nfc(request_var('ad_code', '', true));
- $ad_note = utf8_normalize_nfc(request_var('ad_note', '', true));
- $ad_time_end = (utf8_normalize_nfc(request_var('ad_time_end', '', true))) ? strtotime(utf8_normalize_nfc(request_var('ad_time_end', '', true))) : 0;
- $ad_groups = request_var('ad_groups', array(0), true);
- $ad_forums = request_var('ad_forums', array(0), true);
- $ad_positions = request_var('ad_positions', array(0), true);
- $position_name = request_var('position_name', '');
- $ad_owner = utf8_normalize_nfc(request_var('ad_owner', '', true));
- $ad_owner_id = 0;
- switch ($action)
- {
- /**************************************************************************************
- *
- * Add/Edit Advertisement/Position
- *
- **************************************************************************************/
- case 'add' :
- case 'edit' :
- case 'copy' :
- if ($position_id || ($position_name && $submit))
- {
- if (($action == 'edit' || $action == 'copy') && !$position_data)
- {
- trigger_error($user->lang['POSITION_NOT_EXIST'] . adm_back_link($this->u_action));
- }
- if ($action == 'add')
- {
- // Make sure the given position name isn't already in the database.
- $sql = 'SELECT position_id FROM ' . ADS_POSITIONS_TABLE . ' WHERE lang_key = \'' . $db->sql_escape($position_name) . "'";
- $result = $db->sql_query($sql);
- if ($db->sql_fetchrow($result))
- {
- trigger_error($user->lang['POSTITION_ALREADY_EXIST'] . adm_back_link($this->u_action));
- }
- $db->sql_query('INSERT INTO ' . ADS_POSITIONS_TABLE . ' ' . $db->sql_build_array('INSERT', array('lang_key' => $position_name)));
- }
- else
- {
- if ($submit && $position_name != $position_data['lang_key'])
- {
- // Make sure the given position name isn't already in the database.
- $sql = 'SELECT position_id FROM ' . ADS_POSITIONS_TABLE . ' WHERE lang_key = \'' . $db->sql_escape($position_name) . "'";
- $result = $db->sql_query($sql);
- if ($db->sql_fetchrow($result))
- {
- trigger_error($user->lang['POSTITION_ALREADY_EXIST'] . adm_back_link($this->u_action));
- }
- $db->sql_query('UPDATE ' . ADS_POSITIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array('lang_key' => $position_name)) . ' WHERE position_id = ' . $position_id);
- }
- else
- {
- $template->assign_vars(array(
- 'S_EDIT_POSITION' => true,
- 'POSITION_NAME' => $position_data['lang_key'],
- ));
- }
- }
- if ($submit)
- {
- $cache->destroy('sql', ADS_POSITIONS_TABLE);
- trigger_error((($action == 'add') ? $user->lang['POSTITION_ADD_SUCCESS'] : $user->lang['POSITION_EDIT_SUCCESS']) . adm_back_link($this->u_action));
- }
- }
- else if ($ad_id || !$position_name)
- {
- if (($action == 'edit' || $action == 'copy') && !$ad_data)
- {
- trigger_error($user->lang['AD_NOT_EXIST'] . adm_back_link($this->u_action));
- }
- // Check for errors
- if ($submit)
- {
- if (!$ad_name)
- {
- $error[] = $user->lang['NO_AD_NAME'];
- }
- if ($ad_time_end !== false && $ad_time_end > 0 && $ad_time_end < time())
- {
- $error[] = $user->lang['AD_TIME_END_BEFORE_NOW'];
- }
- if ($ad_owner)
- {
- $sql = 'SELECT user_id FROM ' . USERS_TABLE . '
- WHERE user_type <> ' . USER_IGNORE . '
- AND ' . ((is_numeric($ad_owner)) ? 'user_id = ' . (int) $ad_owner : 'username_clean = \'' . $db->sql_escape(utf8_clean_string($ad_owner)) . '\'');
- $result = $db->sql_query($sql);
- $user_row = $db->sql_fetchrow($result);
- $db->sql_freeresult($result);
- if (!$user_row)
- {
- $error[] = $user->lang['NO_USER'];
- }
- else
- {
- $ad_owner_id = $user_row['user_id'];
- }
- }
- }
- if ($submit && !sizeof($error))
- {
- $sql_ary = array(
- 'ad_name' => $ad_name,
- 'ad_code' => $ad_code,
- 'ad_note' => $ad_note,
- 'ad_time' => ($action == 'edit') ? $ad_data['ad_time'] : time(),
- 'ad_time_end' => ($ad_time_end !== false && $ad_time_end > 0) ? $ad_time_end : 0,
- 'ad_views' => request_var('ad_views', 0),
- 'ad_view_limit' => request_var('ad_view_limit', 0),
- 'ad_clicks' => request_var('ad_clicks', 0),
- 'ad_click_limit' => request_var('ad_click_limit', 0),
- 'ad_priority' => request_var('ad_priority', 5),
- 'ad_enabled' => (isset($_POST['ad_enabled'])) ? true : false,
- 'all_forums' => (isset($_POST['all_forums']) || !$config['ads_rules_forums']) ? true : false,
- 'ad_owner' => $ad_owner_id,
- );
- // Set them as able to see the ads page (stored as 1 for ad_user) and add them to the ads group if required
- if ($ad_owner_id && ($action != 'edit' || $ad_owner_id != $ad_data['ad_owner']))
- {
- $sql = 'UPDATE ' . USERS_TABLE . ' SET ad_owner = 1
- WHERE user_id = ' . (int) $ad_owner_id;
- $db->sql_query($sql);
- if ($config['ads_group'])
- {
- group_user_add($config['ads_group'], array($ad_owner_id));
- }
- }
- if ($action == 'edit')
- {
- $db->sql_query('UPDATE ' . ADS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE ad_id = ' . $ad_id);
- // Does the old owner have any ads anymore if the owner was changed?
- if ($ad_owner_id != $ad_data['ad_owner'])
- {
- $sql = 'SELECT COUNT(ad_id) AS count FROM ' . ADS_TABLE . '
- WHERE ad_owner = ' . $ad_data['ad_owner'];
- $db->sql_query($sql);
- $count = $db->sql_fetchfield('count');
- $db->sql_freeresult();
- if (!$count)
- {
- $sql = 'UPDATE ' . USERS_TABLE . ' SET ad_owner = 0
- WHERE user_id = ' . (int) $ad_data['ad_owner'];
- $db->sql_query($sql);
- if ($config['ads_group'])
- {
- group_user_del($config['ads_group'], array($ad_data['ad_owner']));
- }
- }
- }
- // This is the simplest way to update the groups/forums/positions list
- if ($config['ads_rules_groups'])
- {
- $db->sql_query('DELETE FROM ' . ADS_GROUPS_TABLE . ' WHERE ad_id = ' . $ad_id);
- }
- if ($config['ads_rules_forums'])
- {
- $db->sql_query('DELETE FROM ' . ADS_FORUMS_TABLE . ' WHERE ad_id = ' . $ad_id);
- }
- $db->sql_query('DELETE FROM ' . ADS_IN_POSITIONS_TABLE . ' WHERE ad_id = ' . $ad_id);
- }
- else
- {
- $db->sql_query('INSERT INTO ' . ADS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
- $ad_id = $db->sql_nextid();
- }
- if ($config['ads_rules_groups'])
- {
- foreach ($ad_groups as $group_id)
- {
- $db->sql_query('INSERT INTO ' . ADS_GROUPS_TABLE . ' ' . $db->sql_build_array('INSERT', array('ad_id' => $ad_id, 'group_id' => $group_id)));
- }
- $cache->destroy('sql', ADS_GROUPS_TABLE);
- }
- if ($config['ads_rules_forums'])
- {
- foreach ($ad_forums as $forum_id)
- {
- $db->sql_query('INSERT INTO ' . ADS_FORUMS_TABLE . ' ' . $db->sql_build_array('INSERT', array('ad_id' => $ad_id, 'forum_id' => $forum_id)));
- }
- $cache->destroy('sql', ADS_FORUMS_TABLE);
- }
- foreach ($ad_positions as $position_id)
- {
- $sql_ary = array(
- 'ad_id' => $ad_id,
- 'position_id' => $position_id,
- 'ad_priority' => request_var('ad_priority', 5),
- 'ad_enabled' => (isset($_POST['ad_enabled'])) ? true : false,
- 'all_forums' => (isset($_POST['all_forums']) || !$config['ads_rules_forums']) ? true : false,
- );
- $db->sql_query('INSERT INTO ' . ADS_IN_POSITIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
- }
- trigger_error((($action == 'edit') ? $user->lang['AD_EDIT_SUCCESS'] : $user->lang['AD_ADD_SUCCESS']) . adm_back_link($this->u_action));
- }
- else
- {
- $ad_owner = utf8_normalize_nfc(request_var('ad_owner', '', true));
- if (($action == 'edit' || $action == 'copy') && !$submit && $ad_data['ad_owner'])
- {
- $sql = 'SELECT username FROM ' . USERS_TABLE . '
- WHERE user_id = ' . (int) $ad_data['ad_owner'];
- $db->sql_query($sql);
- $ad_owner = $db->sql_fetchfield('username');
- $db->sql_freeresult();
- }
- $template->assign_vars(array(
- 'S_ADD_AD' => ($action == 'add' || $action == 'copy') ? true : false,
- 'S_EDIT_AD' => ($action == 'edit') ? true : false,
- 'S_RULES_GROUPS' => ($config['ads_rules_groups']) ? true : false,
- 'S_RULES_FORUMS' => ($config['ads_rules_forums']) ? true : false,
- 'AD_NAME' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_name'] : $ad_name,
- 'AD_CODE' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_code'] : $ad_code,
- 'AD_NOTE' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_note'] : $ad_note,
- 'AD_TIME_END' => (($action == 'edit' || $action == 'copy') && !$submit) ? (($ad_data['ad_time_end']) ? date('d F Y', $ad_data['ad_time_end']) : '') : (($ad_time_end) ? date('d F Y', $ad_time_end) : ''),
- 'AD_VIEW_LIMIT' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_view_limit'] : request_var('ad_view_limit', 0),
- 'AD_VIEWS' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_views'] : request_var('ad_views', 0),
- 'AD_CLICK_LIMIT' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_click_limit'] : request_var('ad_click_limit', 0),
- 'AD_CLICKS' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_clicks'] : request_var('ad_clicks', 0),
- 'AD_PRIORITY' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_priority'] : request_var('ad_priority', 5),
- 'AD_ENABLED' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['ad_enabled'] : ((!$submit && $action == 'add') || isset($_POST['ad_enabled'])) ? true : false,
- 'ALL_FORUMS' => (($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['all_forums'] : ((!$submit && $action == 'add') || isset($_POST['all_forums'])) ? true : false,
- 'AD_OWNER' => $ad_owner,
- 'U_ACTION' => $this->u_action . '&a=' . $ad_id . '&action=' . $action,
- ));
- // List the groups
- $sql = 'SELECT group_id, group_name FROM ' . GROUPS_TABLE . ' ORDER BY group_name ASC';
- $result = $db->sql_query($sql);
- while ($row = $db->sql_fetchrow($result))
- {
- $template->assign_block_vars('groups', array(
- 'GROUP_ID' => $row['group_id'],
- 'GROUP_NAME' => (isset($user->lang['G_' . $row['group_name']])) ? $user->lang['G_' . $row['group_name']] : $row['group_name'],
- 'S_SELECTED' => (in_array($row['group_id'], ((($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['groups'] : $ad_groups))) ? true : false,
- ));
- }
- $db->sql_freeresult($result);
- // List the forums
- $right = $padding = 0;
- $padding_store = array('0' => 0);
- $sql = 'SELECT forum_id, forum_name, parent_id, left_id, right_id FROM ' . FORUMS_TABLE . ' ORDER BY left_id ASC';
- $result = $db->sql_query($sql);
- while ($row = $db->sql_fetchrow($result))
- {
- if ($row['left_id'] < $right)
- {
- $padding++;
- $padding_store[$row['parent_id']] = $padding;
- }
- else if ($row['left_id'] > $right + 1)
- {
- $padding = (isset($padding_store[$row['parent_id']])) ? $padding_store[$row['parent_id']] : $padding;
- }
- $right = $row['right_id'];
- $template->assign_block_vars('forums', array(
- 'FORUM_ID' => $row['forum_id'],
- 'FORUM_NAME' => $row['forum_name'],
- 'S_SELECTED' => (in_array($row['forum_id'], ((($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['forums'] : $ad_forums))) ? true : false,
- ));
- for ($i = 0; $i < $padding; $i++)
- {
- $template->assign_block_vars('forums.level', array());
- }
- }
- $db->sql_freeresult($result);
- // List the positions
- $sql = 'SELECT * FROM ' . ADS_POSITIONS_TABLE . ' ORDER BY position_id ASC';
- $result = $db->sql_query($sql);
- while ($row = $db->sql_fetchrow($result))
- {
- $template->assign_block_vars('positions', array(
- 'POSITION_ID' => $row['position_id'],
- 'POSITION_NAME' => (isset($user->lang[$row['lang_key']])) ? $user->lang[$row['lang_key']] : $row['lang_key'],
- 'S_SELECTED' => (in_array($row['position_id'], ((($action == 'edit' || $action == 'copy') && !$submit) ? $ad_data['positions'] : $ad_positions))) ? true : false,
- ));
- }
- $db->sql_freeresult($result);
- }
- }
- break;
- /**************************************************************************************
- *
- * Delete Advertisement/Position
- *
- **************************************************************************************/
- case 'delete' :
- // Confirm that the ad/position exist.
- if ($ad_id)
- {
- if (!$ad_data)
- {
- trigger_error($user->lang['AD_NOT_EXIST'] . adm_back_link($this->u_action));
- }
- }
- else if ($position_id)
- {
- if (!$position_data)
- {
- trigger_error($user->lang['POSITION_NOT_EXIST'] . adm_back_link($this->u_action));
- }
- }
- if (confirm_box(true))
- {
- if ($ad_id)
- {
- $db->sql_query('DELETE FROM ' . ADS_TABLE . ' WHERE ad_id = ' . $ad_id);
- $db->sql_query('DELETE FROM ' . ADS_FORUMS_TABLE . ' WHERE ad_id = ' . $ad_id);
- $db->sql_query('DELETE FROM ' . ADS_GROUPS_TABLE . ' WHERE ad_id = ' . $ad_id);
- $db->sql_query('DELETE FROM ' . ADS_IN_POSITIONS_TABLE . ' WHERE ad_id = ' . $ad_id);
- $cache->destroy('sql', ADS_FORUMS_TABLE);
- $cache->destroy('sql', ADS_GROUPS_TABLE);
- // Does the old owner have any ads anymore if the owner was changed?
- $sql = 'SELECT COUNT(ad_id) AS count FROM ' . ADS_TABLE . '
- WHERE ad_owner = ' . $ad_data['ad_owner'];
- $db->sql_query($sql);
- $count = $db->sql_fetchfield('count');
- $db->sql_freeresult();
- if (!$count)
- {
- $sql = 'UPDATE ' . USERS_TABLE . ' SET ad_owner = 0
- WHERE user_id = ' . (int) $ad_data['ad_owner'];
- $db->sql_query($sql);
- if ($config['ads_group'])
- {
- group_user_del($config['ads_group'], array($ad_data['ad_owner']));
- }
- }
- trigger_error($user->lang['DELETE_AD_SUCCESS'] . adm_back_link($this->u_action));
- }
- else if ($position_id)
- {
- $db->sql_query('DELETE FROM ' . ADS_POSITIONS_TABLE . ' WHERE position_id = ' . $position_id);
- $db->sql_query('DELETE FROM ' . ADS_IN_POSITIONS_TABLE . ' WHERE position_id = ' . $position_id);
- $cache->destroy('sql', ADS_POSITIONS_TABLE);
- trigger_error($user->lang['DELETE_POSITION_SUCCESS'] . adm_back_link($this->u_action));
- }
- }
- else
- {
- confirm_box(false, (($ad_id) ? 'DELETE_AD' : 'DELETE_POSITION'));
- }
- redirect($this->u_action);
- break;
- /**************************************************************************************
- *
- * Enable/Disable Advertisements
- *
- **************************************************************************************/
- case 'enable' :
- case 'disable' :
- // Confirm that the ad exists
- if ($ad_id)
- {
- if (!$ad_data)
- {
- trigger_error($user->lang['AD_NOT_EXIST'] . adm_back_link($this->u_action));
- }
- }
- $sql = 'UPDATE ' . ADS_TABLE . '
- SET ad_enabled = ' . (($action == 'enable') ? 1 : 0) . '
- WHERE ad_id = ' . $ad_id;
- $db->sql_query($sql);
- $sql = 'UPDATE ' . ADS_IN_POSITIONS_TABLE . '
- SET ad_enabled = ' . (($action == 'enable') ? 1 : 0) . '
- WHERE ad_id = ' . $ad_id;
- $db->sql_query($sql);
- redirect($this->u_action);
- break;
- /**************************************************************************************
- *
- * List Advertisements, Positions, Config Settings
- *
- **************************************************************************************/
- default :
- validate_config_vars($config_vars, $this->new_config, $error);
- if ($submit && !sizeof($error))
- {
- // Config Variables
- foreach ($config_vars as $config_name => $null)
- {
- if (strpos($config_name, 'legend') === false)
- {
- set_config($config_name, $this->new_config[$config_name]);
- }
- }
- trigger_error($user->lang['ADVERTISEMENT_MANAGEMENT_UPDATE_SUCCESS'] . adm_back_link($this->u_action));
- }
- else
- {
- $template->assign_vars(array(
- 'S_POSITION_LIST' => true,
- 'S_AD_LIST' => true,
- 'U_ACTION' => $this->u_action,
- ));
- // Positions
- $sql = 'SELECT * FROM ' . ADS_POSITIONS_TABLE . ' ORDER BY position_id ASC';
- $result = $db->sql_query($sql);
- while ($row = $db->sql_fetchrow($result))
- {
- $template->assign_block_vars('positions', array(
- 'POSTITION_ID' => $row['position_id'],
- 'POSITION_NAME' => (isset($user->lang[$row['lang_key']])) ? $user->lang[$row['lang_key']] : $row['lang_key'],
- 'POSITION_CODE' => '{ADS_' . $row['position_id'] . '}',
- 'U_EDIT' => $this->u_action . '&action=edit&p=' . $row['position_id'],
- 'U_DELETE' => $this->u_action . '&action=delete&p=' . $row['position_id'],
- ));
- }
- $db->sql_freeresult($result);
- // Advertisements
- $sql_ary = array(
- 'SELECT' => 'u.user_id, u.username, u.user_colour, a. *',
- 'FROM' => array(
- ADS_TABLE => 'a',
- ),
- 'LEFT_JOIN' => array(
- array(
- 'FROM' => array(USERS_TABLE => 'u'),
- 'ON' => 'u.user_id = a.ad_owner'
- )
- ),
- 'ORDER_BY' => 'a.ad_owner DESC, a.ad_enabled DESC, a.ad_name ASC',
- );
- $sql = $db->sql_build_query('SELECT', $sql_ary);
- $result = $db->sql_query($sql);
- while ($row = $db->sql_fetchrow($result))
- {
- $template->assign_block_vars('ads', array(
- 'AD_ID' => $row['ad_id'],
- 'AD_NAME' => $row['ad_name'],
- 'AD_NOTE' => nl2br($row['ad_note']),
- 'AD_TIME' => ($row['ad_time']) ? date('Y-m-d', $row['ad_time']) : $user->lang['NA'],
- 'AD_ENABLED' => ($row['ad_enabled']) ? $user->lang['TRUE'] : '<strong>' . $user->lang['FALSE'] . '</strong>',
- 'AD_VIEWS' => $row['ad_views'],
- 'AD_CLICKS' => ($row['ad_clicks']) ? $row['ad_clicks'] : $user->lang['0_OR_NA'],
- 'AD_PRIORITY' => $row['ad_priority'],
- 'AD_OWNER' => ($row['ad_owner']) ? get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']) : '',
- 'U_EDIT' => $this->u_action . '&action=edit&a=' . $row['ad_id'],
- 'U_DELETE' => $this->u_action . '&action=delete&a=' . $row['ad_id'],
- 'U_COPY' => $this->u_action . '&action=copy&a=' . $row['ad_id'],
- 'U_ENABLE_DISABLE' => $this->u_action . '&action=' . (($row['ad_enabled']) ? 'disable' : 'enable') . '&a=' . $row['ad_id'],
- ));
- }
- $db->sql_freeresult($result);
- // Config Variables
- foreach ($config_vars as $config_key => $vars)
- {
- if (!is_array($vars) && strpos($config_key, 'legend') === false)
- {
- continue;
- }
- if (strpos($config_key, 'legend') !== false)
- {
- $template->assign_block_vars('options', array(
- 'S_LEGEND' => true,
- 'LEGEND' => (isset($user->lang[$vars])) ? $user->lang[$vars] : $vars)
- );
- continue;
- }
- $type = explode(':', $vars['type']);
- $l_explain = '';
- if ($vars['explain'] && isset($vars['lang_explain']))
- {
- $l_explain = (isset($user->lang[$vars['lang_explain']])) ? $user->lang[$vars['lang_explain']] : $vars['lang_explain'];
- }
- else if ($vars['explain'])
- {
- $l_explain = (isset($user->lang[$vars['lang'] . '_EXPLAIN'])) ? $user->lang[$vars['lang'] . '_EXPLAIN'] : '';
- }
- $template->assign_block_vars('options', array(
- 'KEY' => $config_key,
- 'TITLE' => (isset($user->lang[$vars['lang']])) ? $user->lang[$vars['lang']] : $vars['lang'],
- 'S_EXPLAIN' => $vars['explain'],
- 'TITLE_EXPLAIN' => $l_explain,
- 'CONTENT' => build_cfg_template($type, $config_key, $this->new_config, $config_key, $vars),
- ));
- }
- }
- break;
- }
- $template->assign_vars(array(
- 'ERROR' => implode('<br />', $error),
- 'ADS_VERSION' => $config['ads_version'],
- ));
- }
- function group_select($selected_value, $key)
- {
- global $db, $user;
- $selected = ($selected_value == 0) ? ' selected="selected"' : '';
- $select = '<option value="0"' . $selected . '>----- ' . $user->lang['NA'] . ' -----</option>';
- $sql = 'SELECT *
- FROM ' . GROUPS_TABLE;
- $result = $db->sql_query($sql);
- while ($row = $db->sql_fetchrow($result))
- {
- if ($user->data['user_type'] != USER_FOUNDER && $row['group_founder_manage'])
- {
- continue;
- }
- $selected = ($selected_value == $row['group_id']) ? ' selected="selected"' : '';
- $lang = (isset($user->lang['G_' . $row['group_name']])) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
- $select .= '<option value="' . $row['group_id'] . '"' . $selected . '>' . $lang . '</option>';
- }
- $db->sql_freeresult($result);
- return $select;
- }
- }
- ?>