15 Commits

622 changed files with 101838 additions and 29153 deletions

20
UPDATE.md Normal file
View File

@@ -0,0 +1,20 @@
## PicHome beta3.1 更新说明
### 1.增加billfish库文件导入支持
### 2.库设置内容更改,显示当前库连接状态,断开为不可用;增加普通目录文件缩略图生成数量显示,
整体优化库设置在未导入之前也可对库进行管理操作
### 3.修复系统设置界面因二级域名导致的白页问题
### 4.修复标签分类等数据显示异常问题;不可用状态的库将不在列表页展示其内容
### 5.修复下载时提示文件不存在的bug
### 6.优化删除逻辑,将更快清理冗余数据
### 7.优化导入逻辑
### 8.优化访问效率
### 9.其他已知bug修复

View File

@@ -130,7 +130,7 @@ function html_login_form() {
$sid = getglobal('sid'); $sid = getglobal('sid');
$avatarstatus=getglobal('avatarstatus','member'); $avatarstatus=getglobal('avatarstatus','member');
if(!$uid ){ if(!$uid ){
$avastar ='<img src="'.($_G['setting']['sitelogo']?\IO::getFileUri('attach::'.$_G['setting']['sitelogo']):'static/image/common/logo.png').'" />'; $avastar ='<img src="'.($_G['setting']['sitelogo']?\IO::getFileUri('attach::'.$_G['setting']['sitelogo']):'data/attachment/sitelogo/sitelogo.png').'" />';
}else{ }else{
$avastar = avatar_block($uid); $avastar = avatar_block($uid);
} }

View File

@@ -5,10 +5,10 @@ d8a7e6b6f5a2f94640bc7b5397f6585d *admin/language/zh-CN/lang.php
51bcacee1c7fed967c6f91b256e9c139 *admin/login/images/adminlogin.css 51bcacee1c7fed967c6f91b256e9c139 *admin/login/images/adminlogin.css
d3af6beed6f4c5941d8474d8c30de6ab *admin/login/images/bg_login.gif d3af6beed6f4c5941d8474d8c30de6ab *admin/login/images/bg_login.gif
0f31ffb005308e69393850d6704a5743 *admin/login/images/login_title.gif 0f31ffb005308e69393850d6704a5743 *admin/login/images/login_title.gif
c3ed53246c61a74dca37236067d3ba56 *admin/login/login.php 8b43d60b9f6b725670aae0a0eefc1761 *admin/login/login.php
2ccb26dbc4099faa5579c6c0d5727623 *admin/login/updatesession.php 2ccb26dbc4099faa5579c6c0d5727623 *admin/login/updatesession.php
cd5af5197f085d31563c357bf2b3f933 *admin/scripts/admin.js cd5af5197f085d31563c357bf2b3f933 *admin/scripts/admin.js
2eead28813ab73fc1f0c84d01e6ba64a *admin/system/common.php a6964db4b95a3d7fc276d190f92a9542 *admin/system/common.php
a60c2224558c2b82fbc7c5298df8aa5f *admin/system/cron.php a60c2224558c2b82fbc7c5298df8aa5f *admin/system/cron.php
a3342df727581964bd15ba05ef4b74db *admin/system/database.php a3342df727581964bd15ba05ef4b74db *admin/system/database.php
9a7dd5d9cca593615256b921abcc0ab6 *admin/system/dist/css/chunk-2b4f90f7.519dec70.css 9a7dd5d9cca593615256b921abcc0ab6 *admin/system/dist/css/chunk-2b4f90f7.519dec70.css
@@ -33,13 +33,14 @@ ea41001e9a9735db73fd1c33f753a258 *admin/system/dist/css/chunk-vendors.4d5d56a8.c
888e61f04316f10bddfff7bee10c6dd0 *admin/system/dist/fonts/remixicon.888e61f0.ttf 888e61f04316f10bddfff7bee10c6dd0 *admin/system/dist/fonts/remixicon.888e61f0.ttf
9915fef980fa539085da55b84dfde760 *admin/system/dist/fonts/remixicon.9915fef9.woff2 9915fef980fa539085da55b84dfde760 *admin/system/dist/fonts/remixicon.9915fef9.woff2
95138f36e015ad912c37db92164f5844 *admin/system/dist/img/remixicon.95138f36.svg 95138f36e015ad912c37db92164f5844 *admin/system/dist/img/remixicon.95138f36.svg
e2f8d2bdc0ed43b3e740d749bef566a1 *admin/system/dist/index.html ae1ba44ed8a73c33b0aa0ab4a44cf523 *admin/system/dist/index.html
057184d69924bbec3848613e9d484a61 *admin/system/dist/js/chunk-2b4f90f7.ec4ac270.js 057184d69924bbec3848613e9d484a61 *admin/system/dist/js/chunk-2b4f90f7.ec4ac270.js
9915050af25ebd2a757ddda815fa2025 *admin/system/dist/js/chunk-2d0a3327.ad2684c9.js 9915050af25ebd2a757ddda815fa2025 *admin/system/dist/js/chunk-2d0a3327.ad2684c9.js
14d1eb5255f59b744a0e86b76e999f8c *admin/system/dist/js/chunk-2d0bdbc6.4ec7bc5e.js 14d1eb5255f59b744a0e86b76e999f8c *admin/system/dist/js/chunk-2d0bdbc6.4ec7bc5e.js
14d1eb5255f59b744a0e86b76e999f8c *admin/system/dist/js/chunk-2d0bdbc6.53098007.js 14d1eb5255f59b744a0e86b76e999f8c *admin/system/dist/js/chunk-2d0bdbc6.53098007.js
3b0a51a1b72121d6fc0609eb6baa3777 *admin/system/dist/js/chunk-2d0dd46d.0816c17e.js 3b0a51a1b72121d6fc0609eb6baa3777 *admin/system/dist/js/chunk-2d0dd46d.0816c17e.js
f1356ba4b41b1c2d0db9158645cfd968 *admin/system/dist/js/chunk-2d0dd46d.bd431129.js f1356ba4b41b1c2d0db9158645cfd968 *admin/system/dist/js/chunk-2d0dd46d.bd431129.js
4e26cdd7c793a4c00c5c2e7b028ed164 *admin/system/dist/js/chunk-2d0dd46d.e13ddeba.js
9db135fe644e548e0a4fe5b93f720402 *admin/system/dist/js/chunk-2d0efd3c.44a093d1.js 9db135fe644e548e0a4fe5b93f720402 *admin/system/dist/js/chunk-2d0efd3c.44a093d1.js
9db135fe644e548e0a4fe5b93f720402 *admin/system/dist/js/chunk-2d0efd3c.e5ca30a9.js 9db135fe644e548e0a4fe5b93f720402 *admin/system/dist/js/chunk-2d0efd3c.e5ca30a9.js
00fe7bb4722b6d823eafdb62c12eb80f *admin/system/dist/js/chunk-2d20fcd9.50f81306.js 00fe7bb4722b6d823eafdb62c12eb80f *admin/system/dist/js/chunk-2d20fcd9.50f81306.js
@@ -59,12 +60,13 @@ f1356ba4b41b1c2d0db9158645cfd968 *admin/system/dist/js/chunk-2d0dd46d.bd431129.j
25f102fba0aba57fcad60998d1e1c334 *admin/system/dist/js/chunk-e730cc06.3ce9a994.js 25f102fba0aba57fcad60998d1e1c334 *admin/system/dist/js/chunk-e730cc06.3ce9a994.js
328be3371bb7c2536befbfddcc64e417 *admin/system/dist/js/chunk-vendors.3b95dfe3.js 328be3371bb7c2536befbfddcc64e417 *admin/system/dist/js/chunk-vendors.3b95dfe3.js
5247e802fd0efbbe8eb80cd9f6a34540 *admin/system/dist/js/index.b5ff203c.js 5247e802fd0efbbe8eb80cd9f6a34540 *admin/system/dist/js/index.b5ff203c.js
e6b823145386281984301ad83fcf96fe *admin/system/dist/js/index.d36cff59.js
904b573ab459ffaba51c33b5851d0f5d *admin/system/dist/js/index.d77cc092.js 904b573ab459ffaba51c33b5851d0f5d *admin/system/dist/js/index.d77cc092.js
0d548b27371bb03899d61437a8cdf8fa *admin/system/dist/js/system_temp.c7e32270.js 0d548b27371bb03899d61437a8cdf8fa *admin/system/dist/js/system_temp.c7e32270.js
554e1288867238ccbe21a7dc65fe9487 *admin/system/dzz_app_system.xml 554e1288867238ccbe21a7dc65fe9487 *admin/system/dzz_app_system.xml
239eb22317126a0067173db3fcf2b72d *admin/system/index.php 239eb22317126a0067173db3fcf2b72d *admin/system/index.php
cd0e9a1fce04adee53b60b2fef50a460 *admin/system/interface.php cd0e9a1fce04adee53b60b2fef50a460 *admin/system/interface.php
428aa41021aaa0baa182abf834d66f8b *admin/system/intsystemupgrade.php cf27e39ac4900fcee0aa0f6e2f7a11ac *admin/system/intsystemupgrade.php
56cfc3e9d0b5e12680907b08abaa704b *admin/system/language/en-US/lang.php 56cfc3e9d0b5e12680907b08abaa704b *admin/system/language/en-US/lang.php
8c248279a72f8cc2dc116afcd3894b7f *admin/system/language/zh-CN/lang.php 8c248279a72f8cc2dc116afcd3894b7f *admin/system/language/zh-CN/lang.php
2e29e753720225abad58e29934b1812b *admin/system/systemupgrade.php 2e29e753720225abad58e29934b1812b *admin/system/systemupgrade.php
@@ -75,7 +77,7 @@ ca1b28e030ced95bc1b2d3a8395a0c12 *admin/system/template/database.htm
e75e7d98ec5df282d171f0e91b189ee8 *admin/system/template/upgrade.htm e75e7d98ec5df282d171f0e91b189ee8 *admin/system/template/upgrade.htm
08fc7d5efcabe2051ed6b5d35653cf08 *admin/system/template/upgrade_iframe.htm 08fc7d5efcabe2051ed6b5d35653cf08 *admin/system/template/upgrade_iframe.htm
6a3755f9351b38a13f1dee06a662cb8b *admin/system/updatecache.php 6a3755f9351b38a13f1dee06a662cb8b *admin/system/updatecache.php
5c52541348e0e25d1e9930ea4bc1fddd *admin/system/upgradeinterface.php ae1fa5e1948b4748d7426fe887646a7f *admin/system/upgradeinterface.php
518d358371d639f89c13606502bc9a76 *admin/systemlog/admin.php 518d358371d639f89c13606502bc9a76 *admin/systemlog/admin.php
a1f9ec6e949f265a869e5e2dd9115aeb *admin/systemlog/classes/systemlog.php a1f9ec6e949f265a869e5e2dd9115aeb *admin/systemlog/classes/systemlog.php
1266e0a961f6092def97c6e62c4c61ee *admin/systemlog/dzz_app_systemlog.xml 1266e0a961f6092def97c6e62c4c61ee *admin/systemlog/dzz_app_systemlog.xml
@@ -90,8 +92,8 @@ abe78a94ae6f33d188e25d7047f5b0f2 *admin/systemlog/template/admin.htm
455bd79582a8bea73faec69555b69eb3 *admin/systemlog/uninstall.php 455bd79582a8bea73faec69555b69eb3 *admin/systemlog/uninstall.php
5bb95d9914284024bfbde8e8cb60286f *admin/template/header_left.htm 5bb95d9914284024bfbde8e8cb60286f *admin/template/header_left.htm
853b016ecacafd2eccc8f35a5ab8b276 *admin.php 853b016ecacafd2eccc8f35a5ab8b276 *admin.php
af8d986a5c78a4d104938291c6e541ca *avatar.php 5e5eb249d06b26d6c26cc8fb30b78892 *avatar.php
d0029be05cb9f585dcbcc8dd34817b81 *config/config_default.php 7c0fc1919713ed9e6dd9982bc2bc401b *config/config_default.php
a316f263465d0751621451addf43c399 *config/config_frame.php a316f263465d0751621451addf43c399 *config/config_frame.php
77fc6ae224ef71e20a515569babe71db *core/adminstart.php 77fc6ae224ef71e20a515569babe71db *core/adminstart.php
9173cf90c5a53af23a011e81dc6e926a *core/class/cache/cache_file.php 9173cf90c5a53af23a011e81dc6e926a *core/class/cache/cache_file.php
@@ -107,10 +109,10 @@ bfd0cbd4c4120f0bef89fb2898332f2b *core/class/class_bbcode.php
bcfb2e3e9c3ff2018f356176a1cf43a2 *core/class/class_core.php bcfb2e3e9c3ff2018f356176a1cf43a2 *core/class/class_core.php
723a351225f0f7562784e35f8607ce29 *core/class/class_DbException.php 723a351225f0f7562784e35f8607ce29 *core/class/class_DbException.php
3ce9db683150a76cd033167c7e281391 *core/class/class_Des.php 3ce9db683150a76cd033167c7e281391 *core/class/class_Des.php
b950274816c263377559b82772efaa04 *core/class/class_FileDownload.php 212cc7650e4798754337b1fefb291827 *core/class/class_FileDownload.php
b6b0b9dc4773307d80f9215ed5122361 *core/class/class_GifMerge.php b6b0b9dc4773307d80f9215ed5122361 *core/class/class_GifMerge.php
af51c6833e10f995e5a1ccb1afcec04d *core/class/class_image.php 4793dcfc740be53d3fc40ba98562558a *core/class/class_image.php
e99bae42416330fb30a5d601e3849fee *core/class/class_ImagePalette.php d301e008d382be1af825d77bc993d423 *core/class/class_ImagePalette.php
1b836428237ca8d2bb58695cbe37df67 *core/class/class_JSSDK.php 1b836428237ca8d2bb58695cbe37df67 *core/class/class_JSSDK.php
986ad79bf8a9bff90c64c82918c0fa74 *core/class/class_Minifier.php 986ad79bf8a9bff90c64c82918c0fa74 *core/class/class_Minifier.php
8987c817fd10d12a23dc995a40e00869 *core/class/class_PHPExcel.php 8987c817fd10d12a23dc995a40e00869 *core/class/class_PHPExcel.php
@@ -133,7 +135,7 @@ aa439e22adcd2c891dc614294517c6f4 *core/class/dzz/apprun.php
9c2c276408444f71e3e446d8d6b3cf85 *core/class/dzz/config.php 9c2c276408444f71e3e446d8d6b3cf85 *core/class/dzz/config.php
df04f6a6a7204e01a17da726e0568990 *core/class/dzz/Datareturn.php df04f6a6a7204e01a17da726e0568990 *core/class/dzz/Datareturn.php
59cf921f33bd5d5389829c76a4375398 *core/class/dzz/dzz_admincp.php 59cf921f33bd5d5389829c76a4375398 *core/class/dzz/dzz_admincp.php
821501a8c839ea0889b6709e582f5298 *core/class/dzz/dzz_app.php 832d56c7f9f2f4f750ce2905f0fb0d3b *core/class/dzz/dzz_app.php
06e1a108fe8f8945f27acc196d698578 *core/class/dzz/dzz_base.php 06e1a108fe8f8945f27acc196d698578 *core/class/dzz/dzz_base.php
90f9c47b4835ebe4512b15d8249c8d0c *core/class/dzz/dzz_censor.php 90f9c47b4835ebe4512b15d8249c8d0c *core/class/dzz/dzz_censor.php
067b118a5932dcc4e68b68cde8fc24c9 *core/class/dzz/dzz_container.php 067b118a5932dcc4e68b68cde8fc24c9 *core/class/dzz/dzz_container.php
@@ -141,7 +143,7 @@ df04f6a6a7204e01a17da726e0568990 *core/class/dzz/Datareturn.php
7ef4a92373abeb30aa39a3b2eb207f9f *core/class/dzz/dzz_database.php 7ef4a92373abeb30aa39a3b2eb207f9f *core/class/dzz/dzz_database.php
dfd91831160826dad2b6103f17917e21 *core/class/dzz/dzz_error.php dfd91831160826dad2b6103f17917e21 *core/class/dzz/dzz_error.php
d403c1ad69bcff351d1190dce2149e39 *core/class/dzz/dzz_ftp.php d403c1ad69bcff351d1190dce2149e39 *core/class/dzz/dzz_ftp.php
fd7a9da1373125b0d37910be8c2979c2 *core/class/dzz/dzz_io.php 8875d1f5668a8d89f1a2e95d8c3a34e4 *core/class/dzz/dzz_io.php
fc1a94ac8a1490bd69b1880395f69999 *core/class/dzz/dzz_memory.php fc1a94ac8a1490bd69b1880395f69999 *core/class/dzz/dzz_memory.php
eb5c167211bc5df07bcb8dad61c3649a *core/class/dzz/dzz_mime.php eb5c167211bc5df07bcb8dad61c3649a *core/class/dzz/dzz_mime.php
05d0c988894ba7e0de9c0a905bdee20b *core/class/dzz/dzz_mode.php 05d0c988894ba7e0de9c0a905bdee20b *core/class/dzz/dzz_mode.php
@@ -193,11 +195,19 @@ c78bc70a04ffabf583c0ba733679d38f *core/class/table/table_app_relative.php
d75145f67e4bc4e6e7466fbcdcce70f6 *core/class/table/table_app_user.php d75145f67e4bc4e6e7466fbcdcce70f6 *core/class/table/table_app_user.php
a3446196ae1775b239f4c6973de5633b *core/class/table/table_attachment.php a3446196ae1775b239f4c6973de5633b *core/class/table/table_attachment.php
968a04f0828be632577394f16153cee3 *core/class/table/table_cache.php 968a04f0828be632577394f16153cee3 *core/class/table/table_cache.php
1eac3ff80cda050e351addd992101fde *core/class/table/table_connect.php
9a1ca8983e818b981f100273b6901ea2 *core/class/table/table_connect_disk.php
6fb492decbc1d6a30208a4736a542ff0 *core/class/table/table_connect_ftp.php
82080cb532120942f7ff5f2c58ec294b *core/class/table/table_connect_onedrive.php
3aea5f157c299f32393d75a7a89861d9 *core/class/table/table_connect_pan.php
9f0b065a0b534383933e15da5dfd4acb *core/class/table/table_connect_storage.php
51535981c41dfd78d748944eb07cf214 *core/class/table/table_cron.php 51535981c41dfd78d748944eb07cf214 *core/class/table/table_cron.php
f62eb658ab84ebc0d4d29304db39c1ee *core/class/table/table_district.php f62eb658ab84ebc0d4d29304db39c1ee *core/class/table/table_district.php
5b47c663f64792c001ece96a7b93536d *core/class/table/table_failedlogin.php 5b47c663f64792c001ece96a7b93536d *core/class/table/table_failedlogin.php
718833cec496c58540ec6f5a6200b6c5 *core/class/table/table_hooks.php 718833cec496c58540ec6f5a6200b6c5 *core/class/table/table_hooks.php
379f64b4546595c05c5ee8dca0c5b768 *core/class/table/table_imagetype.php 379f64b4546595c05c5ee8dca0c5b768 *core/class/table/table_imagetype.php
d406545402b932f027d01d0eea077d09 *core/class/table/table_local_router.php
c6e3522aaedb7b8d240c818b424777c0 *core/class/table/table_local_storage.php
b333c9e8748737d29d090f31a502a147 *core/class/table/table_mailcron.php b333c9e8748737d29d090f31a502a147 *core/class/table/table_mailcron.php
01da2848647c78326eb66e42b4d6b695 *core/class/table/table_mailqueue.php 01da2848647c78326eb66e42b4d6b695 *core/class/table/table_mailqueue.php
437f394ff257753b19aa059e0d18973f *core/class/table/table_notification.php 437f394ff257753b19aa059e0d18973f *core/class/table/table_notification.php
@@ -209,18 +219,23 @@ b333c9e8748737d29d090f31a502a147 *core/class/table/table_mailcron.php
f9fea2c25dbea100b27386dde7057be4 *core/class/table/table_organization_upjob.php f9fea2c25dbea100b27386dde7057be4 *core/class/table/table_organization_upjob.php
7e02ce47e363f56c798a7c261cccc6a4 *core/class/table/table_organization_user.php 7e02ce47e363f56c798a7c261cccc6a4 *core/class/table/table_organization_user.php
37e3c23f4c36ba1167bc433f18e8ce93 *core/class/table/table_pichome_comments.php 37e3c23f4c36ba1167bc433f18e8ce93 *core/class/table/table_pichome_comments.php
5758c6bf142b4bf50c6b05ec908e1604 *core/class/table/table_pichome_folder.php dc169efe36fdf79623277fb5a538c673 *core/class/table/table_pichome_ffmpeg_record.php
3737c426a306d4bea84af3b62abcc98d *core/class/table/table_pichome_folderresources.php 64030519d059cc061b9cc990b2ed9b08 *core/class/table/table_pichome_folder.php
26298713afbbb276e365e2b440454321 *core/class/table/table_pichome_palette.php 15cc26415b076bb08eeed7f76c40c45b *core/class/table/table_pichome_folderresources.php
f87c22d75232ca68d29ef25f6fe600a9 *core/class/table/table_pichome_resources.php fb390b2cfce67236a7263549a430868b *core/class/table/table_pichome_folder_relation.php
2c3c0805dc3570b1c396c99d6bf21e18 *core/class/table/table_pichome_resourcestag.php 180233f6f8d234986280df5c3821fe24 *core/class/table/table_pichome_imagickrecord.php
74c9554b3b2424e3225b6deb0319e445 *core/class/table/table_pichome_resources_attr.php a2a946f8d3a0180db50b1c7435d9516a *core/class/table/table_pichome_palette.php
3c4654178b6881addc9ff4d22e53f4dc *core/class/table/table_pichome_searchrecent.php ec314812cba390bac62835cce5efdfbf *core/class/table/table_pichome_resources.php
534452d059df927d062dac5bcd7b0de6 *core/class/table/table_pichome_resourcestag.php
c08ce988dad5ccead193db0a7f79b4f2 *core/class/table/table_pichome_resources_attr.php
09db8f5c9d2966f503bee5a4c6d6cc32 *core/class/table/table_pichome_resources_relation.php
4fb898320b47959764b3f09a5489418b *core/class/table/table_pichome_searchrecent.php
757655270a99be70f9e781fbae5f6634 *core/class/table/table_pichome_share.php 757655270a99be70f9e781fbae5f6634 *core/class/table/table_pichome_share.php
fafb2bf10eed9314bc2bf2d6b32d84b9 *core/class/table/table_pichome_tag.php fafb2bf10eed9314bc2bf2d6b32d84b9 *core/class/table/table_pichome_tag.php
aeceea90c6f02af3977b0e8bc4b93430 *core/class/table/table_pichome_taggroup.php 02ef950574c3af62f7b13fd61a61c2ce *core/class/table/table_pichome_taggroup.php
d47609a71b53ed6e9f782bd1c8ed9f21 *core/class/table/table_pichome_tagrelation.php d36c3e504e4666b6a9301699ebeeeaa5 *core/class/table/table_pichome_taggroup_relation.php
ca284293fe8ad50612314166a5a42910 *core/class/table/table_pichome_vapp.php 1969387f935173b42f34c33c426e1fb7 *core/class/table/table_pichome_tagrelation.php
15537ad5c8fac2620c4199d07038a126 *core/class/table/table_pichome_vapp.php
eea6b39fd13b5fdf18052c7733adb369 *core/class/table/table_process.php eea6b39fd13b5fdf18052c7733adb369 *core/class/table/table_process.php
ffc8c199da703d941c493fa317785611 *core/class/table/table_session.php ffc8c199da703d941c493fa317785611 *core/class/table/table_session.php
774bda01812449ffa4819b0be241dc4e *core/class/table/table_setting.php 774bda01812449ffa4819b0be241dc4e *core/class/table/table_setting.php
@@ -239,13 +254,15 @@ d5b0e7dc291a731a5c184d97baecf2df *core/class/table/table_user_profile_setting.ph
bc2e189cfaacbdb84ddceb3a0abdcf92 *core/class/table/table_user_verify_info.php bc2e189cfaacbdb84ddceb3a0abdcf92 *core/class/table/table_user_verify_info.php
692cda4c6ad17e87e1edefb7251d0116 *core/class/table/table_user_wechat.php 692cda4c6ad17e87e1edefb7251d0116 *core/class/table/table_user_wechat.php
ca64f852f9c9442d65fa30ed279c6d6c *core/coreBase.php ca64f852f9c9442d65fa30ed279c6d6c *core/coreBase.php
f869d55a8b656f7e51ae88b928b91e6e *core/core_version.php 25f7c644790916b7121bd38d1301d1ea *core/core_version.php
d90d23b8deb20cef2c43e66725ec2813 *core/cron/cron_cache_cleanup_week.php d90d23b8deb20cef2c43e66725ec2813 *core/cron/cron_cache_cleanup_week.php
d6f619ef3f14590fc5abc6ce76954d25 *core/cron/cron_cache_pichome_searchhot.php 540843e90244b66d31a1deb8c882d238 *core/cron/cron_cache_pichome_searchhot.php
09bf107dfc58f0424b0245834d221a42 *core/cron/cron_clean_notification_month.php 09bf107dfc58f0424b0245834d221a42 *core/cron/cron_clean_notification_month.php
56383d04d4bbd0537c55ff7ed42536f8 *core/cron/cron_database_backup.php 822967cb3ea4c82e3512d23af1a72f77 *core/cron/cron_pichome_delete.php
d0cc3acfbff044dbb11da3ba9019c58d *core/cron/cron_pichome_check_library.php b9d93753f597cf46343c07234d01a37b *core/cron/cron_pichome_getimagecolor.php
8e19dc5a19821962504d18efc6e06bdf *core/cron/cron_pichome_updatelibrary_file.php c04ccafee38c3e06208024a7cbe8a656 *core/cron/cron_pichome_getvideoinfo.php
3925c2ef1804631507efcdae43ec1108 *core/cron/cron_pichome_getwideothumb.php
dc6a0c77112286b82c5742d0b93c6b6d *core/cron/cron_pichome_updatelibrary_file.php
e437812ec0dbb1050daa691303544d1c *core/dzzstart.php e437812ec0dbb1050daa691303544d1c *core/dzzstart.php
d4c7872572f6965e3173a12153dd758b *core/function/cache/cache_fields_optional.php d4c7872572f6965e3173a12153dd758b *core/function/cache/cache_fields_optional.php
98b3024c7107943c8573cf473d624710 *core/function/cache/cache_fields_register.php 98b3024c7107943c8573cf473d624710 *core/function/cache/cache_fields_register.php
@@ -255,9 +272,9 @@ ec9cb962601e7d0d092e7b6e09ba8dc2 *core/function/cache/cache_profilesetting.php
f0e6d9900f7db48051ee4fdea06c8889 *core/function/cache/cache_setting.php f0e6d9900f7db48051ee4fdea06c8889 *core/function/cache/cache_setting.php
cc7c6903e4401fdb29424890e2084a91 *core/function/cache/cache_usergroups.php cc7c6903e4401fdb29424890e2084a91 *core/function/cache/cache_usergroups.php
2ce5a4d7e34bca8432b5885b14b25574 *core/function/cache/cache_userstats.php 2ce5a4d7e34bca8432b5885b14b25574 *core/function/cache/cache_userstats.php
e3e91bb4a446a73d1744ca195e39066a *core/function/function_cache.php a4656352d5a04b447ae9ffa64e2474e7 *core/function/function_cache.php
c006c70d2a5b50212a02a31eff50c71d *core/function/function_code.php c006c70d2a5b50212a02a31eff50c71d *core/function/function_code.php
3727ad4836f9dbdacb0d6ce0f44ee443 *core/function/function_core.php 86342eb3ddd47606c7e1ced02f4cc54e *core/function/function_core.php
52776d2eac0619ddad1ca9762781a4b0 *core/function/function_filesock.php 52776d2eac0619ddad1ca9762781a4b0 *core/function/function_filesock.php
92ebd7558fd1c9291179a91fb3c2f880 *core/function/function_mail.php 92ebd7558fd1c9291179a91fb3c2f880 *core/function/function_mail.php
aff9e34d19a59c6c356696f8f2540618 *core/function/function_message.php aff9e34d19a59c6c356696f8f2540618 *core/function/function_message.php
@@ -286,10 +303,17 @@ d319f5d1c4053a4f85e52230cb2d9610 *core/template/default/common/header_simple_sta
6e84ec265ebde27f99afe48722ac0324 *core/template/default/common/header_simple_start_none.htm 6e84ec265ebde27f99afe48722ac0324 *core/template/default/common/header_simple_start_none.htm
074801b30c5e8b069f72818e630edccc *core/template/default/common/header_simple_start_shou.htm 074801b30c5e8b069f72818e630edccc *core/template/default/common/header_simple_start_shou.htm
be29b10ff591a7ba8b75a7ab5c5795fa *core/template/default/common/header_start.htm be29b10ff591a7ba8b75a7ab5c5795fa *core/template/default/common/header_start.htm
d24fa8de99184e15ae29538095c86ca5 *core/template/default/common/mobile_about.htm
3a2064d77bccd225deefdebb889a60a9 *core/template/default/common/mobile_simple_process.htm
9f398a015b731731c1ebf0f679392ff7 *core/template/default/common/mobile_simple_start.htm
c2e9e848f0ebc7bfd0849091242553b0 *core/template/default/common/safechk.htm c2e9e848f0ebc7bfd0849091242553b0 *core/template/default/common/safechk.htm
79fa787397d5da73910266ef70cb3c34 *core/template/default/common/seccheck.htm 79fa787397d5da73910266ef70cb3c34 *core/template/default/common/seccheck.htm
1cb4d8cee04c97c0a580f882bc9da940 *core/template/default/common/showmessage.htm 1cb4d8cee04c97c0a580f882bc9da940 *core/template/default/common/showmessage.htm
5311bfefd0c1e992725939ec7822db95 *core/template/default/common/showtips.htm 5311bfefd0c1e992725939ec7822db95 *core/template/default/common/showtips.htm
258c2c32ae45bc1c86894e4f7de3e7cf *core/template/default/common/wx_ajax.htm
6bac1116a4ed718d8b22c9d724d5b4b3 *core/template/default/common/wx_appinfo.htm
9990d7555fdf8210fa4a2a8672f20fd5 *core/template/default/common/wx_menu.htm
768cfd48e43c4a205b1d40ab82acde57 *core/template/default/common/wx_mpinfo.htm
b3264d636cfbc3e4e435c55864714f97 *cron.php b3264d636cfbc3e4e435c55864714f97 *cron.php
10a6d028457a6f41b495f3cfac282839 *data/attachment/appico/201712/21/094100vm3fpb41fo6a3x3f.png 10a6d028457a6f41b495f3cfac282839 *data/attachment/appico/201712/21/094100vm3fpb41fo6a3x3f.png
bbcc53d0fdd2a6d7ffcb6d093666d82c *data/attachment/appico/201712/21/095758ft5y66jma56y66vj.png bbcc53d0fdd2a6d7ffcb6d093666d82c *data/attachment/appico/201712/21/095758ft5y66jma56y66vj.png
@@ -333,6 +357,7 @@ bbcc53d0fdd2a6d7ffcb6d093666d82c *data/attachment/appico/201712/21/183821do7f3qj
2e04f226be54274ad6f1e2a2743c1fe9 *data/attachment/appico/201712/21/184312rthhhg9oujti9tuu.png 2e04f226be54274ad6f1e2a2743c1fe9 *data/attachment/appico/201712/21/184312rthhhg9oujti9tuu.png
c2185a7016a3def7be9915a6c645aa85 *data/attachment/appico/201712/21/210318m408uxuuq0464820.png c2185a7016a3def7be9915a6c645aa85 *data/attachment/appico/201712/21/210318m408uxuuq0464820.png
76b1f31f8f51dec811759dc9a341b440 *data/attachment/appico/201712/21/210531aarsufnolsrao88u.png 76b1f31f8f51dec811759dc9a341b440 *data/attachment/appico/201712/21/210531aarsufnolsrao88u.png
d41d8cd98f00b204e9800998ecf8427e *data/attachment/qrcode/index.html
2894a0aaf1160440c47ecd1685115ed8 *data/attachment/sitelogo/sitelogo.png 2894a0aaf1160440c47ecd1685115ed8 *data/attachment/sitelogo/sitelogo.png
e447756e3a0f0ee86acc80120ad2e7af *data/avatar/camera.swf e447756e3a0f0ee86acc80120ad2e7af *data/avatar/camera.swf
d41d8cd98f00b204e9800998ecf8427e *data/avatar/index.html d41d8cd98f00b204e9800998ecf8427e *data/avatar/index.html
@@ -347,6 +372,319 @@ f4741b20d0983035a4db52858a0f6240 *data/cache/tags.php
d41d8cd98f00b204e9800998ecf8427e *data/sendmail.lock d41d8cd98f00b204e9800998ecf8427e *data/sendmail.lock
d41d8cd98f00b204e9800998ecf8427e *data/sendwx.lock d41d8cd98f00b204e9800998ecf8427e *data/sendwx.lock
ac153bd851d728eed4c993b38260f1c8 *dzz/class/class_encode.php ac153bd851d728eed4c993b38260f1c8 *dzz/class/class_encode.php
a3ad077bda18e4057e0b31e3b3b2eed4 *dzz/ffmpeg/class/class_fmpeg.php
a8a30984a87248b934ef8747481b2e0e *dzz/ffmpeg/classes/info.php
3ba0ebc60cd19158228e5c47f931aa80 *dzz/ffmpeg/classes/thumb.php
b0ef25e19c4aa9e96c06f5fb6f091883 *dzz/ffmpeg/composer.json
a962e01165e345d26a86a07e9e098239 *dzz/ffmpeg/composer.lock
808d6119fa0a890a2554fa07e600ba7d *dzz/ffmpeg/convert.php
b49d7db7da975848af00a7597333d12e *dzz/ffmpeg/ffmpeg/avcodec-57.dll
21ec4a51425e9afcbba190f49c67b5c5 *dzz/ffmpeg/ffmpeg/avdevice-57.dll
3ab822e6d0012eb4770597e781c14e99 *dzz/ffmpeg/ffmpeg/avfilter-6.dll
88a743faddeaf1655939b817b71ef341 *dzz/ffmpeg/ffmpeg/avformat-57.dll
189344b6d3e26d671e8e0a1f7d6cae53 *dzz/ffmpeg/ffmpeg/avutil-55.dll
82a57a3cc2fff0522baca0192a953f99 *dzz/ffmpeg/ffmpeg/ffmpeg.exe
8daea3e9e525c00efa6e02156e2844bc *dzz/ffmpeg/ffmpeg/ffplay.exe
1619f9b6ef0f64109530fc1562e30452 *dzz/ffmpeg/ffmpeg/ffprobe.exe
109731440511e75afa2c4dcbe5b2d069 *dzz/ffmpeg/ffmpeg/postproc-54.dll
91ca5f81f37690d1e05772947b38e8a0 *dzz/ffmpeg/ffmpeg/swresample-2.dll
4f49c26e951e69007d60edf054d2a37a *dzz/ffmpeg/ffmpeg/swscale-4.dll
17d36f2ee186514a290fab9baaeac65e *dzz/ffmpeg/getinfo.php
671f1a782b7dc9395519933bffb967fe *dzz/ffmpeg/thumb.php
723b27a2bb73cccf492ed827bc528a5c *dzz/ffmpeg/vendor/alchemy/binary-driver/LICENSE
9608b8205db23a377edd4f328af949bd *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/AbstractBinary.php
96d510df2561b5a55bc62b0d04db9861 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/BinaryDriverTestCase.php
8a896d9d707fb67f1962f6a976e5d231 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/BinaryInterface.php
0fd46f40c4e3202a8164737a714264cf *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/Configuration.php
0954b1eef6121b68dad4d80c21894215 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ConfigurationAwareInterface.php
af7c5c6f7cfa3f1c126beee3a411c242 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ConfigurationInterface.php
68d2357cdae12d1ec480769225fb1301 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/Exception/ExceptionInterface.php
f801ad0033116492e4ad41279c809297 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/Exception/ExecutableNotFoundException.php
6f2f62e174ef158d61faf6e152a6e929 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/Exception/ExecutionFailureException.php
dd366e3976e72bae0a361f09a2e9b083 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/Exception/InvalidArgumentException.php
ba6a4cd48e3e6860444ea98172efa81e *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/Listeners/DebugListener.php
e8044cd614f729099aaf06cec098ee39 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/Listeners/ListenerInterface.php
b90a16f125bbaa495fa237f47608cf2b *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/Listeners/Listeners.php
a8cd3209927f31a8dc2ba30f9f2a9596 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessBuilderFactory.php
410478165a365ce9137de8f4b2c96394 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessBuilderFactoryAwareInterface.php
696828fe1a99af54fd769010a7414186 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessBuilderFactoryInterface.php
bae08a03039e18b99ab2c54af139bece *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php
9b93428a45daf67408d24308d5fee8a0 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunnerAwareInterface.php
a4f633a45e925b74f9e6183860ea5afe *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunnerInterface.php
00a1dde07d5a01b87b8d88144d28801e *dzz/ffmpeg/vendor/autoload.php
8645d3a4e3ad87e7cf4d88a46717aab4 *dzz/ffmpeg/vendor/composer/autoload_classmap.php
6c4d89647de36d487eb4df5a15811ca2 *dzz/ffmpeg/vendor/composer/autoload_files.php
ebd044dc40fc5b9a604f2cbedae3ed50 *dzz/ffmpeg/vendor/composer/autoload_namespaces.php
b2ddf323d41ad0ca5a7b03e222b3370e *dzz/ffmpeg/vendor/composer/autoload_psr4.php
dd75da54153df0b1f03c313210fc1959 *dzz/ffmpeg/vendor/composer/autoload_real.php
d1d9b5c6305953362eebbff9674e7bc2 *dzz/ffmpeg/vendor/composer/autoload_static.php
a0899dd7d97c25fe1d872a542afa6081 *dzz/ffmpeg/vendor/composer/ClassLoader.php
9afc807b5b1b559c7ad25d6888bf81f1 *dzz/ffmpeg/vendor/composer/installed.json
955d5fe58c231244f6b49000f383b5e2 *dzz/ffmpeg/vendor/composer/LICENSE
a50fd5393dcb41620fc41c3f518bcf4c *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
e35ef24b12fbe5f2f84ccc672f98cdb0 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcuCache.php
618e9af3b12fe878cea9ce5e423eca20 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php
b5d73afc161bfed166625924c8ea762b *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
26d87077569e295c6756c1570f77a09f *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
4a964374647e8e382d3b27a3cc9a9e31 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php
98f3f773762ebc38ce061247c4efed42 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
12e4b88c5d898376c87ed9479e0dd2cc *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseBucketCache.php
d8e9b8d2642d1a29d0aa7213798b63d4 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php
bc8beef2fe80e0d04cb928f510fba851 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ExtMongoDBCache.php
312b27938b2fdc1c70c6901e5bc33057 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
ee7c6d7c0e1a14d0aa1f5c903e918815 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
0f64b4439430153933765736a9ece6f8 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
f74ee5c840f2c5d271f39e209079314f *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/LegacyMongoDBCache.php
3fdf86427a4f0109ce9341dc50fd8269 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
88bc9e093e2eec68eef288b087bca15b *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
bf868cd271e3d6eb99d9ab3d12b5b539 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
f816fa843b55fb7c778714d306123f40 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php
5414d3be44a1ecaf0bfc6639482282da *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php
9d62291c86b91e00a2e6edfbabf48a10 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiOperationCache.php
3c2d9b2edcb0762627106a72a9978ca6 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiPutCache.php
7cf3f4c5e5ed5fb510a29e45e67e82eb *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php
ed133f1e310c867bc9491be1b1dd218f *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
37071709227fafb6d2367192fb152ca7 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
7df56816c0abbae3416f818b12af2c58 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php
0db5e9f19f4759cf6799d64c60a6fea5 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
762a9eeeaeb3beeb0d4d98a8c6bff3ad *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
227a4b0d014902b28174694e70320f96 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php
e850799dda7685b2f751233ae87ce0af *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php
1ce542c953e7b3331919275f0b6ec787 *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php
b99e9832e2dca5d3959db88eae740abf *dzz/ffmpeg/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php
6eb5e32a565f247832c2a00cf90ded7c *dzz/ffmpeg/vendor/doctrine/cache/LICENSE
d80f695b57baf75c3debfcfd1ac556ee *dzz/ffmpeg/vendor/evenement/evenement/LICENSE
93f10e7029e0340b10df1cbcfa398ebc *dzz/ffmpeg/vendor/evenement/evenement/src/Evenement/EventEmitter.php
29c942ea1b2d4f5578739c0bcd378a95 *dzz/ffmpeg/vendor/evenement/evenement/src/Evenement/EventEmitterInterface.php
dbb142914df6f2cca7573ae649ce2a9c *dzz/ffmpeg/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php
b9ec4658695d81c2087bb974eabc8adf *dzz/ffmpeg/vendor/monolog/monolog/LICENSE
2873d712055688c2b5b669c19b68b8f4 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/ErrorHandler.php
85f1ca2b1e239ba8d8c0e55c1d6e28e9 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php
8be3318942ea2a823a0508c2f3df9795 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php
ba10a9093d8c9fe1a2b2acbbc52803fd *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php
e992598b2f929f75aacd6de842eade90 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php
6393c1db9899b0f9e3fc4ad3d6a898dd *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php
83aaf607fb20ee8ea58ccba235dc2886 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php
228d3c0e1ef63cb6ed003fd65265c3b3 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php
27360f4944089a943597a2c0c08518ee *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php
d0242dde02733795e07ea48132b97611 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php
f5a72f125c3028e31dcc502c74ddc8e6 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php
73bd07ce780cf8deb8c4216c8b0f7829 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php
069d640fae028a0a9aeee615beb178ab *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php
a6010a1af0a4f21bcc55867afd40e161 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php
9934bbe7fbf1a7536cbabf0bb31fac8b *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php
0834b1ae7cf8f9db2d3ccf40c9e8238b *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php
63f1d9ccfadec8e2f6ebd22ff041bd69 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php
837be8c4a76bc37c36ef1f37d83de8b8 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
3e697fe71a14d7052558ef2637a463a8 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php
89ef97bd70a1876bbf0a151914a4ce26 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php
0645ca35376e49867ebf7ccb634e8ca1 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php
3ebccf758cc0a237686c060d1b78de6b *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php
40763f1c347ac1c67d4ef49f3f5edaa5 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php
dabb90eb921328aeb4d8a0c8df2b4e2b *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php
c73840367d25bd3fd774c84e0b791aa2 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php
03a2418311682d52f8ac22ff5652cd4a *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php
112f1ead45ef6f90324676d7d0f1ec6b *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php
abc48686f395a089e55a2ec1a4fe4b78 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php
f2dd1a8fce0c3bb7d81a858af3ce9e8d *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php
8b14afbfb4ec910b55be774e612d79f0 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php
60ed22e1b4289a5210f9d8358b3d8f24 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php
2d087808e02f95080212cc392aa5b2c5 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php
87e09424f9437e095915c57aad7f05e0 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php
b0d0c657952bc1d8a8337a6516abd097 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php
f31a9ad59022efe0de63808d275a0031 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php
d858b5b5a26b7f8a60c6f687d8dbd0be *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php
b878045f62f8872d866d24fb23b47b44 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php
0c3e3f8711aa3641227a7cfd11dfa100 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php
94c7a4507949751276a6fef75b92a529 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php
f9577a2c76bd8b9da97907dda0da0899 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php
7eaa5f44f2c8c9bcefbfa8ddd82beba7 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php
a14d882a9afb7d9e3a5e2daa912cb3f5 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php
a1f1650992d82ebb8fd99fb8a1ad011a *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php
5594ae8adf68ccffb00232e97a887d72 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php
65fd860619a84b5b548d803f1450f18f *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php
8149a123e81e3dfee9185d5f14eccfc0 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php
c5b8e8b997dad122fb26d420d7eed287 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php
beee53f1c85666d49978d0d8c0324a2c *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php
e4702d256f19f3a3b6ee8f61c84d3a2b *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php
780cc72b741c1299f2886e21a80188d5 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php
99ec7108652f07752a6e4585f781ee92 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php
44ade8a7a6002a6210b36c26c89cbacb *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php
119019e45d2c65cbe85a3aadc28771fe *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php
77c5f0d82d6498b12f3eee4a0a282b2a *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php
252c1e7aa89297f3b65138c5aa12f222 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php
31553b7fa8087df65179bdc673d678ae *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php
e8c8672646919427bb614bf2e7fe8710 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php
807422b20660ffffc7fb99c106ceb4dc *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php
efd4fa559b9b67d87d7ae287fae71345 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php
b94192bac0cab9928cbce17b8dfa9d6f *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php
99bfe1a418679c198c97a3270eb46cb3 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php
c1d51504a874d216a73d7a16d8d74b15 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php
85fc2f7a5cf4f34749aa70cbc8c732e6 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php
139c7285b82094a3673cccf7a3c86841 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php
2229f1f8a0b544bc9d6e4d8810150b0f *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php
7a0b448bef960dd749c97effcd77bf33 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php
81c05f3ced53a5e674f292b085c766d5 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php
76a96570463de4d20951fd93fff8f891 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php
6f3198651a1f726042b35d10dfbea267 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
852668d8e8374f7954025a30620cb6fd *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php
ac625636dc450133b90c5821d98e2a7a *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php
3585d916f9c3280d9d2c61abc6aa8c0a *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php
647b72900ad2b1c62809ca2e5a34b7b5 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php
0bb921323349e1bc2f5d46ce693efd85 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php
402e708018cbc501302c2f6640601d77 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php
dc2ee6716c9dee2ef3d420c41ac0dc2b *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php
62f20f9746a11f097467f627b0b93abe *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Logger.php
07c3c7e0d7e876400abfde105de7ac81 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php
b753a93665221b4ec3bb9b7e673a94a6 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php
da2d9c474d01225142b3278e0e6c88e3 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php
6497ea95b20d9ae90826819cbc6d0676 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php
aec839697dce14f2b35662ec83f8098d *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php
62476ed0523a188b116ecccebac90a2a *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php
5dd810e614913d06486955e380fee8d2 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php
21547825abf621432f105ca2bd7a1514 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php
9ae9918278d274d04294edcf850fc715 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php
3d6404d4111a427bb6c7801be5cc7d58 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php
55fb49548b06dbb2e082d1a133b37c09 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php
d84f57e474a31a4285ad62a37ed8fa94 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Registry.php
9d15d64a9f3654e872927409135b1435 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/ResettableInterface.php
759781d77e90492c3b976c436103c834 *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/SignalHandler.php
e11e634ee0a8b5ad5fedeec5de216c5a *dzz/ffmpeg/vendor/monolog/monolog/src/Monolog/Utils.php
7956ad02ea6a9f0c01dc81190ba7f2f2 *dzz/ffmpeg/vendor/neutron/temporary-filesystem/LICENSE
0939f19b04832d77188eb84aa16b6a33 *dzz/ffmpeg/vendor/neutron/temporary-filesystem/src/Neutron/TemporaryFilesystem/IOException.php
0a42ed50c5a66fdc90e796aede545df7 *dzz/ffmpeg/vendor/neutron/temporary-filesystem/src/Neutron/TemporaryFilesystem/Manager.php
472569cbbccad4b6621260e1f70f52f4 *dzz/ffmpeg/vendor/neutron/temporary-filesystem/src/Neutron/TemporaryFilesystem/TemporaryFilesystem.php
03250e9c659f57f70fecb4bd9d995eca *dzz/ffmpeg/vendor/neutron/temporary-filesystem/src/Neutron/TemporaryFilesystem/TemporaryFilesystemInterface.php
e47f941daf18beb04ec67ea5a52e56f1 *dzz/ffmpeg/vendor/php-ffmpeg/extras/LICENSE
30a05a2e2c6cf5b33941193809adbd3a *dzz/ffmpeg/vendor/php-ffmpeg/extras/src/FFMpeg/Format/Video/ThreeGP.php
b3ef8932ab56ebb4d73fa83c06f8f76a *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/LICENSE
3f2a1eefc632db5dd2a49eb54d16417c *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Coordinate/AspectRatio.php
6178ac75e06de4c9ad3e67114562184b *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Coordinate/Dimension.php
382ea0955ea7110b53fd48a4b989d5f3 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Coordinate/FrameRate.php
96644e05e69c59d7b518e372e098705d *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Coordinate/Point.php
d5e84f590ae637cfd23754a91c906b87 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Coordinate/TimeCode.php
147c06c64f4ce5a3831409375708e00f *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Driver/FFMpegDriver.php
e350c25b7015ec5e969f5d717b666810 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Driver/FFProbeDriver.php
2d4aa994e3325f9b377920196d9fbe9a *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Exception/ExceptionInterface.php
2555733d86c055a47da88b9ad95a360e *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Exception/ExecutableNotFoundException.php
614dd1c1c3222a31aa2258d5d6d10361 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Exception/InvalidArgumentException.php
2659810700f9fd3beeb30af95404e75f *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Exception/LogicException.php
b52e3759036a2aa049e3368c3dbf1975 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Exception/RuntimeException.php
5c44c830e35b78a5ff6edd618af9690b *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFMpeg.php
ab47b03fdcb63ab4f5b9e40ed2ac672b *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFMpegServiceProvider.php
27e863827f829793f7a94da133bcef0d *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/DataMapping/AbstractData.php
bc530a2abb7d914097a5d9148290942b *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/DataMapping/Format.php
e4eb8d24f7e958635425deb244d06ef4 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/DataMapping/Stream.php
15b696d8f4ef6f8b56e6b83848deac11 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/DataMapping/StreamCollection.php
c418c676e5e8467b85fb108a16463c7d *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/Mapper.php
773f68f6c606afe3fbc30fa6b9155419 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/MapperInterface.php
7246e80fbc397aa9c589b89d7fa2b38c *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/OptionsTester.php
3d4092a943efcbca1edd156ff7dd5391 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/OptionsTesterInterface.php
2f5ff5ae6ea7930acba43f7acab76881 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/OutputParser.php
35f114cd7032a223568cc84832575577 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe/OutputParserInterface.php
3d324e881fbce87903dfc53d25c182c5 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/FFProbe.php
7d44e30f33387edc5716d853aa710b17 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Audio/AddMetadataFilter.php
6b4d69a11dca487b12e8994d2ef428c6 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Audio/AudioClipFilter.php
dcb7f2ea9cd7907204b4b96b2cf28c4a *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Audio/AudioFilterInterface.php
312ec0e6e04e518cf8954e00442cd5c9 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Audio/AudioFilters.php
b08a4f2881233642b8bceeef28d53c9a *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Audio/AudioResamplableFilter.php
f7167e2e888d4408c19ea81cb0381c8b *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Audio/SimpleFilter.php
9ce164a0c303ec49d0fd76dae79120a9 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Concat/ConcatFilterInterface.php
845459dc4adfc32853c0c696874404ca *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Concat/ConcatFilters.php
03b697960d53dec79dac6a82fe0f9607 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/FilterInterface.php
3601be2f8b76c4bfe6b2f0fea253e1ab *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/FiltersCollection.php
06325fbce354b51d7f0d6b604c5cdbf2 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Frame/DisplayRatioFixerFilter.php
e5d0b0a311f14116b11a961d12f279db *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Frame/FrameFilterInterface.php
3bd2e53a26a2ffd73daea172484b85ae *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Frame/FrameFilters.php
e8689404dc110579b660ab9e7b2d66e4 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Gif/GifFilterInterface.php
62b3a00f0657c8630b3f8bad7d763f8b *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Gif/GifFilters.php
a8d5eff219ab95e28e8e82dd5744488b *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/ClipFilter.php
f710db74c58bcf3d6c5f3f8b59a9604a *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/CropFilter.php
d6b03a4ae4440de4bf8e96d0c70001b2 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/CustomFilter.php
7daa1dd49ddf8e7a788bb7ad0aa46761 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/ExtractMultipleFramesFilter.php
cb9e484907a06f2b6b914bbf1cdb7bfc *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/FrameRateFilter.php
050d2a56c655cc64cb049e0da29c5f01 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/PadFilter.php
17b73c06e261c7552ef17aa0f6e5193e *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/ResizeFilter.php
4ab87ee2139ab91734d5324a1a000bef *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/RotateFilter.php
ad492156eb5c8c54d453be6488c57157 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/SynchronizeFilter.php
fbae25bbadb0138dbf63a13d596fa276 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/VideoFilterInterface.php
6cbabb4a04368afae6487f20cd5d4f27 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/VideoFilters.php
ebd757acb0a7e0e97068a62d820bf645 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Video/WatermarkFilter.php
59e99e26cb91df3f94dbeea6ae0c0774 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Waveform/WaveformDownmixFilter.php
09b397a7b85684697e5a9fb863822dda *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Waveform/WaveformFilterInterface.php
052f1eb21bf150eff7543e73c200054a *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/Waveform/WaveformFilters.php
119dabdbf2f0a41e4500704d90e30d64 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Audio/Aac.php
0fddd883da53bfc64636337742a4fe6f *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Audio/DefaultAudio.php
2f7789a7803431f8371ed99653cec5ce *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Audio/Flac.php
30ff3328e6ae80465f5a4012343c79c4 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Audio/Mp3.php
eb67afc073c2425a45e6a4f8e70252bb *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Audio/Vorbis.php
a7c3e586a578ad6bd57fd9837c92dded *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Audio/Wav.php
4d5f4f25e22a4ffef7503982d1d49e16 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/AudioInterface.php
705ca1b2113661670a4c4f4abc718239 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/FormatInterface.php
119c2a28226b1ae6fb4da3fe6930c202 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/FrameInterface.php
e8ee4fab9636a6bd02b261471b50c7c3 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/ProgressableInterface.php
eb72702d76cdba4a02a46feaad786354 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/ProgressListener/AbstractProgressListener.php
5aa358a639d421e67129080e5b4c3abd *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/ProgressListener/AudioProgressListener.php
bf1e3c74b57299ff363e52a37015afeb *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/ProgressListener/VideoProgressListener.php
ebc2e8c3a07cbb66b344e8ad33e606b8 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Video/DefaultVideo.php
e2c9560c1b5df92aaddeb0096731f981 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Video/Ogg.php
f134d00a49485bc75bbee2d22b13ad70 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Video/WebM.php
b5144368c4ed52763d180e5016c7d3b3 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Video/WMV.php
b0bcc8152a69d326ce563484ea977de2 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Video/WMV3.php
6b9720266a5866018ab037c6db9974cb *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/Video/X264.php
ca6dea2723ca79d6355393dfff66d320 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Format/VideoInterface.php
59f5b0b1d8c73ee52056feceeb66ceb6 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/AbstractMediaType.php
2676e4bbba4bdccdb6e0ec5ff51447ee *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/AbstractStreamableMedia.php
73ed41edf44e106623c66161b4117118 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/Audio.php
ebbd534ae0ed523948266824d1122130 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/Concat.php
e79b77c96d11939c32734176456a6a7f *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/Frame.php
72092853ac6af732f97a7a6897b6fb55 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/Gif.php
175de54f072fceb90f8ad1cc0b86e153 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/MediaTypeInterface.php
c02497b7b7cad4d4a1f1e764b0d5365f *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/Video.php
2b4112b532509052b3b94ee90803ffd5 *dzz/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/Waveform.php
1a74629072fd794937be394ab689327e *dzz/ffmpeg/vendor/psr/log/LICENSE
26eb607e5318188016615326bd89a9be *dzz/ffmpeg/vendor/psr/log/Psr/Log/AbstractLogger.php
7d2f0bd1583524d739fff12f0507de65 *dzz/ffmpeg/vendor/psr/log/Psr/Log/InvalidArgumentException.php
cfac6d4dc3ebf2c7f0e49f74d1bcd44a *dzz/ffmpeg/vendor/psr/log/Psr/Log/LoggerAwareInterface.php
221f47ac7d3da4800d2c0e26cdfb351b *dzz/ffmpeg/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
1ae09682227159416a299d0ea940d34e *dzz/ffmpeg/vendor/psr/log/Psr/Log/LoggerInterface.php
d1152080b1b7a8812f6a3023b63f0fc0 *dzz/ffmpeg/vendor/psr/log/Psr/Log/LoggerTrait.php
cc226142fd5d390d030b39c61cf97843 *dzz/ffmpeg/vendor/psr/log/Psr/Log/LogLevel.php
d66f51c1fc729b09e54fd8821c7dfe46 *dzz/ffmpeg/vendor/psr/log/Psr/Log/NullLogger.php
4cf3d5257fbeda527d3f9d8e1245a5fa *dzz/ffmpeg/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
67b883e281582c75c5f95125c7bdeac3 *dzz/ffmpeg/vendor/psr/log/Psr/Log/Test/TestLogger.php
b14dc5c2f06a5bc04c45d88afd84884d *dzz/ffmpeg/vendor/symfony/filesystem/Exception/ExceptionInterface.php
6164d7968ea4b20f372bf9b15c00dabd *dzz/ffmpeg/vendor/symfony/filesystem/Exception/FileNotFoundException.php
fefaaa9c9dc136c8e7fb3ea7c3ccbae9 *dzz/ffmpeg/vendor/symfony/filesystem/Exception/InvalidArgumentException.php
19c3d259651ef07ece9b1cadc421a7e6 *dzz/ffmpeg/vendor/symfony/filesystem/Exception/IOException.php
b0c33767d71094ea350851390caa359f *dzz/ffmpeg/vendor/symfony/filesystem/Exception/IOExceptionInterface.php
ec0811c83a3a3c4fd53be9a6ea0ff890 *dzz/ffmpeg/vendor/symfony/filesystem/Filesystem.php
e0fbf93ee3e79762c694682e010f721d *dzz/ffmpeg/vendor/symfony/filesystem/LICENSE
638f69786aaefa6c38c98251a50bb9bf *dzz/ffmpeg/vendor/symfony/polyfill-ctype/bootstrap.php
20ecd9afc6e70ab709984cc5c8258b12 *dzz/ffmpeg/vendor/symfony/polyfill-ctype/composer.json
72cb4d141eac1392c3de359dba4d44e0 *dzz/ffmpeg/vendor/symfony/polyfill-ctype/Ctype.php
f082cc77e5ce76aa7e7fad8aa1d0cbeb *dzz/ffmpeg/vendor/symfony/polyfill-ctype/LICENSE
5d377fc96f58b9fb6acc171e2b93162a *dzz/ffmpeg/vendor/symfony/polyfill-ctype/README.md
723a4615b94a21c979c9cfe85d81e50a *dzz/ffmpeg/vendor/symfony/process/Exception/ExceptionInterface.php
b3c8598f88e6ac643dda6cb6f29fb3ba *dzz/ffmpeg/vendor/symfony/process/Exception/InvalidArgumentException.php
72ef3efed027815b107a71f4e987754d *dzz/ffmpeg/vendor/symfony/process/Exception/LogicException.php
90c118a801c9f293c2f341fffa30a14a *dzz/ffmpeg/vendor/symfony/process/Exception/ProcessFailedException.php
00f760a2731cbd7e7a145e02b30316f6 *dzz/ffmpeg/vendor/symfony/process/Exception/ProcessTimedOutException.php
5173fb5053527af7b83077085b192d67 *dzz/ffmpeg/vendor/symfony/process/Exception/RuntimeException.php
cbc4b041f47b68813926f969d1efb3aa *dzz/ffmpeg/vendor/symfony/process/ExecutableFinder.php
15de8d8c8304dac15e5c0d02002d5be2 *dzz/ffmpeg/vendor/symfony/process/InputStream.php
e0fbf93ee3e79762c694682e010f721d *dzz/ffmpeg/vendor/symfony/process/LICENSE
60202cced0024b3c169042784e6d9970 *dzz/ffmpeg/vendor/symfony/process/PhpExecutableFinder.php
952eb026f14ebf3970f7414b7cf2cf53 *dzz/ffmpeg/vendor/symfony/process/PhpProcess.php
955fe0e12dc2ee1e63cbca26dd165082 *dzz/ffmpeg/vendor/symfony/process/Pipes/AbstractPipes.php
7cd7e2e866c93db5d68f77a51626a43b *dzz/ffmpeg/vendor/symfony/process/Pipes/PipesInterface.php
612a165aa73ba1d9a7a42c480e3b8b05 *dzz/ffmpeg/vendor/symfony/process/Pipes/UnixPipes.php
5ccc8e5e3bd352e3bbcaddf1059c9a1a *dzz/ffmpeg/vendor/symfony/process/Pipes/WindowsPipes.php
882fab9690637ec4cf9746b825b21e15 *dzz/ffmpeg/vendor/symfony/process/Process.php
2a3b661974c0cd7432f29595ccdb6a93 *dzz/ffmpeg/vendor/symfony/process/ProcessBuilder.php
13625bd3819dabb00e70409aa8b8cc54 *dzz/ffmpeg/vendor/symfony/process/ProcessUtils.php
848f904ac7e815cf4abc752639c32f68 *dzz/imageColor/classes/getcolor.php
8fcedaed7fefce2be26a36d2ac4bf9af *dzz/imageColor/index.php
a35efffbc8ffb84994c399cac01fb592 *dzz/images/addUser.png a35efffbc8ffb84994c399cac01fb592 *dzz/images/addUser.png
325472601571f31e1bf00674c368d335 *dzz/images/b.gif 325472601571f31e1bf00674c368d335 *dzz/images/b.gif
87fadeff473ddcb5208b7af66ae5966a *dzz/images/close.png 87fadeff473ddcb5208b7af66ae5966a *dzz/images/close.png
@@ -360,7 +698,7 @@ a35efffbc8ffb84994c399cac01fb592 *dzz/images/addUser.png
a69a0a404fedd3a334f295db86001589 *dzz/images/default/loading.gif a69a0a404fedd3a334f295db86001589 *dzz/images/default/loading.gif
25b023c9a97dc186e7ef8283c67af083 *dzz/images/default/loading.png 25b023c9a97dc186e7ef8283c67af083 *dzz/images/default/loading.png
338655a5d330e7af1ef36a314c689637 *dzz/images/default/new.gif 338655a5d330e7af1ef36a314c689637 *dzz/images/default/new.gif
2894a0aaf1160440c47ecd1685115ed8 *dzz/images/default/notice_system.png a949e13639231f3ab4192465ff2538ac *dzz/images/default/notice_system.png
57141c24c019986b50b2d21e2f0dd49d *dzz/images/default/system/ALIOSS.png 57141c24c019986b50b2d21e2f0dd49d *dzz/images/default/system/ALIOSS.png
9da1d1376afbe5d5223013f4cbc83d56 *dzz/images/default/system/baiduPCS.png 9da1d1376afbe5d5223013f4cbc83d56 *dzz/images/default/system/baiduPCS.png
0ff58bff7e319cdc192ca22c43ed8af9 *dzz/images/default/system/bucket.png 0ff58bff7e319cdc192ca22c43ed8af9 *dzz/images/default/system/bucket.png
@@ -628,9 +966,10 @@ bae84af37dba1b272ef439708d1b8e9f *dzz/images/extimg_small/xml.png
837ef96d27e248682869b7678b73943a *dzz/images/extimg_small/y.png 837ef96d27e248682869b7678b73943a *dzz/images/extimg_small/y.png
3d8f7e76431bd2009e5e949156358be5 *dzz/images/extimg_small/zip.png 3d8f7e76431bd2009e5e949156358be5 *dzz/images/extimg_small/zip.png
50c5e3e79b276c92df6cc52caeb464f0 *dzz/images/loading.gif 50c5e3e79b276c92df6cc52caeb464f0 *dzz/images/loading.gif
2894a0aaf1160440c47ecd1685115ed8 *dzz/images/logo-blue.png a949e13639231f3ab4192465ff2538ac *dzz/images/logo-blue.png
b92838cc79a788fc78a7685b5aae1f28 *dzz/index/index.php b92838cc79a788fc78a7685b5aae1f28 *dzz/index/index.php
d615e6446bb74240281aa217d6f5ad01 *dzz/index/login.php d615e6446bb74240281aa217d6f5ad01 *dzz/index/login.php
9464641e570a5ef040351554605b519d *dzz/io/getImg.php
c922015b4938aea09a73ed7d1d759ee4 *dzz/language/en-US/lang.php c922015b4938aea09a73ed7d1d759ee4 *dzz/language/en-US/lang.php
d91b3ccebc18bcd41bc44e9da28d598f *dzz/language/zh-CN/lang.php d91b3ccebc18bcd41bc44e9da28d598f *dzz/language/zh-CN/lang.php
e6ff860b694692916c323609ac7697f8 *dzz/pdf/build/pdf.js e6ff860b694692916c323609ac7697f8 *dzz/pdf/build/pdf.js
@@ -638,7 +977,7 @@ e6ff860b694692916c323609ac7697f8 *dzz/pdf/build/pdf.js
f025b4d2dd3cd3eca72f347e2406101d *dzz/pdf/build/pdf.worker.js f025b4d2dd3cd3eca72f347e2406101d *dzz/pdf/build/pdf.worker.js
7f4ee1937cdefb0a21e54182115ca399 *dzz/pdf/build/pdf.worker.js.map 7f4ee1937cdefb0a21e54182115ca399 *dzz/pdf/build/pdf.worker.js.map
1a7e0ce8221581ed65bfac95a3551ac6 *dzz/pdf/dzz_app_pdf.xml 1a7e0ce8221581ed65bfac95a3551ac6 *dzz/pdf/dzz_app_pdf.xml
722e520dc55f03433da72d8688b12064 *dzz/pdf/index.php f0abf463edbab20153b02a621c71e493 *dzz/pdf/index.php
e85831f11e1b0a5f779431998958a899 *dzz/pdf/template/viewer.htm e85831f11e1b0a5f779431998958a899 *dzz/pdf/template/viewer.htm
6d23b789047f6fa8f6923e7ae411d642 *dzz/pdf/web/cmaps/78-EUC-H.bcmap 6d23b789047f6fa8f6923e7ae411d642 *dzz/pdf/web/cmaps/78-EUC-H.bcmap
5d7d0e488fb52b2a4f8d240b0d572e89 *dzz/pdf/web/cmaps/78-EUC-V.bcmap 5d7d0e488fb52b2a4f8d240b0d572e89 *dzz/pdf/web/cmaps/78-EUC-V.bcmap
@@ -1037,12 +1376,13 @@ eba5f5cecbb2a1cf2064e55c8c0de177 *dzz/pdf/web/locale/vi/viewer.properties
92a90fc7c9d2368a1f327355cf4280fd *dzz/pdf/web/locale/zu/viewer.properties 92a90fc7c9d2368a1f327355cf4280fd *dzz/pdf/web/locale/zu/viewer.properties
612418155cdf17524db3bc6514cda751 *dzz/pdf/web/viewer.css 612418155cdf17524db3bc6514cda751 *dzz/pdf/web/viewer.css
badeea57fda90d27e54a9f9488ac4c43 *dzz/pdf/web/viewer.html badeea57fda90d27e54a9f9488ac4c43 *dzz/pdf/web/viewer.html
6cf3b8dd7fae022af726634be28de37d *dzz/pdf/web/viewer.js f2dddeac144b9bbac3ef849464bdf74b *dzz/pdf/web/viewer.js
9d8f7b8df2cf3dffa23febb3582928d4 *dzz/pdf/web/viewer.js.map 9d8f7b8df2cf3dffa23febb3582928d4 *dzz/pdf/web/viewer.js.map
8659ad92dfd558463783565f41e2267b *dzz/pichome/admin.php 57cbaacb499474a5ca6c14a86d411512 *dzz/pichome/admin.php
7534bf9c73c427bffedb2ea88a853d12 *dzz/pichome/ajax.php ae17e4be72c28160524e6d0f15a08764 *dzz/pichome/ajax.php
da38e97091f039e98f3cff60351dec3c *dzz/pichome/checkexport.php c550e347457729fb118592d6be50d050 *dzz/pichome/checkexport.php
088006485445db81b3e5431e1a60efc6 *dzz/pichome/class/class_eagleexport.php 6433341eb6119db85c0d2001c5155150 *dzz/pichome/class/class_eagleexport.php
d89bf384de0af51c78c3a40a680e1c89 *dzz/pichome/class/class_localexport.php
6293eb9bd5b473c7f178be5d6534341c *dzz/pichome/config/config.php 6293eb9bd5b473c7f178be5d6534341c *dzz/pichome/config/config.php
29640dfed0df1100d9c8e4d819b4c593 *dzz/pichome/css/admin.css 29640dfed0df1100d9c8e4d819b4c593 *dzz/pichome/css/admin.css
07f01151181178c663d669622ea927f3 *dzz/pichome/css/common.css 07f01151181178c663d669622ea927f3 *dzz/pichome/css/common.css
@@ -1056,41 +1396,74 @@ f09b1c7476e28ad67f1c2f2f314230a0 *dzz/pichome/css/fonts/remixicon.symbol.svg
881fbc46361e0c0e5f003c159b2f3005 *dzz/pichome/css/fonts/remixicon.woff 881fbc46361e0c0e5f003c159b2f3005 *dzz/pichome/css/fonts/remixicon.woff
9915fef980fa539085da55b84dfde760 *dzz/pichome/css/fonts/remixicon.woff2 9915fef980fa539085da55b84dfde760 *dzz/pichome/css/fonts/remixicon.woff2
beba9d9c0e6f710c90145d9e3cbbab2d *dzz/pichome/css/index.css beba9d9c0e6f710c90145d9e3cbbab2d *dzz/pichome/css/index.css
393c3333716eea4c974db36b5a8630d5 *dzz/pichome/css/mobile/common.css
577f7f31ca1ac0fe27b7c7e8f28f838f *dzz/pichome/css/mobile/details.css
871bda5b39c93380460d42db713c2932 *dzz/pichome/css/mobile/index.css
f1e227b4a2e8a0345daaf6141e1856dd *dzz/pichome/css/mobile/personal.css
cc6d3bf279ed780dd69d0dcc250bd442 *dzz/pichome/css/mobile/share.css
509deac393472e307756fc9deee67276 *dzz/pichome/css/pc/admin.css
4616cbd4493d6a922221b5225605bf17 *dzz/pichome/css/pc/common.css
e3123a0f6930b3d0a84387d3102c704d *dzz/pichome/css/pc/details.css
0446460c4b1c238c4a17b4119c5c106e *dzz/pichome/css/pc/image.css
4e1559e2dada467206bec5c77b5a23f5 *dzz/pichome/css/pc/index.css
16ceb77eb522e138548921aa5b024a36 *dzz/pichome/css/pc/screen.css
69c8a20f13ee8eb40d35ddd497d35fd3 *dzz/pichome/css/pc/xuanzhuan/iconfont.ttf
b006647cb9c39a657d354fcf0bdf88bf *dzz/pichome/css/pc/xuanzhuan/index.css
48994b9f88c49cdb67a88116380cfb95 *dzz/pichome/css/theme/black/index.css 48994b9f88c49cdb67a88116380cfb95 *dzz/pichome/css/theme/black/index.css
3d037ab39fd205fc01dcb0644dc73594 *dzz/pichome/css/theme/black/root.css fe6f435c4534024a6894473daec0845a *dzz/pichome/css/theme/black/root.css
247be4f622b714c5745e69ebb932e197 *dzz/pichome/css/theme/darkgrey/index.css 247be4f622b714c5745e69ebb932e197 *dzz/pichome/css/theme/darkgrey/index.css
e19d97f977fa3d2316168bbe8e4101e5 *dzz/pichome/css/theme/darkgrey/root.css 9925ea840cd52bf961eb4b1eb7b565b8 *dzz/pichome/css/theme/darkgrey/root.css
732389ded34cb9c52dd88271f1345af9 *dzz/pichome/css/theme/fonts/element-icons.ttf 732389ded34cb9c52dd88271f1345af9 *dzz/pichome/css/theme/fonts/element-icons.ttf
535877f50039c0cb49a6196a5b7517cd *dzz/pichome/css/theme/fonts/element-icons.woff 535877f50039c0cb49a6196a5b7517cd *dzz/pichome/css/theme/fonts/element-icons.woff
dce825b1ca6c3b1c18adc856618b8602 *dzz/pichome/css/theme/lightgrey/index.css dce825b1ca6c3b1c18adc856618b8602 *dzz/pichome/css/theme/lightgrey/index.css
6c11a6e69881f44860b2dd8a9b7dde51 *dzz/pichome/css/theme/lightgrey/root.css 74e133fde11f139ecfeedafb438a13ce *dzz/pichome/css/theme/lightgrey/root.css
106204b58c77af1048a22bfe9cbd1d49 *dzz/pichome/css/theme/navyblue/index.css 106204b58c77af1048a22bfe9cbd1d49 *dzz/pichome/css/theme/navyblue/index.css
2669ef65012ea0cc6ca29e3c5f57bf47 *dzz/pichome/css/theme/navyblue/root.css 17018172c965f899a07fd8f53b789ecf *dzz/pichome/css/theme/navyblue/root.css
6a3812a857dae07ed74b59d26c86d7e1 *dzz/pichome/css/theme/purple/index.css 6a3812a857dae07ed74b59d26c86d7e1 *dzz/pichome/css/theme/purple/index.css
2566cbfc860d4bc3c12812d9d35011ef *dzz/pichome/css/theme/purple/root.css c514077b8965f7d3bd473f19d85620e3 *dzz/pichome/css/theme/purple/root.css
4705cbd2d8a842635d69d2ace637212e *dzz/pichome/css/theme/white/index.css 4705cbd2d8a842635d69d2ace637212e *dzz/pichome/css/theme/white/index.css
b07e0746971bb7c6dfc1d88ed2bdc4b2 *dzz/pichome/css/theme/white/root.css b6aae0d83f9163cf8a6acda2c77f573e *dzz/pichome/css/theme/white/root.css
b8ca416041036fcaa26a718343b671cc *dzz/pichome/details.php 5c7db30e0823a778d5341db79a4ece27 *dzz/pichome/delete.php
8cbb24ea1bf37279c62c847f69984107 *dzz/pichome/download.php 0bc21a1af1a289191cf5a48523f2cf8c *dzz/pichome/details.php
220a956534e1384a2c64cfc89ef48617 *dzz/pichome/download.php
e245c8b1f860c8252eade7f3dec51879 *dzz/pichome/dzz_app_pichome.xml e245c8b1f860c8252eade7f3dec51879 *dzz/pichome/dzz_app_pichome.xml
149c4134105afa138de62c31034c38c6 *dzz/pichome/exportfile.php 1ef6b3e8f2d9664ac3665b62f6c5f39b *dzz/pichome/exportfile.php
06880b4a650311dd50933bf9a5aece2a *dzz/pichome/filelist.php dd58cee1073dfc2907838fe3ec26235b *dzz/pichome/exportfilecheck.php
ae3317853c4561197a9a649000597886 *dzz/pichome/function/function_common.php ba8263d806bb02f8c1cd5b3becdfaac0 *dzz/pichome/filelist.php
2d0185de715fe914af40ce715d15afca *dzz/pichome/function/function_common.php
d211a97399d52fea48f94a45a06648d1 *dzz/pichome/image/eaglefile.webp d211a97399d52fea48f94a45a06648d1 *dzz/pichome/image/eaglefile.webp
152ec265e38eb67acb6cb31026448e3d *dzz/pichome/image/img/t1.jpeg 152ec265e38eb67acb6cb31026448e3d *dzz/pichome/image/img/t1.jpeg
651d0b49012d763c7dda236756274a9d *dzz/pichome/image/img/t2.jpg 651d0b49012d763c7dda236756274a9d *dzz/pichome/image/img/t2.jpg
309c31fa9200e0c9b4ee8fd3f1399dfc *dzz/pichome/image/img/t3.jpeg 309c31fa9200e0c9b4ee8fd3f1399dfc *dzz/pichome/image/img/t3.jpeg
5f5562a16dad1fa33294b5c0a920f1d6 *dzz/pichome/image/img/t4.jpeg 5f5562a16dad1fa33294b5c0a920f1d6 *dzz/pichome/image/img/t4.jpeg
08a26df5cbee8f21dbac8d646d1da218 *dzz/pichome/image/nodata.svg 08a26df5cbee8f21dbac8d646d1da218 *dzz/pichome/image/nodata.svg
1f0ee3cd38e82bd18490a34fcec8c690 *dzz/pichome/image/notScreen.png
f308fd14dbe2e06349ef366d6f9aa2c7 *dzz/pichome/image/palette.png f308fd14dbe2e06349ef366d6f9aa2c7 *dzz/pichome/image/palette.png
efdb2935803c55f32f283c48abed9dbd *dzz/pichome/image/phlogo.png d51db8efca781201f641a41b57420dfe *dzz/pichome/image/phlogo.png
6c9bc6ff1ea0bb36eb156ae681741ee5 *dzz/pichome/index.php 438384ffb6dbf09c63f9c0254c57340a *dzz/pichome/index.php
bc4b3499031370aaa3fabf218806f65f *dzz/pichome/initexport.php
c9b191574ccc8ab6c8ff631302f10561 *dzz/pichome/install.php c9b191574ccc8ab6c8ff631302f10561 *dzz/pichome/install.php
29b8b6254aaaa263cbb0fe8272f05a59 *dzz/pichome/js/audioPlay.js 29b8b6254aaaa263cbb0fe8272f05a59 *dzz/pichome/js/audioPlay.js
a088950fc4bf4348d87cda978e5ded97 *dzz/pichome/js/common.js a088950fc4bf4348d87cda978e5ded97 *dzz/pichome/js/common.js
b7a95d9f617863cf515a43e7b83978c5 *dzz/pichome/js/headerMethods.js b7a95d9f617863cf515a43e7b83978c5 *dzz/pichome/js/headerMethods.js
d752d1878252e486cc0244887cfadbae *dzz/pichome/js/headerWatch.js d752d1878252e486cc0244887cfadbae *dzz/pichome/js/headerWatch.js
d5843dbdc71ff8014a5eafd346a262da *dzz/pichome/js/jquery.mousewheel.min.js d5843dbdc71ff8014a5eafd346a262da *dzz/pichome/js/jquery.mousewheel.min.js
d37b5113b01a2ef9fb6cf447a5dcff89 *dzz/pichome/js/mobile/pinchzoom.js
57c1fe0c8799e3ad619c0ef6e719bfbc *dzz/pichome/js/mobile/plug/colorPicker/jquery.minicolors.css
043afc4dc77f0ef3f9923c38170c52cf *dzz/pichome/js/mobile/plug/colorPicker/jquery.minicolors.min.js
d36c75e3d8880ebfece375fd7cd46787 *dzz/pichome/js/mobile/plug/colorPicker/jquery.minicolors.png
b5d4479aca9121ce9ed95af5d77c10d9 *dzz/pichome/js/mobile/plug/vant/index.css
3d5fcccab75bba76cc259351e875d42a *dzz/pichome/js/mobile/plug/vant/vant.min.js
29b8b6254aaaa263cbb0fe8272f05a59 *dzz/pichome/js/pc/audioPlay.js
2ffc868ac18c18d948c3ae5576afa98b *dzz/pichome/js/pc/headerMethods.js
84f0575bc959e85fc1abab5dc71d3079 *dzz/pichome/js/pc/headerWatch.js
d5843dbdc71ff8014a5eafd346a262da *dzz/pichome/js/pc/jquery.mousewheel.min.js
72dbef2b0dd2644f4fb4e72ddbb7013b *dzz/pichome/js/pc/plug/DomResize.js
8a788a8d0bfb2d3c1988bddb4aef4b4b *dzz/pichome/js/pc/plug/element-ui.js
66fe9527aec8d8b68e3bc5036ea8f7f9 *dzz/pichome/js/pc/plug/sortable.min.js
7292e14f4f8fad306d40a6d7d586b225 *dzz/pichome/js/pc/plug/wavesurfer.js
ef4591bffb23a90c8d9e0d02a7b5c15f *dzz/pichome/js/pc/row-grid.js
ec0f395ef389b9e369cf0bf354d2dd01 *dzz/pichome/js/pc/waterfall.js
72dbef2b0dd2644f4fb4e72ddbb7013b *dzz/pichome/js/plug/DomResize.js 72dbef2b0dd2644f4fb4e72ddbb7013b *dzz/pichome/js/plug/DomResize.js
8a788a8d0bfb2d3c1988bddb4aef4b4b *dzz/pichome/js/plug/element-ui.js 8a788a8d0bfb2d3c1988bddb4aef4b4b *dzz/pichome/js/plug/element-ui.js
dc3ea9ad3b70dda4a5250f14e9f2a36a *dzz/pichome/js/plug/jquery.row-grid.js dc3ea9ad3b70dda4a5250f14e9f2a36a *dzz/pichome/js/plug/jquery.row-grid.js
@@ -1103,32 +1476,111 @@ b21b8531847604ab5f2f5caaef51ba31 *dzz/pichome/js/vue/vue.js
69764bf35375a54256412f3c748b312d *dzz/pichome/js/waterfall.js 69764bf35375a54256412f3c748b312d *dzz/pichome/js/waterfall.js
c24f19d7061cdf5bae41e5e9b9f5600c *dzz/pichome/language/en-US/lang.php c24f19d7061cdf5bae41e5e9b9f5600c *dzz/pichome/language/en-US/lang.php
8a3e6ab24d873202b96c3acd9c1b0d2b *dzz/pichome/language/zh-CN/lang.php 8a3e6ab24d873202b96c3acd9c1b0d2b *dzz/pichome/language/zh-CN/lang.php
7c10bb4a15f7522989848c5138174c05 *dzz/pichome/library.php 04a1d42c4c596325364400f866a2c143 *dzz/pichome/library.php
ccef8b340c90fc0061c6dd645fecc8df *dzz/pichome/setting.php ccef8b340c90fc0061c6dd645fecc8df *dzz/pichome/setting.php
3a9db7def73d093f8f30ccae5577f18f *dzz/pichome/share.php cda7d5feb6b4ed907d8a1eeb7d0ba46d *dzz/pichome/share.php
37c8861eb4f7f8c94608935cd9c41544 *dzz/pichome/template/components/headerAdmin/index.htm 892a7e59f327bc5f273fc0fe2cd2679b *dzz/pichome/template/mobile/components/classify.htm
59434ecdc8ec0b282eec428cc5806ff5 *dzz/pichome/template/components/headerindex/index.htm 00be7e9bc0e92e22f9c7aa8fce703854 *dzz/pichome/template/mobile/components/index/JsCommon.htm
5518c2bc4f44f3636e63d6a3ebe6e508 *dzz/pichome/template/components/headerindex/screen.htm 3c0bae451668c060ae526d3253e9be73 *dzz/pichome/template/mobile/components/index/JsDetailMessage.htm
105d244408ea6a9780677c28b376ea6c *dzz/pichome/template/components/headerindex/searchScreen.htm b61252abe414de77e062e3f96aabccbd *dzz/pichome/template/mobile/components/index/JsImages.htm
47702c24d36ca5b820de1029b4fdf138 *dzz/pichome/template/components/index/images.htm 801d90ff93583268416fdc99faa91860 *dzz/pichome/template/mobile/components/index/JsIndex.htm
986115087ed076c2e624bd94c0ec56f0 *dzz/pichome/template/components/index/indexVuex.htm 18939ca3c3ccb67156c1d2f3d059a3fa *dzz/pichome/template/mobile/components/index/JsMy.htm
c2953f2cc75684f3a777148ad8c5fce9 *dzz/pichome/template/components/index/screen.htm a09a548c0637e1dfc7397410ac056711 *dzz/pichome/template/mobile/components/index/JsScreen.htm
8f54b82e6d2f9cb4d7ba43d09a39f088 *dzz/pichome/template/frame/footer_simple.htm 76399fc5b4e7a84ee75ed49e34e483c9 *dzz/pichome/template/mobile/components/index/JsSearch.htm
ae502b90b2b31175892efe56867bc2e7 *dzz/pichome/template/frame/header_simple_end.htm aa8df8e4c660d9136bbff54070a2522a *dzz/pichome/template/mobile/components/index/JsSort.htm
891bc77b1e8e054dcbcbc5bcdd317592 *dzz/pichome/template/frame/header_simple_start.htm a6eb66e190d0ba70ff30d521047a63e2 *dzz/pichome/template/mobile/components/index/screen/btime/temp.htm
8f6971c0247b193ab47c3c5ddb6d0266 *dzz/pichome/template/page/adminBasic.htm 0bda41757437fb9c3a7efda0f43c109e *dzz/pichome/template/mobile/components/index/screen/classify/js.htm
11fd257b9af5db87fcf2b70568a4310d *dzz/pichome/template/page/adminFileterset.htm 39df4c1ff10e49ae7168cb99518d6253 *dzz/pichome/template/mobile/components/index/screen/classify/temp.htm
be4f1925a5cbd80416e8a545621132c2 *dzz/pichome/template/page/adminLoginpage.htm b51b1ba798335a69ed3697ae96f8663f *dzz/pichome/template/mobile/components/index/screen/color/temp.htm
9c164499d8cf7719b80e969fd6def67d *dzz/pichome/template/page/adminPagesetting.htm 075bdae5e3a3a38b440dfe5e85ba958e *dzz/pichome/template/mobile/components/index/screen/dateline/temp.htm
c77af0fd0053dfaa96f4db838ae6adf3 *dzz/pichome/template/page/adminPersonal.htm ce2c75378cef55687fd93d4f0e768a02 *dzz/pichome/template/mobile/components/index/screen/desc/temp.htm
f0e94bac24224daf8e6957b01aea7fd6 *dzz/pichome/template/page/details.htm d28186b8bca0adc5ff95ec392d041fb1 *dzz/pichome/template/mobile/components/index/screen/duration/temp.htm
4e61b93f59ad1885f03a5247022bbefd *dzz/pichome/template/page/index.htm 3ab7ef5c8f16a496e219830eb5bd05a5 *dzz/pichome/template/mobile/components/index/screen/ext/temp.htm
cf70aadbb56bd4fe27d1c1b15a75ca90 *dzz/pichome/template/page/library.htm 60059bbaace52506f7506d00b89cffa6 *dzz/pichome/template/mobile/components/index/screen/grade/temp.htm
016721dd93f715c67bd1cd66cb3ca679 *dzz/pichome/template/page/share.htm 91114c9caab1b9d79c7b278a1f5ff4cc *dzz/pichome/template/mobile/components/index/screen/link/temp.htm
23bb6550be82aa1bea16aac57f729600 *dzz/pichome/template/mobile/components/index/screen/mtime/temp.htm
652b15268999816d7875d8a46b9f820f *dzz/pichome/template/mobile/components/index/screen/shape/temp.htm
16d928da24c57980a043f956a15021c3 *dzz/pichome/template/mobile/components/index/screen/size/temp.htm
ae8d0557008c6f19458bed5c49db2167 *dzz/pichome/template/mobile/components/index/screen/tag/temp.htm
8f54b82e6d2f9cb4d7ba43d09a39f088 *dzz/pichome/template/mobile/frame/footer_simple.htm
ae502b90b2b31175892efe56867bc2e7 *dzz/pichome/template/mobile/frame/header_simple_end.htm
fdc74d5e180321fc338ae91a1a90e22e *dzz/pichome/template/mobile/frame/header_simple_start.htm
f9c4288c838455ae487c2cc0c4d44890 *dzz/pichome/template/mobile/page/details.htm
f9f65e35608efe6563e49abbc66c1249 *dzz/pichome/template/mobile/page/index.htm
be7755b8e73e2ffa49557e8c3891027a *dzz/pichome/template/mobile/page/personal.htm
63845b99e6f7f14d1385b56a0c4ffebf *dzz/pichome/template/mobile/page/share.htm
dd8403f5dbcfb5767f01143f12afff93 *dzz/pichome/template/pc/components/headerAdmin/index.htm
e078614bb6d558d96006ec127f7c392c *dzz/pichome/template/pc/components/headerindex/index.htm
0436c3ba601aa0804b0e51926f557988 *dzz/pichome/template/pc/components/headerindex/screen.htm
105d244408ea6a9780677c28b376ea6c *dzz/pichome/template/pc/components/headerindex/searchScreen.htm
e52de01bb534c8ae8906aeea2a26e4bc *dzz/pichome/template/pc/components/index/header/JsHdeaderSearch1.htm
710efaf3e9e92603f55599af84e07f2b *dzz/pichome/template/pc/components/index/header/JsHdeaderSearch2.htm
0b560bcf32b9928e09a087efbe543405 *dzz/pichome/template/pc/components/index/header/JsHdeaderSearchInput.htm
44afb76ddd1106c3081e901b74ccd350 *dzz/pichome/template/pc/components/index/header/JsHdeaderSearchScreen.htm
cdfdeb7826e501fc2d0dabbe4545bba6 *dzz/pichome/template/pc/components/index/header/JsHeaderRight.htm
82a1a57d683d58fd868fb91fac13ab25 *dzz/pichome/template/pc/components/index/header/JsHeaderRightAvatar.htm
a5629a36eef6a8c0d3aec35f3a679d86 *dzz/pichome/template/pc/components/index/header/JsHeaderRightBtn.htm
754c1ae954a2bd706a9ca808225927c9 *dzz/pichome/template/pc/components/index/image/ImageAudioPlay.htm
8719049c86e5ed162ef840352086ee8f *dzz/pichome/template/pc/components/index/image/ImageList.htm
f394ee2d8177fe42a05aeb7c5d1b783a *dzz/pichome/template/pc/components/index/image/ImageRowGrid.htm
506a3a316c9b37a48c65ed71c7435f33 *dzz/pichome/template/pc/components/index/image/ImageWaterfall.htm
e75f2d5563b6d12d345ee4414e2840f9 *dzz/pichome/template/pc/components/index/images.htm
0764f300b91acf6e60925fa91c528941 *dzz/pichome/template/pc/components/index/indexVuex.htm
ac1a37ef71ff76f05435a47b8f13a6b8 *dzz/pichome/template/pc/components/index/JsCommon.htm
d88649d33a48388af9e95f4b7b3aeea8 *dzz/pichome/template/pc/components/index/JsHeader1.htm
eb3a364123d4c0982dfc2497683adc29 *dzz/pichome/template/pc/components/index/JsHeader2.htm
5ecc3eabb026b20734c7bec319263ed3 *dzz/pichome/template/pc/components/index/Jsimage.htm
e5f81267932b2e39355c4bff620d11b6 *dzz/pichome/template/pc/components/index/JsLibrary.htm
7a925a4631acb01fc275bbb237250d92 *dzz/pichome/template/pc/components/index/JsScreen.htm
ca1f90529303acc461fb2ce08fb6e7fc *dzz/pichome/template/pc/components/index/screen/btime/js.htm
a2d7aa1c09cf3119740247c2c84dc880 *dzz/pichome/template/pc/components/index/screen/btime/temp.htm
be0730d952f4744e88b2055c32d1f08b *dzz/pichome/template/pc/components/index/screen/classify/js.htm
ae9283ed126a9b5d58ec8da79b82b916 *dzz/pichome/template/pc/components/index/screen/classify/temp.htm
7aae5f55c409fdd6a4ec43d0aaf46fb5 *dzz/pichome/template/pc/components/index/screen/color/js.htm
f8281ed2c6f2b291bd177b30ece427c2 *dzz/pichome/template/pc/components/index/screen/color/temp.htm
afb7f926245e36860f30e6f1bc20164d *dzz/pichome/template/pc/components/index/screen/dateline/js.htm
f431bf7fa29b542d4bf18550c0b710a3 *dzz/pichome/template/pc/components/index/screen/dateline/temp.htm
da497cf5e22fa3dc4356f727c8a06dc8 *dzz/pichome/template/pc/components/index/screen/desc/js.htm
5b4d5d3a7b3566c24b3de893c4668c3e *dzz/pichome/template/pc/components/index/screen/desc/temp.htm
86008adc04b4086d3dbadb06bb1802c8 *dzz/pichome/template/pc/components/index/screen/duration/js.htm
86ffb0d927567631ad6c45fe2be3d07a *dzz/pichome/template/pc/components/index/screen/duration/temp.htm
d77bb8e4d0264dedb2caa82ccbc503ce *dzz/pichome/template/pc/components/index/screen/ext/js.htm
7d22e56f2a2eb124e5ecec7eba8c4c81 *dzz/pichome/template/pc/components/index/screen/ext/temp.htm
6241347b44cd051db85cd683cb23ec66 *dzz/pichome/template/pc/components/index/screen/grade/js.htm
cb007588e09dfeddc7f5c9a66540155b *dzz/pichome/template/pc/components/index/screen/grade/temp.htm
b24829a69162eab6ef8e51362c02726c *dzz/pichome/template/pc/components/index/screen/link/js.htm
1b5c317c7ad96875866bc15f322ebffe *dzz/pichome/template/pc/components/index/screen/link/temp.htm
a91f8cdb2836930e60e76000e14cd109 *dzz/pichome/template/pc/components/index/screen/mtime/js.htm
71df18ff5f6a0428941d33e7409b2a9f *dzz/pichome/template/pc/components/index/screen/mtime/temp.htm
848e5d358ece04426ef40c055db4815a *dzz/pichome/template/pc/components/index/screen/shape/js.htm
026964771fde79d520db8fca996705d5 *dzz/pichome/template/pc/components/index/screen/shape/temp.htm
ed778182594282451fdeaf533390504a *dzz/pichome/template/pc/components/index/screen/size/js.htm
6607851de5183d1db762d74a184220b1 *dzz/pichome/template/pc/components/index/screen/size/temp.htm
ce8f0dddfb2446e04ed00da108a9d5ff *dzz/pichome/template/pc/components/index/screen/tag/js.htm
12adf53eb950a45a47d2d80e8b246fa6 *dzz/pichome/template/pc/components/index/screen/tag/temp.htm
c2953f2cc75684f3a777148ad8c5fce9 *dzz/pichome/template/pc/components/index/screen.htm
78e4336426983a0ec62934217dee535c *dzz/pichome/template/pc/components/index/template2/JsLeft.htm
8f54b82e6d2f9cb4d7ba43d09a39f088 *dzz/pichome/template/pc/frame/footer_simple.htm
ae502b90b2b31175892efe56867bc2e7 *dzz/pichome/template/pc/frame/header_simple_end.htm
08154101159fde8eb21fe522cc937e4c *dzz/pichome/template/pc/frame/header_simple_start.htm
42648cd5769edf01f824444c5acc98b2 *dzz/pichome/template/pc/page/adminBasic.htm
d46f3035458009aa3d87d579da8848c3 *dzz/pichome/template/pc/page/adminFileterset.htm
ef3300e59bc7be272f56ade943326d88 *dzz/pichome/template/pc/page/adminImportsetting.htm
ea578588242396cb021031f41dd4bc69 *dzz/pichome/template/pc/page/adminLeft.htm
0e57e8ab9dbccead521f9b18fe8a2de2 *dzz/pichome/template/pc/page/adminLoginpage.htm
624c95c6ba1998d1f0538493c510fed1 *dzz/pichome/template/pc/page/adminPagesetting.htm
0920466b526ad2b5b6e20c8b2acead53 *dzz/pichome/template/pc/page/adminPersonal.htm
4adfd28ac9666c2aeb1af34040db7551 *dzz/pichome/template/pc/page/details.htm
8e351bacc90f2855e890cc3cb0ef9fc2 *dzz/pichome/template/pc/page/index.htm
701ca3999a6f963e5dd8081f4ca73498 *dzz/pichome/template/pc/page/index1.htm
dee08b61a3556659df1cb5daa3845b4e *dzz/pichome/template/pc/page/index2.htm
ecbf47343950b3ab1498a97c97d88771 *dzz/pichome/template/pc/page/library.htm
d05bbcc9ca122a830c924cfabed697c0 *dzz/pichome/template/pc/page/share.htm
3cd79761b99168c3f9faf607183df134 *dzz/pichome/uninstall.php 3cd79761b99168c3f9faf607183df134 *dzz/pichome/uninstall.php
b5221437a0c978e0caf63f2278759934 *dzz/pichome/uninstall_real.php b5221437a0c978e0caf63f2278759934 *dzz/pichome/uninstall_real.php
a5c5705a5b9e3a2175d3633656ae614e *dzz/pichome/updatesearchvaldata.php
efbd03954c4e8df90891d9d6f338619f *dzz/pichome/upload.php efbd03954c4e8df90891d9d6f338619f *dzz/pichome/upload.php
50001a358e0b90b6f1e4b2414c0f2d44 *dzz/pichome/user.php e79dc819cafad7450fda2748ee3989dd *dzz/pichome/user.php
3d037ab39fd205fc01dcb0644dc73594 *dzz/textviewer/css/theme/black/root.css 3d037ab39fd205fc01dcb0644dc73594 *dzz/textviewer/css/theme/black/root.css
e19d97f977fa3d2316168bbe8e4101e5 *dzz/textviewer/css/theme/darkgrey/root.css e19d97f977fa3d2316168bbe8e4101e5 *dzz/textviewer/css/theme/darkgrey/root.css
732389ded34cb9c52dd88271f1345af9 *dzz/textviewer/css/theme/fonts/element-icons.ttf 732389ded34cb9c52dd88271f1345af9 *dzz/textviewer/css/theme/fonts/element-icons.ttf
@@ -1143,20 +1595,20 @@ dad4a000799b858b5b77d7b171f03482 *dzz/textviewer/dzz_app_textviewer.xml
75082d3e76c9416b1a1037cb210aa10f *dzz/textviewer/template/textviewer.htm 75082d3e76c9416b1a1037cb210aa10f *dzz/textviewer/template/textviewer.htm
0a6164e73ba1c02f0159bf2e9a476a86 *dzz/textviewer/text.js 0a6164e73ba1c02f0159bf2e9a476a86 *dzz/textviewer/text.js
e352fc27892fdd084f7267152ffb8622 *dzz/xgplayer/dzz_app_xgplayer.xml e352fc27892fdd084f7267152ffb8622 *dzz/xgplayer/dzz_app_xgplayer.xml
66e2509fe1db35f128216db3d4e8fee3 *dzz/xgplayer/index.php 02c0c15cce75b757a58ee66f873a9fcc *dzz/xgplayer/index.php
0b0d2b77a3d90ee01f9966d01aa19e1d *dzz/xgplayer/js/xgplayer-flv.js 0b0d2b77a3d90ee01f9966d01aa19e1d *dzz/xgplayer/js/xgplayer-flv.js
2b5cfcb2534b8d53dafc8e8f13825f1e *dzz/xgplayer/js/xgplayer-hls.js 2b5cfcb2534b8d53dafc8e8f13825f1e *dzz/xgplayer/js/xgplayer-hls.js
cb39caa80f5f0fac7037c0abcd68b9fc *dzz/xgplayer/js/xgplayer-shaka.js cb39caa80f5f0fac7037c0abcd68b9fc *dzz/xgplayer/js/xgplayer-shaka.js
8f401af25e9ba2e695fe0473b4fecb11 *dzz/xgplayer/js/xgplayer.js 8f401af25e9ba2e695fe0473b4fecb11 *dzz/xgplayer/js/xgplayer.js
b0bb6c733a343afcddcd03baaeff31b0 *dzz/xgplayer/js/xgplayer.music.js b0bb6c733a343afcddcd03baaeff31b0 *dzz/xgplayer/js/xgplayer.music.js
04fa4e918e031085cb524446cd4a27f2 *dzz/xgplayer/language/zh-CN/lang.php 04fa4e918e031085cb524446cd4a27f2 *dzz/xgplayer/language/zh-CN/lang.php
a875bc67c5d7db47c918a3cfe5318a57 *dzz/xgplayer/template/main.htm 8119f6d1c45038a11269aa47ccdff186 *dzz/xgplayer/template/main.htm
3250b96edf6c6c3627871d38a223499b *dzz/xgplayer/template/progress.htm 3250b96edf6c6c3627871d38a223499b *dzz/xgplayer/template/progress.htm
5cb9422375b907e05eb6b7dc36fcd895 *favicon.ico 5cb9422375b907e05eb6b7dc36fcd895 *favicon.ico
8e55bdb192a3aefe82e03292527819ca *htaccess_default.txt 8e55bdb192a3aefe82e03292527819ca *htaccess_default.txt
55d39f5cf3916ab6a9336d95c671ab53 *index.php 55d39f5cf3916ab6a9336d95c671ab53 *index.php
ede086aa34596b826b2ccf6d32a89303 *install/data/install.sql d47506e140e630a579c83fe4911972ae *install/data/install.sql
67df3c5463e4b6826d4cfc8cc5d64b82 *install/data/install_data.sql 53cf9484adc4e5d9a87f88a662df5dc8 *install/data/install_data.sql
feabf4e4c8e20dc73548dfd6ba8400f9 *install/images/error.png feabf4e4c8e20dc73548dfd6ba8400f9 *install/images/error.png
fc25acefcabc066437d4b27550387954 *install/images/logo.png fc25acefcabc066437d4b27550387954 *install/images/logo.png
2ba93e93e0fbdfeb91e22f6d3bf8b6ca *install/images/logo.svg 2ba93e93e0fbdfeb91e22f6d3bf8b6ca *install/images/logo.svg
@@ -1164,12 +1616,12 @@ fc25acefcabc066437d4b27550387954 *install/images/logo.png
94b02097d5c11c5ca1c1f7ee563a3d82 *install/images/sel.png 94b02097d5c11c5ca1c1f7ee563a3d82 *install/images/sel.png
7d7bb734d5e82ccbb7900e974b0b623a *install/images/seled.png 7d7bb734d5e82ccbb7900e974b0b623a *install/images/seled.png
8e31c9744d7cdd6bf748d3b95c6a89f7 *install/images/style.css 8e31c9744d7cdd6bf748d3b95c6a89f7 *install/images/style.css
971abc1c4c5d1b68696a51ea48d6b3d1 *install/include/install_function.php 414d49adb5b2e405eef17b23285c9369 *install/include/install_function.php
a987af86766c27c565794ffa189cf664 *install/include/install_mysql.php a987af86766c27c565794ffa189cf664 *install/include/install_mysql.php
249b244097610688130b93721d1c2bd1 *install/include/install_mysqli.php 249b244097610688130b93721d1c2bd1 *install/include/install_mysqli.php
d7d7fef7dc366413340be8ad3da41709 *install/include/install_var.php effd4ff5bdac95bbc9e360de443f335c *install/include/install_var.php
5c2f5c9042a9e66bc8f5af0b638cf1de *install/index.php 4c34d50daace82774e12ef92efb93d18 *install/index.php
8eca1f167c0b805d9fda97804379a962 *install/language/zh-cn/lang.php 672ea3abb501cb04f0708a5c69ac2161 *install/language/zh-cn/lang.php
5aefe69b1ba16fe8a6f79c2156f8f281 *misc/ajax.php 5aefe69b1ba16fe8a6f79c2156f8f281 *misc/ajax.php
66ee773a4c2e373da92f48f81930cf3f *misc/classes/init.php 66ee773a4c2e373da92f48f81930cf3f *misc/classes/init.php
f656adb0c1b2699a4d8c613f2b9dacab *misc/pichomeexport.php f656adb0c1b2699a4d8c613f2b9dacab *misc/pichomeexport.php
@@ -1180,11 +1632,10 @@ b4315dcb6c81d9952f4ec624380d40fa *misc/seluser.php
18cf2d930221489abbcbd036f29bcf59 *misc/sendwx.php 18cf2d930221489abbcbd036f29bcf59 *misc/sendwx.php
ff6abf5b6ce1f3256d2aad8fdd24f646 *misc/setunrun.php ff6abf5b6ce1f3256d2aad8fdd24f646 *misc/setunrun.php
45c256cd29506798392534301ac3047f *misc/stat.php 45c256cd29506798392534301ac3047f *misc/stat.php
816b79cd9baa7e76f4058a0d38568593 *misc/syscache.php 38a88c2ea2cd34b23b1704d561e8995b *misc/syscache.php
d365238875a6457eaea991f1e7913309 *misc/template/misc_seluser.htm d365238875a6457eaea991f1e7913309 *misc/template/misc_seluser.htm
89c90d955c3bfda0f63dce1449021924 *misc/upgrade.php 776f099f11c79bc936a33b0fbd486c9f *misc/upgrade.php
170b9709fad7d1a8479d03c5c5913bae *misc.php 170b9709fad7d1a8479d03c5c5913bae *misc.php
6b24f900b7ee6c424f47304a9cf098de *pichome_release.zip
eb11382b6241b03f598530206c21e0a1 *short.php eb11382b6241b03f598530206c21e0a1 *short.php
a4167122758dd580e234395e98987bcb *static/bootstrap/css/bootstrap-slider.css a4167122758dd580e234395e98987bcb *static/bootstrap/css/bootstrap-slider.css
e5f6fb08f469dc836cb3609e23694b3a *static/bootstrap/css/bootstrap-theme.css e5f6fb08f469dc836cb3609e23694b3a *static/bootstrap/css/bootstrap-theme.css
@@ -1216,13 +1667,61 @@ fa2772327f55d8198301fdb8bcfc8158 *static/bootstrap/fonts/glyphicons-halflings-re
ccb7f3909e30b1eb8f65a24393c6e12b *static/bootstrap/js/npm.js ccb7f3909e30b1eb8f65a24393c6e12b *static/bootstrap/js/npm.js
9cccbcd9bc6aed2bb14df1013e185ce3 *static/bootstrap/js/respond.min.js 9cccbcd9bc6aed2bb14df1013e185ce3 *static/bootstrap/js/respond.min.js
3f34091dd7e93143bf4e94df93ac0cff *static/css/app_manage.css 3f34091dd7e93143bf4e94df93ac0cff *static/css/app_manage.css
0558805a20efbceaea35039a548fab7f *static/css/calendar.css
3c7b7885051c739119294ba3aaee1246 *static/css/checkbox.css 3c7b7885051c739119294ba3aaee1246 *static/css/checkbox.css
0c84eeac1e35a0f370b2679ad826648b *static/css/common.css 0c84eeac1e35a0f370b2679ad826648b *static/css/common.css
12813c6cae76dcdcf0ca0673a085362b *static/css/jquery-ui-1.10.4.custom.min.css
2ad158db1f748f93e608bbb264f4ea93 *static/css/mabile_common.css
de5cc99580baf95f1bc098b92245a547 *static/css/pc-commer-header.css
1f85070b3a3652886cba741f23b9eef2 *static/css/smilies.css
b3d07bda63452a4c717858f586653c28 *static/css/tip.css
20f7dec08bcdab872f92e5fd00658bf7 *static/dzzicon/fonts/dzz.eot 20f7dec08bcdab872f92e5fd00658bf7 *static/dzzicon/fonts/dzz.eot
bab5426c2e41cac25a364bca0d0687bf *static/dzzicon/fonts/dzz.svg bab5426c2e41cac25a364bca0d0687bf *static/dzzicon/fonts/dzz.svg
2545315cf884316f38d4ca50e07f5bc3 *static/dzzicon/fonts/dzz.ttf 2545315cf884316f38d4ca50e07f5bc3 *static/dzzicon/fonts/dzz.ttf
68e44d78b03d25cb3d817eb619920fc2 *static/dzzicon/fonts/dzz.woff 68e44d78b03d25cb3d817eb619920fc2 *static/dzzicon/fonts/dzz.woff
09b33a5885a3ff265ca5ce6684031bb0 *static/dzzicon/icon.css 09b33a5885a3ff265ca5ce6684031bb0 *static/dzzicon/icon.css
325472601571f31e1bf00674c368d335 *static/image/common/b.gif
b247df6c12a919291ee599eb53fe620e *static/image/common/check_error.gif
67140a21f80675f4d9a781c2b8673e2f *static/image/common/check_right.gif
c62559524d105e0199b3e00c8bd261b9 *static/image/common/close.gif
69739b9046f1d000a2992b4e7142a096 *static/image/common/delete.png
d777c1d9caca98016c795c64c52b6bdc *static/image/common/error.png
3eef7a774c904f6b2d3ab826d00a2e14 *static/image/common/ic-filtrate.png
38d1a8e23d1bc2ab3846822af9e57f4b *static/image/common/icon_main.png
ab46e1d967fb57c6e634800026dda3bc *static/image/common/info.png
071c62d99c36ab0aa44891a6bd5a0ae1 *static/image/common/left_drager.png
69de2edd002c585dbde1c11b04fcaf0f *static/image/common/left_drager_op1.gif
f00e672de1fcb2414944584fdb9bad2a *static/image/common/left_drager_op2.gif
05235af1889d21cd47ed3fbf8cced673 *static/image/common/loading.gif
25b023c9a97dc186e7ef8283c67af083 *static/image/common/loading.png
2894a0aaf1160440c47ecd1685115ed8 *static/image/common/logo.png
169e39863c8c46883c5ec51a9c235934 *static/image/common/noFilePage-fail.png
78fcf9ba53821a5e6da060414178895d *static/image/common/noFilePage-successful.png
bf7d3e1972b3fe5bfe8c119fee05e89d *static/image/common/none.gif
ee9ca73d9ee8b9bd5606e576d375a8f1 *static/image/common/ownwatermark.png
091ad73692cb58a15a91a48df233bd4c *static/image/common/passlevel.png
40178d7ea9e0e84080418fd3df6e987b *static/image/common/player.swf
2c00b1029439ac146931beaa56336655 *static/image/common/popupcredit_bg.gif
13cdfe50e5dfb3f1c5797a94c5952aa1 *static/image/common/popuptext_bg.gif
44bf00ace335179432cf9baf2fbeb21f *static/image/common/qq.gif
36de48f2ece310da91a9d7cdb1c12405 *static/image/common/qq_big.gif
955f51d16c5e3f50834b424c43d6982e *static/image/common/qq_bind.gif
2772bb5963055ab01078bd491f7e2669 *static/image/common/qq_bind_small.gif
5303890a49bf80d5d9227155cc844e29 *static/image/common/qq_login.gif
8a2896873d73ab8a17b50c0c60974970 *static/image/common/rank1.png
93b8ff2a38e2e4a840985232f422dc80 *static/image/common/rank2.png
8a560d48b5c115aafd683a0bb47ff3fa *static/image/common/rank3.png
d9ff43f18d468615f2ae13bba9ff634c *static/image/common/right.gif
f639a922a4ba5d476ee1f65329139846 *static/image/common/right.png
4cb37af1099b93a01f328671f37b8b2a *static/image/common/tip_bottom.png
57171a556f08080e3143434016f2f549 *static/image/common/tip_top.png
89f8da465fe6b53db230d9f9d28d288e *static/image/common/tip_up.gif
6fcf8bd102a9f3a4fe1d04d2e53d6c82 *static/image/common/tip_up_grey.gif
3747b712cf2168054bb45fceb4ebf926 *static/image/common/tree_heng.gif
f671ff097fcd491e54914ae4860513ae *static/image/common/tree_heng1.gif
2710209ef9e7469cb79c6c23d9e968b5 *static/image/common/tree_su.gif
a69a0a404fedd3a334f295db86001589 *static/image/common/wloading.gif
25b023c9a97dc186e7ef8283c67af083 *static/image/common/wloading.png
7215ee9c7d9dc229d2921a40e899ec5f *static/index.htm 7215ee9c7d9dc229d2921a40e899ec5f *static/index.htm
6c57b762589f13ea5b3579ca5e6c369b *static/jquery/jquery-migrate-1.4.1.js 6c57b762589f13ea5b3579ca5e6c369b *static/jquery/jquery-migrate-1.4.1.js
04a4db2983450a2970c459ba87b4210a *static/jquery/jquery-ui.js 04a4db2983450a2970c459ba87b4210a *static/jquery/jquery-ui.js
@@ -1264,6 +1763,12 @@ d90a69d4131a7b4b0fadb54a5b4501b6 *static/js/touch-0.2.14.min.js
01ab6b3a4cb87f8549b2ddb55b7d83a7 *static/js/ZeroClipboard/ZeroClipboard.js 01ab6b3a4cb87f8549b2ddb55b7d83a7 *static/js/ZeroClipboard/ZeroClipboard.js
9e8d8599a9eee6835a6124b6db3dfb2c *static/js/ZeroClipboard/ZeroClipboard.min.js 9e8d8599a9eee6835a6124b6db3dfb2c *static/js/ZeroClipboard/ZeroClipboard.min.js
3ef2e4d603a8b4600daebb249d1d9928 *static/js/ZeroClipboard/ZeroClipboard.swf 3ef2e4d603a8b4600daebb249d1d9928 *static/js/ZeroClipboard/ZeroClipboard.swf
c183d09005a5c15879398e629da9c96a *static/popbox/jquery.popbox.js
50c5e3e79b276c92df6cc52caeb464f0 *static/popbox/loading.gif
4283777f23ada6131e77cf87959e1042 *static/popbox/loading.svg
50c5e3e79b276c92df6cc52caeb464f0 *static/popbox/loading1.gif
f2fe97d43271ba5a1aaca87b054554d3 *static/popbox/oval.svg
90b26d67b569e554a902865099864554 *static/popbox/popbox.css
d1ad8ccaadf9ebe30b27c63084cd4ac2 *user/ajax.php d1ad8ccaadf9ebe30b27c63084cd4ac2 *user/ajax.php
470a63ab208a9bb51e652b95898e18e4 *user/classes/checklogin.php 470a63ab208a9bb51e652b95898e18e4 *user/classes/checklogin.php
d8a41c8fbd7289ae2ecb61479f062f86 *user/classes/init.php d8a41c8fbd7289ae2ecb61479f062f86 *user/classes/init.php
@@ -1297,14 +1802,14 @@ c086d7adbe5aab566b96a8311fd56a75 *user/login/template/getpasswd.htm
fd044a68a07006f09f8afefe8212b84a *user/login/template/getpasswd_sms_success.htm fd044a68a07006f09f8afefe8212b84a *user/login/template/getpasswd_sms_success.htm
fbd9c74e9b4c5ebfcb7d520a07d972dd *user/login/template/login_copyright.htm fbd9c74e9b4c5ebfcb7d520a07d972dd *user/login/template/login_copyright.htm
3dd808f2a4d82e7a40536e3941e37d74 *user/login/template/login_single1.htm 3dd808f2a4d82e7a40536e3941e37d74 *user/login/template/login_single1.htm
a4705f131c2766b6f1e78dc74e7662c5 *user/login/template/login_single2.htm d2ce2f26ffe01669c05f27f678dede40 *user/login/template/login_single2.htm
c06a447a0c9d131913d08020e784e758 *user/login/template/login_single3.htm c06a447a0c9d131913d08020e784e758 *user/login/template/login_single3.htm
f368efa39460e484371148a4e1163a98 *user/login/template/login_single4.htm f368efa39460e484371148a4e1163a98 *user/login/template/login_single4.htm
4ae58655385cf4d0d9d0f106786d581d *user/login/template/login_single_demo.htm 4ae58655385cf4d0d9d0f106786d581d *user/login/template/login_single_demo.htm
f82562f1c60ed08dc1ae50887aa18097 *user/login/template/login_single_mobile.htm f82562f1c60ed08dc1ae50887aa18097 *user/login/template/login_single_mobile.htm
d28233af369fb8dbff23ae32ed050102 *user/login/template/login_skip.htm d28233af369fb8dbff23ae32ed050102 *user/login/template/login_skip.htm
1f31bf4b7a42849835aaca7314412521 *user/login/template/login_sms_auth.htm 1f31bf4b7a42849835aaca7314412521 *user/login/template/login_sms_auth.htm
c1a1ad4b853e82912c3b544f6dc6d26b *user/login/template/lostpasswd.htm 1ea581b6b099021c2cc066fe73bb7720 *user/login/template/lostpasswd.htm
a154bb56352271963f02ded25548a27e *user/scripts/hammer.js a154bb56352271963f02ded25548a27e *user/scripts/hammer.js
dbfbf51750774d4fd974029ba5440b63 *user/scripts/jquery.cropbox.css dbfbf51750774d4fd974029ba5440b63 *user/scripts/jquery.cropbox.css
6ea230d704b460f9ac1c94cd139ea63d *user/scripts/jquery.cropbox.js 6ea230d704b460f9ac1c94cd139ea63d *user/scripts/jquery.cropbox.js

View File

@@ -113,7 +113,7 @@ if($operation == 'getApp'){//获取当前用户应用
left join %t s on s.uid = u.uid and s.skey=%swhere u.uid =%d", left join %t s on s.uid = u.uid and s.skey=%swhere u.uid =%d",
array('user','user_setting','headerColor',$uid)); array('user','user_setting','headerColor',$uid));
if($udata['avatarstatus'] == 1){ if($udata['avatarstatus'] == 1){
$userData['icon'] = 'avatar.php?uid='.$udata['uid']; $userData['icon'] = 'avatar.php?uid='.$udata['uid'].'&random='.VERHASH;
}elseif($udata['svalue']){ }elseif($udata['svalue']){
$userData['firstword'] = strtoupper(new_strsubstr($udata['username'],1,'')); $userData['firstword'] = strtoupper(new_strsubstr($udata['username'],1,''));
$userData['headerColor'] = $udata['svalue']; $userData['headerColor'] = $udata['svalue'];

View File

@@ -1 +1 @@
<!DOCTYPE html><html lang=zh><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title></title><link href=/admin/system/dist/css/chunk-2b4f90f7.519dec70.css rel=prefetch><link href=/admin/system/dist/css/chunk-494f643e.7502109f.css rel=prefetch><link href=/admin/system/dist/css/chunk-5ae5cc35.d763cbce.css rel=prefetch><link href=/admin/system/dist/css/chunk-5cdcd199.6f46c04d.css rel=prefetch><link href=/admin/system/dist/css/chunk-74c32c70.4b7d665e.css rel=prefetch><link href=/admin/system/dist/css/chunk-76f23146.6fc79cd8.css rel=prefetch><link href=/admin/system/dist/css/chunk-7828662a.c81657ef.css rel=prefetch><link href=/admin/system/dist/css/chunk-9f9c2568.5356ad7d.css rel=prefetch><link href=/admin/system/dist/css/chunk-af3b1b98.b822363f.css rel=prefetch><link href=/admin/system/dist/css/chunk-e730cc06.987283b7.css rel=prefetch><link href=/admin/system/dist/css/system_temp.a56510eb.css rel=prefetch><link href=/admin/system/dist/js/chunk-2b4f90f7.ec4ac270.js rel=prefetch><link href=/admin/system/dist/js/chunk-2d0a3327.ad2684c9.js rel=prefetch><link href=/admin/system/dist/js/chunk-2d0bdbc6.4ec7bc5e.js rel=prefetch><link href=/admin/system/dist/js/chunk-2d0dd46d.0816c17e.js rel=prefetch><link href=/admin/system/dist/js/chunk-2d0efd3c.44a093d1.js rel=prefetch><link href=/admin/system/dist/js/chunk-2d20fcd9.50f81306.js rel=prefetch><link href=/admin/system/dist/js/chunk-2d21ddf7.9f7b329e.js rel=prefetch><link href=/admin/system/dist/js/chunk-494f643e.77a11d42.js rel=prefetch><link href=/admin/system/dist/js/chunk-5ae5cc35.25761a21.js rel=prefetch><link href=/admin/system/dist/js/chunk-5cdcd199.070f9c94.js rel=prefetch><link href=/admin/system/dist/js/chunk-74c32c70.1f5e9382.js rel=prefetch><link href=/admin/system/dist/js/chunk-76f23146.0d2957ed.js rel=prefetch><link href=/admin/system/dist/js/chunk-7828662a.e587f025.js rel=prefetch><link href=/admin/system/dist/js/chunk-9f9c2568.538835dd.js rel=prefetch><link href=/admin/system/dist/js/chunk-af3b1b98.850ec152.js rel=prefetch><link href=/admin/system/dist/js/chunk-e730cc06.3ce9a994.js rel=prefetch><link href=/admin/system/dist/js/system_temp.c7e32270.js rel=prefetch><link href=/admin/system/dist/css/chunk-vendors.4d5d56a8.css rel=preload as=style><link href=/admin/system/dist/css/index.7d0ec6bf.css rel=preload as=style><link href=/admin/system/dist/js/chunk-vendors.3b95dfe3.js rel=preload as=script><link href=/admin/system/dist/js/index.b5ff203c.js rel=preload as=script><link href=/admin/system/dist/css/chunk-vendors.4d5d56a8.css rel=stylesheet><link href=/admin/system/dist/css/index.7d0ec6bf.css rel=stylesheet></head><body><div id=app></div><script src=/admin/system/dist/js/chunk-vendors.3b95dfe3.js></script><script src=/admin/system/dist/js/index.b5ff203c.js></script></body></html> <!DOCTYPE html><html lang=zh><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title></title><link href=admin/system/dist/css/chunk-2b4f90f7.519dec70.css rel=prefetch><link href=admin/system/dist/css/chunk-494f643e.7502109f.css rel=prefetch><link href=admin/system/dist/css/chunk-5ae5cc35.d763cbce.css rel=prefetch><link href=admin/system/dist/css/chunk-5cdcd199.6f46c04d.css rel=prefetch><link href=admin/system/dist/css/chunk-74c32c70.4b7d665e.css rel=prefetch><link href=admin/system/dist/css/chunk-76f23146.6fc79cd8.css rel=prefetch><link href=admin/system/dist/css/chunk-7828662a.c81657ef.css rel=prefetch><link href=admin/system/dist/css/chunk-9f9c2568.5356ad7d.css rel=prefetch><link href=admin/system/dist/css/chunk-af3b1b98.b822363f.css rel=prefetch><link href=admin/system/dist/css/chunk-e730cc06.987283b7.css rel=prefetch><link href=admin/system/dist/css/system_temp.a56510eb.css rel=prefetch><link href=admin/system/dist/js/chunk-2b4f90f7.ec4ac270.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0a3327.ad2684c9.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0bdbc6.4ec7bc5e.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0dd46d.e13ddeba.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0efd3c.44a093d1.js rel=prefetch><link href=admin/system/dist/js/chunk-2d20fcd9.50f81306.js rel=prefetch><link href=admin/system/dist/js/chunk-2d21ddf7.9f7b329e.js rel=prefetch><link href=admin/system/dist/js/chunk-494f643e.77a11d42.js rel=prefetch><link href=admin/system/dist/js/chunk-5ae5cc35.25761a21.js rel=prefetch><link href=admin/system/dist/js/chunk-5cdcd199.070f9c94.js rel=prefetch><link href=admin/system/dist/js/chunk-74c32c70.1f5e9382.js rel=prefetch><link href=admin/system/dist/js/chunk-76f23146.0d2957ed.js rel=prefetch><link href=admin/system/dist/js/chunk-7828662a.e587f025.js rel=prefetch><link href=admin/system/dist/js/chunk-9f9c2568.538835dd.js rel=prefetch><link href=admin/system/dist/js/chunk-af3b1b98.850ec152.js rel=prefetch><link href=admin/system/dist/js/chunk-e730cc06.3ce9a994.js rel=prefetch><link href=admin/system/dist/js/system_temp.c7e32270.js rel=prefetch><link href=admin/system/dist/css/chunk-vendors.4d5d56a8.css rel=preload as=style><link href=admin/system/dist/css/index.7d0ec6bf.css rel=preload as=style><link href=admin/system/dist/js/chunk-vendors.3b95dfe3.js rel=preload as=script><link href=admin/system/dist/js/index.d36cff59.js rel=preload as=script><link href=admin/system/dist/css/chunk-vendors.4d5d56a8.css rel=stylesheet><link href=admin/system/dist/css/index.7d0ec6bf.css rel=stylesheet></head><body><div id=app></div><script src=admin/system/dist/js/chunk-vendors.3b95dfe3.js></script><script src=admin/system/dist/js/index.d36cff59.js></script></body></html>

View File

@@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0dd46d"],{8164:function(e,t,s){"use strict";s.r(t);var n=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}]},[s("el-card",{staticClass:"box-card",staticStyle:{background:"rgb(240, 249, 235)","text-align":"center"},attrs:{shadow:"hover"}},[s("p",{staticStyle:{"margin-bottom":"0"}},[s("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful1")))])],1),s("p",{staticStyle:{margin:"0"}},[s("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.version))])],1),s("p",{staticStyle:{"margin-bottom":"0"}},[s("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful3",{dir:e.dir})))])],1),s("p",{staticStyle:{margin:"0"}},[s("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful4",{backdir:e.backdir})))])],1)])],1)},a=[],r=(s("96cf"),s("1da1")),i={data:function(){return{loading:!1,version:"",dir:"",backdir:""}},created:function(){this.getData()},methods:{getData:function(){var e=this;return Object(r["a"])(regeneratorRuntime.mark((function t(){var s,n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e.loading=!0,t.next=3,e.axios.post("admin.php?mod=system&op=intsystemupgrade&operation=patch&step=5&version="+e.$route.params.version);case 3:s=t.sent,n=s.data,e.version=e.$t("upgrade_successful2",{msg:n.version}),e.dir=n.dir,e.backdir=n.backdir,e.loading=!1;case 9:case"end":return t.stop()}}),t)})))()}},components:{},mounted:function(){}},c=i,d=s("2877"),o=Object(d["a"])(c,n,a,!1,null,"321830d5",null);t["default"]=o.exports}}]);

File diff suppressed because one or more lines are too long

View File

@@ -240,7 +240,7 @@ if ($operation == 'patch' || $operation == 'cross') {
$dzz_upgrade -> rmdirs(DZZ_ROOT . $old_update_dir); $dzz_upgrade -> rmdirs(DZZ_ROOT . $old_update_dir);
$dzz_upgrade -> rmdirs(DZZ_ROOT . $old_back_dir); $dzz_upgrade -> rmdirs(DZZ_ROOT . $old_back_dir);
upgradeinformation(0); upgradeinformation(0);
exit(json_encode(array('dir'=>$new_update_dir,'backdir'=>$new_back_dir))); exit(json_encode(array('version' => $version,'dir'=>$new_update_dir,'backdir'=>$new_back_dir)));
// $msg = lang('upgrade_successful', array('version' => $version, 'save_update_dir' => $new_update_dir, 'save_back_dir' => $new_back_dir, 'upgradeurl' => upgradeinformation(0))); // $msg = lang('upgrade_successful', array('version' => $version, 'save_update_dir' => $new_update_dir, 'save_back_dir' => $new_back_dir, 'upgradeurl' => upgradeinformation(0)));
} }

View File

@@ -291,6 +291,8 @@ if ($operation == 'patch' || $operation == 'cross') {
dheader('Location: ' . $url); dheader('Location: ' . $url);
} elseif ($step == 5) { } elseif ($step == 5) {
print_r(1111);
die;
$file = DZZ_ROOT . './data/update/pichome' . $version . '/updatelist.tmp'; $file = DZZ_ROOT . './data/update/pichome' . $version . '/updatelist.tmp';
@unlink($file); @unlink($file);
@unlink(DZZ_ROOT . './install/update.php'); @unlink(DZZ_ROOT . './install/update.php');

View File

@@ -29,7 +29,7 @@ if(file_exists(dirname(__FILE__).'/'.$avatar)) {
exit; exit;
} }
$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle'; $size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
$avatar_url = 'static/image/avatar/noavatar_'.$size.'.gif'; $avatar_url = 'data/avatar/noavatar_'.$size.'.gif';
} }
if(empty($random)) { if(empty($random)) {

View File

@@ -166,4 +166,21 @@ $_config['userlogin']['checkip'] = 1; //用户登录错误验证ip对于
//$_config['system_os'] = 'linux'; //windows,linux,mac,系统会自动判断 //$_config['system_os'] = 'linux'; //windows,linux,mac,系统会自动判断
//$_config['system_charset']='utf-8'; //操作系统编码不设置系统将根据操作系统类型来判断linux:utf-8;windows:gbk; //$_config['system_charset']='utf-8'; //操作系统编码不设置系统将根据操作系统类型来判断linux:utf-8;windows:gbk;
//pichome宽高
$_config['pichomethumbwidth']= 900;
$_config['pichomethumbheight']= 900;
//pichome缩略图颜色允许后缀
$_config['getcolorextlimit'] = ['jpg','png','jpeg','gif','webp','pdf'];
//ffmpeg位置
$_config['pichomeffmpegposition'] = '';
$_config['pichomeffprobposition'] = '';
//支持获取音视频信息的后缀
$_config['pichomeffmpeggetvieoinoext']= [ 'avi', 'rm', 'rmvb', 'mkv', 'mov', 'wmv', 'asf', 'mpg', 'mpe', 'mpeg', 'mp4', 'm4v', 'mpeg', 'f4v', 'vob', 'ogv', 'mts', 'm2ts',
'3gp', 'webm', 'flv', 'wav', 'mp3', 'ogg', 'midi', 'wma', 'vqf', 'ra', 'aac', 'flac', 'ape', 'amr', 'aiff', 'au', 'm4a'];
//支持获取音视频缩略图后缀
$_config['pichomeffmpeggetthumbext']= [ 'avi', 'rm', 'rmvb', 'mkv', 'mov', 'wmv', 'asf', 'mpg', 'mpe', 'mpeg', 'mp4', 'm4v', 'mpeg', 'f4v', 'vob', 'ogv', 'mts', 'm2ts',
'3gp', 'webm', 'flv', 'wav', 'mp3', 'ogg', 'midi', 'wma', 'vqf', 'ra', 'aac', 'flac', 'ape', 'amr', 'aiff', 'au', 'm4a'];
return $_config; return $_config;

View File

@@ -1,102 +1,112 @@
<?php <?php
/** php下载类,支持断点续传 /** php下载类,支持断点续传
* Date: 2013-06-30 * Date: 2013-06-30
* Author: test * Author: test
* Ver: 1.0 * Ver: 1.0
* *
* Func: * Func:
* download: 下载文件 * download: 下载文件
* setSpeed: 设置下载速度 * setSpeed: 设置下载速度
* getRange: 获取header中Range * getRange: 获取header中Range
*/ */
class FileDownload{ // class start class FileDownload{ // class start
private $_speed = 512; // 下载速度 private $_speed = 512; // 下载速度
/** 下载 /** 下载
* @param String $file 要下载的文件路径 * @param String $file 要下载的文件路径
* @param String $name 文件名称,为空则与下载的文件名称一样 * @param String $name 文件名称,为空则与下载的文件名称一样
* @param boolean $reload 是否开启断点续传 * @param boolean $reload 是否开启断点续传
*/ */
public function download($file, $name='',$file_size=0,$dateline=0, $reload=false){ public function download($file, $name='',$file_size=0,$dateline=0, $reload=false){
if($name==''){ if($name==''){
$name = basename($file); $name = basename($file);
} }
if(!$dateline){ if(!$dateline){
$dataline=TIMESTAMP; $dataline=TIMESTAMP;
} }
if(!$fp = fopen($file, 'rb')){ if(!$fp = fopen($file, 'rb')){
topshowmessage(lang('file_not_exist1')); topshowmessage(lang('file_not_exist1'));
} }
$db = DB::object(); $charset = CHARSET;
$db->close(); $db = DB::object();
@ob_end_clean(); $db->close();
if(getglobal('gzipcompress')) @ob_start('ob_gzhandler'); @ob_end_clean();
if(!$file_size) $file_size = filesize($file); if(getglobal('gzipcompress')) @ob_start('ob_gzhandler');
$ranges = $this->getRange($file_size); if(!$file_size) $file_size = filesize($file);
$ranges = $this->getRange($file_size);
header('cache-control:public'); header('cache-control:public');
header('Date: '.gmdate('D, d M Y H:i:s', $dateline).' GMT'); header('Date: '.gmdate('D, d M Y H:i:s', $dateline).' GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $dateline).' GMT'); header('Last-Modified: '.gmdate('D, d M Y H:i:s', $dateline).' GMT');
header('content-type:application/octet-stream'); header('content-type:application/octet-stream');
header('content-disposition:attachment; filename='.$name); if (preg_match("/Firefox/", $_SERVER["HTTP_USER_AGENT"])) {
if($reload && $ranges!=null){ // 使用续传 $attachment = 'attachment; filename*='.$charset.'\'\'' . $name;
header('HTTP/1.1 206 Partial Content'); } elseif (!preg_match("/Chrome/", $_SERVER["HTTP_USER_AGENT"]) && preg_match("/Safari/", $_SERVER["HTTP_USER_AGENT"])) {
header('Accept-Ranges:bytes'); $filename = rawurlencode($name); // 注意rawurlencode与urlencode的区别
$attachment = 'attachment; filename*='.$charset.'\'\'' . $filename;
} else{
$attachment = 'attachment; filename='.$name;
}
//header('content-disposition:attachment; filename='.$name);
header('content-disposition:'.$attachment);
if($reload && $ranges!=null){ // 使用续传
header('HTTP/1.1 206 Partial Content');
header('Accept-Ranges:bytes');
// 剩余长度 // 剩余长度
header(sprintf('content-length:%u',$ranges['end']-$ranges['start']+1)); header(sprintf('content-length:%u',$ranges['end']-$ranges['start']+1));
// range信息 // range信息
header(sprintf('content-range:bytes %s-%s/%s', $ranges['start'], $ranges['end'], $file_size)); header(sprintf('content-range:bytes %s-%s/%s', $ranges['start'], $ranges['end'], $file_size));
// fp指针跳到断点位置 // fp指针跳到断点位置
fseek($fp, sprintf('%u', $ranges['start'])); fseek($fp, sprintf('%u', $ranges['start']));
}else{ }else{
header('HTTP/1.1 200 OK'); header('HTTP/1.1 200 OK');
header('content-length:'.$file_size); header('content-length:'.$file_size);
} }
while(!feof($fp)){ while(!feof($fp)){
echo fread($fp, round($this->_speed*1024,0)); echo fread($fp, round($this->_speed*1024,0));
@flush(); @ob_flush(); @flush(); @ob_flush();
// usleep(500); // 用于测试,减慢下载速度 // usleep(500); // 用于测试,减慢下载速度
} }
($fp!=null) && fclose($fp); ($fp!=null) && fclose($fp);
}
/** 设置下载速度
* @param int $speed
*/
public function setSpeed($speed){
if(is_numeric($speed) && $speed>16 && $speed<4096){
$this->_speed = $speed;
} }
}
/** 获取header range信息 /** 设置下载速度
* @param int $file_size 文件大小 * @param int $speed
* @return Array */
*/ public function setSpeed($speed){
private function getRange($file_size){ if(is_numeric($speed) && $speed>16 && $speed<4096){
$this->_speed = $speed;
}
}
if(isset($_SERVER['HTTP_RANGE'])){ /** 获取header range信息
list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2); * @param int $file_size 文件大小
list($range) = explode(",",$range,2); * @return Array
list($start, $range_end) = explode("-", $range); */
$start=intval($start); private function getRange($file_size){
if(!$range_end) {
$range_end=$file_size-1; if(isset($_SERVER['HTTP_RANGE'])){
} else { list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
$range_end=intval($range_end); list($range) = explode(",",$range,2);
} list($start, $range_end) = explode("-", $range);
$range = array('start'=>$start,'end'=>$range_end); $start=intval($start);
return $range; if(!$range_end) {
} $range_end=$file_size-1;
return null; } else {
} $range_end=intval($range_end);
}
$range = array('start'=>$start,'end'=>$range_end);
return $range;
}
return null;
}
} // class end } // class end

View File

@@ -238,10 +238,11 @@ class ImagePalette implements IteratorAggregate
protected function setWorkingImageImagick() protected function setWorkingImageImagick()
{ {
$file = file_get_contents($this->file); $file = file_get_contents($this->file);
$temp = tempnam("/tmp", uniqid("ImagePalette_", true)); $temp = tempnam(DZZ_ROOT.'./data/attachment/cache', uniqid("ImagePalette_", true));
if(!file_put_contents($temp, $file)) return false; if(!file_put_contents($temp, $file)) return false;
$this->loadedImage = new Imagick($temp); $this->loadedImage = new Imagick($temp);
$this->loadedImage ->thumbnailImage(64,64,true); $this->loadedImage ->thumbnailImage(64,64,true);
@unlink($temp);
return true; return true;
} }

View File

@@ -375,11 +375,12 @@ class image {
return array($width,$height); return array($width,$height);
} }
function Thumb_IM() { function Thumb_IM() {
switch($this->param['thumbtype']) { switch($this->param['thumbtype']) {
case 'fixnone': case 'fixnone':
case 1: case 1:
if($this->imginfo['width'] >= $this->param['thumbwidth'] || $this->imginfo['height'] >= $this->param['thumbheight']) { if($this->imginfo['width'] >= $this->param['thumbwidth'] || $this->imginfo['height'] >= $this->param['thumbheight']) {
$im = new Imagick(realpath($this->source)); $im = new Imagick(realpath($this->source));
$this->autoRotateImage($im); $this->autoRotateImage($im);
$im->stripImage(); //去除图片信息 $im->stripImage(); //去除图片信息
$im->setIteratorIndex(0); $im->setIteratorIndex(0);

View File

@@ -363,7 +363,9 @@ class dzz_app extends dzz_base{
$allowgzip = $this->config['output']['gzip'] && empty($this->var['inajax']) && EXT_OBGZIP; $allowgzip = $this->config['output']['gzip'] && empty($this->var['inajax']) && EXT_OBGZIP;
setglobal('gzipcompress', $allowgzip); setglobal('gzipcompress', $allowgzip);
if($this->config['localurl']){
setglobal('localurl', $this->config['localurl']);
}
if(!ob_start($allowgzip ? 'ob_gzhandler' : null)) { if(!ob_start($allowgzip ? 'ob_gzhandler' : null)) {
ob_start(); ob_start();
} }

View File

@@ -158,10 +158,24 @@
return $return; return $return;
} else return false; } else return false;
} }
public function getAllFiles($path,$fid){ public function getAllFiles($path,$fid,$page=1,$limit=100){
$path = self::clean($path); $path = self::clean($path);
if ($io = self::initIO($path)) { if ($io = self::initIO($path)) {
$return = $io->getAllFiles($path,$fid); $return = $io->getAllFiles($path,$fid,$page,$limit);
return $return;
} else return false;
}
public function getAlltag($path){
$path = self::clean($path);
if ($io = self::initIO($path)) {
$return = $io->getAlltag($path);
return $return;
} else return false;
}
public function getAlltaggroup($path){
$path = self::clean($path);
if ($io = self::initIO($path)) {
$return = $io->getAlltaggroup($path);
return $return; return $return;
} else return false; } else return false;
} }

View File

@@ -0,0 +1,77 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
//所有用户应用
//uid=0 的表示为默认应用
class table_connect extends dzz_table
{
public function __construct() {
$this->_table = 'connect';
$this->_pk = 'bz';
$this->_pre_cache_key = 'connect_';
$this->_cache_ttl = 60*60;
parent::__construct();
}
public function fetch_all_by_available($onlyuser=false){
$data=array();
if($onlyuser) $available=1;
else $available=0;
$query=DB::query("SELECT * FROM ".DB::table($this->_table)." WHERE available > '{$available}' and type!='local' ORDER BY disp");
while($value=DB::fetch($query)){
//检测可用性
if($value['type']=='pan' && (empty($value['key']) || empty($value['secret']))){
$value['available']=0;
$value['warning']=lang('please_open_after_setting');
continue;
}
if(!is_file(DZZ_ROOT.'./core/class/io/io_'.($value['bz']).'.php')){
$value['available']=0;
$value['warning']='api'.lang('typename_attach').'io_'.($value['bz']).'.php'.lang('inexistence').'';
continue;
}
$data[$value['bz']]=$value;
}
return $data;
}
public function fetch_all_folderdata($uid){
$data=self::fetch_all_by_available();
$folderdata=array();
foreach($data as $value){
foreach(DB::fetch_all("select id from ".DB::table($value['dname'])." where uid>0 && uid='{$uid}'") as $value1){
$arr=C::t($value['dname'])->fetch_by_id($value1['id']);
$folderdata[$arr['fid']]=$arr;
}
}
return $folderdata;
}
public function fetch_all_bz(){
$data=array();
foreach(DB::fetch_all("select bz from %t where 1",array($this->_table)) as $value){
$data[]=$value['bz'];
}
return $data;
}
public function delete_by_bz($bz){
if($bz=='dzz') return false; //dzz是内置不能删除
$data=self::fetch($bz);
if(is_file(DZZ_ROOT.'./core/class/table/table_'.$data['dname'].'.php')){
C::t($data['dname'])->delete_by_bz($bz);
}
return self::delete($bz);
}
}
?>

View File

@@ -0,0 +1,82 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
//所有用户应用
//uid=0 的表示为默认应用
class table_connect_disk extends dzz_table
{
public function __construct() {
$this->_table = 'connect_disk';
$this->_pk = 'id';
$this->_pre_cache_key = 'connect_disk_';
$this->_cache_ttl = 300;
parent::__construct();
}
public function fetch_by_id($id){
$value=parent::fetch($id);
$cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
$data=array(
'id'=>$value['id'],
'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$cloud['root']),
'pfid'=>0,
'fname'=>$value['cloudname'],
'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
'bz'=>$cloud['bz'].':'.$value['id'].':',
'path'=>$cloud['bz'].':'.$value['id'].':'.$cloud['root'],
'type'=>'disk',
'fsperm'=>perm_FolderSPerm::flagPower($cloud['bz']),
'perm'=>perm_binPerm::getGroupPower('all'),
'flag'=>$cloud['bz'],
'iconview'=>1,
'disp'=>'0',
);
return $data;
}
public function fetch_all_by_id($ids){
$data=array();
foreach($ids as $id){
$value=self::fetch_by_id($id);
$data[$value['fid']]=$value;
}
return $data;
}
public function delete_by_id($id){
$return=array();
$data=parent::fetch($id);
if(parent::delete($id)){
$return['msg']='success';
//C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
//删除图片缓存文件
$imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
removedirectory($imgcache);
}
return $return;
}
public function delete_by_uid($uid){
if(!$uid) return 0;
foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
self::delete_by_id($value['id']);
}
return true;
}
public function delete_by_bz($bz){
foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
self::delete_by_id($value['id']);
}
}
}
?>

View File

@@ -0,0 +1,82 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
//所有用户应用
//uid=0 的表示为默认应用
class table_connect_ftp extends dzz_table
{
public function __construct() {
$this->_table = 'connect_ftp';
$this->_pk = 'id';
$this->_pre_cache_key = 'connect_ftp_';
$this->_cache_ttl = 300;
parent::__construct();
}
public function fetch_by_id($id){
$value=self::fetch($id);
$cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
$data=array(
'id'=>$value['id'],
'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$cloud['root']),
'pfid'=>0,
'fname'=>$value['cloudname'],
'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
'bz'=>$cloud['bz'].':'.$value['id'].':',
'path'=>$cloud['bz'].':'.$value['id'].':'.$cloud['root'],
'type'=>'ftp',
'fsperm'=>perm_FolderSPerm::flagPower($cloud['bz']),
'perm'=>perm_binPerm::getGroupPower('all'),
'flag'=>$cloud['bz'],
'iconview'=>1,
'disp'=>'0',
);
return $data;
}
public function fetch_all_by_id($ids){
$data=array();
foreach($ids as $id){
$value=self::fetch_by_id($id);
$data[$value['fid']]=$value;
}
return $data;
}
public function delete_by_id($id){
$return=array();
$data=parent::fetch($id);
if(parent::delete($id)){
$return['msg']='success';
//C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
//删除图片缓存文件
$imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
removedirectory($imgcache);
}
return $return;
}
public function delete_by_uid($uid){
if(!$uid) return 0;
foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
self::delete_by_id($value['id']);
}
return true;
}
public function delete_by_bz($bz){
foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
self::delete_by_id($value['id']);
}
}
}
?>

View File

@@ -0,0 +1,83 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
//所有用户应用
//uid=0 的表示为默认应用
class table_connect_onedrive extends dzz_table
{
public function __construct() {
$this->_table = 'connect_onedrive';
$this->_pk = 'id';
$this->_pre_cache_key = 'connect_onedrive_';
$this->_cache_ttl = 300;
parent::__construct();
}
public function fetch_by_id($id){
$value=self::fetch($id);
$cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
if(!$value['cloudname']) $value['cloudname']=$cloud['name'].':'.($value['cusername']?$value['cusername']:$cloud['cuid']);
$data=array(
'id'=>$value['id'],
'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$cloud['root']),
'pfid'=>0,
'fname'=>$value['cloudname'],
'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
'bz'=>$cloud['bz'].':'.$value['id'].':',
'path'=>$cloud['bz'].':'.$value['id'].':'.$cloud['root'],
'type'=>'pan',
'fsperm'=>perm_FolderSPerm::flagPower($cloud['bz']),
'perm'=>perm_binPerm::getGroupPower('all'),
'flag'=>$cloud['bz'],
'iconview'=>1,
'disp'=>'0',
);
return $data;
}
public function fetch_all_by_id($ids){
$data=array();
foreach($ids as $id){
$value=self::fetch_by_id($id);
$data[$value['fid']]=$value;
}
return $data;
}
public function delete_by_id($id){
$return=array();
$data=parent::fetch($id);
if(parent::delete($id)){
$return['msg']='success';
//C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
//删除图片缓存文件
$imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
removedirectory($imgcache);
}
return $return;
}
public function delete_by_uid($uid){
if(!$uid) return 0;
foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
self::delete_by_id($value['id']);
}
return true;
}
public function delete_by_bz($bz){
foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
self::delete_by_id($value['id']);
}
}
}
?>

View File

@@ -0,0 +1,83 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
//所有用户应用
//uid=0 的表示为默认应用
class table_connect_pan extends dzz_table
{
public function __construct() {
$this->_table = 'connect_pan';
$this->_pk = 'id';
$this->_pre_cache_key = 'connect_pan_';
$this->_cache_ttl = 300;
parent::__construct();
}
public function fetch_by_id($id){
$value=self::fetch($id);
$cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
if(!$value['cloudname']) $value['cloudname']=$cloud['name'].':'.($value['cusername']?$value['cusername']:$cloud['cuid']);
$data=array(
'id'=>$value['id'],
'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$cloud['root']),
'pfid'=>0,
'fname'=>$value['cloudname'],
'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
'bz'=>$cloud['bz'].':'.$value['id'].':',
'path'=>$cloud['bz'].':'.$value['id'].':'.$cloud['root'],
'type'=>'pan',
'fsperm'=>perm_FolderSPerm::flagPower($cloud['bz']),
'perm'=>perm_binPerm::getGroupPower('all'),
'flag'=>$cloud['bz'],
'iconview'=>1,
'disp'=>'0',
);
return $data;
}
public function fetch_all_by_id($ids){
$data=array();
foreach($ids as $id){
$value=self::fetch_by_id($id);
$data[$value['fid']]=$value;
}
return $data;
}
public function delete_by_id($id){
$return=array();
$data=parent::fetch($id);
if(parent::delete($id)){
$return['msg']='success';
//C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
//删除图片缓存文件
$imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
removedirectory($imgcache);
}
return $return;
}
public function delete_by_uid($uid){
if(!$uid) return 0;
foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
self::delete_by_id($value['id']);
}
return true;
}
public function delete_by_bz($bz){
foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
self::delete_by_id($value['id']);
}
}
}
?>

View File

@@ -0,0 +1,84 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
//所有用户应用
//uid=0 的表示为默认应用
class table_connect_storage extends dzz_table
{
public function __construct() {
$this->_table = 'connect_storage';
$this->_pk = 'id';
/*$this->_pre_cache_key = 'connect_storage_';
$this->_cache_ttl = 0;*/
parent::__construct();
}
public function fetch_by_id($id){
$value=self::fetch($id);
$cloud=DB::fetch_first("select * from ".DB::table('connect')." where bz='{$value['bz']}'");
$value['access_id']=authcode($value['access_id'],'DECODE',$value['bz'])?authcode($value['access_id'],'DECODE',$value['bz']):$value['access_id'];
if(!$value['cloudname']) $value['cloudname']=$cloud['name'].':'.($value['bucket']?$value['bucket']:cutstr($value['access_id'], 4, ''));
if($value['bucket']) $value['bucket'].='/';
$data=array(
'id'=>$value['id'],
'fid'=>md5($cloud['bz'].':'.$value['id'].':'.$value['bucket']),
'pfid'=>0,
'fname'=>$value['cloudname'],
'ficon'=>'dzz/images/default/system/'.$cloud['bz'].'.png',
'bz'=>$cloud['bz'].':'.$value['id'].':',
'path'=>$cloud['bz'].':'.$value['id'].':'.$value['bucket'],
'type'=>'storage',
'fsperm'=>$value['bucket']?'0':perm_FolderSPerm::flagPower($cloud['bz'].'_root'),
'perm'=>perm_binPerm::getGroupPower('all'),
'flag'=>$cloud['bz'],
'iconview'=>1,
'disp'=>'0',
);
return $data;
}
public function fetch_all_by_id($ids){
$data=array();
foreach($ids as $id){
if($value=self::fetch_by_id($id)) $data[$value['fid']]=$value;
}
return $data;
}
public function delete_by_id($id){
//删除此应用的快捷方式
$return=array();
$data=parent::fetch($id);
if(parent::delete($id)){
$return['msg']='success';
//C::t('source_shortcut')->delete_by_bz($data['bz'].':'.$id.':',true);//删除快捷方式;
//删除图片缓存文件
$imgcache=getglobal('setting/attachdir').'./imgcache/'.$data['bz'].'/'.$id.'/';
removedirectory($imgcache);
}
return $return;
}
public function delete_by_uid($uid){
if(!$uid) return 0;
foreach(DB::fetch_all("select id from %t where uid=%d",array($this->_table,$uid)) as $value){
self::delete_by_id($value['id']);
}
return true;
}
public function delete_by_bz($bz){
foreach(DB::fetch_all("select id from %t where bz=%s",array($this->_table,$bz)) as $value){
self::delete_by_id($value['id']);
}
}
}
?>

View File

@@ -0,0 +1,102 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
//所有用户应用
//uid=0 的表示为默认应用
class table_local_router extends dzz_table
{
public function __construct() {
$this->_table = 'local_router';
$this->_pk = 'routerid';
//$this->_pre_cache_key = 'local_router_';
//$this->_cache_ttl = 0;
parent::__construct();
}
public function fetch_by_routerid($routerid){
$data=self::fetch($routerid);
$data['router']=unserialize($data['router']);
$data['drouter']=self::getRouterDetail($data['router']);
return $data;
}
public function fetch_all_orderby_priority($available=false){
$data=array();
$where='1';
if($available){
$where.=' and `available`>0';
}
foreach(DB::fetch_all("SELECT * FROM %t WHERE $where ORDER BY priority DESC ",array($this->_table)) as $value){
$value['router']=unserialize($value['router']);
$value['drouter']=self::getRouterDetail($value['router']);
$data[$value['routerid']]=$value;
}
return $data;
}
public function getRouterDetail($router){
$html='';
foreach($router as $type =>$value){
switch($type){
case 'exts':
if($value) $html.="文件后缀:".implode(',',$value);
else $html.="文件后缀:不限制";
break;
case 'size':
$sizearr=array();
if(is_numeric($value['lt'])) $sizearr[]="大于".formatsize($value['lt']*1024*1024);
if(is_numeric($value['gt'])) $sizearr[]="小于".formatsize($value['gt']*1024*1024);
if($sizearr) $html.='<br>文件大小:'.implode(' and ',$sizearr);
else $html.='<br>文件大小:不限制';
break;
}
}
return $html;
}
public function insert($setarr){
$setarr['router']=serialize($setarr['router']);
return parent::insert($setarr,1);
}
public function update($routerid,$setarr){
if($setarr['router']) $setarr['router']=serialize($setarr['router']);
return parent::update($routerid,$setarr);
}
public function delete_by_remoteid($remoteid){
return DB::delete($this->_table,"remoteid='{$remoteid}'");
}
//根据路由规则筛选出存储位置
public function getRemoteId($data){
$remoteid=0;
$guize=self::fetch_all_orderby_priority(true);
foreach($guize as $value){
//没有此存储位置
if(!$ldata = C::t('local_storage')->fetch($value['remoteid'])){
continue;
}else{
$available = DB::result_first("select available from %t where bz = %s", array('connect',$ldata['bz']));
if($available <1) continue;
}
//云停用跳转
if($available<1) continue;
if($value['router']['exts']){
if(!in_array(strtolower($data['filetype']),$value['router']['exts'])) continue;
}
if(is_numeric($value['router']['size']['lt']) && $data['filesize']<$value['router']['size']['lt']*1024*1024) continue;
if(is_numeric($value['router']['size']['gt']) && $data['filesize']>$value['router']['size']['gt']*1024*1024) continue;
return $value['remoteid'];
}
return $remoteid;
}
}
?>

View File

@@ -0,0 +1,119 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_local_storage extends dzz_table
{
public function __construct() {
$this->_table = 'local_storage';
$this->_pk = 'remoteid';
/*$this->_pre_cache_key = 'local_storage_';
$this->_cache_ttl = 300;*/
parent::__construct();
}
public function fetch_by_remoteid($remoteid){
$remoteid=intval($remoteid);
if(!$data=self::fetch($remoteid)){
return array();
}
if($connect=C::t('connect')->fetch($data['bz'])){
$data=array_merge($connect,$data);
}
if($data['dname'] && $data['did']){
if($pan=C::t($data['dname'])->fetch($data['did'])) $data=array_merge($pan,$data);
}
return $data;
}
public function getBzByRemoteid($remoteid){ //通过remoteid获取bz,默认返回dzz
if(!($data=self::fetch_by_remoteid($remoteid))){
return 'dzz';
}
if($data['type']=='pan') $bz=$data['bz'].':'.$data['id'].':'.$data['root'];
elseif($data['type']=='storage') $bz=$data['bz'].':'.$data['id'].':'.$data['bucket'];
elseif($data['type']=='ftp') $bz=$data['bz'].':'.$data['id'].':'.$data['root'];
elseif($data['type']=='disk') $bz=$data['bz'].':'.$data['id'].':'.$data['root'];
else $bz='dzz';
return $bz;
}
public function fetch_all_orderby_disp(){
$data=array();
foreach(DB::fetch_all("SELECT s.*,c.available FROM %t s LEFT JOIN %t c ON c.bz=s.bz WHERE 1 ORDER BY s.disp ",array($this->_table,'connect')) as $value){
$data[$value['remoteid']]=$value;
}
return $data;
}
public function update_usesize_by_remoteid($remoteid,$ceof){
if(!$remoteid) $remoteid=DB::result_first("select remoteid from %t where bz='dzz' limit 1",array($this->_table));
$ceof=intval($ceof);
try{
if($ceof>0){
DB::query("update %t set usesize=usesize+%d where remoteid=%d",array($this->_table,$ceof,$remoteid));
}else{
DB::query("update %t set usesize=usesize-%d where remoteid=%d",array($this->_table,abs($ceof),$remoteid));
}
$this->clear_cache($remoteid);
}catch(Exception $e){}
return true;
}
public function update_sizecount_by_remoteid($remoteid){
if($arr=self::getQuota($remoteid)){
self::update($remoteid,$arr);
return $arr;
}
return false;
}
public function getQuota($remoteid){
global $_G;
$data=self::fetch_by_remoteid($remoteid);
$return=array();
if($data['type']=='local'){
$return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
$return['totalsize']=disk_free_space($_G['setting']['attachdir']);
}elseif($data['type']=='pan'){
$bz=$data['bz'].':'.$data['id'].':';
$arr=IO::getQuota($bz);
$return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
if(is_numeric($arr['quota']) && is_numeric($arr['used'])) $return['totalsize']=($arr['quota'])-($arr['used']);
}elseif($data['type']=='storage'){
$return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
$return['totalsize']=0;
}elseif($data['type']=='ftp'){
$bz=$data['bz'].':'.$data['id'].':';
$return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
$return['totalsize']=0;
}elseif($data['type']=='disk'){
$bz=$data['bz'].':'.$data['id'].':';
$return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
$return['totalsize']=disk_free_space($data['attachdir']);
}else{
$return['usesize']=C::t('attachment')->getSizeByRemote($remoteid);
$return['totalsize']=0;
}
return $return;
}
public function delete_by_remoteid($remoteid){
$data=self::fetch($remoteid);
if($data['bz']=='dzz') return array('error'=>'内置,不能删除');
if(C::t('attachment')->getSizeByRemote($remoteid)>0) return array('error'=>'有文件未迁移,不能删除');
C::t('local_router')->delete_by_remoteid($remoteid);
if($data['dname'] && $data['did']) C::t($data['dname'])->delete_by_id($data['did']);//删除链接
return self::delete($remoteid);
}
public function getRemoteId(){
return DB::result_first("select s.remoteid from ".DB::table('local_storage')." s LEFT JOIN ".DB::table('connect')." c ON s.bz=c.bz where c.available>0 order by s.isdefault DESC, s.disp ASC");
}
}
?>

View File

@@ -0,0 +1,30 @@
<?php
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_pichome_ffmpeg_record extends dzz_table
{
public function __construct()
{
$this->_table = 'pichome_ffmpeg_record';
$this->_pk = 'rid';
$this->_pre_cache_key = 'pichome_ffmpeg_record';
$this->_cache_ttl = 3600;
parent::__construct();
}
public function insert($setarr,$isforce = 0){
$rid = $setarr['rid'];
if(DB::result_first("select rid from %t where rid = %s",array($this->_table,$rid))){
if(!$isforce) return $rid;
else {
parent::delete($rid);
return parent::insert($setarr);
}
}else{
return parent::insert($setarr);
}
}
}

View File

@@ -23,9 +23,9 @@
} }
//插入和更新目录数据 //插入和更新目录数据
public function insert_folderdata_by_appid($appid,$folderdata,$folderarr = array(),$pfid='',$pathkey=''){ public function insert_folderdata_by_appid($appid,$folderdata,$folderarr = array(),$pfid='',$pathkey=''){
foreach ($folderdata as $v) { foreach ($folderdata as $v) {
$fid = $v['id'].$appid; $fid = $v['id'].$appid;
$setarr=['fname'=>$v['name'],'dateline'=>TIMESTAMP,'pfid'=>$pfid,'appid'=>$appid,'pathkey'=>$pathkey.$fid]; $setarr=['fname'=>$v['name'],'dateline'=>TIMESTAMP,'pfid'=>$pfid,'appid'=>$appid,'pathkey'=>($pathkey)?$pathkey:$fid];
if($v['coverId']) $setarr['cover'] = $v['coverId'].$appid; if($v['coverId']) $setarr['cover'] = $v['coverId'].$appid;
if($v['password']) $setarr['password'] = $v['password']; if($v['password']) $setarr['password'] = $v['password'];
if($v['passwordTips']) $setarr['passwordtips'] = trim($v['passwordTips']); if($v['passwordTips']) $setarr['passwordtips'] = trim($v['passwordTips']);
@@ -37,6 +37,7 @@
}else{ }else{
//如果插入数据失败跳过当前层级目录 //如果插入数据失败跳过当前层级目录
$setarr['fid'] = $fid; $setarr['fid'] = $fid;
if(!$setarr['fname']) continue;
if(!parent::insert($setarr))continue; if(!parent::insert($setarr))continue;
} }
$folderarr[] = $setarr; $folderarr[] = $setarr;
@@ -44,12 +45,9 @@
$tmpchild = $v['children']; $tmpchild = $v['children'];
foreach($tmpchild as $child){ foreach($tmpchild as $child){
$cfid = $child['id'].$appid; $cfid = $child['id'].$appid;
$setarr=['fname'=>$child['name'],'dateline'=>TIMESTAMP,'pfid'=>$fid,'appid'=>$appid,'pathkey'=>$pathkey.$fid.$cfid]; $folderarr = $this->insert_folderdata_by_appid($appid,[$child],$folderarr,$fid,($pathkey) ? $pathkey.$cfid:$fid.$cfid);
if($child['coverId']) $setarr['cover'] = $child['coverId'].$appid;
if($child['password']) $setarr['password'] = $child['password'];
if($v['passwordTips']) $setarr['passwordtips'] = trim($child['passwordTips']);
} }
$folderarr = $this->insert_folderdata_by_appid($appid,$tmpchild,$folderarr,$fid,$pathkey.$fid.$cfid);
} }
} }
@@ -80,6 +78,8 @@
$haspassword = 1; $haspassword = 1;
} }
} }
unset($haspasswordfids);
unset($folderids);
return $haspassword; return $haspassword;
} }
@@ -104,4 +104,50 @@
} }
return $returndata; return $returndata;
} }
public function fetch_folder_by_appid_pfid($appid,$pfid=[]){
$folderdata = [];
if(!empty($pfid)){
foreach(DB::fetch_all("select fid,fname,pathkey,appid,pfid,filenum as nosubfilenum from %t where appid = %s and pfid in(%n)",array($this->_table,$appid,$pfid)) as $v){
$v['filenum'] = DB::result_first("SELECT count(DISTINCT fr.rid) FROM %t fr
left join %t f on fr.fid = f.fid
where fr.appid = %s and f.pathkey like %s",array('pichome_folderresources','pichome_folder',$appid,$v['pathkey'].'%'));
$v['leaf'] = DB::result_first("select count(*) from %t where pfid = %s",array($this->_table,$v['fid'])) ? false:true;
$folderdata[] = $v;
}
}else{
foreach(DB::fetch_all("select fid,fname,pathkey,appid,pfid,filenum as nosubfilenum from %t where appid = %s and pfid = ''",array($this->_table,$appid)) as $v){
$v['filenum'] = DB::result_first("SELECT count(DISTINCT fr.rid) FROM %t fr
left join %t f on fr.fid = f.fid
where fr.appid = %s and f.pathkey like %s",array('pichome_folderresources','pichome_folder',$appid,$v['pathkey'].'%'));
$v['leaf'] = DB::result_first("select count(*) from %t where pfid = %s",array($this->_table,$v['fid'])) ? false:true;
$folderdata[] = $v;
}
}
return $folderdata;
}
public function search_by_fname($keyword,$appid=''){
$folderdata = [];
$wheresql = ' fname like %s ';
$params = array($this->_table,'%'.$keyword.'%');
if($appid){
$wheresql .= ' and appid = %s ';
$params[] = $appid;
}
foreach(DB::fetch_all("select fname,fid,pathkey,appid,pfid from %t where $wheresql",$params)as $v ){
$folderdata[$v['fid']] = $v;
}
foreach ($folderdata as $k=>$v){
$len=strlen($folderdata[$k]['pathkey']);
$folderdata[$k]['len']=$len;
}
$cloumarr = array_column($folderdata,'len');
array_multisort($cloumarr,SORT_ASC,$folderdata);
return $folderdata;
}
} }

View File

@@ -0,0 +1,24 @@
<?php
if (!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_pichome_folder_relation extends dzz_table
{
public function __construct()
{
$this->_table = 'pichome_folder_relation';
$this->_pk = 'id';
$this->_pre_cache_key = 'pichome_folder_relation';
$this->_cache_ttl = 3600;
parent::__construct();
}
public function fetch_by_ofid_appid($ofid,$appid){
return DB::fetch_first("select * from %t where nfid = %d and appid = %s",array($this->_table,$ofid,$appid));
}
}

View File

@@ -14,9 +14,14 @@
parent::__construct(); parent::__construct();
} }
public function insert($setarr){ public function insert($setarr){
if($id = DB::result_first("select id from %t where rid = %s and fid =%s",array($this->_table,$setarr['rid'],$setarr['fid']))){ if($id = DB::result_first("select id from %t where rid = %s and fid =%s and appid = %s",array($this->_table,$setarr['rid'],$setarr['fid'],$setarr['appid']))){
return $id; return $id;
}else{ }else{
if($id = DB::result_first("select id from %t where rid = %s and fid = %s and appid = %s",array($this->_table,$setarr['rid'],$setarr['fid'],$setarr['appid']))){
$rid = $setarr['rid'];
unset($setarr['rid']);
return parent::update($rid,$setarr);
}
return parent::insert($setarr); return parent::insert($setarr);
} }
} }

View File

@@ -0,0 +1,30 @@
<?php
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_pichome_imagickrecord extends dzz_table
{
public function __construct()
{
$this->_table = 'pichome_imagickrecord';
$this->_pk = 'rid';
$this->_pre_cache_key = 'pichome_imagickrecord';
$this->_cache_ttl = 3600;
parent::__construct();
}
public function insert($setarr,$isforce = 0){
$rid = $setarr['rid'];
if(DB::result_first("select rid from %t where rid = %s",array($this->_table,$rid))){
if(!$isforce) return $rid;
else {
parent::delete($rid);
return parent::insert($setarr);
}
}else{
return parent::insert($setarr);
}
}
}

View File

@@ -82,15 +82,66 @@
} }
return $rgb; return $rgb;
} }
function RGBToHex($rgb){
$regexp = "/^rgb\(([0-9]{0,3})\,\s*([0-9]{0,3})\,\s*([0-9]{0,3})\)/";
$re = preg_match($regexp, $rgb, $match);
$re = array_shift($match);
$hexColor = "";
$hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
for ($i = 0; $i < 3; $i++) {
$r = null;
$c = $match[$i];
$hexAr = array();
while ($c > 16) {
$r = $c % 16;
$c = ($c / 16) >> 0;
array_push($hexAr, $hex[$r]);
}
array_push($hexAr, $hex[$c]);
$ret = array_reverse($hexAr);
$item = implode('', $ret);
$item = str_pad($item, 2, '0', STR_PAD_LEFT);
$hexColor .= $item;
}
return $hexColor;
}
public function fetch_colordata_by_rid($rid){ public function fetch_colordata_by_rid($rid){
$data = []; $data = [];
foreach(DB::fetch_all("select color,weight from %t where rid = %s",array($this->_table,$rid)) as $v){ foreach(DB::fetch_all("select r,g,b,weight from %t where rid = %s",array($this->_table,$rid)) as $v){
$rgbdata = 'rgb('.$v['r'].','.$v['g'].','.$v['b'].')';
$weight = $v['weight']*100; $weight = $v['weight']*100;
$data[$weight] = dechex($v['color']); $v['color'] = $this->RGBToHex($rgbdata);
$data[] = ['color'=>$v['color'],'weight'=>$weight];
} }
krsort($data); $distance = [];
return $data; $colordata = [];
foreach($data as $v){
$distance[] = $v['weight'];
}
array_multisort($distance, SORT_DESC, $data);
foreach($data as $v){
$colordata[] = $v['color'];
}
return $colordata;
} }
/* /*
*$colors 该参数需带权重,以键为权重值,此处查询优先权重最大的查询近似颜色值 *$colors 该参数需带权重,以键为权重值,此处查询优先权重最大的查询近似颜色值

View File

@@ -1,235 +1,395 @@
<?php <?php
if (!defined('IN_OAOOA')) { if (!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class table_pichome_resources extends dzz_table class table_pichome_resources extends dzz_table
{
public function __construct()
{ {
public function __construct()
{
$this->_table = 'pichome_resources';
$this->_pk = 'rid';
$this->_pre_cache_key = 'pichome_resources';
$this->_cache_ttl = 3600;
parent::__construct();
}
public function insert($setarr)
{
if (DB::result_first("select count(*) from %t where rid = %s", array($this->_table, $setarr['rid']))) {
$rid = $setarr['rid'];
unset($setarr['rid']);
return parent::update($rid, $setarr);
} else {
return parent::insert($setarr);
}
}
public function delete_by_appid($appid)
{
$rids = [];
foreach (DB::fetch_all("select rid from %t where appid = %s", array($this->_table, $appid)) as $v) {
$rids[] = $v['rid'];
}
return $this->delete_by_rid($rids);
}
public function fetch_by_path($path)
{
$path = trim($path);
return DB::result_first("select * from %t where path = %s", array($this->_table, $path));
}
public function delete_by_rid($rids)
{
if (!is_array($rids)) $rids = (array)$rids;
C::t('pichome_resources_attr')->delete_by_rid($rids);
C::t('pichome_folderresources')->delete_by_rid($rids);
C::t('pichome_palette')->delete_by_rid($rids);
C::t('pichome_comments')->delete_by_rid($rids);
C::t('pichome_resourcestag')->delete_by_rid($rids);
C::t('pichome_share')->delete_by_rid($rids);
return parent::delete($rids);
}
//以rid获取文件缩略图
public function get_icon_by_rids($rids)
{
if (!is_array($rids)) $rids = (array)$rids;
$icondatas = [];
foreach (DB::fetch_all("select r.rid,r.type,r.hasthumb,ra.path from %t r left join %t ra on r.rid=ra.rid where rid in(%n) ", array($this->_table, $rids)) as $v) {
if ($v['hasthumb']) {
$filename = str_replace(strrchr($v['name'], "."), "", $v['name']);
$filepath = dirname($v['path']);
$thumbpath = $filepath . $filename . '_thumb.png';
// if (!file_exists($thumbpath)) $thumbpath = iconv('UTF-8', 'GB2312', $thumbpath);
$icondatas[$v['rid']] = $thumbpath;
} else {
if ($v['type'] == 'commonimage') {
$v['icondata'] = $v['path'];
} else {
$v['icondata'] = geticonfromext($v['ext'], $v['type']);
}
}
}
return $icondatas;
}
public function fetch_by_rids($rids)
{
global $Opentype;
if (!is_array($rids)) $rids = (array)$rids;
$datas = $tmpdatas = [];
foreach (parent::fetch_all($rids) as $v) {
$v['fsize'] = formatsize($v['size']);
$v['mtime'] = dgmdate(round($v['mtime'] / 1000), 'Y/m/d H:i');
$v['dateline'] = dgmdate(round($v['dateline'] / 1000), 'Y/m/d H:i');
$v['name'] = str_replace(strrchr($v['name'], "."), "", $v['name']);
$v['btime'] = dgmdate(round($v['btime'] / 1000), 'Y/m/d H:i');
$v['dpath'] = dzzencode($v['rid'], '', 0);
if (in_array($v['ext'], $Opentype['video'])) {
$v['opentype'] = 'video';
} elseif (in_array($v['ext'], $Opentype['text'])) {
$v['opentype'] = 'text';
} elseif (in_array($v['ext'], $Opentype['pdf'])) {
$v['opentype'] = 'pdf';
} elseif (in_array($v['ext'], $Opentype['image'])) {
$v['opentype'] = 'image';
} else {
$v['opentype'] = 'other';
}
$tmpdatas[$v['rid']] = $v;
}
foreach($rids as $rid){
$datas[$rid] = $tmpdatas[$rid];
}
foreach (C::t('pichome_resources_attr')->fetch_all($rids) as $v) {
if ($datas[$v['rid']]['hasthumb']) {
$filepath = dirname($v['path']);
$filename = substr($v['path'],strrpos($v['path'],'/')+1);
$filename = str_replace(strrchr($filename, "."),"",$filename);
$thumbpath = 'library/' . $filepath . '/' . $filename . '_thumbnail.png';
$datas[$v['rid']]['icondata'] = str_replace('+',' ',urlencode($thumbpath));
}
else {
if ($datas[$v['rid']]['type'] == 'commonimage') {
$datas[$v['rid']]['icondata'] = str_replace('+',' ',urlencode('library/' . $v['path']));
} else {
$datas[$v['rid']]['icondata'] = geticonfromext($datas[$v['rid']]['ext'], $datas[$v['rid']]['type']);
}
}
$datas[$v['rid']]['realpath'] = str_replace('+',' ',urlencode('library/' . $v['path']));
$colorsarr = [];
//获取颜色数据
$colordata = C::t('pichome_palette')->fetch_colordata_by_rid($v['rid']);
foreach ($colordata as $cv) {
$colorsarr[] = $cv;
}
$datas[$v['rid']]['color'] = $colorsarr[0];
$datas[$v['rid']]['link'] = $v['link'];
}
//array_multisort($datas, 'rid', SORT_ASC, $rids);
foreach (C::t('pichome_resourcestag')->fetch_all_tag_by_rids($rids) as $k => $v) {
$datas[$k]['tags'] = $v;
// $datas[$k]['tags'] = '•'.implode('•',$v);
}
return $datas;
}
public function fetch_by_rid($rid)
{
global $Opentype;
if (!$resourcesdata = parent::fetch($rid)) return array();
if ($resourcesdata['isdelete'] > 0) return array();
$attrdata = C::t('pichome_resources_attr')->fetch($rid);
$resourcesdata = array_merge($resourcesdata, $attrdata);
$resourcesdata['colors'] = C::t('pichome_palette')->fetch_colordata_by_rid($rid);
if (in_array($resourcesdata['ext'], $Opentype['video'])) {
$resourcesdata['opentype'] = 'video';
} elseif (in_array($resourcesdata['ext'], $Opentype['text'])) {
$resourcesdata['opentype'] = 'text';
} elseif (in_array($resourcesdata['ext'], $Opentype['pdf'])) {
$resourcesdata['opentype'] = 'pdf';
} elseif (in_array($resourcesdata['ext'], $Opentype['image'])) {
$resourcesdata['opentype'] = 'image';
} else {
$resourcesdata['opentype'] = 'other';
}
if ($resourcesdata['hasthumb']) {
$filepath = dirname($resourcesdata['path']);
$filename = substr($resourcesdata['path'],strrpos($resourcesdata['path'],'/')+1);
$filename = str_replace(strrchr($filename, "."),"",$filename);
$thumbpath = 'library/' . $filepath . '/' . $filename . '_thumbnail.png';
$resourcesdata['icondata'] = $thumbpath;
//}
} else {
if ($resourcesdata['type'] == 'commonimage') {
$resourcesdata['icondata'] = 'library/' . $resourcesdata['path'];
} else {
$resourcesdata['icondata'] = geticonfromext($resourcesdata['ext'], $resourcesdata['type']);
}
}
$imginfo = @getimagesize($resourcesdata['icondata']);
$resourcesdata['iconwidth'] = $imginfo[0];
$resourcesdata['iconheight'] = $imginfo[1];
$resourcesdata['icondata'] = str_replace('+',' ',urlencode($resourcesdata['icondata']));
//获取所有库分享和下载权限
$downshare = C::t('pichome_vapp')->fetch_all_sharedownlod();
$resourcesdata['share'] = $downshare[$resourcesdata['appid']]['share'];
$resourcesdata['download'] = $downshare[$resourcesdata['appid']]['download'];
$resourcesdata['originalimg'] = str_replace('+',' ',urlencode('library/' . $resourcesdata['path']));
$resourcesdata['realpath'] = str_replace('+',' ',urlencode('library/' . $resourcesdata['path']));
$resourcesdata['name'] = str_replace(strrchr($resourcesdata['name'], "."), "", $resourcesdata['name']);
$resourcesdata['fsize'] = formatsize($resourcesdata['size']);
$resourcesdata['mtime'] = dgmdate(round($resourcesdata['mtime'] / 1000), 'Y/m/d H:i');
$resourcesdata['dateline'] = dgmdate(round($resourcesdata['dateline'] / 1000), 'Y/m/d H:i');
$resourcesdata['btime'] = dgmdate(round($resourcesdata['btime'] / 1000), 'Y/m/d H:i');
unset($resourcesdata['path']);
$resourcesdata['foldernames'] = C::t('pichome_folderresources')->get_foldername_by_rid($rid);
$resourcesdata['tag'] = C::t('pichome_resourcestag')->fetch_tag_by_rid($rid);
$resourcesdata['dpath'] = dzzencode($rid, '', 0);
return $resourcesdata;
}
public function getdatasbyrids($rids)
{
$returndata = [];
//文件数据
$resourcesdata = $this->fetch_by_rids($rids);
//获取所有库分享和下载权限
$downshare = C::t('pichome_vapp')->fetch_all_sharedownlod();
//文件附属表数据
// $attrdata = C::t('pichome_resources_attr')->fetch_by_rids($rids);
//文件标注数
$annonationnumdata = C::t('pichome_comments')->fetch_annonationnum_by_rids($rids);
foreach ($resourcesdata as $v) {
$v['annonationnum'] = $annonationnumdata[$v['rid']]['num'];
$v['share'] = $downshare[$v['appid']]['share'];
$v['download'] = $downshare[$v['appid']]['download'];
$returndata[] = $v;
}
return $returndata;
}
public function fetch_like_words($keyword, $limit = 10)
{
$likewords = [];
$presql = " case when name like %s then 3 when name like %s then 2 when name like %s then 1 end as rn";
$wheresql = " name like %s";
$params = [$keyword . '%', '%' . $keyword, '%' . $keyword . '%', $this->_table, '%' . $keyword . '%'];
foreach (DB::fetch_all("select name,$presql from %t where $wheresql order by rn desc limit 0,$limit", $params) as $v) {
$likewords[] = $v['name'];
}
return $likewords;
}
$this->_table = 'pichome_resources';
$this->_pk = 'rid';
$this->_pre_cache_key = 'pichome_resources';
$this->_cache_ttl = 3600;
parent::__construct();
} }
public function insert($setarr)
{
if (DB::result_first("select count(*) from %t where rid = %s", array($this->_table, $setarr['rid']))) {
$rid = $setarr['rid'];
unset($setarr['rid']);
parent::update($rid, $setarr);
} else {
parent::insert($setarr);
}
return true;
}
public function delete_by_appid($appid)
{
//$i = 0;
$rids = [];
foreach (DB::fetch_all("select rid from %t where appid = %s limit 0,1000", array($this->_table, $appid)) as $v) {
$rids[] = $v['rid'];
}
if ($rids) $this->delete_by_rid($rids);
//return $i;
}
public function fetch_by_path($path)
{
$path = trim($path);
return DB::result_first("select * from %t where path = %s", array($this->_table, $path));
}
public function delete_by_rid($rids)
{
if (!is_array($rids)) $rids = (array)$rids;
C::t('pichome_resources_attr')->delete_by_rid($rids);
C::t('pichome_folderresources')->delete_by_rid($rids);
C::t('pichome_palette')->delete_by_rid($rids);
C::t('pichome_comments')->delete_by_rid($rids);
C::t('pichome_resourcestag')->delete_by_rid($rids);
C::t('pichome_share')->delete_by_rid($rids);
C::t('pichome_ffmpeg_record')->delete($rids);
C::t('pichome_imagickrecord')->delete($rids);
return $this->delete($rids);
}
public function fetch_by_rids($rids)
{
global $Opentype;
if (!is_array($rids)) $rids = (array)$rids;
$datas = $tmpdatas = [];
foreach (parent::fetch_all($rids) as $v) {
$v['fsize'] = formatsize($v['size']);
$v['mtime'] = dgmdate(round($v['mtime'] / 1000), 'Y/m/d H:i');
$v['dateline'] = dgmdate(round($v['dateline'] / 1000), 'Y/m/d H:i');
$v['name'] = str_replace(strrchr($v['name'], "."), "", $v['name']);
$v['btime'] = dgmdate(round($v['btime'] / 1000), 'Y/m/d H:i');
$v['dpath'] = dzzencode($v['rid'], '', 0, 0);
if (in_array($v['ext'], $Opentype['video'])) {
$v['opentype'] = 'video';
} elseif (in_array($v['ext'], $Opentype['text'])) {
$v['opentype'] = 'text';
} elseif (in_array($v['ext'], $Opentype['pdf'])) {
$v['opentype'] = 'pdf';
} elseif (in_array($v['ext'], $Opentype['image'])) {
$v['opentype'] = 'image';
} else {
$v['opentype'] = 'other';
}
$tmpdatas[$v['rid']] = $v;
}
foreach ($rids as $rid) {
$datas[$rid] = $tmpdatas[$rid];
}
foreach (C::t('pichome_resources_attr')->fetch_all($rids) as $v) {
$datas[$v['rid']]['path'] = $v['path'];
//$datas[$v['rid']]['hasthumb'] = $v['hasthumb'];
$colorsarr = [];
//获取颜色数据
$colordata = C::t('pichome_palette')->fetch_colordata_by_rid($v['rid']);
foreach ($colordata as $cv) {
$colorsarr[] = $cv;
}
$datas[$v['rid']]['color'] = $colorsarr[0];
$datas[$v['rid']]['link'] = $v['link'];
}
//array_multisort($datas, 'rid', SORT_ASC, $rids);
foreach (C::t('pichome_resourcestag')->fetch_all_tag_by_rids($rids) as $k => $v) {
$datas[$k]['tags'] = $v;
// $datas[$k]['tags'] = '•'.implode('•',$v);
}
return $datas;
}
//获取数据后端使用
public function fetch_data_by_rid($rid)
{
if (!$resourcesdata = parent::fetch($rid)) return array();
if ($resourcesdata['isdelete'] > 0) return array();
$downshare = C::t('pichome_vapp')->fetch_all_sharedownlod();
if ($downshare[$resourcesdata['appid']]['isdelete']) return array();
$attrdata = C::t('pichome_resources_attr')->fetch($rid);
$resourcesdata = array_merge($resourcesdata, $attrdata);
$resourcesdata['realpath'] = $downshare[$resourcesdata['appid']]['path'] . BS . $resourcesdata['path'];
return $resourcesdata;
}
public function fetch_by_rid($rid)
{
global $Opentype;
if (!$resourcesdata = parent::fetch($rid)) return array();
if ($resourcesdata['isdelete'] > 0) return array();
//获取所有库分享和下载权限
$downshare = C::t('pichome_vapp')->fetch_all_sharedownlod();
$attrdata = C::t('pichome_resources_attr')->fetch($rid);
$resourcesdata = array_merge($resourcesdata, $attrdata);
$resourcesdata['colors'] = C::t('pichome_palette')->fetch_colordata_by_rid($rid);
$resourcesdata['ext'] = strtolower($resourcesdata['ext']);
if (in_array($resourcesdata['ext'], $Opentype['video'])) {
$resourcesdata['opentype'] = 'video';
} elseif (in_array($resourcesdata['ext'], $Opentype['text'])) {
$resourcesdata['opentype'] = 'text';
} elseif (in_array($resourcesdata['ext'], $Opentype['pdf'])) {
$resourcesdata['opentype'] = 'pdf';
} elseif (in_array($resourcesdata['ext'], $Opentype['image'])) {
$resourcesdata['opentype'] = 'image';
} else {
$resourcesdata['opentype'] = 'other';
}
if ($resourcesdata['hasthumb']) {
//如果是本地文件
if ($resourcesdata['apptype'] == 1) {
$filename = 'pichomethumb' . BS . $resourcesdata['appid'] . BS . md5($resourcesdata['path']) . '.jpg';
$thumbpath = getglobal('setting/attachurl') . $filename;
//echo $thumbpath;die;
$resourcesdata['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} elseif ($resourcesdata['apptype'] == 0) {
$resourcesdata['path'] = str_replace('\\', '/', $resourcesdata['path']);
$filepath = dirname($resourcesdata['path']);
$filename = substr($resourcesdata['path'], strrpos($resourcesdata['path'], '/') + 1);
$filename = str_replace(strrchr($filename, "."), "", $filename);
$filepath = str_replace('/', BS, $filepath);
if ($downshare[$resourcesdata['appid']]['iswebsitefile']) {
$tmppath = str_replace(DZZ_ROOT, '', $downshare[$resourcesdata['appid']]['path']);
$thumbpath = $tmppath . BS . $filepath . BS . $filename . '_thumbnail.png';
$resourcesdata['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} else {
$tmppath = $downshare[$resourcesdata['appid']]['path'];
$thumbpath = $tmppath . BS . $filepath . BS . $filename . '_thumbnail.png';
$resourcesdata['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($thumbpath, '', 0, 0);
}
} else {
$hookdata = ['rid' => $resourcesdata['rid'], 'apppath' => $downshare[$resourcesdata['appid']]['path'], 'appid' => $resourcesdata['appid']];
$return = Hook::listen('getpichomethumb', $hookdata);
$thumbpath = str_replace(DZZ_ROOT, '', $return[0]['icon']);
if ($downshare[$resourcesdata['appid']]['iswebsitefile']){
$resourcesdata['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
}else{
$resourcesdata['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($thumbpath, '', 0, 0);
}
}
//}
} else {
if ($resourcesdata['type'] == 'commonimage') {
if ($downshare[$resourcesdata['appid']]['iswebsitefile']) {
$tmppath = str_replace(DZZ_ROOT, '', $downshare[$resourcesdata['appid']]['path']);
$thumbpath = $tmppath . BS . $resourcesdata['path'];
$thumbpath = str_replace(BS, '/', $thumbpath);
$resourcesdata['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} else {
$tmppath = $downshare[$resourcesdata['appid']]['path'];
$resourcesdata['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($tmppath, '', 0, 0);
}
} else {
$resourcesdata['icondata'] = geticonfromext($resourcesdata['ext'], $resourcesdata['type']);
}
}
//echo $resourcesdata['icondata'];die;
$imginfo = @getimagesize($resourcesdata['icondata']);
$resourcesdata['iconwidth'] = $imginfo[0] ? $imginfo[0] : $resourcesdata['width'];
$resourcesdata['iconheight'] = $imginfo[1] ? $imginfo[1] : $resourcesdata['height'];
$resourcesdata['icondata'] = str_replace('+', '%20', $resourcesdata['icondata']);
$resourcesdata['share'] = $downshare[$resourcesdata['appid']]['share'];
$resourcesdata['download'] = $downshare[$resourcesdata['appid']]['download'];
if ($downshare[$resourcesdata['appid']]['iswebsitefile']) {
$originalimg = str_replace(DZZ_ROOT, '', $downshare[$resourcesdata['appid']]['path'] . BS . $resourcesdata['path']);
$originalimg = str_replace(BS, '/', $originalimg);
$resourcesdata['originalimg'] = str_replace('+', '%20', urlencode($originalimg));
$resourcesdata['realpath'] = str_replace('+', '%20', urlencode($originalimg));
} else {
$originalimg = $downshare[$resourcesdata['appid']]['path'] . BS . $resourcesdata['path'];
$resourcesdata['originalimg'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($originalimg, '', 0, 0);
if (in_array($resourcesdata['opentype'], array('text', 'video', 'pdf'))) {
$resourcesdata['realpath'] = str_replace('+', '', urlencode(getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($originalimg, '', 0, 0)));
} else {
$resourcesdata['realpath'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($originalimg, '', 0, 0);
}
}
$resourcesdata['name'] = str_replace(strrchr($resourcesdata['name'], "."), "", $resourcesdata['name']);
$resourcesdata['fsize'] = formatsize($resourcesdata['size']);
$resourcesdata['mtime'] = dgmdate(round($resourcesdata['mtime'] / 1000), 'Y/m/d H:i');
$resourcesdata['dateline'] = dgmdate(round($resourcesdata['dateline'] / 1000), 'Y/m/d H:i');
$resourcesdata['btime'] = dgmdate(round($resourcesdata['btime'] / 1000), 'Y/m/d H:i');
unset($resourcesdata['path']);
$resourcesdata['foldernames'] = C::t('pichome_folderresources')->get_foldername_by_rid($rid);
$resourcesdata['tag'] = C::t('pichome_resourcestag')->fetch_tag_by_rid($rid);
$resourcesdata['dpath'] = dzzencode($rid, '', 0, 0);
//print_r($resourcesdata);die;
return $resourcesdata;
}
public function getdatasbyrids($rids)
{
$returndata = [];
//文件数据
$resourcesdata = $this->fetch_by_rids($rids);
//获取所有库分享和下载权限,以及编码数据
$downshare = C::t('pichome_vapp')->fetch_all_sharedownlod();
//文件附属表数据
// $attrdata = C::t('pichome_resources_attr')->fetch_by_rids($rids);
//文件标注数
$annonationnumdata = C::t('pichome_comments')->fetch_annonationnum_by_rids($rids);
foreach ($resourcesdata as $v) {
//echo $v['hasthumb'];die;
$v['annonationnum'] = $annonationnumdata[$v['rid']]['num'];
$v['share'] = $downshare[$v['appid']]['share'];
$v['download'] = $downshare[$v['appid']]['download'];
if ($v['hasthumb']) {
//如果是本地文件
if ($downshare[$v['appid']]['type'] == 1) {
$filename = 'pichomethumb' . BS . $v['appid'] . BS . md5($v['path']) . '.jpg';
$thumbpath = getglobal('setting/attachurl') . $filename;
$v['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} elseif ($downshare[$v['appid']]['type'] == 0) {
$v['path'] = str_replace('\\', '/', $v['path']);
$filepath = dirname($v['path']);
$filename = substr($v['path'], strrpos($v['path'], '/') + 1);
$filepath = str_replace('/', BS, $filepath);
$filename = str_replace(strrchr($filename, "."), "", $filename);
$filepath = str_replace('/', BS, $filepath);
if ($downshare[$v['appid']]['iswebsitefile']) {
$tmppath = str_replace(DZZ_ROOT, '', $downshare[$v['appid']]['path']);
$thumbpath = $tmppath . BS . $filepath . BS . $filename . '_thumbnail.png';
$v['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} else {
$tmppath = $downshare[$v['appid']]['path'];
$thumbpath = $tmppath . BS . $filepath . BS . $filename . '_thumbnail.png';
$v['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($thumbpath);
}
} else {
$hookdata = ['rid' => $v['rid'], 'apppath' => $downshare[$v['appid']]['path'], 'appid' => $v['appid']];
$return = Hook::listen('getpichomethumb', $hookdata);
$thumbpath = str_replace(DZZ_ROOT, '', $return[0]['icon']);
if ($downshare[$v['appid']]['iswebsitefile']){
$v['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
}else{
$v['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($thumbpath, '', 0, 0);
}
}
} else {
if ($v['type'] == 'commonimage') {
if ($downshare[$v['appid']]['iswebsitefile']) {
$tmppath = str_replace(DZZ_ROOT, '', $downshare[$v['appid']]['path']);
$thumbpath = $tmppath . BS . $v['path'];
$thumbpath = str_replace(BS,'/',$thumbpath);
$v['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} else {
$tmppath = $downshare[$v['appid']]['path'] . BS . $v['path'];
$v['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($tmppath, '', 0, 0);
}
} else {
$v['icondata'] = geticonfromext($v['ext'], $v['type']);
$v['width'] = 128;
$v['height'] = 128;
}
}
//文件真实地址
if ($downshare[$v['appid']]['iswebsitefile']) {
$originalimg = str_replace(DZZ_ROOT, '', $downshare[$v['appid']]['path'] . BS . $v['path']);
$originalimg = str_replace(BS, '/', $originalimg);
$v['realpath'] = str_replace('+', '%20', urlencode($originalimg));
} else {
$originalimg = $downshare[$v['appid']]['path'] . BS . $v['path'];
$v['realpath'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($originalimg, '', 0, 0);
}
unset($v['path']);
$returndata[] = $v;
}
return $returndata;
}
public function geticondata_by_rid($rid)
{
$resourcesdata = DB::fetch_first("select r.rid,r.appid,r.hasthumb,r.ext,r.type,ra.path as fpath,
v.path,r.apptype,v.iswebsitefile from %t r
left join %t ra on r.rid=ra.rid left join %t v on r.appid = v.appid where r.rid = %s and r.isdelete = 0",
array($this->_table, 'pichome_resources_attr', 'pichome_vapp', $rid));
if ($resourcesdata['hasthumb']) {
//如果是本地文件
if ($resourcesdata['apptype'] == 1) {
$filename = 'pichomethumb' . BS . $resourcesdata['appid'] . BS . md5($resourcesdata['fpath']) . '.jpg';
$thumbpath = getglobal('setting/attachurl') . $filename;
$resourcesdata['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} elseif($resourcesdata['apptype'] == 0){
$resourcesdata['fpath'] = str_replace('\\', '/', $resourcesdata['fpath']);
$filepath = dirname($resourcesdata['fpath']);
$filename = substr($resourcesdata['fpath'], strrpos($resourcesdata['fpath'], '/') + 1);
$filename = str_replace(strrchr($filename, "."), "", $filename);
$filepath = str_replace('/', BS, $filepath);
if ($resourcesdata['iswebsitefile']) {
$tmppath = str_replace(DZZ_ROOT, '', $resourcesdata['path']);
$thumbpath = $tmppath . BS . $filepath . BS . $filename . '_thumbnail.png';
$resourcesdata['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} else {
$tmppath = $resourcesdata['path'];
$thumbpath = $tmppath . BS . $filepath . BS . $filename . '_thumbnail.png';
$resourcesdata['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($thumbpath, '', 0, 0);
}
} else {
$hookdata = ['rid' => $resourcesdata['rid'], 'apppath' => $resourcesdata['path'], 'appid' => $resourcesdata['appid']];
$return = Hook::listen('getpichomethumb', $hookdata);
$thumbpath = str_replace(DZZ_ROOT, '', $return[0]['icon']);
if ($resourcesdata['iswebsitefile']){
$resourcesdata['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
}else{
$resourcesdata['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($thumbpath, '', 0, 0);
}
}
} else {
if ($resourcesdata['type'] == 'commonimage') {
if ($resourcesdata['iswebsitefile']) {
$tmppath = str_replace(DZZ_ROOT, '', $resourcesdata['path']);
$thumbpath = $tmppath . BS . $resourcesdata['fpath'];
$thumbpath = str_replace(BS, '/', $thumbpath);
$resourcesdata['icondata'] = str_replace('+', '%20', urlencode($thumbpath));
} else {
$tmppath = $resourcesdata['path'];
$resourcesdata['icondata'] = getglobal('siteurl') . 'index.php?mod=io&op=getImg&path=' . dzzencode($tmppath, '', 0, 0);
}
} else {
$resourcesdata['icondata'] = geticonfromext($resourcesdata['ext'], $resourcesdata['type']);
}
}
return $resourcesdata;
}
public function fetch_like_words($keyword, $limit = 10)
{
$likewords = [];
$presql = " case when name like %s then 3 when name like %s then 2 when name like %s then 1 end as rn";
$wheresql = " name like %s";
$params = [$keyword . '%', '%' . $keyword, '%' . $keyword . '%', $this->_table, '%' . $keyword . '%'];
foreach (DB::fetch_all("select name,$presql from %t where $wheresql order by rn desc limit 0,$limit", $params) as $v) {
$likewords[] = $v['name'];
}
return $likewords;
}
}

View File

@@ -18,24 +18,9 @@
$rid = trim($setarr['rid']); $rid = trim($setarr['rid']);
if($attrdata = parent::fetch($rid)){ if($attrdata = parent::fetch($rid)){
unset($setarr['rid']); unset($setarr['rid']);
if($setarr['tag']){
$tagarr = explode(',',$setarr['tag']);
$otagarr = explode(',',$attrdata['tag']);
$delrtids = [];
foreach(DB::fetch_all("select id,tid from %t where rid = %s and tid not in(%n)",array('pichome_resourcestag',$rid,$tagarr)) as $v){
$delrtids[] = $v['id'];
C::t('pichome_tag')->delete_by_tid($v['tid']);
}
if(!empty($delrtids)) C::t('pichome_resourcestag')->delete($delrtids);
$addrtids = array_diff($tagarr,$otagarr);
foreach ($addrtids as $tid){
$rtag = ['appid' => $attrdata['appid'], 'rid' => $rid, 'tid' => $tid];
C::t('pichome_resourcestag')->insert($rtag);
}
}
return parent::update($rid,$setarr); return parent::update($rid,$setarr);
}else{ }else{
return parent::insert($setarr,1); return parent::insert($setarr);
} }
} }
//删除文件属性数据 //删除文件属性数据

View File

@@ -0,0 +1,34 @@
<?php
if (!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_pichome_resources_relation extends dzz_table
{
public function __construct()
{
$this->_table = 'pichome_resources_relation';
$this->_pk = 'id';
$this->_pre_cache_key = 'pichome_resources_relation';
$this->_cache_ttl = 3600;
parent::__construct();
}
public function insert($setarr)
{
if (DB::result_first("select count(*) from %t where rid = %s", array($this->_table, $setarr['rid']))) {
$rid = $setarr['rid'];
unset($setarr['rid']);
return parent::update($rid, $setarr);
} else {
return parent::insert($setarr);
}
}
public function fetch_by_orid_appid($orid,$appid){
return DB::fetch_first("select * from %t where orid = %s and appid = %s",$this->_table,$orid,$appid);
}
}

View File

@@ -53,13 +53,16 @@
} }
public function delete_by_rid($rid) public function delete_by_rid($rid)
{ {
if(!is_array($rid)) $rid = (array)$rid;
$delids = []; $delids = [];
foreach (DB::fetch_all("select id from %t where rid = %s", array($this->_table, $rid)) as $v) { foreach (DB::fetch_all("select id,tid from %t where rid in(%n)", array($this->_table, $rid)) as $v) {
$delids[] = $v['id']; $delids[] = $v['id'];
C::t('pichome_tag')->delete_by_tid($v['tid']);
} }
return parent::delete($delids); return parent::delete($delids);
} }
public function fetch_rids_by_tids($tids,$appid,$limit=6,$rid=''){ public function fetch_rids_by_tids($tids,$appid,$limit=6,$rid=''){
if(!is_array($tids)) $tids = (array) $tids; if(!is_array($tids)) $tids = (array) $tids;
$rids = []; $rids = [];

View File

@@ -1,178 +1,162 @@
<?php <?php
if (!defined('IN_OAOOA')) { if (!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class table_pichome_searchrecent extends dzz_table class table_pichome_searchrecent extends dzz_table
{
public function __construct()
{ {
public function __construct()
{
$this->_table = 'pichome_searchrecent'; $this->_table = 'pichome_searchrecent';
$this->_pk = 'id'; $this->_pk = 'id';
$this->_pre_cache_key = 'pichome_searchrecent'; $this->_pre_cache_key = 'pichome_searchrecent';
$this->_cache_ttl = 3600; $this->_cache_ttl = 3600;
parent::__construct(); parent::__construct();
}
public function add_search($keyword, $appid = '', $ktype = 0)
{
global $_G;
$wheresql = ' keywords = %s and ktype=%d ';
$params = array($this->_table, $keyword, $ktype);
if ($_G['uid']) {
$wheresql .= ' and uid = %d ';
$params[] = $_G['uid'];
} }
if ($appid) {
public function add_search($keyword, $appid = '', $ktype = 0) $wheresql .= ' and appid = %s ';
{ $params[] = $appid;
global $_G;
$wheresql = ' keywords = %s and ktype=%d ';
$params = array($this->_table, $keyword, $ktype);
if ($_G['uid']) {
$wheresql .= ' and uid = %d ';
$params[] = $_G['uid'];
}
if ($appid) {
$wheresql .= ' and appid = %s ';
$params[] = $appid;
}
if ($data = DB::fetch_first("select id,hots from %t where$wheresql", $params)) {
$hots = $data['hots'] + 1;
return parent::update($data['id'], array('hots' => $hots, 'dateline' => TIMESTAMP));
} else {
$setarr = [
'keywords' => $keyword,
'ktype' => $ktype,
'dateline' => TIMESTAMP,
'uid' => isset($_G['uid']) ? $_G['uid'] : 0,
'hots' => 1,
'appid' => $appid
];
return parent::insert($setarr);
}
} }
if ($data = DB::fetch_first("select id,hots from %t where$wheresql", $params)) {
//查询最近搜索标签 $hots = $data['hots'] + 1;
public function fetch_renctent_search_tag($appid = '', $limit = 8) return parent::update($data['id'], array('hots' => $hots, 'dateline' => TIMESTAMP));
{ } else {
global $_G; $setarr = [
$wheresql = ' s.ktype = 1 '; 'keywords' => $keyword,
$params = array($this->_table, 'pichome_tag'); 'ktype' => $ktype,
if ($appid) { 'dateline' => TIMESTAMP,
$wheresql .= ' and s.appid = %s '; 'uid' => isset($_G['uid']) ? $_G['uid'] : 0,
$params[] = $appid; 'hots' => 1,
} 'appid' => $appid
if ($_G['uid']) { ];
$wheresql .= ' and s.uid = %d'; return parent::insert($setarr);
$params[] = $_G['uid'];
}
$datas = [];
foreach (DB::fetch_all("select s.keywords,t.tid from %t s left join %t t on s.keywords = t.tagname where
$wheresql and t.tid > 0 order by s.hots desc,s.dateline desc limit 0,$limit", $params) as $v) {
$datas[$v['tid']] = $v['keywords'];
}
return $datas;
}
public function fetch_hotkeyword_by_appid($appid = '', $limit = 16,$noids=array(),$datas=array())
{
$start = strtotime(date("Y-m-d", strtotime("-7 day")));
$end = strtotime(dgmdate(time(), 'Y-m-d')) + 86400;
$params = array($this->_table/*, $start, $end*/);
/* //$wheresql = " dateline <= %d and dateline > %d";
if ($appid) {
$wheresql .= ' and appid =%s ';
$params[] = $appid;
}
if($noids){
$wheresql .= ' and id not in(%n) ';
$params[] = $noids;
}*/
$count = DB::result_first("select count(id) from %t where 1 order by hots desc limit 0,$limit", $params);
foreach (DB::fetch_all("select keywords,id from %t where 1 order by hots desc limit 0,$limit", $params) as $v) {
$data = $this->get_data_by_keyword($v['keywords'],$v['id']);
if(!$data){
parent::delete($v['id']);
}else{
$datas[$v['id']] = $data;
}
}
$resultcount = count($datas);
//如果有关键词没有结果,并且结果数量大于查询出来的数量
if($resultcount < $limit && $count > $limit){
$ids = array_keys($datas);
$limit = $limit - $resultcount;
$datas = $this->fetch_hotkeyword_by_appid($appid,$limit,$ids,$datas);
}
return $datas;
}
public function get_data_by_keyword($keyword){
$tmpdata = DB::fetch_first("select r.rid,r.name,ra.path,r.hasthumb,r.ext,r.type from %t r
left join %t ra on ra.rid=r.rid LEFT JOIN %t c on c.rid = r.rid
left join %t rt on r.rid = rt.rid left join %t t on rt.tid= t.tid where r.name like%s or ra.link like %s or ra.desc LIKE %s or c.annotation LIKE %s or t.tagname LIKE %s
order by rand() limit 1 ",
array('pichome_resources', 'pichome_resources_attr', 'pichome_comments', 'pichome_resourcestag', 'pichome_tag', '%' . $keyword . '%',
'%' . $keyword . '%', '%' . $keyword . '%', '%' . $keyword . '%', '%' . $keyword . '%'));
if (!$tmpdata) {
return false;
} else {
if ($tmpdata['hasthumb']) {
$filename = str_replace(strrchr($tmpdata['name'], "."), "", $tmpdata['name']);
$filepath = dirname($tmpdata['path']);
$thumbpath = DZZ_ROOT . 'library/' . $filepath . '/' . $filename . '_thumbnail.png';
$thumbpath = str_replace(DZZ_ROOT, '', $thumbpath);
$tmpdata['icondata'] = $thumbpath;
} else {
if ($tmpdata['type'] == 'commonimage') {
$tmpdata['icondata'] = 'library/' . $tmpdata['path'];
} else {
$tmpdata['icondata'] = geticonfromext($tmpdata['ext'], $tmpdata['type']);
}
}
$tmpdata['keyword'] = $keyword;
}
return $tmpdata;
}
//查询最近搜索分类
public function fetch_renctent_search_foldername($appid, $limit = 10)
{
global $_G;
$wheresql = ' s.ktype = 2 and s.appid = %s';
$params = array($this->_table, 'pichome_folder', $appid);
if ($_G['uid']) {
$wheresql .= ' and s.uid = %d';
$params[] = $_G['uid'];
}
$datas = [];
foreach (DB::fetch_all("select s.keywords,f.fid from %t s left join %t f on f.fname = s.keywords and f.appid = s.appid
where $wheresql and f.fid !='' and s.hots > 0 order by s.hots desc,s.dateline desc limit 0,$limit", $params) as $v) {
$datas[$v['fid']]['name'] = $v['keywords'];
$datas[$v['fid']]['fid'] = $v['fid'];
}
$fids = array_keys($datas);
if (!empty($fids)) {
foreach (DB::fetch_all("select f.fname,f.fid,count(fr.rid) as num from %t fr
left join %t f on f.fid=fr.fid where fr.fid in(%n) group by fr.fid", array('pichome_folderresources', 'pichome_folder', $fids)) as $val) {
$datas[$val['fid']]['sum'] = $val['num'];
$datas[$val['fid']]['fname'] = $val['fname'];
}
}
return $datas;
}
public function fetch_like_words($keyword, $limit = 10)
{
$likewords = [];
$presql = " case when keywords like %s then 3 when keywords like %s then 2 when keywords like %s then 1 end as rn";
$wheresql = " keywords like %s";
$params = [$keyword . '%', '%' . $keyword, '%' . $keyword . '%', $this->_table, '%' . $keyword . '%'];
foreach (DB::fetch_all("select keywords,$presql from %t where $wheresql order by rn desc limit 0,$limit", $params) as $v) {
$likewords[] = $v['keywords'];
}
return $likewords;
}
public function delete_by_appid($appid)
{
$delid = [];
foreach (DB::fetch_all("select id from %t where appid = %s", array($this->_table, $appid)) as $v) {
$delid[] = $v['id'];
}
return parent::delete($delid);
} }
} }
//查询最近搜索标签
public function fetch_renctent_search_tag($appid = '', $limit = 8)
{
global $_G;
$wheresql = ' s.ktype = 1 ';
$params = array($this->_table, 'pichome_tag');
if ($appid) {
$wheresql .= ' and s.appid = %s ';
$params[] = $appid;
}
if ($_G['uid']) {
$wheresql .= ' and s.uid = %d';
$params[] = $_G['uid'];
}
$datas = [];
foreach (DB::fetch_all("select s.keywords,t.tid from %t s left join %t t on s.keywords = t.tagname where
$wheresql and t.tid > 0 order by s.hots desc,s.dateline desc limit 0,$limit", $params) as $v) {
$datas[$v['tid']] = $v['keywords'];
}
return $datas;
}
public function fetch_hotkeyword_by_appid($appid = '', $limit = 16, $noids = array(), $datas = array())
{
/* $start = strtotime(date("Y-m-d", strtotime("-7 day")));
$end = strtotime(dgmdate(time(), 'Y-m-d')) + 86400;*/
$params = array($this->_table/*, $start, $end*/);
$count = DB::result_first("select count(id) from %t where 1 order by hots desc limit 0,$limit", $params);
//print_r(DB::fetch_all("select keywords,id from %t where 1 order by hots desc limit 0,$limit", $params));die;
foreach (DB::fetch_all("select keywords,id from %t where 1 order by hots desc limit 0,$limit", $params) as $v) {
$data = $this->get_data_by_keyword($v['keywords']);
if (!$data) {
parent::delete($v['id']);
} else {
$datas[$v['id']] = $data;
}
}
// print_r($datas);die;
$resultcount = count($datas);
//如果有关键词没有结果,并且结果数量大于查询出来的数量
if ($resultcount < $limit && $count > $limit) {
$ids = array_keys($datas);
$limit = $limit - $resultcount;
$datas = $this->fetch_hotkeyword_by_appid($appid, $limit, $ids, $datas);
}
return $datas;
}
public function get_data_by_keyword($keyword)
{
$rid = DB::result_first("select r.rid from %t r left join %t ra on ra.rid=r.rid
where ra.searchval LIKE %s order by rand() limit 0,1 ",
array('pichome_resources', 'pichome_resources_attr', '%' . $keyword . '%'));
$tmpdata = C::t('pichome_resources')->geticondata_by_rid($rid);
if (!$tmpdata) {
return false;
} else {
$tmpdata['keyword'] = $keyword;
}
return $tmpdata;
}
//查询最近搜索分类
public function fetch_renctent_search_foldername($appid, $limit = 10)
{
global $_G;
$wheresql = ' s.ktype = 2 and s.appid = %s';
$params = array($this->_table, 'pichome_folder', $appid);
if ($_G['uid']) {
$wheresql .= ' and s.uid = %d';
$params[] = $_G['uid'];
}
$datas = [];
foreach (DB::fetch_all("select s.keywords,f.fid from %t s left join %t f on f.fname = s.keywords and f.appid = s.appid
where $wheresql and f.fid !='' and s.hots > 0 order by s.hots desc,s.dateline desc limit 0,$limit", $params) as $v) {
$datas[$v['fid']]['name'] = $v['keywords'];
$datas[$v['fid']]['fid'] = $v['fid'];
}
$fids = array_keys($datas);
if (!empty($fids)) {
foreach (DB::fetch_all("select f.fname,f.fid,count(fr.rid) as num from %t fr
left join %t f on f.fid=fr.fid where fr.fid in(%n) group by fr.fid", array('pichome_folderresources', 'pichome_folder', $fids)) as $val) {
$datas[$val['fid']]['sum'] = $val['num'];
$datas[$val['fid']]['fname'] = $val['fname'];
}
}
return $datas;
}
public function fetch_like_words($keyword, $limit = 10)
{
$likewords = [];
$presql = " case when keywords like %s then 3 when keywords like %s then 2 when keywords like %s then 1 end as rn";
$wheresql = " keywords like %s";
$params = [$keyword . '%', '%' . $keyword, '%' . $keyword . '%', $this->_table, '%' . $keyword . '%'];
foreach (DB::fetch_all("select keywords,$presql from %t where $wheresql order by rn desc limit 0,$limit", $params) as $v) {
$likewords[] = $v['keywords'];
}
return $likewords;
}
public function delete_by_appid($appid)
{
$delid = [];
foreach (DB::fetch_all("select id from %t where appid = %s", array($this->_table, $appid)) as $v) {
$delid[] = $v['id'];
}
return parent::delete($delid);
}
}

View File

@@ -18,7 +18,7 @@
public function insert($setarr) public function insert($setarr)
{ {
$cid = $setarr['cid']; $cid = $setarr['cid'];
if ($taggroup = DB::fetch_first("select * from %t where cid = %s", array($this->_table, $cid))) { if ($taggroup = DB::fetch_first("select * from %t where cid = %s and appid = %s", array($this->_table, $cid,$setarr['appid']))) {
unset($setarr['cid']); unset($setarr['cid']);
if ($taggroup['catname'] != $setarr['catname']) parent::update($cid, $setarr); if ($taggroup['catname'] != $setarr['catname']) parent::update($cid, $setarr);
return $cid; return $cid;

View File

@@ -0,0 +1,38 @@
<?php
if (!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_pichome_taggroup_relation extends dzz_table
{
public function __construct()
{
$this->_table = 'pichome_taggroup_relation';
$this->_pk = 'id';
$this->_pre_cache_key = 'pichome_taggroup_relation';
$this->_cache_ttl = 3600;
parent::__construct();
}
//获取库下所有标签分类对应数据
public function fetch_by_appid($appid){
$data = [];
foreach(DB::fetch_all("select * from %t where appid = %s",array($this->_table,$appid)) as $v){
$data[$v['gid']] = $v;
}
return $data;
}
public function fetch_cid_by_gid($gid,$appid){
return DB::result_first("select cid from %t where gid = %d and appid = %s",array($this->_table,$gid,$appid));
}
public function insertdata($setarr){
if($id=DB::result_first("select id from %t where tid = %d and appid = %s",array($this->_table,$setarr['tid'],$setarr['appid']))){
parent::update($id,$setarr);
}else{
parent::insert($setarr);
}
return true;
}
}

View File

@@ -19,7 +19,7 @@
}else{ }else{
//同一库下一个标签只能归属于一个分类 //同一库下一个标签只能归属于一个分类
$this->delete_by_tpid($setarr['tid'],$setarr['appid']); $this->delete_by_tpid($setarr['tid'],$setarr['appid']);
return parent::insert($setarr,1); return parent::insert($setarr);
} }
} }
public function delete_by_tpid($tid,$appid){ public function delete_by_tpid($tid,$appid){

View File

@@ -28,19 +28,36 @@
return $show; return $show;
} }
public function getSid($url) { public function getSid($url) {
$url = crc32($url); $microtime = microtime();
list($msec, $sec) = explode(' ', $microtime);
$msec = $msec * 1000000;
$url = crc32($url.$sec.random(6).$msec);
$result = sprintf("%u", $url); $result = sprintf("%u", $url);
return self::code62($result); $sid = self::code62($result);
$len = strlen($sid);
if($len < 6){
$sid .= random(1);
}
if(strlen($sid) > 6){
$sid = substr($sid,0,6);
}
if(DB::result_first("select appid from %t where appid = %s",array($this->_table,$sid))){
$sid = $this->getSid($url);
}
return $sid;
} }
public function insert($setarr){ public function insert($setarr){
//如果为oaooa库时
$path = $setarr['path']; $path = $setarr['path'];
if($appid = DB::result_first("select appid from %t where path = %s",array($this->_table,$path))){ if($appid = DB::result_first("select appid from %t where path = %s and isdelete = 0",array($this->_table,$setarr['path']))){
parent::update($appid,$setarr);
return $appid; return $appid;
}else{ }
$setarr['appid'] = $this->getSid($setarr['path']); //生成appid
if(parent::insert($setarr)){ $setarr['appid'] = $this->getSid($path);
return $setarr['appid'];
} if(parent::insert($setarr)){
return $setarr['appid'];
} }
} }
@@ -62,6 +79,7 @@
//删除虚拟应用 //删除虚拟应用
public function delete_vapp_by_appid($appid){ public function delete_vapp_by_appid($appid){
$appdata = parent::fetch($appid);
//删除文件表数据 //删除文件表数据
C::t('pichome_resources')->delete_by_appid($appid); C::t('pichome_resources')->delete_by_appid($appid);
//删除目录表数据 //删除目录表数据
@@ -74,13 +92,25 @@
C::t('pichome_tagrelation')->delete_by_appid($appid); C::t('pichome_tagrelation')->delete_by_appid($appid);
//删除最近搜索表数据 //删除最近搜索表数据
C::t('pichome_searchrecent')->delete_by_appid($appid); C::t('pichome_searchrecent')->delete_by_appid($appid);
return parent::delete($appid); //resources表数据未完成删除前不允许删除vapp表
if(DB::result_first("select count(rid) from %t where appid = %s",array('pichome_resources',$appid))){
return ;
}else{
if(is_dir(getglobal('setting/attachdir').'pichomethumb/'.$appid)){
removedirectory(getglobal('setting/attachdir').'pichomethumb/'.$appid);
}
if($appdata['type'] > 1){
Hook::listen('pichomevappdelete',$appid);
}
return parent::delete($appid);
}
} }
public function fetch_all_sharedownlod(){ public function fetch_all_sharedownlod(){
$downshare = array(); $downshare = array();
foreach(DB::fetch_all("select appid,download,share from %t where 1",array($this->_table)) as $v){ foreach(DB::fetch_all("select * from %t where 1",array($this->_table)) as $v){
$downshare[$v['appid']]=['share'=>$v['share'],'download'=>$v['download']]; $downshare[$v['appid']]=$v;
} }
return $downshare; return $downshare;
} }

View File

@@ -11,8 +11,8 @@ if(!defined('IN_OAOOA')) {
} }
if(!defined('CORE_VERSION')) { if(!defined('CORE_VERSION')) {
define('CORE_VERSION', 'beta1'); define('CORE_VERSION', 'beta3.1');
define('CORE_VERSION_LEVEL', 'Pichome'); define('CORE_VERSION_LEVEL', 'Pichome');
define('CORE_RELEASE', '20210820'); define('CORE_RELEASE', '20211220');
define('CORE_FIXBUG' , '01000000'); define('CORE_FIXBUG' , '03100000');
} }

View File

@@ -2,7 +2,7 @@
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
gnore_user_abort(true); ignore_user_abort(true);
@set_time_limit(0); @set_time_limit(0);
$percachename = 'pichome_searchhot'; $percachename = 'pichome_searchhot';
$alldata = C::t('pichome_searchrecent')->fetch_hotkeyword_by_appid(); $alldata = C::t('pichome_searchrecent')->fetch_hotkeyword_by_appid();

View File

@@ -0,0 +1,8 @@
<?php
if (!defined('IN_OAOOA')) {
exit('Access Denied');
}
ignore_user_abort(true);
@set_time_limit(0);
dfsockopen(getglobal('localurl') . 'index.php?mod=pichome&op=delete', 0, '', '', false, '', 1);

View File

@@ -0,0 +1,7 @@
<?php
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
ignore_user_abort(true);
@set_time_limit(0);
dfsockopen(getglobal('localurl'). 'index.php?mod=imageColor&op=index',0, '', '', false, '', 1);

View File

@@ -0,0 +1,8 @@
<?php
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
ignore_user_abort(true);
@set_time_limit(0);
dfsockopen(getglobal('localurl'). 'index.php?mod=ffmpeg&op=getinfo',0, '', '', false, '', 1);

View File

@@ -0,0 +1,7 @@
<?php
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
ignore_user_abort(true);
@set_time_limit(0);
dfsockopen(getglobal('localurl'). 'index.php?mod=ffmpeg&op=thumb',0, '', '', false, '', 1);

View File

@@ -4,14 +4,12 @@
} }
ignore_user_abort(true); ignore_user_abort(true);
@set_time_limit(0); @set_time_limit(0);
$appdata = DB::fetch_all("select * from %t where 1 ",array('pichome_vapp')); $appdata = DB::fetch_all("select * from %t where isdelete = 0 ",array('pichome_vapp'));
foreach($appdata as $v){ foreach($appdata as $v){
$jsonfile = DZZ_ROOT.'library/' . $v['path'] . '/mtime.json'; if($v['state'] == 2){
if (!file_exists($jsonfile)) {
//删除库
C::t('#pichome#pichome_vapp')->delete_vapp_by_appid($v['appid']);
}else{
dfsockopen(getglobal('localurl'). 'index.php?mod=pichome&op=exportfile&appid='.$v['appid'],0, '', '', false, '', 1); dfsockopen(getglobal('localurl'). 'index.php?mod=pichome&op=exportfile&appid='.$v['appid'],0, '', '', false, '', 1);
}elseif($v['state'] == 3){
dfsockopen(getglobal('localurl'). 'index.php?mod=pichome&op=exportfilecheck&appid='.$v['appid'],0, '', '', false, '', 1);
} }
} }

View File

@@ -54,13 +54,13 @@ function updatecache($cachename = '') {
try{ try{
@include_once DZZ_ROOT.'./dzz/'.$entrys[0].'/cache/cache_'.$entrys[1].'.php'; @include_once DZZ_ROOT.'./dzz/'.$entrys[0].'/cache/cache_'.$entrys[1].'.php';
if(function_exists('build_cache_'.$entrys[0].'_'.$entrys[1])) call_user_func('build_cache_'.$entrys[0].'_'.$entrys[1]); if(function_exists('build_cache_'.$entrys[0].'_'.$entrys[1])) call_user_func('build_cache_'.$entrys[0].'_'.$entrys[1]);
elseif(function_exists('build_cache_app_'.$entryr[1])) call_user_func('build_cache_app_'.$entrys[1]); elseif(function_exists('build_cache_app_'.$entrys[1])) call_user_func('build_cache_app_'.$entrys[1]);
}catch(Exception $e){continue;} }catch(Exception $e){continue;}
}elseif(count($entrys)==3){ }elseif(count($entrys)==3){
try{ try{
@include_once DZZ_ROOT.'./'.$entrys[0].'/'.$entrys[1].'/cache/cache_'.$entrys[2].'.php'; @include_once DZZ_ROOT.'./'.$entrys[0].'/'.$entrys[1].'/cache/cache_'.$entrys[2].'.php';
if(function_exists('build_cache_'.$entrys[1].'_'.$entrys[2])) call_user_func('build_cache_'.$entrys[1].'_'.$entrys[2]); if(function_exists('build_cache_'.$entrys[1].'_'.$entrys[2])) call_user_func('build_cache_'.$entrys[1].'_'.$entrys[2]);
elseif(function_exists('build_cache_app_'.$entryr[1])) call_user_func('build_cache_app_'.$entrys[1]); elseif(function_exists('build_cache_app_'.$entrys[1])) call_user_func('build_cache_app_'.$entrys[1]);
}catch(Exception $e){continue;} }catch(Exception $e){continue;}
} else {//插件缓存 } else {//插件缓存

View File

@@ -804,7 +804,7 @@ function avatar_block($uid=0,$headercolors=array(),$class="Topcarousel"){
} }
if(empty($user)) return ''; if(empty($user)) return '';
if($user['avatarstatus']){//用户已经上传头像 if($user['avatarstatus']){//用户已经上传头像
return '<img src="avatar.php?uid='.$user['uid'].'" class="img-circle special_avatar_class" title="'.$user['username'].'">'; return '<img src="avatar.php?uid='.$user['uid'].'&random='.VERHASH.'" class="img-circle special_avatar_class" title="'.$user['username'].'">';
}else{//没有上传头像,使用背景+首字母 }else{//没有上传头像,使用背景+首字母
if($uid){ if($uid){
if($headercolors[$uid]) $headerColor=$headercolors[$uid]; if($headercolors[$uid]) $headerColor=$headercolors[$uid];

View File

@@ -0,0 +1,96 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>{lang about}</title>
<link rel="stylesheet" href="static/jquery_weui/css/weui.min.css">
<link rel="stylesheet" href="static/jquery_weui/css/jquery-weui.min.css">
<link rel="stylesheet" href="static/dzzicon/icon.css">
<script type="text/javascript" src="static/jquery/jquery.min.js"></script>
<style>
html, body {
height: 100%;
}
.about-container {
width: 100%;
height: 100%;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-align-content: center;
align-content: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
}
.wrapper {
text-align: center;
}
.about-body p {
margin-bottom: 10px;
}
a {
cursor: pointer;
color: #3779ff;
}
.about-body .logo {
padding: 10px;
margin-bottom: 0;
}
.about-body .name {
font-size: 28px;
margin-bottom: 20px;
}
.about-body .name>span {
padding: 0 2px;
}
.about-body p .guide {
color: #999;
}
.about-copyright {
color: #999;
font-size: 12px;
text-align: center;
padding: 10px;
}
.about-copyright>a {
color: #999;
}
.about-copyright>a:hover {
color: #999;
text-decoration: underline
}
</style>
</head>
<body>
<div class="about-container">
<div class="wrapper">
<div class="modal-body about-body">
<p class="logo"> <img src="$about[logo]" /> </p>
<p class="name">
<!--{if $about['name_zh']}-->
<span class="name-zh">$about[name_zh]</span>
<!--{/if}-->
<!--{if $about['name_en']}-->
<span class="name-en"><b>Dzz</b>$about[name_en]</span>
<!--{/if}-->
</p>
<div class="detail">
<!--{if $about['version']}-->
<p class="version"> <span class="guide">{lang about_current_version}:</span> <span class="text">{eval echo lang('V_'.$license['license_version'])} $about[version]</span> </p>
<!--{/if}-->
<p class="license"> <span class="guide">{lang license_user_sum}:</span> <span class="text">{$ucount} / {eval echo $license[license_limit]?$license[license_limit]:lang('unlimited')}</span> </p>
<p class="license"> <span class="guide">{lang license_to}:</span> <span class="text">{$license[license_company]}</a></span> </p>
<p class="support"> <span class="guide">{lang service_and_support}:</span> <span class="text"> <a href="http://help.oaooa.com" target="_blank">www.oaooa.com</a></span> </p>
</div>
</div>
<div class="about-copyright">Copyright ©2012-{eval echo dgmdate(TIMESTAMP,'Y');} <a href="https://www.oaooa.com" target="_blank" >oaooa.com</a>&nbsp; All Rights Reserved</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,5 @@
<script type="text/javascript">var DZZSCRIPT='{DZZSCRIPT}',LANG='{$_G[language]}', STATICURL = 'static/', IMGDIR = '{$_G[setting][imgdir]}', VERHASH = '{VERHASH}', charset = '{CHARSET}', dzz_uid = '$_G[uid]', cookiepre = '{$_G[config][cookie][cookiepre]}', cookiedomain = '{$_G[config][cookie][cookiedomain]}', cookiepath = '{$_G[config][cookie][cookiepath]}',attackevasive = '{$_G[config][security][attackevasive]}', disallowfloat = '{$_G[setting][disallowfloat]}', REPORTURL = '$_G[currenturl_encode]', SITEURL = '$_G[siteurl]', JSPATH = '$_G[setting][jspath]',MOD_PATH='{MOD_PATH}',APP_URL='{MOD_URL}',MOD_URL='{MOD_URL}';VAPP_URL='{VAPP_URL}';</script>
</head>
<body id="nv_{$_G[basescript]}" class="$bodyClass" >
<div id="append_parent" style="z-index:99999;"></div>
<div id="ajaxwaitid" style="z-index:99999;"></div>

View File

@@ -0,0 +1,24 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset={CHARSET}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title><!--{if !empty($navtitle)}-->$navtitle - <!--{/if}-->$_G[setting][sitename] </title>
<meta name="keywords" content="{if !empty($_G[setting][metakeywords])}{echo htmlspecialchars($_G[setting][metakeywords])}{/if}" />
<meta name="description" content="{if !empty($_G[setting][metadescription])}{echo htmlspecialchars($_G[setting][metadescription])} {/if}" />
<meta name="generator" content="oaooa" />
<meta name="author" content="oaooa" />
<meta name="copyright" content="2012-{eval echo dgmdate(TIMESTAMP,'Y-m-d');} www.oaooa.com" />
<meta name="MSSmartTagsPreventParsing" content="True" />
<meta http-equiv="MSThemeCompatible" content="Yes" />
<meta name="renderer" content="webkit">
<base href="{$_G['siteurl']}" />
<link rel="stylesheet" type="text/css" href="static/jquery_weui/css/weui.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/jquery_weui/css/jquery-weui.min.css?{VERHASH}" >
<link rel="stylesheet" type="text/css" href="static/dzzicon/icon.css?{VERHASH}"/>
<script type="text/javascript" src="static/jquery/jquery.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery/jquery.json-2.4.min.js?{VERHASH}"></script>
<script src="static/jquery_weui/js/jquery-weui.min.js?{VERHASH}" type="text/javascript" charset="utf-8"></script>
<script src="static/jquery_weui/js/swiper.min.js?{VERHASH}" type="text/javascript" charset="utf-8"></script>
<script src="static/jquery_weui/js/appevent.js?{VERHASH}" type="text/javascript" charset="utf-8"></script>

View File

@@ -0,0 +1,139 @@
<!--{template common/header_ajax}-->
<!--{if $_GET['action']=='setEventkey'}-->
<style>
#fwin_setEvent .modal-dialog{max-width:450px;}
</style>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">$typetitle[$type]</h4>
</div>
<div class="modal-body" style="padding:30px;">
<form class="form-horizontal">
<input type="hidden" id="eventkey" />
<!--{if $type=='click'}-->
<div class="form-group">
<!--{if $menu_select[click]}-->
<select class="form-control" id="js_select_click" onchange="eventkey_select_change(this)">
<option value="" data-url="" >{lang please_choose}</option>
<!--{loop $menu_select[click] $key $value}-->
<option value="$key" >$value</option>
<!--{/loop}-->
<option value="keys" >{lang custom}KEY</option>
</select>
<!--{else}-->
<input type="hidden" id="js_select_click" value="keys" />
<input type="text" class="form-control js_input_limit" data-limit="64" id="js_select_click_input" value="" >
<p class="help-inline">{lang menu_information_not_more_than_64_words}</p>
<p class="help-inline">{lang set_value_interface_function_effect}</p>
<!--{/if}-->
</div>
<div class="form-group hidden">
<input type="text" class="form-control js_input_limit" data-limit="64" id="js_select_click_input" value="" >
<p class="help-inline">{lang menu_information_not_more_than_64_words}</p>
<p class="help-inline">{lang set_value_interface_function_effect}</p>
</div>
<!--{else}-->
<div class="form-group">
<!--{if $menu_select[link]}-->
<select class="form-control" id="js_select_link" onchange="eventkey_select_change(this)">
<option value="" data-url="" >{lang please_choose}</option>
<!--{loop $menu_select[link] $key $value}-->
<option value="$key" >$value</option>
<!--{/loop}-->
<option value="links">{lang custom_link}</option>
</select>
<!--{else}-->
<input type="hidden" id="js_select_link" value="links" />
<input type="text" class="form-control" id="js_select_link_input" value="" >
<span class="help-inline">{lang member_click_skip_link}</span>
<!--{/if}-->
</div>
<div class="form-group hidden">
<input type="text" class="form-control" id="js_select_link_input" value="">
<span class="help-inline">{lang member_click_skip_link}</span>
</div>
<!--{/if}-->
</form>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary btn-width" data-dismiss="modal" onclick="setEventkeyComplete()"><strong>{lang confirms}</strong></button>&nbsp;&nbsp; <button type="button" data-dismiss="modal" class="btn btn-default"><strong>{lang cancel}</strong></button>
</div>
<script type="text/javascript" reload="1">
jQuery('.fwinmask .focus').select();
var dataid='$_GET[dataid]';
var menuarr=$json_menu_select;
var type='$type';
if(dataid!=''){
var li=jQuery('.js_li[data-id='+dataid+']');
if(type=='click'){
var val=li.attr('data-key');
if(!val ||(val && !menuarr['click'][val])){
val='keys';
}
jQuery('#js_select_click').val(val);
jQuery('#eventkey').val(val);
jQuery('#js_select_click_input').val(val);
if(val=='keys'){
jQuery('#js_select_click_input').parent().removeClass('hidden').end().val(li.attr('data-key')).focus();
}
}else{
var val=li.attr('data-url');
if(!val ||(val && !menuarr['link'][val])){
val='links';
}
//jQuery('#js_link_select').val(val);
jQuery('#js_select_link').val(val);
jQuery('#eventkey').val(val);
jQuery('#js_select_link_input').val(val);
if(val=='links'){
jQuery('#js_select_link_input').parent().removeClass('hidden').end().val(li.attr('data-url')).focus();
}
}
}
function eventkey_select_change(obj){
var el=jQuery(obj);
if(el.val()=='keys'){
jQuery('#js_select_click_input').parent().removeClass('hidden').end().focus();
}else{
jQuery('#js_select_click_input').parent().addClass('hidden');
}
if(el.val()=='links'){
jQuery('#js_select_link_input').parent().removeClass('hidden').end().focus();
}else{
jQuery('#js_select_link_input').parent().addClass('hidden');
}
jQuery('#eventkey').val(el.val());
}
function setEventkeyComplete(){
var li=jQuery('.js_li[data-id='+dataid+']');
var val=jQuery('#eventkey').val();
if(val=='') return;
if(type=='click'){
if(val=='keys'){
val=jQuery('#js_select_click_input').val();
}
li.attr('data-type','click');
li.attr('data-key',val);
li.find('.btn-group').replaceWith('<a class=" pull-right js_click " href="javascript:;" title="{lang menu}KEY" onclick="setEventkey(this,\'click\');return false"><span class="icon icon_click_gray"></span></a>');
}else{
if(val=='links'){
val=jQuery('#js_select_link_input').val();
}
li.attr('data-type','view');
li.attr('data-url',val);
li.find('.btn-group').replaceWith('<a class=" pull-right js_link" href="javascript:;" title="{lang skip_links}" onclick="setEventkey(this,\'link\');return false"><span class="icon icon_link_gray"></span></a>');
}
}
</script>
<!--{/if}-->
<!--{template common/footer_ajax}-->

View File

@@ -0,0 +1,232 @@
<style>
.group-tabul{
margin-left: 0px;
padding-left: 0px;
float: left;
}
.line {
height: 2px;
margin: 10px 0;
font-size: 0;
overflow: hidden;
background-color: transparent;
border-width: 0;
border-top: 1px solid #e7e7e7;
border-bottom: 1px solid #FFF;
}
/*.pull-in {*/
/*margin-left: -15px;*/
/*margin-right: -15px;*/
/*}*/
/*.line-dashed {
border-style: dashed;
background: transparent;
}*/
.form-horizontal .form-group {
margin-right: 0;
margin-left: 0;
}
.line-lg {
margin-top: 15px;
margin-bottom: 15px;
}
.relative {
position: relative;
}
.form-group {
margin-bottom: 0;
}
.copy-success {
position: absolute;
left: -210px;
top: -15px;
padding: 8px;
}
.absoluter {
position: absolute;
right: 0;
top: 0;
padding: 5px;
}
.panel-body {
padding: 15px 0;
}
.ul_hide{
display: block;
}
.form-group .input-black .input-animate {
background-image: -webkit-gradient(linear, left top, left bottom, from(#4c89fb), to(#4c89fb)), -webkit-gradient(linear, left top, left bottom, from(#e6e8eb), to(#e6e8eb));
background-image: -webkit-linear-gradient(#4c89fb, #4c89fb), -webkit-linear-gradient(#e6e8eb, #e6e8eb);
background-image: -o-linear-gradient(#4c89fb, #4c89fb), -o-linear-gradient(#e6e8eb, #e6e8eb);
background-image: linear-gradient(#4c89fb, #4c89fb), linear-gradient(#e6e8eb, #e6e8eb);
}
.form-group .input-black .input-animate.animate {
background-image: -webkit-gradient(linear, left top, left bottom, from(#4c89fb), to(#4c89fb)), -webkit-gradient(linear, left top, left bottom, from(#e6e8eb), to(#e6e8eb));
background-image: -webkit-linear-gradient(#4c89fb, #4c89fb), -webkit-linear-gradient(#e6e8eb, #e6e8eb);
background-image: -o-linear-gradient(#4c89fb, #4c89fb), -o-linear-gradient(#e6e8eb, #e6e8eb);
background-image: linear-gradient(#4c89fb, #4c89fb), linear-gradient(#e6e8eb, #e6e8eb);
}
</style>
<div class="main-header clearfix">
<ul class="group-tabul" style="margin-bottom:0px">
<li class="active"><a href="{$baseurl_info}">{eval echo $base_info_title?$base_info_title:'{lang application_message}';}</a></li>
<li><a href="{$baseurl_menu}">{eval echo $base_menu_title?$base_menu_title:'{lang application_menu}';}</a></li>
</ul>
</div>
<div class="main-content" style="border-top:1px solid #FFF">
<div class="panel-body" >
<div class="entity-panel-body form-horizontal">
<div class="form-group clearfix relative"> <img src="$wxapp[icon]" style="width:80px;position:absolute;left:20px;top:0px">
<div class=" ml20" style="padding-left:100px;">
<h4 class="relative"><strong>$wxapp[name]</strong></h4>
<p class="relative" style="padding-top:5px">$wxapp[desc]</p>
</div>
</div>
<div class="line line-dashed line-lg pull-in"></div>
<div class="form-group clearfix relative">
<form name="settingform" class="form-horizontal form-horizontal-left" action="$baseurl_info" method="post" style="margin:0">
<input type="hidden" name="settingsubmit" value="true" />
<input type="hidden" name="formhash" value="{FORMHASH}" />
<div class="form-group">
<div class="input-black input-static input-form">
<label class="control-label wxlabel">AgendID</label><br>
<div class="input-animate" style="width: 200px;display: inline-block;margin-top: 15px;">
<input type="text" id="agentid" class="form-control" name="agentid" value="$wxapp[agentid]" placeholder="AgendID">
</div>
<span class="help-inline help-info">{lang access_method_login_application}</span>
</div>
<!--<label class="control-label" for="agentid">AgendID</label>-->
<!--<input id="agentid" type="text" class="form-control" style="width:80px;" name="agentid" value="$wxapp[agentid]" />-->
<!--<span class="help-inline">{lang access_method_login_application}</span>-->
</div>
<div class="form-group">
<div class="input-black input-static input-form">
<label class="control-label wxlabel">Secret</label><br>
<div class="input-animate" style="width: 200px;display: inline-block;margin-top: 15px;">
<input type="text" id="agentid" class="form-control" name="secret" value="$wxapp[secret]" placeholder="Secret">
</div>
<span class="help-inline help-info">{lang access_method_login_application_secret}</span>
</div>
<!--<label class="control-label" for="agentid">Secret</label> -->
<!--<input id="agentid" type="text" class="form-control" style="width:80px;" name="secret" value="$wxapp[secret]" />-->
<!--<span class="help-inline">{lang access_method_login_application_secret}</span>-->
</div>
<div class="form-group">
<div class="input-black input-static input-form">
<label class="control-label wxlabel">{lang application_state}</label><br>
<!--<label class="radio-inline"><input type="radio" name="appstatus" value="0" &lt;!&ndash;{if !$wxapp[status]}&ndash;&gt;checked="checked"&lt;!&ndash;{/if}&ndash;&gt; >{lang open_start}</label>-->
<!--<label class="radio-inline"><input type="radio" name="appstatus" value="1" &lt;!&ndash;{if $wxapp[status]>0}&ndash;&gt;checked="checked"&lt;!&ndash;{/if}&ndash;&gt; >{lang close}</label>-->
<span class="help-inline help-info" style="padding-bottom:0;vertical-align: 0;margin-top: 2px;display: inline-block;padding-left: 0;">{lang application_state_message}</span>
<div style="display:inline-block;margin-bottom: 10px;margin-left: 30px;">
<span class="switch-info">{lang open_start}</span>
<input type="checkbox" class="js-switch-primary" checked="" data-switchery="true">
<script type="text/javascript">
var elem = document.querySelector('.js-switch-primary');
Switchery(elem, {
color: '#62a8ea'
});
</script>
</div>
</div>
<div class="form-group" >
<button type="submit" id="ueditorform_btn" class="btn btn-primary" style="padding:6px 25px;" data-loading-text="{lang In_the_save}" >{lang save}</button>
</div>
</form>
</div>
<div class="line line-dashed line-lg pull-in"></div>
<div class="form-group clearfix padding-left">
<div class="col-sm-12" style="padding: 0">
<p class="form-control-static danger relative"><strong style="font-size: 1em;color: rgba(51, 51, 51, 1);">*{lang need_weixin_enterprises_set}</strong> <a href="http://qy.weixin.qq.com/" target="_blank" class="pull-right btn btn-primary-outline">{lang weixin_enterprises_edit}</a> </p>
</div>
</div>
<!--<div class="line line-dashed line-lg pull-in"></div>-->
<div class="form-group clearfix padding-left margin-10">
<label class="wxlabel-item">
<h5><strong>{lang scope_application_visible}:</strong></h5>
</label>
<div class="wxlabel-info">
<p class="form-control-static relative">{lang top_institutions}<span class="gray">{lang weixin_enterprises_address_book_}</span> </p>
</div>
</div>
<!--<div class="line line-dashed line-lg pull-in"></div>-->
<div class="form-group clearfix padding-left margin-10">
<label class="wxlabel-item">
<h5><strong>{lang trusted_domain_name}:</strong></h5>
</label>
<div class="wxlabel-info">
<p class="">$wxapp[host]<span class="copyBtn-wrap">
<span class="copy-btn js_copy" style="border: none;" data-clipboard-text="$wxapp[host]" title="{lang copy}">{lang copy}</span>
<span class="alert copy-success alert-success hide ">{lang copy_success_paste_need_place}</span> </span> </p>
</div>
</div>
<!--<div class="line line-dashed line-lg pull-in"></div>-->
<div class="form-group clearfix padding-left margin-10">
<label class="col-sm-12" style="padding: 0;color: rgba(104, 120, 146, 1);">
<h5><strong>{lang syntony_URL_configuration_information}:</strong></h5>
</label>
</div>
<div class="form-group clearfix padding-left margin-10">
<label class="wxlabel-item">URL</label>
<div class="wxlabel-info">
<p class="form-control-static relative" style="padding-left:0;">$wxapp[callback] <span class="copyBtn-wrap">
<span class="copy-btn js_copy" data-clipboard-text="$wxapp[callback]" title="{lang copy}">{lang copy}</span>
<span class="alert copy-success alert-success hide ">{lang copy_success_paste_need_place}</span> </span> </p>
</div>
</div>
<div class="form-group clearfix padding-left margin-10">
<label class="wxlabel-item">Token</label>
<div class="wxlabel-info">
<p class="form-control-static relative">$wxapp['token'] <span class="copyBtn-wrap">
<span class="copy-btn js_copy" data-clipboard-text="$wxapp[token]" title="{lang copy}">{lang copy}</span>
<span class="alert copy-success alert-success hide ">{lang copy_success_paste_need_place}</span> </span> </p>
</div>
</div>
<div class="form-group clearfix padding-left margin-10">
<label class="wxlabel-item">AESKey</label>
<div class="wxlabel-info">
<p class="form-control-static relative">$wxapp[encodingaeskey] <span class="copyBtn-wrap">
<span class="copy-btn js_copy" data-clipboard-text="$wxapp[encodingaeskey]" title="{lang copy}">{lang copy}</span>
<span class="alert copy-success alert-success hide ">{lang copy_success_paste_need_place}</span> </span> </p>
</div>
</div>
<div class="line line-dashed line-lg pull-in"></div>
<label class="col-sm-12" style="padding: 0">
<h5><strong>{lang other_configuration_information}</strong></h5>
</label>
<div class="col-sm-12" style="margin-bottom:20px;padding: 0;">
<p class="form-control-static relative">
<img src="$wxapp[otherpic]" style="max-width:100%">
</p>
</div>
</div>
</div>
<script type="text/javascript">
jQuery(document).ready(function(e) {
jQuery('.input-black').each(function() {
InputAnimate.init(jQuery(this));
})
var client = new ZeroClipboard(jQuery('.js_copy'));
client.on( "load", function( client ) {
// alert( "ZeroClipboard SWF is ready!" );
client.on( "complete", function( client,args ) {
var self=this;
jQuery(this).parent().find('.copy-success').removeClass('hide');
window.setTimeout(function(){
jQuery(self).parent().find('.copy-success').addClass('hide');
},1000);
});
});
});
</script>
<script src="static/js/ZeroClipboard/ZeroClipboard.min.js?{VERHASH}"></script>
<script src="static/js/input_field.js"></script>
<!--{template common/footer_simple}-->

View File

@@ -0,0 +1,503 @@
<style>
.group-tabul{
margin-left: 0px;
padding-left: 0px;
float: left;
}
.custom_menu_list {
padding: 2px 15px;
border-top: 1px solid #FFF;
border-bottom: 1px solid #e5e5e5;
height: 38px;
overflow:visible;
}
.custom_menu_list:hover{
background:#F7F7F7;
}
.custom_menu_addName, .custom_menu_name, .custom_menu_subName {
height: 34px;
line-height: 32px;
display: inline-block;
vertical-align: middle;
cursor: pointer;
}
.js_add_second{
padding-left:42px;
}
.custom_menu_list.cm_subname {
padding-left: 42px;
}
.custom_menu_title_text {
padding: 12px 15px 12px 35px;
border-bottom: 1px solid #e5e5e5;
margin:0;
}
.hover_visible{
opacity:0;
_filter: Alpha(opacity=0);
}
.custom_menu_list:hover .hover_visible{
opacity:1;
_filter: Alpha(opacity=100);
}
.custom_menu_list.editing:hover .hover_visible,.custom_menu_list.editing .hover_visible{
display:none;
}
.custom_menu_input{
height: 26px;
border: 1px solid #ddd;
outline: 0;
width: 250px;
padding:0 5px;
display: none;
margin: 2px 0;
}
.custom_menu_notice {
margin-left: 20px;
display: none;
color: #da4a38;
}
.error .custom_menu_input{
border-color:#da4a38;
}
.error .js_input_limit{
border-color:#da4a38;
}
.error .custom_menu_notice{
display:inline-block;
}
.custom_menu_list.editing .custom_menu_subName,.custom_menu_list.editing .custom_menu_name,.custom_menu_list.editing .custom_menu_addName,.custom_menu_list.editing .icon{
display:none;
}
.custom_menu_list.editing .custom_menu_input{
display:inline-block;
}
.icon {
display: inline-block;
width: 24px;
height: 24px;
background-image: url(static/image/common/icon_main.png)!important;
background-repeat: no-repeat!important;
}
.icon_click_gray {
width: 28px;
height: 16px;
background-position: -224px -126px;
}
.icon_link_gray {
width: 20px;
height: 20px;
background-position: -190px -158px;
}
.custom_menu_list .icon_link_gray {
margin: 8px 0 0;
}
.custom_menu_list .icon_click_gray {
margin: 8px -4px 0 0;
}
.custom_menu_list .icon_arrow_down, .custom_menu_list .icon_arrow_right {
margin-right: 8px;
}
.icon_arrow_down {
width: 8px;
height: 8px;
background-position: -64px -96px;
}
.custom_menu_list .icon_add_small {
vertical-align: -3px;
margin-right: 5px;
}
.icon_add_small {
width: 14px;
height: 14px;
background-position: -32px -160px;
}
.icon_edit_gray {
height: 16px;
width: 16px;
background-position: -192px -33px;
}
.custom_menu_list .icon_edit_gray {
vertical-align: middle;
margin-left: 8px;
}
.custom_menu_list .icon_remove {
margin: 8px 0 0 10px;
}
.icon_remove, .icon_remove_gray {
width: 16px;
height: 17px;
background-position: -160px -32px;
}
</style>
<div class="main-header clearfix">
<ul class="group-tabul" style="margin-bottom:0px">
<li><a href="{$baseurl_info}">{eval echo $base_info_title?$base_info_title:'{lang application_message}';}</a></li>
<li class="active"><a href="{$baseurl_menu}">{eval echo $base_menu_title?$base_menu_title:'{lang application_menu}';}</a></li>
</ul>
</div>
<div class="main-content" style="border-top:1px solid #FFF;">
<ul class="help-block text_center custom_menu_title_text ">
<li>{lang creat_three_level_menu}</li>
<li>{lang edit_menu_in_the_user_can_not_see}</li>
<li>{lang menu_release_24_hours_to_update}</li>
<li>{lang drag_can_be_sorted}</li>
</ul>
<div class="custom_menu_mainList_wrap">
<!--{loop $menu[button] $key $value}-->
<div class="custom_cmname_list_wrap">
<div class="custom_menu_list cm_name js_li clearfix" data-id="$key" data-name="$value[name]" data-type="$value[type]" <!--{if $value[type]=='click'}--> data-key="$value[key]"<!--{elseif $value[type]=='view'}-->data-url="$value[url]"<!--{/if}-->>
<a class="icon icon_remove pull-right js_menu_remove hover_visible" href="javascript:;"></a>
<span class="icon icon_arrow_down"></span><span class="custom_menu_name">$value[name]</span>
<!--{if $value[type] && $value[type]=='view'}-->
<a class=" pull-right js_link" href="javascript:;" title="{lang skip_links}" onclick="setEventkey(this,'link');return false"><span class="icon icon_link_gray"></span></a>
<!--{elseif $value[type]}-->
<a class=" pull-right js_click " href="javascript:;" title="{lang menu}KEY" onclick="setEventkey(this,'click');return false"><span class="icon icon_click_gray"></span></a>
<!--{/if}-->
<a class="js_change_name ml10 hover_visible icon icon_edit_gray" href="javascript:;" title="{lang modification}"></a>
<input type="text" class="custom_menu_input js_add_2_menu js_input_limit " value="$value[name]" autofocus data-limit="8">
<span class="custom_menu_notice ">{lang level_1_menu_name_limit_beyond_truncation}</span>
</div>
<div class="custom_menu_list_wrap" data-id="$key">
<!--{loop $value[sub_button] $key1 $value1}-->
<div class="custom_menu_list cm_subname js_li clearfix" data-id="{$key}_{$key1}" data-name="$value1[name]" data-type="$value1[type]" <!--{if $value1[type]=='click'}--> data-key="$value1[key]"<!--{elseif $value1[type]=='view'}-->data-url="$value1[url]"<!--{/if}-->>
<a class="icon icon_remove pull-right js_menu_remove hover_visible" href="javascript:;"></a>
<span class="custom_menu_subName">$value1[name]</span>
<!--{if $value1[type]=='view'}-->
<a class=" pull-right js_link" href="javascript:;" title="{lang skip_links}" onclick="setEventkey(this,'link');return false"><span class="icon icon_link_gray"></span></a>
<!--{elseif $value1[type]=='click'}-->
<a class=" pull-right js_click " href="javascript:;" title="{lang menu}KEY" onclick="setEventkey(this,'click');return false"><span class="icon icon_click_gray"></span></a>
<!--{/if}-->
<a class="js_change_name ml10 hover_visible icon icon_edit_gray" href="javascript:;" title="{lang modification}"></a>
<input type="text" class="custom_menu_input js_add_2_menu js_input_limit" value="$value1[name]" autofocus data-limit="16" >
<span class="custom_menu_notice ">{lang level_2_menu_name_limit_beyond_truncation}</span>
</div>
<!--{/loop}-->
</div>
<div class="custom_menu_list js_add_second" data-id="$key">
<span class="icon icon_add_small"></span>
<span class="custom_menu_addName gray">{lang add_second_level_of_menus}</span>
<input type="text" class="custom_menu_input js_add_2_menu js_input_limit" data-limit="16" autofocus placeholder="{lang level_2_menu_name_limit}">
<span class="custom_menu_notice ">{lang level_2_menu_name_limit_beyond_truncation}</span>
</div>
</div>
<!--{/loop}-->
</div>
<div class="custom_menu_list js_add">
<span class="icon icon_add_small"></span>
<span class="custom_menu_addName gray">{lang add_themselves_menu}</span>
<input type="text" class="custom_menu_input js_add_menu js_input_limit " data-limit="8" autofocus placeholder="{lang level_2_menu_name_limit}">
<span class="custom_menu_notice ">{lang level_1_menu_name_limit_beyond_truncation}</span>
</div>
<div style="padding:10px;">
<button class="btn btn-primary" onclick="menu_save(this)" data-loading-text="{lang In_the_save}" style="width:80px;">{lang save}</button>
&nbsp;&nbsp;<button class="btn btn-success" onclick="menu_publish(this)" data-loading-text="{lang release}" style="width:120px;" <!--{if !$setting['agentid']}-->disabled="disabled"<!--{/if}-->>{lang published_weixin}</button>
&nbsp;&nbsp;<button class="btn btn-danger" onclick="menu_default(this)" data-loading-text="{lang in_recovery}">{lang restore_defaults}</button>
<small class="pull-right gray mt10">{lang release_24_hours_to_update}</small>
</div>
</div>
<script type="text/javascript">
jQuery(document).ready(function(e) {
check_add_second();
jQuery(document).on('click','.js_change_name',function(){
jQuery(this).parent().addClass('editing');
jQuery(this).parent().find('.custom_menu_input').focus();
});
jQuery(document).on('click','.js_add_second',function(){
if(!jQuery('.custom_menu_list_wrap[data-id='+jQuery(this).attr('data-id')+'] .cm_subname').length){//如果一级目录有事件,弹窗提示;
var self=this;
showDialog('{lang use_the_secondary_menu}', 'confirm', '{lang secondary_menu_confirm}', function(){
jQuery(self).addClass('editing').find('.custom_menu_input').focus();
});
}else{
jQuery(this).addClass('editing');
jQuery(this).find('.custom_menu_input').focus();
}
});
jQuery(document).on('click','.js_add',function(){
jQuery(this).addClass('editing');
jQuery(this).find('.custom_menu_input').focus();
});
jQuery(document).on('click','.js_menu_remove',function(){
var li=jQuery(this).parent();
if(li.hasClass('cm_name')){//是主菜单时,删除所有子菜单
jQuery('.custom_menu_list[data-id='+li.attr('data-id')+']').remove();
jQuery('.custom_menu_list_wrap[data-id='+li.attr('data-id')+']').remove();
}
li.remove();
check_add_second();
});
jQuery(document).on('keyup','.js_input_limit',function(e){
var val=jQuery(this).val();
if(mb_strlen(val)>jQuery(this).attr('data-limit')){
jQuery(this).parent().addClass('error');
}else{
jQuery(this).parent().removeClass('error');
}
if(e.keyCode=='13'){
jQuery(this).trigger('blur');
}
});
jQuery(document).on('blur','.custom_menu_input',function(){
var li=jQuery(this).parent();
var cut_val=mb_cutstr(this.value,jQuery(this).attr('data-limit'));
if(this.value){
if(li.hasClass('js_add_second')){
var pid=li.attr('data-id');
if(jQuery('.custom_menu_list_wrap[data-id='+pid+'] .cm_subname').length<5){//判定是否已经有5个二级菜单了
var html='<div class="custom_menu_list cm_subname js_li clearfix" data-name="'+cut_val+'">'
+' <a class="icon icon_remove pull-right js_menu_remove hover_visible" href="javascript:;"></a>'
+' <span class="custom_menu_subName">'+cut_val+'</span>'
+' <div class="btn-group pull-right eventkey">'
+' <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">'
+' {lang add_the_event_type} <span class="caret"></span>'
+' </button>'
+' <ul class="dropdown-menu" role="menu">'
+' <li><a href="javascript:;" onclick="setEventkey(this,\'click\');return false">{lang menu}key</a></li>'
+' <li><a href="javascript:;" onclick="setEventkey(this,\'link\');return false">{lang jump_page}</a></li>'
+' </ul>'
+' </div>'
+' <a class="js_change_name ml10 hover_visible icon icon_edit_gray" href="javascript:;" title="{lang modification}"></a>'
+' <input type="text" class="custom_menu_input js_add_2_menu js_input_limit " value="'+cut_val+'" autofocus="true" data-limit="16" >'
+' <span class="custom_menu_notice ">{lang level_2_menu_name_limit_beyond_truncation}</span>'
+' </div>';
jQuery('.custom_menu_list_wrap[data-id='+pid+']').append(html);
jQuery('.js_li[data-id='+pid+']').attr('data-type','').find('.js_click,.js_link,.btn-group').remove();
check_add_second();
init_dragsort(2);
}
this.value='';
}else if(li.hasClass('js_add')){
if(jQuery('.cm_name').length<3){
var html='<div class="custom_menu_list cm_name js_li clearfix" data-name="'+cut_val+'" data-type="">'
+' <a class="icon icon_remove pull-right js_menu_remove hover_visible" href="javascript:;"></a>'
+' <span class="icon icon_arrow_down"></span><span class="custom_menu_name">'+cut_val+'</span>'
+' <a class="js_change_name ml10 hover_visible icon icon_edit_gray" href="javascript:;" title="{lang modification}"></a>'
+' <input type="text" class="custom_menu_input js_add_2_menu js_input_limit " value="'+cut_val+'" autofocus="true" data-limit="8">'
+' <span class="custom_menu_notice ">{lang level_1_menu_name_limit_beyond_truncation}</span>'
+'</div>'
+'<div class="custom_menu_list_wrap"></div>'
+'<div class="custom_menu_list js_add_second">'
+' <span class="icon icon_add_small"></span>'
+' <span class="custom_menu_addName gray">{lang add_second_level_of_menus}</span>'
+' <input type="text" class="custom_menu_input js_add_2_menu js_input_limit" data-limit="16" autofocus="true" placeholder="{lang level_2_menu_name_limit}">'
+' <span class="custom_menu_notice ">{lang level_2_menu_name_limit_beyond_truncation}</span>'
+'</div>';
jQuery(html).appendTo('.custom_menu_mainList_wrap');
check_add_second();
init_dragsort(1);
}
}else{
li.find('.custom_menu_subName,.custom_menu_name').html(cut_val);
li.attr('data-name',cut_val);
this.value=cut_val;
}
}
li.removeClass('editing');
});
init_dragsort();
});
var ajaxurl='$baseurl_ajax';
function init_dragsort(flag){
if(flag==1) jQuery('.custom_menu_mainList_wrap').dragsort(null,function(){check_add_second();});
else if(flag==2) jQuery('.custom_menu_list_wrap').dragsort(null,function(){check_add_second();});
else{
jQuery('.custom_menu_list_wrap').dragsort(null,function(){check_add_second();});
jQuery('.custom_menu_mainList_wrap').dragsort(null,function(){check_add_second();});
}
}
function menu_save(obj){
var button=jQuery(obj);
button.button('loading');
var menu=[];
jQuery('.custom_menu_mainList_wrap .js_li').each(function(){
var li=jQuery(this);
if(li.hasClass('cm_name')){
var dataid=li.attr('data-id');
var type=li.attr('data-type');
var arr={}
arr['name']=li.attr('data-name');
if(type){
arr['type']=li.attr('data-type');
if(type=='click'){
arr['key']=li.attr('data-key');
}else{
arr['url']=li.attr('data-url');
}
}else{
arr['sub_button']=[];
}
menu.push(arr);
}else if(li.hasClass('cm_subname')){
var id0=li.parent().attr('data-id');
var type=li.attr('data-type');
var arr={};
arr['name']=li.attr('data-name');
if(type){
arr['type']=li.attr('data-type');
if(type=='click'){
arr['key']=li.attr('data-key');
}else{
arr['url']=li.attr('data-url');
}
}
menu[id0]['sub_button'].push(arr);
}
});
jQuery.post(ajaxurl+'&action=menu_save',{menu:menu},function(json){
if(json.msg=='success'){
showmessage('{lang save_success}!','success',1000,1);
}else{
showmessage('{lang save_unsuccess}!','danger',3000,1);
}
button.button('reset');
},'json');
}
function menu_default(obj){
if(confirm('{lang restore_the_default_menu}')){
var button=jQuery(obj);
button.button('loading');
jQuery.post(ajaxurl+'&action=menu_default',function(json){
window.location.reload();
});
}
}
function menu_publish(obj){
var button=jQuery(obj);
button.button('loading');
var menu=[];
if(jQuery('.custom_menu_mainList_wrap .js_li .btn-group').length){
showmessage('{lang none_response_event_please_check}','danger',5000,1);
button.button('reset');
return;
}
jQuery('.custom_menu_mainList_wrap .js_li').each(function(){
var li=jQuery(this);
if(li.hasClass('cm_name')){
var dataid=li.attr('data-id');
var type=li.attr('data-type');
var arr={}
arr['name']=li.attr('data-name');
if(type){
arr['type']=li.attr('data-type');
if(type=='click'){
arr['key']=li.attr('data-key');
}else{
arr['url']=li.attr('data-url');
}
}else{
arr['sub_button']=[];
}
menu.push(arr);
}else if(li.hasClass('cm_subname')){
var id0=li.parent().attr('data-id');
var type=li.attr('data-type');
var arr={};
if(type){
arr['name']=li.attr('data-name');
arr['type']=li.attr('data-type');
if(type=='click'){
marr['key']=li.attr('data-key');
}else{
arr['url']=li.attr('data-url');
}
menu[id0]['sub_button'].push(arr);
}
}
});
jQuery.post(ajaxurl+'&action=menu_publish',{menu:menu},function(json){
if(json.msg=='success'){
showmessage('{lang release_success}!','success',1000,1);
}else{
showmessage(json.error,'danger',3000,1);
}
button.button('reset');
},'json');
}
function setEventkey(obj,type){
var el=jQuery(obj);
var dataid=el.closest('.js_li').attr('data-id');
showWindow('setEvent',ajaxurl+'&action=setEventkey&type='+type+'&dataid='+dataid+'&t='+new Date().getTime());
}
function check_add_second(){
var i=0;
jQuery('.custom_menu_mainList_wrap .custom_menu_list,.custom_menu_mainList_wrap .custom_menu_list_wrap').each(function(){
var me=jQuery(this);
if(me.hasClass('cm_name')){
me.attr('data-id',i);
i++;
}else if(me.hasClass('custom_menu_list_wrap')){
me.attr('data-id',(i-1));
var li=jQuery('.cm_name[data-id='+(i-1)+']');
if(jQuery('.custom_menu_list_wrap[data-id='+(i-1)+'] .cm_subname').length){//有子菜单主菜单去除evnent
jQuery('.custom_menu_list_wrap[data-id='+(i-1)+'] .cm_subname').each(function(index){
var el=jQuery(this);
el.attr('data-id',(i-1)+'_'+index);
if(el.attr('data-type')==''){
jQuery('<div class="btn-group pull-right eventkey"><button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">{lang add_the_event_type}<span class="caret"></span></button><ul class="dropdown-menu" role="menu"> <li><a href="javascript:;" onclick="setEventkey(this,\'click\');return false">{lang menu}key</a></li><li><a href="javascript:;" onclick="setEventkey(this,\'link\');return false">{lang jump_page}</a></li></ul> </div>').appendTo(this);
}
});
li.attr('data-type','').find('.js_click,.js_link,.btn-group').remove();
}else{
if(li.attr('data-type')==''){
li.find('.js_click,.js_link,.btn-group').remove();
jQuery('<div class="btn-group pull-right eventkey"><button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">{lang add_the_event_type}<span class="caret"></span></button><ul class="dropdown-menu" role="menu"> <li><a href="javascript:;" onclick="setEventkey(this,\'click\');return false">{lang menu}key</a></li><li><a href="javascript:;" onclick="setEventkey(this,\'link\');return false">{lang jump_page}</a></li></ul> </div>').appendTo(li);
}
}
}else if(me.hasClass('js_add_second')){
me.attr('data-id',i-1);
if(jQuery('.custom_menu_list_wrap[data-id='+(i-1)+'] .cm_subname').length>4) me.addClass('hidden');
else me.removeClass('hidden');
}
});
if(i>2){
jQuery('.js_add').addClass('hidden');
}else{
jQuery('.js_add').removeClass('hidden');
}
}
function mb_strlen(str) {
var len = 0;
for(var i = 0; i < str.length; i++) {
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? 2 : 1;
}
return len;
}
function mb_cutstr(str, maxlen) {
var len = 0;
var ret = '';
var dot = '';
maxlen = maxlen - dot.length;
for(var i = 0; i < str.length; i++) {
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? 2 : 1;
if(len > maxlen) {
ret += dot;
break;
}
ret += str.substr(i, 1);
}
return ret;
}
</script>
<script type="text/javascript" src="static/js/jquery.dragsort.js?{VERHASH}"></script>

View File

@@ -0,0 +1,147 @@
<style>
.line {
height: 2px;
margin: 10px 0;
font-size: 0;
overflow: hidden;
background-color: transparent;
border-width: 0;
border-top: 1px solid #e7e7e7;
border-bottom: 1px solid #FFF;
}
.pull-in {
margin-left: -15px;
margin-right: -15px;
}
/*.line-dashed {
border-style: dashed;
background: transparent;
}*/
.line-lg {
margin-top: 15px;
margin-bottom: 15px;
}
.padding-left .col-sm-12 {
padding-left: 40px;
}
.relative {
position: relative;
}
.copy-success {
position: absolute;
left: -210px;
top: -15px;
padding: 8px;
}
.absoluter {
position: absolute;
right: 0;
top: 0;
padding: 5px;
}
</style>
<div class="main-header">
<ul class="nav nav-pills nav-pills-bottomguide">
<li class="active"><a href="{$baseurl_info}">{eval echo $base_info_title?$base_info_title:'{lang application_message}';}</a></li>
<li><a href="{$baseurl_menu}">{eval echo $base_menu_title?$base_menu_title:'{lang application_menu}';}</a></li>
</ul>
</div>
<div class="main-content" style="border-top:1px solid #FFF">
<div class="panel-body" >
<div class="entity-panel-body form-horizontal">
<form id="settingform" name="settingform" class="form-horizontal form-horizontal-left" action="$baseurl_info" method="post" style="margin:0">
<input type="hidden" name="settingsubmit" value="true" />
<input type="hidden" name="formhash" value="{FORMHASH}" />
<dl>
<dt>AppID:</dt>
<dd class="clearfix">
<input type="text" id="AppID" class="form-control" name="AppID" value="$setting[AppID]" required="true" />
<span class="help-block">{lang developer_credentials_login_commonality_terrace}</span>
</dd>
</dl>
<dl>
<dt>AppSecret:</dt>
<dd class="clearfix">
<input type="text" id="AppSecret" class="form-control" name="AppSecret" value="$setting[AppSecret]" required="true" />
<span class="help-block">{lang developer_credentials_login_commonality_terrace}</span>
</dd>
</dl>
<dl>
<dd>
<input type="hidden" id="fbind" name="fbind" value="bind" />
<button class="btn btn-success btn-width" onclick="document.getElementById('settingform').onsubmit();" >{lang bundle}</button>
&nbsp;&nbsp;<button class="btn btn-danger btn-width" onclick="document.getElementById('fbind').value='unbind';document.getElementById('settingform').onsubmit();">{lang unbundle}</button>
</dd>
</dl>
</form>
<div class="line line-dashed line-lg pull-in"></div>
<div class="form-group clearfix padding-left">
<div class="col-sm-12">
<p class="form-control-static danger relative"><i class="glyphicon glyphicon-hand-down"></i> <strong style="font-size:1.5em">{lang need_developer_center_settings}</strong> <a href="https://mp.weixin.qq.com/advanced/advanced?action=dev" target="_blank" class="pull-right btn btn-default">{lang weixin_public_number}</a> </p>
</div>
</div>
<div class="line line-dashed line-lg pull-in"></div>
<div class="form-group clearfix padding-left">
<label class="col-sm-12">
<h5><strong>{lang server_configuration_information}</strong></h5>
</label>
</div>
<div class="form-group clearfix padding-left">
<label class="col-xs-2 control-label">URL({lang server_address})</label>
<div class="col-xs-10">
<p class="form-control-static relative" style="padding-left:0;">$wxmp[callback] <span class="absoluter">
<button class="btn btn-default js_copy" data-clipboard-text="$wxmp[callback]" title="{lang copy}">{lang copy}</button>
<span class="alert copy-success alert-success hide ">{lang copy_success_paste_need_place}</span> </span> </p>
</div>
</div>
<div class="form-group clearfix padding-left">
<label class="col-xs-2 control-label">Token({lang token})</label>
<div class="col-xs-10">
<p class="form-control-static relative">$wxmp['token'] <span class="absoluter">
<button class="btn btn-default js_copy" data-clipboard-text="$wxmp[token]" title="{lang copy_success_paste_need_place}">{lang copy_success_paste_need_place}</button>
<span class="alert copy-success alert-success hide ">{lang copy_success_paste_need_place}</span> </span> </p>
</div>
</div>
<div class="form-group clearfix padding-left">
<label class="col-xs-2 control-label">EncodingAESKey({lang message_encryption_key})</label>
<div class="col-xs-10">
<p class="form-control-static relative">$wxmp[encodingaeskey] <span class="absoluter">
<button class="btn btn-default js_copy" data-clipboard-text="$wxmp[encodingaeskey]" title="{lang copy}">{lang copy}</button>
<span class="alert copy-success alert-success hide ">{lang copy_success_paste_need_place}</span> </span> </p>
</div>
</div>
<div class="form-group clearfix padding-left">
<label class="col-xs-2 control-label">{lang message_encryption}</label>
<div class="col-xs-10">
<p class="form-control-static relative">{lang safe_mode}</p>
</div>
</div>
</div>
</div>
<script type="text/javascript">
jQuery(document).ready(function(e) {
var client = new ZeroClipboard(jQuery('.js_copy'));
client.on( "load", function( client ) {
// alert( "ZeroClipboard SWF is ready!" );
client.on( "complete", function( client,args ) {
var self=this;
jQuery(this).parent().find('.copy-success').removeClass('hide');
window.setTimeout(function(){
jQuery(self).parent().find('.copy-success').addClass('hide');
},1000);
});
});
});
</script>
<script src="static/js/ZeroClipboard/ZeroClipboard.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

0
data/log/index.htm Normal file
View File

0
data/template/index.htm Normal file
View File

View File

@@ -0,0 +1,527 @@
<?php
if (!defined('IN_OAOOA')) {
exit('Access Denied');
}
@set_time_limit(0);
@ini_set('max_execution_time', 0);
require_once(DZZ_ROOT . './dzz/class/class_encode.php');
require_once libfile('function/user', '', 'user');
use \core as C;
use \DB as DB;
use \IO as IO;
use \ImagePalette as ImagePalette;
use \Color as Color;
class billfishxport
{
public $palette = array(
0x111111, 0xFFFFFF, 0x9E9E9E, 0xA48057, 0xFC85B3, 0xFF2727, 0xFFA34B, 0xFFD534, 0x47C595, 0x51C4C4, 0x2B76E7, 0x6D50ED
);
private $path = '';//待执行数据path
private $appid = 0;//库id
private $uid = 0;//用户id
private $username = null;//用户名
private $filenum = 0;//总文件数
private $checklimit = 1000;
private $onceexportnum = 100;
private $getinfonum = 0;
private $readtxt = DZZ_ROOT . './data/attachment/cache/';
private $exportstatus = 0;
private $donum = 0;
private $lastid = '';
private $charset = 'UTF-8';
private $allowext = '';
private $notallowext = '';
private $db = null;
public function __construct($data = array())
{
global $Defaultallowext;
//获取导入记录表基本数据
$this->path = $data['path'];
$this->appid = $data['appid'];
$this->uid = $data['uid'];
$this->username = $data['username'];
$this->exportstatus = $data['state'];
$this->donum = $data['donum'];
$this->filenum = $data['filenum'];
$this->lastid = $data['lastid'];
if ($data['charset']) $this->charset = $data['charset'];
//尝试连接数据库
$connect = $this->connect_db();
if (!is_object($connect)) {
return $connect;
} else {
$this->db = $connect;
}
}
public function connect_db()
{
$dsn = 'sqlite:' . $this->path . BS . '.bf' . BS . 'billfish.db';
try {
return new PDO($dsn);
} catch (PDOException $e) {
return array('error' => $e->getMessage());
}
}
public function fetch($sql)
{
$q = $this->db->query($sql);
$rows = $q->fetch(PDO::FETCH_ASSOC);
return $rows;
}
public function fetch_all($sql)
{
$q = $this->db->query($sql);
$rows = $q->fetchAll(PDO::FETCH_ASSOC);
return $rows;
}
public function initExport()
{
//修改导入状态为1
C::t('pichome_vapp')->update($this->appid, array('state' => 1));
//查询res_join_tag是否有文件id索引
$fecthsql = "SELECT * FROM sqlite_master WHERE type = 'index';";
$indexdata = $this->fetch_all($fecthsql);
$indexarr = array_column($indexdata,'name');
//如果标签表iid没有索引创建res_join_tag_iid_idx索引
if(!in_array('res_join_tag_iid',$indexarr)){
$createsql = "CREATE INDEX res_join_tag_iid ON res_join_tag ( iid ASC )";
$this->db->query($createsql);
}
//查询待导入文件数
$sql = "select count(s.id) as num from source s left join res_prop rp on s.id = rp.iid where rp.action =0 ";
$data = $this->fetch($sql);
$this->filenum = $data['num'];
//如果没有数据,视为导入成功
if (!$this->filenum) {
C::t('pichome_vapp')->update($this->appid, array('state' => 4));
} else {
C::t('pichome_vapp')->update($this->appid, array('state' => 2, 'filenum' => $this->filenum));
}
return array('success' => true);
}
public function execExport($force = false)
{
//开始页数
if ($this->lastid) {
$start = $this->lastid;
} else $start = 1;
$lastid = $start;
$start = ($start-1)*$this->onceexportnum;
$sql = "select s.*,p.fid,p.score,p.title,p.origin,p.note,p.action from source s
left join res_prop p on p.iid = s.id
where 1 limit $start,$this->onceexportnum";
$datas = $this->fetch_all($sql);
foreach ($datas as $v) {
//查询文件是否在回收站
$id = $v['id'];//文件id
$rid = md5($this->appid . $id);
//如果文件在回收站
if ($v['action'] > 0) {
//如果已经有数据,标记为已删除
if (DB::fetch_first("select count(rid) from %t where rid = %s", array('pichome_resources', $rid))) {
C::t('pichome_resources')->update($rid, array('isdelete' => 1));
}
//文件总数减1
$this->filenum -= 1;
}
else {
//获取文件后缀
$ext = strtolower(substr(strrchr($v['name'], '.'), 1));
//获取文件类型
$type = getTypeByExt($ext);
//出入主表数据
$setarr = [
'rid' => $rid,
'uid'=>$this->uid,
'username'=>$this->username,
'appid' => $this->appid,
'ext' => $ext,
'type' => $type,
'name' => $v['name'],
'mtime' => ($v['born']) ? $v['born'] * 1000 : $v['lastw'] * 1000,
'dateline' => $v['lastw'] * 1000,
'btime' => TIMESTAMP * 1000,
'size' => $v['size'],
'width' => $v['width'],
'height' => $v['height'],
'grade' => $v['score'],
'apptype' => 2,
'hasthumb' => $v['thumb'] ? 1 : 0,
'thumb' => $v['thumb']
];
//数据插入主表
if (C::t('#billfish#billfish_record')->inser_data($v['id'], $setarr)) {
//定义属性表变量
$attrdata = [];
$attrdata['desc'] = $v['note'];
//将名字记入搜索字段
$attrdata['searchval'] = $setarr['name'].$attrdata['desc'];
//处理目录数据
if ($v['fid']) {
$folderdata = $this->getFolderfid($v['fid']);
//处理目录数据
$fid = $folderdata['fid'];
$folderarr = [
'fid' => $fid,
'appid' => $this->appid,
'rid' => $rid
];
C::t('pichome_folderresources')->insert($folderarr);
$attrdata['path'] = $folderdata['dirpath'] . BS . $setarr['name'];
} else {
$attrdata['path'] = $setarr['name'];
}
//目录数据处理完成
//转码路径 记入属性表
if (CHARSET != $this->charset) $attrdata['path'] = diconv($attrdata['path'],CHARSET, $this->charset);;
//标签数据开始
//查询文件标签id
$sql = "select lid from res_join_tag where iid = $id";//耗时最多
$tiddata = $this->fetch_all($sql);
$tids = [];
foreach ($tiddata as $val) {
$tids[] = $val['lid'];
}
if (!empty($tids)) {
$tidstr = dimplode($tids);
//查询标签分类数据
$sql = "select jg.gid,g.name from tag_join_group jg
left join taggrp g on g.id = jg.gid
where jg.lid in($tidstr) group by jg.gid";
$taggroupdata = $this->fetch_all($sql);
$relationgroupdata = [];
//插入标签分类关系表及pichome分类返回原分类id对应pichome标签分类id
foreach ($taggroupdata as $val) {
$tmpreturn = C::t('#billfish#billfish_taggrouprecord')->insert_data($val, $this->appid);
$relationgroupdata[$tmpreturn['bcid']] = $tmpreturn['cid'];
}
//处理标签表数据
//查询标签名称,id 插入标签对照表 返回原标签id对应pichome标签id 将标签加入searchval
$sql = " select t.id,t.name,j.gid from tag t
left join tag_join_group j on j.lid = t.id where t.id in($tidstr)";
$tagdata = $this->fetch_all($sql);
$tagrelativedata = [];
$taggroups =[];
foreach ($tagdata as $val) {
$tagsetarr = ['name' => $val['name'], 'lid' => $val['id']];
$tmptagrelativedata = C::t('#billfish#billfish_tagrecord')->insert_data($tagsetarr, $this->appid);
$tagrelativedata[$tmptagrelativedata['lid']] = $tmptagrelativedata['tid'];
$attrdata['searchval'] .= $val['name'];
if($val['gid']) $taggroups[] = ['gid'=>$val['gid'],'lid'=>$val['id']];
}
//处理标签与分类关系数据 查询原标签分类和标签id 插入pichome标签分类对应标签id
//$sql = "select gid,lid from tag_join_group where lid in($tidstr)";
//$taggroups = $this->fetch_all($sql);
foreach ($taggroups as $val) {
$tagrelarr = [
'tid' => $tagrelativedata[$val['lid']],
'cid' => $relationgroupdata[$val['gid']],
'appid' => $this->appid,
];
C::t('pichome_tagrelation')->insert($tagrelarr);
}
//处理标签文件关系数据
$inserttids = $ftids = array_values($tagrelativedata);
//查询pichome是否有标签数据
$oattrtag = DB::result_first("select tag from %t where rid = %s", array('pichome_resources_attr', $rid));
if ($oattrtag) {
$ottids = explode(',', $oattrtag);
//取得删除的标签
$deltids = array_diff($ftids, $ottids);
if (!empty($deltids)) C::t('pichome_resourcestag')->delete_by_ridtid($rid, $deltids);
//取得插入的标签
$inserttids = $deltids = array_diff($ottids, $ftids);
}
//插入标签关系表
foreach ($inserttids as $val) {
$tagresourcesattr = ['tid' => $val, 'rid' => $rid, 'appid' => $this->appid];
C::t('pichome_resourcestag')->insert($tagresourcesattr);
}
//更新属性表标签数据
$attrdata['tag'] = implode(',', $ftids);
}
//标签数据结束
//开始处理颜色数据
//查询颜色数据
$sql = "select * from colour where iid = $id";
$bcolordata = $this->fetch_all($sql);
//删除原颜色数据
DB::delete('pichome_palette', array('rid' => $rid));
foreach ($bcolordata as $val) {
$colorarr = ['rid' => $rid,
'color' => $val['bf_clr'],
'weight' => $val['precent'],
'r' => $val['r'],
'g' => $val['g'],
'b' => $val['b']
];
C::t('pichome_palette')->insert($colorarr);
}
//颜色数据处理结束
//处理标注数据
$sql = "select * from comment where iid = $id";
$commentdata = $this->fetch_all($sql);
//删除原标注数据
C::t('pichome_comments')->delete_by_rid($rid);
if ($commentdata) {
foreach ($commentdata as $commentval) {
$tcommentval['id'] = random(13) . $this->appid;
$tentval['appid'] = $this->appid;
$tcommentval['rid'] = $rid;
$tcommentval['x'] = number_format($commentval['x'], 2);
$tcommentval['y'] = number_format($commentval['y'], 2);
$tcommentval['width'] = number_format($commentval['cx'], 2);
$tcommentval['height'] = number_format($commentval['cy'], 2);
$tcommentval['annotation'] = $commentval['comment'];
try {
C::t('pichome_comments')->insert($tcommentval);
$setarr['searchval'] .= $tcommentval['annotation'];
} catch (Exception $e) {
}
}
}
//标注数据处理结束
//处理音视频时长数据
//查询音频时长
$sql = "select duration from video where iid = $id";
$videodata = $this->fetch($sql);
if(isset($videodata['duration'])) $attrdata['duration'] = $videodata['duration'];
//查询视频时长
$sql = "select duration from audio where iid = $id";
$audiodata = $this->fetch($sql);
if(isset($audiodata['duration'])) $attrdata['duration'] = $audiodata['duration'];
//时长处理结束
//插入属性表数据
$attrdata['rid'] = $rid;
$attrdata['appid'] = $this->appid;
C::t('pichome_resources_attr')->insert($attrdata);
$this->donum += 1;
}
else{
//文件总数减1
$this->filenum -= 1;
}
}
//导入百分比
$percent = floor(($this->donum / $this->filenum) * 100);
$percent = ($percent > 100) ? 100 : $percent;
$state = ($percent >= 100) ? 3 : 2;
if ($state == 3) {
$lastid = 0;
}
//记录导入起始位置,以备中断后从此处,更改导入状态
C::t('pichome_vapp')->update($this->appid, array('percent' => $percent, 'donum' => $this->donum, 'state' => $state));
}
$time4= microtime(true);
$lastid = $lastid+1;
C::t('pichome_vapp')->update($this->appid,array('lastid' => $lastid));
return array('success' => true);
}
public function getFolderfid($bfid, $dirpath = '')
{
$parentfolderdata = [];
$sql = "select * from folder where id = $bfid";
$folderdata = $this->fetch($sql);
$dirpath = $folderdata['name'] . ($dirpath ? BS . $dirpath : '');
if ($folderdata['pid']) {
$parentfolderdata = $this->getFolderfid($folderdata['pid'], $dirpath);
}
if($parentfolderdata['dirpath']) $dirpath = $parentfolderdata['dirpath'];
$setarr = [
'pfid' => isset($parentfolderdata['fid']) ? $parentfolderdata['fid'] : '',
'fname' => $folderdata['name'],
'appid' => $this->appid
];
$return = C::t('#billfish#billfish_folderrecord')->insert_data($bfid, $setarr);
$return['dirpath'] = $dirpath;
return $return;
}
//校验文件
public function execCheckFile()
{
if ($this->exportstatus == 3) {
$total = DB::result_first("select count(rid) from %t where appid = %s ", array('pichome_resources', $this->appid));
//校验文件
$this->check_file($total);
}
return true;
}
public function check_file($total)
{
if ($this->lastid < 1) $this->lastid = 1;
$limitsql = ($this->lastid - 1) * $this->checklimit . ',' . $this->checklimit;
$delrids = [];
$data = DB::fetch_all("select rid,name from %t where appid = %s order by lastdate asc limit $limitsql ", array('pichome_resources', $this->appid));
if (empty($data)) {
//校验完成后更新目录文件数
foreach (DB::fetch_all("select count(rf.id) as num,f.fid from %t f left join %t rf on rf.fid=f.fid where f.appid = %s group by f.fid", array('pichome_folder', 'pichome_folderresources', $this->appid)) as $v) {
C::t('pichome_folder')->update($v['fid'], array('filenum' => $v['num']));
}
//检查不存在的目录删除
$foldertotal = DB::result_first("select count(id) from %t where appid = %s",array('billfish_folderrecord',$this->appid));
$this->check_notexists_folder($foldertotal);
//检查不存在的标签删除
$tagtotal = DB::result_first("select count(id) from %t where appid = %s",array('billfish_tagrecord',$this->appid));
$this->check_notexists_tag($tagtotal);
//删除创建的索引
$sql = 'DROP INDEX res_join_tag_iid';
$this->db->query($sql);
$hascatnum = DB::result_first("SELECT count(DISTINCT rid) FROM %t where appid = %s",array('pichome_folderresources',$this->appid));
$nosubfilenum = $total - $hascatnum;
C::t('pichome_vapp')->update($this->appid, array('percent' => 0, 'state' => 4, 'lastid' => 0, 'donum' => 0,'filenum'=>$total,'nosubfilenum'=>$nosubfilenum));
return true;
}
foreach ($data as $v) {
$rid = $v['rid'];
$iid = DB::result_first("select bid from %t where rid = %s and appid = %s",array('billfish_record',$rid,$this->appid));
//查询billfish中是否有该数据
$sql = "select count(*) as num from source where id = $iid";
$numdata = $this->fetch($sql);
if(!isset($numdata['num']) || !$numdata['num']){
$delrids[] = $rid;
}
}
if (!empty($delrids)) {
$this->filenum = $this->filenum - count($delrids);
//如果有需要删除的,删除后,则重新查询上一页数据
C::t('pichome_resources')->delete_by_rid($delrids);
if($this->lastid == 1){
$percent = round(($this->checklimit / $total) * 100);
}else{
$percent = round((($this->lastid - 1) * $this->checklimit / $total) * 100);
}
C::t('pichome_vapp')->update($this->appid, array('lastid' => $this->lastid, 'percent' => $percent, 'state' => 3, 'filenum' => $this->filenum));
} else {
if($this->lastid == 1){
$percent = round(($this->checklimit / $total) * 100);
}else{
$percent = round((($this->lastid - 1) * $this->checklimit / $total) * 100);
}
$percent = ($percent > 100) ? 100:$percent;
C::t('pichome_vapp')->update($this->appid, array('lastid' => $this->lastid + 1, 'percent' => $percent, 'state' => 3));
}
}
//检查目录数据
public function check_notexists_folder($total){
$tmpkey = 'pichomecheckfolder' . $this->appid;
$folderstart = C::t('cache')->fetch($tmpkey);
if (!$folderstart) {
$folderstart = 0;
}
if($folderstart < $total){
$bfids = [];
//检查不存在的目录删除
foreach(DB::fetch_all("select bfr.bfid as bfid from %t f left join %t bfr on bfr.fid=f.fid where f.appid = %s limit $folderstart,100",array('pichome_folder','billfish_folderrecord',$this->appid)) as $v){
$bfids[] = $v['bfid'];
}
if(empty($bfids)){
C::t('cache')->delete($tmpkey);
return true;
}
$bfidstr = dimplode($bfids);
//查询不存的目录
$sql = "select id from folder where id in($bfidstr)";
$bfolder = $this->fetch_all($sql);
$blfids = [];
foreach ($bfolder as $val){
$blfids[] = $val['id'];
}
$delfids = array_diff($bfids,$blfids);
if(!empty($delfids))C::t('#billfish#billfish_folderrecord')->delete_by_bfid($delfids,$this->appid);
$folderstart += 100;
$setarr = ['cachekey' => $tmpkey, 'cachevalue' => $folderstart, 'dateline' => time()];
C::t('cache')->insert($setarr);
$this->check_notexists_folder($total);
}else{
C::t('cache')->delete($tmpkey);
return true;
}
}
//检查标签对照表数据
public function check_notexists_tag($total){
$tmpkey = 'pichomechecktag'.$this->appid;
$tagstart = C::t('cache')->fetch($tmpkey);
if (!$tagstart) {
$tagstart = 0;
}
if($tagstart < $total){
$lids=[];
foreach(DB::fetch_all("select lid from %t where appid = %s limit $tagstart,100 ",array('billfish_tagrecord',$this->appid)) as $v){
$lids[] = $v['lid'];
}
if(empty($lids)){
C::t('cache')->delete($tmpkey);
return true;
}
$lidstr = dimplode(',',$lids);
$sql = "select id from tag where id in($lidstr)";
$blids =[] ;
foreach($this->fetch_all($sql) as $v){
$blids[] = $v['id'];
}
$deblids = array_diff($lids,$blids);
if(!empty($deblids)) DB::delete('billfish_tagrecord','lid in('.dimplode($deblids).')');
$tagstart += 100;
$setarr = ['cachekey' => $tmpkey, 'cachevalue' => $tagstart, 'dateline' => time()];
C::t('cache')->insert($setarr);
$this->check_notexists_tag($total);
}else{
C::t('cache')->delete($tmpkey);
return true;
}
}
}

View File

@@ -0,0 +1,71 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_billfish_folderrecord extends dzz_table
{
public function __construct() {
$this->_table = 'billfish_folderrecord';
$this->_pk = 'id';
parent::__construct();
}
public function insert_data($bfid,$setarr){
$returndata =[];
if($fid = DB::result_first("select fid from %t where bfid = %d and appid = %s",array($this->_table,$bfid,$setarr['appid']))){
C::t('pichome_folder')->update($fid,$setarr);
$setarr['fid'] = $fid;
return $setarr;
}else{
$fpathkey = '';
if($setarr['pfid']){
$fpathkey =DB::result_first("select pathkey from %t where fid = %s and appid = %s",array('pichome_folder',$setarr['pfid'],$setarr['appid']));
}
$setarr['fid'] = random(13) . $setarr['appid'];
$setarr['pathkey'] = ($fpathkey) ? $fpathkey.$setarr['fid']:$setarr['fid'];
if(C::t('pichome_folder')->insert($setarr)){
$setarr1 = [
'bfid'=>$bfid,
'fid'=>$setarr['fid'],
'appid'=>$setarr['appid']
];
if(parent::insert($setarr1,1)){
return $setarr;
}else{
C::t('pichome_folder')->delete($setarr['fid']);
return $returndata;
}
}
}
}
public function delete_by_bfid($bfids,$appid){
if(!is_array($bfids)) $bfids = (array)$bfids;
$delfid = $delid = [];
foreach(DB::fetch_all("select fid,id from %t where bfid in(%n) and appid = %s",array($this->_table,$bfids,$appid)) as $v){
$delfid[] = $v['fid'];
$delid[] = $v['id'];
}
DB::delete('pichome_folderresources',"fid in (".dimplode($delfid).")");
DB::delete('pichome_folder',"fid in (".dimplode($delfid).")");
parent::delete($delid);
}
public function delete_by_appid($appid){
DB::delete($this->_table,array('appid'=>$appid));
}
}

View File

@@ -0,0 +1,43 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_billfish_record extends dzz_table
{
public function __construct() {
$this->_table = 'billfish_record';
$this->_pk = 'id';
parent::__construct();
}
public function inser_data($bid,$setarr){
$setarr1['thumb'] = $setarr['thumb'];
unset($setarr['thumb']);
if(C::t('pichome_resources')->insert($setarr)){
$setarr1['rid'] = $setarr['rid'];
$setarr1['appid'] = $setarr['appid'];
$setarr1['bid'] = $bid;
$id = DB::result_first("select id from %t where bid = %d and appid = %s",array($this->_table,$bid,$setarr['appid']));
if($id){
parent::update($id,$setarr1);
}else{
parent::insert($setarr1);
}
}
return true;
}
public function delete_by_appid($appid){
DB::delete($this->_table,array('appid'=>$appid));
}
}

View File

@@ -0,0 +1,42 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_billfish_taggrouprecord extends dzz_table
{
public function __construct() {
$this->_table = 'billfish_taggrouprecord';
$this->_pk = 'id';
parent::__construct();
}
public function insert_data($setarr,$appid){
$hasrecord = false;
if($cid = DB::result_first("select cid from %t where bcid=%d and appid = %s",array($this->_table,$setarr['gid'],$appid))){
$data['cid'] = $cid;
$hasrecord = true;
}else{
$data['cid'] = random(13).$appid;
}
$data['catname'] = $setarr['name'];
$data['appid'] = $appid;
$data['dateline'] = TIMESTAMP;
if($cid = C::t('pichome_taggroup')->insert($data)){
if(!$hasrecord) parent::insert(array('cid'=>$cid,'bcid'=>$setarr['gid'],'appid'=>$appid));
return array('bcid'=>$setarr['gid'],'cid'=>$cid);
}
}
public function delete_by_appid($appid){
DB::delete($this->_table,array('appid'=>$appid));
}
}

View File

@@ -0,0 +1,39 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
class table_billfish_tagrecord extends dzz_table
{
public function __construct() {
$this->_table = 'billfish_tagrecord';
$this->_pk = 'id';
parent::__construct();
}
public function insert_data($setarr,$appid){
if($id = DB::result_first("select id from %t where lid=%d and appid = %s",array($this->_table,$setarr['lid'],$appid))){
parent::update($id,array('name'=>$setarr['name']));
}else{
$setarr['appid'] = $appid;
parent::insert($setarr);
}
if($tid= DB::result_first("select tid from %t where tagname = %s",array('pichome_tag',$setarr['name']))){
return array('lid'=>$setarr['lid'],'tid'=>$tid);
}else{
$tid = C::t('pichome_tag')->insert($setarr['name']);
}
return array('tid'=>$tid,'lid'=>$setarr['lid']);
}
public function delete_by_appid($appid){
DB::delete($this->_table,array('appid'=>$appid));
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace dzz\billfish\classes;
use \core as C;
use \DB as DB;
use \fmpeg as fmpeg;
class getpichomethumb
{
public function run(&$data)
{
$thumbid = DB::result_first("select thumb from %t where appid = %s and rid = %s", array('billfish_record', $data['appid'], $data['rid']));
if (strlen($thumbid) < 9) {
$thumbid = str_pad($thumbid,9,0,STR_PAD_LEFT);
}
$pathdir = $data['apppath'].BS.'.bf'.BS.'.preview';
$thumbpatharr = $this->mbStrSplit($thumbid,3);
array_pop($thumbpatharr);
$thumbpath = implode(BS,$thumbpatharr);
return array('icon'=>$pathdir.BS.$thumbpath.BS.$thumbid.'.webp');
}
function mbStrSplit ($string, $len=1) {
$start = 0;
$strlen = mb_strlen($string);
while ($strlen) {
$array[] = mb_substr($string,$start,$len,"utf8");
$string = mb_substr($string, $len, $strlen,"utf8");
$strlen = mb_strlen($string);
}
return $array;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace dzz\billfish\classes;
use \core as C;
use \DB as DB;
use \fmpeg as fmpeg;
class pichomevappdelete
{
public function run($appid)
{
C::t("#billfish#billfish_record")->delete_by_appid($appid);
C::t("#billfish#billfish_folderrecord")->delete_by_appid($appid);
C::t("#billfish#billfish_tagrecord")->delete_by_appid($appid);
C::t("#billfish#billfish_taggrouprecord")->delete_by_appid($appid);
}
}

View File

@@ -0,0 +1,157 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
require_once DZZ_ROOT . './dzz/ffmpeg/vendor/autoload.php';
require_once(DZZ_ROOT . './dzz/class/class_encode.php');
class fmpeg
{
private $fm;
private $logger = NULL;
public function __construct($options = array())
{
$option = array(
'ffmpeg.binaries' =>(getglobal('config/pichomeffmpegposition')) ? getglobal('config/pichomeffmpegposition'):(strstr(PHP_OS, 'WIN') ? DZZ_ROOT . 'dzz\ffmpeg\ffmpeg\ffmpeg.exe' : '/usr/bin/ffmpeg'),
'ffprobe.binaries' => (getglobal('config/pichomeffprobeposition')) ? (getglobal('config/pichomeffprobeposition')):(strstr(PHP_OS, 'WIN') ? DZZ_ROOT . 'dzz\ffmpeg\ffmpeg\ffprobe.exe' : '/usr/bin/ffprobe'),
'timeout' => 3600, // The timeout for the underlying process
'ffmpeg.threads' => 1, // The number of threads that FFMpeg should use
);
$this->fm = FFMpeg\FFMpeg::create($option, $this->logger);
return $this->fm;
}
public function getInfo($data)
{
$option = array(
'ffmpeg.binaries' =>(getglobal('config/pichomeffmpegposition')) ? getglobal('config/pichomeffmpegposition'):(strstr(PHP_OS, 'WIN') ? DZZ_ROOT . 'dzz\ffmpeg\ffmpeg\ffmpeg.exe' : '/usr/bin/ffmpeg'),
'ffprobe.binaries' => (getglobal('config/pichomeffprobeposition')) ? (getglobal('config/pichomeffprobeposition')):(strstr(PHP_OS, 'WIN') ? DZZ_ROOT . 'dzz\ffmpeg\ffmpeg\ffprobe.exe' : '/usr/bin/ffprobe'),
'timeout' => 3600, // The timeout for the underlying process
'ffmpeg.threads' => 1, // The number of threads that FFMpeg should use
);
$file = $path = $data['realpath'];
if (!is_file($file)) {
$cachepath = getglobal('setting/attachdir') . 'cache/ffmpeg_cahce_' . md5($path) . '.' . $data['ext'];
if (!file_put_contents($cachepath, file_get_contents($file))) {
return false;
}
$file = $cachepath;
}
$ffprobe = FFMpeg\FFProbe::create($option, null);
if ('audio' == getTypeByExt($data['ext'])) {
$meta = $ffprobe
->streams($file) // extracts streams informations
->audios() // filters video streams
->first();
$info = array();
if ($meta) {
$info = array(
'duration' => round($meta->get('duration'), 2),
);
}
} else {
$meta = $ffprobe
->streams($file) // extracts streams informations
->videos() // filters video streams
->first();
$info = array();
if ($meta) {
$info = array(
'width' => intval($meta->get('width')),
'height' => intval($meta->get('height')),
'duration' => round($meta->get('duration'), 2),
);
}
}
if ($cachepath) @unlink($cachepath);
return $info;
}
/* 获取缩略图
$file:文件地址
$time:获取缩略图的时间点单位秒
*/
public function getThumb($data,$time = 1)
{
global $_G;
$file = $data['realpath'];
//本地路径
if (!is_file($file)) {
$cachefile = $_G['setting']['attachdir'] . './cache/' . md5($data['path']) . '.' . $data['ext'];
$handle = fopen($cachefile, 'w+');
$fp = fopen($file, 'rb');
while (!feof($fp)) {
fwrite($handle, fread($fp, 8192));
}
fclose($handle);
fclose($fp);
$file = $cachefile;
}
if ('audio' == getTypeByExt($data['ext'])) {
$target = md5($data['path']) . '.jpg';
$jpg = $_G['setting']['attachdir'] . './pichomethumb/' . $data['appid'] . '/' . $target;
$jpgpath = dirname($jpg);
dmkdir($jpgpath);
if (!in_array($data['ext'], array('mp3', 'wav'))) {
$audio = $this->fm->open($file);
$audio_format = new FFMpeg\Format\Audio\Mp3();
$tmp = $_G['setting']['attachdir'] . './cache/' . md5($file) . '.mp3';
$audio->save($audio_format, $tmp);
}
$audio = $this->fm->open($tmp ? $tmp : $file);
$waveform = $audio->waveform(720, 360, array('#888888'));
$waveform->save($jpg);
if ($tmp) @unlink($tmp);
} else {
$target = md5($data['path']) . '.jpg';
$jpg = $_G['setting']['attachdir'] . './pichomethumb/' . $data['appid'] . '/' . $target;
$jpgpath = dirname($jpg);
dmkdir($jpgpath);
try {
$video = $this->fm->open($file);
$video
->frame(FFMpeg\Coordinate\TimeCode::fromSeconds($time))
->save($jpg);
} catch (\Exception $e) {
runlog('ffmpeg', $e->getMessage() . ' File:' . $file);
}
}
if ($cachefile) @unlink($cachefile);
if (is_file($jpg)) {
return $jpg;
} else {
return false;
}
}
//兼容linux下获取文件名
public function get_basename($filename)
{
if ($filename) {
return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}
return '';
}
}

View File

@@ -0,0 +1,53 @@
<?php
namespace dzz\ffmpeg\classes;
use \core as C;
use \DB as DB;
use \fmpeg as fmpeg;
class info
{
public function run(&$data)
{
$exts = (getglobal('config/pichomeffmpeggetvieoinoext')) ? getglobal('config/pichomeffmpeggetvieoinoext'):[
'avi', 'rm', 'rmvb', 'mkv', 'mov', 'wmv', 'asf', 'mpg', 'mpe', 'mpeg', 'mp4', 'm4v', 'mpeg', 'f4v', 'vob', 'ogv', 'mts', 'm2ts',
'3gp', 'webm', 'flv', 'wav', 'mp3', 'ogg', 'midi', 'wma', 'vqf', 'ra', 'aac', 'flac', 'ape', 'amr', 'aiff', 'au', 'm4a'
];
$data['ext'] = strtolower($data['ext']);
if (empty($data['ext']) || !in_array($data['ext'], $exts)) {
return true;
} else {
$ffprobeposition = getglobal('config/pichomeffprobeposition') ? getglobal('config/pichomeffprobeposition'):(strstr(PHP_OS, 'WIN')?DZZ_ROOT . 'dzz\ffmpeg\ffmpeg\ffprobe.exe':'/usr/bin/ffprobe');
if(!is_file($ffprobeposition)) return ;
$setarr = [
'rid'=>$data['rid'],
'appid'=>$data['appid'],
'ext'=>$data['ext']
];
$isforce = (isset($setarr['isforce'])) ? 1:0;
C::t('pichome_ffmpeg_record')->insert($setarr,$isforce);
}
}
public function rundata($data)
{
require_once DZZ_ROOT . './dzz/ffmpeg/class/class_fmpeg.php';
try {
if ($info = fmpeg::getInfo($data)) {
if (isset($info['duration'])) C::t('pichome_resources_attr')->update($data['rid'], array('duration' => $info['duration']));
if (isset($info['width'])) C::t('pichome_resources')->update($data['rid'], array('width' => $info['width'], 'height' => $info['height']));
C::t('pichome_ffmpeg_record')->update($data['rid'],array('infostatus'=>1));
}
} catch (\Exception $e) {
runlog('ffmpeg', $e->getMessage() . 'rid:' . $data['rid']);
}
}
}

View File

@@ -0,0 +1,64 @@
<?php
namespace dzz\ffmpeg\classes;
use \core as C;
use \DB as DB;
use \fmpeg as fmpeg;
class thumb
{
public function run(&$data)
{
$exts = (getglobal('config/pichomeffmpeggetthumbext')) ? getglobal('config/pichomeffmpeggetvieoinoext'):[
'avi', 'rm', 'rmvb', 'mkv', 'mov', 'wmv', 'asf', 'mpg', 'mpe', 'mpeg', 'mp4', 'm4v', 'mpeg', 'f4v', 'vob', 'ogv', 'mts', 'm2ts',
'3gp', 'webm', 'flv', 'wav', 'mp3', 'ogg', 'midi', 'wma', 'vqf', 'ra', 'aac', 'flac', 'ape', 'amr', 'aiff', 'au', 'm4a'
];
$data['ext'] = strtolower($data['ext']);
if (empty($data['ext']) || !in_array($data['ext'], $exts)) {
} else {
if(strstr(PHP_OS, 'WIN') && !is_file(DZZ_ROOT . 'dzz\ffmpeg\ffmpeg\ffprobe.exe')){
return ;
}elseif(!is_file('/usr/bin/ffprobe')){
return ;
}
$setarr = [
'rid'=>$data['rid'],
'appid'=>$data['appid'],
'ext'=>$data['ext']
];
$isforce = (isset($setarr['isforce'])) ? 1:0;
C::t('pichome_ffmpeg_record')->insert($setarr,$isforce);
//dfsockopen(getglobal('localurl') . 'index.php?mod=ffmpeg&op=getinfo&path=' . dzzencode($data['rid']), 0, '', '', false, '', 0.1);
}
}
public function rundata(&$data)
{
require_once DZZ_ROOT . './dzz/ffmpeg/class/class_fmpeg.php';
$fm = new fmpeg();
if ($data['Duration']) {
$start = ceil($data['duration'] / 5);
} else {
$start = 1;
}
if ($target = $fm->getThumb($data, $start)) {
if ($imginfo = getimagesize($target)) {
$resourcesarr = [
'width' => $imginfo[0] ? $imginfo[0]:0,
'height' =>$imginfo[1] ? $imginfo[1]:0
];
C::t('pichome_resources')->update($data['rid'],$resourcesarr);
C::t('pichome_resources')->update($data['rid'], array('hasthumb' => 1));
C::t('pichome_ffmpeg_record')->update($data['rid'], array('thumbstatus' => 1,'thumb'=>$target));
}
}
}
}

6
dzz/ffmpeg/composer.json Normal file
View File

@@ -0,0 +1,6 @@
{
"require": {
"php-ffmpeg/php-ffmpeg": "^0.9.3",
"php-ffmpeg/extras": "^0.3.1"
}
}

650
dzz/ffmpeg/composer.lock generated Normal file
View File

@@ -0,0 +1,650 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "79c0351ad302ceea820d708f203ad405",
"packages": [
{
"name": "alchemy/binary-driver",
"version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/alchemy-fr/BinaryDriver.git",
"reference": "80c6633890afb71d2417ae851d0ad167d8b00b95"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alchemy-fr/BinaryDriver/zipball/80c6633890afb71d2417ae851d0ad167d8b00b95",
"reference": "80c6633890afb71d2417ae851d0ad167d8b00b95",
"shasum": ""
},
"require": {
"evenement/evenement": "^2.0|^1.0",
"monolog/monolog": "^1.3",
"php": ">=5.5",
"psr/log": "^1.0",
"symfony/process": "^2.0|^3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0|^5.0"
},
"type": "library",
"autoload": {
"psr-0": {
"Alchemy": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Romain Neutron",
"email": "imprec@gmail.com",
"homepage": "http://www.lickmychip.com/"
},
{
"name": "Phraseanet Team",
"email": "info@alchemy.fr",
"homepage": "http://www.phraseanet.com/"
},
{
"name": "Nicolas Le Goff",
"email": "legoff.n@gmail.com"
}
],
"description": "A set of tools to build binary drivers",
"keywords": [
"binary",
"driver"
],
"time": "2016-03-02T13:49:15+00:00"
},
{
"name": "doctrine/cache",
"version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "d768d58baee9a4862ca783840eca1b9add7a7f57"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57",
"reference": "d768d58baee9a4862ca783840eca1b9add7a7f57",
"shasum": ""
},
"require": {
"php": "~7.1"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/coding-standard": "^4.0",
"mongodb/mongodb": "^1.1",
"phpunit/phpunit": "^7.0",
"predis/predis": "~1.0"
},
"suggest": {
"alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.8.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Caching library offering an object-oriented API for many cache backends",
"homepage": "https://www.doctrine-project.org",
"keywords": [
"cache",
"caching"
],
"time": "2018-08-21T18:01:43+00:00"
},
{
"name": "evenement/evenement",
"version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/igorw/evenement.git",
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a",
"reference": "6ba9a777870ab49f417e703229d53931ed40fd7a",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0||^5.7||^4.8.35"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0-dev"
}
},
"autoload": {
"psr-0": {
"Evenement": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Igor Wiedler",
"email": "igor@wiedler.ch"
}
],
"description": "Événement is a very simple event dispatching library for PHP",
"keywords": [
"event-dispatcher",
"event-emitter"
],
"time": "2017-07-17T17:39:19+00:00"
},
{
"name": "monolog/monolog",
"version": "1.24.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
"reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"psr/log": "~1.0"
},
"provide": {
"psr/log-implementation": "1.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"jakub-onderka/php-parallel-lint": "0.9",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpunit/phpunit": "~4.5",
"phpunit/phpunit-mock-objects": "2.3.0",
"ruflin/elastica": ">=0.90 <3.0",
"sentry/sentry": "^0.13",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mongo": "Allow sending log messages to a MongoDB server",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
"sentry/sentry": "Allow sending log messages to a Sentry server"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "http://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"time": "2018-11-05T09:00:11+00:00"
},
{
"name": "neutron/temporary-filesystem",
"version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/romainneutron/Temporary-Filesystem.git",
"reference": "694aa3885f653dd429584e825ffbab79441d285f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/romainneutron/Temporary-Filesystem/zipball/694aa3885f653dd429584e825ffbab79441d285f",
"reference": "694aa3885f653dd429584e825ffbab79441d285f",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0",
"symfony/filesystem": "^2.3 || ^3.0 || ^4.0"
},
"require-dev": {
"phpunit/phpunit": "^5.0"
},
"type": "library",
"autoload": {
"psr-0": {
"Neutron": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Romain Neutron",
"email": "imprec@gmail.com"
}
],
"description": "Symfony filesystem extension to handle temporary files",
"time": "2018-02-07T21:11:57+00:00"
},
{
"name": "php-ffmpeg/extras",
"version": "0.3.1",
"source": {
"type": "git",
"url": "https://github.com/alchemy-fr/PHP-FFMpeg-Extras.git",
"reference": "4b3f87467e27c828641c3361ad395492775ab98c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alchemy-fr/PHP-FFMpeg-Extras/zipball/4b3f87467e27c828641c3361ad395492775ab98c",
"reference": "4b3f87467e27c828641c3361ad395492775ab98c",
"shasum": ""
},
"require": {
"php": ">=5.3.2",
"php-ffmpeg/php-ffmpeg": "~0.3"
},
"require-dev": {
"phpunit/phpunit": "~3.7",
"sami/sami": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.3-dev"
}
},
"autoload": {
"psr-0": {
"FFMpeg": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Alchemy",
"email": "dev.team@alchemy.fr",
"homepage": "http://www.alchemy.fr/"
}
],
"description": "A set of audio/video formats compatible with PHP-FFMpeg",
"keywords": [
"codecs",
"ffmpeg"
],
"time": "2014-02-24T10:48:44+00:00"
},
{
"name": "php-ffmpeg/php-ffmpeg",
"version": "0.9.5",
"source": {
"type": "git",
"url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git",
"reference": "96225b2dff65a4c3b0b541f2420742ffe5851127"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/96225b2dff65a4c3b0b541f2420742ffe5851127",
"reference": "96225b2dff65a4c3b0b541f2420742ffe5851127",
"shasum": ""
},
"require": {
"alchemy/binary-driver": "^1.5",
"doctrine/cache": "^1.0",
"evenement/evenement": "^2.0 || ^1.0",
"neutron/temporary-filesystem": "^2.1.1",
"php": "^5.3.9 || ^7.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8",
"sami/sami": "~1.0",
"silex/silex": "~1.0"
},
"suggest": {
"php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.7-dev"
}
},
"autoload": {
"psr-0": {
"FFMpeg": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Romain Neutron",
"email": "imprec@gmail.com",
"homepage": "http://www.lickmychip.com/"
},
{
"name": "Phraseanet Team",
"email": "info@alchemy.fr",
"homepage": "http://www.phraseanet.com/"
},
{
"name": "Patrik Karisch",
"email": "patrik@karisch.guru",
"homepage": "http://www.karisch.guru"
},
{
"name": "Romain Biard",
"email": "romain.biard@gmail.com",
"homepage": "https://www.strime.io/"
}
],
"description": "FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg",
"keywords": [
"audio",
"audio processing",
"avconv",
"avprobe",
"ffmpeg",
"ffprobe",
"video",
"video processing"
],
"time": "2017-06-30T19:27:10+00:00"
},
{
"name": "psr/log",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2018-11-20T15:27:04+00:00"
},
{
"name": "symfony/filesystem",
"version": "v4.2.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "e16b9e471703b2c60b95f14d31c1239f68f11601"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/e16b9e471703b2c60b95f14d31c1239f68f11601",
"reference": "e16b9e471703b2c60b95f14d31c1239f68f11601",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"symfony/polyfill-ctype": "~1.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.2-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Filesystem\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"time": "2019-02-07T11:40:08+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "82ebae02209c21113908c229e9883c419720738a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
"reference": "82ebae02209c21113908c229e9883c419720738a",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
},
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"time": "2019-02-06T07:57:58+00:00"
},
{
"name": "symfony/process",
"version": "v3.4.27",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "a9c4dfbf653023b668c282e4e02609d131f4057a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/a9c4dfbf653023b668c282e4e02609d131f4057a",
"reference": "a9c4dfbf653023b668c282e4e02609d131f4057a",
"shasum": ""
},
"require": {
"php": "^5.5.9|>=7.0.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Process\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2019-04-08T16:15:54+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}

40
dzz/ffmpeg/convert.php Normal file
View File

@@ -0,0 +1,40 @@
<?php
/*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/
*
* @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com)
*/
ignore_user_abort(true);
@set_time_limit(0);
if(!defined('IN_OAOOA')) {
exit('Access Denied');
}
$setting = C::t('setting')->fetch('ffmpeg_setting',true);
if($setting['upload_convert_immediately']>1){
exit('admin set not convert!');
}
include_once dzz_libfile('ffmpeg');
$max=10;
$time=TIMESTAMP-60*60*5;
if($max<=DB::result_first("select COUNT(*) from %t where percent>0 and percent<100 and dateline>%d",array('video_record',$time))){
exit('Over the maximum load, please wait a moment.');
}
$id=intval($_GET['id']);
if(!$ff=C::t('video_record')->fetch($id)){
exit('convert error');
}
if(dzz_process::islocked('ffmpeg_convert_'.$id,60*60)){
exit('converting!');
}
if($ff['status']==2){
dzz_process::unlock('ffmpeg_convert_'.$id);
exit('convert completed');
}
$fm=new fmpeg($setting);
$ret=$fm->convert($ff['aid'],$ff['format']);
dzz_process::unlock('ffmpeg_convert_'.$id);
exit('success');

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

71
dzz/ffmpeg/getinfo.php Normal file
View File

@@ -0,0 +1,71 @@
<?php
ignore_user_abort(true);
if (!defined('IN_OAOOA')) {
exit('Access Denied');
}
@set_time_limit(0);
ini_set('memory_limit', -1);
@ini_set('max_execution_time', 0);
$appids = [];
foreach(DB::fetch_all("select appid from %t where `type` = %d and getinfo = %d",array('pichome_vapp',1,1)) as $v){
$appids[] = $v['appid'];
}
if(empty($appids)){
exit('success');
}
$locked = true;
for($i=0;$i<1;$i++){
$processname = 'DZZ_LOCK_PICHOMEGETINFO'.$i;
if (!dzz_process::islocked($processname, 60*60)) {
$locked=false;
break;
}
}
$processname = 'DZZ_LOCK_PICHOMEGETINFO'.$i;
$limit = 10;
$start=$i*$limit;
if (!dzz_process::islocked($processname, 60*60)) {
$locked=false;
}
if ($locked) {
exit(json_encode( array('error'=>'进程已被锁定请稍后再试')));
}
use dzz\ffmpeg\classes\info as info;
$info =new info;
foreach(DB::fetch_all("select * from %t where infostatus = 0 and appid in(%n)
order by infodonum asc limit $start,$limit",array('pichome_ffmpeg_record',$appids)) as $v){
$processname1 = 'PICHOMEGETINFO_'.$v['rid'];
if (dzz_process::islocked($processname1, 60*5)) {
continue;
}
$data = C::t('pichome_resources')->fetch_data_by_rid($v['rid']);
if(empty($data)){
C::t('pichome_ffmpeg_record')->delete($v['rid']);
dzz_process::unlock($processname1);
continue;
}else{
//如果信息执行次数大于三次直接赋值为1不再尝试获取
if($v['infodonum'] > 3 && $v['infostatus'] == 0){
$v['infostatus'] = 1;
C::t('pichome_ffmpeg_record')->update($v['rid'],array('infostatus'=>1));
dzz_process::unlock($processname1);
continue;
}
//如果信息和缩略图标记为已生成,标记该文件信息状态为已获取
if($v['thumbstatus'] == 1 && $v['infostatus'] == 1){
C::t('pichome_resources_attr')->update($v['rid'],array('isget'=>1));
dzz_process::unlock($processname1);
continue;
}
DB::query("update %t set infodonum=infodonum+%d where rid = %s ", array('pichome_ffmpeg_record', 1, $data['rid']));
$info->rundata($data);
dzz_process::unlock($processname1);
}
}
dzz_process::unlock($processname);
if(DB::result_first("select * from %t where infostatus = 0 ",array('pichome_ffmpeg_record'))){
dfsockopen(getglobal('localurl') . 'index.php?mod=ffmpeg&op=getinfo', 0, '', '', false, '', 0.1);
}
exit('success');

77
dzz/ffmpeg/thumb.php Normal file
View File

@@ -0,0 +1,77 @@
<?php
/**
* Created by PhpStorm.
* User: 86187
* Date: 2020/3/7
* Time: 15:53
*/
ignore_user_abort(true);
if (!defined('IN_OAOOA')) {
exit('Access Denied');
}
@set_time_limit(0);
ini_set('memory_limit', -1);
@ini_set('max_execution_time', 0);
$appids = [];
foreach(DB::fetch_all("select appid from %t where `type` = %d and getinfo = %d",array('pichome_vapp',1,1)) as $v){
$appids[] = $v['appid'];
}
if(empty($appids)){
exit('success');
}
$locked = true;
for($i=0;$i<1;$i++){
$processname = 'DZZ_LOCK_PICHOMEGETVIDOTHUMB'.$i;
if (!dzz_process::islocked($processname, 60*60)) {
$locked=false;
break;
}
}
$processname = 'DZZ_LOCK_PICHOMEGETVIDOTHUMB'.$i;
$limit = 10;
$start=$i*$limit;
if (!dzz_process::islocked($processname, 60*60)) {
$locked=false;
}
if ($locked) {
exit(json_encode( array('error'=>'进程已被锁定请稍后再试')));
}
use dzz\ffmpeg\classes\thumb as thumb;
$thumb =new thumb;
foreach(DB::fetch_all("select * from %t where thumbstatus = 0 and appid in(%n)
order by thumbdonum asc limit $start,$limit",array('pichome_ffmpeg_record',$appids)) as $v){
$processname1 = 'PICHOMEGETVIDOTHUMB_'.$v['rid'];
if (dzz_process::islocked($processname1, 60*5)) {
continue;
}
$data = C::t('pichome_resources')->fetch_data_by_rid($v['rid']);
if(empty($data)){
C::t('pichome_ffmpeg_record')->delete($v['rid']);
dzz_process::unlock($processname1);
continue;
}else{
//如果缩略图获取次数大于三次直接赋值为1不再尝试获取
if($v['thumbdonum'] > 3 && $v['thumbstatus'] == 0){
$v['infostatus'] = 1;
C::t('pichome_ffmpeg_record')->update($v['rid'],array('infostatus'=>1));
dzz_process::unlock($processname1);
continue;
}
//如果信息和缩略图标记为已生成,标记该文件信息状态为已获取
if($v['thumbstatus'] == 1 && $v['infostatus'] == 1){
C::t('pichome_resources_attr')->update($v['rid'],array('isget'=>1));
dzz_process::unlock($processname1);
continue;
}
DB::query("update %t set thumbdonum=thumbdonum+%d where rid = %s ", array('pichome_ffmpeg_record', 1, $data['rid']));
$thumb->rundata($data);
dzz_process::unlock($processname1);
}
}
dzz_process::unlock($processname);
if(DB::result_first("select * from %t where thumbstatus = 0 ",array('pichome_ffmpeg_record'))){
dfsockopen(getglobal('localurl') . 'index.php?mod=ffmpeg&op=thumb', 0, '', '', false, '', 0.1);
}
exit('success');

View File

@@ -0,0 +1,21 @@
BinaryDriver is released with MIT License :
Copyright (c) 2013 Alchemy
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.

View File

@@ -0,0 +1,219 @@
<?php
/*
* This file is part of Alchemy\BinaryDriver.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\BinaryDriver;
use Alchemy\BinaryDriver\Exception\ExecutableNotFoundException;
use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
use Alchemy\BinaryDriver\Listeners\Listeners;
use Alchemy\BinaryDriver\Listeners\ListenerInterface;
use Evenement\EventEmitter;
use Monolog\Logger;
use Monolog\Handler\NullHandler;
use Psr\Log\LoggerInterface;
use Symfony\Component\Process\ExecutableFinder;
use Symfony\Component\Process\Process;
abstract class AbstractBinary extends EventEmitter implements BinaryInterface
{
/** @var ConfigurationInterface */
protected $configuration;
/** @var ProcessBuilderFactoryInterface */
protected $factory;
/** @var ProcessRunner */
private $processRunner;
/** @var Listeners */
private $listenersManager;
public function __construct(ProcessBuilderFactoryInterface $factory, LoggerInterface $logger, ConfigurationInterface $configuration)
{
$this->factory = $factory;
$this->configuration = $configuration;
$this->processRunner = new ProcessRunner($logger, $this->getName());
$this->listenersManager = new Listeners();
$this->applyProcessConfiguration();
}
/**
* {@inheritdoc}
*/
public function listen(ListenerInterface $listener)
{
$this->listenersManager->register($listener, $this);
return $this;
}
/**
* {@inheritdoc}
*/
public function unlisten(ListenerInterface $listener)
{
$this->listenersManager->unregister($listener, $this);
return $this;
}
/**
* {@inheritdoc}
*/
public function getConfiguration()
{
return $this->configuration;
}
/**
* {@inheritdoc}
*
* @return BinaryInterface
*/
public function setConfiguration(ConfigurationInterface $configuration)
{
$this->configuration = $configuration;
$this->applyProcessConfiguration();
return $this;
}
/**
* {@inheritdoc}
*/
public function getProcessBuilderFactory()
{
return $this->factory;
}
/**
* {@inheritdoc}
*
* @return BinaryInterface
*/
public function setProcessBuilderFactory(ProcessBuilderFactoryInterface $factory)
{
$this->factory = $factory;
$this->applyProcessConfiguration();
return $this;
}
/**
* {@inheritdoc}
*/
public function getProcessRunner()
{
return $this->processRunner;
}
/**
* {@inheritdoc}
*/
public function setProcessRunner(ProcessRunnerInterface $runner)
{
$this->processRunner = $runner;
return $this;
}
/**
* {@inheritdoc}
*/
public function command($command, $bypassErrors = false, $listeners = null)
{
if (!is_array($command)) {
$command = array($command);
}
return $this->run($this->factory->create($command), $bypassErrors, $listeners);
}
/**
* {@inheritdoc}
*/
public static function load($binaries, LoggerInterface $logger = null, $configuration = array())
{
$finder = new ExecutableFinder();
$binary = null;
$binaries = is_array($binaries) ? $binaries : array($binaries);
foreach ($binaries as $candidate) {
if (file_exists($candidate) && is_executable($candidate)) {
$binary = $candidate;
break;
}
if (null !== $binary = $finder->find($candidate)) {
break;
}
}
if (null === $binary) {
throw new ExecutableNotFoundException(sprintf(
'Executable not found, proposed : %s', implode(', ', $binaries)
));
}
if (null === $logger) {
$logger = new Logger(__NAMESPACE__ . ' logger');
$logger->pushHandler(new NullHandler());
}
$configuration = $configuration instanceof ConfigurationInterface ? $configuration : new Configuration($configuration);
return new static(new ProcessBuilderFactory($binary), $logger, $configuration);
}
/**
* Returns the name of the driver
*
* @return string
*/
abstract public function getName();
/**
* Executes a process, logs events
*
* @param Process $process
* @param Boolean $bypassErrors Set to true to disable throwing ExecutionFailureExceptions
* @param ListenerInterface|array $listeners A listener or an array of listener to register for this unique run
*
* @return string The Process output
*
* @throws ExecutionFailureException in case of process failure.
*/
protected function run(Process $process, $bypassErrors = false, $listeners = null)
{
if (null !== $listeners) {
if (!is_array($listeners)) {
$listeners = array($listeners);
}
$listenersManager = clone $this->listenersManager;
foreach ($listeners as $listener) {
$listenersManager->register($listener, $this);
}
} else {
$listenersManager = $this->listenersManager;
}
return $this->processRunner->run($process, $listenersManager->storage, $bypassErrors);
}
private function applyProcessConfiguration()
{
if ($this->configuration->has('timeout')) {
$this->factory->setTimeout($this->configuration->get('timeout'));
}
return $this;
}
}

View File

@@ -0,0 +1,76 @@
<?php
namespace Alchemy\BinaryDriver;
use Psr\Log\LoggerInterface;
use Symfony\Component\Process\Process;
/**
* Convenient PHPUnit methods for testing BinaryDriverInterface implementations.
*/
class BinaryDriverTestCase extends \PHPUnit_Framework_TestCase
{
/**
* @return ProcessBuilderFactoryInterface
*/
public function createProcessBuilderFactoryMock()
{
return $this->getMock('Alchemy\BinaryDriver\ProcessBuilderFactoryInterface');
}
/**
* @param integer $runs The number of runs expected
* @param Boolean $success True if the process expects to be successfull
* @param string $commandLine The commandline executed
* @param string $output The process output
* @param string $error The process error output
*
* @return Process
*/
public function createProcessMock($runs = 1, $success = true, $commandLine = null, $output = null, $error = null, $callback = false)
{
$process = $this->getMockBuilder('Symfony\Component\Process\Process')
->disableOriginalConstructor()
->getMock();
$builder = $process->expects($this->exactly($runs))
->method('run');
if (true === $callback) {
$builder->with($this->isInstanceOf('Closure'));
}
$process->expects($this->any())
->method('isSuccessful')
->will($this->returnValue($success));
foreach (array(
'getOutput' => $output,
'getErrorOutput' => $error,
'getCommandLine' => $commandLine,
) as $command => $value) {
$process
->expects($this->any())
->method($command)
->will($this->returnValue($value));
}
return $process;
}
/**
* @return LoggerInterface
*/
public function createLoggerMock()
{
return $this->getMock('Psr\Log\LoggerInterface');
}
/**
* @return ConfigurationInterface
*/
public function createConfigurationMock()
{
return $this->getMock('Alchemy\BinaryDriver\ConfigurationInterface');
}
}

View File

@@ -0,0 +1,67 @@
<?php
/*
* This file is part of Alchemy\BinaryDriver.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\BinaryDriver;
use Alchemy\BinaryDriver\Exception\ExecutableNotFoundException;
use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
use Alchemy\BinaryDriver\Listeners\ListenerInterface;
use Psr\Log\LoggerInterface;
use Evenement\EventEmitterInterface;
interface BinaryInterface extends ConfigurationAwareInterface, ProcessBuilderFactoryAwareInterface, ProcessRunnerAwareInterface, EventEmitterInterface
{
/**
* Adds a listener to the binary driver
*
* @param ListenerInterface $listener
*
* @return BinaryInterface
*/
public function listen(ListenerInterface $listener);
/**
* Removes a listener from the binary driver
*
* @param ListenerInterface $listener
*
* @return BinaryInterface
*/
public function unlisten(ListenerInterface $listener);
/**
* Runs a command against the driver.
*
* Calling this method on a `ls` driver with the command `-a` would run `ls -a`.
*
* @param array|string $command A command or an array of command
* @param Boolean $bypassErrors If set to true, an erronous process will not throw an exception
* @param ListenerInterface|array $listeners A listener or an array of listeners to register for this unique run
*
* @return string The command output
*
* @throws ExecutionFailureException in case of process failure.
*/
public function command($command, $bypassErrors = false, $listeners = null);
/**
* Loads a binary
*
* @param string|array $binaries A binary name or an array of binary names
* @param null|LoggerInterface $logger A Logger
* @param array|ConfigurationInterface $configuration The configuration
*
* @throws ExecutableNotFoundException In case none of the binaries were found
*
* @return BinaryInterface
*/
public static function load($binaries, LoggerInterface $logger = null, $configuration = array());
}

View File

@@ -0,0 +1,107 @@
<?php
/*
* This file is part of Alchemy\BinaryDriver.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\BinaryDriver;
class Configuration implements ConfigurationInterface
{
private $data;
public function __construct(array $data = array())
{
$this->data = $data;
}
/**
* {@inheritdoc}
*/
public function getIterator()
{
return new \ArrayIterator($this->data);
}
/**
* {@inheritdoc}
*/
public function get($key, $default = null)
{
return isset($this->data[$key]) ? $this->data[$key] : $default;
}
/**
* {@inheritdoc}
*/
public function set($key, $value)
{
$this->data[$key] = $value;
return $this;
}
/**
* {@inheritdoc}
*/
public function has($key)
{
return array_key_exists($key, $this->data);
}
/**
* {@inheritdoc}
*/
public function remove($key)
{
$value = $this->get($key);
unset($this->data[$key]);
return $value;
}
/**
* {@inheritdoc}
*/
public function all()
{
return $this->data;
}
/**
* {@inheritdoc}
*/
public function offsetExists($offset)
{
return $this->has($offset);
}
/**
* {@inheritdoc}
*/
public function offsetGet($offset)
{
return $this->get($offset);
}
/**
* {@inheritdoc}
*/
public function offsetSet($offset, $value)
{
$this->set($offset, $value);
}
/**
* {@inheritdoc}
*/
public function offsetUnset($offset)
{
$this->remove($offset);
}
}

View File

@@ -0,0 +1,29 @@
<?php
/*
* This file is part of Alchemy\BinaryDriver.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\BinaryDriver;
interface ConfigurationAwareInterface
{
/**
* Returns the configuration
*
* @return ConfigurationInterface
*/
public function getConfiguration();
/**
* Set the configuration
*
* @param ConfigurationInterface $configuration
*/
public function setConfiguration(ConfigurationInterface $configuration);
}

View File

@@ -0,0 +1,58 @@
<?php
/*
* This file is part of Alchemy\BinaryDriver.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\BinaryDriver;
interface ConfigurationInterface extends \ArrayAccess, \IteratorAggregate
{
/**
* Returns the value given a key from configuration
*
* @param string $key
* @param mixed $default The default value in case the key does not exist
*
* @return mixed
*/
public function get($key, $default = null);
/**
* Set a value to configuration
*
* @param string $key The key
* @param mixed $value The value corresponding to the key
*/
public function set($key, $value);
/**
* Tells if Configuration contains `$key`
*
* @param string $key
*
* @return Boolean
*/
public function has($key);
/**
* Removes a value given a key
*
* @param string $key
*
* @return mixed The previous value
*/
public function remove($key);
/**
* Returns all values set in the configuration
*
* @return array
*/
public function all();
}

View File

@@ -0,0 +1,16 @@
<?php
/*
* This file is part of Alchemy\BinaryDriver.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\BinaryDriver\Exception;
interface ExceptionInterface
{
}

View File

@@ -0,0 +1,16 @@
<?php
/*
* This file is part of Alchemy\BinaryDriver.
*
* (c) Alchemy <info@alchemy.fr>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\BinaryDriver\Exception;
class ExecutableNotFoundException extends \RuntimeException implements ExceptionInterface
{
}

Some files were not shown because too many files have changed in this diff Show More