Beispiel #1
0
    public function body()
    {
        $form = $this->init_module(Libs_QuickForm::module_name(), null, 'RBpicker_test');
        $form->addElement('multiselect', 'test', 'Test', array(1 => 0, 4 => 1, 7 => 2, 8 => 3));
        $form->addElement('submit', 'submit', 'Submit');
        $form->display();
        if ($form->validate()) {
            print_r($form->exportValues());
        }
        $rb1 = $this->init_module(Utils_RecordBrowser_RecordPicker::module_name());
        $this->display_module($rb1, array('contact', 'test', array('Tests_LeightboxCommon', 'TEST'), array('company_name' => 1), array('country' => true)));
        print $rb1->create_open_link('Click here!');
        Libs_LeightboxCommon::display('leightbox1', '<h1>Leightbox</h1>' . 'ble ble ble', 'Test header');
        print '<hr><a ' . Libs_LeightboxCommon::get_open_href('leightbox1') . '>leightbox container</a>
			</div>';
        //------------------------------ print out src
        print '<hr><b>Install</b><br>';
        $this->pack_module(Utils_CatFile::module_name(), 'modules/Tests/Leightbox/LeightboxInstall.php');
        print '<hr><b>Main</b><br>';
        $this->pack_module(Utils_CatFile::module_name(), 'modules/Tests/Leightbox/Leightbox_0.php');
        print '<hr><b>Common</b><br>';
        $this->pack_module(Utils_CatFile::module_name(), 'modules/Tests/Leightbox/LeightboxCommon_0.php');
    }
 public static function QFfield_select(&$form, $field, $label, $mode, $default, $desc, $rb_obj)
 {
     if (self::QFfield_static_display($form, $field, $label, $mode, $default, $desc, $rb_obj)) {
         return;
     }
     $record = $rb_obj->record;
     $comp = array();
     $param = explode(';', $desc['param']);
     $crits_callback = isset($param[1]) ? $param[1] : null;
     $multi_adv_params_callback = isset($param[2]) ? explode('::', $param[2]) : null;
     $multi_adv_params = array();
     if (is_callable($multi_adv_params_callback)) {
         $multi_adv_params = call_user_func($multi_adv_params_callback, $record);
     }
     // check multi_adv_params structure and fill empty values
     if (!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();
     }
     $reference = explode('::', $param[0]);
     $tab = $reference[0];
     $columns = isset($reference[1]) ? $reference[1] : null;
     if (!isset($columns)) {
         trigger_error("Columns not set for field: {$field}");
     }
     if ($tab == '__COMMON__') {
         $order = isset($reference[2]) ? $reference[2] : 'value';
         $data = Utils_CommonDataCommon::get_translated_tree($columns, $order == 'key');
         if (!is_array($data)) {
             $data = array();
         }
         $comp = $comp + $data;
         $rec_count = 0;
         $label = Utils_RecordBrowserCommon::get_field_tooltip($label, 'commondata', $columns);
     } else {
         if (isset($crits_callback)) {
             $crit_callback = explode('::', $crits_callback);
             if (is_callable($crit_callback)) {
                 $crits = call_user_func($crit_callback, false, $record);
                 $adv_crits = call_user_func($crit_callback, true, $record);
             } else {
                 $crits = $adv_crits = array();
             }
             if ($adv_crits === $crits) {
                 $adv_crits = null;
             }
             if ($adv_crits !== null) {
                 $crits = $adv_crits;
             }
         } else {
             $crits = array();
         }
         if ($tab == '__RECORDSETS__') {
             $tabs = DB::GetCol('SELECT tab FROM recordbrowser_table_properties');
         } else {
             $tabs = explode(',', $tab);
         }
         $single_tab = count($tabs) == 1;
         if (!$single_tab && empty($crits)) {
             foreach ($tabs as $tab) {
                 $crits[$tab] = array();
             }
         }
         // get related records with proper columns
         $col_id = array();
         if ($single_tab) {
             $columns = array_filter(explode('|', $columns));
             foreach ($columns as $c) {
                 $col_id[] = self::get_field_id($c);
             }
         }
         $rec_count = 0;
         foreach ($tabs as $t) {
             if (!empty($crits) && !$single_tab && !isset($crits[$t])) {
                 continue;
             }
             $rec_count += Utils_RecordBrowserCommon::get_records_count($t, $single_tab ? $crits : $crits[$t], null);
         }
         if ($rec_count <= Utils_RecordBrowserCommon::$options_limit) {
             $records = array();
             foreach ($tabs as $t) {
                 if (!empty($crits) && !$single_tab && !isset($crits[$t])) {
                     continue;
                 }
                 $access = self::get_access($t, 'selection', null, true);
                 if ($access === false) {
                     continue;
                 }
                 if ($access !== true && is_array($access)) {
                     if ($single_tab) {
                         $crits = self::merge_crits($crits, $access);
                     } elseif (isset($crits[$t]) && is_array($crits[$t]) && $crits[$t]) {
                         $crits[$t] = self::merge_crits($crits[$t], $access);
                     } else {
                         $crits[$t] = $access;
                     }
                 }
                 $records_tmp = Utils_RecordBrowserCommon::get_records($t, $single_tab ? $crits : $crits[$t], array(), !empty($multi_adv_params['order']) ? $multi_adv_params['order'] : array());
                 foreach ($records_tmp as $key => $rec) {
                     if (!self::get_access($t, 'view', $rec)) {
                         continue;
                     }
                     $records[($single_tab ? '' : $t . '/') . $key] = $rec;
                 }
             }
         } else {
             $records = array();
         }
         // set current record field value to array
         if (isset($record[$field])) {
             if (!is_array($record[$field])) {
                 if ($record[$field] != '') {
                     $record[$field] = array($record[$field] => $record[$field]);
                 } else {
                     $record[$field] = array();
                 }
             }
         }
         if ($default) {
             if (!is_array($default)) {
                 $record[$field][$default] = $default;
             } else {
                 foreach ($default as $v) {
                     $record[$field][$v] = $v;
                 }
             }
         }
         $ext_rec = array();
         $columns_qty = count($col_id);
         if (isset($record[$field])) {
             $ext_rec = array_flip($record[$field]);
             foreach ($ext_rec as $k => $v) {
                 $kk = explode('/', $k, 2);
                 if (count($kk) == 1) {
                     if ($single_tab && is_numeric($kk[0])) {
                         $t = $tab;
                         $record_id = $kk[0];
                     } else {
                         continue;
                     }
                 } else {
                     $t = $kk[0];
                     $record_id = $kk[1];
                     if (!self::check_table_name($t, false, false) || !is_numeric($record_id)) {
                         continue;
                     }
                 }
                 $c = Utils_RecordBrowserCommon::get_record($t, $record_id);
                 if (!empty($multi_adv_params['format_callback'])) {
                     $n = call_user_func($multi_adv_params['format_callback'], $c);
                 } else {
                     if ($columns_qty == 0) {
                         $n = self::create_default_linked_label($t, $record_id, true);
                     } elseif ($columns_qty == 1) {
                         $n = self::get_val($t, $col_id[0], $c, true);
                     } else {
                         $n = array();
                         foreach ($col_id as $cid) {
                             $n[] = self::get_val($t, $cid, $c, true);
                         }
                         $n = implode(' ', $n);
                     }
                 }
                 $comp[($single_tab ? '' : $t . '/') . $record_id] = $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 {
                 if ($single_tab && is_numeric($k)) {
                     $t = $tab;
                     $record_id = $k;
                 } else {
                     $kk = explode('/', $k, 2);
                     $t = $kk[0];
                     $record_id = $kk[1];
                 }
                 if ($columns_qty == 0) {
                     $n = self::create_default_linked_label($t, $record_id, true);
                 } elseif ($columns_qty == 1) {
                     $n = self::get_val($t, $col_id[0], $v, true);
                 } else {
                     $n = array();
                     foreach ($col_id as $cid) {
                         $n[] = self::get_val($t, $cid, $v, true);
                     }
                     $n = implode(' ', $n);
                 }
             }
             $comp[$k] = $n;
             unset($ext_rec[$v['id']]);
             unset($ext_rec[$k]);
         }
         if (empty($multi_adv_params['order'])) {
             natcasesort($comp);
         }
         if ($single_tab) {
             $label = Utils_RecordBrowserCommon::get_field_tooltip($label, $desc['type'], reset($tabs), $crits);
         }
     }
     if ($rec_count > Utils_RecordBrowserCommon::$options_limit) {
         $f_callback = $multi_adv_params['format_callback'];
         if (empty($f_callback)) {
             $f_callback = array('Utils_RecordBrowserCommon', 'autoselect_label');
         }
         if ($desc['type'] == 'multiselect') {
             $el = $form->addElement('automulti', $field, $label, array('Utils_RecordBrowserCommon', 'automulti_suggestbox'), array($rb_obj->tab, $crits, $f_callback, $desc['param']), $f_callback);
             if ($single_tab) {
                 ${'rp_' . $field} = $rb_obj->init_module(Utils_RecordBrowser_RecordPicker::module_name(), array());
                 $filters_defaults = isset($multi_adv_params['filters_defaults']) ? $multi_adv_params['filters_defaults'] : array();
                 $rb_obj->display_module(${'rp_' . $field}, array($tab, $field, $multi_adv_params['format_callback'], $crits, array(), array(), array(), $filters_defaults));
                 $el->set_search_button('<a ' . ${'rp_' . $field}->create_open_href() . ' ' . Utils_TooltipCommon::open_tag_attrs(__('Advanced Selection')) . ' href="javascript:void(0);"><img border="0" src="' . Base_ThemeCommon::get_template_file('Utils_RecordBrowser', 'icon_zoom.png') . '"></a>');
             }
         } else {
             $form->addElement('autoselect', $field, $label, $comp, array(array('Utils_RecordBrowserCommon', 'automulti_suggestbox'), array($rb_obj->tab, $crits, $f_callback, $desc['param'])), $f_callback);
         }
     } else {
         if ($desc['type'] === 'select') {
             $comp = array('' => '---') + $comp;
         }
         $form->addElement($desc['type'], $field, $label, $comp, array('id' => $field));
     }
     if ($mode !== 'add') {
         $form->setDefaults(array($field => $default));
     }
 }
Beispiel #3
0
 public function show_data($crits = array(), $cols = array(), $order = array(), $admin = false, $special = false, $pdf = false, $limit = null)
 {
     $this->help('RecordBrowser', 'main');
     if (Utils_RecordBrowserCommon::$admin_access) {
         $admin = true;
     }
     if (isset($_SESSION['client']['recordbrowser']['admin_access'])) {
         Utils_RecordBrowserCommon::$admin_access = true;
     }
     if (self::$clone_result !== null && $this->jump_to_new_record) {
         if (is_numeric(self::$clone_result)) {
             $this->navigate('view_entry', 'view', self::$clone_result);
         }
         $clone_result = self::$clone_result;
         self::$clone_result = null;
         if ($clone_result != 'canceled') {
             return;
         }
     }
     if ($this->check_for_jump()) {
         return;
     }
     Utils_RecordBrowserCommon::$cols_order = $this->col_order;
     if ($this->get_access('browse') === false) {
         print __('You are not authorised to browse this data.');
         return;
     }
     $this->init();
     $this->action = 'Browse';
     if (!Base_AclCommon::i_am_admin() && $admin) {
         print __('You don\'t have permission to access this data.');
     }
     if ($this->data_gb !== null) {
         $gb = $this->data_gb;
     } else {
         $gb = $this->init_module(Utils_GenericBrowser::module_name(), null, $this->tab);
     }
     if (!$pdf) {
         $gb->set_expandable(true);
     }
     if ($pdf) {
         $gb->set_resizable_columns(false);
     } else {
         $gb->set_fixed_columns_class($this->fixed_columns_class);
     }
     if ($special) {
         $gb_per_page = Base_User_SettingsCommon::get(Utils_GenericBrowser::module_name(), 'per_page');
         $gb->set_per_page(Base_User_SettingsCommon::get(Utils_RecordBrowser_RecordPicker::module_name(), 'per_page'));
     }
     if (!$this->disabled['search']) {
         $gb->is_adv_search_on();
         $is_searching = $gb->get_module_variable('search', '');
         if (!empty($is_searching)) {
             if ($this->get_module_variable('browse_mode') != 'all') {
                 $this->set_module_variable('browse_mode', 'all');
                 //                  $gb->set_module_variable('quickjump_to',null);
                 location(array());
                 return;
             }
         }
     }
     if ($special) {
         $table_columns = array(array('name' => __('Select'), 'width' => '40px'));
     } else {
         $table_columns = array();
         if (!$pdf && !$admin && $this->favorites) {
             $fav = array('name' => '&nbsp;', 'width' => '24px', 'attrs' => 'class="Utils_RecordBrowser__favs"');
             if (!isset($this->force_order)) {
                 $fav['order'] = ':Fav';
             }
             $table_columns[] = $fav;
         }
         if (!$pdf && !$admin && $this->watchdog) {
             $table_columns[] = array('name' => '', 'width' => '24px', 'attrs' => 'class="Utils_RecordBrowser__watchdog"');
         }
     }
     if (!$this->disabled['quickjump']) {
         $quickjump = DB::GetOne('SELECT quickjump FROM recordbrowser_table_properties WHERE tab=%s', array($this->tab));
     } else {
         $quickjump = '';
     }
     $hash = array();
     $query_cols = array();
     foreach ($this->table_rows as $field => $args) {
         $hash[$args['id']] = $field;
         if ($field === 'id') {
             continue;
         }
         if (!$args['visible'] && (!isset($cols[$args['id']]) || $cols[$args['id']] === false)) {
             continue;
         }
         if (isset($cols[$args['id']]) && $cols[$args['id']] === false) {
             continue;
         }
         $query_cols[] = $args['id'];
         $arr = array('name' => $args['name']);
         if (!$pdf && !isset($this->force_order) && $this->browse_mode != 'recent' && $args['type'] !== 'multiselect' && ($args['type'] !== 'calculated' || $args['param'] != '') && $args['type'] !== 'hidden') {
             $arr['order'] = $field;
         }
         if ($args['type'] == 'checkbox' || ($args['type'] == 'date' || $args['type'] == 'timestamp' || $args['type'] == 'time') && !$this->add_in_table || $args['type'] == 'commondata') {
             $arr['wrapmode'] = 'nowrap';
             $arr['width'] = 50;
         } else {
             $arr['width'] = 100;
         }
         $arr['name'] = _V($arr['name']);
         // ****** Translate field name for table header
         if (isset($this->more_table_properties[$args['id']])) {
             foreach (array('name', 'wrapmode', 'width', 'display', 'order') as $v) {
                 if (isset($this->more_table_properties[$args['id']][$v])) {
                     if (is_numeric($this->more_table_properties[$args['id']][$v]) && $v == 'width') {
                         $this->more_table_properties[$args['id']][$v] = $this->more_table_properties[$args['id']][$v] * 10;
                     }
                     $arr[$v] = $this->more_table_properties[$args['id']][$v];
                 }
             }
         }
         if (is_array($args['param'])) {
             $str = explode(';', $args['param']['array_id']);
         } else {
             $str = explode(';', $args['param']);
         }
         $ref = explode('::', $str[0]);
         $each = array();
         if (!$pdf && $quickjump !== '' && $args['name'] === $quickjump) {
             $each[] = 'quickjump';
         }
         if (!$pdf && !$this->disabled['search']) {
             $each[] = 'search';
         }
         foreach ($each as $e) {
             if ($args['type'] == 'text' || $args['type'] == 'currency' || $args['type'] == 'autonumber' || $args['type'] == 'calculated' && preg_match('/^[a-z]+(\\([0-9]+\\))?$/i', $args['param']) !== 0) {
                 $arr[$e] = $args['id'];
             }
             if ($args['type'] == 'long text' && $gb->is_adv_search_on()) {
                 $arr[$e] = $args['id'];
             }
             if (isset($args['ref_field']) && $args['ref_field']) {
                 $arr[$e] = $args['id'];
             }
             if ($args['commondata'] && (!is_array($args['param']) || strpos($args['param']['array_id'], ':') === false)) {
                 $arr[$e] = $args['id'];
             }
         }
         if (isset($arr['quickjump'])) {
             $arr['quickjump'] = '"~' . $arr['quickjump'];
         }
         if ($pdf) {
             $arr['attrs'] = 'style="border:1px solid black;font-weight:bold;text-align:center;color:white;background-color:gray"';
             if (!isset($arr['width'])) {
                 $arr['width'] = 100;
             }
             if ($arr['width'] == 1) {
                 $arr['width'] = 100;
             }
         }
         $table_columns[] = $arr;
     }
     if ($pdf) {
         $max = 0;
         $width_sum = 0;
         foreach ($table_columns as $k => $v) {
             if ($v['width'] > $max) {
                 $max = $v['width'];
             }
         }
         foreach ($table_columns as $k => $v) {
             $table_columns[$k]['width'] = intval($table_columns[$k]['width']);
             if ($table_columns[$k]['width'] < $max / 2) {
                 $table_columns[$k]['width'] = $max / 2;
             }
             $width_sum += $table_columns[$k]['width'];
         }
         $fraction = 0;
         foreach ($table_columns as $k => $v) {
             $table_columns[$k]['width'] = floor(100 * $v['width'] / $width_sum);
             $fraction += 100 * $v['width'] / $width_sum - $table_columns[$k]['width'];
             if ($fraction > 1) {
                 $table_columns[$k]['width'] += 1;
                 $fraction -= 1;
             }
             $table_columns[$k]['width'] = $table_columns[$k]['width'] . '%';
         }
     }
     if (empty($table_columns)) {
         print 'Invalid view, no fields to display';
         return;
     }
     $gb->set_table_columns($table_columns);
     if (!$pdf) {
         $clean_order = array();
         foreach ($order as $k => $v) {
             if ($k[0] == ':') {
                 $clean_order[$k] = $v;
                 continue;
             }
             if (!in_array($k, $query_cols)) {
                 continue;
             }
             if (isset($this->more_table_properties[$k]) && isset($this->more_table_properties[$k]['name'])) {
                 $key = $this->more_table_properties[$k]['name'];
             } else {
                 $key = isset($hash[$k]) ? $hash[$k] : $k;
                 $key = _V($this->table_rows[$key]['name']);
             }
             $clean_order[$key] = $v;
         }
         if ($this->browse_mode != 'recent') {
             $gb->set_default_order($clean_order, $this->changed_view);
         }
     }
     $search = $gb->get_search_query(true);
     $search_res = array();
     if ($this->search_calculated_callback) {
         $search_res = call_user_func($this->search_calculated_callback, $search);
     }
     if ($gb->is_adv_search_on()) {
         foreach ($search as $k => $v) {
             $f_id = str_replace(array('"', '~'), '', $k);
             $args = $this->table_rows[$hash[$f_id]];
             if ($args['commondata']) {
                 $k = $k . '[]';
             } elseif (isset($args['ref_field']) && $args['ref_field']) {
                 $k = $k . '[' . Utils_RecordBrowserCommon::get_field_id($args['ref_field']) . ']';
             }
             if ($k[0] == '"') {
                 $search_res = Utils_RecordBrowserCommon::merge_crits($search_res, array('~' . $k => $v));
                 continue;
             }
             if (is_array($v)) {
                 $v = $v[0];
             }
             $v = explode(' ', $v);
             foreach ($v as $w) {
                 if ($w === '') {
                     continue;
                 }
                 if (!$args['commondata']) {
                     $w = "%{$w}%";
                 }
                 $search_res = Utils_RecordBrowserCommon::merge_crits($search_res, array('~' . $k => $w));
             }
         }
     } else {
         $val = reset($search);
         $isearch = $gb->get_module_variable('search');
         if (empty($isearch)) {
             $val = null;
         }
         $val2 = explode(' ', $val[0]);
         $leftovers = array();
         foreach ($val2 as $vv) {
             if ($vv === '') {
                 continue;
             }
             $search_part = new Utils_RecordBrowser_Crits();
             foreach ($search as $k => $v) {
                 if ($v != $val) {
                     $leftovers[$k] = $v;
                     continue;
                 }
                 if ($k[0] == '"') {
                     $search_part = Utils_RecordBrowserCommon::merge_crits($search_part, array('~' . $k => $vv), true);
                     continue;
                 }
                 $args = $this->table_rows[$hash[trim($k, '(|')]];
                 if ($args['commondata']) {
                     $k = $k . '[]';
                 } elseif (isset($args['ref_field']) && $args['ref_field']) {
                     $k = $k . '[' . Utils_RecordBrowserCommon::get_field_id($args['ref_field']) . ']';
                 }
                 if (!$args['commondata']) {
                     $w = "%{$vv}%";
                 } else {
                     $w = $vv;
                 }
                 $search_part = Utils_RecordBrowserCommon::merge_crits($search_part, array('~' . $k => $w), true);
             }
             $search_res = Utils_RecordBrowserCommon::merge_crits($search_res, $search_part);
         }
         if ($leftovers) {
             $search_res = Utils_RecordBrowserCommon::merge_crits($search_res, $leftovers);
         }
     }
     if (!$pdf) {
         $order = $gb->get_order();
     }
     $crits = Utils_RecordBrowserCommon::merge_crits($crits, $search_res);
     if ($this->browse_mode == 'favorites') {
         $crits = Utils_RecordBrowserCommon::merge_crits($crits, array(':Fav' => true));
     }
     if ($this->browse_mode == 'watchdog') {
         $crits = Utils_RecordBrowserCommon::merge_crits($crits, array(':Sub' => true));
     }
     if ($this->browse_mode == 'recent') {
         $crits = Utils_RecordBrowserCommon::merge_crits($crits, array(':Recent' => true));
         $order = array(':Visited_on' => 'DESC');
     }
     if ($admin && !$pdf) {
         $order = array(':Edited_on' => 'DESC');
         $form = $this->init_module(Libs_QuickForm::module_name(), null, $this->tab . '_admin_filter');
         $form->addElement('select', 'show_records', __('Show records'), array(0 => '[' . __('All') . ']', 1 => '[' . __('All active') . ']', 2 => '[' . __('All deactivated') . ']'), array('onchange' => $form->get_submit_form_js()));
         $f = $this->get_module_variable('admin_filter', 0);
         $form->setDefaults(array('show_records' => $f));
         $admin_filter = $form->exportValue('show_records');
         $this->set_module_variable('admin_filter', $admin_filter);
         switch ($admin_filter) {
             case 0:
                 Utils_RecordBrowserCommon::$admin_filter = '';
                 break;
             case 1:
                 Utils_RecordBrowserCommon::$admin_filter = '<tab>.active=1 AND ';
                 break;
             case 2:
                 Utils_RecordBrowserCommon::$admin_filter = '<tab>.active=0 AND ';
                 break;
         }
         $form->display_as_row();
     }
     if (isset($this->force_order)) {
         $order = $this->force_order;
     }
     if (!$order) {
         $order = array();
     }
     $this->amount_of_records = Utils_RecordBrowserCommon::get_records_count($this->tab, $crits, $admin, $order);
     if ($limit === null && !$this->disabled['pagination']) {
         $limit = $gb->get_limit($this->amount_of_records);
     }
     if (!$this->disabled['pdf'] && !$pdf && $this->get_access('print')) {
         $limited_print_records = 200;
         $limited_print = $this->amount_of_records >= $limited_print_records;
         $print_limit = $limited_print ? $limit : null;
         $key = md5(serialize($this->tab) . serialize($crits) . serialize($cols) . serialize($order) . serialize($admin) . serialize($print_limit));
         $_SESSION['client']['utils_recordbrowser'][$key] = array('tab' => $this->tab, 'crits' => $crits, 'cols' => $cols, 'order' => $order, 'admin' => $admin, 'more_table_properties' => $this->more_table_properties, 'limit' => $print_limit);
         $print_href = 'href="modules/Utils/RecordBrowser/print.php?' . http_build_query(array('key' => $key, 'cid' => CID)) . '" target="_blank"';
         $print_tooltip_text = $limited_print ? __('Due to more than %d records, you are allowed to print current view', array($limited_print_records)) : __('Print all records');
         $print_tooltip = Utils_TooltipCommon::open_tag_attrs($print_tooltip_text, false);
         $this->new_button('print', __('Print'), "{$print_href} {$print_tooltip}");
     }
     $records = Utils_RecordBrowserCommon::get_records($this->tab, $crits, array(), $order, $limit, $admin);
     if (!$records) {
         $last_offset = $this->get_module_variable('last_offset');
         while (!$records) {
             if ($last_offset > $limit['offset'] && $limit['offset'] - $limit['numrows'] >= 0) {
                 $limit['offset'] -= $limit['numrows'];
             } elseif ($limit['offset'] + $limit['numrows'] < $this->amount_of_records) {
                 $limit['offset'] += $limit['numrows'];
             } else {
                 break;
             }
             $gb->set_module_variable('offset', $limit['offset']);
             $limit = $gb->get_limit($this->amount_of_records);
             $records = Utils_RecordBrowserCommon::get_records($this->tab, $crits, array(), $order, $limit, $admin);
         }
     }
     $this->set_module_variable('last_offset', $limit['offset']);
     if (($this->get_access('export') || $this->enable_export) && !$this->disabled['export']) {
         $this->new_button('save', __('Export'), 'href="modules/Utils/RecordBrowser/csv_export.php?' . http_build_query(array('tab' => $this->tab, 'admin' => $admin, 'cid' => CID, 'path' => $this->get_path())) . '"');
     }
     $this->set_module_variable('crits_stuff', $crits ? $crits : array());
     $this->set_module_variable('order_stuff', $order ? $order : array());
     $custom_label = '';
     if (!$pdf && !$special && $this->get_access('add', $this->custom_defaults) !== false) {
         if ($this->add_button !== null) {
             $label = $this->add_button;
         } elseif (!$this->multiple_defaults) {
             $label = $this->create_callback_href(array($this, 'navigate'), array('view_entry', 'add', null, $this->custom_defaults));
         } else {
             $label = Utils_RecordBrowserCommon::create_new_record_href($this->tab, $this->custom_defaults, 'multi', true, true);
         }
         if ($label !== false && $label !== '') {
             $custom_label = '<a ' . $label . '><span class="record_browser_add_new" ' . Utils_TooltipCommon::open_tag_attrs(__('Add new record')) . '><img src="' . Base_ThemeCommon::get_template_file('Utils/RecordBrowser/add.png') . '" /><div class="add_new">' . __('Add new') . '</div></span></a>';
         }
     }
     if ($this->more_add_button_stuff) {
         if ($custom_label) {
             $custom_label = '<table><tr><td>' . $custom_label . '</td><td>' . $this->more_add_button_stuff . '</td></tr></table>';
         } else {
             $custom_label = $this->more_add_button_stuff;
         }
     }
     $gb->set_custom_label($custom_label);
     if ($admin) {
         $this->browse_mode = 'all';
     }
     if ($this->browse_mode == 'recent') {
         $ret = DB::Execute('SELECT * FROM ' . $this->tab . '_recent WHERE user_id=%d ORDER BY visited_on DESC', array(Acl::get_user()));
         while ($row = $ret->FetchRow()) {
             if (!isset($records[$row[$this->tab . '_id']])) {
                 continue;
             }
             $records[$row[$this->tab . '_id']]['visited_on'] = Base_RegionalSettingsCommon::time2reg(strtotime($row['visited_on']));
         }
     } else {
         $this->set_module_variable('set_browsed_records', array('tab' => $this->tab, 'crits' => $crits, 'order' => $order, 'records' => array()));
     }
     if ($special) {
         $rpicker_ind = array();
     }
     if (!$pdf && !$admin && $this->favorites) {
         $favs = array();
         $ret = DB::Execute('SELECT ' . $this->tab . '_id FROM ' . $this->tab . '_favorite WHERE user_id=%d', array(Acl::get_user()));
         while ($row = $ret->FetchRow()) {
             $favs[$row[$this->tab . '_id']] = true;
         }
     }
     self::$access_override['tab'] = $this->tab;
     if (isset($limit)) {
         $i = $limit['offset'];
     }
     $grid_enabled = $this->grid === null ? Base_User_SettingsCommon::get(Utils_RecordBrowser::module_name(), 'grid') : $this->grid;
     if ($grid_enabled) {
         load_js('modules/Utils/RecordBrowser/grid.js');
     }
     $this->view_fields_permission = $this->get_access('add', $this->custom_defaults);
     if (!$pdf && !$special && $this->add_in_table && $this->view_fields_permission) {
         $form = $this->init_module(Libs_QuickForm::module_name(), null, 'add_in_table__' . $this->tab);
         $form_name = $form->get_name();
     } else {
         $form_name = '';
     }
     foreach ($records as $row) {
         if ($this->browse_mode != 'recent' && isset($limit)) {
             self::$browsed_records['records'][$row['id']] = $i;
             $i++;
         }
         $row = Utils_RecordBrowserCommon::record_processing($this->tab, $row, 'browse');
         self::$access_override['id'] = $row['id'];
         $gb_row = $gb->get_new_row();
         $row_data = array();
         if (!$pdf && !$admin && $this->favorites) {
             $isfav = isset($favs[$row['id']]);
             $row_data[] = Utils_RecordBrowserCommon::get_fav_button($this->tab, $row['id'], $isfav);
         }
         if (!$pdf && !$admin && $this->watchdog) {
             $row_data[] = Utils_WatchdogCommon::get_change_subscription_icon($this->tab, $row['id']);
         }
         if ($special) {
             $element = $this->get_module_variable('element');
             $format = $this->get_module_variable('format_func');
             $formated_name = is_callable($format) ? strip_tags(call_user_func($format, $row, true)) : Utils_RecordBrowserCommon::create_default_linked_label($this->tab, $row['id'], true);
             $row_data = array('<input type="checkbox" id="leightbox_rpicker_' . $element . '_' . $row['id'] . '" formated_name="' . $formated_name . '" />');
             $rpicker_ind[] = $row['id'];
         }
         $r_access = $this->get_access('view', $row);
         foreach ($query_cols as $k => $argsid) {
             if (!$r_access || !$r_access[$argsid]) {
                 $row_data[] = '';
                 continue;
             }
             $field = $hash[$argsid];
             $args = $this->table_rows[$field];
             $value = $this->get_val($field, $row, $special || $pdf, $args);
             if (strip_tags($value) == '') {
                 $value .= '&nbsp;';
             }
             if ($args['style'] == 'currency' || $args['style'] == 'number') {
                 $value = array('style' => 'text-align:right;', 'value' => $value);
             }
             if ($grid_enabled && !in_array($args['type'], array('calculated', 'multiselect', 'commondata'))) {
                 $table = '<table class="Utils_RecordBrowser__grid_table" style="width:100%" cellpadding="0" cellspacing="0" border="0"><tr><td id="grid_form_field_' . $argsid . '_' . $row['id'] . '" style="display:none;">Loading...</td><td id="grid_value_field_' . $argsid . '_' . $row['id'] . '">';
                 $ed_icon = '</td><td style="min-width:18px;width:18px;padding:0px;margin:0px;">' . '<span id="grid_edit_' . $argsid . '_' . $row['id'] . '" style="float:right;display:none;"><a href="javascript:void(0);" onclick="grid_enable_field_edit(\'' . $argsid . '\',' . $row['id'] . ',\'' . $this->tab . '\',\'' . $form_name . '\');"><img border="0" src="' . Base_ThemeCommon::get_template_file(Utils_GenericBrowser::module_name(), 'edit.png') . '"></a></span>' . '<span id="grid_save_' . $argsid . '_' . $row['id'] . '" style="float:right;display:none;"><a href="javascript:void(0);" onclick="grid_submit_field(\'' . $argsid . '\',' . $row['id'] . ',\'' . $this->tab . '\');"><img border="0" src="' . Base_ThemeCommon::get_template_file(Utils_RecordBrowser::module_name(), 'save_grid.png') . '"></a></span>' . '</td></tr></table>';
                 /*                  $table = '<span id="grid_form_field_'.$argsid.'_'.$row['id'].'" style="display:none;">Loading...</span><span id="grid_value_field_'.$argsid.'_'.$row['id'].'">';
                                     $ed_icon = '</span>'.
                                                 '<span id="grid_edit_'.$argsid.'_'.$row['id'].'" style="float:right;display:none;"><a href="javascript:void(0);" onclick="grid_enable_field_edit(\''.$argsid.'\','.$row['id'].',\''.$this->tab.'\',\''.$form_name.'\');"><img border="0" src="'.Base_ThemeCommon::get_template_file(Utils_GenericBrowser::getName(), 'edit.png').'"></a></span>'.
                                                 '<span id="grid_save_'.$argsid.'_'.$row['id'].'" style="float:right;display:none;"><a href="javascript:void(0);" onclick="grid_submit_field(\''.$argsid.'\','.$row['id'].',\''.$this->tab.'\');"><img border="0" src="'.Base_ThemeCommon::get_template_file(Utils_RecordBrowser::getName(), 'save_grid.png').'"></a></span>';*/
                 $attrs = 'onmouseover="if(typeof(mouse_over_grid)!=\'undefined\')mouse_over_grid(\'' . $argsid . '\',\'' . $row['id'] . '\');" onmouseout="if(typeof(mouse_out_grid)!=\'undefined\')mouse_out_grid(\'' . $argsid . '\',\'' . $row['id'] . '\');"';
                 //                  $attrs = 'onmouseover="$(\'grid_edit_'.$argsid.'_'.$row['id'].'\').style.display=\'inline\'" onmouseout="$(\'grid_edit_'.$argsid.'_'.$row['id'].'\').style.display=\'none\'"';
             } else {
                 $table = '';
                 $ed_icon = '';
                 $attrs = '';
             }
             if (is_array($value)) {
                 $value['value'] = $table . $value['value'] . $ed_icon;
                 $value['attrs'] = $attrs;
             } else {
                 $value = array('value' => $table . $value . $ed_icon, 'attrs' => $attrs);
             }
             if ($pdf) {
                 $value['overflow_box'] = false;
                 $value['attrs'] = $attrs . ' style="border:1px solid black;"';
                 $value['value'] = '&nbsp;' . $value['value'] . '&nbsp;';
             }
             $row_data[] = $value;
         }
         $gb_row->add_data_array($row_data);
         if (!$pdf && $this->disabled['actions'] !== true) {
             if ($this->disabled['actions'] === false) {
                 $da = array();
             } else {
                 $da = array_flip($this->disabled['actions']);
             }
             if (!$special) {
                 if (!isset($da['view'])) {
                     $gb_row->add_action($this->create_callback_href(array($this, 'navigate'), array('view_entry', 'view', $row['id'])), __('View'), null, 'view');
                 }
                 if (!isset($da['edit'])) {
                     if ($this->get_access('edit', $row)) {
                         $gb_row->add_action($this->create_callback_href(array($this, 'navigate'), array('view_entry', 'edit', $row['id'])), __('Edit'), null, 'edit');
                     } else {
                         $gb_row->add_action('', __('Edit'), __('You don\'t have permission to edit this record.'), 'edit', 0, true);
                     }
                 }
                 if ($admin) {
                     if (!$row[':active']) {
                         $gb_row->add_action($this->create_callback_href(array($this, 'set_active'), array($row['id'], true)), __('Activate'), null, 'active-off');
                     } else {
                         $gb_row->add_action($this->create_callback_href(array($this, 'set_active'), array($row['id'], false)), __('Deactivate'), null, 'active-on');
                     }
                     $info = Utils_RecordBrowserCommon::get_record_info($this->tab, $row['id']);
                     if ($info['edited_on'] === null) {
                         $gb_row->add_action('', __('This record was never edited'), null, 'history_inactive');
                     } else {
                         $gb_row->add_action($this->create_callback_href(array($this, 'navigate'), array('view_edit_history', $row['id'])), __('View edit history'), null, 'history');
                     }
                 } else {
                     if (!isset($da['delete'])) {
                         if ($this->get_access('delete', $row)) {
                             $gb_row->add_action($this->create_confirm_callback_href(__('Are you sure you want to delete this record?'), array($this, 'delete_record'), array($row['id'], false)), __('Delete'), null, 'delete');
                         } else {
                             $gb_row->add_action('', __('Delete'), __('You don\'t have permission to delete this record'), 'delete', 0, true);
                         }
                     }
                 }
             }
             if (!isset($da['info'])) {
                 $gb_row->add_info(($this->browse_mode == 'recent' ? '<b>' . __('Visited on: %s', array($row['visited_on'])) . '</b><br>' : '') . Utils_RecordBrowserCommon::get_html_record_info($this->tab, isset($info) ? $info : $row['id']));
             }
             $this->call_additional_actions_methods($row, $gb_row);
         }
     }
     if (!$special && $this->add_in_table && $this->view_fields_permission) {
         $visible_cols = array();
         foreach ($this->table_rows as $field => $args) {
             if (!$args['visible'] && (!isset($cols[$args['id']]) || $cols[$args['id']] === false)) {
                 continue;
             }
             if (isset($cols[$args['id']]) && $cols[$args['id']] === false) {
                 continue;
             }
             $visible_cols[$args['id']] = true;
         }
         self::$last_record = $this->record = $this->custom_defaults = Utils_RecordBrowserCommon::record_processing($this->tab, $this->custom_defaults, 'adding');
         $this->prepare_view_entry_details($this->custom_defaults, 'add', null, $form, $visible_cols);
         $form->setDefaults($this->custom_defaults);
         if ($form->isSubmitted()) {
             $this->set_module_variable('force_add_in_table_after_submit', true);
             if ($form->validate()) {
                 $values = $form->exportValues();
                 foreach ($this->custom_defaults as $k => $v) {
                     if (!isset($values[$k])) {
                         $values[$k] = $v;
                     }
                 }
                 $id = Utils_RecordBrowserCommon::new_record($this->tab, $values);
                 location(array());
             } else {
                 $this->show_add_in_table = true;
             }
         }
         $form->addElement('submit', 'submit_qanr', __('Save'), array('style' => 'width:100%;height:19px;', 'class' => 'button'));
         $renderer = new HTML_QuickForm_Renderer_TCMSArraySmarty();
         $form->accept($renderer);
         $data = $renderer->toArray();
         $gb->set_prefix($data['javascript'] . '<form ' . $data['attributes'] . '>' . $data['hidden'] . "\n");
         $gb->set_postfix("</form>\n");
         if (!$admin && $this->favorites) {
             $row_data = array('&nbsp;');
         } else {
             $row_data = array();
         }
         if (!$admin && $this->watchdog) {
             $row_data[] = '&nbsp;';
         }
         $first = true;
         foreach ($visible_cols as $k => $v) {
             if (isset($data[$k])) {
                 $row_data[] = array('value' => $data[$k]['error'] . $data[$k]['html'], 'overflow_box' => false);
                 if ($first) {
                     eval_js('focus_on_field = "' . $k . '";');
                 }
                 $first = false;
             } else {
                 $row_data[] = '&nbsp;';
             }
         }
         //          if ($this->browse_mode == 'recent')
         //              $row_data[] = '&nbsp;';
         $gb_row = $gb->get_new_row();
         $gb_row->add_action('', $data['submit_qanr']['html'], '', null, 0, false, 7);
         $gb_row->set_attrs('id="add_in_table_row" style="display:' . ($this->show_add_in_table ? '' : 'none') . ';"');
         $gb_row->add_data_array($row_data);
     }
     if ($special) {
         $this->set_module_variable('rpicker_ind', $rpicker_ind);
         $ret = $this->get_html_of_module($gb);
         Base_User_SettingsCommon::save(Utils_RecordBrowser_RecordPicker::module_name(), 'per_page', $gb->get_module_variable('per_page'));
         Base_User_SettingsCommon::save(Utils_GenericBrowser::module_name(), 'per_page', $gb_per_page);
         return $ret;
     }
     if ($pdf) {
         $gb->absolute_width(true);
         $args = array(Base_ThemeCommon::get_template_filename('Utils_GenericBrowser', 'pdf'));
     } else {
         $args = array();
     }
     $this->display_module($gb, $args);
 }
Beispiel #4
0
 public function send($file)
 {
     if ($this->is_back()) {
         return $this->go_back($file);
     }
     $qf = $this->init_module(Libs_QuickForm::module_name(), null, 'send_fax');
     list($providers, $providers_arr) = self::get_providers($file);
     if (empty($providers)) {
         $this->go_back($file);
         Epesi::alert(__('No fax providers installed or configured for this type of file.'));
         return;
     }
     $qf->addElement('header', null, __('Faxing file: %s', array(basename($file))));
     $qf->addElement('select', 'provider', __('Provider'), $providers);
     $qf->addElement('header', null, __('Contact'));
     $fav_contact = CRM_ContactsCommon::get_contacts(array(':Fav' => true, '!fax' => ''));
     $fav_contact2 = array();
     foreach ($fav_contact as $v) {
         $fav_contact2[$v['id']] = CRM_ContactsCommon::contact_format_default($v, true);
     }
     $rb_contact = $this->init_module(Utils_RecordBrowser_RecordPicker::module_name());
     $this->display_module($rb_contact, array('contact', 'dest_contact', array('CRM_FaxCommon', 'rpicker_contact_format'), array('!fax' => ''), array('fax' => true)));
     $qf->addElement('multiselect', 'dest_contact', '', $fav_contact2);
     $qf->addElement('static', null, $rb_contact->create_open_link('Add contact'));
     $qf->addElement('header', null, __('Company'));
     $fav_company = CRM_ContactsCommon::get_companies(array(':Fav' => true, '!fax' => ''), array('id', 'company_name'));
     $fav_company2 = array();
     foreach ($fav_company as $v) {
         $fav_company2[$v['id']] = $v['company_name'];
     }
     $rb_company = $this->init_module(Utils_RecordBrowser_RecordPicker::module_name());
     $this->display_module($rb_company, array('company', 'dest_company', array('CRM_FaxCommon', 'rpicker_company_format'), array('!fax' => ''), array('fax' => true)));
     $qf->addElement('multiselect', 'dest_company', '', $fav_company2);
     $qf->addElement('static', null, $rb_company->create_open_link('Add company'));
     $qf->addElement('header', null, __('Other'));
     $qf->addElement('text', 'dest_other', __('Other fax numbers (comma separated)'));
     $qf->addFormRule(array($this, 'check_numbers'));
     if ($qf->validate()) {
         $data = $qf->exportValues();
         if (!isset($providers_arr[$data['provider']]['send_func'])) {
             Epesi::alert(__('Invalid fax provider.'));
         } else {
             $fax_func = array($data['provider'] . 'Common', $providers_arr[$data['provider']]['send_func']);
             $numbers = array();
             $contacts = Utils_RecordBrowserCommon::get_records('contact', array('id' => $data['dest_contact']), array('fax'));
             foreach ($contacts as $row) {
                 $numbers[] = $row['fax'];
             }
             $companies = Utils_RecordBrowserCommon::get_records('company', array('id' => $data['dest_company']), array('fax'));
             foreach ($companies as $row) {
                 $numbers[] = $row['fax'];
             }
             $numbers += explode(',', $data['dest_other']);
             $ret = call_user_func($fax_func, $file, $numbers);
             if ($ret) {
                 return $this->go_back($file);
             }
         }
     }
     $qf->display();
     Base_ActionBarCommon::add('send', __('Send'), $qf->get_submit_form_href());
     Base_ActionBarCommon::add('back', __('Back'), $this->create_back_href());
 }