Esempio n. 1
0
 public static function search_format($id)
 {
     $row = Utils_RecordBrowserCommon::get_records('bugtrack', array('id' => $id));
     if (!$row) {
         return false;
     }
     $row = array_pop($row);
     return Utils_RecordBrowserCommon::record_link_open_tag('bugtrack', $row['id']) . __('Bug (attachment) #%d, %s', array($row['id'], $row['project_name'])) . Utils_RecordBrowserCommon::record_link_close_tag();
 }
Esempio n. 2
0
 public static function get_tax_details()
 {
     static $cache = null;
     if ($cache === null) {
         $cache = array();
         $r = Utils_RecordBrowserCommon::get_records('data_tax_rates');
         foreach ($r as $v) {
             $cache[$v['id']] = $v;
         }
     }
     return $cache;
 }
Esempio n. 3
0
 public function body()
 {
     $recs = Utils_RecordBrowserCommon::get_records('company', array(), array(), array('company_name' => 'ASC'));
     $i = 0;
     foreach ($recs as $k => $v) {
         if ($i >= 10) {
             unset($recs[$k]);
         }
         $i++;
     }
     $this->rbr->set_reference_records($recs);
     $this->rbr->set_reference_record_display_callback(array('Tests_ReportCommon', 'display_company'));
     $date_range = $this->rbr->display_date_picker();
     $this->rbr->set_categories(self::$cats);
     $this->rbr->set_summary('col', array('label' => 'Total'));
     $this->rbr->set_summary('row', array('label' => 'Total'));
     $this->rbr->set_format(array(self::$cats[0] => 'numeric', self::$cats[1] => 'currency'));
     $header = array('Company');
     $this->dates = $date_range['dates'];
     $this->range_type = $date_range['type'];
     switch ($date_range['type']) {
         case 'day':
             $this->format = 'd M Y';
             break;
         case 'week':
             $this->format = 'W Y';
             break;
         case 'month':
             $this->format = 'M Y';
             break;
         case 'year':
             $this->format = 'Y';
             break;
     }
     foreach ($this->dates as $v) {
         $header[] = date($this->format, $v);
     }
     $this->rbr->set_table_header($header);
     $this->rbr->set_display_cell_callback(array($this, 'display_cells'));
     $this->rbr->set_pdf_title(__('Companies - Report, %s', array(date('Y-m-d H:i:s'))));
     $this->rbr->set_pdf_subject($this->rbr->pdf_subject_date_range());
     $this->rbr->set_pdf_filename(__('Companies_Report_%s', array(date('Y_m_d__H_i_s'))));
     $this->display_module($this->rbr);
 }
Esempio n. 4
0
$path = $_REQUEST['path'];
define('CID', $cid);
define('READ_ONLY_SESSION', true);
require_once '../../../include.php';
$crits = Module::static_get_module_variable($path, 'crits_stuff', null);
$order = Module::static_get_module_variable($path, 'order_stuff', null);
if ($crits === null || $order === null) {
    $crits = $order = array();
}
ModuleManager::load_modules();
if (!Utils_RecordBrowserCommon::get_access($tab, 'export') && !Base_AclCommon::i_am_admin()) {
    die('Access denied');
}
set_time_limit(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');
    }
Esempio n. 5
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());
 }
Esempio n. 6
0
 public static function check_nickname($v, $id)
 {
     if (isset($id[2])) {
         $r = Utils_RecordBrowserCommon::get_records('rc_multiple_emails', array('nickname' => $v, 'record_type' => $id[0], 'record_id' => $id[1], '!id' => $id[2]), array());
         return empty($r);
     }
     $r = Utils_RecordBrowserCommon::get_records('rc_multiple_emails', array('nickname' => $v, 'record_type' => $id[0], 'record_id' => $id[1]), array());
     return empty($r);
 }
