source: extensions/AMenuManager/amm_install.class.inc.php @ 5421

Revision 5421, 4.9 KB checked in by grum, 10 years ago (diff)

Update the plugin for compatibility with Piwigo 2.1 and fix some bugs
feature 1384, feature 1476, feature 1541

  • Property svn:executable set to *
Line 
1<?php
2/* -----------------------------------------------------------------------------
3  Plugin     : Advanced Menu Manager
4  Author     : Grum
5    email    : grum@grum.dnsalias.com
6    website  : http://photos.grum.fr
7    PWG user : http://forum.phpwebgallery.net/profile.php?id=3706
8
9    << May the Little SpaceFrog be with you ! >>
10  ------------------------------------------------------------------------------
11  See main.inc.php for release information
12
13  MyPolls_Install : classe to manage plugin install
14
15  --------------------------------------------------------------------------- */
16  include_once('amm_version.inc.php');
17  include_once('amm_root.class.inc.php');
18  include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/tables.class.inc.php');
19
20
21  class AMM_install extends AMM_root
22  {
23    private $tablef;
24    private $exportfile;
25
26    public function AMM_install($prefixeTable, $filelocation)
27    {
28      parent::__construct($prefixeTable, $filelocation);
29      $this->tablef= new manage_tables($this->tables);
30      $this->exportfile=dirname($this->filelocation).'/'.$this->plugin_name_files.'.sql';
31    }
32
33    /*
34        function for installation process
35        return true if install process is ok, otherwise false
36    */
37    public function install()
38    {
39      $this->init_config();
40      $this->load_config();
41      $this->my_config['installed']=AMM_VERSION2;
42      $this->save_config();
43
44      $tables_def=array(
45"CREATE TABLE  `".$this->tables['urls']."` (
46  `id` int(11) NOT NULL auto_increment,
47  `label` varchar(50) NOT NULL default '',
48  `url` varchar(255) NOT NULL default '',
49  `mode` int(11) NOT NULL default '0',
50  `icon` varchar(50) NOT NULL default '',
51  `position` int(11) NOT NULL default '0',
52  `visible` char(1) NOT NULL default 'y',
53  PRIMARY KEY  (`id`),
54  KEY `order_key` (`position`)
55)",
56
57"CREATE TABLE  `".$this->tables['personalised']."` (
58  `id` int(11) NOT NULL default '0',
59  `lang` varchar(5) NOT NULL default '',
60  `title` varchar(255) NOT NULL default '',
61  `content` text NOT NULL,
62  `visible` char(1) NOT NULL default 'y',
63  `nfo` varchar(255) NOT NULL default '',
64  PRIMARY KEY  (`id`,`lang`)
65)"
66);
67      //$table_def array
68      $tables_def = create_table_add_character_set($tables_def);
69      $result=$this->tablef->create_tables($tables_def);
70      return($result);
71    }
72
73
74    /*
75        function for uninstall process
76    */
77    public function uninstall()
78    {
79      $this->tablef->export($this->exportfile);
80      $this->delete_config();
81      $this->tablef->drop_tables();
82    }
83
84    public function activate()
85    {
86      global $template;
87
88      $this->init_config();
89      $this->load_config();
90
91      $this->udpateTablesDef();
92
93      $this->my_config['installed']=AMM_VERSION2; //update the installed release number
94      $this->save_config();
95    }
96
97    public function deactivate()
98    {
99    }
100
101
102    /**
103     * update tables & config between releases
104     *
105     */
106    protected function udpateTablesDef()
107    {
108      /* AMM release earlier than the 2.1.3 uses two parameters to manage the display
109       * of the menu items ("amm_sections_modspecials" and "amm_sections_modmenu")
110       *
111       * These two parameters are replaced by a single parameter "amm_sections_items"
112       *
113       * This function aim to import the old conf into the new conf property
114      */
115      if(isset($this->my_config['amm_sections_modspecials']))
116      {
117        foreach($this->my_config['amm_sections_modspecials'] as $key=>$val)
118        {
119          $this->my_config['amm_sections_items'][$key]['visibility']=($val=="y")?"guest,generic,normal,admin/":"admin/";
120        }
121        unset($this->my_config['amm_sections_modspecials']);
122      }
123
124      if(isset($this->my_config['amm_sections_modmenu']))
125      {
126        foreach($this->my_config['amm_sections_modmenu'] as $key=>$val)
127        {
128          $this->my_config['amm_sections_items'][$key]['visibility']=($val=="y")?"guest,generic,normal,admin/":"admin/";
129        }
130        unset($this->my_config['amm_sections_modmenu']);
131      }
132
133      if(!array_key_exists('installed', $this->my_config))
134      {
135        /*
136         * if key does not exist, probably try to update a plugin older than the
137         * 2.2.0 release
138         */
139        $this->my_config['installed']="02.01.06";
140      }
141
142      if($this->my_config['installed']<="02.01.06")
143      {
144        /*
145         * 2.2.0 updates
146         *
147         * - update fields length for table 'personalised'
148         * - update config for menu translation
149         */
150        $sql="ALTER TABLE `".$this->tables['personalised']."`
151              MODIFY COLUMN `title` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
152              MODIFY COLUMN `nfo` VARCHAR(255)  CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;";
153        pwg_query($sql);
154
155        foreach($this->my_config['amm_sections_items'] as $key => $val)
156        {
157          $this->my_config['amm_sections_items'][$key]['translation'] = $this->defaultMenus[$key]['translation'];
158        }
159      }
160    }
161
162  } //class
163
164?>
Note: See TracBrowser for help on using the repository browser.