Example #1
0
	public function install() {
		Base_ThemeCommon::install_default_theme($this->get_type());
		$ret = true;
		$ret &= DB::CreateTable('utils_messenger_message','
			id I4 AUTO KEY,
			callback_method C(255) NOTNULL,
			callback_args X,
			message X,
			created_by I4 NOTNULL,
			created_on T NOTNULL,
			alert_on T,
			parent_module C(32) NOTNULL,
			page_id C(32) NOTNULL',
			array('constraints'=>', FOREIGN KEY (created_by) REFERENCES user_login(ID)'));
		if(!$ret){
			print('Unable to create table utils_messenger_message.<br>');
			return false;
		}
		$ret &= DB::CreateTable('utils_messenger_users','
			message_id I4,
			done I1 DEFAULT 0,
			user_login_id I4,
			done_on T,
			follow I1 DEFAULT 0',
			array('constraints'=>' , FOREIGN KEY (message_id) REFERENCES utils_messenger_message(id), FOREIGN KEY (user_login_id) REFERENCES user_login(ID)'));
		if(!$ret){
			print('Unable to create table utils_messenger_users.<br>');
			return false;
		}
		Base_AclCommon::add_permission(_M('Messenger Alerts'),array('ACCESS:employee'));
		
		return $ret;
	}
Example #2
0
 public function install()
 {
     Base_ThemeCommon::install_default_theme($this->get_type());
     $this->create_data_dir();
     DB::CreateTable('libs_tcpdf_pdf_index', 'created_on T,' . 'filename C(32)', array('constraints' => ''));
     return true;
 }