Esempio n. 7
0
 public function applet($conf, &$opts)
 {
     Epesi::load_js('modules/CRM/Roundcube/utils.js');
     $opts['go'] = true;
     $accounts = array();
     $ret = array();
     $update_applet = '';
     foreach ($conf as $key => $on) {
         $x = explode('_', $key);
         if ($x[0] == 'account' && $on) {
             $id = $x[1];
             $accounts[] = $id;
         }
     }
     $accs = Utils_RecordBrowserCommon::get_records('rc_accounts', array('epesi_user' => Acl::get_user(), 'id' => $accounts));
     print '<ul>';
     foreach ($accs as $row) {
         $mail = $row['account_name'];
         $cell_id = 'mailaccount_' . $opts['id'] . '_' . $row['id'];
         //interval execution
         eval_js_once('setInterval(\'CRM_RC.update_msg_num(' . $opts['id'] . ' ,' . $row['id'] . ' , 0)\',300000)');
         //and now
         $update_applet .= 'CRM_RC.update_msg_num(' . $opts['id'] . ' ,' . $row['id'] . ' ,1);';
         print '<li><i><a' . $this->create_callback_href(array($this, 'open_rc_account'), $row['id']) . '>' . $mail . '</a></i> - <span id="' . $cell_id . '"></span></li>';
     }
     print '</ul>';
     $this->js($update_applet);
     $href = $this->create_callback_href(array('Base_BoxCommon', 'push_module'), array($this->get_type(), 'account_manager', array(true)));
     $img = '<img src="' . Base_ThemeCommon::get_template_file('Base_Dashboard', 'configure.png') . '" border="0">';
     $tooltip = Utils_TooltipCommon::open_tag_attrs(__('Go to account settings'));
     $opts['actions'][] = "<a {$tooltip} {$href}>{$img}</a>";
 }
Esempio n. 8
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();
 }
