Files
EasySoft-ZenTaoPMS/module/backup/model.php
T
caoyanyi 7bb53ec47f Squashed commit of the following:
commit b9e9f86d39
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Fri Apr 26 13:35:56 2024 +0800

    * Adjust mr actions style.

commit 1ddb2067b2
Author: hufangzhou <hufangzhou@easycorp.ltd>
Date:   Fri Apr 26 13:24:05 2024 +0800

    * Fix bug #48463.

commit 94528ed5b0
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Fri Apr 26 13:17:29 2024 +0800

    * Fix bug#48410.

commit d1b38c54f9
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Fri Apr 26 13:13:38 2024 +0800

    - Remove mr repos switch block.

commit c94da3e17a
Author: sunhao <sunhao@easycorp.ltd>
Date:   Fri Apr 26 11:30:43 2024 +0800

    * my: optimize UI of manage contacts page.

commit 2e74f33d22
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Fri Apr 26 11:13:16 2024 +0800

    * Fix bug #48317.

commit 45b6beccae
Author: liwenrui <liwenrui@easycorp.ltd>
Date:   Fri Apr 26 11:13:06 2024 +0800

    * handle direct client download without selecting os.

commit 82be78538f
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Fri Apr 26 10:43:42 2024 +0800

    * Fix ipd project only one execution bug.

commit faa6c605fc
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Fri Apr 26 10:42:25 2024 +0800

    * Fix bug #48499, modify the icon.

commit 5134736779
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Fri Apr 26 10:41:35 2024 +0800

    * Fix bug#48167.

commit 5ca23cd76f
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Fri Apr 26 10:30:02 2024 +0800

    * Fix bug #48453.

commit 23cde4b38e
Author: sunhao <sunhao@easycorp.ltd>
Date:   Fri Apr 26 10:19:28 2024 +0800

    * tutorial: fix tutorial start modal style.

commit 1d710e10bd
Author: sunhao <sunhao@easycorp.ltd>
Date:   Fri Apr 26 10:18:40 2024 +0800

    * zin: fix batch-form style in old iframe modal.

commit c9092603f0
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Fri Apr 26 10:15:27 2024 +0800

    * Fix bug #48495.

commit c0aeb9f69d
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Fri Apr 26 10:12:39 2024 +0800

    * Fix bug #48431.

commit 4348fd543a
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Fri Apr 26 10:11:45 2024 +0800

    * Fix bug #48445.

commit c9df08b1a1
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Fri Apr 26 10:07:01 2024 +0800

    * Fix bug for screen browse.

commit ebc469c0a4
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Fri Apr 26 09:55:44 2024 +0800

    * Adjust recentproject block css.

commit 9337fa109a
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Fri Apr 26 09:50:34 2024 +0800

    * Adjust recentproject block css.

commit 07903733bf
Author: 王怡栋 <wangyidong@cnezsoft.com>
Date:   Fri Apr 26 09:33:39 2024 +0800

    * Fix bug #48473.

commit a347de8354
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Fri Apr 26 09:34:29 2024 +0800

    * Add progress to recentproject block. task #116976.

commit e6e6c6047e
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Fri Apr 26 09:29:12 2024 +0800

    * Modify the problem of code review.

commit a53a577b69
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Fri Apr 26 09:13:43 2024 +0800

    * Finish task #45906.

commit 774cb4efbc
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Fri Apr 26 09:03:42 2024 +0800

    * Adjust review by me data to DAO search.

commit 976ef156b6
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Fri Apr 26 09:00:51 2024 +0800

    * Add class for copy project button.

commit 36f2c24a97
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Fri Apr 26 09:00:39 2024 +0800

    * Fix bug #48480.

commit ae9ef45621
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Thu Apr 25 21:12:27 2024 +0800

    * Optimated code.

commit 20eefb90dc
Author: sunhao <sunhao@easycorp.ltd>
Date:   Thu Apr 25 19:42:50 2024 +0800

    * zin: optimize UI for loading old pages.

commit 56006bca4f
Author: sunhao <sunhao@easycorp.ltd>
Date:   Thu Apr 25 18:18:24 2024 +0800

    * theme: update themes for old pages.

commit 0dd32057e4
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 17:15:25 2024 +0800

    * Modify style of productplan desc.

commit 272cdc4a61
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 17:03:07 2024 +0800

    * Fix bug #48413, replace executionLang with productplanLang.

commit 1f0b96aab2
Author: tanghucheng <tanghucheng@easycorp.ltd>
Date:   Thu Apr 25 16:59:05 2024 +0800

    * Program in the product lines can be empty.

