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;
 }
Exemple #2
0
 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;
 }
Exemple #3
0
 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));
     }
 }
Exemple #5
0
	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;
 }
Exemple #8
0
 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');
}
Exemple #10
0
 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));
        }
    }
}
Exemple #12
0
	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;
 }
Exemple #14
0
 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 '';
 }
Exemple #15
0
	/**
	 * 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));
	}
Exemple #16
0
 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;
 }
Exemple #17
0
 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]));
}
Exemple #19
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');
     }
 }
Exemple #20
0
 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;
 }