Esempio n. 9
0
    public function mini_view($cols, $crits, $order, $info=null, $limit=null, $conf = array('actions_edit'=>true, 'actions_info'=>true), & $opts = array()){
        unset($_SESSION['client']['recordbrowser']['admin_access']);
        $this->init();
        $gb = $this->init_module('Utils/GenericBrowser',$this->tab,$this->tab);
        $field_hash = array();
        foreach($this->table_rows as $field => $args)
            $field_hash[$args['id']] = $field;
        $header = array();
        $callbacks = array();
        foreach($cols as $k=>$v) {
            if (isset($v['callback'])) $callbacks[] = $v['callback'];
            else $callbacks[] = null;
            if (is_array($v)) {
                $arr = array('name'=>_V($field_hash[$v['field']])); // TRSL
				if (isset($v['width'])) $arr['width'] = $v['width'];
                $cols[$k] = $v['field'];
            } else {
                $arr = array('name'=>_V($field_hash[$v])); // TRSL
                $cols[$k] = $v;
            }
            if (isset($v['label'])) $arr['name'] = $v['label'];
            $arr['wrapmode'] = 'nowrap';
            $header[] = $arr;
        }
        $gb->set_table_columns($header);
        $gb->set_fixed_columns_class($this->fixed_columns_class);

        $clean_order = array();
        foreach($order as $k=>$v) {
    	    if ($k==':Visited_on') $field_hash[$k] = $k;
    	    if ($k==':Fav') $field_hash[$k] = $k;
    	    if ($k==':Edited_on') $field_hash[$k] = $k;
            if ($k==':id') $field_hash[$k] = $k;
            $clean_order[] = array('column'=>$field_hash[$k],'order'=>$field_hash[$k],'direction'=>$v);
        }
        if ($limit!=null && !isset($conf['force_limit'])) {
            $limit = array('offset'=>0, 'numrows'=>$limit);
            $records_qty = Utils_RecordBrowserCommon::get_records_count($this->tab, $crits);
            if ($records_qty>$limit['numrows']) {
                if ($this->get_module_variable('no_limit_in_mini_view',false)) {
                    $opts['actions'][] = '<a '.Utils_TooltipCommon::open_tag_attrs(__('Display first %d records', array($limit['numrows']))).' '.$this->create_callback_href(array($this, 'set_no_limit_in_mini_view'), array(false)).'><img src="'.Base_ThemeCommon::get_template_file('Utils_RecordBrowser','show_some.png').'" border="0"></a>';
                    $limit = null;
                } else {
                    print(__('Displaying %s of %s records', array($limit['numrows'], $records_qty)));
                    $opts['actions'][] = '<a '.Utils_TooltipCommon::open_tag_attrs(__('Display all records')).' '.$this->create_callback_href(array($this, 'set_no_limit_in_mini_view'), array(true)).'><img src="'.Base_ThemeCommon::get_template_file('Utils_RecordBrowser','show_all.png').'" border="0"></a>';
                }
            }
        }
        $records = Utils_RecordBrowserCommon::get_records($this->tab, $crits, array(), $clean_order, $limit);
        foreach($records as $v) {
            $gb_row = $gb->get_new_row();
            $arr = array();
            foreach($cols as $k=>$w) {
                if (!isset($callbacks[$k])) $s = $this->get_val($field_hash[$w], $v, false, $this->table_rows[$field_hash[$w]]);
                else $s = call_user_func($callbacks[$k], $v);
                $arr[] = $s;
            }
            $gb_row->add_data_array($arr);
            if (is_callable($info)) {
                $additional_info = call_user_func($info, $v);
            } else $additional_info = '';
            if (!is_array($additional_info) && isset($additional_info)) $additional_info = array('notes'=>$additional_info);
            if (isset($additional_info['notes'])) $additional_info['notes'] = $additional_info['notes'].'<hr />';
            if (isset($additional_info['row_attrs'])) $gb_row->set_attrs($additional_info['row_attrs']);
            if (isset($conf['actions_info']) && $conf['actions_info']) $gb_row->add_info($additional_info['notes'].Utils_RecordBrowserCommon::get_html_record_info($this->tab, $v['id']));
            if (isset($conf['actions_view']) && $conf['actions_view']) $gb_row->add_action($this->create_callback_href(array($this,'navigate'),array('view_entry', 'view',$v['id'])),'View');
            if (isset($conf['actions_edit']) && $conf['actions_edit']) if ($this->get_access('edit',$v)) $gb_row->add_action($this->create_callback_href(array($this,'navigate'),array('view_entry', 'edit',$v['id'])),'Edit');
            if (isset($conf['actions_delete']) && $conf['actions_delete']) if ($this->get_access('delete',$v)) $gb_row->add_action($this->create_confirm_callback_href(__('Are you sure you want to delete this record?'),array($this,'delete_record'),array($v['id'], false)),'Delete');
            if (isset($conf['actions_history']) && $conf['actions_history']) {
                $r_info = Utils_RecordBrowserCommon::get_record_info($this->tab, $v['id']);
                if ($r_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', $v['id'])),'View edit history',null,'history');
            }
            $this->call_additional_actions_methods($v, $gb_row);
        }
        $this->display_module($gb);
    }
Esempio n. 10
0
 public function salesopportunity_addon($salesopportunity)
 {
     $attachment_groups = array();
     if (ModuleManager::is_installed('CRM_Meeting') >= 0) {
         $records = Utils_RecordBrowserCommon::get_records('crm_meeting', array('opportunity' => $salesopportunity['id']), array());
         foreach ($records as $rec) {
             $attachment_groups[] = 'crm_meeting/' . $rec['id'];
         }
     }
     if (ModuleManager::is_installed('CRM_Tasks') >= 0) {
         $records = Utils_RecordBrowserCommon::get_records('task', array('opportunity' => $salesopportunity['id']), array());
         foreach ($records as $rec) {
             $attachment_groups[] = 'task/' . $rec['id'];
         }
     }
     if (ModuleManager::is_installed('CRM_PhoneCall') >= 0) {
         $records = Utils_RecordBrowserCommon::get_records('phonecall', array('opportunity' => $salesopportunity['id']), array());
         foreach ($records as $rec) {
             $attachment_groups[] = 'phonecall/' . $rec['id'];
         }
     }
     if (Base_User_SettingsCommon::get('CRM/Contacts/NotesAggregate', 'show_all_notes')) {
         $attachment_groups[] = 'premium_salesopportunity/' . $salesopportunity['id'];
     }
     $a = $this->init_module('Utils/Attachment', array($attachment_groups));
     $a->set_multiple_group_mode();
     $this->display_module($a);
 }
Esempio n. 11
0
            continue;
        }
        $old_checkpoint->require_time(2);
        Utils_RecordBrowserCommon::new_record('rc_related', array('recordset' => $r['recordset']));
        unset($old[$i]);
        $old_checkpoint->set('old', $old);
    }
    $old_checkpoint->done();
}
Patch::set_message('Processing related');
$related_checkpoint = Patch::checkpoint('related');
if (!$related_checkpoint->is_done()) {
    while (1) {
        $related = $related_checkpoint->get('related', array());
        if (empty($related)) {
            $related = Utils_RecordBrowserCommon::get_records('rc_mails_assoc', array(), array(), array(), 10);
            if (empty($related)) {
                break;
            }
        }
        foreach ($related as $i => $r) {
            $related_checkpoint->require_time(5);
            $mail = Utils_RecordBrowserCommon::get_record('rc_mails', $r['mail']);
            $mail['related'][] = $r['recordset'] . '/' . $r['record_id'];
            Utils_RecordBrowserCommon::update_record('rc_mails', $r['mail'], array('related' => $mail['related']));
            Utils_RecordBrowserCommon::delete_record('rc_mails_assoc', $r['id']);
            unset($related[$i]);
            $related_checkpoint->set('related', $related);
        }
    }
    $related_checkpoint->done();
Esempio n. 12
0
 */
if (!isset($_POST['select']) || !isset($_POST['path']) || !isset($_POST['cid'])) {
    die('alert(\'Invalid request\')');
}
define('JS_OUTPUT', 1);
define('CID', $_POST['cid']);
require_once '../../../../include.php';
foreach ($_POST as $k => $v) {
    $_POST[$k] = trim($v, '"');
}
$path = $_POST['path'];
$select = json_decode($_POST['select']);
$tab = Module::static_get_module_variable($path, 'tab', null);
$crits = Module::static_get_module_variable($path, 'crits_stuff', null);
$rp_path = Module::static_get_module_variable($path, 'rp_fs_path', null);
$selected =& Module::static_get_module_variable($rp_path, 'selected', array());
ModuleManager::load_modules();
if ($tab === null || $crits === null || $rp_path === null) {
    die('alert(\'Invalid usage - variables not set (path - ' . $path . ', module vars - ' . epesi::escapeJS(print_r($_SESSION['client']['__module_vars__'][$path], true)) . ')\');');
}
$tab_info = Utils_RecordBrowserCommon::init($tab);
$records = Utils_RecordBrowserCommon::get_records($tab, $crits, array('id'));
foreach ($records as $r) {
    if ($select) {
        $selected[$r['id']] = 1;
    } else {
        unset($selected[$r['id']]);
    }
}
session_commit();
print 'Epesi.procOn--;_chj(\'\',\'\',\'queue\');';
Esempio n. 13
0
        break;
    case 'recent':
        $crits[':Recent'] = true;
        $sort = array(':Visited_on' => 'DESC');
        break;
}
if (!IPHONE && $type != 'recent' && $order && ($_GET['order_dir'] == 'asc' || $_GET['order_dir'] == 'desc')) {
    $sort = array($order => strtoupper($_GET['order_dir']));
}
$offset = isset($_GET['rb_offset']) ? $_GET['rb_offset'] : 0;
if (IPHONE) {
    $num_rows = 20;
} else {
    $num_rows = 10;
}
$data = Utils_RecordBrowserCommon::get_records($table, $crits, array(), $sort, array('numrows' => $num_rows, 'offset' => $num_rows * $offset));
//parse data
if (IPHONE) {
    $letter = null;
    $letter_col = current($cols_out);
    $letter_col = $letter_col['record']['id'];
    print '<ul>';
} else {
    $data_out = array();
}
foreach ($data as $v) {
    if (IPHONE) {
        $row_sort = '';
        $row_info = '';
    } else {
        $row = array();
Esempio n. 14
0
<?php

defined("_VALID_ACCESS") || die('Direct access forbidden');
$mails = Utils_RecordBrowserCommon::get_records('rc_mails');
foreach ($mails as $m) {
    Utils_RecordBrowserCommon::update_record('rc_mails', $m['id'], array('message_id' => ltrim(rtrim($m['message_id'], '>'), '<')));
}
foreach ($mails as $m) {
    CRM_RoundcubeCommon::create_thread($m['id']);
}
Esempio n. 15
0
 public static function reload_mails($rs, $id, $email_addresses = null)
 {
     $prefix = ($rs == 'contact' ? 'P' : 'C') . ':';
     if (!$email_addresses) {
         $email_addresses = self::get_email_addresses($rs, $id);
     }
     foreach ($email_addresses as $email) {
         $cc = Utils_RecordBrowserCommon::get_records('rc_mails', array('(~from' => '%' . $email . '%', '|~to' => '%' . $email . '%'));
         foreach ($cc as $mail) {
             if ($rs == 'contact' && $mail['employee'] == $id || in_array($prefix . $id, $mail['contacts'])) {
                 continue;
             }
             if (!preg_match('/(^|[\\s,\\<\\;])' . preg_quote($email, '/') . '($|[\\s,\\>\\&])/i', $mail['from'] . ',' . $mail['to'])) {
                 continue;
             }
             $mail['contacts'][] = $prefix . $id;
             Utils_RecordBrowserCommon::update_record('rc_mails', $mail['id'], array('contacts' => $mail['contacts']));
             CRM_RoundcubeCommon::create_thread($mail['id']);
         }
     }
 }
Esempio n. 16
0
 /**
  * Get records from recordset.
  * @param array $crits
  * @param array $cols
  * @param array $order
  * @param mixed $limit
  * @param bool $admin
  * @return RBO_Record[]
  */
 public function get_records($crits = array(), $cols = array(), $order = array(), $limit = array(), $admin = false)
 {
     $records = Utils_RecordBrowserCommon::get_records($this->tab, $crits, $cols, $order, $limit, $admin);
     return $this->array_of_records_to_array_of_objects($records);
 }
Esempio n. 17
0
<?php

defined("_VALID_ACCESS") || die('Direct access forbidden');
//addons table
$fields = array(array('name' => _M('Recordset'), 'type' => 'text', 'param' => 64, 'display_callback' => array('CRM_PhoneCallCommon', 'display_recordset'), 'QFfield_callback' => array('CRM_PhoneCallCommon', 'QFfield_recordset'), 'required' => true, 'extra' => false, 'visible' => true));
Utils_RecordBrowserCommon::install_new_recordset('phonecall_related', $fields);
Utils_RecordBrowserCommon::set_caption('phonecall_related', _M('Meeting Related Recordsets'));
Utils_RecordBrowserCommon::register_processing_callback('phonecall_related', array('CRM_PhoneCallCommon', 'processing_related'));
Utils_RecordBrowserCommon::add_access('phonecall_related', 'view', 'ACCESS:employee');
Utils_RecordBrowserCommon::add_access('phonecall_related', 'add', 'ADMIN');
Utils_RecordBrowserCommon::add_access('phonecall_related', 'edit', 'SUPERADMIN');
Utils_RecordBrowserCommon::add_access('phonecall_related', 'delete', 'SUPERADMIN');
Utils_RecordBrowserCommon::new_record_field('phonecall', array('name' => _M('Related'), 'type' => 'multiselect', 'param' => '__RECORDSETS__::;CRM_PhoneCallCommon::related_crits', 'QFfield_callback' => array('CRM_PhoneCallCommon', 'QFfield_related'), 'extra' => false, 'required' => false, 'visible' => true));
$rel = Utils_RecordBrowserCommon::get_records('phonecall', array('!related_to' => ''));
foreach ($rel as $r) {
    $rr = array();
    foreach ($r['related_to'] as $id) {
        $rr[] = 'contact/' . $id;
    }
    Utils_RecordBrowserCommon::update_record('phonecall', $r['id'], array('related' => $rr), false, null, true);
}
Utils_RecordBrowserCommon::delete_record_field('phonecall', 'Related to');
Esempio n. 18
0
 public static function crm_event_get_all($start, $end, $filter = null, $customers = null)
 {
     $start = date('Y-m-d', Base_RegionalSettingsCommon::reg2time($start));
     $crits = array();
     if ($filter === null) {
         $filter = CRM_FiltersCommon::get();
     }
     $f_array = explode(',', trim($filter, '()'));
     if ($filter != '()' && $filter) {
         $crits['(' . 'employees'] = $f_array;
     }
     if ($customers && !empty($customers)) {
         $crits['|customers'] = $customers;
     } elseif ($filter != '()' && $filter) {
         $crits['|customers'] = $f_array;
         foreach ($crits['|customers'] as $k => $v) {
             $crits['|customers'][$k] = 'P:' . $v;
         }
     }
     $critsb = $crits;
     $crits['<=date'] = $end;
     $crits['>=date'] = $start;
     $crits['recurrence_type'] = '';
     $count = 0;
     $ret = Utils_RecordBrowserCommon::get_records('crm_meeting', $crits, array(), array('date' => 'DESC', 'time' => 'DESC'), CRM_CalendarCommon::$events_limit);
     $result = array();
     foreach ($ret as $r) {
         $result[] = self::crm_event_get($r);
     }
     $count += count($result);
     $crits = $critsb;
     $crits['<=date'] = $end;
     $crits['(>=recurrence_end'] = $start;
     $crits['|recurrence_end'] = '';
     $crits['!recurrence_type'] = '';
     $ret = Utils_RecordBrowserCommon::get_records('crm_meeting', $crits, array(), array(), CRM_CalendarCommon::$events_limit);
     $day = strtotime($start);
     $end = strtotime($end);
     while ($day <= $end) {
         foreach ($ret as $r) {
             $next = self::crm_event_get($r, date('Y-m-d', $day));
             if ($next) {
                 $result[] = $next;
                 $count++;
                 if ($count == CRM_CalendarCommon::$events_limit) {
                     break;
                 }
             }
         }
         $day = strtotime('+1 day', $day);
     }
     return $result;
 }
Esempio n. 19
0
	public static function get($group=null,$group_starts_with=false) {
        $attachments = Utils_RecordBrowserCommon::get_records('utils_attachment',array('id'=>self::get_where($group,$group_starts_with)));
        foreach($attachments as &$a) {
            $a['permission_owner'] = $a['permission_by'] = $a['note_by'] = $a['created_by'];
            $a['local'] = '';//deprecated here
            $a['note_revision'] = 0; //deprecated
            $a['note_on'] = $a['created_on'];
            $a['text'] = $a['note'];
        }
		return $attachments;
	}
Esempio n. 20
0
 public static function crm_event_get_all($start, $end, $filter = null, $customers = null)
 {
     $start = date('Y-m-d', Base_RegionalSettingsCommon::reg2time($start));
     $crits = array();
     if ($filter === null) {
         $filter = CRM_FiltersCommon::get();
     }
     $f_array = explode(',', trim($filter, '()'));
     if ($filter != '()' && $filter) {
         $crits['(' . 'employees'] = $f_array;
     }
     if ($customers && !empty($customers)) {
         $crits['|customers'] = $customers;
     } elseif ($filter != '()' && $filter) {
         $crits['|customers'] = $f_array;
         foreach ($crits['|customers'] as $k => $v) {
             $crits['|customers'][$k] = 'P:' . $v;
         }
     }
     $crits['<=deadline'] = $end;
     $crits['>=deadline'] = $start;
     $ret = Utils_RecordBrowserCommon::get_records('task', $crits, array(), array(), CRM_CalendarCommon::$events_limit);
     $result = array();
     foreach ($ret as $r) {
         $result[] = self::crm_event_get($r);
     }
     return $result;
 }
Esempio n. 21
0
 public static function autoselect_company_suggestbox($str, $crits, $format_callback)
 {
     $str = explode(' ', trim($str));
     foreach ($str as $k => $v) {
         if ($v) {
             $v = DB::Concat(DB::qstr('%'), DB::qstr($v), DB::qstr('%'));
             $crits = Utils_RecordBrowserCommon::merge_crits($crits, array('~"company_name' => $v));
         }
     }
     $recs = Utils_RecordBrowserCommon::get_records('company', $crits, array(), array('company_name' => 'ASC'), 10);
     $ret = array();
     foreach ($recs as $v) {
         $ret[$v['id']] = call_user_func($format_callback, $v, true);
     }
     return $ret;
 }
Esempio n. 22
0
<?php

defined("_VALID_ACCESS") || die('Direct access forbidden');
Utils_RecordBrowserCommon::register_processing_callback('rc_mails', array('CRM_RoundcubeCommon', 'submit_mail'));
$mails = Utils_RecordBrowserCommon::get_records('rc_mails', array('thread' => null));
foreach ($mails as $m) {
    if (preg_match('/\\nreferences:(.*)\\n/i', $m['headers_data'], $match)) {
        $ref = trim($match[1]);
        Utils_RecordBrowserCommon::update_record('rc_mails', $m['id'], array('references' => $ref));
    }
    if (preg_match('/\\nmessageid:(.*)\\n/i', $m['headers_data'], $match)) {
        $mid = str_replace(array('<', '>'), '', trim($match[1]));
        Utils_RecordBrowserCommon::update_record('rc_mails', $m['id'], array('message_id' => $mid));
    }
}
foreach ($mails as $m) {
    CRM_RoundcubeCommon::create_thread($m['id']);
}
Esempio n. 23
0
 public function getPresets()
 {
     $values = Utils_RecordBrowserCommon::get_records("quick_search", array(), array("id", "preset_name"), array(), array(), false);
     $arr = array();
     foreach ($values as $presets) {
         $arr[$presets["id"]] = $presets["preset_name"];
     }
     return $arr;
 }