This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/modules/core/list.inc.php

659 lines
20 KiB
PHP
Raw Normal View History

<?php
/**
* AgileBill - Open Billing Software
*
* This body of work is free software; you can redistribute it and/or
* modify it under the terms of the Open AgileBill License
* License as published at http://www.agileco.com/agilebill/license1-4.txt
2009-08-03 04:10:16 +00:00
*
* Originally authored by Tony Landis, AgileBill LLC
*
* Recent modifications by Deon George
*
* @author Deon George <deonATleenooksDOTnet>
* @copyright 2009 Deon George
* @link http://osb.leenooks.net
*
* @link http://www.agileco.com/
* @copyright 2004-2008 Agileco, LLC.
* @license http://www.agileco.com/agilebill/license1-4.txt
2009-08-03 04:10:16 +00:00
* @author Tony Landis <tony@agileco.com>
* @package AgileBill
* @subpackage Core
*/
/**
* The main AgileBill CORE List Class
*
* @package AgileBill
2009-08-03 04:10:16 +00:00
* @subpackage Core
*/
2009-08-03 04:10:16 +00:00
class CORE_list {
private $id = 100;
/**
* @todo deprecite this function - replace with mmenu()
*/
public function menu($input_id,$name,$table,$field,$default,$class,$all=false) {
$this->mmenu($input_id,$name,$table,$field,$default,'',$class,$all);
}
2009-08-03 04:10:16 +00:00
/**
* Generate a select list, using the values in a table
*
* @param string $input_id HTML id="" value.
* + If 'no', then a hot click img wont be included
* + If 'all', then a blank item will be included
* @param string $name HTML name="" value.
* @param string $table Table to query for a list of items.
* @param string $field Column to query for a list of items.
* @param string $default Default Value to pre-select (if it exists)
* + If 'all', then a blank item will be included
* @param string|array $where SQL where conditions
* @param string $class CSS class for the select list
* @param bool $all If true, then a blank item will be included.
*
* @todo Remove the many ways of selecting all
*/
public function mmenu($input_id,$name,$table,$field,$default,$where,$class,$all=false) {
global $C_translate;
2009-08-03 04:10:16 +00:00
$noicon = false;
if ($input_id == 'no') {
$input_id = '';
$noicon = true;
}
if (! $input_id)
$input_id = sprintf('%s_%s_%s',$table,$field,$this->id++);
$db = &DB();
2009-08-03 04:10:16 +00:00
$result = $db->Execute(sqlSelect($db,$table,sprintf('id,%s',$field),$where,$field));
if ($result === false) {
global $C_debug;
2009-08-03 04:10:16 +00:00
$C_debug->error(__FILE__,__METHOD__,$db->ErrorMsg());
} else {
2009-08-03 04:10:16 +00:00
$return = sprintf('<select id="%s" name="%s" class="%s">',$input_id,$name,$class);
if ($all)
$return .= '<option value="">&nbsp;</option>';
$i = 0;
2009-08-03 04:10:16 +00:00
while (! $result->EOF) {
$return .= sprintf('<option value="%s"%s>%s</option>',$result->fields['id'],($default == $result->fields['id']) ? ' selected="selected"' : '',$result->fields[$field]);
$result->MoveNext();
2009-08-03 04:10:16 +00:00
$i++;
}
2009-08-03 04:10:16 +00:00
$return .= '</select>';
2009-08-03 04:10:16 +00:00
if ($i==0)
$return = $C_translate->translate('lists_none_defined');
if ($i > 0 && ! $noicon)
$return .= sprintf('&nbsp;<img src="themes/%s/images/icons/zoomi_16.gif" alt="Zoom" width="16" height="16" style="border: 0px;" onclick="menu_item_view(\'%s\',\'%s\');"/>',THEME_NAME,$table,$input_id);
echo $return;
}
}
function decrypt($data) {
include_once(PATH_CORE.'crypt.inc.php');
return CORE_decrypt($data);
}
function menu_cc_admin($field, $account, $default, $class, $user=false) {
include_once(PATH_MODULES . 'account_billing/account_billing.inc.php');
$acct_bill = new account_billing;
echo $acct_bill->menu_admin($field, $account, $default, $class, $user);
2009-08-03 04:10:16 +00:00
}
function menu_multi($default, $name, $table, $field, $id, $max, $class) {
2009-08-03 04:10:16 +00:00
include_once(PATH_CORE.'list_menu_multi.inc.php');
echo list_menu_multi($default, $name, $table, $field, $id, $max, $class);
}
function menu_files($id, $name, $default, $path, $pre, $ext, $class) {
2009-08-03 04:10:16 +00:00
include_once(PATH_CORE.'list_menu_files.inc.php');
echo list_menu_files($id, $name, $default, $path, $pre, $ext, $class);
}
2009-08-03 04:10:16 +00:00
/**
* Generate a list of frequently used selections in OSB
*
* @param string $type List type
* @param string $input_id HTML id="" value.
* @param string $name HTML name="" value.
* @param string $default Default Value to pre-select (if it exists)
* @param string $class CSS class for the select list
* @param bool $all If true, then a blank item will be included.
*/
public function menu_staticlist($type,$input_id,$name,$default,$class,$all=false) {
global $C_list;
# Whether the values are also keys.
$nokeys = false;
$list = array();
switch ($type) {
case 'assoc_grant_type':
$list = array(0=>_('Grant access for specified amount of days'),1=>_('Grant access while associated subscription is active'),2=>_('Grant access forerver'));
break;
case 'assoc_prod_type':
$list = array(0=>_('Require All Selected Products'),1=>_('Require Any One Selected Product'));
break;
case 'charge_sweep':
$list = array(0=>_('Daily'),1=>_('Weekly'),2=>_('Monthly'),3=>_('Quarterly'),4=>_('Semi-Annually'),5=>_('Annually'),6=>_('Service Rebill'));
break;
case 'commissiontype':
$list = array(0=>_('None'),1=>_('Percentage Based'),2=>('Flat Rate'));
break;
# @todo To deprecate this and standardise with commissiontype
case 'discounttype':
$list = array(0=>_('Percentage Based'),1=>('Flat Rate'));
break;
case 'copluginmode':
$list = array(0=>_('Test'),1=>_('Live'));
break;
case 'domaintype':
$list = array(
'register'=>_('Register'),
'transfer'=>_('Transfer'),
'park'=>_('Park')
);
break;
case 'email_piping':
$list = array(0=>'&nbsp;',1=>'POP',2=>'IMAP');
break;
case 'email_piping_action':
$list = array(0=>_('Leave message in mailbox'),1=>_('Delete message from mailbox'));
break;
case 'invoice_delivery':
$list = array(0=>_('None'),1=>_('E-Mail'),2=>_('Print'));
break;
case 'invoice_show_itemized':
$list = array(0=>_('Overview Only'),1=>_('Full Detail'));
break;
case 'nametitle':
$list = array(_('Mr'),_('Ms'),_('Mrs'),_('Miss'),_('Dr'),_('Prof'));
$nokeys = true;
break;
case 'os':
$list = array(0=>'Linux',1=>'Windows');
break;
case 'recur_schedule':
$list = array(0=>_('Weekly'),1=>_('Monthly'),2=>_('Quarterly'),3=>_('Semi-Annually'),4=>_('Annually'),5=>_('Two years'),6=>_('Three Years'));
break;
case 'recur_type':
$list = array(0=>_('Bill on Aniversary Date of Subscription'),1=>_('Bill on Fixed Schedule'));
break;
case 'pricetype':
$list = array(0=>_('One-time Charge'),1=>_('Recurring Membership/Subscription'),2=>_('Trial for Membership/Subscription'));
break;
case 'servicetype':
if ($C_list->is_installed('host_server')) {
$list['host'] = _('Hosting');
$list['host_group'] = _('Hosting & Group Access');
$list['domain'] = _('Domain Name');
}
$list['none'] = _('Recurring Only');
break;
case 'servicequeue':
$list = array(
'new'=>_('Add New'),
'active'=>_('Activate'),
'inactive'=>_('Deactivate'),
'delete'=>_('Delete'),
'edit'=>_('Edit/Update'),
'queue_none'=>_('None')
);
break;
case 'statictype':
$list = array(
'small_text'=>_('Small Text'),
'medium_text'=>_('Medium Text'),
'large_text'=>_('Large Text'),
'dropdown_list'=>_('Dropdown List'),
'calendar'=>_('Calendar'),
'file_upload'=>_('File Upload'),
'status'=>_('Status'),
'checkbox'=>_('Checkbox'),
'hidden'=>_('Hidden')
);
break;
case 'tasktype':
$list = array(0=>_('Internal Method'),1=>_('System Call'));
break;
case 'trial_length':
$list = array(0=>_('Days'),1=>_('Weeks'),2=>_('Months'));
break;
default: return sprintf('Unknown staticlist: %s',$type);
}
# If id is blank, we'll just return the value
if (! $input_id)
return $list[$default];
$return = sprintf('<select id="%s" name="%s" class="%s">',$input_id,$name,$class);
if ($all)
$return .= '<option value="">&nbsp;</option>';
foreach ($list as $element => $details) {
$selected = '';
if ($nokeys) {
if ($default == $details)
$selected = ' selected="selected"';
} else {
if ($default == $element)
$selected = ' selected="selected"';
}
$return .= sprintf('<option value="%s"%s>%s</option>',$nokeys ? $details : $element,$selected,$details);
}
$return .= '</select>';
return $return;
}
function format_currency ($number, $currency_id) {
2009-08-03 04:10:16 +00:00
if(empty($number)) $number = 0;
if(empty($currency_id)) $currency_id = DEFAULT_CURRENCY;
if(!isset($this->format_currency[$currency_id])) $this->currency($currency_id);
if($currency_id != DEFAULT_CURRENCY)
2009-08-03 04:10:16 +00:00
if(!isset($this->format_currency[DEFAULT_CURRENCY]))
$this->currency(DEFAULT_CURRENCY);
$number *= $this->format_currency[DEFAULT_CURRENCY]["convert"][$currency_id]["rate"];
if($number > .05 || $number == 0 || $number < -1)
return $this->format_currency[$currency_id]["symbol"]
. "" . number_format($number, DEFAULT_DECIMAL_PLACE) . " "
. $this->format_currency[$currency_id]["iso"];
else
return $this->format_currency[$currency_id]["symbol"]
. "" . number_format($number, 3) . " "
2009-08-03 04:10:16 +00:00
. $this->format_currency[$currency_id]["iso"];
}
function format_currency_num ($number, $currency_id) {
2009-08-03 04:10:16 +00:00
if(empty($number)) $number = 0;
if(empty($currency_id)) $currency_id = DEFAULT_CURRENCY;
if(!isset($this->format_currency[$currency_id])) $this->currency($currency_id);
2009-08-03 04:10:16 +00:00
if(!isset($this->format_currency[DEFAULT_CURRENCY])) $this->currency(DEFAULT_CURRENCY);
$number *= $this->format_currency[DEFAULT_CURRENCY]["convert"][$currency_id]["rate"];
if($number > .05 || $number == 0 || $number < -1)
return $this->format_currency[$currency_id]["symbol"] . number_format($number, DEFAULT_DECIMAL_PLACE);
else
2009-08-03 04:10:16 +00:00
return $this->format_currency[$currency_id]["symbol"] . number_format($number, 2);
}
function format_currency_decimal ($number, $currency_id) {
if(empty($number)) return 0;
if(empty($currency_id)) $currency_id = DEFAULT_CURRENCY;
if(!isset($this->format_currency[$currency_id])) $this->currency($currency_id);
2009-08-03 04:10:16 +00:00
if(!isset($this->format_currency[DEFAULT_CURRENCY])) $this->currency(DEFAULT_CURRENCY);
return round($number *= $this->format_currency[DEFAULT_CURRENCY]["convert"][$currency_id]["rate"], 2);
2009-08-03 04:10:16 +00:00
}
function currency_list($ret) {
if(!isset($this->format_currency[$currency_id])) $this->currency(DEFAULT_CURRENCY);
global $smarty;
2009-08-03 04:10:16 +00:00
$smarty->assign("$ret", $this->format_currency[DEFAULT_CURRENCY]["convert"]);
}
function currency_iso ($currency_id) {
if(empty($currency_id)) $currency_id = DEFAULT_CURRENCY;
if(!isset($this->format_currency[$currency_id])) $this->currency($currency_id);
return $this->format_currency[$currency_id]["iso"];
}
function currency($currency_id) {
$db = &DB();
$sql = 'SELECT * FROM ' . AGILE_DB_PREFIX . 'currency WHERE
site_id = ' . $db->qstr(DEFAULT_SITE) . ' AND
id = ' . $db->qstr($currency_id);
$result = $db->Execute($sql);
if($result->RecordCount() > 0) {
$this->format_currency[$currency_id] = Array (
'symbol' => $result->fields["symbol"],
'convert' => unserialize($result->fields["convert_array"]),
'iso' => $result->fields["three_digit"]);
return true;
} else {
return false;
}
}
function radio($input_id, $name, $table, $field, $id, $class) {
include_once(PATH_CORE . 'list_radio.inc.php');
2009-08-03 04:10:16 +00:00
echo list_radio($input_id, $name, $table, $field, $id, $class);
}
function check($input_id, $name, $table, $field, $default, $class) {
include_once(PATH_CORE . 'list_check.inc.php');
echo list_check($input_id, $name, $table, $field, $default, $class);
2009-08-03 04:10:16 +00:00
}
function select_groups($default, $field_name, $class, $size, $own_account) {
include_once(PATH_CORE . 'list_select_groups.inc.php');
return list_select_groups($default, $field_name, $class, $size, $own_account);
}
function calender_view($field, $default, $css, $id) {
2009-08-03 04:10:16 +00:00
if(isset($default) && $default != '' && $default != '0')
$default = date(UNIX_DATE_FORMAT, $default);
else
$default = '';
include_once(PATH_CORE.'list_calendar.inc.php');
2009-08-03 04:10:16 +00:00
echo list_calender_add($field, $default, $css,$id);
}
public function calender_add($field,$default,$css,$id='') {
if ($default == 'now')
$default = date(UNIX_DATE_FORMAT,time());
include_once(PATH_CORE.'list_calendar.inc.php');
2009-08-03 04:10:16 +00:00
echo list_calender_add($field,$default,$css,$id);
}
2009-08-03 04:10:16 +00:00
# @todo Remove?
function calender_add_static_var($field, $default, $css) {
if($default == 'now') $default = date(UNIX_DATE_FORMAT, time());
include_once(PATH_CORE.'list_calendar.inc.php');
echo list_calender_add_static($field, $default, $css);
}
2009-08-03 04:10:16 +00:00
function calender_search($field, $default, $css) {
if ($default == 'now')
$default = date(UNIX_DATE_FORMAT, time());
echo '
<select name="field_option['.$field.'][0]">
<option value=">">></option>
2009-08-03 04:10:16 +00:00
<option value="<"><</option>
<option value="<="><=</option>
<option value=">=">>=</option>
<option value="!=">!=</option>
2009-08-03 04:10:16 +00:00
</select>&nbsp;&nbsp;';
$this->calender_view($field,$default,$css,0);
echo '<br/>
<select name="field_option['.$field.'][1]">
<option value="<"><</option>
2009-08-03 04:10:16 +00:00
<option value=">">></option>
<option value="<="><=</option>
<option value=">=">>=</option>
<option value="!=">!=</option>
</select>&nbsp;&nbsp;';
2009-08-03 04:10:16 +00:00
$this->calender_view($field,$default,$css,1);
}
function setup_default_date($default, $css) {
include_once(PATH_CORE . 'list_setup_default_date.inc.php');
echo list_setup_default_date($default, $css);
}
2009-08-03 04:10:16 +00:00
function card_type_menu($default_selected, $checkout_id, $field='checkout_plugin_data[card_type]', $class,$all=false) {
include_once(PATH_CORE . 'list_card_type_menu.inc.php');
2009-08-03 04:10:16 +00:00
echo list_card_type_menu($default_selected, $checkout_id, $field, $class,$all);
}
2009-08-03 04:10:16 +00:00
function date($date) {
if($date == '') $date = time();
2009-08-03 04:10:16 +00:00
return date(UNIX_DATE_FORMAT, $date);
}
2009-08-03 04:10:16 +00:00
function date_time($date) {
if ($date == '')
return 'UNKNOWN';
$ret = date(UNIX_DATE_FORMAT, $date);
$ret .= " ".date(DEFAULT_TIME_FORMAT, $date);
return $ret;
}
function unserial ($data, $var) {
global $smarty;
if(is_string($data)) $array = unserialize($data);
2009-08-03 04:10:16 +00:00
if(is_array($array)) $smarty->assign($var, $array);
return;
}
function smarty_array($table, $field, $sql, $return) {
$db = &DB();
$sql= "SELECT id, $field FROM ".AGILE_DB_PREFIX."$table
WHERE site_id = '" . DEFAULT_SITE . "'" . $sql . "
ORDER BY $field";
2009-08-03 04:10:16 +00:00
$result = $db->Execute($sql);
if ($result === false)
{
global $C_debug;
2009-08-03 04:10:16 +00:00
$C_debug->error(__FILE__,__METHOD__,$db->ErrorMsg());
return false;
2009-08-03 04:10:16 +00:00
}
while (!$result->EOF)
2009-08-03 04:10:16 +00:00
{
$smart[] = $result->fields;
$result->MoveNext();
2009-08-03 04:10:16 +00:00
}
global $smarty;
$smarty->assign("$return", $smart);
return true;
}
function translate($table, $field1, $field2, $id, $var) {
global $smarty;
$db = &DB();
$sql= "SELECT id, $field1 FROM ".AGILE_DB_PREFIX."$table
WHERE site_id = " . $db->qstr(DEFAULT_SITE) . " AND
language_id = " . $db->qstr(SESS_LANGUAGE). " AND " .
$field2 . " = " . $db->qstr($id);
2009-08-03 04:10:16 +00:00
$result = $db->Execute($sql);
if ($result === false)
{
global $C_debug;
2009-08-03 04:10:16 +00:00
$C_debug->error(__FILE__,__METHOD__,$db->ErrorMsg());
return false;
} else if($result->RecordCount() > 0) {
$smarty->assign("$var", $result->fields);
return $result->fields;
} else {
if (SESS_LANGUAGE == DEFAULT_LANGUAGE) {
return false;
} else {
$sql= "SELECT id, $field1 FROM ".AGILE_DB_PREFIX."$table
WHERE site_id = " . $db->qstr(DEFAULT_SITE) . " AND
language_id = " . $db->qstr(DEFAULT_LANGUAGE). " AND " .
$field2 . " = " . $db->qstr($id);
2009-08-03 04:10:16 +00:00
$result = $db->Execute($sql);
if ($result === false) {
global $C_debug;
2009-08-03 04:10:16 +00:00
$C_debug->error(__FILE__,__METHOD__,$db->ErrorMsg());
return false;
} else if($result->RecordCount() > 0) {
$smarty->assign("$var", $result->fields);
return $result->fields;
} else {
return false;
}
}
}
}
2009-08-03 04:10:16 +00:00
public function bool($field,$curr_value,$class='form_menu',$extra='') {
global $C_translate;
2009-08-03 04:10:16 +00:00
# If the field is blank, we'll just return true/false
if (! $field)
return $curr_value ? $C_translate->translate('true') : $C_translate->translate('false');
if ($curr_value == 'all') {
$true = '';
$false= '';
2009-08-03 04:10:16 +00:00
} elseif($curr_value == '1') {
$true = ' selected="selected"';
$false= '';
2009-08-03 04:10:16 +00:00
} else {
$true = '';
2009-08-03 04:10:16 +00:00
$false= ' selected="selected"';
}
2009-08-03 04:10:16 +00:00
$return = sprintf('<select id="%s" name="%s" class="%s" %s>',$field,$field,$class,$extra);
if ($curr_value == 'all')
$return .= '<option value="" selected="selected">&nbsp;</option>';
$return .= sprintf('<option value="1"%s>%s</option>',$true,$C_translate->translate('true'));
$return .= sprintf('<option value="0"%s>%s</option>',$false,$C_translate->translate('false'));
$return .= '</select>';
echo $return;
}
2009-08-03 04:10:16 +00:00
// @todo this looks the same as bool()
function bool_static_var($field, $curr_value, $class) {
global $C_translate;
if ($curr_value == 'all') {
$true = '';
$false= '';
} else if ($curr_value == 0) {
$true = '';
$false= ' selected';
} else {
$true = ' selected';
$false= '';
}
2009-08-03 04:10:16 +00:00
$return = '<select id="'.$field.'" name="'. $field .'">';
if($curr_value == 'all')
2009-08-03 04:10:16 +00:00
$return .= '<option value="" selected>&nbsp;</option>';
$return .= '<option value="1"' . $true . '>'. $C_translate->translate('true', 'CORE','') . '</option>';
$return .= '<option value="0"' . $false . '>'. $C_translate->translate('false','CORE','') . '</option>';
2009-08-03 04:10:16 +00:00
$return .= '</select>';
return $return;
}
function graphview() {
global $VAR, $C_method;
$auth = Array('product:top', 'account_admin:top', 'affiliate:top', 'invoice:compare');
for($i=0; $i<count($auth); $i++) {
if($auth[$i] == $VAR['graph']) {
2009-03-28 05:20:19 +00:00
$m = explode(':', $VAR['graph']);
$C_method->exe_noauth($m[0], $m[1]);
exit;
}
}
}
function bar_graph() {
global $VAR;
require_once(PATH_CORE . 'graph.inc.php');
$graph = new CORE_graph;
@$module = $VAR['graph_module'];
@$range = $VAR['graph_range'];
@$start = $VAR['graph_start'];
@$extra = $VAR['graph_extra'];
$graph->BAR_graph($module, $range, $start, $extra);
}
function pie_graph() {
global $VAR;
require_once(PATH_CORE . 'graph.inc.php');
$graph = new CORE_graph;
@$module = $VAR['graph_module'];
@$method = $VAR['graph_method'];
@$range = $VAR['graph_range'];
@$start = $VAR['graph_start'];
@$extra = $VAR['graph_extra'];
$graph->PIE_graph($module, $method, $range, $start, $extra);
}
2009-08-03 04:10:16 +00:00
# @todo consider changing this so that it returns the .inc file if the module is installed
# so that $a = x->is_installed('y'); require_once $a can be used
function is_installed($module) {
if(@$this->is_installed[$module] == true) return true;
if($this->auth_method_by_name($module, 'search')) {
$this->is_installed[$module] = true;
return true;
}
$db = &DB();
$sql = 'SELECT id FROM ' . AGILE_DB_PREFIX . 'module WHERE
site_id = ' . $db->qstr(DEFAULT_SITE) . ' AND
name = ' . $db->qstr($module) . ' AND
status = ' . $db->qstr("1");
$result = $db->Execute($sql);
if($result->RecordCount() > 0) {
$this->is_installed[$module] = true;
return true;
} else {
return false;
}
}
function auth_method_by_name($module, $method) {
2009-08-03 04:10:16 +00:00
global $C_auth;
if (!is_object($C_auth))
return false;
return $C_auth->auth_method_by_name($module,$method);
}
2009-08-03 04:10:16 +00:00
/**
* Generate the admin menu
*/
public function generate_admin_menu() {
global $C_auth;
2009-08-03 04:10:16 +00:00
echo $C_auth->generate_admin_menu();
2009-08-03 04:10:16 +00:00
}
function account($field) {
if (empty($this->account) && SESS_LOGGED) {
$db = &DB();
$sql = 'SELECT * FROM ' . AGILE_DB_PREFIX . 'account WHERE
site_id = ' . $db->qstr(DEFAULT_SITE) . ' AND
id = ' . $db->qstr(SESS_ACCOUNT);
$result = $db->Execute($sql);
$this->account = $result->fields;
}
echo $this->account[$field];
2009-08-03 04:10:16 +00:00
}
# Get the AgileBill version info
function version() {
require_once(PATH_CORE.'version.inc.php');
}
}
2009-08-03 04:10:16 +00:00
?>