source: extensions/Subscribe_to_comments/maintain.inc.php @ 15682

Last change on this file since 15682 was 15641, checked in by mistic100, 12 years ago

HUGE update, main features : global subscriptions (all images in an album, all images, all albums), beautyful (!) mails

File size: 3.1 KB
Line 
1<?php
2if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
3
4global $prefixeTable;
5
6define('STC_TABLE', $prefixeTable . 'subscribe_to_comments');
7
8define(
9  'stc_default_config', 
10  serialize(array(
11    'notify_admin_on_subscribe' => false,
12    'allow_global_subscriptions' => true,
13    ))
14  );
15 
16
17function plugin_install() 
18{
19  /* create table to store subscribtions */
20        pwg_query('
21CREATE TABLE IF NOT EXISTS '.STC_TABLE.' (
22  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
23  `type` enum("image","album-images","album","all-images","all-albums") NOT NULL DEFAULT "image",
24  `element_id` mediumint(8) DEFAULT NULL,
25  `language` varchar(64) NOT NULL,
26  `email` varchar(255) NOT NULL,
27  `registration_date` datetime NOT NULL,
28  `validated` enum("true","false") NOT NULL DEFAULT "false",
29  PRIMARY KEY (`id`),
30  UNIQUE KEY `UNIQUE` (`email` , `type` , `element_id`)
31) DEFAULT CHARSET=utf8
32;');
33
34  /* config parameter */
35  conf_update_param('Subscribe_to_Comments', stc_default_config);
36
37}
38
39function plugin_activate()
40{
41  global $conf;
42 
43  // new config in 1.1
44  if (empty($conf['Subscribe_to_Comments']))
45  {
46    conf_update_param('Subscribe_to_Comments', stc_default_config);
47  }
48 
49  // table structure upgrade in 1.1
50  $result = pwg_query('SHOW COLUMNS FROM '.STC_TABLE.' LIKE "element_id";');
51  if (!pwg_db_num_rows($result))
52  {
53    // backup subscriptions
54    $query = 'SELECT * FROM '.STC_TABLE.' ORDER BY registration_date;';
55    $subscriptions = hash_from_query($query, 'id');
56   
57    // upgrade the table
58    pwg_query('TRUNCATE TABLE '.STC_TABLE.';');
59    pwg_query('ALTER TABLE '.STC_TABLE.' DROP `image_id`, DROP `category_id`;');
60    pwg_query('ALTER TABLE '.STC_TABLE.' AUTO_INCREMENT = 1;');
61   
62    $query = '
63ALTER TABLE '.STC_TABLE.'
64  ADD `type` ENUM( "image", "album-images", "album", "all-images", "all-albums" ) NOT NULL DEFAULT "image" AFTER `id`,
65  ADD `element_id` MEDIUMINT( 8 ) NULL AFTER `type`,
66  ADD `language` VARCHAR( 64 ) NOT NULL AFTER `element_id`
67;';
68    pwg_query($query);
69   
70    pwg_query('ALTER TABLE '.STC_TABLE.'  DROP INDEX `UNIQUE`, ADD UNIQUE `UNIQUE` ( `email` , `type` , `element_id` );');
71   
72    // convert datas and fill the table
73    $inserts = array();
74   
75    foreach ($subscriptions as $row)
76    {
77      if (!empty($row['category_id']))
78      {
79        $row['type'] = 'album';
80        $row['element_id'] = $row['category_id'];
81      }
82      else if (!empty($row['image_id']))
83      {
84        $row['type'] = 'image';
85        $row['element_id'] = $row['image_id'];
86      }
87      else
88      {
89        continue;
90      }
91     
92      unset($row['id'], $row['image_id'], $row['category_id']);
93      $row['language'] = 'en_UK';
94     
95      array_push($inserts, $row);
96    }
97   
98    if (count($inserts) > 0)
99    {
100      $dbfields = array('type', 'element_id', 'language', 'email', 'registration_date', 'validated');
101      mass_inserts(STC_TABLE, $dbfields, $inserts);
102    }
103  }
104}
105
106function plugin_uninstall() 
107{
108  /* delete table and config */
109  pwg_query('DROP TABLE '.STC_TABLE.';');
110  pwg_query('DELETE FROM `'. CONFIG_TABLE .'` WHERE param = "Subscribe_to_Comments" LIMIT 1;');
111}
112?>
Note: See TracBrowser for help on using the repository browser.