PageRenderTime 32ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/Quản lý website bán mỹ phẩm PHP/administrator/components/com_magiczoomplus/install.un.php

https://gitlab.com/phamngsinh/baitaplon_sinhvien
PHP | 272 lines | 196 code | 53 blank | 23 comment | 26 complexity | fb902b9c8187fca5e6bff1b8283279c7 MD5 | raw file
  1. <?php
  2. /*------------------------------------------------------------------------
  3. # mod_virtuemart_magiczoomplus - Magic Zoom Plus for Joomla with VirtueMart
  4. # ------------------------------------------------------------------------
  5. # Magic Toolbox
  6. # Copyright 2011 MagicToolbox.com. All Rights Reserved.
  7. # @license - http://www.opensource.org/licenses/artistic-license-2.0 Artistic License 2.0 (GPL compatible)
  8. # Website: http://www.magictoolbox.com/magiczoomplus/modules/virtuemart/
  9. # Technical Support: http://www.magictoolbox.com/contact/
  10. /*-------------------------------------------------------------------------*/
  11. if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
  12. include_once 'init.php';
  13. isset($INSTALLMODE) or $INSTALLMODE = '';
  14. $msg = array();
  15. //Import joomla libraries
  16. mz_jimport('joomla.filesystem.file');
  17. mz_jimport('joomla.filesystem.folder');
  18. mz_jimport('joomla.filesystem.archive');
  19. if(class_exists('joomlaVersion')) {
  20. //old joomla, 1.0.x
  21. $versionObj = new joomlaVersion();
  22. } elseif(class_exists('JVersion')) {
  23. $versionObj = new JVersion();
  24. }
  25. if(version_compare($versionObj->getShortVersion(), '1.6.0', '<')) {
  26. $jm17 = false;
  27. } else {
  28. $jm17 = true;
  29. }
  30. $vm2 = false;
  31. $vmVersionFile = dirname(__FILE__).DS.'..'.DS.'com_virtuemart'.DS.'version.php';
  32. if(file_exists($vmVersionFile)) {
  33. include_once $vmVersionFile;
  34. $vmVersion = preg_replace('/^[a-zA-Z]+\s(\d(?:\.\d)*).*$/is', '$1', $shortversion);
  35. if(version_compare($vmVersion, '2.0.0', '>=')) {
  36. $vm2 = true;
  37. }
  38. }
  39. switch ($INSTALLMODE) {
  40. case 'install':
  41. $prepare_queries = array();
  42. $create_table_queries = array();
  43. $alter_table_queries = array();
  44. $sample_data_insert = array();
  45. $end_queries = array();
  46. //Magic Zoom Plus frontend module installation
  47. function mz_copyModuleFiles($from, $to) {
  48. JFolder::copy($from, $to);
  49. if(!defined('_JEXEC')) {
  50. // jm 1.0
  51. JFile::move($to . DS . 'mod_virtuemart_magiczoomplus.php', $to . DS.'..'.DS.'mod_virtuemart_magiczoomplus.php');
  52. JFile::move($to . DS . 'mod_virtuemart_magiczoomplus_10.xml', $to . DS.'..'.DS.'mod_virtuemart_magiczoomplus.xml');
  53. JFile::delete($to . DS . 'mod_virtuemart_magiczoomplus.xml');
  54. $url = $GLOBALS['mosConfig_live_site'] . '/modules/mod_virtuemart_magiczoomplus/core';
  55. } else {
  56. //JFile::delete($to . DS . 'mod_virtuemart_magiczoomplus_10.xml');
  57. //$url = JURI::base() . '/modules/mod_virtuemart_magiczoomplus/core';
  58. $url = JURI::base() . 'modules/mod_virtuemart_magiczoomplus/core';
  59. }
  60. $css = $to . DS . 'core' . DS . 'magiczoomplus.css';
  61. $c = file_get_contents($css);
  62. $url = preg_replace('/https?:\/\/[^\/]+\//is', '/', $url);
  63. $url = str_replace('administrator/', '', $url);
  64. $url = str_replace('//', '/', $url);
  65. $pattern = '/url\(\s*(?:\'|")?(?!'.preg_quote($url, '/').')\/?([^\)\s]+?)(?:\'|")?\s*\)/is';
  66. $replace = 'url(' . $url . '/$1)';
  67. $c = preg_replace($pattern, $replace, $c);
  68. file_put_contents($css, $c);
  69. return true;
  70. }
  71. $mz_modDstPath = join(DS,array(dirname(__FILE__),'..','..','..','modules','mod_virtuemart_magiczoomplus'));
  72. $mz_modFile = join(DS,array(dirname(__FILE__),'module'));
  73. $mz_clean = array($mz_modDstPath);
  74. if(!defined('_JEXEC')) {
  75. $mz_clean = array(
  76. $mz_modDstPath,
  77. $mz_modDstPath.DS.'..'.DS.'mod_virtuemart_magiczoomplus.php',
  78. $mz_modDstPath.DS.'..'.DS.'mod_virtuemart_magiczoomplus.xml',
  79. );
  80. }
  81. //clean folders and file of previous installation
  82. foreach($mz_clean as $delFile) {
  83. if(file_exists($delFile)){
  84. if(is_file($delFile)){
  85. JFile::delete($delFile);
  86. } else
  87. if(is_dir($delFile)){
  88. JFolder::delete($delFile);
  89. }
  90. }
  91. }
  92. $prepare_queries[] = 'SET FOREIGN_KEY_CHECKS=0';
  93. $prepare_queries[] = 'SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"';
  94. $prepare_queries[] = 'DROP TABLE IF EXISTS `#__virtuemart_magiczoomplus_config`';
  95. $prepare_queries[] = 'DROP TABLE IF EXISTS `#__virtuemart_mz_product_files`';
  96. $prepare_queries[] = 'DROP TABLE IF EXISTS `#__virtuemart_mz_product_hotspots`';
  97. //if(JArchive::extract($mz_modFile,$mz_modDstPath)) {
  98. if(mz_copyModuleFiles($mz_modFile,$mz_modDstPath)) {
  99. $msg[]='Magic Zoom Plus v4.4.43 [v1.2.17:v4.0.25] frontend module installed successfuly';
  100. $prepare_queries[] = 'DELETE FROM `#__modules_menu` WHERE `moduleid` = (SELECT id FROM `#__modules` WHERE `module` = \'mod_virtuemart_magiczoomplus\')';
  101. $prepare_queries[] = 'DELETE FROM `#__modules` WHERE `module` = \'mod_virtuemart_magiczoomplus\'';
  102. $sample_data_insert[] = 'INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `enabled`, `protected`, `access`, `client_id`, `params`) VALUES
  103. (\'Magic Zoom Plus v4.4.43 [v1.2.17:v4.0.25] module for Joomla with VirtueMart\', \'module\', \'mod_virtuemart_magiczoomplus\', \'\', 1, 0, 0, 0, \'\')';
  104. $sample_data_insert[] = 'INSERT INTO `#__modules` (`title`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`) VALUES
  105. (\'Magic Zoom Plus v4.4.43 [v1.2.17:v4.0.25] module for Joomla with VirtueMart\', \'\', 0, \'' . ( $jm17 ? 'position-3' : 'left') . '\', 0, NOW(), 1, \'mod_virtuemart_magiczoomplus\', 1, 0, \'\', 0)';
  106. $sample_data_insert[] = 'INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(),0)';
  107. } else {
  108. $msg[]="Error installing Magic Zoom Plus v4.4.43 [v1.2.17:v4.0.25] frontend module. Please try to install it manualy ($mz_modFile)";
  109. }
  110. //End of Magic Zoom Plus frontend module installation
  111. //End
  112. $prepare_queries[] = 'SET FOREIGN_KEY_CHECKS=0';
  113. $prepare_queries[] = 'SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"';
  114. $create_table_queries[] = 'CREATE TABLE IF NOT EXISTS `#__virtuemart_magiczoomplus_config` (
  115. `id` int(11) NOT NULL auto_increment COMMENT \'default profile should have id = 1\',
  116. `profile` varchar(32) character set utf8 NOT NULL,
  117. `config` text character set utf8 NOT NULL,
  118. PRIMARY KEY (`id`)
  119. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0';
  120. $create_table_queries[] = 'CREATE TABLE IF NOT EXISTS `#__virtuemart_mz_product_files` (
  121. `file_id` int(11) NOT NULL,
  122. `is_alternate` tinyint(1) NOT NULL,
  123. `advanced_option` varchar(1023) NOT NULL,
  124. PRIMARY KEY (`file_id`)
  125. ) ENGINE=InnoDB DEFAULT CHARSET=utf8';
  126. $create_table_queries[] = 'CREATE TABLE IF NOT EXISTS `#__virtuemart_mz_product_hotspots` (
  127. `id` int(11) NOT NULL auto_increment,
  128. `product_id` int(11) NOT NULL,
  129. `file_id` int(19) default NULL,
  130. `linked_file_id` int(19) default NULL,
  131. `mode` varchar(32) character set utf8 NOT NULL,
  132. `x1` decimal(4,4) NOT NULL,
  133. `y1` decimal(4,4) NOT NULL,
  134. `x2` decimal(4,4) NOT NULL,
  135. `y2` decimal(4,4) NOT NULL,
  136. `option` varchar(256) character set utf8 default NULL,
  137. `active` tinyint(1) NOT NULL default 0,
  138. PRIMARY KEY (`id`),
  139. KEY `file_id` (`file_id`),
  140. KEY `linked_file_id` (`linked_file_id`)
  141. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ';
  142. $alter_table_queries[] = 'ALTER TABLE `#__virtuemart_mz_product_hotspots`
  143. ADD CONSTRAINT `#__virtuemart_mz_product_hotspots_ibfk_2` FOREIGN KEY (`file_id`) REFERENCES `#__virtuemart_mz_product_files` (`file_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  144. ADD CONSTRAINT `#__virtuemart_mz_product_hotspots_ibfk_1` FOREIGN KEY (`linked_file_id`) REFERENCES `#__virtuemart_mz_product_files` (`file_id`) ON DELETE CASCADE ON UPDATE CASCADE';
  145. $sample_data_insert[] = "INSERT IGNORE INTO `#__virtuemart_magiczoomplus_config` (`id`, `profile`, `config`) VALUES
  146. (1, 'default', ''),
  147. (2, 'browse', 'show-message:No;zoom-position:inner;click-to-activate:true;message:Click to zoom;multiple-images:No'),
  148. (3, 'details', 'enable-effect:Zoom & Expand;'),
  149. (4, 'latest', 'show-message:No;opacity-reverse:true;use-original-vm-thumbnails:Yes'),
  150. (5, 'featured', 'show-message:No;opacity-reverse:true;use-original-vm-thumbnails:Yes'),
  151. (6, 'random', 'show-message:No;opacity-reverse:true;use-original-vm-thumbnails:Yes'),
  152. (7, 'custom', '')";
  153. $end_queries[] = 'SET FOREIGN_KEY_CHECKS=1';
  154. $queries = array_merge($prepare_queries,$create_table_queries,$alter_table_queries,$sample_data_insert,$end_queries);
  155. $db = JFactory::getDBO();
  156. foreach($queries as $q) {
  157. $db->setQuery($q);
  158. $db->query();
  159. }
  160. JFile::move(__FILE__, dirname(__FILE__).DS.'install.un.php');
  161. if(defined('_JEXEC')) {
  162. JFile::move(dirname(__FILE__).DS.'magiczoomplus_10.xml', dirname(__FILE__).DS.'magiczoomplus_10_xml.back');
  163. }
  164. echo "<h2>Magic Zoom Plus component installed successfully.</h2>";
  165. echo '<p>'.join("</p><p>",$msg).'</p>';
  166. echo "<h2>Press F5 to refresh the page.</h2>";
  167. break;
  168. case 'uninstall';
  169. $tables = array('mz_product_hotspots','mz_product_files','magiczoomplus_config');
  170. //if VirtueMart is still installed using their DB class
  171. if(class_exists('ps_DB')) {
  172. $db = new ps_DB;
  173. $dbvmprefix = '#__virtuemart';
  174. $dbprefix = '#__';
  175. } else if(class_exists('JFactory')) {
  176. //if Joomla 1.5
  177. $db = JFactory::getDBO();
  178. $CONFIG = new JConfig();
  179. if($vm2) {
  180. $dbvmprefix = $CONFIG->dbprefix.'virtuemart';
  181. } else {
  182. $dbvmprefix = $CONFIG->dbprefix.'vm';
  183. }
  184. $dbprefix = $CONFIG->dbprefix;
  185. } else {
  186. //if Joomla 1.0.x
  187. global $database, $mosConfig_dbprefix;
  188. $db = $database;
  189. $dbvmprefix = $mosConfig_dbprefix.'vm';
  190. $dbprefix = $mosConfig_dbprefix;
  191. }
  192. foreach($tables as $t) {
  193. $db->setQuery( "DROP TABLE `{$dbvmprefix}_{$t}`;" );
  194. $db->query();
  195. }
  196. $db->setQuery("SELECT id FROM `{$dbprefix}modules` WHERE `module` = 'mod_virtuemart_magiczoomplus'");
  197. $db->query();
  198. $module_id = $db->loadResult();
  199. $db->setQuery("SELECT extension_id FROM `{$dbprefix}extensions` WHERE `element` = 'mod_virtuemart_magiczoomplus'");
  200. $db->query();
  201. $element_id = $db->loadResult();
  202. $mz_modDstPath = join(DS,array(dirname(__FILE__),'..','..','..','modules','mod_virtuemart_magiczoomplus'));
  203. if($module_id && JFolder::delete($mz_modDstPath)) {
  204. $db->setQuery("DELETE FROM `{$dbprefix}modules` WHERE `id` = $module_id");
  205. $db->query();
  206. $db->setQuery("DELETE FROM `{$dbprefix}extensions` WHERE `extension_id` = $element_id");
  207. $db->query();
  208. //$db->setQuery("SELECT id FROM `{$dbprefix}modules_menu` WHERE `moduleid` = $module_id");
  209. $db->setQuery("DELETE FROM `{$dbprefix}modules_menu` WHERE `moduleid` = $module_id");
  210. $db->query();
  211. echo "<h2>Magic Zoom Plus component uninstalled. Frontend module removed</h2>";
  212. } else {
  213. echo "<h2>Magic Zoom Plus component uninstalled, please uninstall 'Magic Zoom Plus' module manualy.</h2>";
  214. }
  215. break;
  216. default:
  217. echo "<h2>Installation mode is not set. Nothing done.</h2>";
  218. break;
  219. }