* @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'); $abo = new account_billing; echo $abo->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) { include_once(PATH_CORE.'list_staticlist.inc.php'); return list_menu_staticlist($type,$input_id,$name,$default,$class,$all); } public function format_currency($number,$currency_id=DEFAULT_CURRENCY) { $number = $this->format_currency_decimal($number,$currency_id); if (! $currency_id) $currency_id = DEFAULT_CURRENCY; return sprintf('%s%s %s', $this->format_currency[$currency_id]['symbol'], ($number > .05 || $number == 0 || $number < -1 || DEFAULT_DECIMAL_PLACE == 2) ? number_format($number,DEFAULT_DECIMAL_PLACE) : number_format($this->format_currency_decimal($number,$currency_id,2)), $this->currency_iso($currency_id)); } public function format_currency_num($number,$currency_id=DEFAULT_CURRENCY) { $number = $this->format_currency_decimal($number,$currency_id); if (! $currency_id) $currency_id = DEFAULT_CURRENCY; return sprintf('%s%s', $this->format_currency[$currency_id]['symbol'], ($number > .05 || $number == 0 || $number < -1 || DEFAULT_DECIMAL_PLACE == 2) ? number_format($number,DEFAULT_DECIMAL_PLACE) : number_format($this->format_currency_decimal($number,$currency_id),2)); } public function format_currency_decimal($number,$currency_id,$decimals=DEFAULT_DECIMAL_PLACE) { return ($number); 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'],$decimals); } public function currency_list($ret,$currency_id=DEFAULT_CURRENCY) { global $smarty; if (! isset($this->format_currency[$currency_id])) $this->currency(DEFAULT_CURRENCY); $smarty->assign($ret,$this->format_currency[DEFAULT_CURRENCY]['convert']); } public function currency_iso($currency_id=DEFAULT_CURRENCY) { if (! isset($this->format_currency[$currency_id])) $this->currency(DEFAULT_CURRENCY); return $this->format_currency[$currency_id]['iso']; } public function currency($currency_id) { static $CACHE = array(); $db = &DB(); if (! isset($CACHE[$currency_id])) { $rs = $db->Execute(sqlSelect('currency','*',array('where'=>array('id'=>$currency_id)))); if ($rs && $rs->RecordCount()) $this->format_currency[$currency_id] = array( 'symbol' => $rs->fields['symbol'], 'convert' => unserialize($rs->fields['convert_array']), 'iso' => $rs->fields['three_digit']); else return false; } return true; } public 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); } public 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); } public 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); } public function calender_view($field,$default,$css,$id) { include_once(PATH_CORE.'list_calendar.inc.php'); if (isset($default) && $default != '' && $default != '0') $default = date(UNIX_DATE_FORMAT,$default); else $default = ''; 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? public function calender_add_static_var($field,$default,$css) { include_once(PATH_CORE.'list_calendar.inc.php'); if ($default == 'now') $default = date(UNIX_DATE_FORMAT,time()); echo list_calender_add_static($field,$default,$css); } public function calender_search($field,$default,$css) { if ($default == 'now') $default = date(UNIX_DATE_FORMAT,time()); foreach (array(0,1) as $id) { printf('  ',$field,$id); $this->calender_view($field,$default,$css,$id); echo '
'; } } public function setup_default_date($default,$css) { include_once(PATH_CORE.'list_setup_default_date.inc.php'); echo list_setup_default_date($default,$css); } public 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); } public function time($date) { if ($date == '') $date = time(); return date(DEFAULT_TIME_FORMAT,$date); } public function date($date) { if ($date == '') $date = time(); return date(UNIX_DATE_FORMAT,$date); } public function date_time($date) { if ($date == '') return 'UNKNOWN'; return sprintf('%s %s',$this->date($date),$this->time($date)); } public function unserial($data,$var) { global $smarty; if (is_string($data)) $array = unserialize($data); if (is_array($array)) $smarty->assign($var,$array); } public function smarty_array($table,$field,$sql,$return) { return $this->tmSmartyArray($table,$field,$sql,$return); } public function tmSmartyArray($table,$field,$sql,$return) { $db = &DB(); $smart = array(); # @todo this sqlSelect() is using a call for DEFAULT_SITE until all calls to smarty_array() dont start $sql with 'AND' $result = $db->Execute($s=sqlSelect($table,sprintf('id,%s',$field),array('where'=>sprintf('site_id=%s %s',DEFAULT_SITE,$sql),'orderby'=>$field))); if (! $result) { global $C_debug; $C_debug->error(__FILE__,__METHOD__,$db->ErrorMsg()); return false; } while (! $result->EOF) { array_push($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='') { # If the field is blank, we'll just return true/false if (! $field) return $curr_value ? _('Yes') : _('No'); if ($curr_value == 'all') { $true = ''; $false= ''; } elseif($curr_value == '1') { $true = ' selected="selected"'; $false= ''; } else { $true = ''; $false= ' selected="selected"'; } $return = sprintf(''; echo $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 /** * Check if a module is installed * * @param string Name of Module to check * @return string include path to module, if installed, otherwise false */ public function is_installed($module) { $file = sprintf('%s%s/%s.inc.php',PATH_MODULES,$module,$module); # If we have already checked, then return the file. if (isset($this->is_installed[$module]) && $this->is_installed[$module]) return $file; if (file_exists($file) && $this->auth_method_by_name($module,'search')) { $this->is_installed[$module] = true; return $file; } $db = &DB(); $result = $db->Execute(sqlSelect('module','id',array('where'=>array('name'=>$module,'status'=>1)))); if ($result && $result->RecordCount() && file_exists($file)) { $this->is_installed[$module] = true; return $file; } else { return false; } } # @todo this should probably be private? public 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(); } # @todo to deprecate private 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 # @todo to deprecate private function version() { die(); require_once(PATH_CORE.'version.inc.php'); } } ?>