public function install() { Utils_CommonDataCommon::new_array('crm_assets_category', array(_M('Desktop'), _M('Server'), _M('Notebook'), _M('Monitor'), _M('Printer'), _M('Other')), true, true); Utils_CommonDataCommon::new_id('crm_assets_monitor_type', true); Utils_CommonDataCommon::new_array('crm_assets_monitor_type', array(_M('CRT'), _M('LCD'), _M('Other'))); Utils_CommonDataCommon::new_id('crm_assets_printer_type', true); Utils_CommonDataCommon::new_array('crm_assets_printer_type', array(_M('Ink'), _M('Laser'), _M('Other'))); $fields = array(array('name' => _M('Asset ID'), 'type' => 'calculated', 'param' => Utils_RecordBrowserCommon::actual_db_type('text', 16), 'extra' => false, 'visible' => true, 'display_callback' => array('CRM_AssetsCommon', 'display_asset_id')), array('name' => _M('Active'), 'type' => 'checkbox', 'extra' => false, 'visible' => true, 'filter' => true), array('name' => _M('Category'), 'type' => 'commondata', 'param' => array('crm_assets_category'), 'extra' => false, 'visible' => true, 'filter' => true, 'required' => true, 'QFfield_callback' => array('CRM_AssetsCommon', 'QFfield_category')), array('name' => _M('Asset Name'), 'type' => 'text', 'param' => '128', 'extra' => false, 'visible' => true, 'required' => true), array('name' => _M('Asset Tag'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('Company'), 'type' => 'crm_company', 'extra' => false, 'visible' => true, 'param' => array('field_type' => 'select', 'crits' => array('CRM_AssetsCommon', 'company_crits')), 'filter' => true), array('name' => _M('Date Purchased'), 'type' => 'date', 'extra' => false), array('name' => _M('Serial Number'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('IP Address'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('General Info'), 'type' => 'calculated', 'extra' => false, 'visible' => true, 'display_callback' => array('CRM_AssetsCommon', 'display_info'), 'QFfield_callback' => array('CRM_AssetsCommon', 'QFfield_info')), array('name' => _M('Host Name'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('Operating System'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('Processor'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('RAM'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('HDD'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('Optical Devices'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('Audio'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('Software'), 'type' => 'long text', 'extra' => false), array('name' => _M('Display Type'), 'type' => 'commondata', 'extra' => false, 'param' => array('crm_assets_monitor_type')), array('name' => _M('Screen Size'), 'type' => 'text', 'param' => '128', 'extra' => false), array('name' => _M('Printer Type'), 'type' => 'commondata', 'extra' => false, 'param' => array('order_by_key' => true, 'crm_assets_printer_type')), array('name' => _M('Color Printing'), 'type' => 'checkbox', 'extra' => false)); Utils_RecordBrowserCommon::install_new_recordset('crm_assets', $fields); Utils_RecordBrowserCommon::set_recent('crm_assets', 10); Utils_RecordBrowserCommon::set_favorites('crm_assets', true); Utils_RecordBrowserCommon::set_caption('crm_assets', _M('Assets')); Utils_RecordBrowserCommon::set_quickjump('crm_assets', 'Asset Name'); Utils_RecordBrowserCommon::set_icon('crm_assets', Base_ThemeCommon::get_template_filename('CRM/Assets', 'icon.png')); Utils_RecordBrowserCommon::register_processing_callback('crm_assets', array('CRM_AssetsCommon', 'process_request')); Utils_RecordBrowserCommon::enable_watchdog('crm_assets', array('CRM_AssetsCommon', 'watchdog_label')); Utils_RecordBrowserCommon::add_default_access('crm_assets'); Utils_RecordBrowserCommon::set_search('crm_assets', 2, 0); Utils_RecordBrowserCommon::new_addon('company', 'CRM/Assets', 'assets_addon', _M('Assets')); Utils_AttachmentCommon::new_addon('crm_assets'); Base_ThemeCommon::install_default_theme($this->get_type()); return true; }
/** * @param string $tab Recordset identifier. e.g. contact, company * @param string $old_name Current field name. Not field id. e.g. "First Name" * @param string $new_name New field name. */ public static function rename_field($tab, $old_name, $new_name) { $id = Utils_RecordBrowserCommon::get_field_id($old_name); $new_id = Utils_RecordBrowserCommon::get_field_id($new_name); Utils_RecordBrowserCommon::check_table_name($tab); DB::StartTrans(); if (DB::is_postgresql()) { DB::Execute('ALTER TABLE ' . $tab . '_data_1 RENAME COLUMN f_' . $id . ' TO f_' . $new_id); } else { $old_param = DB::GetOne('SELECT param FROM ' . $tab . '_field WHERE field=%s', array($old_name)); $type = DB::GetOne('SELECT type FROM ' . $tab . '_field WHERE field=%s', array($old_name)); DB::RenameColumn($tab . '_data_1', 'f_' . $id, 'f_' . $new_id, Utils_RecordBrowserCommon::actual_db_type($type, $old_param)); } DB::Execute('UPDATE ' . $tab . '_field SET field=%s WHERE field=%s', array($new_name, $old_name)); DB::Execute('UPDATE ' . $tab . '_edit_history_data SET field=%s WHERE field=%s', array($new_id, $id)); DB::CompleteTrans(); }
/** * Set database representation of this field. * @param string|RBO_FieldDefinition $type name of type or field instance. * In case of field instance only type and it's param will be copied * and this function $param will be ignored. * @param mixed $param numeric for type text, otherwise null. */ public function set_db_type($type, $param = null) { if ($type instanceof RBO_FieldDefinition) { $def = $type->get_definition(); $type = $def['type']; $param = $def['param']; } $this->param = Utils_RecordBrowserCommon::actual_db_type($type, $param); }
public function install() { $this->create_data_dir(); // create htaccess to prevent logs to be available on the internet $htaccess = $this->get_data_dir() . '.htaccess'; $f = fopen($htaccess, 'w'); if ($f === false) { print "Cannot create .htaccess file ({$htaccess}). " . "Your Roundcube logs may be available on the internet!"; } else { fwrite($f, "deny from all\n"); fclose($f); } Base_ThemeCommon::install_default_theme($this->get_type()); $this->drop_all_rc_tables(); if (DB::is_mysql()) { $f = file_get_contents('modules/CRM/Roundcube/RC/SQL/mysql.initial.sql'); } else { $f = file_get_contents('modules/CRM/Roundcube/RC/SQL/postgres.initial.sql'); } foreach (explode(';', $f) as $q) { $q = trim($q); if (!$q) { continue; } DB::Execute($q); } Utils_CommonDataCommon::new_array('CRM/Roundcube/Security', array('tls' => _M('TLS'), 'ssl' => _M('SSL')), true, true); //addons table $fields = array(array('name' => _M('Recordset'), 'type' => 'text', 'param' => 64, 'display_callback' => array($this->get_type() . 'Common', 'display_recordset'), 'QFfield_callback' => array($this->get_type() . 'Common', 'QFfield_recordset'), 'required' => true, 'extra' => false, 'visible' => true)); Utils_RecordBrowserCommon::install_new_recordset('rc_related', $fields); Utils_RecordBrowserCommon::set_caption('rc_related', _M('Mail Related Recordsets')); Utils_RecordBrowserCommon::register_processing_callback('rc_related', array('CRM_RoundcubeCommon', 'processing_related')); Utils_RecordBrowserCommon::add_access('rc_related', 'view', 'ACCESS:employee'); Utils_RecordBrowserCommon::add_access('rc_related', 'add', 'ADMIN'); Utils_RecordBrowserCommon::add_access('rc_related', 'edit', 'SUPERADMIN'); Utils_RecordBrowserCommon::add_access('rc_related', 'delete', 'SUPERADMIN'); Utils_RecordBrowserCommon::new_record('rc_related', array('recordset' => 'company')); Utils_RecordBrowserCommon::new_record('rc_related', array('recordset' => 'contact')); //accounts table $fields = array(array('name' => _M('EPESI User'), 'type' => 'integer', 'extra' => false, 'visible' => true, 'required' => true, 'display_callback' => array('CRM_RoundcubeCommon', 'display_epesi_user'), 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_epesi_user')), array('name' => _M('Email'), 'type' => 'text', 'extra' => false, 'visible' => true, 'required' => true, 'param' => 128), array('name' => _M('Account Name'), 'type' => 'text', 'extra' => false, 'visible' => true, 'required' => true, 'param' => 32, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_account_name')), array('name' => _M('Server'), 'type' => 'text', 'extra' => false, 'visible' => true, 'param' => '255', 'required' => true), array('name' => _M('Login'), 'type' => 'text', 'required' => true, 'param' => '255', 'extra' => false, 'visible' => true), array('name' => _M('Password'), 'type' => 'text', 'required' => true, 'extra' => false, 'param' => '255', 'visible' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_password'), 'display_callback' => array('CRM_RoundcubeCommon', 'display_password')), array('name' => _M('Security'), 'type' => 'commondata', 'param' => array('CRM/Roundcube/Security'), 'extra' => false, 'visible' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_security')), array('name' => _M('SMTP Server'), 'type' => 'text', 'extra' => false, 'visible' => false, 'param' => '255', 'required' => true), array('name' => _M('SMTP Auth'), 'type' => 'checkbox', 'extra' => false, 'visible' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_smtp_auth')), array('name' => _M('SMTP Login'), 'type' => 'text', 'required' => false, 'param' => '255', 'extra' => false, 'visible' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_smtp_login')), array('name' => _M('SMTP Password'), 'type' => 'text', 'extra' => false, 'param' => '255', 'visible' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_smtp_password'), 'display_callback' => array('CRM_RoundcubeCommon', 'display_password')), array('name' => _M('SMTP Security'), 'type' => 'commondata', 'param' => array('CRM/Roundcube/Security'), 'extra' => false, 'visible' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_smtp_security')), array('name' => _M('Default Account'), 'type' => 'checkbox', 'extra' => false, 'visible' => true, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_default_account')), array('name' => _M('Advanced'), 'type' => 'page_split'), array('name' => _M('Archive on sending'), 'type' => 'checkbox', 'extra' => true, 'visible' => false), array('name' => _M('Use EPESI Archive directories'), 'type' => 'checkbox', 'extra' => true, 'visible' => false), array('name' => _M('IMAP Root'), 'type' => 'text', 'param' => 32, 'extra' => true, 'visible' => false), array('name' => _M('IMAP Delimiter'), 'type' => 'text', 'param' => 8, 'extra' => true, 'visible' => false)); Utils_RecordBrowserCommon::install_new_recordset('rc_accounts', $fields); Utils_RecordBrowserCommon::set_caption('rc_accounts', _M('Mail accounts')); Utils_RecordBrowserCommon::register_processing_callback('rc_accounts', array('CRM_RoundcubeCommon', 'submit_account')); $fields = array(array('name' => _M('Subject'), 'type' => 'text', 'param' => '256', 'extra' => false, 'visible' => true, 'required' => false, 'display_callback' => array('CRM_RoundcubeCommon', 'display_subject')), array('name' => _M('Count'), 'type' => 'calculated', 'extra' => false, 'visible' => true, 'required' => false, 'display_callback' => array('CRM_RoundcubeCommon', 'display_thread_count'), 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_thread_count')), array('name' => _M('Contacts'), 'type' => 'crm_company_contact', 'param' => array('field_type' => 'multiselect'), 'required' => false, 'extra' => false, 'visible' => true), array('name' => _M('First Date'), 'type' => 'timestamp', 'extra' => false, 'visible' => true, 'required' => false), array('name' => _M('Last Date'), 'type' => 'timestamp', 'extra' => false, 'visible' => true, 'required' => false), array('name' => _M('Attachments'), 'type' => 'calculated', 'extra' => false, 'visible' => true, 'display_callback' => array('CRM_RoundcubeCommon', 'display_thread_attachments'), 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_thread_attachments'))); Utils_RecordBrowserCommon::install_new_recordset('rc_mail_threads', $fields); Utils_RecordBrowserCommon::set_caption('rc_mail_threads', _M('Mail Thread')); Utils_RecordBrowserCommon::new_addon('rc_mail_threads', 'CRM/Roundcube', 'thread_addon', _M('E-mails')); Utils_RecordBrowserCommon::set_search('rc_mail_threads', 2, -1); $fields = array(array('name' => _M('Subject'), 'type' => 'text', 'param' => '256', 'extra' => false, 'visible' => true, 'required' => false, 'display_callback' => array('CRM_RoundcubeCommon', 'display_subject')), array('name' => _M('Contacts'), 'type' => 'crm_company_contact', 'param' => array('field_type' => 'multiselect'), 'required' => false, 'extra' => false, 'visible' => true), array('name' => _M('Employee'), 'type' => 'crm_contact', 'param' => array('field_type' => 'select'), 'extra' => false, 'visible' => true, 'required' => false), array('name' => _M('Related'), 'type' => 'multiselect', 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_related'), 'param' => '__RECORDSETS__::;CRM_RoundcubeCommon::related_crits', 'extra' => false, 'required' => false, 'visible' => true), array('name' => _M('Date'), 'type' => 'timestamp', 'extra' => false, 'visible' => true, 'required' => false), array('name' => _M('Attachments'), 'type' => 'calculated', 'extra' => false, 'visible' => true, 'display_callback' => array('CRM_RoundcubeCommon', 'display_attachments'), 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_attachments')), array('name' => _M('Headers Data'), 'type' => 'long text', 'extra' => false, 'visible' => false, 'required' => false), array('name' => _M('Body'), 'type' => 'long text', 'extra' => false, 'visible' => false, 'required' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_body')), array('name' => _M('From'), 'type' => 'text', 'param' => 128, 'extra' => false, 'visible' => false, 'required' => false), array('name' => _M('To'), 'type' => 'text', 'param' => 4096, 'extra' => false, 'visible' => false, 'required' => false), array('name' => _M('Thread'), 'type' => 'select', 'param' => 'rc_mail_threads::Count', 'extra' => false, 'visible' => false, 'required' => false, 'display_callback' => array('CRM_RoundcubeCommon', 'display_mail_thread'), 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_mail_thread')), array('name' => _M('Message ID'), 'type' => 'text', 'param' => 128, 'extra' => false, 'visible' => false, 'required' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_hidden')), array('name' => _M('References'), 'type' => 'text', 'param' => 4096 * 4, 'extra' => false, 'visible' => false, 'required' => false, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_hidden'))); Utils_RecordBrowserCommon::install_new_recordset('rc_mails', $fields); Utils_RecordBrowserCommon::set_caption('rc_mails', _M('Mails')); Utils_RecordBrowserCommon::set_tpl('rc_mails', Base_ThemeCommon::get_template_filename('CRM/Roundcube', 'mails')); Utils_RecordBrowserCommon::register_processing_callback('rc_mails', array('CRM_RoundcubeCommon', 'submit_mail')); Utils_RecordBrowserCommon::set_search('rc_mails', 2, -1); DB::CreateIndex('rc_mails_thread_idx', 'rc_mails_data_1', 'f_thread'); DB::CreateIndex('rc_mails_msgid_idx', 'rc_mails_data_1', 'f_message_id'); Utils_RecordBrowserCommon::new_addon('rc_mails', 'CRM/Roundcube', 'mail_body_addon', _M('Body')); Utils_RecordBrowserCommon::new_addon('rc_mails', 'CRM/Roundcube', 'attachments_addon', _M('Attachments')); Utils_RecordBrowserCommon::new_addon('rc_mails', 'CRM/Roundcube', 'mail_headers_addon', _M('Headers')); @DB::DropTable('rc_mails_attachments'); DB::CreateTable('rc_mails_attachments', ' mail_id I4 NOTNULL, type C(32), name C(255), mime_id C(32), attachment I1 DEFAULT 1', array('constraints' => ', FOREIGN KEY (mail_id) REFERENCES rc_mails_data_1(ID)')); DB::CreateTable('rc_mails_attachments_download', ' mail_id I4 NOTNULL, hash C(32), created_on T DEFTIMESTAMP', array('constraints' => ', FOREIGN KEY (mail_id) REFERENCES rc_mails_data_1(ID)')); Utils_RecordBrowserCommon::new_addon('contact', 'CRM/Roundcube', 'addon', _M('E-mails')); Utils_RecordBrowserCommon::new_addon('company', 'CRM/Roundcube', 'addon', _M('E-mails')); $fields = array(array('name' => _M('Record Type'), 'type' => 'hidden', 'param' => Utils_RecordBrowserCommon::actual_db_type('text', 64), 'required' => false, 'visible' => false, 'filter' => true, 'extra' => false), array('name' => _M('Record ID'), 'type' => 'hidden', 'param' => Utils_RecordBrowserCommon::actual_db_type('integer'), 'filter' => false, 'required' => false, 'extra' => false, 'visible' => false), array('name' => _M('Nickname'), 'type' => 'text', 'required' => true, 'param' => '64', 'extra' => false, 'visible' => true, 'QFfield_callback' => array('CRM_RoundcubeCommon', 'QFfield_nickname')), array('name' => _M('Email'), 'type' => 'email', 'required' => true, 'param' => array('unique' => true), 'extra' => false, 'visible' => true)); Utils_RecordBrowserCommon::install_new_recordset('rc_multiple_emails', $fields); Utils_RecordBrowserCommon::set_favorites('rc_multiple_emails', true); Utils_RecordBrowserCommon::set_caption('rc_multiple_emails', _M('Mail addresses')); Utils_RecordBrowserCommon::set_icon('rc_multiple_emails', Base_ThemeCommon::get_template_filename('CRM/Roundcube', 'icon.png')); Utils_RecordBrowserCommon::set_search('rc_multiple_emails', 2, 0); Utils_RecordBrowserCommon::new_addon('contact', 'CRM/Roundcube', 'mail_addresses_addon', _M('E-mail addresses')); Utils_RecordBrowserCommon::new_addon('company', 'CRM/Roundcube', 'mail_addresses_addon', _M('E-mail addresses')); Variable::set('crm_roundcube_global_signature', "Message sent with EPESI - managing business your way!<br /><a href=\"http://epe.si\">http://epe.si</a>"); Utils_RecordBrowserCommon::add_access('rc_accounts', 'view', 'ACCESS:employee', array('epesi_user' => 'USER_ID')); Utils_RecordBrowserCommon::add_access('rc_accounts', 'add', 'ACCESS:employee'); Utils_RecordBrowserCommon::add_access('rc_accounts', 'edit', 'ACCESS:employee', array(), array('epesi_user')); Utils_RecordBrowserCommon::add_access('rc_accounts', 'delete', 'ACCESS:employee', array('epesi_user' => 'USER_ID')); Utils_RecordBrowserCommon::add_access('rc_mails', 'view', 'ACCESS:employee', array(), array('headers_data')); Utils_RecordBrowserCommon::add_access('rc_mails', 'delete', 'ACCESS:employee'); Utils_RecordBrowserCommon::add_access('rc_mails', 'edit', 'ACCESS:employee', array(), array('subject', 'employee', 'date', 'headers_data', 'body', 'from', 'to', 'thread', 'message_id', 'references')); Utils_RecordBrowserCommon::add_access('rc_mail_threads', 'view', 'ACCESS:employee'); Utils_RecordBrowserCommon::add_access('rc_mail_threads', 'delete', 'ACCESS:employee'); Utils_RecordBrowserCommon::add_access('rc_multiple_emails', 'view', 'ACCESS:employee'); Utils_RecordBrowserCommon::add_access('rc_multiple_emails', 'add', 'ACCESS:employee'); Utils_RecordBrowserCommon::add_access('rc_multiple_emails', 'edit', 'ACCESS:employee'); Utils_RecordBrowserCommon::add_access('rc_multiple_emails', 'delete', 'ACCESS:employee'); return true; }