commit fb6bb48ee6
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Thu Apr 25 17:02:29 2024 +0800

    * Remove update bi guide img file.

commit 66bcb21455
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 16:48:22 2024 +0800

    * Fix bug #48464, set icon by project model.

commit c5738c4129
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Thu Apr 25 16:47:41 2024 +0800

    * Fix bug for preview pivot.

commit cc0a8aabce
Author: hufangzhou <hufangzhou@easycorp.ltd>
Date:   Thu Apr 25 16:39:20 2024 +0800

    + Add the or vision image.

commit 73d70324fd
Author: hufangzhou <hufangzhou@easycorp.ltd>
Date:   Thu Apr 25 16:34:31 2024 +0800

    * Change lang item.

commit a54780438a
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 16:33:11 2024 +0800

    * Modify the style of bugSteps.

commit ff5be095b4
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 16:32:24 2024 +0800

    * Fix bug #48453.

commit 0432554143
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 16:21:52 2024 +0800

    + Add comment.

commit 9155a82131
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Thu Apr 25 16:07:55 2024 +0800

    * Adjust jenkins job form style.

commit dc272445cf
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 15:59:31 2024 +0800

    * Fix bug if the execution doesn't have the products.

commit 1fce0df29b
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Thu Apr 25 15:48:41 2024 +0800

    * Adjust app create tips.

commit a48e48394e
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 15:47:09 2024 +0800

    * Fix bug #48452.

commit c500f9ce58
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 15:27:17 2024 +0800

    * Fix bug #48449.

commit 076b33652c
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 15:11:57 2024 +0800

    * Fix bug #48429, don't append relatedBugs to excludeBugs when linking bugs.

commit bf59668dff
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Fri Apr 19 11:22:22 2024 +0800

    + Add page data for repo code view.

commit 91e83ce12b
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Thu Apr 25 15:10:34 2024 +0800

    * Adjust repo branch switch style.

commit 16147ac595
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 15:09:44 2024 +0800

    * Fix bug #48444.

commit da77572ec8
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Thu Apr 25 15:06:20 2024 +0800

    * Adjust executionstatistic block burn. task #116977.

commit 73235c93c8
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 15:03:45 2024 +0800

    * Fix bug #48436, add ztfRun to the actions in execution::testcase.

commit 248b65ba6a
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Thu Apr 25 15:02:39 2024 +0800

    * Fix bug#48420.

commit 388f54b5ec
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Thu Apr 25 15:01:03 2024 +0800

    * Fix bug#48427.

commit 2c4122b084
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 14:58:02 2024 +0800

    * Fix bug #48441, keep in current tab when changing the stepsType.

commit c9b094b3ab
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 14:58:13 2024 +0800

    * Fix bug #48438.

commit ae10a1c686
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 14:54:28 2024 +0800

    * Fix bug #48435, replace `$this->session` with `$app->session`.

commit c81031dab9
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 14:49:42 2024 +0800

    * Fix bug #48430, replace `{runID}`.

commit 0635779f1f
Author: 王怡栋 <wangyidong@cnezsoft.com>
Date:   Thu Apr 25 14:48:58 2024 +0800

    * Fix bug #48419.

commit 2b1358fb75
Author: zhouxin <zhouxin@easycorp.ltd>
Date:   Thu Apr 25 14:46:08 2024 +0800

    * Fix bug #47408.

commit aef64e2c85
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 14:45:30 2024 +0800

    * Fix bug #48423, replace `<br />` with `<p></p>`.

commit 392a031495
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 14:41:55 2024 +0800

    * Show the product line when the program is not selected.

commit 1449ea4d06
Author: tanghucheng <tanghucheng@easycorp.ltd>
Date:   Thu Apr 25 14:41:09 2024 +0800

    * Fix bug #116431.

commit 9ce8dfe3ee
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 14:31:03 2024 +0800

    * Fix bug #48433.

commit 62a8779806
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Thu Apr 25 14:28:56 2024 +0800

    * Add loadProductModules function.

commit 8ec4efde62
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 14:27:36 2024 +0800

    * Add return type.

commit 035f15b16e
Author: sunhao <sunhao@easycorp.ltd>
Date:   Thu Apr 25 14:21:50 2024 +0800

    * disable loading effect on loading modal with same url.

commit 1b7aac3f6f
Author: zhouxin <zhouxin@easycorp.ltd>
Date:   Thu Apr 25 14:19:34 2024 +0800

    * Fix bug #47654.

commit 730ab12d86
Author: sunhao <sunhao@easycorp.ltd>
Date:   Thu Apr 25 13:59:51 2024 +0800

    * zin: add favicon to base page.

