Revision 1916
Added by Dietmar over 11 years ago
branches/2.8.x/CHANGELOG | ||
---|---|---|
12 | 12 |
=============================================================================== |
13 | 13 |
|
14 | 14 |
|
15 |
07 Jun-2013 Build 1916 Dietmar Woellbrink (Luisehahne) |
|
16 |
! /modules/droplets/ set to version 1.3.0 |
|
17 |
installing module with sql import |
|
18 |
make upgrade.php compatible with upgrade-scrip.php |
|
15 | 19 |
07 Jun-2013 Build 1915 Dietmar Woellbrink (Luisehahne) |
16 | 20 |
! recoding /modules/code/add.php with exception |
17 | 21 |
07 Jun-2013 Build 1914 Dietmar Woellbrink (Luisehahne) |
branches/2.8.x/wb/admin/interface/version.php | ||
---|---|---|
51 | 51 |
|
52 | 52 |
// check if defined to avoid errors during installation (redirect to admin panel fails if PHP error/warnings are enabled) |
53 | 53 |
if(!defined('VERSION')) define('VERSION', '2.8.3'); |
54 |
if(!defined('REVISION')) define('REVISION', '1915');
|
|
54 |
if(!defined('REVISION')) define('REVISION', '1916');
|
|
55 | 55 |
if(!defined('SP')) define('SP', ''); |
branches/2.8.x/wb/modules/droplets/info.php | ||
---|---|---|
5 | 5 |
* @package droplet |
6 | 6 |
* @author Ruud Eisinga (Ruud) John (PCWacht) |
7 | 7 |
* @author WebsiteBaker Project |
8 |
* @copyright 2004-2009, Ryan Djurovich |
|
9 |
* @copyright 2009-2011, Website Baker Org. e.V. |
|
10 |
* @link http://www.websitebaker2.org/ |
|
8 |
* @copyright 2009-2013, Website Baker Org. e.V. |
|
9 |
* @link http://www.websitebaker.org/ |
|
11 | 10 |
* @license http://www.gnu.org/licenses/gpl.html |
12 | 11 |
* @platform WebsiteBaker 2.8.x |
13 | 12 |
* @requirements PHP 5.2.2 and higher |
14 | 13 |
* @version $Id$ |
15 |
* @filesource $HeadURL$
|
|
14 |
* @filesource $HeadURL$
|
|
16 | 15 |
* @lastmodified $Date$ |
17 | 16 |
* |
18 | 17 |
*/ |
... | ... | |
28 | 27 |
$module_directory = 'droplets'; |
29 | 28 |
$module_name = 'Droplets'; |
30 | 29 |
$module_function = 'tool'; |
31 |
$module_version = '1.2.0';
|
|
30 |
$module_version = '1.3.0';
|
|
32 | 31 |
$module_platform = '2.8.x'; |
33 | 32 |
$module_author = 'Ruud and pcwacht'; |
34 | 33 |
$module_license = 'GNU General Public License'; |
branches/2.8.x/wb/modules/droplets/droplets.functions.php | ||
---|---|---|
1 |
<?php |
|
2 |
/** |
|
3 |
* |
|
4 |
* @category module |
|
5 |
* @package droplet |
|
6 |
* @author Ruud Eisinga (Ruud) John (PCWacht) |
|
7 |
* @author WebsiteBaker Project |
|
8 |
* @copyright 2009-2013, WebsiteBaker Org. e.V. |
|
9 |
* @link http://www.websitebaker.org/ |
|
10 |
* @license http://www.gnu.org/licenses/gpl.html |
|
11 |
* @platform WebsiteBaker 2.8.x |
|
12 |
* @requirements PHP 5.2.2 and higher |
|
13 |
* @version $Id: upgrade.php 1717 2012-08-29 14:09:09Z Luisehahne $ |
|
14 |
* @filesource $HeadURL: svn://isteam.dynxs.de/wb_svn/wb280/branches/2.8.x/wb/modules/droplets/upgrade.php $ |
|
15 |
* @lastmodified $Date: 2012-08-29 16:09:09 +0200 (Mi, 29. Aug 2012) $ |
|
16 |
* |
|
17 |
*/ |
|
18 |
/* -------------------------------------------------------- */ |
|
19 |
// Must include code to stop this file being accessed directly |
|
20 |
if(!defined('WB_PATH')) { |
|
21 |
|
|
22 |
require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php'); |
|
23 |
throw new IllegalFileException(); |
|
24 |
} |
|
25 |
|
|
26 |
/* -------------------------------------------------------- */ |
|
27 |
|
|
28 |
function prepareDropletToFile($aDroplet) { |
|
29 |
$retVal = ''; |
|
30 |
$sDescription = '//:'.($aDroplet['description']!='') ? $aDroplet['description']: 'Desription'; |
|
31 |
$sComments = ''; |
|
32 |
$aComments = explode("\n",$aDroplet['comments']); |
|
33 |
$sCode = ''; |
|
34 |
$aCode = explode("\n",$aDroplet['code']); |
|
35 |
if( (sizeof($aComments)) ){ |
|
36 |
foreach($aComments AS $isComment) { |
|
37 |
$sComments .= '//:'.$isComment; |
|
38 |
} |
|
39 |
} else { |
|
40 |
$sComments .= '//:use [['.$aDroplet['name'].']]'; |
|
41 |
} |
|
42 |
if( (sizeof($aCode)) ){ |
|
43 |
foreach($aCode AS $isCode) { |
|
44 |
$sCode .= $isCode; |
|
45 |
} |
|
46 |
} |
|
47 |
|
|
48 |
$retVal = $sDescription."\n".$sComments."\n".$sCode; |
|
49 |
return $retVal; |
|
50 |
} |
|
51 |
// |
|
52 |
function backupDropletFromDatabase($sTmpDir) { |
|
53 |
$retVal = ''; |
|
54 |
$database=WbDatabase::getInstance(); |
|
55 |
$sql = 'SELECT `name`,`description`,`comments`,`code` FROM `'.$database->TablePrefix.'mod_droplets` ' |
|
56 |
. 'ORDER BY `modified_when` DESC'; |
|
57 |
if( $oRes = $database->query($sql) ) { |
|
58 |
while($aDroplet = $oRes->fetchRow(MYSQL_ASSOC)) { |
|
59 |
$sData = prepareDropletToFile($aDroplet); |
|
60 |
$sFileName = $sTmpDir.$aDroplet['name'].'.php'; |
|
61 |
if(file_put_contents($sFileName,$sData)) { |
|
62 |
$retVal .= $sFileName.','; |
|
63 |
} |
|
64 |
} |
|
65 |
|
|
66 |
} |
|
67 |
return $retVal; |
|
68 |
} |
|
69 |
|
|
70 |
|
|
71 |
function insertDropletFile($aDropletFiles,&$msg,$bOverwriteDroplets,$admin) |
|
72 |
{ |
|
73 |
$OK = ' <span style="color:#006400; font-weight:bold;">OK</span> '; |
|
74 |
$FAIL = ' <span style="color:#ff0000; font-weight:bold;">FAILED</span> '; |
|
75 |
$database=WbDatabase::getInstance(); |
|
76 |
foreach ($aDropletFiles as $sDropletFile) { |
|
77 |
$msgSql = ''; |
|
78 |
$extraSql = ''; |
|
79 |
$sDropletName = pathinfo ($sDropletFile, PATHINFO_FILENAME); |
|
80 |
$sql = 'SELECT `code` FROM `'.$database->TablePrefix.'mod_droplets` WHERE `name` LIKE "'.$sDropletName.'" '; |
|
81 |
if( !($database->get_one($sql)) ) { |
|
82 |
$sql = 'INSERT INTO `'.$database->TablePrefix.'mod_droplets`'; |
|
83 |
$msgSql = 'INSERT Droplet `'.$sDropletName.'` INTO`'.$database->TablePrefix.'mod_droplets`'." $OK"; |
|
84 |
} elseif ($bOverwriteDroplets) { |
|
85 |
$sql = 'UPDATE `'.$database->TablePrefix.'mod_droplets` '; |
|
86 |
$extraSql = 'WHERE `name` = \''.$sDropletName.'\' '; |
|
87 |
$msgSql = 'UPDATE Droplet `'.$sDropletName.'` INTO`'.$database->TablePrefix.'mod_droplets`'." $OK"; |
|
88 |
} |
|
89 |
// get description, comments and oode |
|
90 |
$sDropletFile = preg_replace('/^\xEF\xBB\xBF/', '', $sDropletFile); |
|
91 |
if( ($msgSql!='') && ($aFileData = file($sDropletFile)) ) { |
|
92 |
$bDescription = false; |
|
93 |
$bComments = false; |
|
94 |
$bCode = false; |
|
95 |
$sDescription = ''; |
|
96 |
$sComments = ''; |
|
97 |
$sCode = ''; |
|
98 |
$sPattern = "#//:#im"; |
|
99 |
while ( sizeof($aFileData) > 0 ) { |
|
100 |
$sSqlLine = trim(array_shift($aFileData)); |
|
101 |
$isNotCode = (bool)preg_match($sPattern, $sSqlLine); |
|
102 |
if( $isNotCode==true ) { |
|
103 |
// first step line is description |
|
104 |
if($bDescription==false) { |
|
105 |
$sDescription .= str_replace('//:','',$sSqlLine); |
|
106 |
$bDescription = true; |
|
107 |
} else { |
|
108 |
// second step fill comments |
|
109 |
$sComments .= str_replace('//:','',$sSqlLine).PHP_EOL; |
|
110 |
} |
|
111 |
} else { |
|
112 |
// third step fill code |
|
113 |
$sCode .= str_replace('//:','',$sSqlLine).PHP_EOL; |
|
114 |
} |
|
115 |
} |
|
116 |
$iModifiedWhen = time(); |
|
117 |
$iModifiedBy = (method_exists($admin, 'get_user_id') && ($admin->get_user_id()!=null) ? $admin->get_user_id() : 1); |
|
118 |
$sql .= 'SET `name` =\''.$sDropletName.'\',' |
|
119 |
. '`description` =\''.$sDescription.'\',' |
|
120 |
. '`comments` =\''.$sComments.'\',' |
|
121 |
. '`code` =\''.$database->escapeString($sCode).'\',' |
|
122 |
. '`modified_when` = '.$iModifiedWhen.',' |
|
123 |
. '`modified_by` = '.$iModifiedBy.',' |
|
124 |
. '`active` = 1' |
|
125 |
. $extraSql; |
|
126 |
} |
|
127 |
if( $database->query($sql) ) { |
|
128 |
if( $msgSql!='' ) { $msg[] = $msgSql; } |
|
129 |
} else { |
|
130 |
$msg[] = $database->get_error(); |
|
131 |
} |
|
132 |
} |
|
133 |
return; |
|
134 |
} |
|
135 |
/* -------------------------------------------------------- */ |
|
136 |
|
|
137 |
function isDropletFile($sFileName) |
|
138 |
{ |
|
139 |
$bRetval = false; |
|
140 |
$matches = array(); |
|
141 |
if(($sFileData = file_get_contents($sFileName)) !== false) |
|
142 |
{ |
|
143 |
// $sPattern = "#(?://:)+[\w]*\w?#is"; |
|
144 |
// $sPattern = "#//:[\w].+#imS"; |
|
145 |
$sPattern = "#//:#im"; |
|
146 |
$bRetval = (bool)preg_match_all($sPattern, $sFileData, $matches, PREG_SET_ORDER); |
|
147 |
} |
|
148 |
return $bRetval; |
|
149 |
} |
|
150 |
|
|
151 |
/* -------------------------------------------------------- */ |
|
152 |
function getDropletFromFiles($sBaseDir) |
|
153 |
{ |
|
154 |
$aRetval = array(); |
|
155 |
$oIterator = new DirectoryIterator($sBaseDir); |
|
156 |
foreach ($oIterator as $fileInfo) { |
|
157 |
// iterate the directory |
|
158 |
if($fileInfo->isDot()) continue; |
|
159 |
$sFileName = rtrim(str_replace('\\', '/', $fileInfo->getPathname()), '/'); |
|
160 |
if($fileInfo->isFile()) { |
|
161 |
// only droplets are interesting |
|
162 |
if((file_exists($sFileName) && isDropletFile($sFileName))) { |
|
163 |
// if dir has no corresponding accessfile remember it |
|
164 |
$aRetval[] = $sFileName; |
|
165 |
} |
|
166 |
} |
|
167 |
} |
|
168 |
return $aRetval; |
|
169 |
} |
branches/2.8.x/wb/modules/droplets/install.php | ||
---|---|---|
5 | 5 |
* @package droplet |
6 | 6 |
* @author Ruud Eisinga (Ruud) John (PCWacht) |
7 | 7 |
* @author WebsiteBaker Project |
8 |
* @copyright 2004-2009, Ryan Djurovich |
|
9 |
* @copyright 2009-2011, Website Baker Org. e.V. |
|
10 |
* @link http://www.websitebaker2.org/ |
|
8 |
* @copyright 2009-2013, WebsiteBaker Org. e.V. |
|
9 |
* @link http://www.websitebaker.org/ |
|
11 | 10 |
* @license http://www.gnu.org/licenses/gpl.html |
12 | 11 |
* @platform WebsiteBaker 2.8.x |
13 | 12 |
* @requirements PHP 5.2.2 and higher |
14 | 13 |
* @version $Id$ |
15 |
* @filesource $HeadURL$
|
|
14 |
* @filesource $HeadURL$
|
|
16 | 15 |
* @lastmodified $Date$ |
17 | 16 |
* |
18 | 17 |
*/ |
19 | 18 |
/* -------------------------------------------------------- */ |
20 | 19 |
// Must include code to stop this file being accessed directly |
21 | 20 |
if(!defined('WB_PATH')) { |
22 |
|
|
23 | 21 |
require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php'); |
24 | 22 |
throw new IllegalFileException(); |
25 |
} |
|
26 |
/* -------------------------------------------------------- */ |
|
27 |
|
|
28 |
// global $admin; |
|
29 |
|
|
23 |
} else { |
|
24 |
if(!function_exists('insertDropletFile')) { require('droplets.functions.php'); } |
|
25 |
$database = WbDatabase::getInstance(); |
|
26 |
$sError = ''; |
|
30 | 27 |
$msg = array(); |
31 |
$sql = 'DROP TABLE IF EXISTS `'.TABLE_PREFIX.'mod_droplets` '; |
|
32 |
if( !$database->query($sql) ) { |
|
33 |
$msg[] = $database->get_error(); |
|
28 |
$sBaseDir = realpath(dirname(__FILE__).'/example/'); |
|
29 |
$sBaseDir = rtrim(str_replace('\\', '/', $sBaseDir), '/').'/'; |
|
30 |
// Create table |
|
31 |
if($database->SqlImport(dirname(__FILE__).'/sql/mod_droplet.sql','',false)){ |
|
32 |
$aDropletFiles = getDropletFromFiles($sBaseDir); |
|
33 |
$bOverwriteDroplets = true; |
|
34 |
insertDropletFile($aDropletFiles,$msg,$bOverwriteDroplets,$admin); |
|
34 | 35 |
} |
35 | 36 |
|
36 |
$sql = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_droplets` ( '; |
|
37 |
$sql .= '`id` INT NOT NULL auto_increment, '; |
|
38 |
$sql .= '`name` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, '; |
|
39 |
$sql .= '`code` LONGTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL , '; |
|
40 |
$sql .= '`description` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, '; |
|
41 |
$sql .= '`modified_when` INT NOT NULL default \'0\', '; |
|
42 |
$sql .= '`modified_by` INT NOT NULL default \'0\', '; |
|
43 |
$sql .= '`active` INT NOT NULL default \'0\', '; |
|
44 |
$sql .= '`admin_edit` INT NOT NULL default \'0\', '; |
|
45 |
$sql .= '`admin_view` INT NOT NULL default \'0\', '; |
|
46 |
$sql .= '`show_wysiwyg` INT NOT NULL default \'0\', '; |
|
47 |
$sql .= '`comments` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, '; |
|
48 |
$sql .= 'PRIMARY KEY ( `id` ) '; |
|
49 |
$sql .= ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci'; |
|
50 |
if( !$database->query($sql) ) { |
|
51 |
$msg[] = $database->get_error(); |
|
52 |
} |
|
53 |
|
|
54 |
//add all droplets from the droplet subdirectory |
|
55 |
$folder=opendir(WB_PATH.'/modules/droplets/example/.'); |
|
56 |
$names = array(); |
|
57 |
while ($file = readdir($folder)) { |
|
58 |
$ext=strtolower(substr($file,-4)); |
|
59 |
if ($ext==".php"){ |
|
60 |
if ($file<>"index.php" ) { |
|
61 |
$names[count($names)] = $file; |
|
62 |
} |
|
63 |
} |
|
64 |
} |
|
65 |
closedir($folder); |
|
66 |
|
|
67 |
foreach ($names as $dropfile) |
|
68 |
{ |
|
69 |
$droplet = addslashes(getDropletCodeFromFile($dropfile)); |
|
70 |
if ($droplet != "") |
|
71 |
{ |
|
72 |
$description = "Example Droplet"; |
|
73 |
$comments = "Example Droplet"; |
|
74 |
$cArray = explode("\n",$droplet); |
|
75 |
if (substr($cArray[0],0,3) == "//:") { |
|
76 |
$description = trim(substr($cArray[0],3)); |
|
77 |
array_shift ( $cArray ); |
|
78 |
} |
|
79 |
if (substr($cArray[0],0,3) == "//:") { |
|
80 |
$comments = trim(substr($cArray[0],3)); |
|
81 |
array_shift ( $cArray ); |
|
82 |
} |
|
83 |
$droplet = implode ( "\n", $cArray ); |
|
84 |
$name = substr($dropfile,0,-4); |
|
85 |
$modified_when = time(); |
|
86 |
$modified_by = (method_exists($admin, 'get_user_id') && ($admin->get_user_id()!=null) ? $admin->get_user_id() : 1); |
|
87 |
$sql = 'INSERT INTO `'.TABLE_PREFIX.'mod_droplets` SET '; |
|
88 |
$sql .= '`name` = \''.$name.'\', '; |
|
89 |
$sql .= '`code` = \''.$droplet.'\', '; |
|
90 |
$sql .= '`description` = \''.$description.'\', '; |
|
91 |
$sql .= '`comments` = \''.$comments.'\', '; |
|
92 |
$sql .= '`active` = 1, '; |
|
93 |
$sql .= '`modified_when` = '.$modified_when.', '; |
|
94 |
$sql .= '`modified_by` = '.$modified_by; |
|
95 |
if( !$database->query($sql) ) { |
|
96 |
$msg[] = $database->get_error(); |
|
97 |
} |
|
98 |
// do not output anything if this script is called during fresh installation |
|
99 |
// if (method_exists($admin, 'get_user_id')) echo "Droplet import: $name<br/>"; |
|
100 |
} |
|
101 |
} |
|
102 |
|
|
103 |
function getDropletCodeFromFile ( $dropletfile ) { |
|
104 |
$data = ''; |
|
105 |
$filename = WB_PATH."/modules/droplets/example/".$dropletfile; |
|
106 |
if (file_exists($filename)) { |
|
107 |
$filehandle = fopen ($filename, "r"); |
|
108 |
$data = fread ($filehandle, filesize ($filename)); |
|
109 |
fclose($filehandle); |
|
110 |
// unlink($filename); doesnt work in unix |
|
111 |
} |
|
112 |
return $data; |
|
113 |
} |
|
37 |
} |
branches/2.8.x/wb/modules/droplets/sql/mod_droplet.sql | ||
---|---|---|
1 |
-- phpMyAdmin SQL Dump |
|
2 |
-- Erstellungszeit: 15. Mrz 2013 um 18:21 |
|
3 |
-- Server-Version: 5.5.27 |
|
4 |
-- |
|
5 |
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; |
|
6 |
-- -------------------------------------------------------- |
|
7 |
-- Database structure for WebsiteBaker core |
|
8 |
-- |
|
9 |
-- Replacements: {TABLE_PREFIX}, {TABLE_ENGINE}, {TABLE_COLLATION} |
|
10 |
-- |
|
11 |
-- -------------------------------------------------------- |
|
12 |
-- |
|
13 |
-- Tabellenstruktur für Tabelle `{TABLE_PREFIX}mod_droplets` |
|
14 |
-- |
|
15 |
DROP TABLE IF EXISTS `{TABLE_PREFIX}mod_droplets`; |
|
16 |
CREATE TABLE IF NOT EXISTS `{TABLE_PREFIX}mod_droplets` ( |
|
17 |
`id` int(11) NOT NULL AUTO_INCREMENT, |
|
18 |
`name` varchar(32){TABLE_COLLATION} NOT NULL DEFAULT '', |
|
19 |
`code` longtext{TABLE_COLLATION} NOT NULL DEFAULT '', |
|
20 |
`description` text{TABLE_COLLATION} NOT NULL DEFAULT '', |
|
21 |
`modified_when` int(11) NOT NULL DEFAULT '0', |
|
22 |
`modified_by` int(11) NOT NULL DEFAULT '0', |
|
23 |
`active` int(11) NOT NULL DEFAULT '0', |
|
24 |
`admin_edit` int(11) NOT NULL DEFAULT '0', |
|
25 |
`admin_view` int(11) NOT NULL DEFAULT '0', |
|
26 |
`show_wysiwyg` int(11) NOT NULL DEFAULT '0', |
|
27 |
`comments` text{TABLE_COLLATION} NOT NULL DEFAULT '', |
|
28 |
PRIMARY KEY (`id`) |
|
29 |
){TABLE_ENGINE}; |
|
30 |
-- EndOfFile |
branches/2.8.x/wb/modules/droplets/backup_droplets.php | ||
---|---|---|
4 | 4 |
* @category module |
5 | 5 |
* @package droplet |
6 | 6 |
* @author Ruud Eisinga (Ruud) John (PCWacht), WebsiteBaker Project |
7 |
* @copyright 2009-2012, WebsiteBaker Org. e.V.
|
|
8 |
* @link http://www.websitebaker.org/
|
|
7 |
* @copyright 2009-2013, WebsiteBaker Org. e.V.
|
|
8 |
* @link http://www.websitebaker.org/
|
|
9 | 9 |
* @license http://www.gnu.org/licenses/gpl.html |
10 | 10 |
* @platform WebsiteBaker 2.8.x |
11 | 11 |
* @requirements PHP 5.2.2 and higher |
12 | 12 |
* @version $Id$ |
13 |
* @filesource $HeadURL$
|
|
13 |
* @filesource $HeadURL$
|
|
14 | 14 |
* @lastmodified $Date$ |
15 | 15 |
* |
16 | 16 |
*/ |
... | ... | |
20 | 20 |
// tool_edit.php |
21 | 21 |
require_once('../../config.php'); |
22 | 22 |
require_once(WB_PATH.'/framework/class.admin.php'); |
23 |
if(!function_exists('insertDropletFile')) { require('droplets.functions.php'); } |
|
23 | 24 |
|
24 | 25 |
require_once(WB_PATH.'/framework/functions.php'); |
25 | 26 |
// create admin object depending on platform (admin tools were moved out of settings with WB 2.7) |
... | ... | |
46 | 47 |
$OK = ' <span style="color:#006400; font-weight:bold;">OK</span> '; |
47 | 48 |
$FAIL = ' <span style="color:#ff0000; font-weight:bold;">FAILED</span> '; |
48 | 49 |
$sBackupName = strftime('%Y%m%d_%H%M%S', time()+ TIMEZONE ).'_droplets.zip'; |
49 |
$temp_dir = '/temp/droplets/';
|
|
50 |
$temp_file = $temp_dir.$sBackupName;
|
|
51 |
|
|
52 |
if(is_writeable(dirname(WB_PATH.$temp_dir))) {
|
|
53 |
rm_full_dir ( WB_PATH.$temp_dir );
|
|
50 |
$tempDir = '/temp/droplets/';
|
|
51 |
$tempFile = $tempDir.$sBackupName;
|
|
52 |
// delete old backup |
|
53 |
if(is_writeable(dirname(WB_PATH.$tempDir))) {
|
|
54 |
rm_full_dir ( WB_PATH.$tempDir );
|
|
54 | 55 |
} |
55 | 56 |
|
56 |
/* |
|
57 |
// make the temporary working directory |
|
58 |
if(!make_dir(WB_PATH.$temp_dir, octdec('0777') )){ |
|
59 |
// $admin->print_error($MESSAGE['MEDIA_DIR_NOT_MADE'], $module_edit_link); |
|
60 |
} |
|
61 |
*/ |
|
62 |
|
|
63 |
$msg = createFolderProtectFile(rtrim( WB_PATH.$temp_dir,'/') ); |
|
57 |
$msg = createFolderProtectFile(rtrim( WB_PATH.$tempDir,'/') ); |
|
64 | 58 |
if(sizeof($msg)) { |
65 | 59 |
print '<h4 class="warning">'; |
66 | 60 |
echo implode('<br />',$msg).'<br />'.$MESSAGE['MEDIA_DIR_NOT_MADE'].'<br />'; |
67 | 61 |
print '</h4>'; |
68 | 62 |
} |
69 |
|
|
70 |
$sFilesToZip = ''; |
|
71 |
$sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_droplets` '; |
|
72 |
$sql .= 'ORDER BY `modified_when` DESC'; |
|
73 |
|
|
74 |
$query_droplets = $database->query($sql); |
|
75 |
while($droplet = $query_droplets->fetchRow()) { |
|
76 |
echo 'Saving: '.$droplet["name"].'.php'; |
|
77 |
$sFile = $droplet["name"].'.php'; |
|
78 |
if($fh = fopen(WB_PATH.$temp_dir.$sFile, 'w')) |
|
79 |
{ |
|
80 |
fwrite($fh, '//:'.$droplet['description']."\n"); |
|
81 |
fwrite($fh, '//:'.str_replace("\n"," ",$droplet['comments'])."\n"); |
|
82 |
fwrite($fh, $droplet['code']); |
|
83 |
fclose($fh); |
|
84 |
echo " $OK<br />"; |
|
85 |
} else { |
|
86 |
echo " $FAIL<br />"; } |
|
87 |
$sFilesToZip .= WB_PATH.$temp_dir.$sFile.','; |
|
88 |
} |
|
89 |
|
|
63 |
$sFilesToZip = backupDropletFromDatabase(WB_PATH.$tempDir); |
|
64 |
// remove last comma |
|
90 | 65 |
$sFilesToZip = rtrim($sFilesToZip,','); |
91 | 66 |
|
92 | 67 |
echo '<br />Create archive: <strong>'.$sBackupName.'</strong><br />'; |
93 | 68 |
|
94 |
require_once(WB_PATH.'/include/pclzip/pclzip.lib.php');
|
|
95 |
$archive = new PclZip(WB_PATH.$temp_file);
|
|
69 |
if( !class_exists('PclZip',false) ) { require(WB_PATH.'/include/pclzip/pclzip.lib.php'); }
|
|
70 |
$archive = new PclZip(WB_PATH.$tempFile);
|
|
96 | 71 |
|
97 |
$file_list = $archive->create($sFilesToZip , PCLZIP_OPT_REMOVE_ALL_PATH ); |
|
98 |
if ($file_list == 0){ |
|
72 |
$archiveList = $archive->create($sFilesToZip , PCLZIP_OPT_REMOVE_ALL_PATH ); |
|
73 |
|
|
74 |
if ($archiveList == 0){ |
|
99 | 75 |
echo "Packaging error: '.$archive->errorInfo(true).'"; |
100 | 76 |
die("Error : ".$archive->errorInfo(true)); |
101 | 77 |
} |
102 |
elseif(is_readable(WB_PATH.$temp_file)) { |
|
103 |
echo '<br /><br />Backup created - <a href="'.WB_URL.$temp_file.'">Download</a>'; |
|
78 |
elseif(is_readable(WB_PATH.$tempFile)) { |
|
79 |
echo '<br /><ol>'; |
|
80 |
foreach($archiveList AS $key=>$aDroplet ) { |
|
81 |
echo '<li>Backup <strong> '.$aDroplet['stored_filename'].'</strong></li>'; |
|
82 |
} |
|
83 |
echo '</ol><br /><br />Backup created - <a href="'.WB_URL.$tempFile.'">Download</a>'; |
|
104 | 84 |
} |
105 | 85 |
else { |
106 | 86 |
echo '<br /><br />Backup not created - <a href="'.$module_edit_link.'">'.$TEXT['BACK'].'</a>'; |
branches/2.8.x/wb/modules/droplets/upgrade.php | ||
---|---|---|
5 | 5 |
* @package droplet |
6 | 6 |
* @author Ruud Eisinga (Ruud) John (PCWacht) |
7 | 7 |
* @author WebsiteBaker Project |
8 |
* @copyright 2004-2009, Ryan Djurovich |
|
9 |
* @copyright 2009-2011, Website Baker Org. e.V. |
|
10 |
* @link http://www.websitebaker2.org/ |
|
8 |
* @copyright 2009-2013, WebsiteBaker Org. e.V. |
|
9 |
* @link http://www.websitebaker.org/ |
|
11 | 10 |
* @license http://www.gnu.org/licenses/gpl.html |
12 | 11 |
* @platform WebsiteBaker 2.8.x |
13 | 12 |
* @requirements PHP 5.2.2 and higher |
14 | 13 |
* @version $Id$ |
15 |
* @filesource $HeadURL$
|
|
14 |
* @filesource $HeadURL$
|
|
16 | 15 |
* @lastmodified $Date$ |
17 | 16 |
* |
18 | 17 |
*/ |
... | ... | |
24 | 23 |
throw new IllegalFileException(); |
25 | 24 |
} |
26 | 25 |
/* -------------------------------------------------------- */ |
27 |
$database=WbDatabase::getInstance(); |
|
28 |
$table_name = TABLE_PREFIX .'mod_droplets'; |
|
29 |
$description = 'INT NOT NULL default 0 '; |
|
30 |
$database->field_add($table_name,'show_wysiwyg',$description.'AFTER `active`' ); |
|
31 |
$database->field_add($table_name,'admin_view',$description.'AFTER `active`' ); |
|
32 |
$database->field_add($table_name,'admin_edit',$description.'AFTER `active`' ); |
|
26 |
|
|
27 |
if(!function_exists('insertDropletFile')) { require('droplets.functions.php'); } |
|
28 |
|
|
29 |
function mod_droplets_upgrade($bDebug=false) { |
|
30 |
global $admin; |
|
31 |
$OK = ' <span style="color:#006400; font-weight:bold;">OK</span> '; |
|
32 |
$FAIL = ' <span style="color:#ff0000; font-weight:bold;">FAILED</span> '; |
|
33 |
$database=WbDatabase::getInstance(); |
|
34 |
$msg = array(); |
|
35 |
$callingScript = $_SERVER["SCRIPT_NAME"]; |
|
36 |
// check if upgrade startet by upgrade-script to echo a message |
|
37 |
$tmp = 'upgrade-script.php'; |
|
38 |
$globalStarted = substr_compare($callingScript, $tmp,(0-strlen($tmp)),strlen($tmp)) === 0; |
|
39 |
// check for missing tables, if true stop the upgrade |
|
40 |
$aTable = array('mod_droplets'); |
|
41 |
$aPackage = UpgradeHelper::existsAllTables($aTable); |
|
42 |
if( sizeof($aPackage) > 0){ |
|
43 |
$msg[] = 'TABLE '.implode(' missing! '.$FAIL.'<br />TABLE ',$aPackage).' missing! '.$FAIL; |
|
44 |
$msg[] = 'Droplets upgrade failed'." $FAIL"; |
|
45 |
if($globalStarted) { |
|
46 |
echo '<strong>'.implode('<br />',$msg).'</strong><br />'; |
|
47 |
} |
|
48 |
return ( ($globalStarted==true ) ? $globalStarted : $msg); |
|
49 |
} else { |
|
50 |
for($x=0; $x<sizeof($aTable);$x++) { |
|
51 |
if(($sOldType = $database->getTableEngine($database->TablePrefix.$aTable[$x]))) { |
|
52 |
if(('myisam' != strtolower($sOldType))) { |
|
53 |
if(!$database->query('ALTER TABLE `'.$database->TablePrefix.$aTable[$x].'` Engine = \'MyISAM\' ')) { |
|
54 |
$msg[] = $database->get_error(); |
|
55 |
} else{ |
|
56 |
$msg[] = 'TABLE `'.$database->TablePrefix.$aTable[$x].'` changed to Engine = \'MyISAM\''." $OK"; |
|
57 |
} |
|
58 |
} else { |
|
59 |
$msg[] = 'TABLE `'.$database->TablePrefix.$aTable[$x].'` has Engine = \'MyISAM\''." $OK"; |
|
60 |
} |
|
61 |
} else { |
|
62 |
$msg[] = $database->get_error(); |
|
63 |
} |
|
64 |
} |
|
65 |
$table_name = $database->TablePrefix.'mod_droplets'; |
|
66 |
$description = "INT NOT NULL DEFAULT '0' AFTER `active`"; |
|
67 |
$field_name = 'show_wysiwyg'; |
|
68 |
if(!$database->field_exists($table_name,$field_name)) { |
|
69 |
$database->field_add($table_name, $field_name, $description); |
|
70 |
$msg[] = 'Add field `show_wysiwyg` AFTER `active`'; |
|
71 |
} else { |
|
72 |
$msg[] = 'Field `show_wysiwyg` already exists'." $OK"; |
|
73 |
} |
|
74 |
$field_name = 'admin_view'; |
|
75 |
if(!$database->field_exists($table_name,$field_name)) { |
|
76 |
$database->field_add($table_name, $field_name, $description); |
|
77 |
$msg[] = 'Add field `admin_view` AFTER `active`'; |
|
78 |
} else { |
|
79 |
$msg[] = 'Field `admin_view` already exists'." $OK"; |
|
80 |
} |
|
81 |
$field_name = 'admin_edit'; |
|
82 |
if(!$database->field_exists($table_name,$field_name)) { |
|
83 |
$database->field_add($table_name, $field_name, $description); |
|
84 |
$msg[] = 'Add field `admin_edit` AFTER `active`'; |
|
85 |
} else { |
|
86 |
$msg[] = 'Field `admin_edit` already exists'." $OK"; |
|
87 |
} |
|
88 |
|
|
89 |
$sBaseDir = realpath(dirname(__FILE__).'/example/'); |
|
90 |
$sBaseDir = rtrim(str_replace('\\', '/', $sBaseDir), '/').'/'; |
|
91 |
$aDropletFiles = getDropletFromFiles($sBaseDir); |
|
92 |
|
|
93 |
$bOverwriteDroplets = false; |
|
94 |
insertDropletFile($aDropletFiles,$msg,$bOverwriteDroplets,$admin); |
|
95 |
// only for upgrade-script |
|
96 |
if($globalStarted) { |
|
97 |
if($bDebug) { |
|
98 |
echo '<strong>'.implode('<br />',$msg).'</strong><br />'; |
|
99 |
} |
|
100 |
} |
|
101 |
} |
|
102 |
$msg[] = 'Droplets upgrade successfull finished '; |
|
103 |
if($globalStarted) { |
|
104 |
echo "<strong>Droplets upgrade successfull finished $OK</strong><br />"; |
|
105 |
} |
|
106 |
return ( ($globalStarted==true ) ? $globalStarted : $msg); |
|
107 |
} |
|
108 |
// ------------------------------------ |
|
109 |
|
|
110 |
$bDebugModus = ((isset($bDebugModus)) ? $bDebugModus : false); |
|
111 |
if( is_array($msg = mod_droplets_upgrade($bDebugModus))) { |
|
112 |
echo '<strong>'.implode('<br />',$msg).'</strong><br />'; |
|
113 |
} |
Also available in: Unified diff
! /modules/droplets/ set to version 1.3.0
installing module with sql import
make upgrade.php compatible with upgrade-scrip.php