private static function t($str) { if (function_exists('_V')) { return _V($str); } return $str; }
protected function format_values($tab, $record_id) { $rb_obj = new RBO_RecordsetAccessor($tab); $record = $rb_obj->get_record($record_id); if (!$record) { return array(); } $access = Utils_RecordBrowserCommon::get_access($tab, 'view', $record); if (!$access) { return array(); } // use RB object instance for better display callback compatibility // some of them uses Utils_RecordBrowser::$rb_obj instance $rb = ModuleManager::new_instance('Utils_RecordBrowser', null, 'rb'); $rb->construct($tab); $rb->init($tab); $fields = Utils_RecordBrowserCommon::init($tab); $printable_data = array(); foreach ($fields as $f) { if ($access[$f['id']]) { $printable_data[] = array('label' => _V($f['name']), 'value' => $record->get_val($f['id'], true)); } } // fill rows - it's easier here than in template if ($this->fill_empty_rows()) { while (count($printable_data) % $this->cols() != 0) { $printable_data[] = array('label' => '', 'value' => ''); } } return $printable_data; }
public function applet($conf, &$opts) { $recordset = "quick_search"; $theme = $this->init_module('Base/Theme'); $form = $this->init_module('Libs/QuickForm'); $txtQuery = 'query_text'; $txtLabel = 'query_label'; $btnQuery = 'query_button'; $id = $conf['criteria']; $searchPrompt = Applets_QuickSearchCommon::getSearchPromptById($id); $conf['a_title'] = $conf['a_title'] == "Quick Search" ? Applets_QuickSearchCommon::getPresetNameById($id) : $conf['a_title']; $placeholder = $searchPrompt == "" ? "" : $searchPrompt; $opts['title'] = $conf['a_title']; $opts['go'] = false; load_css('modules/Applets/QuickSearch/theme/quick_form.css'); load_js('modules/Applets/QuickSearch/js/quicksearch.js'); //$js ='setDelayOnSearch()'; //eval_js($js); $txt = $form->addElement('text', $txtQuery, __('Search')); $txt->setAttribute('id', $txtQuery . "_" . $id); $txt->setAttribute('class', 'QuickSearch_text'); $txt->setAttribute('onkeypress', 'setDelayOnSearch(\'' . $id . '\')'); $txt->setAttribute('placeholder', _V($placeholder)); $theme->assign($txtLabel, __('Search')); $theme->assign($txtQuery, $txt->toHtml()); $theme->assign('search_id', $conf['criteria']); $theme->display('quick_form'); return true; }
public static function retrieve_help_from_file($module) { $file = 'modules/' . str_replace('_', '/', $module) . '/help/tutorials.hlp'; if (file_exists($file)) { $f = fopen($file, 'r'); } $ret = array(); $i = 0; while (!feof($f)) { $line = ''; while (!feof($f) && substr($line, -1, 1) != ']') { $line .= ($line ? '##' : '') . fgets($f); $line = trim($line); } $line = trim($line, '[]'); if (!$line) { continue; } $line = explode(':', $line); $func = array_shift($line); $arg = implode(':', $line); switch ($func) { case 'LABEL': $i++; $ret[$i] = array('label' => _V($arg), 'keywords' => '', 'context' => false, 'steps' => ''); break; case 'STEPS': $arg = explode('##', $arg); foreach ($arg as $k => $v) { if (!$v) { unset($arg[$k]); continue; } $tmp = explode('//', $v); if (isset($tmp[1])) { $arg[$k] = $tmp[0] . '//' . _V(trim($tmp[1])); } } $arg = implode('##', $arg); $ret[$i]['steps'] = $arg; break; case 'KEYWORDS': $ret[$i]['keywords'] = _V($arg); break; case 'CONTEXT': $ret[$i]['context'] = strtolower($arg) == 'true' ? true : false; break; default: } } return $ret; }
private static function check_for_links($prefix, $array, $mod, $prefixt = '') { $result = array(); foreach ($array as $k => $v) { if (substr($k, 0, 2) == '__') { continue; } $c_pre = $prefixt . _V($k); // ****** Menu options label if (is_array($v) && array_key_exists('__submenu__', $v)) { $result = array_merge($result, self::check_for_links($prefix . $k . ': ', $v, $mod, $c_pre . ': ')); } elseif (is_array($v)) { $result[] = array('name' => md5($prefix . $k), 'link' => $v, 'label' => $c_pre, 'module' => $mod); } } return $result; }
public function admin() { if ($this->is_back()) { $this->parent->reset(); return; } Base_ActionBarCommon::add('back', __('Back'), $this->create_back_href()); $form = $this->init_module('Libs/QuickForm'); foreach (Base_PrintCommon::get_registered_printers_translated() as $class_name => $printer_name) { $printer = Base_PrintCommon::printer_instance($class_name); $form->addElement('header', $printer_name, $printer_name); foreach ($printer->default_templates() as $tpl_name => $tpl) { $field_id = "{$class_name}::{$tpl_name}"; $field_id = preg_replace('/[^A-Za-z0-9_:]/', '_', $field_id); $form->addElement('checkbox', $field_id, _V($tpl_name)); $state = !Base_PrintCommon::is_template_disabled($class_name, $tpl_name); $form->setDefaults(array($field_id => $state)); } } if ($form->validate()) { $values = $form->exportValues(); foreach (Base_PrintCommon::get_registered_printers_translated() as $class_name => $printer_name) { $printer = Base_PrintCommon::printer_instance($class_name); foreach ($printer->default_templates() as $tpl_name => $tpl) { $field_id = "{$class_name}::{$tpl_name}"; $field_id = preg_replace('/[^A-Za-z0-9_:]/', '_', $field_id); $active = isset($values[$field_id]) ? $values[$field_id] : false; Base_PrintCommon::set_template_disabled($class_name, $tpl_name, $active); } } $this->parent->reset(); } else { Base_ActionBarCommon::add('save', __('Save'), $form->get_submit_form_href()); $this->display_module($form); } }
public static function user_settings() { if (!Base_EpesiStoreCommon::admin_access()) { return array(); } set_time_limit(0); // get default data from user contact $my_contact = ModuleManager::is_installed('CRM_Contacts') > -1 ? CRM_ContactsCommon::get_my_record() : array(); // key = field name from contact => value = field name in settings $keys = self::get_payment_data_keys(); $values = array(); // do user setting entries from data foreach ($keys as $k => $v) { $x = array('name' => $v, 'label' => _V(ucwords(str_replace('_', ' ', $v))), 'type' => 'text', 'default' => isset($my_contact[$k]) ? $my_contact[$k] : ''); if ($k == 'country') { $x['type'] = 'select'; $x['values'] = Utils_CommonDataCommon::get_translated_array('Countries'); } $values[] = $x; } return array(__('EPESI Store') => array_merge(array(array('name' => 'payments_header', 'label' => '', 'type' => 'header', 'default' => __('Payment credentials'))), $values)); }
$tab_info = Utils_RecordBrowserCommon::init($tab); $records = Utils_RecordBrowserCommon::get_records($tab, $crits, array(), $order, array(), $admin); header('Content-Type: text/csv'); //header('Content-Length: '.strlen($buffer)); header('Content-disposition: attachement; filename="' . $tab . '_export_' . date('Y_m_d__H_i_s') . '.csv"'); if (headers_sent()) { die('Some data has already been output to browser, can\'t send the file'); } $cols = array(__('Record ID'), __('Created on'), __('Created by'), __('Edited on'), __('Edited by')); foreach ($tab_info as $v) { if (!$v['export']) { continue; } $cols[] = _V($v['name']); if ($v['style'] == 'currency') { $cols[] = _V($v['name']) . ' - ' . __('Currency'); } } $f = fopen('php://output', 'w'); fwrite($f, ""); fputcsv($f, $cols); $currency_codes = DB::GetAssoc('SELECT symbol, code FROM utils_currency'); function rb_csv_export_format_currency_value($v, $symbol) { static $currency_decimal_signs = null; static $currency_thou_signs; if ($currency_decimal_signs === null) { $currency_decimal_signs = DB::GetAssoc('SELECT symbol, decimal_sign FROM utils_currency'); $currency_thou_signs = DB::GetAssoc('SELECT symbol, thousand_sign FROM utils_currency'); } $v = str_replace($currency_thou_signs[$symbol], '', $v);
/** * Set template in printer according to requested tpl, * first default if no one. Also set filename in document * @throws ErrorException */ protected function set_selected_template() { $printer = $this->get_printer(); $tpl = $this->get_tpl(); $templates = $printer->default_templates(); if (!$tpl) { $tpl = key($templates); $this->set_tpl($tpl); } if (!isset($templates[$tpl])) { throw new ErrorException('Wrong template'); } $template = $templates[$tpl]; if ($template) { $printer->set_template($template); } $printer->get_document()->set_filename(_V($tpl)); }
public function edit_home_page($id = null) { if ($this->is_back()) { return false; } $counts = 5; $all_clearances = array('' => '---') + array_flip(Base_AclCommon::get_clearance(true)); $home_pages = array('' => '---'); $current_clearance = 0; $form = $this->init_module('Libs_QuickForm'); $theme = $this->init_module('Base_Theme'); $theme->assign('labels', array('and' => '<span class="joint">' . __('and') . '</span>', 'or' => '<span class="joint">' . __('or') . '</span>', 'caption' => $id ? __('Edit Home Page') : __('Add Home Page'), 'clearance' => __('Clearance requried'), 'fields' => __('Fields allowed'), 'crits' => __('Criteria required'), 'add_clearance' => __('Add clearance'), 'add_or' => __('Add criteria (or)'), 'add_and' => __('Add criteria (and)'))); $tmp = Base_HomePageCommon::get_home_pages(); $home_pages = array(); foreach ($tmp as $k => $v) { $home_pages[$k] = _V($k); } // ****** - translating home_page options $form->addElement('select', 'home_page', __('Target Home Page'), array('' => '---') + $home_pages); if ($id) { $page = DB::GetOne('SELECT home_page FROM base_home_page WHERE id=%d', array($id)); $form->setDefaults(array('home_page' => $page)); } $form->addRule('home_page', __('Field required'), 'required'); for ($i = 0; $i < $counts; $i++) { $form->addElement('select', 'clearance_' . $i, __('Clearance'), $all_clearances); } $i = 0; $clearances = DB::GetAssoc('SELECT id, clearance FROM base_home_page_clearance WHERE home_page_id=%d', array($id)); foreach ($clearances as $v) { $form->setDefaults(array('clearance_' . $i => $v)); $i++; } $current_clearance = max($i - 1, 0); if ($form->validate()) { DB::StartTrans(); $vals = $form->exportValues(); $clearances = array(); for ($i = 0; $i < $counts; $i++) { if ($vals['clearance_' . $i]) { $clearances[] = $vals['clearance_' . $i]; } } if ($id !== null) { DB::Execute('DELETE FROM base_home_page_clearance WHERE home_page_id=%d', array($id)); DB::Execute('UPDATE base_home_page SET home_page=%s WHERE id=%d', array($vals['home_page'], $id)); } else { $prio = DB::GetOne('SELECT MAX(priority) FROM base_home_page') + 1; DB::Execute('INSERT INTO base_home_page (home_page,priority) VALUES (%s, %d)', array($vals['home_page'], $prio)); $id = DB::Insert_ID('base_home_page', 'id'); } foreach ($clearances as $c) { DB::Execute('INSERT INTO base_home_page_clearance (home_page_id, clearance) VALUES (%d, %s)', array($id, $c)); } DB::CompleteTrans(); return false; } $form->add_error_closing_buttons(); $form->assign_theme('form', $theme); $theme->assign('counts', $counts); $theme->display('edit_home_pages'); load_js('modules/Base/HomePage/edit_home_pages.js'); eval_js('base_home_page__init_clearance(' . $current_clearance . ', ' . $counts . ')'); eval_js('base_home_page__initialized = true;'); Base_ActionBarCommon::add('save', __('Save'), $form->get_submit_form_href()); Base_ActionBarCommon::add('delete', __('Cancel'), $this->create_back_href()); return true; }
public static function translate_array(&$arr) { foreach ($arr as $k => &$v) { if (is_array($v)) { $v =& $v['value']; } $v = _V($v); // ****** CommonData value translation } return $arr; }
$order_num = isset($_GET['order']) && isset($_GET['order_dir']) ? $_GET['order'] : -1; $order = false; //cols $cols = Utils_RecordBrowserCommon::init($table); $cols_out = array(); foreach ($cols as $k => $col) { if (!$col['visible'] && (!isset($info[$col['id']]) || !$info[$col['id']])) { continue; } if (isset($info[$col['id']]) && !$info[$col['id']]) { continue; } if (count($cols_out) == $order_num) { $order = $col['id']; } $col['name'] = _V($col['name']); if ($type != 'recent') { $cols_out[] = array('name' => $col['name'], 'order' => $col['id'], 'record' => $col, 'key' => $k); } else { $cols_out[] = array('name' => $col['name'], 'record' => $col, 'key' => $k); } } //views /*if($ret['recent'] && $type!='recent') print('<a '.(IPHONE?'class="button red" ':'').'href="mobile.php?'.http_build_query(array_merge($_GET,array('type'=>'recent','rb_offset'=>0))).'">'.__('Recent').'</a>'.(IPHONE?'':'<br>')); if($ret['favorites'] && $type!='favorites') print('<a '.(IPHONE?'class="button green" ':'').'href="mobile.php?'.http_build_query(array_merge($_GET,array('type'=>'favorites','rb_offset'=>0))).'">'.__('Favorites').'</a>'.(IPHONE?'':'<br>')); if(($ret['recent'] || $ret['favorites']) && $type!='all') print('<a '.(IPHONE?'class="button white" ':'').'href="mobile.php?'.http_build_query(array_merge($_GET,array('type'=>'all','rb_offset'=>0))).'">'.__('All').'</a>'.(IPHONE?'':'<br>'));*/ print '<form method="GET" action="mobile.php?' . http_build_query($_GET) . '">'; if (!IPHONE) { print '<table width="100%"><tr><td>'; } if (Utils_RecordBrowserCommon::get_access($table, 'add')) {
public function add_store_products(&$sorted, &$filters) { $registered = Base_EssClientCommon::has_license_key(); $filters_attrs = ''; if (!$registered) { if (TRIAL_MODE) { $msg = __('EPESI Store is not accessible during the trial.'); $filters_attrs = 'href="javascript:void(0);" onclick="alert(\'' . $msg . '\');"'; } else { $msg = __('To access EPESI Store it is necessary that you register your EPESI installation. Would you like to do this now?'); $filters_attrs = $this->create_confirm_callback_href($msg, array($this, 'jump_to_epesi_registration')); } } $filters[__('Updates')] = array('arg' => 'updates', 'attrs' => $filters_attrs); $filters[__('My Purchases')] = array('arg' => 'purchases', 'attrs' => $filters_attrs); $filters[__('Store')] = array('arg' => 'store', 'attrs' => $filters_attrs); if (!$registered) { return; } $store = Base_EpesiStoreCommon::get_modules_all_available(); print Base_EssClientCommon::client_messages_frame(); if (!$store) { return; } foreach ($store as $s) { $name = htmlspecialchars_decode($s['name']); // Module name is translated on the server $label = $s['action']; $downloaded = $label != Base_EpesiStoreCommon::ACTION_BUY && $label != Base_EpesiStoreCommon::ACTION_DOWNLOAD; if (!isset($s['total_price'])) { $s['total_price'] = $s['price']; } if ($label == Base_EpesiStoreCommon::ACTION_BUY && $s['total_price'] === 0) { $s['total_price'] = __('Free'); $label = 'obtain license'; } $b_label = _V(ucfirst($label)); // ****** EpesiStoreCommon - translations added in comments $button = array('label' => $b_label, 'style' => 'install', 'href' => Base_EpesiStoreCommon::action_href($s, $s['action'], array('Base_Setup', 'response_callback'))); if (isset($sorted[$name]) && $downloaded) { $sorted[$name]['filter'][] = 'purchases'; if ($label == Base_EpesiStoreCommon::ACTION_UPDATE) { $sorted[$name]['buttons'][] = $button; $sorted[$name]['filter'][] = 'updates'; $sorted[$name]['style'] = 'problem'; } if ($label == Base_EpesiStoreCommon::ACTION_RESTORE) { $button['style'] = 'problem'; $sorted[$name]['buttons'][] = $button; $sorted[$name]['style'] = 'disabled'; $sorted[$name]['status'] = __('Files modified'); } $sorted[$name]['url'] = $s['description_url']; $sorted[$name]['icon'] = $s['icon_url']; continue; } $sorted[$name] = array(); $sorted[$name]['core'] = 0; $sorted[$name]['url'] = $s['description_url']; $sorted[$name]['icon'] = $s['icon_url']; $sorted[$name]['name'] = $name; // ****** FIXME - modules names from the store $sorted[$name]['modules'] = array(); $sorted[$name]['options'] = array(); if (isset($s['paid']) && $s['paid']) { $status = __('Purchased'); $style = 'problem'; switch ($label) { case Base_EpesiStoreCommon::ACTION_RESTORE: $status = __('Files modified'); $button['style'] = 'uninstall'; $style = 'disabled'; break; case Base_EpesiStoreCommon::ACTION_INSTALL: $status = __('Ready to use'); $style = 'disabled'; break; case Base_EpesiStoreCommon::ACTION_UPDATE: $status = __('To update'); break; } $sorted[$name]['status'] = $status; $sorted[$name]['style'] = $style; $sorted[$name]['filter'] = array('purchases'); } else { $sorted[$name]['status'] = __('Price: %s', array($s['total_price'])); $sorted[$name]['style'] = 'store'; $sorted[$name]['filter'] = array('store'); $sorted[$name]['buttons_tooltip'] = $this->included_modules_text($s); } if ($label != Base_EpesiStoreCommon::ACTION_INSTALL) { $sorted[$name]['buttons'] = array($button); } $sorted[$name]['version'] = $s['version']; if ($label == Base_EpesiStoreCommon::ACTION_UPDATE) { $sorted[$name]['filter'][] = 'updates'; } $sorted[$name]['installed'] = null; $sorted[$name]['instalable'] = 0; $sorted[$name]['uninstalable'] = 0; } }
public static function QFfield_recordset(&$form, $field, $label, $mode, $default) { if ($mode == 'add' || $mode == 'edit') { $rss = DB::GetCol('SELECT f_recordset FROM task_related_data_1 WHERE active=1'); // remove currently selected value $key = array_search($default, $rss); if ($key !== false) { unset($rss[$key]); } $tabs = DB::GetAssoc('SELECT tab, caption FROM recordbrowser_table_properties WHERE tab not in (\'' . implode('\',\'', $rss) . '\') AND tab not like "%_related"'); foreach ($tabs as $k => $v) { $tabs[$k] = _V($v) . " ({$k})"; } $form->addElement('select', $field, $label, $tabs, array('id' => $field)); $form->addRule($field, 'Field required', 'required'); if ($mode == 'edit') { $form->setDefaults(array($field => $default)); } } else { $form->addElement('static', $field, $label); $form->setDefaults(array($field => $default)); } }
public function edit_rule($r_id, $p_id = null) { if ($this->is_back()) { return false; } $counts = 5; $all_clearances = array('' => '---') + array_flip(Base_AclCommon::get_clearance(true)); $translated_permission_names = array(); foreach (DB::GetAssoc('SELECT id, name FROM base_acl_permission ORDER BY name ASC') as $k => $v) { $translated_permission_names[$k] = _V($v); } $perms = array('' => '---') + $translated_permission_names; $current_clearance = 0; $form = $this->init_module('Libs_QuickForm'); $theme = $this->init_module('Base_Theme'); $theme->assign('labels', array('and' => '<span class="joint">' . __('and') . '</span>', 'or' => '<span class="joint">' . __('or') . '</span>', 'caption' => $r_id ? __('Edit permission rule') : __('Add permission rule'), 'clearance' => __('Clearance requried'), 'fields' => __('Fields allowed'), 'crits' => __('Criteria required'), 'add_clearance' => __('Add clearance'), 'add_or' => __('Add criteria (or)'), 'add_and' => __('Add criteria (and)'))); $form->addElement('select', 'permission', __('Permission'), $perms); if ($p_id) { $form->setDefaults(array('permission' => $p_id)); $form->freeze('permission'); } else { $form->addRule('permission', __('Field required'), 'required'); } for ($i = 0; $i < $counts; $i++) { $form->addElement('select', 'clearance_' . $i, __('Clearance'), $all_clearances); } $i = 0; $clearances = DB::GetAssoc('SELECT id, clearance FROM base_acl_rules_clearance WHERE rule_id=%d', array($r_id)); foreach ($clearances as $v) { $form->setDefaults(array('clearance_' . $i => $v)); $i++; } $current_clearance = max($i - 1, 0); if ($form->validate()) { $vals = $form->exportValues(); $clearances = array(); for ($i = 0; $i < $counts; $i++) { if ($vals['clearance_' . $i]) { $clearances[] = $vals['clearance_' . $i]; } } if ($r_id !== null) { DB::Execute('DELETE FROM base_acl_rules_clearance WHERE rule_id=%d', array($r_id)); } else { if (!$p_id) { $p_id = $vals['permission']; } DB::Execute('INSERT INTO base_acl_rules (permission_id) VALUES (%d)', array($p_id)); $r_id = DB::Insert_ID('base_acl_rules', 'id'); } foreach ($clearances as $c) { DB::Execute('INSERT INTO base_acl_rules_clearance (rule_id, clearance) VALUES (%d, %s)', array($r_id, $c)); } return false; } $form->add_error_closing_buttons(); $form->assign_theme('form', $theme); $theme->assign('counts', $counts); $theme->display('edit_permissions'); load_js('modules/Base/Acl/edit_permissions.js'); eval_js('base_acl__init_clearance(' . $current_clearance . ', ' . $counts . ')'); eval_js('base_acl__initialized = true;'); Base_ActionBarCommon::add('save', __('Save'), $form->get_submit_form_href()); Base_ActionBarCommon::add('delete', __('Cancel'), $this->create_back_href()); return true; }
public static function get_event_handlers() { $custom_events = DB::GetAssoc('SELECT id, group_name FROM crm_calendar_custom_events_handlers ORDER BY group_name'); foreach ($custom_events as $k => $v) { $custom_events[$k] = _V($v); } // ****** Calendar Custom handler label return $custom_events; }
$total = Utils_RecordBrowserCommon::get_records_count($tab, $crits, $admin, $order); if ($end > $total) $end = $total; $limit_info = __('Records %s to %s of %s', array($start, $end, $total)) . "\n"; } $tcpdf = Libs_TCPDFCommon::new_pdf(); $filters = implode(' ',Utils_RecordBrowserCommon::crits_to_words($tab, $crits)); $filters = strip_tags($filters); $filters = str_replace(' ', ' ', $filters); $filters = str_replace(' and ', "\n", $filters); $filters = str_replace(' is equal to', ':', $filters); $subject = $limit_info . $filters; Libs_TCPDFCommon::prepare_header($tcpdf, _V(DB::GetOne('SELECT caption FROM recordbrowser_table_properties WHERE tab=%s', array($tab))), $subject, false); Libs_TCPDFCommon::add_page($tcpdf); Libs_TCPDFCommon::SetFont($tcpdf, Libs_TCPDFCommon::$default_font, '', 6); $html = Libs_TCPDFCommon::stripHTML(str_replace(array('<br>',' '),array('<br/>',' '),$html)); Libs_TCPDFCommon::writeHTML($tcpdf, $html, false); $buffer = Libs_TCPDFCommon::output($tcpdf); header('Content-Type: application/pdf'); header('Content-Length: '.strlen($buffer)); header('Content-disposition: inline; filename="recordset_'.$tab.'.pdf"'); print($buffer);
public static function map_rb_field_to_query_builder_filters($tab, $f, $in_depth = true, $prefix = '', $sufix = '', $label_prefix = '') { $filters = array(); $type = null; $values = null; $input = null; $opts = array(); $opts['id'] = $prefix . $f['id'] . $sufix; $opts['field'] = $opts['id']; $opts['label'] = $label_prefix . _V($f['name']); if ($tab == 'contact' && $f['id'] == 'login' || $tab == 'rc_accounts' && $f['id'] == 'epesi_user') { $type = 'boolean'; // just for valid operators $input = 'select'; $values = array('' => '[' . __('Empty') . ']', 'USER_ID' => __('User Login')); } else { switch ($f['type']) { case 'text': $type = 'string'; break; case 'multiselect': case 'select': $param = explode(';', $f['param']); $ref = explode('::', $param[0]); $tabs = $ref[0]; if ($tabs == '__RECORDSETS__') { $single_tab = false; } else { $tabs = explode(',', $tabs); $single_tab = count($tabs) == 1; } $type = 'boolean'; $input = 'select'; $values = self::permissions_get_field_values($tab, $f, $in_depth); if ($in_depth && $single_tab) { $one_tab = reset($tabs); if (Utils_RecordBrowserCommon::check_table_name($one_tab, false, false)) { $fields = Utils_RecordBrowserCommon::init($one_tab); foreach ($fields as $k => $v) { if ($v['type'] == 'calculated' || $v['type'] == 'hidden') { } else { $new_label_prefix = _V($f['name']) . ' ' . __('is set to record where') . ' '; $sub_filter = self::map_rb_field_to_query_builder_filters($tab, $v, false, $f['id'] . '[', ']', $new_label_prefix); if ($sub_filter) { $sub_filter = reset($sub_filter); $sub_filter['optgroup'] = $new_label_prefix; $filters[] = $sub_filter; } } } } } break; case 'commondata': $type = 'boolean'; $input = 'select'; $array_id = is_array($f['param']) ? $f['param']['array_id'] : $f['ref_table']; $values = array('' => '[' . __('Empty') . ']'); if (strpos($array_id, '::') === false) { $values = $values + Utils_CommonDataCommon::get_translated_array($array_id, is_array($f['param']) ? $f['param']['order_by_key'] : false); } break; case 'integer': $type = 'integer'; break; case 'float': $type = 'double'; break; case 'timestamp': $type = 'datetime'; case 'date': if (!$type) { $type = 'date'; } // absolute value filter $opts['plugin'] = 'datepicker'; $opts['plugin_config'] = array('dateFormat' => 'yy-mm-dd'); // relative value filter $filt2 = $opts; $filt2['id'] .= '_relative'; $filt2['label'] .= ' (' . __('relative') . ')'; $filt2['type'] = 'date'; $filt2['input'] = 'select'; $filt2['values'] = self::permissions_get_field_values($tab, $f); $filters[] = $filt2; break; case 'time': $type = 'time'; break; case 'long text': $type = 'string'; $input = 'textarea'; break; case 'hidden': break; case 'calculated': break; case 'checkbox': $type = 'boolean'; break; case 'currency': $type = 'double'; break; case 'autonumber': break; } } if ($type) { $opts['type'] = $type; if ($values) { $opts['values'] = $values; } if ($input) { $opts['input'] = $input; } $filters[] = $opts; return $filters; } return null; }
$tray_def += array($tray_id => array('__title__' => $tray['__title__'], '__weight__' => isset($tray['__weight__']) ? $tray['__weight__'] : 0)); foreach ($tray['__slots__'] as $slot_id => $slot_def) { $cap = _V($tray['__title__']) . ' - ' . _V($slot_def['__name__']); $sort = isset($tab_settings['__mobile__']['sort']) ? $tab_settings['__mobile__']['sort'] : array(); $cols = isset($tab_settings['__mobile__']['cols']) ? $tab_settings['__mobile__']['cols'] : array(); $open = '<a ' . mobile_stack_href(array('Utils_TrayCommon', 'mobile_tray_rb'), array($tab, $slot_def['__crits__'], $sort, $cols), $cap) . '>'; $close = '</a>'; $tray_def[$tray_id]['__slots__'][$slot_id]['__weight__'] = isset($slot_def['__weight__']) ? $slot_def['__weight__'] : 0; if (IPHONE) { $row_info = ''; $row_info .= '<div>' . _V($tray['__title__']) . '</div><div>' . _V($slot_def['__name__']) . ' (' . $slot_def['__count__'] . ')</div>'; $row = $open . $row_info . $close; $tray_def[$tray_id]['__slots__'][$slot_id]['__html__'] = '<li class="arrow">' . $row . '</li>'; } else { $row = array(); $row = array($open . _V($tray['__title__']) . '<br>' . _V($slot_def['__name__']) . $close, $slot_def['__count__']); $tray_def[$tray_id]['__slots__'][$slot_id]['__html__'] = $row; } } } } Utils_TrayCommon::sort_trays($tray_def); if (IPHONE) { $html = ''; } else { $data_out = array(); } foreach ($tray_def as $tray_id => $def) { foreach ($def['__slots__'] as $slot) { if (IPHONE) { $html .= $slot['__html__'];
public static function process_event(&$row) { if (!isset($row['start']) && !(isset($row['timeless']) && $row['timeless'])) { trigger_error('Invalid return of event method: get(_all) (missing field \'start\' or \'timeless\' in ' . print_r($row, true) . ')', E_USER_ERROR); } if (!isset($row['duration']) || !is_numeric($row['duration'])) { trigger_error('Invalid return of event method: get(_all) (missing or not numeric field \'duration\' in ' . print_r($row, true) . ')', E_USER_ERROR); } if (!isset($row['title'])) { trigger_error('Invalid return of event method: get(_all) (missing field \'title\' in ' . print_r($row, true) . ')', E_USER_ERROR); } if (!isset($row['description'])) { trigger_error('Invalid return of event method: get(_all) (missing field \'description\' in ' . print_r($row, true) . ')', E_USER_ERROR); } if (!isset($row['id'])) { trigger_error('Invalid return of event method: get(_all) (missing field \'id\' in ' . print_r($row, true) . ')', E_USER_ERROR); } if (!isset($row['additional_info'])) { $row['additional_info'] = ''; } if (!isset($row['additional_info2'])) { $row['additional_info2'] = ''; } if (!isset($row['actions'])) { $row['actions'] = array(); } if (isset($row['timeless']) && $row['timeless']) { if (!isset($row['timeless_caption'])) { $row['timeless_caption'] = str_replace(' ', ' ', __('Timeless')); } $start_time = $row['timeless_caption']; $end_time = $start_time; $ev_start = strtotime($row['timeless']); if (!isset($row['start'])) { $start_day = _V(date('D', $ev_start)); } else { $start_day = _V(date('D', $row['start'])); } $start_date = Base_RegionalSettingsCommon::time2reg($ev_start, false, true, false); if ($start_date == Base_RegionalSettingsCommon::time2reg(time(), false)) { $start_t = __('Today'); } elseif ($start_date == Base_RegionalSettingsCommon::time2reg(time() + 3600 * 24, false)) { $start_t = __('Tomorrow'); } elseif ($start_date == Base_RegionalSettingsCommon::time2reg(time() - 3600 * 24, false)) { $start_t = __('Yesterday'); } else { $start_t = $start_day . ', ' . $start_date; } $end_date = $start_date; $end_day = $start_day; $end_t = $start_t; } else { if (!is_numeric($row['start']) && is_string($row['start'])) { $row['start'] = strtotime($row['start']); } if ($row['start'] === false) { trigger_error('Invalid return of event method: get (start equal to null)', E_USER_ERROR); } $row['end'] = $row['start'] + $row['duration']; $ev_start = $row['start']; $ev_end = $row['end']; Base_RegionalSettingsCommon::set(); $start_day = __date('D', $ev_start); $end_day = __date('D', $ev_end); Base_RegionalSettingsCommon::restore(); $start_date = Base_RegionalSettingsCommon::time2reg($ev_start, false); $end_date = Base_RegionalSettingsCommon::time2reg($ev_end, false); $oneday = $start_date == $end_date; if ($oneday) { $end_t = Base_RegionalSettingsCommon::time2reg($ev_end, 2, false); } $start_time = Base_RegionalSettingsCommon::time2reg($ev_start, 2, false); $end_time = Base_RegionalSettingsCommon::time2reg($ev_end, 2, false); if ($start_date == Base_RegionalSettingsCommon::time2reg(time(), false)) { $start_t = __('Today') . ', ' . $start_time; } elseif ($start_date == Base_RegionalSettingsCommon::time2reg(time() + 3600 * 24, false)) { $start_t = __('Tomorrow') . ', ' . $start_time; } elseif ($start_date == Base_RegionalSettingsCommon::time2reg(time() - 3600 * 24, false)) { $start_t = __('Yesterday') . ', ' . $start_time; } else { $start_t = $start_day . ', ' . $start_date . ' ' . $start_time; } if (!$oneday) { $end_t = $end_day . ', ' . $end_date . ' ' . $end_time; } } if (isset($row['fake_duration'])) { $duration_str = Base_RegionalSettingsCommon::seconds_to_words($row['fake_duration']); } elseif ($row['duration'] > 0) { $duration_str = Base_RegionalSettingsCommon::seconds_to_words($row['duration']); } else { $duration_str = '---'; } return array('duration' => $duration_str, 'start' => $start_t, 'end' => $end_t, 'start_time' => $start_time, 'end_time' => $end_time, 'start_date' => $start_date, 'end_date' => $end_date, 'start_day' => $start_day, 'end_day' => $end_day); }
<?php date_default_timezone_set('Asia/Shanghai'); $static_html = _V('static_html'); if (!empty($static_html)) { // error_log("[view/tech] including {$static_html} ...."); include_once $static_html; } else { $cdnTime = date("YmdHis"); $row_list = _v('row_list'); $detail = _v('detail'); $status = _v('status'); ?> <div class="article"> <div data-role="collapsible-set" data-theme="a" data-iconpos="right" data-collapsed-icon="carat-d" data-expanded-icon="carat-u"> <?php if (!empty($row_list)) { foreach ($row_list as $mk1 => $mv1) { ?> <div data-role="collapsible" data-collapsed="false"> <h2><?php echo $mv1["cname"]; ?> </h2> <!--<ul data-role="listview" data-theme="b"> <?php foreach ($mv1["menu"] as $fid => $fname) { ?> <li><a href="<?php
public function edit_permissions_rule($id = null, $clone = false) { if (Base_AdminCommon::get_access('Utils_RecordBrowser', 'permissions') != 2) { return false; } if ($this->is_back()) { return false; } load_js('modules/Utils/RecordBrowser/edit_permissions.js'); $all_clearances = array('' => '---') + array_flip(Base_AclCommon::get_clearance(true)); $all_fields = array(); $this->init(); foreach ($this->table_rows as $k => $v) { $all_fields[$v['id']] = $k; } $form = $this->init_module('Libs_QuickForm'); $theme = $this->init_module('Base_Theme'); $counts = array('clearance' => 5); $actions = $this->get_permission_actions(); $form->addElement('select', 'action', __('Action'), $actions); $fields_permissions = $all_fields; for ($i = 0; $i < $counts['clearance']; $i++) { $form->addElement('select', 'clearance_' . $i, __('Clearance'), $all_clearances); } $defaults = array(); foreach ($fields_permissions as $k => $v) { $defaults['field_' . $k] = 1; $form->addElement('checkbox', 'field_' . $k, _V($this->table_rows[$v]['name'])); } $theme->assign('labels', array('and' => '<span class="joint">' . __('and') . '</span>', 'or' => '<span class="joint">' . __('or') . '</span>', 'caption' => $id ? __('Edit permission rule') : __('Add permission rule'), 'clearance' => __('Clearance requried'), 'fields' => __('Fields allowed'), 'crits' => __('Criteria required'), 'add_clearance' => __('Add clearance'), 'add_or' => __('Add criteria (or)'), 'add_and' => __('Add criteria (and)'))); $current_clearance = 0; $crits = array(); if ($id !== null && $this->tab != '__RECORDSETS__' && !preg_match('/,/', $this->tab)) { $row = DB::GetRow('SELECT * FROM ' . $this->tab . '_access AS acs WHERE id=%d', array($id)); $defaults['action'] = $row['action']; $crits = Utils_RecordBrowserCommon::unserialize_crits($row['crits']); if (is_array($crits)) { $crits = Utils_RecordBrowser_Crits::from_array($crits); } $i = 0; $tmp = DB::GetAll('SELECT * FROM ' . $this->tab . '_access_clearance AS acs WHERE rule_id=%d', array($id)); foreach ($tmp as $t) { $defaults['clearance_' . $i] = $t['clearance']; $i++; } $current_clearance += $i - 1; $tmp = DB::GetAll('SELECT * FROM ' . $this->tab . '_access_fields AS acs WHERE rule_id=%d', array($id)); foreach ($tmp as $t) { unset($defaults['field_' . $t['block_field']]); } } $qbi = new Utils_RecordBrowser_QueryBuilderIntegration($this->tab); $qb = $qbi->get_builder_module($this, $crits); $qb->add_to_form($form, 'qb_crits', __('Crits'), 'qb_crits_editor'); $form->setDefaults($defaults); if ($form->validate()) { $vals = $form->exportValues(); $action = $vals['action']; $clearance = array(); for ($i = 0; $i < $counts['clearance']; $i++) { if ($vals['clearance_' . $i]) { $clearance[] = $vals['clearance_' . $i]; } } $crits = $qbi->json_to_crits($vals['qb_crits']); $blocked_fields = array(); foreach ($fields_permissions as $k => $v) { if (isset($vals['field_' . $k])) { continue; } $blocked_fields[] = $k; } if ($id === null || $clone) { Utils_RecordBrowserCommon::add_access($this->tab, $action, $clearance, $crits, $blocked_fields); } else { Utils_RecordBrowserCommon::update_access($this->tab, $id, $action, $clearance, $crits, $blocked_fields); } return false; } eval_js('utils_recordbrowser__init_clearance(' . $current_clearance . ', ' . $counts['clearance'] . ')'); eval_js('utils_recordbrowser__crits_initialized = true;'); $form->assign_theme('form', $theme); $theme->assign('fields', $fields_permissions); $theme->assign('counts', $counts); $theme->display('edit_permissions'); Base_ActionBarCommon::add('save', __('Save'), $form->get_submit_form_href()); Base_ActionBarCommon::add('delete', __('Cancel'), $this->create_back_href()); return true; }
private function permissions_get_field_values($field, $in_depth=true) { static $all_fields = array(); if (!isset($all_fields[$this->tab])) foreach ($this->table_rows as $k=>$v) $all_fields[$this->tab][$v['id']] = $k; $args = $this->table_rows[$all_fields[$this->tab][$field]]; $arr = array(''=>'['.__('Empty').']'); switch (true) { case $args['type']=='text' && $args['filter']: $arr_add = @DB::GetAssoc('SELECT f_'.$args['id'].', f_'.$args['id'].' FROM '.$this->tab.'_data_1 GROUP BY f_'.$args['id'].' ORDER BY count(*) DESC LIMIT 20'); if($arr_add) $arr += $arr_add; break; case $args['commondata']: $array_id = is_array($args['param']) ? $args['param']['array_id'] : $args['ref_table']; if (strpos($array_id, '::')===false) $arr = $arr + Utils_CommonDataCommon::get_translated_array($array_id, is_array($args['param'])?$args['param']['order_by_key']:false); break; case $this->tab=='contact' && $field=='login' || $this->tab=='rc_accounts' && $field=='epesi_user': // just a quickfix, better solution will be needed $arr = $arr + array('USER_ID'=>__('User Login')); break; case $args['type']=='date' || $args['type']=='timestamp': $arr = $arr + Utils_RecordBrowserCommon::$date_values; break; case ($args['type']=='multiselect' || $args['type']=='select') && (!isset($args['ref_table']) || !$args['ref_table']): $arr = $arr + array('USER'=>__('User Contact')); $arr = $arr + array('USER_COMPANY'=>__('User Company')); break; case $args['type']=='checkbox': $arr = array('1'=>__('Yes'),'0'=>__('No')); break; case ($args['type']=='select' || $args['type']=='multiselect') && isset($args['ref_table']): if ($args['ref_table']=='contact') $arr = $arr + array('USER'=>__('User Contact')); if ($args['ref_table']=='company') $arr = $arr + array('USER_COMPANY'=>__('User Company')); if (!$in_depth) continue; $last_tab = $this->tab; $tabs = explode(',', $args['ref_table']); if (count($tabs) != 1) break; $one_tab = reset($tabs); if ($one_tab != '__RECORDSETS__' && Utils_RecordBrowserCommon::check_table_name($one_tab, false, false)) { $this->tab = $one_tab; $this->init(); if (!isset($all_fields[$this->tab])) foreach ($this->table_rows as $k=>$v) $all_fields[$this->tab][$v['id']] = $k; foreach ($all_fields[$this->tab] as $k=>$v) { if ($this->table_rows[$v]['type']=='calculated' || $this->table_rows[$v]['type']=='hidden') unset($all_fields[$this->tab][$k]); else { $arr2 = $this->permissions_get_field_values($k, false, $this->tab); foreach ($arr2 as $k2=>$v2) $arr2[$k2] = '"'.$k2.'":"'.$v2.'"'; eval_js('utils_recordbrowser__field_sub_values["'.$field.'__'.$k.'"] = {'.implode(',',$arr2).'};'); } } foreach ($all_fields[$this->tab] as $k=>$v) { $arr[$k] = __(' records with %s set to ', array(_V($v))); } } $this->tab = $last_tab; $this->init(); break; } return $arr; }
/** * Get registered printers' classnames and translated document names. * * @return string[] Classnames is the key, translated document name is the value */ public static function get_registered_printers_translated() { $registered_printers = self::get_registered_printers(); foreach ($registered_printers as &$v) { $v = _V($v); } return $registered_printers; }
public static function mobile_rb_edit($tab, $id) { if ($id === false) { $rec = array(); } else { $rec = self::get_record($tab, $id); } $cols = Utils_RecordBrowserCommon::init($tab); $defaults = array(); if ($id === false) { $mode = 'add'; $access = array(); $defaults = self::record_processing($tab, $defaults, 'adding'); } else { $mode = 'edit'; $access = Utils_RecordBrowserCommon::get_access($tab, 'view', $rec); if (is_array($access)) { foreach ($access as $k => $v) { if (!$v) { unset($rec[$k]); } } } $defaults = $rec = self::record_processing($tab, $rec, 'editing'); } $QFfield_callback_table = array(); $ret = DB::Execute('SELECT * FROM ' . $tab . '_callback WHERE freezed=0'); while ($row = $ret->FetchRow()) { $QFfield_callback_table[$row['field']] = $row['callback']; } $defaults = array_merge($defaults, $_SESSION['rb_' . $tab . '_defaults']); $qf = new HTML_QuickForm('rb_edit', 'post', 'mobile.php?' . http_build_query($_GET)); foreach ($cols as $field => $args) { if (isset($access[$args['id']]) && !$access[$args['id']]) { continue; } if (isset($rec[$args['id']])) { $val = $rec[$args['id']]; } elseif (isset($defaults[$args['id']])) { $val = $defaults[$args['id']]; } else { $val = null; } $label = _V($args['name']); // TRSL if (isset($QFfield_callback_table[$field])) { $mobile_rb = new Utils_RecordBrowserMobile($tab, $rec); self::call_QFfield_callback($QFfield_callback_table[$field], $qf, $args['id'], $label, $mode, $val, $args, $mobile_rb, null); if ($mode == 'edit') { unset($defaults[$args['id']]); } continue; } switch ($args['type']) { case 'calculated': $qf->addElement('static', $args['id'], $label); if (!is_array($rec)) { $values = $defaults; } else { $values = $rec; if (is_array($defaults)) { $values = $values + $defaults; } } if (!isset($values[$args['id']])) { $values[$args['id']] = ''; } $val = Utils_RecordBrowserCommon::get_val($tab, $field, $values, true, $args); if ($val !== null) { $qf->setDefaults(array($args['id'] => $val)); } break; case 'integer': case 'float': $qf->addElement('text', $args['id'], $label); if ($args['type'] == 'integer') { $qf->addRule($args['id'], __('Only integer numbers are allowed.'), 'regex', '/^[0-9]*$/'); } else { $qf->addRule($args['id'], __('Only numbers are allowed.'), 'numeric'); } if ($val !== null) { $qf->setDefaults(array($args['id'] => $val)); } break; case 'checkbox': $qf->addElement('checkbox', $args['id'], $label, ''); if ($val !== null) { $qf->setDefaults(array($args['id'] => $val)); } break; case 'currency': $qf->addElement('currency', $args['id'], $label); if ($val !== null) { $qf->setDefaults(array($args['id'] => $val)); } break; case 'text': $qf->addElement('text', $args['id'], $label, array('maxlength' => $args['param'])); $qf->addRule($args['id'], __('Maximum length for this field is %s characters.', array($args['param'])), 'maxlength', $args['param']); if ($val !== null) { $qf->setDefaults(array($args['id'] => $val)); } break; case 'long text': $qf->addElement('textarea', $args['id'], $label, array('maxlength' => 200)); $qf->addRule($args['id'], __('Maximum length for this field in mobile edition is 200 chars.'), 'maxlengt', 200); if ($val !== null) { $qf->setDefaults(array($args['id'] => $val)); } break; case 'commondata': $param = explode('::', $args['param']['array_id']); foreach ($param as $k => $v) { if ($k != 0) { $param[$k] = self::get_field_id($v); } } if (count($param) == 1) { $qf->addElement($args['type'], $args['id'], $label, $param, array('empty_option' => true, 'id' => $args['id'], 'order_by_key' => $args['param']['order_by_key'])); if ($val !== null) { $qf->setDefaults(array($args['id'] => $val)); } } break; case 'select': $comp = array(); $ref = explode(';', $args['param']); if (isset($ref[1])) { $crits_callback = $ref[1]; } else { $crits_callback = null; } if (isset($ref[2])) { $multi_adv_params = call_user_func(explode('::', $ref[2])); } else { $multi_adv_params = null; } if (!isset($multi_adv_params) || !is_array($multi_adv_params)) { $multi_adv_params = array(); } if (!isset($multi_adv_params['order'])) { $multi_adv_params['order'] = array(); } if (!isset($multi_adv_params['cols'])) { $multi_adv_params['cols'] = array(); } if (!isset($multi_adv_params['format_callback'])) { $multi_adv_params['format_callback'] = array(); } $ref = $ref[0]; @(list($tab2, $col) = explode('::', $ref)); if (!isset($col)) { trigger_error($field); } if ($tab2 == '__RECORDSETS__') { continue; } //skip multi recordsets chained selector if ($tab2 == '__COMMON__') { $data = Utils_CommonDataCommon::get_translated_tree($col); if (!is_array($data)) { $data = array(); } $comp = $comp + $data; } else { if (isset($crits_callback)) { $crit_callback = explode('::', $crits_callback); if (is_callable($crit_callback)) { $crits = call_user_func($crit_callback, false, $rec); $adv_crits = call_user_func($crit_callback, true, $rec); } else { $crits = $adv_crits = array(); } if ($adv_crits === $crits) { $adv_crits = null; } if ($adv_crits !== null) { continue; //skip record picker } } else { $crits = array(); } $col = explode('|', $col); $col_id = array(); foreach ($col as $c) { $col_id[] = self::get_field_id($c); } $records = Utils_RecordBrowserCommon::get_records($tab2, $crits, empty($multi_adv_params['format_callback']) ? $col_id : array(), !empty($multi_adv_params['order']) ? $multi_adv_params['order'] : array()); $ext_rec = array(); if (isset($rec[$args['id']])) { if (!is_array($rec[$args['id']])) { if ($rec[$args['id']] != '') { $rec[$args['id']] = array($rec[$args['id']] => $rec[$args['id']]); } else { $rec[$args['id']] = array(); } } } if (isset($defaults[$args['id']])) { if (!is_array($defaults[$args['id']])) { $rec[$args['id']][$defaults[$args['id']]] = $defaults[$args['id']]; } else { foreach ($defaults[$args['id']] as $v) { $rec[$args['id']][$v] = $v; } } } $single_column = count($col_id) == 1; if (isset($rec[$args['id']])) { $ext_rec = array_flip($rec[$args['id']]); foreach ($ext_rec as $k => $v) { $c = Utils_RecordBrowserCommon::get_record($tab2, $k); if (!empty($multi_adv_params['format_callback'])) { $n = call_user_func($multi_adv_params['format_callback'], $c); } else { if ($single_column) { $n = $c[$col_id[0]]; } else { $n = array(); foreach ($col_id as $cid) { $n[] = $c[$cid]; } $n = implode(' ', $n); } } $comp[$k] = $n; } } if (!empty($multi_adv_params['order'])) { natcasesort($comp); } foreach ($records as $k => $v) { if (!empty($multi_adv_params['format_callback'])) { $n = call_user_func($multi_adv_params['format_callback'], $v); } else { // $n = $v[$col_id]; if ($single_column) { $n = $v[$col_id[0]]; } else { $n = array(); foreach ($col_id as $cid) { $n[] = $v[$cid]; } $n = implode(' ', $n); } } $comp[$k] = $n; unset($ext_rec[$v['id']]); } if (empty($multi_adv_params['order'])) { natcasesort($comp); } } if ($args['type'] === 'select') { $comp = array('' => '---') + $comp; } $qf->addElement($args['type'], $args['id'], $label, $comp, array('id' => $args['id'])); if ($id !== false) { $qf->setDefaults(array($args['id'] => $rec[$args['id']])); } break; case 'date': $qf->addElement('date', $args['id'], $label, array('format' => 'd M Y', 'minYear' => date('Y') - 95, 'maxYear' => date('Y') + 5, 'addEmptyOption' => true, 'emptyOptionText' => '--')); if ($val) { $qf->setDefaults(array($args['id'] => $val)); } break; case 'timestamp': $qf->addElement('date', $args['id'], $label, array('format' => 'd M Y H:i', 'minYear' => date('Y') - 95, 'maxYear' => date('Y') + 5, 'addEmptyOption' => true, 'emptyOptionText' => '--')); if ($val) { $default = Base_RegionalSettingsCommon::time2reg($val, true, true, true, false); $qf->setDefaults(array($args['id'] => $default)); } break; case 'time': $qf->addElement('date', $args['id'], $label, array('format' => 'H:i', 'addEmptyOption' => true, 'emptyOptionText' => '--')); if ($val) { $default = Base_RegionalSettingsCommon::time2reg($val, true, true, true, false); $qf->setDefaults(array($args['id'] => $default)); } break; case 'multiselect': //ignore if ($id === false) { continue; } $val = Utils_RecordBrowserCommon::get_val($tab, $field, $rec, true, $args); if ($val === '') { continue; } $qf->addElement('static', $args['id'], $label); $qf->setDefaults(array($args['id'] => $val)); unset($defaults[$args['id']]); break; } if ($args['required']) { $qf->addRule($args['id'], __('Field required'), 'required'); } } $qf->addElement('submit', 'submit_button', __('Save'), IPHONE ? 'class="button white"' : ''); if ($qf->validate()) { $values = $qf->exportValues(); foreach ($cols as $v) { if ($v['type'] == 'checkbox' && !isset($values[$v['id']])) { $values[$v['id']] = 0; } elseif ($v['type'] == 'date') { if (is_array($values[$v['id']]) && $values[$v['id']]['Y'] !== '' && $values[$v['id']]['M'] !== '' && $values[$v['id']]['d'] !== '') { $values[$v['id']] = sprintf("%d-%02d-%02d", $values[$v['id']]['Y'], $values[$v['id']]['M'], $values[$v['id']]['d']); } else { $values[$v['id']] = ''; } } elseif ($v['type'] == 'timestamp') { if ($values[$v['id']]['Y'] !== '' && $values[$v['id']]['M'] !== '' && $values[$v['id']]['d'] !== '' && $values[$v['id']]['H'] !== '' && $values[$v['id']]['i'] !== '') { $timestamp = $values[$v['id']]['Y'] . '-' . $values[$v['id']]['M'] . '-' . $values[$v['id']]['d'] . ' ' . $values[$v['id']]['H'] . ':' . $values[$v['id']]['i']; $values[$v['id']] = Base_RegionalSettingsCommon::reg2time($timestamp, true); } else { $values[$v['id']] = ''; } } elseif ($v['type'] == 'time') { if ($values[$v['id']]['H'] !== '' && $values[$v['id']]['i'] !== '') { $time = recalculate_time(date('Y-m-d'), $values[$v['id']]); $timestamp = Base_RegionalSettingsCommon::reg2time(date('1970-01-01 H:i:s', $time), true); $values[$v['id']] = date('1970-01-01 H:i:s', $timestamp); } else { $values[$v['id']] = ''; } } } foreach ($defaults as $k => $v) { if (!isset($values[$k])) { $values[$k] = $v; } } if ($id !== false) { $values['id'] = $id; Utils_RecordBrowserCommon::update_record($tab, $id, $values); } else { $id = Utils_RecordBrowserCommon::new_record($tab, $values); } return false; } $renderer =& $qf->defaultRenderer(); $qf->accept($renderer); print $renderer->toHtml(); }
private function build_menu(&$menu, &$m, $prefix = '') { foreach ($m as $k => $arr) { if ($k == '__split__') { $menu->add_split(); } else { $icon = null; if (array_key_exists('__icon_small__', $arr)) { $icon = Base_ThemeCommon::get_template_file($arr['parent_module'], $arr['__icon_small__']); unset($arr['__icon_small__']); unset($arr['__icon__']); } else { if (array_key_exists('__icon__', $arr)) { $icon = Base_ThemeCommon::get_template_file($arr['parent_module'], $arr['__icon__']); unset($arr['__icon__']); } else { if (isset($arr['parent_module']) && is_string($arr['parent_module'])) { $icon = Base_ThemeCommon::get_template_file($arr['parent_module'], 'icon-small.png'); } } } if (!$icon) { if (array_key_exists('__submenu__', $arr)) { $icon = Base_ThemeCommon::get_template_file('Base_Menu', 'folder.png'); } else { $icon = Base_ThemeCommon::get_template_file('Base_Menu', 'element.png'); } } unset($arr['parent_module']); if (array_key_exists('__description__', $arr)) { $description = "'" . $arr['__description__'] . "'"; unset($arr['__description__']); } else { $description = 'null'; } if (array_key_exists('__url__', $arr)) { $url = $arr['__url__']; unset($arr['__url__']); if (array_key_exists('__target__', $arr)) { $target = $arr['__target__']; unset($arr['__target__']); } else { $target = '_blank'; } } else { $url = null; } $label = _V($k); // ****** Menu - translate labels if (array_key_exists('__submenu__', $arr)) { unset($arr['__submenu__']); $menu->begin_submenu($label, $icon, $prefix . $k); $this->build_menu($menu, $arr, $prefix . $k . '_'); $menu->end_submenu(); } else { if ($url) { $menu->add_link($label, $url, $icon, $target, $prefix . $k); } else { $menu->add_link($label, 'javascript:' . Base_MenuCommon::create_href_js($this, $arr), $icon, '', $prefix . $k); } } } } }
public function push_settings($s) { $x = ModuleManager::get_instance('/Base_Box|0'); if(!$x) trigger_error('There is no base box module instance',E_USER_ERROR); $x->push_main('Base_User_Settings',null,array(_V($s))); }
protected function build_single_crit_to_words(Utils_RecordBrowser_CritsSingle $crits) { $value = $crits->get_value(); $operator = $crits->get_operator(); list($field, $subfield) = Utils_RecordBrowser_CritsSingle::parse_subfield($crits->get_field()); $negation = $crits->get_negation(); $field_definition = $this->get_field_definition($field); $subquery_generated = false; if ($subfield) { $tab2 = isset($field_definition['ref_table']) ? $field_definition['ref_table'] : false; $single_tab = !($tab2 == '__RECORDSETS__' || count(explode(',', $tab2)) > 1); if ($tab2 && $single_tab) { $cb = new self($tab2); $cb->enable_html_decoration($this->html_decoration); $value = $cb->to_words(new Utils_RecordBrowser_CritsSingle($subfield, $operator, $value, $negation, $crits->get_raw_sql_value())); $subquery_generated = true; } } if (!is_array($value)) { $value = array($value); } foreach ($value as $k => $v) { if (is_bool($v)) { $value[$k] = $v ? __('true') : __('false'); } elseif ($v === '' || $v === null) { $value[$k] = __('empty'); } else { if ($field == ':Created_on' || $field == ':Edited_on') { if (isset(Utils_RecordBrowserCommon::$date_values[$v])) { $value[$k] = Utils_RecordBrowserCommon::$date_values[$v]; } else { $value[$k] = Base_RegionalSettingsCommon::time2reg($v); } } elseif ($field == ':Created_by') { if (is_numeric($v)) { $value[$k] = Base_UserCommon::get_user_login($v); } } elseif ($field_definition) { $vv = explode('::', $v, 2); if (!(isset($vv[1]) && is_callable($vv)) && (is_numeric($v) || $field_definition['commondata'] || !isset($field_definition['ref_table']))) { $new_val = Utils_RecordBrowserCommon::get_val($this->tab, $field, array($field => $v), true); if ($new_val) { $value[$k] = $new_val; } } } } if ($this->html_decoration) { if (!$subquery_generated) { $value[$k] = '<strong>' . $value[$k] . '</strong>'; } } } if ($operator == '!=') { $negation ^= $operator == '!='; $operator = '='; } switch ($field) { case ':Fav': $field = __('Favorite status'); break; case ':Recent': $field = __('Recently viewed'); break; case ':Sub': $field = __('Subscription status'); break; case ':Created_by': $field = __('Created by'); break; case ':Created_on': $field = __('Created on'); break; case ':Edited_on': $field = __('Edited on'); break; case 'id': $field = __('ID'); break; default: if ($field_definition) { $field = _V($field_definition['name']); } } if ($this->html_decoration) { $field = "<strong>{$field}</strong>"; } if ($subquery_generated) { $operand = __('is set to record where'); } else { switch ($operator) { case '<': $operand = $negation ? __('is not smaller than') : __('is smaller than'); break; case '<=': $operand = $negation ? __('is not smaller or equal to') : __('is smaller or equal to'); break; case '>': $operand = $negation ? __('is not greater than') : __('is greater than'); break; case '>=': $operand = $negation ? __('is not greater than') : __('is greater or equal to'); break; case 'LIKE': $operand = $negation ? __('is not like') : __('is like'); break; case 'NOT LIKE': $operand = $negation ? __('is like') : __('is not like'); break; default: $operand = $negation ? __('is not equal to') : __('is equal to'); } } $value_str = implode(' ' . __('or') . ' ', $value); if (count($value) > 1) { $value_str = "({$value_str})"; } $ret = "{$field} {$operand} {$value_str}"; if (!$this->html_decoration) { $ret = html_entity_decode($ret); } return array('str' => $ret, 'multiple' => false); }