commit e7051b2d2f
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 13:58:51 2024 +0800

    * Fix bug #48421, removes duplicate projects.

commit 3089e95041
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 13:43:47 2024 +0800

    * Fix bug #48176.

commit 1409059467
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 13:41:20 2024 +0800

    * Fix bug #48418.

commit 6934f36b9e
Author: zhouxin <zhouxin@easycorp.ltd>
Date:   Thu Apr 25 13:35:10 2024 +0800

    * Remove useless method.

commit 908f7dd087
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Thu Apr 25 13:30:56 2024 +0800

    * Adjust teamachievement block css. task #116978.

commit abb2d04bd0
Author: zhouxin <zhouxin@easycorp.ltd>
Date:   Thu Apr 25 13:25:53 2024 +0800

    * Optimize code.

commit 042726dd6a
Author: tanghucheng <tanghucheng@easycorp.ltd>
Date:   Thu Apr 25 11:16:45 2024 +0800

    * Fix bug #48143, Add $config->story->dtable->fieldList['roadmap']['width'].

commit b3b3a4884b
Author: tanghucheng <tanghucheng@easycorp.ltd>
Date:   Thu Apr 25 11:00:11 2024 +0800

    * Fix bug #48415.

commit b2878c8644
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 10:59:32 2024 +0800

    - Remove `var_dump`.

commit b8e22a5446
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 10:59:02 2024 +0800

    * Optimize code for uploading files.

commit 328cf2c605
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 10:57:27 2024 +0800

    - Remove unused style.

commit 98f501ad66
Author: sunhao <sunhao@easycorp.ltd>
Date:   Thu Apr 25 10:57:18 2024 +0800

    * zui: update zui3 lib.

commit 138ae9b7bb
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Thu Apr 25 10:55:12 2024 +0800

    * Adjust repo page language.

commit 2a4abbde8d
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Thu Apr 25 10:24:32 2024 +0800

    * Fix bug #48350.

commit c2c122b678
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Thu Apr 25 10:22:08 2024 +0800

    * Adjust welcome block css. task #116979.

commit 1cba83c80f
Author: sunhao <sunhao@easycorp.ltd>
Date:   Thu Apr 25 10:21:24 2024 +0800

    * kanban: optimize label style.

commit a92ca103b9
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 10:18:16 2024 +0800

    * Fix bug #48402.

commit decae20945
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 10:11:24 2024 +0800

    * Adjust select execution title style.

commit 8fc680ecc9
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Thu Apr 25 10:03:04 2024 +0800

    * Add delete file.

commit 0c08073647
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 09:39:41 2024 +0800

    * The date field was not validated when fixing the bug import task.

commit b6aa30da6f
Author: liyang <liyang@easycorp.ltd>
Date:   Thu Apr 25 09:41:02 2024 +0800

    Add delete btn in import repo page.

commit 188bdfff90
Author: liyang <liyang@easycorp.ltd>
Date:   Thu Apr 25 09:30:58 2024 +0800

    Hide the hidden function of the imported code library page

commit 22e899b21f
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Thu Apr 25 09:26:39 2024 +0800

    * Fix bug #48372.

commit dea8d5785a
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Thu Apr 25 09:25:57 2024 +0800

    * Remove the box when it is out of focus.

commit 94117eac4a
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 09:21:31 2024 +0800

    * Modify testtask's order in qastatistic block.

commit 16558b955d
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Thu Apr 25 09:18:46 2024 +0800

    * Use ajaxGetOldDropMenu

commit eb7f606fe5
Author: hufangzhou <hufangzhou@easycorp.ltd>
Date:   Thu Apr 25 09:07:24 2024 +0800

    * Add todo-calendar privilege to or interface.

commit 119fef4fae
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Thu Apr 25 09:06:33 2024 +0800

    * Adjust closedSetting to closeSetting.

commit 1179f36595
Author: tanghucheng <tanghucheng@easycorp.ltd>
Date:   Thu Apr 25 08:58:31 2024 +0800

    * Fix bug #47758, unset percent when disabled.

commit b143356a55
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Thu Apr 25 08:56:35 2024 +0800

    * Fix bug #48379.

commit e1ec138058
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Thu Apr 25 08:52:51 2024 +0800

    * Optimize code for bug #48271.

commit 8ca008736a
Author: liwenrui <liwenrui@easycorp.ltd>
Date:   Thu Apr 25 08:49:31 2024 +0800

    * tweak again, actually only wanted to add padding to the top.

commit 388006b340
Author: liwenrui <liwenrui@easycorp.ltd>
Date:   Thu Apr 25 08:49:05 2024 +0800

    * tweak zeneditor to add some padding back.

