summaryrefslogtreecommitdiff
path: root/admin/schema_inc.php
blob: 08f199afdc8c289052728ae447074c749a74ff2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php

$tables = [

'newsletters' => "
  nl_id I4 AUTO PRIMARY,
  content_id I4 NOTNULL,
  last_sent I8,
  allow_user_sub C(1) default 'y',
  allow_any_sub C(1),
  unsub_msg C(1) default 'y',
  validate_addr C(1) default 'y',
  frequency I8
  CONSTRAINT ', CONSTRAINT `nl_con_ref` FOREIGN KEY (`content_id`) REFERENCES `".BIT_DB_PREFIX."liberty_content`( `content_id` )'
",

'newsletters_editions' => "
  edition_id I4 AUTO PRIMARY,
  nl_content_id I4 NOTNULL,
  is_draft C(1),
  reply_to C(160),
  content_id I4 NOTNULL
  CONSTRAINT ', CONSTRAINT `nl_ed_nl_con_ref` FOREIGN KEY (`nl_content_id`) REFERENCES `".BIT_DB_PREFIX."liberty_content`( `content_id` )
  			   , CONSTRAINT `nl_ed_con_ref` FOREIGN KEY (`content_id`) REFERENCES `".BIT_DB_PREFIX."liberty_content`( `content_id` )'
",

'mail_subscriptions' => "
  email C(160),
  user_id I4,
  content_id I4,
  sub_code C(36),
  is_valid C(1),
  subscribed_date I8,
  response_content_id I4,
  unsubscribe_all C(1),
  unsubscribe_date I8
  CONSTRAINT ', CONSTRAINT `mail_unsub_con_ref` FOREIGN KEY (`response_content_id`) REFERENCES `".BIT_DB_PREFIX."liberty_content`( `content_id` )
			  , CONSTRAINT `mail_unsub_ref` FOREIGN KEY (`user_id`) REFERENCES `".BIT_DB_PREFIX."users_users`( `user_id` )'
",

'mail_errors' => "
  url_code C(32) PRIMARY,
  email C(160),
  user_id I4,
  content_id I4,
  error_date I8,
  error_message X
  CONSTRAINT ', CONSTRAINT `mail_err_user_ref` FOREIGN KEY (`user_id`) REFERENCES `".BIT_DB_PREFIX."users_users`( `user_id` )'
",

'mail_mailings' => "
  content_id I4 NOTNULL,
  queue_date I8,
  send_date I8,
  emails_sent I8
  CONSTRAINT ', CONSTRAINT `mail_content_ref` FOREIGN KEY (`content_id`) REFERENCES `".BIT_DB_PREFIX."liberty_content` ( `content_id` )'
",

'mail_queue' => "
  mail_queue_id I8 PRIMARY,
  content_id I4 NOTNULL,
  email C(160) NOTNULL,
  nl_content_id I4 NOTNULL,
  user_id I4,
  url_code C(32),
  queue_date I8 NOTNULL,
  begin_date I8,
  sent_date I8,
  last_read_date I8,
  last_read_ip C(39),
  hits I2 NOTNULL DEFAULT '0',
  mail_error X
  CONSTRAINT ', CONSTRAINT `mailq_content_ref` FOREIGN KEY (`nl_content_id`) REFERENCES `".BIT_DB_PREFIX."liberty_content`( `content_id` )
			  , CONSTRAINT `mailq_user_ref` FOREIGN KEY (`user_id`) REFERENCES `".BIT_DB_PREFIX."users_users`( `user_id` )'
",

'mail_clickthrough' => "
	user_id I4 NOTNULL,
	content_id I4 NOTNULL,
	clicked_url C(250) NOTNULL,
	clicks I4
	CONSTRAINT ', CONSTRAINT `mail_clickthrough_user_ref` FOREIGN KEY (`user_id`) REFERENCES `".BIT_DB_PREFIX."users_users` (`user_id`),
				  CONSTRAINT `mail_clickthrough_content_ref` FOREIGN KEY (`content_id`) REFERENCES `".BIT_DB_PREFIX."liberty_content` (`content_id`)'
",

];

global $gBitInstaller;

foreach( array_keys( $tables ) AS $tableName ) {
	$gBitInstaller->registerSchemaTable( NEWSLETTERS_PKG_DIR, $tableName, $tables[$tableName] );
}

$gBitInstaller->registerPackageInfo( NEWSLETTERS_PKG_NAME, [
	'description' => "Newsletters is for emailing users updates about your site.",
	'license' => '<a href="http://www.gnu.org/licenses/licenses.html#LGPL">LGPL</a>',
] );

// ### Indexes
$indices =  [
	'mail_sub_nl_idx' => [ 'table' => 'mail_subscriptions', 'cols' => 'content_id', 'opts' => NULL ],
	'mail_sub_user_idx' => [ 'table' => 'mail_subscriptions', 'cols' => 'user_id', 'opts' => NULL ],
	'mail_sub_email_idx' => [ 'table' => 'mail_subscriptions', 'cols' => 'email', 'opts' => NULL ],
	'nl_ed_nl_idx' => [ 'table' => 'newsletters_editions', 'cols' => 'nl_content_id', 'opts' => NULL ],
	'nl_ed_content_idx' => [ 'table' => 'newsletters_editions', 'cols' => 'content_id', 'opts' => NULL ],
	'mailq_email_idx' => [ 'table' => 'mail_queue', 'cols' => 'email', 'opts' => NULL ],
	'mailq_user_idx' => [ 'table' => 'mail_queue', 'cols' => 'user_id', 'opts' => NULL ],
	'mailq_content_idx' => [ 'table' => 'mail_queue', 'cols' => 'content_id', 'opts' => NULL ],
	'mailq_user_content_idx' => [ 'table' => 'mail_queue', 'cols' => ['content_id','user_id'], 'opts' => [ 'UNIQUE' ] ],
	'mailq_sent_idx' => [ 'table' => 'mail_queue', 'cols' => 'sent_date', 'opts' => NULL ],
];
$gBitInstaller->registerSchemaIndexes( NEWSLETTERS_PKG_NAME, $indices );

// ### Default UserPermissions
$gBitInstaller->registerUserPermissions( NEWSLETTERS_PKG_NAME, [
	['p_newsletters_admin', 'Can admin and send newsletters', 'editors', 'newsletters'],
	['p_newsletters_create', 'Can create newsletters', 'editors', 'newsletters'],
	['p_newsletters_create_editions', 'Can create editions', 'editors', 'newsletters'],
	['p_newsletters_subscribe', 'Can subscribe to newsletters', 'registered', 'newsletters'],
	['p_newsletters_subscribe_email', 'Can subscribe any email to newsletters', 'editors', 'newsletters'],
] );

// Requirements
$gBitInstaller->registerRequirements( NEWSLETTERS_PKG_NAME, [
	'liberty' => [ 'min' => '2.1.4' ],
]);