259 Zeilen
6.6 KiB
PHP
259 Zeilen
6.6 KiB
PHP
<?php
|
|
/**
|
|
* Project:
|
|
* Contenido Content Management System
|
|
*
|
|
* Description:
|
|
* Release toolkit
|
|
*
|
|
* Requirements:
|
|
* @con_php_req 5
|
|
*
|
|
* @package ContenidoBackendArea
|
|
* @version 0.2.1
|
|
* @author unknown
|
|
* @copyright four for business AG <www.4fb.de>
|
|
* @license http://www.contenido.org/license/LIZENZ.txt
|
|
* @link http://www.4fb.de
|
|
* @link http://www.contenido.org
|
|
*
|
|
*
|
|
*
|
|
* {@internal
|
|
* created 2005-10-06
|
|
* modified 2008-07-07, bilal arslan, added security fix
|
|
* modified 2010-05-20, Murat Purc, standardized Contenido startup and security check invocations, see [#CON-307]
|
|
*
|
|
* $Id: release.php 279 2013-11-21 14:34:53Z oldperl $:
|
|
* }}
|
|
*
|
|
*/
|
|
|
|
if (!defined('CON_FRAMEWORK')) {
|
|
die('Illegal call');
|
|
}
|
|
|
|
// Contenido startup process
|
|
include_once ('../../conlite/includes/startup.php');
|
|
|
|
cInclude("includes", "functions.database.php");
|
|
|
|
?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
|
|
<title>Contenido - Release Toolkit</title>
|
|
<style type="text/css">
|
|
body,tr,td {
|
|
background-color: #ffffff;
|
|
scrollbar-face-color:#C6C6D5;
|
|
scrollbar-highlight-color:#FFFFFF;
|
|
scrollbar-3dlight-color:#747488;
|
|
scrollbar-darkshadow-color:#000000;
|
|
scrollbar-shadow-color:#334F77;
|
|
scrollbar-arrow-color:#334F77;
|
|
scrollbar-track-color:#C7C7D6;
|
|
font-family: Verdana, Arial, Helvetica, Sans-Serif;
|
|
font-size: 11px;
|
|
color: #000000;
|
|
}
|
|
a {
|
|
color: #000099;
|
|
}
|
|
h1 {
|
|
font-family: Verdana, Arial, Helvetica, Sans-Serif;
|
|
font-size: 20px;
|
|
color: #000000;
|
|
margin-top: 0px;
|
|
}
|
|
h2 {
|
|
font-family: Verdana, Arial, Helvetica, Sans-Serif;
|
|
font-size: 15px;
|
|
color: #000000;
|
|
}
|
|
table {
|
|
border: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
text-align: left;
|
|
width: 100%;
|
|
}
|
|
td {
|
|
vertical-align: top;
|
|
}
|
|
img {
|
|
border: 0;
|
|
}
|
|
pre {
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<table>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<img src="../images/logo.gif" alt="Contenido" width="200" height="30" style="padding-right: 20px;">
|
|
<h1>Contenido - Release Toolkit</h1>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<?php
|
|
|
|
$cApiXml2Array = new cApiXml2Array();
|
|
|
|
$cApiXml2Array->loadData("release.xml");
|
|
|
|
$aReleaseInfo = $cApiXml2Array->getResult();
|
|
|
|
/* Extract version information */
|
|
$sTargetVersion = $aReleaseInfo["release"]["version"][0]["content"];
|
|
$sSourcePrefix = $aReleaseInfo["release"]["sqlfiles"][0]["@sourceprefix"];
|
|
$sTargetPrefix = $aReleaseInfo["release"]["sqlfiles"][0]["@targetprefix"];
|
|
$sLinesPerFile = $aReleaseInfo["release"]["sqlfiles"][0]["@linesperfile"];
|
|
|
|
$db = new DB_Contenido;
|
|
|
|
echo "<h2>Execute scripts and prepare file contents</h2>\n";
|
|
|
|
foreach ($aReleaseInfo["release"]["sqlfiles"][0]["rules"] as $rules)
|
|
{
|
|
$group = $rules["@group"];
|
|
|
|
$groupfiles[$group] = array();
|
|
echo "<br /><strong>Parsing group $group</strong><br />\n";
|
|
|
|
foreach ($rules["rule"] as $rule)
|
|
{
|
|
$mcount = 1;
|
|
|
|
$file = $rule["@file"];
|
|
|
|
echo " Preparing file $file<br />\n";
|
|
$prerun = "";
|
|
|
|
if (is_array($rule["prerun"]))
|
|
{
|
|
foreach ($rule["prerun"] as $preruns)
|
|
{
|
|
$sqlchunks[$group."/".$file.$mcount.".sql"][] = $preruns["content"];
|
|
$groupfiles[$group][] = $group."/".$file.$mcount.".sql";
|
|
}
|
|
}
|
|
|
|
$source = "";
|
|
|
|
if (is_array($rule["source"]))
|
|
{
|
|
foreach ($rule["source"] as $sources)
|
|
{
|
|
$source = $sources["content"];
|
|
|
|
$source = str_replace($sTargetPrefix, $sSourcePrefix, $source);
|
|
|
|
$db->query($source);
|
|
echo " Executing <pre>$source</pre><br />\n";
|
|
|
|
$sqlcount = 0;
|
|
while ($db->next_record())
|
|
{
|
|
/* Extract the table name */
|
|
$sTableName = mysql_field_table($db->Query_ID, '0');
|
|
$sTableName = str_replace($sSourcePrefix."_", $sTargetPrefix."_", $sTableName);
|
|
|
|
$targetSQL = "INSERT INTO %s VALUES(%s);";
|
|
|
|
$aInsert = array();
|
|
for ($i=0;$i<$db->num_fields();$i++)
|
|
{
|
|
$data = $db->f($i);
|
|
$rootpath = str_replace("/conlite/", "/", $cfg['path']['contenido']);
|
|
$webpath = str_replace("/conlite/", "/", $cfg['path']['contenido_fullhtml']);
|
|
|
|
$data = str_replace($rootpath, '<!--{contenido_root}-->/', $data);
|
|
$data = str_replace($webpath, '<!--{contenido_web}-->/', $data);
|
|
|
|
$data = str_replace("\\", "\\\\", $data);
|
|
$data = str_replace("\n", "\\n", $data);
|
|
$data = str_replace("\r", "\\r", $data);
|
|
$data = str_replace("'", "''", $data);
|
|
$aInsert[] = "'".$data."'";
|
|
}
|
|
|
|
$sqlchunks[$group."/".$file.$mcount.".sql"][] = sprintf($targetSQL, $sTableName, implode(", ", $aInsert));
|
|
|
|
$groupfiles[$group][] = $group."/".$file.$mcount.".sql";
|
|
$sqlcount++;
|
|
|
|
if ($sqlcount > $sLinesPerFile)
|
|
{
|
|
$sqlcount = 0;
|
|
$mcount++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
echo "<h2>Writing data files</h2>\n";
|
|
|
|
foreach ($sqlchunks as $file => $sqlchunk)
|
|
{
|
|
echo "Writing ".$cfg["path"]["contenido"]."../setup/data/".$file."<br />\n";
|
|
@mkdir(dirname($cfg["path"]["contenido"]."../setup/data/".$file));
|
|
file_put_contents($cfg["path"]["contenido"]."../setup/data/".$file, implode(PHP_EOL, $sqlchunk));
|
|
}
|
|
|
|
echo "<h2>Writing setup variants files</h2>\n";
|
|
|
|
foreach ($groupfiles as $group => $files)
|
|
{
|
|
$filename = $group.".txt";
|
|
$filecontents = implode(PHP_EOL, array_unique($files));
|
|
|
|
file_put_contents($cfg["path"]["contenido"]."../setup/data/".$filename, $filecontents);
|
|
|
|
echo "Writing ".$cfg["path"]["contenido"]."../setup/data/".$filename."<br \>\n";
|
|
}
|
|
|
|
echo "<h2>Exporting table structures</h2>\n";
|
|
|
|
$dbexport = new DB_Contenido;
|
|
$rawtext = true;
|
|
|
|
foreach ($cfg["tab"] as $key => $value)
|
|
{
|
|
echo "Exporting table $value<br />\n";
|
|
$tArray[$value] = dbDumpStructure($dbexport, $value, $rawtext);
|
|
}
|
|
|
|
$csv = new CSV;
|
|
$row = 1;
|
|
ksort($tArray);
|
|
|
|
foreach ($tArray as $table)
|
|
{
|
|
foreach ($table as $field)
|
|
{
|
|
$row++;
|
|
$cell = 1;
|
|
foreach ($field as $entry)
|
|
{
|
|
$cell++;
|
|
$csv->setCell($row, $cell, $entry);
|
|
}
|
|
}
|
|
}
|
|
|
|
file_put_contents($cfg["path"]["contenido"]."../setup/data/tables.txt", $csv->make());
|
|
?>
|
|
<h2>Finished</h2>
|
|
</body>
|
|
</html>
|