commit 0e0121b201
Author: liwenrui <liwenrui@easycorp.ltd>
Date:   Thu Apr 25 08:27:23 2024 +0800

    * update zeneditor and remove paragraph margin within.

commit 5e3b42a9f3
Author: sunhao <sunhao@easycorp.ltd>
Date:   Wed Apr 24 17:32:20 2024 +0800

    * zui: update zui3 lib.

commit 3e543c1403
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Wed Apr 24 17:30:35 2024 +0800

    * Optimize code.

commit ce8e34849d
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Wed Apr 24 17:29:17 2024 +0800

    * Fix project menu bug. bug #48121.

commit bff8da8aba
Author: sunhao <sunhao@easycorp.ltd>
Date:   Wed Apr 24 17:20:38 2024 +0800

    * zin: sort fields after reload form.

commit 01e15f6635
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 16:53:10 2024 +0800

    * Fix bug #46381.

commit b89caabfce
Author: hufangzhou <hufangzhou@easycorp.ltd>
Date:   Wed Apr 24 16:53:21 2024 +0800

    * Adjust the default filename for export execution.

commit 17d5d65a17
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 16:47:28 2024 +0800

    * Fix bug #48367, get linked bugs.

commit 3ee2f3ea5c
Author: 宋辰轩 <songchenxuan@easycorp.ltd>
Date:   Wed Apr 24 16:45:43 2024 +0800

    * Fix bug for preview pivot menu.

commit 2c00f9a657
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Wed Apr 24 16:29:25 2024 +0800

    * Fix bug#48334.

commit 484e24fd9d
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 16:24:24 2024 +0800

    * Fix bug #48343.

commit 1aa110645c
Author: liwenrui <liwenrui@easycorp.ltd>
Date:   Wed Apr 24 16:01:19 2024 +0800

    * fix ai prompt menu injected multiple times, bug #48358.

commit a2333979b5
Author: zhouxin <zhouxin@easycorp.ltd>
Date:   Wed Apr 24 15:59:09 2024 +0800

    * Fix height of project deviation pivot.

commit 7a3b20222f
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 15:54:16 2024 +0800

    * Replace runID in testcase::browse.

commit ab05d56301
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 15:45:01 2024 +0800

    * No iterative project hides execution column.

commit dffcd9e5c7
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Wed Apr 24 15:46:18 2024 +0800

    * Fix sql error.

commit 22d89bb361
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Wed Apr 24 15:43:11 2024 +0800

    * Fix bug#48349.

commit 603195b1e1
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 15:41:27 2024 +0800

    * Adjust execution column style of the build list.

commit 989f2b8ca5
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 15:27:01 2024 +0800

    * Fix bug #48344, set runID.

commit 2db2a7f9dc
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Wed Apr 24 15:25:54 2024 +0800

    - Remove gitfox for 20.0.

commit 3a1f824210
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Wed Apr 24 15:24:46 2024 +0800

    * Fix bug#48351.

commit af0b038283
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 15:14:43 2024 +0800

    * Fix bug #48348.

commit d4dc98d604
Author: tanghucheng <tanghucheng@easycorp.ltd>
Date:   Wed Apr 24 15:13:00 2024 +0800

    * Fix bug #48140, Enabled child stage for ipd project.

commit 08e0f83941
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 15:07:36 2024 +0800

    * Adjust height of the batchcreate stakeholder page.

commit 8e1dfa7634
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 14:58:29 2024 +0800

    * Fix bug #48345.

commit 0562ebb542
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Wed Apr 24 14:55:42 2024 +0800

    * Add story pairs to search form.

commit 2c062163a5
Author: tanghucheng <tanghucheng@easycorp.ltd>
Date:   Wed Apr 24 14:40:10 2024 +0800

    * Fix bug #48314.

commit b812069307
Author: qixinzhi <qixinzhi@easycorp.ltd>
Date:   Wed Apr 24 06:38:51 2024 +0000

    * Auto column width with cell max value length.

commit f9c1a3e850
Author: qixinzhi <qixinzhi@easycorp.ltd>
Date:   Wed Apr 24 06:38:04 2024 +0000

    * Delete screen 3 scheme.

commit 3ffa92734f
Author: hufangzhou <hufangzhou@easycorp.ltd>
Date:   Wed Apr 24 14:35:14 2024 +0800

    * Fix bug #48239.

commit 99e1864ca8
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 14:30:08 2024 +0800

    * Fix bug #46381.

commit 81c3ebaa0a
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Wed Apr 24 14:28:26 2024 +0800

    + Add time fliter for commit search.

