* @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 * @author Tony Landis * @package AgileBill * @subpackage Core */ /** * The main AgileBill CORE List Class * * @package AgileBill * @subpackage Core */ 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); } /** * 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; $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(); $result = $db->Execute(sqlSelect($db,$table,sprintf('id,%s',$field),$where,$field)); if ($result === false) { global $C_debug; $C_debug->error(__FILE__,__METHOD__,$db->ErrorMsg()); } else { $return = sprintf(''; if ($i==0) $return = $C_translate->translate('lists_none_defined'); if ($i > 0 && ! $noicon) $return .= sprintf(' Zoom',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); } function menu_multi($default, $name, $table, $field, $id, $max, $class) { 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) { include_once(PATH_CORE.'list_menu_files.inc.php'); echo list_menu_files($id, $name, $default, $path, $pre, $ext, $class); } /** * 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=>' ',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(''; return $return; } function format_currency ($number, $currency_id) { 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) 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) . " " . $this->format_currency[$currency_id]["iso"]; } function format_currency_num ($number, $currency_id) { 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(!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 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); if(!isset($this->format_currency[DEFAULT_CURRENCY])) $this->currency(DEFAULT_CURRENCY); return round($number *= $this->format_currency[DEFAULT_CURRENCY]["convert"][$currency_id]["rate"], 2); } function currency_list($ret) { if(!isset($this->format_currency[$currency_id])) $this->currency(DEFAULT_CURRENCY); global $smarty; $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'); 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); } 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) { if(isset($default) && $default != '' && $default != '0') $default = date(UNIX_DATE_FORMAT, $default); else $default = ''; include_once(PATH_CORE.'list_calendar.inc.php'); 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'); echo list_calender_add($field,$default,$css,$id); } # @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); } function calender_search($field, $default, $css) { if ($default == 'now') $default = date(UNIX_DATE_FORMAT, time()); echo '   '; $this->calender_view($field,$default,$css,0); echo '
  '; $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); } 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'); echo list_card_type_menu($default_selected, $checkout_id, $field, $class,$all); } function date($date) { if($date == '') $date = time(); return date(UNIX_DATE_FORMAT, $date); } 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); 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"; $result = $db->Execute($sql); if ($result === false) { global $C_debug; $C_debug->error(__FILE__,__METHOD__,$db->ErrorMsg()); return false; } while (!$result->EOF) { $smart[] = $result->fields; $result->MoveNext(); } 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); $result = $db->Execute($sql); if ($result === false) { global $C_debug; $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); $result = $db->Execute($sql); if ($result === false) { global $C_debug; $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; } } } } public function bool($field,$curr_value,$class='form_menu',$extra='') { global $C_translate; # 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= ''; } elseif($curr_value == '1') { $true = ' selected="selected"'; $false= ''; } else { $true = ''; $false= ' selected="selected"'; } $return = sprintf(''; echo $return; } // @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= ''; } $return = ''; return $return; } function graphview() { global $VAR, $C_method; $auth = Array('product:top', 'account_admin:top', 'affiliate:top', 'invoice:compare'); for($i=0; $iexe_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); } # @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) { global $C_auth; if (!is_object($C_auth)) return false; return $C_auth->auth_method_by_name($module,$method); } /** * Generate the admin menu */ public function generate_admin_menu() { global $C_auth; echo $C_auth->generate_admin_menu(); } 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]; } # Get the AgileBill version info function version() { require_once(PATH_CORE.'version.inc.php'); } } ?>