Example #1
0
 private static function t($str)
 {
     if (function_exists('_V')) {
         return _V($str);
     }
     return $str;
 }
Example #2
0
 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;
 }
Example #3
0
 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;
 }
Example #4
0
 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;
 }
Example #5
0
 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;
 }
Example #6
0
 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);
     }
 }
Example #7
0
 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));
 }
Example #8
0
$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);
Example #9
0
 /**
  * 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));
 }
Example #10
0
 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;
 }
Example #11
0
 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;
 }
Example #12
0
$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')) {
Example #13
0
 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;
     }
 }
Example #14
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));
     }
 }
Example #15
0
 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;
 }
Example #16
0
 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;
 }
Example #17
0
    $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('&nbsp;', ' ', $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>','&nbsp;'),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;
 }
Example #19
0
        $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__'];
Example #20
0
 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(' ', '&nbsp;', __('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);
 }
Example #21
0
<?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 
Example #22
0
 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;
 }
Example #23
0
	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;
	}
Example #24
0
 /**
  * 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;
 }
Example #25
0
 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();
 }
Example #26
0
 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);
                 }
             }
         }
     }
 }
Example #27
0
	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)));
	}
Example #28
0
 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);
 }