commit 14d5bf7cf0
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Wed Apr 24 09:34:53 2024 +0800

    * Adjust repo create page linkage.

commit 6880ef70af
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 14:22:28 2024 +0800

    * Replace `->size` with `set::width` and `set::height` in echarts.

commit b4ea64832a
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Wed Apr 24 14:15:13 2024 +0800

    * Adjust job view repo name.

commit 8168c98ba8
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 14:13:53 2024 +0800

    * Fix bug #48262.

commit d480ef87bd
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 13:51:05 2024 +0800

    * Fix bug #48025, modify id.

commit 003a73d5cb
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 13:49:12 2024 +0800

    * Fix bug #48025, modify id.

commit 3ad257eb53
Author: daitingting <daitingting@xirangit.com>
Date:   Wed Apr 24 05:43:53 2024 +0000

     * Fix bug #48261.

commit 77e6744f1d
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 13:42:13 2024 +0800

    * Fix bug #48294.

commit f10b3f5710
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 13:36:01 2024 +0800

    * Reset code.

commit 068f97bc38
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 13:18:34 2024 +0800

    * Fix bug #48308, set control of stage.

commit 078d566703
Author: wangyuting <wangyuting@easycorp.ltd>
Date:   Wed Apr 24 13:18:41 2024 +0800

    * Adjust edit feedback data toggle.

commit 34738e42d9
Author: zhouxin <zhouxin@easycorp.ltd>
Date:   Wed Apr 24 13:13:29 2024 +0800

    * Adjust lang.

commit eddba468d0
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 13:07:40 2024 +0800

    * Fix bug #48310.

commit fc673b76ce
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 11:26:49 2024 +0800

    * Fix bug #48310.

commit 7840c1ab35
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Wed Apr 24 11:24:40 2024 +0800

    * Remove dm driver from convert date.

commit d47e91c07e
Author: hufangzhou <hufangzhou@easycorp.ltd>
Date:   Wed Apr 24 11:20:10 2024 +0800

    * Fix bug #48293.

commit d475b63a74
Author: daitingting <daitingting@xirangit.com>
Date:   Wed Apr 24 03:16:57 2024 +0000

     * Fix bug #48261.

commit 655cc652be
Author: 王怡栋 <wangyidong@cnezsoft.com>
Date:   Wed Apr 24 11:14:54 2024 +0800

    * Fix bug for select usage when install.

commit 425fade713
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 11:14:19 2024 +0800

    * Fix bug #48303.

commit 723797107b
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 11:09:27 2024 +0800

    * Fix bug #48303.

commit 6740a4c699
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 11:06:32 2024 +0800

    * Fix bug #48306.

commit c42f7ad83e
Author: zhouxin <zhouxin@easycorp.ltd>
Date:   Wed Apr 24 11:02:21 2024 +0800

    * Fix bug #48073.

commit e38f2f6531
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 10:42:42 2024 +0800

    * Set search form open.

commit 2cb511cf52
Author: 王怡栋 <wangyidong@cnezsoft.com>
Date:   Wed Apr 24 10:07:43 2024 +0800

    * Fix error for sso module.

commit f8b093e0eb
Author: xieqiyu <xieqiyu@easycorp.ltd>
Date:   Wed Apr 24 10:21:37 2024 +0800

    * Fix the bug of duration and BSA default value.

commit c3e9c7d7cd
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 10:20:25 2024 +0800

    * Fix bug #48243.

commit c7cf68be63
Author: hufangzhou <hufangzhou@easycorp.ltd>
Date:   Wed Apr 24 10:17:03 2024 +0800

    * Fix bug #48280, #48289.

commit b9cdcf5bcd
Author: sunhao <sunhao@easycorp.ltd>
Date:   Wed Apr 24 10:17:34 2024 +0800

    * my: fix cannot update badges in main navbar.

commit 3aa9609ce2
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 10:16:21 2024 +0800

    * Fix bug #48294.

commit fb26e627de
Author: sunhao <sunhao@easycorp.ltd>
Date:   Wed Apr 24 10:10:56 2024 +0800

    Revert "* zin: fix cannot find page method on update."

    This reverts commit 367a4ae49d.

commit 63a70421ed
Author: tianshujie <tianshujie@easycorp.ltd>
Date:   Wed Apr 24 09:45:07 2024 +0800

    * Fix bug #48271.

commit c1a66b708b
Author: sunguangming <sunguangming@easycorp.ltd>
Date:   Wed Apr 24 09:40:09 2024 +0800

    * Modify upgrade method.

