public static function meta($id, $use_cache = true) { static $meta_cache = array(); if (!is_numeric($id)) { $id = self::get_storage_id_by_link($id); } if ($use_cache && isset($meta_cache[$id])) { return $meta_cache[$id]; } $meta = DB::GetRow('SELECT * FROM utils_filestorage_files WHERE id=%d', array($id)); if (!$meta) { throw new Utils_FileStorage_StorageNotFound('Exception - DB storage object not found: ' . $id); } $meta['file'] = self::get_storage_file_path($meta['hash']); if (!file_exists($meta['file'])) { throw new Utils_FileStorage_FileNotFound('Exception - file not found: ' . $meta['file']); } $meta['links'] = DB::GetCol('SELECT link FROM utils_filestorage_link WHERE storage_id=%d', array($id)); $meta_cache[$id] = $meta; return $meta; }
function look_contact($addr) { global $E_SESSION; $ret = array(); $fields = DB::GetCol('SELECT field FROM contact_field WHERE active=1 AND type=\'text\' AND field LIKE \'%mail%\' ORDER BY field'); foreach ($fields as &$f) { $f = 'c.f_' . preg_replace('/[^a-z0-9]/', '_', strtolower($f)); } $contact = DB::GetCol('SELECT c.id FROM contact_data_1 c LEFT JOIN rc_multiple_emails_data_1 m ON (m.f_record_id=c.id AND m.f_record_type=%s) WHERE c.active=1 AND (' . implode('=' . DB::qstr($addr) . ' OR ', $fields) . '=' . DB::qstr($addr) . ' OR m.f_email=%s) AND (c.f_permission<%s OR c.created_by=%d)', array('contact', $addr, '2', $E_SESSION['user'])); foreach ($contact as $contact_id) { $ret[] = 'P:' . $contact_id; } $fields = DB::GetCol('SELECT field FROM company_field WHERE active=1 AND type=\'text\' AND field LIKE \'%mail%\' ORDER BY field'); foreach ($fields as &$f) { $f = 'c.f_' . preg_replace('/[^a-z0-9]/', '_', strtolower($f)); } $company = DB::GetCol('SELECT c.id FROM company_data_1 c LEFT JOIN rc_multiple_emails_data_1 m ON (m.f_record_id=c.id AND m.f_record_type=%s) WHERE c.active=1 AND (' . implode('=' . DB::qstr($addr) . ' OR ', $fields) . '=' . DB::qstr($addr) . ' OR m.f_email=%s) AND (c.f_permission<%s OR c.created_by=%d)', array('company', $addr, 2, $E_SESSION['user'])); foreach ($company as $company_id) { $ret[] = 'C:' . $company_id; } return $ret; }
public static function set_profile($prof) { if (preg_match('/^c([0-9,]+)$/', $prof, $reqs)) { $ret = $reqs[1]; if (strpos($ret, ',') === false) { $desc = CRM_ContactsCommon::contact_format_no_company($ret, true); } else { $desc = __('Custom filter'); } } elseif (is_numeric($prof)) { $cids = DB::GetAssoc('SELECT contact_id, contact_id FROM crm_filters_contacts'); $c = DB::GetCol('SELECT p.contact_id FROM crm_filters_contacts p WHERE p.group_id=%d', array($prof)); if ($c) { $ret = implode(',', $c); } else { $ret = '-1'; } $desc = DB::GetOne('SELECT name FROM crm_filters_group WHERE id=%d', array($prof)); } elseif ($prof == 'my') { $ret = CRM_FiltersCommon::get_my_profile(); $desc = __('My records'); } else { //all and undefined $ret = ''; /*$contacts = Utils_RecordBrowserCommon::get_records('contact', array(), array(), array('last_name'=>'ASC')); $contacts_select = array(); foreach($contacts as $v) $contacts_select[] = $v['id']; if($contacts_select) $ret = implode(',',$contacts_select); else $ret = '-1';*/ $desc = __('All records'); } // $this->set_module_variable('profile',$ret); $_SESSION['client']['filter_' . Acl::get_user()]['value'] = $ret; $_SESSION['client']['filter_' . Acl::get_user()]['desc'] = $desc; location(array()); }
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)); } }
public function check_field_definitions($data) { $ret = array(); if ($this->admin_field_mode=='edit') $type = $this->admin_field_type; else $type = $data['select_data_type']; if ($type == 'text') { $last = $this->admin_field_name?DB::GetOne('SELECT param FROM '.$this->tab.'_field WHERE field=%s', array($this->admin_field_name)):1; if ($data['text_length']<$last) $ret['text_length'] = __('Must be a number greater or equal %d', array($last)); if ($data['text_length']>255) $ret['text_length'] = __('Must be a number no greater than %d', array(255)); if (!is_numeric($data['text_length'])) $ret['text_length'] = __('Must be a number'); if ($data['text_length']=='') $ret['text_length'] = __('Field required'); } if ($type == 'select') { if (!isset($data['data_source'])) $data['data_source'] = $this->admin_field['data_source']; if (!isset($data['rset'])) $data['rset'] = $this->admin_field['rset']; if (!is_array($data['rset'])) $data['rset'] = array_filter(explode('__SEP__', $data['rset'])); // data from multiselect field passed in raw format here if ($data['data_source']=='commondata' && $data['commondata_table']=='') $ret['commondata_table'] = __('Field required'); if ($data['data_source']=='rset') { if ($data['label_field']!='') { $fs = explode(',', $data['label_field']); foreach($data['rset'] as $rset) $ret = $ret + $this->detranslate_field_names($rset, $fs); } } if ($this->admin_field_mode=='edit' && $data['select_type']=='select' && $this->admin_field['select_type']=='multiselect') { $count = DB::GetOne('SELECT COUNT(*) FROM '.$this->tab.'_data_1 WHERE f_'.Utils_RecordBrowserCommon::get_field_id($this->admin_field['field']).' '.DB::like().' %s', array('%_\_\__%')); if ($count!=0) { $ret['select_type'] = __('Cannot change type'); print('<span class="important_notice">'.__('Following records have more than one value stored in this field, making type change impossible:')); $recs = DB::GetCol('SELECT id FROM '.$this->tab.'_data_1 WHERE f_'.Utils_RecordBrowserCommon::get_field_id($this->admin_field['field']).' '.DB::like().' %s', array('%_\_\__%')); foreach ($recs as $r) print('<br/>'.Utils_RecordBrowserCommon::create_default_linked_label($this->tab, $r, false, false)); print('</span>'); } } } return empty($ret)?true:$ret; }
/** * Removes common data array or entry using id. * * @param integer entry id * @return true on success, false otherwise */ public static function remove_by_id($id) { $ret = DB::GetCol('SELECT id FROM utils_commondata_tree WHERE parent_id=%d', array($id)); foreach ($ret as $r) { self::remove_by_id($r); } $node = DB::GetRow('SELECT parent_id, position FROM utils_commondata_tree WHERE id=%d', array($id)); DB::StartTrans(); // move all following nodes back DB::Execute('UPDATE utils_commondata_tree SET position=position-1 WHERE parent_id=%d AND position>%d', array($node['parent_id'], $node['position'])); DB::Execute('DELETE FROM utils_commondata_tree WHERE id=%d', array($id)); DB::CompleteTrans(); }
public static function get_ids() { DB::Execute('delete from tools_whoisonline_users where session_name not in (select name from session)'); $ret = DB::GetCol('SELECT DISTINCT twu.user_login_id as id FROM tools_whoisonline_users twu'); return $ret; }
public function addon_threaded($rs, $id) { $rb = $this->init_module('Utils/RecordBrowser', 'rc_mail_threads', 'rc_mails_threaded'); $rb->set_header_properties(array('date' => array('width' => 10), 'contacts' => array('name' => __('Involved contacts'), 'width' => 20), 'subject' => array('name' => __('Message'), 'width' => 40), 'attachments' => array('width' => 5), 'count' => array('width' => 5))); //set order by threads: //1 - if there is reference sort by parent message date, else sort by this message date ("group" messages by "parent" date) //2 - if there is reference sort by parent message id, else sort by "my" message_id /* $rb->force_order(array(':CASE WHEN f_references is null OR (SELECT rx.f_date FROM rc_mails_data_1 rx WHERE rx.active=1 AND r.f_references LIKE '.DB::Concat('\'%\'','rx.f_message_id','\'%\'').' LIMIT 1) is null THEN (SELECT rx.f_date FROM rc_mails_data_1 rx WHERE rx.active=1 AND rx.f_references LIKE '.DB::Concat('\'%\'','r.f_message_id','\'%\'').' ORDER BY rx.f_date DESC LIMIT 1) ELSE (SELECT rx2.f_date FROM rc_mails_data_1 rx2 WHERE rx2.active=1 AND rx2.f_references LIKE '.DB::Concat('\'%\'','(SELECT rx.f_message_id FROM rc_mails_data_1 rx WHERE rx.active=1 AND r.f_references LIKE '.DB::Concat('\'%\'','rx.f_message_id','\'%\'').' ORDER BY rx.f_date ASC LIMIT 1)','\'%\'').' ORDER BY rx2.f_date DESC LIMIT 1) END'=>'DESC', ':CASE WHEN f_references is null THEN f_message_id ELSE (SELECT rx.f_message_id FROM rc_mails_data_1 rx WHERE rx.f_references is null AND r.f_references LIKE '.DB::Concat('\'%\'','rx.f_message_id','\'%\'').' ORDER BY rx.f_date ASC LIMIT 1) END'=>'DESC', ':CASE WHEN f_references is null OR (SELECT rx.f_date FROM rc_mails_data_1 rx WHERE rx.active=1 AND r.f_references LIKE '.DB::Concat('\'%\'','rx.f_message_id','\'%\'').' LIMIT 1) is null THEN 0 ELSE 1 END'=>'ASC', 'date'=>'DESC' ));*/ $assoc_threads_ids = DB::GetCol('SELECT m.f_thread FROM rc_mails_data_1 m WHERE m.active=1 AND m.f_related ' . DB::like() . ' ' . DB::Concat(DB::qstr('%\\_\\_'), '%s', DB::qstr('\\_\\_%')), array($rs . '/' . $id)); if ($rs == 'contact') { //$ids = DB::GetCol('SELECT id FROM rc_mails_data_1 WHERE f_employee=%d OR (f_recordset=%s AND f_object=%d)',array($id,$rs,$id)); $this->display_module($rb, array(array('(contacts' => array('P:' . $id), '|id' => $assoc_threads_ids), array(), array('last_date' => 'DESC')), 'show_data'); } elseif ($rs == 'company') { $form = $this->init_module('Libs/QuickForm'); $form->addElement('checkbox', 'include_related', __('Include related e-mails'), null, array('onchange' => $form->get_submit_form_js())); if ($form->validate()) { $show_related = $form->exportValue('include_related'); $this->set_module_variable('include_related', $show_related); } $show_related = $this->get_module_variable('include_related'); $form->setDefaults(array('include_related' => $show_related)); ob_start(); $form->display_as_row(); $html = ob_get_clean(); $rb->set_button(false, $html); $customers = array('C:' . $id); if ($show_related) { $conts = CRM_ContactsCommon::get_contacts(array('company_name' => $id)); foreach ($conts as $c) { $customers[] = 'P:' . $c['id']; } } $this->display_module($rb, array(array('(contacts' => $customers, '|id' => $assoc_threads_ids), array(), array('last_date' => 'DESC')), 'show_data'); } else { $this->display_module($rb, array(array('id' => $assoc_threads_ids), array(), array('last_date' => 'DESC')), 'show_data'); } //Epesi::load_js('modules/CRM/Roundcube/utils.js'); //eval_js('CRM_RC.create_msg_tree("'.escapeJS($rb->get_path().'|0content',true).'")'); }
<?php defined("_VALID_ACCESS") || die('Direct access forbidden'); $tabs = DB::GetCol('SELECT tab FROM recordbrowser_table_properties'); foreach ($tabs as $tab) { PatchUtil::db_drop_column($tab . '_data_1', 'private'); }
public static function get_access($id) { $locals = DB::GetCol('SELECT local FROM utils_attachment_local WHERE attachment=%d',array($id)); $ret = false; foreach($locals as $local) { list($recordset,$key) = explode('/',$local,2); if(!Utils_RecordBrowserCommon::check_table_name($recordset, false, false) || !is_numeric($key) || Utils_RecordBrowserCommon::get_access($recordset,'view',$key)) { $ret = true; break; } } return $ret; }
<?php defined("_VALID_ACCESS") || die('Direct access forbidden'); if (ModuleManager::is_installed('CRM_Roundcube') >= 0) { foreach (DB::GetCol('SELECT id FROM user_login') as $id) { $identity = DB::GetOne("SELECT " . DB::Concat('f_first_name', DB::qstr(' '), 'f_last_name') . " FROM contact_data_1 WHERE f_login =%d", array($id)); foreach (DB::GetCol("SELECT f_email FROM rc_accounts_data_1 WHERE f_epesi_user=%d", array($id)) as $f_email) { DB::Execute('UPDATE rc_identities SET name=%s WHERE email=%s', array($identity, $f_email)); } } }
public function body() { $gb = $this->init_module('Utils/GenericBrowser',null,'messages'); $gb->set_table_columns(array( array('name'=>__('Alert on'), 'width'=>20), array('name'=>__('Message'), 'width'=>50), array('name'=>__('Users'), 'width'=>30) )); $data = DB::GetAll('SELECT * FROM utils_messenger_message WHERE page_id=\''.$this->mid.'\''); foreach($data as & $row) { $row['users'] = DB::GetCol('SELECT user_login_id FROM utils_messenger_users WHERE message_id=\''.$row['id'].'\''); $r = & $gb->get_new_row(); if(is_array($this->users)) { $us = ''; foreach($row['users'] as $rr) if(isset($this->users[$rr])) $us .= $this->users[$rr].'<br>'; } else $us = Base_UserCommon::get_user_login($this->users); $r->add_data(Base_RegionalSettingsCommon::time2reg($row['alert_on']),$row['message'],$us); $r->add_action($this->create_callback_href(array($this,'push_box0'),array('edit',array($row),array($this->real_id,$this->callback_method,$this->callback_args,$this->def_date,$this->users))),'Edit'); $r->add_action($this->create_confirm_callback_href(__('Are you sure?'),array($this,'delete_entry'),$row['id']),'Delete'); } $this->display_module($gb); Base_ActionBarCommon::add('add',__('New alert'),$this->create_callback_href(array($this,'push_box0'),array('edit',array(false),array($this->real_id,$this->callback_method,$this->callback_args,$this->def_date,$this->users)))); }
public function get_record($id, $assoc = false) { global $E_SESSION; @(list($id, $pos) = explode('_', $id)); if (!isset($pos)) { $pos = 0; } if ($pos >= 0) { $fields = DB::GetCol('SELECT field FROM company_field WHERE field LIKE \'%mail%\' ORDER BY field'); if (!$fields) { return false; } if (!isset($fields[$pos])) { $pos = 0; } $m = 'f_' . preg_replace('/[^a-z0-9]/', '_', strtolower($fields[$pos])); $ret = DB::GetRow('SELECT id as ID,\'\' as firstname, \'\' as surname, f_company_name as name, ' . $m . ' as email FROM company_data_1 WHERE active=1 AND id=%d AND ' . $m . '!=\'\' AND ' . $m . ' is not null AND (CAST(f_permission AS decimal)<2 OR created_by=%d)', array($id, $E_SESSION['user'])); } else { $ret = DB::GetRow('SELECT id as ID,\'\' as firstname, \'\' as surname, f_company_name as name, (SELECT me.f_email FROM rc_multiple_emails_data_1 me WHERE me.id=%d) as email FROM company_data_1 WHERE active=1 AND id=%d AND (CAST(f_permission AS decimal)<2 OR created_by=%d)', array(-$pos, $id, $E_SESSION['user'])); } if (!$ret) { return false; } if (!isset($ret['ID']) && isset($ret['id'])) { $ret['ID'] = $ret['id']; } $this->result = new rcube_result_set(1); $this->result->add($ret); if ($assoc) { return $ret; } return $this->result; }
public static function read($name) { $name = self::truncated_session_id($name); //main session switch (self::$session_type) { case 'file': if (!file_exists(FILE_SESSION_DIR)) { mkdir(FILE_SESSION_DIR); } $sess_file = rtrim(FILE_SESSION_DIR, '\\/') . '/' . FILE_SESSION_TOKEN . $name; if (!file_exists($sess_file)) { file_put_contents($sess_file, ''); } self::$session_fp = fopen($sess_file, 'r+'); if (!READ_ONLY_SESSION && !flock(self::$session_fp, LOCK_EX)) { trigger_error('Unable to get lock on session file=' . $sess_file, E_USER_ERROR); } $ret = stream_get_contents(self::$session_fp); break; case 'memcache': if (!READ_ONLY_SESSION && !self::$memcached->lock(MEMCACHE_SESSION_TOKEN . $name, self::$memcached_lock_time)) { trigger_error('Unable to get lock on session mem=' . $name, E_USER_ERROR); } $ret = ''; for ($i = 0;; $i++) { $rr = self::$memcached->get(MEMCACHE_SESSION_TOKEN . $name . '/' . $i); if ($rr === '' || $rr === false || $rr === null) { break; } $ret .= $rr; } break; case 'sql': $ret = DB::GetCol('SELECT data FROM session WHERE name = %s AND expires > %d' . (READ_ONLY_SESSION ? '' : ' FOR UPDATE'), array($name, time() - self::$lifetime)); if ($ret) { $ret = $ret[0]; } break; } if ($ret) { $_SESSION = unserialize($ret); } if (CID !== false) { if (!is_numeric(CID)) { trigger_error('Invalid client id.', E_USER_ERROR); } switch (self::$session_type) { case 'file': $sess_file = rtrim(FILE_SESSION_DIR, '\\/') . '/' . FILE_SESSION_TOKEN . $name . '_' . CID; if (!file_exists($sess_file)) { file_put_contents($sess_file, ''); } self::$session_client_fp = fopen($sess_file, 'r+'); if (!READ_ONLY_SESSION && !flock(self::$session_client_fp, LOCK_EX)) { trigger_error('Unable to get lock on session file=' . $sess_file, E_USER_ERROR); } $ret = stream_get_contents(self::$session_client_fp); break; case 'memcache': if (!READ_ONLY_SESSION && !self::$memcached->lock(MEMCACHE_SESSION_TOKEN . $name . '_' . CID, self::$memcached_lock_time)) { trigger_error('Unable to get lock on session mem=' . $name . '_' . CID, E_USER_ERROR); } $ret = ''; for ($i = 0;; $i++) { $rr = self::$memcached->get(MEMCACHE_SESSION_TOKEN . $name . '_' . CID . '/' . $i); if ($rr === '' || $rr === false || $rr === null) { break; } $ret .= $rr; } break; case 'sql': $ret = DB::GetCol('SELECT data FROM session_client WHERE session_name = %s AND client_id=%d' . (READ_ONLY_SESSION ? '' : ' FOR UPDATE'), array($name, CID)); if ($ret) { $ret = $ret[0]; } break; } if ($ret) { $_SESSION['client'] = unserialize($ret); } if (!isset($_SESSION['client']['__module_vars__'])) { $_SESSION['client']['__module_vars__'] = array(); } } return ''; }
/** * Removes common data array or entry using id. * * @param integer entry id * @return true on success, false otherwise */ public static function remove_by_id($id) { $ret = DB::GetCol('SELECT id FROM utils_commondata_tree WHERE parent_id=%d',array($id)); foreach($ret as $r) self::remove_by_id($r); DB::Execute('DELETE FROM utils_commondata_tree WHERE id=%d',array($id)); }
public static function related_crits() { $recordsets = DB::GetCol('SELECT f_recordset FROM task_related_data_1 WHERE active=1'); $crits = array('' => array()); foreach ($recordsets as $rec) { $crits[$rec] = array(); } return $crits; }
public function edit_group($id = null) { if ($this->is_back()) { return false; } $form = $this->init_module('Libs/QuickForm', null, 'edit_group'); if (isset($id)) { $name = DB::GetOne('SELECT name FROM crm_filters_group WHERE id=%d', array($id)); $description = DB::GetOne('SELECT description FROM crm_filters_group WHERE id=%d', array($id)); $form->addElement('header', null, __('Edit group "%s"', array($name))); $contacts_def = DB::GetCol('SELECT contact_id FROM crm_filters_contacts WHERE group_id=%d', array($id)); $form->setDefaults(array('name' => $name, 'contacts' => $contacts_def, 'description' => $description)); } else { $form->addElement('header', null, __('New preset')); } $form->addElement('text', 'name', __('Name')); $form->addElement('text', 'description', __('Description')); $form->addRule('name', __('Max length of field exceeded'), 'maxlength', 128); $form->addRule('description', __('Max length of field exceeded'), 'maxlength', 256); $form->addRule('name', __('Field required'), 'required'); $form->registerRule('unique', 'callback', 'check_group_name_exists', 'CRM_Filters'); $form->addRule('name', __('Group with this name already exists'), 'unique', $id); $form->addFormRule(array($this, 'check_amount_of_records')); $form->addElement('automulti', 'contacts', __('Records of'), array('CRM_ContactsCommon', 'automulti_contact_suggestbox'), array(array(), array('CRM_ContactsCommon', 'contact_format_no_company')), array('CRM_ContactsCommon', 'contact_format_no_company')); if ($form->validate()) { $v = $form->exportValues(); if (isset($id)) { DB::Execute('UPDATE crm_filters_group SET name=%s,description=%s WHERE id=%d', array($v['name'], $v['description'], $id)); DB::Execute('DELETE FROM crm_filters_contacts WHERE group_id=%d', array($id)); } else { DB::Execute('INSERT INTO crm_filters_group(name,description,user_login_id) VALUES(%s,%s,%d)', array($v['name'], $v['description'], Acl::get_user())); $id = DB::Insert_ID('crm_filters_group', 'id'); } foreach ($v['contacts'] as $p) { DB::Execute('INSERT INTO crm_filters_contacts(group_id,contact_id) VALUES(%d,%d)', array($id, $p)); } return false; } else { Base_ActionBarCommon::add('save', __('Save'), $form->get_submit_form_href()); Base_ActionBarCommon::add('back', __('Cancel'), $this->create_back_href()); $form->display_as_column(); } return true; }
<?php defined("_VALID_ACCESS") || die('Direct access forbidden'); @PatchUtil::db_add_column('utils_currency', 'default_currency', 'I1'); $first = DB::GetCol('SELECT id FROM utils_currency WHERE active=1 AND default_currency=1 ORDER BY id'); if (!$first) { $first = DB::GetCol('SELECT id FROM utils_currency WHERE active=1 ORDER BY id'); } DB::Execute('UPDATE utils_currency SET default_currency=0'); if ($first) { DB::Execute('UPDATE utils_currency SET default_currency=1 WHERE id=%d', array($first[0])); }
public function body($arg = null, $rb = null, $uid = null) { if (isset($arg) && isset($rb)) { $this->group = $rb->tab . '/' . $arg['id']; if (Utils_WatchdogCommon::get_category_id($rb->tab) !== null) { $this->watchdog_category = $rb->tab; $this->watchdog_id = $arg['id']; } $this->set_view_func(array('Utils_RecordBrowserCommon', 'create_default_linked_label'), array($rb->tab, $arg['id'])); } if (!isset($this->group) && !$uid) { trigger_error('Key not given to attachment module', E_USER_ERROR); } $_SESSION['client']['utils_attachment_group'] = $this->group; load_js('modules/Utils/Attachment/attachments.js'); Base_ThemeCommon::load_css('Utils_Attachment', 'browse'); $this->rb = $this->init_module(Utils_RecordBrowser::module_name(), 'utils_attachment', 'utils_attachment'); $defaults = array('permission' => Base_User_SettingsCommon::get('CRM_Common', 'default_record_permission'), 'func' => serialize($this->func), 'args' => serialize($this->args)); $rb_cols = array(); $single_group = is_string($this->group) || count($this->group) == 1; if ($this->force_multiple) { $single_group = false; } if ($single_group) { $group = is_string($this->group) ? $this->group : reset($this->group); $defaults['local'] = $group; } else { // force attached to display $rb_cols['attached_to'] = true; $this->rb->set_button(false); } $this->rb->set_defaults($defaults); $this->rb->set_additional_actions_method(array($this, 'add_actions')); $this->rb->set_header_properties(array('sticky' => array('width' => 1, 'display' => false), 'attached_to' => array('width' => "16em"), 'edited_on' => array('width' => "12em"), 'title' => array('width' => "20em"))); if ($uid) { $this->rb->set_button(false); $this->rb->disable_actions(array('delete')); $this->display_module($this->rb, array(array(':Created_by' => $uid), $rb_cols, array('sticky' => 'DESC', 'edited_on' => 'DESC')), 'show_data'); } else { $crits = array(); if (!is_array($this->group)) { $this->group = array($this->group); } if (isset($_SESSION['attachment_copy']) && count($this->group) == 1 && $_SESSION['attachment_copy']['group'] != $this->group) { $this->rb->new_button(Base_ThemeCommon::get_template_file(Utils_Attachment::module_name(), 'link.png'), __('Paste'), Utils_TooltipCommon::open_tag_attrs($_SESSION['attachment_copy']['text']) . ' ' . $this->create_callback_href(array($this, 'paste'))); } if ($this->group) { $g = array_map(array('DB', 'qstr'), $this->group); $crits['id'] = DB::GetCol('SELECT attachment FROM utils_attachment_local WHERE local IN (' . implode(',', $g) . ')'); } else { $crits['id'] = 0; } $this->display_module($this->rb, array($crits, $rb_cols, array('sticky' => 'DESC', 'edited_on' => 'DESC')), 'show_data'); } }
public static function destroy($name) { $name = self::truncated_session_id($name); $cids = DB::GetCol('SELECT DISTINCT client_id FROM history WHERE session_name=%s', array($name)); foreach ($cids as $i) { self::destroy_client($name, $i); } switch (self::$session_type) { case 'file': $sess_file = rtrim(FILE_SESSION_DIR, '\\/') . '/' . FILE_SESSION_TOKEN . $name; @unlink($sess_file); break; case 'memcache': for ($k = 0;; $k++) { if (!self::$memcached->delete(MEMCACHE_SESSION_TOKEN . $name . '/' . $k)) { break; } } break; } DB::BeginTrans(); DB::Execute('DELETE FROM history WHERE session_name=%s', array($name)); DB::Execute('DELETE FROM session_client WHERE session_name=%s', array($name)); DB::Execute('DELETE FROM session WHERE name=%s', array($name)); DB::CommitTrans(); return true; }