Merge branch 'master' of github.com:easysoft/zentaopms

This commit is contained in:
wangyidong
2020-03-23 17:23:18 +08:00
4 changed files with 157 additions and 30 deletions
+147 -20
View File
@@ -12,16 +12,16 @@
class zdb
{
/**
* dbh
*
* @var object
* dbh
*
* @var object
* @access public
*/
public $dbh;
/**
* Construct
*
* Construct
*
* @access public
* @return void
*/
@@ -33,33 +33,159 @@ class zdb
/**
* Get all tables.
*
*
* @param string $type if type is 'base', just get base table.
* @access public
* @return array
*/
public function getAllTables()
public function getAllTables($type = 'base')
{
global $config;
$allTables = array();
$stmt = $this->dbh->query("show full tables");
while($table = $stmt->fetch(PDO::FETCH_ASSOC))
while($table = $stmt->fetch(PDO::FETCH_ASSOC))
{
$tableType = strtolower($table['Table_type']);
if($tableType != 'base table') continue;
if($type == 'base' and $tableType != 'base table') continue;
$tableName = $table["Tables_in_{$config->db->name}"];
$allTables[$tableName] = 'table';
$allTables[$tableName] = $tableType == 'base table' ? 'table' : $tableType;
}
return $allTables;
}
/**
* Dump db.
*
* @param string $fileName
* @param array $tables
* Get table fields.
*
* @param string $table
* @access public
* @return array
*/
public function getTableFields($table)
{
try
{
$this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
$sql = "DESC $table";
$rawFields = $this->dbh->query($sql)->fetchAll();
$this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
}
catch (PDOException $e)
{
global $dao;
$dao->sqlError($e);
}
$fields = array();
foreach($rawFields as $field) $fields[$field->field] = $field;
return $fields;
}
/**
* Diff current table fields with a fields array.
*
* @param string $table
* @param array $fields
* @access public
* @return array
*/
public function diffTable($table, $fields)
{
$tableFields = $this->getTableFields($table);
$diff = array_udiff_assoc($fields, $tableFields,
function($a, $b)
{
return (array)$a == (array)$b ? 0 : 1;
}
);
return $diff;
}
/**
* Add a column to a table, or modify a existing column.
*
* @param string $table
* @param object $column
* @param boolean $add if true, add $column as a new column, otherwise modify a existing column to $column.
* @access public
* @return object
*/
public function updateColumn($table, $column, $add = true)
{
$return = new stdclass();
$return->result = true;
$return->error = '';
$query = "ALTER TABLE `$table` " . ($add ? 'ADD' : 'MODIFY COLUMN') . " `$column->field` $column->type" . ($column->null == 'NO' ? ' NOT NULL' : '') . (is_null($column->default) ? '' : " DEFAULT '$column->default'") . (empty($column->extra) ? '' : " $column->extra") . ';';
try
{
$this->dbh->exec($query);
return $return;
}
catch(PDOException $e)
{
$return->result = false;
$return->error = $e->getMessage();
$return->sql = $query;
return $return;
}
}
/**
* Create a table with fields.
*
* @param string $name
* @param array $fields
* @access public
* @return object
*/
public function createTable($name, $fields)
{
$return = new stdclass();
$return->result = true;
$return->error = '';
$createTableQuery = "CREATE TABLE `$name` (";
foreach($fields as $field)
{
$createColumnQuery = "`$field->field` $field->type" . ($field->null == 'NO' ? ' NOT NULL' : '') . (is_null($field->default) ? '' : " DEFAULT '$field->default'") . (empty($field->extra) ? '' : " $field->extra") . ", ";
if(!empty($field->key))
{
if($field->key === 'PRI') $createColumnQuery .= "PRIMARY KEY (`{$field->field}`), ";
if($field->key === 'MUL') $createColumnQuery .= "KEY `{$field->field}` (`{$field->field}`), ";
if($field->key === 'UNI') $createColumnQuery .= "UNIQUE KEY `{$field->field}` (`{$field->field}`), ";
}
$createTableQuery .= $createColumnQuery;
}
$createTableQuery = rtrim($createTableQuery, ', ');
$createTableQuery .= ") ENGINE=MyISAM DEFAULT CHARSET=utf8;";
try
{
$this->dbh->exec($createTableQuery);
return $return;
}
catch(PDOException $e)
{
$return->result = false;
$return->error = $e->getMessage();
$return->sql = $createTableQuery;
return $return;
}
}
/**
* Dump db.
*
* @param string $fileName
* @param array $tables
* @access public
* @return object
*/
@@ -139,10 +265,11 @@ class zdb
}
/**
* Import DB
*
* Import DB
*
* @param string $fileName
* @access public
* @return object;
* @return object
*/
public function import($fileName)
{
@@ -210,10 +337,10 @@ class zdb
/**
* Get schema SQL.
*
* @param string $table
*
* @param string $table
* @access public
* @return string
* @return object
*/
public function getSchemaSQL($table, $type = 'table')
{
+1 -1
View File
@@ -100,7 +100,7 @@ $lang->repo->split = "Split Mark";
$lang->repo->objectRule = 'Object Rule';
$lang->repo->objectIdRule = 'Object ID Rule';
$lang->repo->actionRule = 'Action RUle';
$lang->repo->actionRule = 'Action Rule';
$lang->repo->manHourRule = 'Man-hour Rule';
$lang->repo->ruleUnit = "Unit";
$lang->repo->ruleSplit = "Multiple keywords are divided by ';'. For example: task multiple keywords: Task;task";
+8 -8
View File
@@ -7,9 +7,9 @@ $lang->repo->createAction = 'Create Repo';
$lang->repo->edit = 'Edit';
$lang->repo->editAction = 'Edit Repo';
$lang->repo->delete = 'Delete Repo';
$lang->repo->showSyncCommit = 'Display Synchronization';
$lang->repo->showSyncCommit = 'Display Sync';
$lang->repo->ajaxSyncCommit = 'Interface: Ajax Sync Note';
$lang->repo->setRules = 'Set rules';
$lang->repo->setRules = 'Set Rules';
$lang->repo->download = 'Download File';
$lang->repo->downloadDiff = 'Download Diff';
$lang->repo->diffAction = 'Revision Diff';
@@ -90,7 +90,7 @@ $lang->repo->openedDate = 'CreatedDate';
$lang->repo->latestRevision = 'Latest Revision';
$lang->repo->actionInfo = "Add by %s in %s";
$lang->repo->changes = "Change Log";
$lang->repo->reviewLocation = "File: %s@%s, line:%s - %s";
$lang->repo->reviewLocation = "File: %s@%s, Line: %s - %s";
$lang->repo->commentEdit = '<i class="icon-pencil"></i>';
$lang->repo->commentDelete = '<i class="icon-remove"></i>';
$lang->repo->allChanges = "Other Changes";
@@ -100,7 +100,7 @@ $lang->repo->split = "Split Mark";
$lang->repo->objectRule = 'Object Rule';
$lang->repo->objectIdRule = 'Object ID Rule';
$lang->repo->actionRule = 'Action RUle';
$lang->repo->actionRule = 'Action Rule';
$lang->repo->manHourRule = 'Man-hour Rule';
$lang->repo->ruleUnit = "Unit";
$lang->repo->ruleSplit = "Multiple keywords are divided by ';'. For example: task multiple keywords: Task;task";
@@ -119,17 +119,17 @@ $lang->repo->encodingList['utf_8'] = 'UTF-8';
$lang->repo->encodingList['gbk'] = 'GBK';
$lang->repo->scmList['Git'] = 'Git';
$lang->repo->scmList['Subversion'] = 'Subversion';
$lang->repo->scmList['Subversion'] = 'SVN';
$lang->repo->notice = new stdclass();
$lang->repo->notice->syncing = 'Synchronizing. Please wait ...';
$lang->repo->notice->syncComplete = 'Synchronized. Now redirecting ...';
$lang->repo->notice->syncedCount = 'The number of records synchronized is ';
$lang->repo->notice->delete = 'Are you sure delete this repo?';
$lang->repo->notice->delete = 'Do you want to delete this repo?';
$lang->repo->notice->successDelete = 'Repository is removed.';
$lang->repo->notice->commentContent = 'Comment';
$lang->repo->notice->deleteBug = 'Are you sure to delete this bug?';
$lang->repo->notice->deleteComment = 'Are you sure to delete this comment?';
$lang->repo->notice->deleteBug = 'Do you want to delete this bug?';
$lang->repo->notice->deleteComment = 'Do you want to delete this comment?';
$lang->repo->notice->lastSyncTime = 'Last Sync:';
$lang->repo->rules = new stdclass();
+1 -1
View File
@@ -100,7 +100,7 @@ $lang->repo->split = "Split Mark";
$lang->repo->objectRule = 'Object Rule';
$lang->repo->objectIdRule = 'Object ID Rule';
$lang->repo->actionRule = 'Action RUle';
$lang->repo->actionRule = 'Action Rule';
$lang->repo->manHourRule = 'Man-hour Rule';
$lang->repo->ruleUnit = "Unit";
$lang->repo->ruleSplit = "Multiple keywords are divided by ';'. For example: task multiple keywords: Task;task";