commit c68b2170f9
Author: 王怡栋 <wangyidong@cnezsoft.com>
Date:   Wed Apr 24 09:18:09 2024 +0800

    * Fix for sso login from zdoo.

commit 580b4f170f
Author: liumengyi <liumengyi@easycorp.ltd>
Date:   Wed Apr 24 09:30:37 2024 +0800

    * Fix bug #48272, update program's consumed, left and progress.

commit 1d9791a55e
Author: 王怡栋 <wangyidong@cnezsoft.com>
Date:   Tue Apr 23 17:27:07 2024 +0800

    * Remove useless code.

commit 40f0e10c1f
Author: caoyanyi <caoyanyi@easycorp.ltd>
Date:   Tue Apr 23 17:18:03 2024 +0800

    * Update standard sql.

# Conflicts:
#	db/update20.0.beta2.sql
#	module/block/config/feedback.php
#	module/block/zen.php
#	module/custom/lang/vi.php
#	module/mr/ui/browsebyexecution.html.php
#	module/repo/lang/de.php
#	module/repo/lang/en.php
#	module/repo/lang/fr.php
#	module/repo/lang/zh-cn.php
#	module/space/lang/de.php
#	module/space/lang/en.php
#	module/space/lang/fr.php
#	module/space/lang/zh-cn.php
#	module/space/ui/createapplication.html.php
#	www/js/zui3/zen-editor/index.esm.js
#	www/js/zui3/zen-editor/p-0aaccc7e.js
#	www/js/zui3/zen-editor/p-276dd30f.js
#	www/js/zui3/zen-editor/p-2b13cc9a.js
#	www/js/zui3/zen-editor/p-38d18c5d.js
#	www/js/zui3/zen-editor/p-3f6cad83.js
#	www/js/zui3/zen-editor/p-51e3a048.js
#	www/js/zui3/zen-editor/p-617d463f.js
#	www/js/zui3/zen-editor/p-62c0132e.js
#	www/js/zui3/zen-editor/p-6d22490c.js
#	www/js/zui3/zen-editor/p-a563f50b.js
#	www/js/zui3/zen-editor/p-bf31230c.js
#	www/js/zui3/zen-editor/p-c6c95773.js
#	www/js/zui3/zen-editor/p-d83dd3f0.js
#	www/js/zui3/zen-editor/p-d8bedd14.js
#	www/js/zui3/zen-editor/p-eaaa4129.js
#	www/js/zui3/zen-editor/zen-editor.esm.js
2024-04-26 13:59:25 +08:00

449 lines
13 KiB
PHP