Example #3
0
    public function install()
    {
        global $database;
        $ret = true;
        $ret &= DB::CreateTable('base_user_settings', '
			user_login_id I4 NOTNULL,
			module C(128) NOTNULL,
			variable C(64) NOTNULL,
			value X NOTNULL', array('constraints' => ', FOREIGN KEY (user_login_id) REFERENCES user_login(id), PRIMARY KEY(user_login_id,module,variable)'));
        if (!$ret) {
            print 'Unable to create table base_user_settings.<br>';
            return false;
        }
        $ret &= DB::CreateTable('base_user_settings_admin_defaults', '
			module C(128) NOTNULL,
			variable C(64) NOTNULL,
			value X NOTNULL', array('constraints' => ', PRIMARY KEY(module,variable)'));
        if (!$ret) {
            print 'Unable to create table base_user_settings_defaults.<br>';
            return false;
        }
        Base_ThemeCommon::install_default_theme(Base_User_SettingsInstall::module_name());
        Base_AclCommon::add_permission(_M('Advanced User Settings'), array('ACCESS:employee'));
        return $ret;
    }
Example #4
0
 public function install()
 {
     Base_ThemeCommon::install_default_theme($this->get_type());
     DB::CreateTable('utils_currency', 'id I AUTO KEY,' . 'symbol C(16),' . 'code C(8),' . 'decimal_sign C(2),' . 'thousand_sign C(2),' . 'decimals I1,' . 'active I1,' . 'default_currency I1,' . 'pos_before I1', array('constraints' => ''));
     DB::Execute('INSERT INTO utils_currency (symbol, code, decimal_sign, thousand_sign, decimals, pos_before, active, default_currency) VALUES (%s, %s, %s, %s, %d, %d, %d, %d)', array('$', 'USD', '.', ',', 2, 1, 1, 1));
     return true;
 }
Example #5
0
	public function install() {
		$ret = true;
		$ret &= DB::CreateTable("tests_calendar_event",
			"id I AUTO KEY," .

			"title C(64) NO NULL, " .
			"description X, " .

			"start I4 NOT NULL, " .
			"duration I4 NOT NULL, " .
			"timeless I DEFAULT 0, " .

			"color C(16), " .

			"created_on T NOT NULL," .
			"created_by I4 REFERENCES user_login(id)," .
			"edited_on T," .
			"edited_by I4 REFERENCES user_login(id)"
		);
		if(!$ret) {
			print('Unable to create tests_calendar_event table');
			return false;
		}
		return $ret;
	}
Example #6
0
 public function install()
 {
     Base_ThemeCommon::install_default_theme($this->get_type());
     DB::CreateTable('base_home_page', 'id I4 AUTO KEY,' . 'priority I4,' . 'home_page C(64)', array('constraints' => ''));
     DB::CreateTable('base_home_page_clearance', 'id I4 AUTO KEY,' . 'home_page_id I,' . 'clearance C(64)', array('constraints' => ', FOREIGN KEY (home_page_id) REFERENCES base_home_page(id)'));
     return true;
 }
Example #7
0
 public function install()
 {
     $ret = DB::CreateTable('user_password', "user_login_id I KEY, password C(256) NOTNULL, mail C(255) NOTNULL", array('constraints' => ', FOREIGN KEY (user_login_id) REFERENCES user_login(id)'));
     if ($ret === false) {
         print 'Invalid SQL query - user_password table install';
         return false;
     }
     $ret = DB::CreateTable('user_autologin', "user_login_id I NOTNULL, autologin_id C(32) NOTNULL, last_log T, description C(64)", array('constraints' => ', FOREIGN KEY (user_login_id) REFERENCES user_login(id)'));
     if ($ret === false) {
         print 'Invalid SQL query - user_autologin table install';
         return false;
     }
     $ret = DB::CreateTable('user_login_ban', "failed_on I4, from_addr C(32)");
     if ($ret === false) {
         print 'Invalid SQL query - user_login_ban table install';
         return false;
     }
     $ret = DB::CreateTable('user_reset_pass', "user_login_id I NOTNULL, hash_id C(32) NOTNULL, created_on T DEFTIMESTAMP", array('constraints' => ', FOREIGN KEY (user_login_id) REFERENCES user_login(id)'));
     if ($ret === false) {
         print 'Invalid SQL query - user_autologin table install';
         return false;
     }
     Variable::set('host_ban_time', 300);
     Variable::set('host_ban_nr_of_tries', 3);
     Variable::set('host_ban_by_login', 0);
     Base_ThemeCommon::install_default_theme(Base_User_LoginInstall::module_name());
     return true;
 }
Example #8
0
 public function install()
 {
     Base_ThemeCommon::install_default_theme('CRM/Calendar');
     Base_AclCommon::add_permission(_M('Calendar'), array('ACCESS:employee'));
     DB::CreateTable('crm_calendar_custom_events_handlers', 'id I4 AUTO KEY,' . 'group_name C(64),' . 'handler_callback C(128)', array('constraints' => ''));
     return true;
 }
Example #9
0
 public function install()
 {
     $ret = DB::CreateTable('user_login', "id I AUTO KEY ,login C(32) NOTNULL, active I1 NOTNULL DEFAULT 1, admin I1 NOTNULL DEFAULT 0", array('constraints' => ', UNIQUE (login)'));
     if ($ret === false) {
         print 'Invalid SQL query - User module install';
         return false;
     }
     return true;
 }
Example #10
0
 public function install()
 {
     Base_ThemeCommon::install_default_theme($this->get_type());
     $ret = DB::CreateTable('base_login_audit', "id I AUTO KEY, user_login_id I, start_time T, end_time T, ip_address C(32), host_name C(64)");
     if ($ret === false) {
         die('Invalid SQL query - Database module (login_audit table)');
     }
     return true;
 }
 public function install()
 {
     DB::CreateTable('recordbrowser_custom_recordsets',
         'id I AUTO KEY,' .
         'active I1,' .
         'tab C(64),' .
         'menu C(255) DEFAULT \'\'',
         array('constraints' => ''));
     return true;
 }
Example #12
0
 public function install()
 {
     Base_ThemeCommon::install_default_theme('CRM/Contacts/Photo');
     Utils_RecordBrowserCommon::set_tpl('contact', Base_ThemeCommon::get_template_filename('CRM/Contacts/Photo', 'Contact'));
     Utils_RecordBrowserCommon::register_processing_callback('contact', array('CRM_Contacts_PhotoCommon', 'submit_contact'));
     $this->create_data_dir();
     ModuleManager::include_common('CRM_Contacts_Photo', 0);
     DB::CreateTable(CRM_Contacts_PhotoCommon::table_name, 'contact_id I4 KEY,' . 'filename C(48) NOTNULL');
     return true;
 }
Example #13
0
 public function install()
 {
     DB::CreateTable('base_acl_permission', 'id I4 AUTO KEY,' . 'name C(255)', array('constraints' => ''));
     DB::CreateTable('base_acl_rules', 'id I4 AUTO KEY,' . 'permission_id I', array('constraints' => ', FOREIGN KEY (permission_id) REFERENCES base_acl_permission(id)'));
     DB::CreateTable('base_acl_rules_clearance', 'id I4 AUTO KEY,' . 'rule_id I,' . 'clearance C(64)', array('constraints' => ', FOREIGN KEY (rule_id) REFERENCES base_acl_rules(id)'));
     DB::CreateTable('base_acl_clearance', 'id I4 AUTO KEY,' . 'callback C(128)', array('constraints' => ''));
     DB::Execute('INSERT INTO base_acl_clearance (callback) VALUES (%s)', array('Base_AclCommon::basic_clearance'));
     Base_ThemeCommon::install_default_theme($this->get_type());
     return true;
 }
Example #14
0
 public function install()
 {
     DB::CreateTable('utils_bbcode', 'code C(64) KEY,' . 'func C(128)', array('constraints' => ''));
     DB::Execute('INSERT INTO utils_bbcode VALUES (%s, %s)', array('b', 'Utils_BBCodeCommon::tag_b'));
     DB::Execute('INSERT INTO utils_bbcode VALUES (%s, %s)', array('i', 'Utils_BBCodeCommon::tag_i'));
     DB::Execute('INSERT INTO utils_bbcode VALUES (%s, %s)', array('u', 'Utils_BBCodeCommon::tag_u'));
     DB::Execute('INSERT INTO utils_bbcode VALUES (%s, %s)', array('s', 'Utils_BBCodeCommon::tag_s'));
     DB::Execute('INSERT INTO utils_bbcode VALUES (%s, %s)', array('url', 'Utils_BBCodeCommon::tag_url'));
     DB::Execute('INSERT INTO utils_bbcode VALUES (%s, %s)', array('color', 'Utils_BBCodeCommon::tag_color'));
     DB::Execute('INSERT INTO utils_bbcode VALUES (%s, %s)', array('img', 'Utils_BBCodeCommon::tag_img'));
     return true;
 }
Example #15
0
	public function install() {
		$this->create_data_dir();
		
		Base_ThemeCommon::install_default_theme('Utils/RecordBrowser');
		DB::CreateTable('recordbrowser_table_properties',
						'id I2 AUTO KEY,'.
						'tab C(64),'.
						'quickjump C(64) DEFAULT \'\','.
						'tpl C(255) DEFAULT \'\','.
						'favorites I1 DEFAULT 0,'.
						'recent I2 DEFAULT 0,'.
						'full_history I1 DEFAULT 1,'.
						'caption C(32) DEFAULT \'\','.
						'icon C(255) DEFAULT \'\','.
						'access_callback C(128) DEFAULT \'\','.
						'description_callback C(128) DEFAULT \'\','.
                        'jump_to_id I1 DEFAULT 1,'.
                        'search_include I1 DEFAULT 0,'.
                        'search_priority I1 DEFAULT 0,'.
                        'printer C(255) DEFAULT \'\'',
						array('constraints'=>', UNIQUE(tab)'));
		DB::CreateTable('recordbrowser_datatype',
						'type C(32) KEY,'.
						'module C(64),'.
						'func C(128)',
						array('constraints'=>''));
		DB::CreateTable('recordbrowser_addon',
					'tab C(64),'.
					'module C(128),'.
					'func C(128),'.
					'pos I,'.
					'enabled I1,'.
					'label C(128)',
					array('constraints'=>', PRIMARY KEY(tab, module, func)'));
		DB::CreateTable('recordbrowser_browse_mode_definitions',
					'tab C(64),'.
					'module C(128),'.
					'func C(128)',
					array('constraints'=>', PRIMARY KEY(tab, module, func)'));
		DB::CreateTable('recordbrowser_processing_methods',
					'tab C(64),'.
					'func C(255)',
					array('constraints'=>', PRIMARY KEY(tab, func)'));
		DB::CreateTable('recordbrowser_clipboard_pattern', 'tab C(64) KEY, pattern X, enabled I4');

		DB::CreateTable('recordbrowser_words_index', 'id I AUTO KEY,word C(3)',
					array('constraints'=>', UNIQUE(word)'));
		DB::CreateTable('recordbrowser_words_map', 'word_id I, tab_id I2, record_id I, field_id I2, position I',
					array('constraints'=>', FOREIGN KEY (word_id) REFERENCES recordbrowser_words_index(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (tab_id) REFERENCES recordbrowser_table_properties(id) ON DELETE CASCADE ON UPDATE CASCADE'));
		DB::CreateIndex('recordbrowser_words_map__idx','recordbrowser_words_map','tab_id,record_id');
        Base_PrintCommon::register_printer(new Utils_RecordBrowser_RecordPrinter());
		return true;
	}
Example #16
0
	public function install() {
		$ret = true;
		$ret &= DB::CreateTable('tools_whoisonline_users','
			session_name C(128) KEY NOTNULL,
			user_login_id I4 NOTNULL',
			array('constraints'=>', FOREIGN KEY (user_login_id) REFERENCES user_login(ID)'));
		if(!$ret){
			print('Unable to create table tools_whoisonline_users.<br>');
			return false;
		}
		return $ret;
	}
Example #17
0
	public function install() {
		Base_ThemeCommon::install_default_theme($this->get_type());
		$ret = true;
		$ret &= DB::CreateTable('utils_watchdog_category',
					'id I AUTO KEY,'.
					'name C(32),'.
					'callback C(128)',
			array('constraints'=>''));
		if(!$ret){
			print('Unable to create table utils_watchdog_category.<br>');
			return false;
		}
		$ret &= DB::CreateTable('utils_watchdog_event',
					'id I AUTO KEY,'.
					'category_id I,'.
					'internal_id I,'.
					'message C(64),'.
					'event_time T',
			array('constraints'=>', FOREIGN KEY (category_id) REFERENCES utils_watchdog_category(id)'));
		if(!$ret){
			print('Unable to create table utils_watchdog_event.<br>');
			return false;
		}
		$ret &= DB::CreateTable('utils_watchdog_subscription',
					'category_id I,'.
					'internal_id I,'.
					'last_seen_event I,'.
					'user_id I',
			array('constraints'=>', FOREIGN KEY (user_id) REFERENCES user_login(id)'));
		if(!$ret){
			print('Unable to create table utils_watchdog_subscription.<br>');
			return false;
		}
		$ret &= DB::CreateTable('utils_watchdog_category_subscription',
					'category_id I,'.
					'user_id I',
			array('constraints'=>', FOREIGN KEY (user_id) REFERENCES user_login(id), FOREIGN KEY (category_id) REFERENCES utils_watchdog_category(id)'));
		if(!$ret){
			print('Unable to create table utils_watchdog_category_subscription.<br>');
			return false;
		}

		DB::CreateIndex('utils_watchdog_event__internal_id__idx', 'utils_watchdog_event', 'internal_id');
		DB::CreateIndex('utils_watchdog_event__cat_int__idx', 'utils_watchdog_event', array('category_id','internal_id'));
		DB::CreateIndex('utils_watchdog_subscription__cat_int__idx', 'utils_watchdog_subscription', array('category_id','internal_id'));
		DB::CreateIndex('utils_watchdog_subscription__user__idx', 'utils_watchdog_subscription', 'user_id');
		Base_AclCommon::add_permission(_M('Watchdog - subscribe to categories'),array('ACCESS:employee','ACCESS:manager'));
		return $ret;
	}
Example #18
0
 public function install()
 {
     $ret = DB::CreateTable('comment', "id I AUTO KEY, text X(4000) NOTNULL, user_login_id I NOTNULL, parent I DEFAULT -1 NOTNULL, topic C(255) NOTNULL, created_on T NOTNULL");
     if ($ret === false) {
         print 'Invalid SQL query - Comment module install: ' . DB::error();
         return false;
     }
     $ret = DB::CreateTable('comment_report', "id I KEY, user_login_id I NOTNULL");
     if ($ret === false) {
         print 'Invalid SQL query - Comment module install: ' . DB::error();
         return false;
     }
     Base_ThemeCommon::install_default_theme('Utils/Comment');
     return true;
 }
Example #19
0
 /**
  * @param string $pref
  * @return bool
  */
 function CreateTables($pref)
 {
     $tableArray = GetTablesArray($pref);
     $original = GetTablesArray('');
     foreach ($tableArray as $key => $tname) {
         $sql = trim(DB::CreateTable($original[$key], $pref));
         if (!$sql || $sql == '') {
             return false;
         }
         if (!DB::execute($sql)) {
             return $tname;
         }
     }
     return true;
 }
Example #20
0
	public function install() {
		$ret = true;
		$ret &= DB::CreateTable('utils_commondata_tree','
			id I4 AUTO KEY,
			parent_id I4 DEFAULT -1,
			akey C(64) NOTNULL,
			value X,
			readonly I1 DEFAULT 0',
			array('constraints'=>', UNIQUE(parent_id,akey)'));
		if(!$ret){
			print('Unable to create table utils_commondata_tree.<br>');
			return false;
		}
		Base_ThemeCommon::install_default_theme($this->get_type());
		return $ret;
	}
Example #21
0
    public function install()
    {
        $ret = true;
        $ret &= DB::CreateTable('apps_shoutbox_messages', '
			id I4 AUTO KEY,
			base_user_login_id I4 NOTNULL,
			to_user_login_id I4,
			message X,
			posted_on T DEFTIMESTAMP', array('constraints' => ', FOREIGN KEY (base_user_login_id) REFERENCES user_login(ID)'));
        if (!$ret) {
            print 'Unable to create table apps_shoutbox_messages.<br>';
            return false;
        }
        Base_ThemeCommon::install_default_theme($this->get_type());
        Base_AclCommon::add_permission(_M('Shoutbox'), array('ACCESS:employee'));
        return $ret;
    }
Example #22
0
 public function install()
 {
     Base_ThemeCommon::install_default_theme($this->get_type());
     $ret = true;
     $ret &= DB::CreateTable('epesi_store_modules', '
         module_id I4 PRIMARY KEY,
         version C(10),
         module_license_id I4 NOTNULL,
         file C(20)');
     if (!$ret) {
         print 'Unable to create table epesi_store_modules.<br>';
         return false;
     }
     if ($this->create_data_dir()) {
         return true;
     }
     return false;
 }
Example #23
0
	public function install() {
		$ret = true;
		$ret &= DB::CreateTable('utils_filedownload_files','
			id I4 AUTO KEY,
			path X,
			curr I8 DEFAULT 0,
			size I8 DEFAULT 0,
			rate F DEFAULT 0,
			time F DEFAULT 0,
			view_time F DEFAULT 0,
			posted_on T',
			array('constraints'=>''));
		if(!$ret){
			print('Unable to create table utils_filedownload_files.<br>');
			return false;
		}
		$this->create_data_dir();
		return $ret;
	}
Example #24
0
 public function install()
 {
     $ret = DB::CreateTable('available_modules', 'name C(128), vkey I NOTNULL, version C(64) NOTNULL', array('constraints' => ', PRIMARY KEY(name, vkey)'));
     if ($ret === false) {
         die('Invalid SQL query - Setup module (modules table)');
     }
     $ret = Variable::set('anonymous_setup', true);
     if ($ret === false) {
         print 'Invalid SQL query - Setup module (populating variables)';
         return false;
     }
     $ret = Variable::set('simple_setup', 1);
     if ($ret === false) {
         print 'Invalid SQL query - Setup module (populating variables)';
         return false;
     }
     $this->create_data_dir();
     Base_ThemeCommon::install_default_theme($this->get_type());
     return true;
 }
Example #25
0
    public function install()
    {
        $ret = true;
        DB::Execute('DROP TABLE IF EXISTS base_notify');
        DB::CreateTable('base_notify', '
			token C(32) NOTNULL PRIMARY KEY,
			cache X,
			last_refresh I8,
			single_cache_uid I,
			telegram I1 DEFAULT 0', array('constraints' => ', FOREIGN KEY (single_cache_uid) REFERENCES user_login(id)'));
        if (!$ret) {
            print 'Unable to create table base_notify.<br>';
            return false;
        }
        Base_ThemeCommon::install_default_theme($this->get_type());
        Utils_CommonDataCommon::new_id('Base_Notify/Timeout', true);
        Utils_CommonDataCommon::new_array('Base_Notify/Timeout', array(-1 => _M('Disable Notification'), 0 => _M('Manually')), true, true);
        Utils_CommonDataCommon::new_array('Base_Notify/Timeout', array(10000 => _M('10 seconds'), 30000 => _M('30 seconds'), 60000 => _M('1 minute')));
        return $ret;
    }
Example #26
0
    public function install()
    {
        $ret = true;
        $ret &= DB::CreateTable('utils_custommenu_page', '
			id C(32) KEY NOTNULL,
			module C(128) NOTNULL,
			function C(128),
			arguments X', array('constraints' => ', FOREIGN KEY (module) REFERENCES modules(name)'));
        if (!$ret) {
            print 'Unable to create table utils_custommenu_page.<br>';
            return false;
        }
        $ret &= DB::CreateTable('utils_custommenu_entry', '
			page_id C(32) NOTNULL,
			path C(255) KEY NOTNULL', array('constraints' => ', FOREIGN KEY (page_id) REFERENCES utils_custommenu_page(id)'));
        if (!$ret) {
            print 'Unable to create table utils_custommenu_entry.<br>';
            return false;
        }
        return $ret;
    }
Example #27
0
    public function install()
    {
        $ret = true;
        $ret &= DB::CreateTable('utils_filestorage_files', '
			id I8 AUTO KEY,
			filename C(256) NOTNULL,
			uploaded_on T NOTNULL,
			hash C(128) NOTNULL', array('constraints' => ', UNIQUE(hash)'));
        if (!$ret) {
            print 'Unable to create table utils_filestorage_files.<br>';
            return false;
        }
        $ret &= DB::CreateTable('utils_filestorage_link', '
			storage_id I8 NOTNULL,
			link C(128) KEY', array('constraints' => ', FOREIGN KEY (storage_id) REFERENCES utils_filestorage_files(id)'));
        if (!$ret) {
            print 'Unable to create table utils_filestorage_link.<br>';
            return false;
        }
        $this->create_data_dir();
        file_put_contents($this->get_data_dir() . '.htaccess', 'deny from all');
        return $ret;
    }
Example #28
0
    public function install()
    {
        $ret = true;
        $ret &= DB::CreateTable('crm_filters_group', '
			id I4 AUTO KEY,
			name C(128) NOTNULL,
			description C(255),
			user_login_id I4 NOTNULL', array('constraints' => ', UNIQUE(name, user_login_id), FOREIGN KEY (user_login_id) REFERENCES user_login(ID)'));
        if (!$ret) {
            print 'Unable to create table crm_filters_group.<br>';
            return false;
        }
        $ret &= DB::CreateTable('crm_filters_contacts', '
			group_id I4 NOTNULL,
			contact_id I4', array('constraints' => ', FOREIGN KEY (group_id) REFERENCES crm_filters_group(id)'));
        if (!$ret) {
            print 'Unable to create table crm_filters_contacts.<br>';
            return false;
        }
        Base_ThemeCommon::install_default_theme($this->get_type());
        Base_AclCommon::add_permission(_M('Manage Perspective'), array('ACCESS:employee'));
        return $ret;
    }
Example #29
0
<?php

defined("_VALID_ACCESS") || die('Direct access forbidden');
if (ModuleManager::is_installed('Base_Acl') == -1) {
    return;
}
@DB::DropTable('base_acl_clearance');
DB::CreateTable('base_acl_clearance', 'id I4 AUTO KEY,' . 'callback C(128)', array('constraints' => ''));
DB::Execute('INSERT INTO base_acl_clearance (callback) VALUES (%s)', array('Base_AclCommon::basic_clearance'));
if (ModuleManager::is_installed('CRM_Contacts') == -1) {
    return;
}
DB::Execute('INSERT INTO base_acl_clearance (callback) VALUES (%s)', array('CRM_ContactsCommon::crm_clearance'));
Example #30
0
	public function install() {
		$ret = true;
        Utils_RecordBrowserCommon::uninstall_recordset('utils_attachment');
        $fields = array(
            array(
                'name' => _M('Edited on'),
                'type' => 'timestamp',
                'extra'=>false,
                'visible'=>true,
                'required' => false,
                'display_callback'=>array('Utils_AttachmentCommon','display_date'),
                'QFfield_callback'=>array('Utils_AttachmentCommon','QFfield_date')
            ),
            array(
                'name' => _M('Title'),
                'type' => 'text',
                'param' => 255,
                'required' => false, 'extra' => false, 'visible' => false
            ),
            array('name' => _M('Note'),
                'type' => 'long text',
                'required' => false,
                'extra' => false,
                'visible'=>true,
                'display_callback'=>array('Utils_AttachmentCommon','display_note'),
                'QFfield_callback'=>array('Utils_AttachmentCommon','QFfield_note'),
            ),
            array('name' => _M('Permission'),
                'type' => 'commondata',
                'required' => true,
                'param' => array('order_by_key' => true, 'CRM/Access'),
                'extra' => false),
            array('name' => _M('Sticky'),
                'type' => 'checkbox',
                'visible' => true,
                'extra' => false),
            array('name' => _M('Crypted'),
                'type' => 'checkbox',
                'extra' => false,
                'QFfield_callback'=>array('Utils_AttachmentCommon','QFfield_crypted')),
            array('name' => _M('Attached to'),
                'type' => 'calculated',
                'extra' => false,
                'display_callback'=>array('Utils_AttachmentCommon','display_attached_to')),
        );
        Utils_RecordBrowserCommon::install_new_recordset('utils_attachment',$fields);
        Utils_RecordBrowserCommon::add_access('utils_attachment', 'view', 'ACCESS:employee', array('(!permission'=>2, '|:Created_by'=>'USER_ID'));
        Utils_RecordBrowserCommon::add_access('utils_attachment', 'delete', 'ACCESS:employee', array(':Created_by'=>'USER_ID'));
        Utils_RecordBrowserCommon::add_access('utils_attachment', 'delete', array('ACCESS:employee','ACCESS:manager'));
        Utils_RecordBrowserCommon::add_access('utils_attachment', 'add', 'ACCESS:employee',array(),array('edited_on'));
        Utils_RecordBrowserCommon::add_access('utils_attachment', 'edit', 'ACCESS:employee', array('(permission'=>0, '|:Created_by'=>'USER_ID'),array('edited_on'));
        Utils_RecordBrowserCommon::register_processing_callback('utils_attachment',array('Utils_AttachmentCommon','submit_attachment'));
        Utils_RecordBrowserCommon::set_tpl('utils_attachment', Base_ThemeCommon::get_template_filename('Utils/Attachment', 'View_entry'));
        Utils_RecordBrowserCommon::enable_watchdog('utils_attachment', array('Utils_AttachmentCommon','watchdog_label'));
        Utils_RecordBrowserCommon::set_caption('utils_attachment', _M('Note'));
        Utils_RecordBrowserCommon::set_description_callback('utils_attachment', array('Utils_AttachmentCommon','description_callback'));
        Utils_RecordBrowserCommon::set_jump_to_id('utils_attachment', false);
        Utils_RecordBrowserCommon::set_search('utils_attachment',1,0);

        $ret &= DB::CreateTable('utils_attachment_local','
			local C(255) NOTNULL,
			attachment I4 NOTNULL,
			func C(255),
			args C(255)',
            array('constraints'=>', FOREIGN KEY (attachment) REFERENCES utils_attachment_data_1(ID)'));
        if(!$ret){
            print('Unable to create table utils_attachment_local.<br>');
            return false;
        }
        DB::CreateIndex('utils_attachment_local__idx', 'utils_attachment_local', 'local');

		$ret &= DB::CreateTable('utils_attachment_file','
			id I4 AUTO KEY NOTNULL,
			attach_id I4 NOTNULL,
			original C(255) NOTNULL,
			created_by I4,
			created_on T DEFTIMESTAMP,
			deleted I1 NOTNULL DEFAULT 0',
			array('constraints'=>', FOREIGN KEY (created_by) REFERENCES user_login(ID), FOREIGN KEY (attach_id) REFERENCES utils_attachment_data_1(id)'));
		if(!$ret){
			print('Unable to create table utils_attachment_file.<br>');
			return false;
		}
        DB::CreateIndex('attach_id_idx','utils_attachment_file','attach_id');
		$ret &= DB::CreateTable('utils_attachment_download','
			id I4 AUTO KEY NOTNULL,
			attach_file_id I4 NOTNULL,
			created_by I4,
			created_on T,
			expires_on T,
			remote I1 DEFAULT 0,
			download_on T DEFTIMESTAMP,
			ip_address C(32),
			host_name C(64),
			description C(128),
			token C(32)',
			array('constraints'=>', FOREIGN KEY (created_by) REFERENCES user_login(ID), FOREIGN KEY (attach_file_id) REFERENCES utils_attachment_file(id)'));
		if(!$ret){
			print('Unable to create table utils_attachment_download.<br>');
			return false;
		}
		$ret &= DB::CreateTable('utils_attachment_clipboard','
			id I4 AUTO KEY NOTNULL,
			filename C(255),
			created_by I4,
			created_on T DEFTIMESTAMP',
			array('constraints'=>''));

		$this->create_data_dir();
		file_put_contents($this->get_data_dir().'.htaccess','deny from all');
		Base_ThemeCommon::install_default_theme($this->get_type());
		
		DB::CreateTable('utils_attachment_googledocs','
			id I4 AUTO KEY NOTNULL,
			note_id I4 NOTNULL,
			view_link C(255),
			doc_id C(128)',
			array('constraints'=>''));
		
		Base_AclCommon::add_permission(_M('Attachments - view full download history'), array('ACCESS:employee'));

		Variable::set('utils_attachments_google_user', '');
		Variable::set('utils_attachments_google_pass', '');
		return $ret;
	}