<?php
declare(strict_types=1);
/**
* The model file of backup module of ZenTaoCMS.
*
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author Yidong Wang <yidong@cnezsoft.com>
* @package backup
* @version $Id$
* @link https://www.zentao.net
*/
class backupModel extends model
{
/**
* Backup SQL.
*
* @param string $backupFile
* @access public
* @return object
*/
public function backSQL(string $backupFile): object
{
$zdb = $this->app->loadClass('zdb');
return $zdb->dump($backupFile);
}
/**
* Backup file.
*
* @param string $backupFile
* @access public
* @return object
*/
public function backFile(string $backupFile): object
{
$zfile = $this->app->loadClass('zfile');
$return = new stdclass();
$return->result = true;
$return->error = '';
if(!is_dir($backupFile)) mkdir($backupFile, 0777, true);
$tmpLogFile = $this->getTmpLogFile($backupFile);
$dataDir = $this->app->getAppRoot() . 'www/data/';
$count = $zfile->getCount($dataDir, array('course'));
file_put_contents($tmpLogFile, json_encode(array('allCount' => $count)));
$result = $zfile->copyDir($dataDir, $backupFile, $logLevel = false, $tmpLogFile, array('course'));
$this->processSummary($backupFile, $result['count'], $result['size'], $result['errorFiles'], $count);
unlink($tmpLogFile);
return $return;
}
/**
* Backup code.
*
* @param string $backupFile
* @access public
* @return object
*/
public function backCode(string $backupFile): object
{
$zfile = $this->app->loadClass('zfile');
$return = new stdclass();
$return->result = true;
$return->error = '';
$tmpLogFile = $this->getTmpLogFile($backupFile);
$appRoot = $this->app->getAppRoot();
$fileList = glob($appRoot . '*');
$wwwFileList = glob($appRoot . 'www/*');
$tmpFile = array_search($appRoot . 'tmp', $fileList);
$wwwFile = array_search($appRoot . 'www', $fileList);
$dataFile = array_search($appRoot . 'www/data', $wwwFileList);
unset($fileList[$tmpFile]);
unset($fileList[$wwwFile]);
unset($wwwFileList[$dataFile]);
$fileList = array_merge($fileList, $wwwFileList);
if(!is_dir($backupFile)) mkdir($backupFile, 0777, true);
$allCount = 0;
foreach($fileList as $codeFile) $allCount += $zfile->getCount($codeFile);
file_put_contents($tmpLogFile, json_encode(array('allCount' => $allCount)));
$copiedCount = 0;
$copiedSize = 0;
$errorFiles = array();
foreach($fileList as $codeFile)
{
$file = trim(str_replace($appRoot, '', $codeFile), DS);
if(is_dir($codeFile))
{
if(!is_dir($backupFile . DS . $file)) mkdir($backupFile . DS . $file, 0777, true);
$result = $zfile->copyDir($codeFile, $backupFile . DS . $file, $logLevel = false, $tmpLogFile);
$copiedCount += $result['count'];
$copiedSize += $result['size'];
$errorFiles += $result['errorFiles'];
}
else
{
$dirName = dirname($file);
if(!is_dir($backupFile . DS . $dirName)) mkdir($backupFile . DS . $dirName, 0777, true);
if($zfile->copyFile($codeFile, $backupFile . DS . $file))
{
$copiedCount += 1;
$copiedSize += filesize($codeFile);
}
else
{
$errorFiles[] = $codeFile;
}
}
}
$this->processSummary($backupFile, $copiedCount, $copiedSize, $errorFiles, $allCount);
unlink($tmpLogFile);
return $return;
}
/**
* Restore SQL.
*
* @param string $backupFile
* @access public
* @return object
*/
public function restoreSQL(string $backupFile): object
{
$zdb = $this->app->loadClass('zdb');
$allTables = $zdb->getAllTables();
foreach($allTables as $tableName => $tableType)
{
try
{
$this->dbh->query("DROP $tableType IF EXISTS `$tableName`");
}
catch(PDOException $e){}
}
return $zdb->import($backupFile);
}
/**
* Restore File.
*
* @param string $backupFile
* @access public
* @return object
*/
public function restoreFile(string $backupFile): object
{
$return = new stdclass();
$return->result = true;
$return->error = '';
if(is_file($backupFile))
{
$oldDir = getcwd();
chdir($this->app->getTmpRoot());
$this->app->loadClass('pclzip', true);
$zip = new pclzip($backupFile);
if($zip->extract(PCLZIP_OPT_PATH, $this->app->getAppRoot() . 'www/data/', PCLZIP_OPT_TEMP_FILE_ON) == 0)
{
$return->result = false;
$return->error = $zip->errorInfo();
}
chdir($oldDir);
}
elseif(is_dir($backupFile))
{
$zfile = $this->app->loadClass('zfile');
$zfile->copyDir($backupFile, $this->app->getAppRoot() . 'www/data/', $showDetails = false);
}
return $return;
}
/**
* Add file header.
*
* @param string $fileName
* @access public
* @return bool
*/
public function addFileHeader(string $fileName): bool
{
$die = "<?php die();?" . ">\n";
$tmpFile = $fileName . '.tmp';
rename($fileName, $tmpFile);
file_put_contents($fileName, $die);
$fh = fopen($tmpFile, 'r');
$length = 2 * 1024 * 1024;
while(!feof($fh))
{
$buff = fread($fh, $length);
file_put_contents($fileName, $buff, FILE_APPEND);
}
fclose($fh);
unlink($tmpFile);
return true;
}
/**
* Remove file header.
*
* @param string $fileName
* @access public
* @return bool
*/
public function removeFileHeader(string $fileName): bool
{
$tmpFile = $fileName . '.tmp';
$fh = fopen($fileName, 'r');
$length = 2 * 1024 * 1024;
$readedFirstLine = false;
while(!feof($fh))
{
if(!$readedFirstLine)
{
fgets($fh);
$readedFirstLine = true;
continue;
}
$buff = fread($fh, $length);
file_put_contents($tmpFile, $buff, FILE_APPEND);
}
fclose($fh);
rename($tmpFile, $fileName);
return true;
}
/**
* Get dir size.
*
* @param string $backup
* @access public
* @return array
*/
public function getBackupSummary(string $backup): array
{
$zfile = $this->app->loadClass('zfile');
if(is_file($backup))
{
$summary = array();
$summary['allCount'] = 1;
$summary['count'] = 1;
$summary['size'] = $zfile->getFileSize($backup);
return $summary;
}
$summaryFile = dirname($backup) . DS . 'summary';
if(!file_exists($summaryFile)) return array();
$summary = json_decode(file_get_contents(dirname($backup) . DS . 'summary'), true);
return zget($summary, basename($backup), array());
}
/**
* Get backup path.
*
* @access public
* @return string
*/
public function getBackupPath(): string
{
$backupPath = empty($this->config->backup->settingDir) ? $this->app->getTmpRoot() . 'backup' . DS : $this->config->backup->settingDir;
return rtrim(str_replace(DS, '/', $backupPath), '/') . '/';
}
/**
* Get backup file.
*
* @param string $name
* @param string $type sql|file|code
* @access public
* @return string|false
*/
public function getBackupFile(string $name, string $type): string|false
{
$backupPath = $this->getBackupPath();
if($type == 'sql')
{
if(file_exists($backupPath . $name . ".{$type}")) return $backupPath . $name . ".{$type}";
if(file_exists($backupPath . $name . ".{$type}.php")) return $backupPath . $name . ".{$type}.php";
}
else
{
if(file_exists($backupPath . $name . ".{$type}")) return $backupPath . $name . ".{$type}";
if(file_exists($backupPath . $name . ".{$type}.zip")) return $backupPath . $name . ".{$type}.zip";
if(file_exists($backupPath . $name . ".{$type}.zip.php")) return $backupPath . $name . ".{$type}.zip.php";
}
return false;
}
/**
* Get tmp log file.
*
* @param string $backupFile
* @access public
* @return string
*/
public function getTmpLogFile(string $backupFile): string
{
return $backupFile . '.tmp.summary';
}
/**
* Get backup dir progress.
*
* @param string $backup
* @access public
* @return array
*/
public function getBackupDirProgress(string $backup): array
{
$tmpLogFile = $this->getTmpLogFile($backup);
if(file_exists($tmpLogFile))
{
$log = json_decode(file_get_contents($tmpLogFile), true);
return empty($log) ? array() : $log;
}
return array('allCount' => 0, 'count' => 0);
}
/**
* Process filesize.
*
* @param int $fileSize
* @access public
* @return string
*/
public function processFileSize(int $fileSize): string
{
$bit = 'KB';
$fileSize = round($fileSize / 1024, 2);
if($fileSize >= 1024)
{
$bit = 'MB';
$fileSize = round($fileSize / 1024, 2);
}
if($fileSize >= 1024)
{
$bit = 'GB';
$fileSize = round($fileSize / 1024, 2);
}
return $fileSize . $bit;
}
/**
* Process backup summary.
*
* @param string $file
* @param int $count
* @param int $size
* @param array $errorFiles
* @param int $allCount
* @param string $action add|delete
* @access public
* @return bool
*/
public function processSummary(string $file, int $count, int $size, array $errorFiles = array(), int $allCount = 0, string $action = 'add'): bool
{
$backupPath = dirname($file);
$fileName = basename($file);
$summaryFile = $backupPath . DS . 'summary';
if(!file_exists($summaryFile) and !touch($summaryFile)) return false;
$summary = json_decode(file_get_contents($summaryFile), true);
if(empty($summary)) $summary = array();
if($action == 'add')
{
$summary[$fileName]['allCount'] = $allCount;
$summary[$fileName]['errorFiles'] = $errorFiles;
$summary[$fileName]['count'] = $count;
$summary[$fileName]['size'] = $size;
}
else
{
unset($summary[$fileName]);
}
if(file_put_contents($summaryFile, json_encode($summary))) return true;
return false;
}
/**
* Get disk space.
*
* @param string $backupPath
* @access public
* @return string
*/
public function getDiskSpace(string $backupPath): string
{
$nofile = strpos($this->config->backup->setting, 'nofile') !== false;
$diskFreeSpace = disk_free_space($backupPath);
$backFileSize = 0;
if(!$nofile)
{
$appRoot = $this->app->getAppRoot();
$appRootSize = $this->getDirSize($appRoot);
$backFileSize = $appRootSize - $this->getDirSize($appRoot . 'tmp') - $this->getDirSize($appRoot . 'www/data/course');
}
$backSqlSize = $this->dao->select('sum(data_length+index_length) as size')
->from('information_schema.tables')
->where('TABLE_SCHEMA')->eq($this->config->db->name)
->groupBy('TABLE_SCHEMA')
->fetch('size');
return $diskFreeSpace . ',' . ($backFileSize + $backSqlSize);
}
/**
* Get directory size.
*
* @param string $dir
* @access public
* @return int
*/
public function getDirSize(string $dir): int
{
if(!file_exists($dir)) return 0;
if(!is_readable($dir)) return 0;
$totalSize = 0;
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);
foreach($iterator as $file) $totalSize += $file->getSize();
return $totalSize;
}
}