system.mod.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. function system_menu_permission_list($role = '') {
  8. $system_menu = cache_load('system_frame');
  9. if(empty($system_menu)) {
  10. cache_build_frame_menu();
  11. $system_menu = cache_load('system_frame');
  12. }
  13. if ($role == ACCOUNT_MANAGE_NAME_OPERATOR) {
  14. unset($system_menu['appmarket']);
  15. unset($system_menu['advertisement']);
  16. unset($system_menu['system']);
  17. } if ($role == ACCOUNT_MANAGE_NAME_OPERATOR) {
  18. unset($system_menu['appmarket']);
  19. unset($system_menu['advertisement']);
  20. }
  21. return $system_menu;
  22. }
  23. function system_database_backup() {
  24. $path = IA_ROOT . '/data/backup/';
  25. load()->func('file');
  26. $reduction = array();
  27. if (!is_dir($path)) {
  28. return array();
  29. }
  30. if ($handle = opendir($path)) {
  31. while (false !== ($bakdir = readdir($handle))) {
  32. if ($bakdir == '.' || $bakdir == '..') {
  33. continue;
  34. }
  35. $times[] = date("Y-m-d H:i:s", filemtime($path.$bakdir));
  36. if (preg_match('/^(?P<time>\d{10})_[a-z\d]{8}$/i', $bakdir, $match)) {
  37. $time = $match['time'];
  38. if ($handle1= opendir($path . $bakdir)) {
  39. while (false !== ($filename = readdir($handle1))) {
  40. if ($filename == '.' || $filename == '..') {
  41. continue;
  42. }
  43. if (preg_match('/^volume-(?P<prefix>[a-z\d]{10})-\d{1,}\.sql$/i', $filename, $match1)) {
  44. $volume_prefix = $match1['prefix'];
  45. if (!empty($volume_prefix)) {
  46. break;
  47. }
  48. }
  49. }
  50. }
  51. $volume_list = array();
  52. for ($i = 1;;) {
  53. $last = $path . $bakdir . "/volume-{$volume_prefix}-{$i}.sql";
  54. array_push($volume_list, $last);
  55. $i++;
  56. $next = $path . $bakdir . "/volume-{$volume_prefix}-{$i}.sql";
  57. if (!is_file($next)) {
  58. break;
  59. }
  60. }
  61. if (is_file($last)) {
  62. $fp = fopen($last, 'r');
  63. fseek($fp, -27, SEEK_END);
  64. $end = fgets($fp);
  65. fclose($fp);
  66. if ($end == '----WeEngine MySQL Dump End') {
  67. $row = array(
  68. 'bakdir' => $bakdir,
  69. 'time' => $time,
  70. 'volume' => $i - 1,
  71. 'volume_list' => $volume_list,
  72. );
  73. $reduction[$bakdir] = $row;
  74. continue;
  75. }
  76. }
  77. }
  78. rmdirs($path . $bakdir);
  79. }
  80. closedir($handle);
  81. }
  82. if (!empty($times)) {
  83. array_multisort($times, SORT_DESC, SORT_STRING, $reduction);
  84. }
  85. return $reduction;
  86. }
  87. function system_database_volume_next($volume_name) {
  88. $next_volume_name = '';
  89. if (!empty($volume_name) && preg_match('/^([^\s]*volume-(?P<prefix>[a-z\d]{10})-)(\d{1,})\.sql$/i', $volume_name, $match)) {
  90. $next_volume_name = $match[1] . ($match[3] + 1) . ".sql";
  91. }
  92. return $next_volume_name;
  93. }
  94. function system_database_volume_restore($volume_name) {
  95. if (empty($volume_name) || !is_file($volume_name)) {
  96. return false;
  97. }
  98. $sql = file_get_contents($volume_name);
  99. pdo_run($sql);
  100. return true;
  101. }
  102. function system_database_backup_delete($delete_dirname) {
  103. $path = IA_ROOT . '/data/backup/';
  104. $dir = $path . $delete_dirname;
  105. if (empty($delete_dirname) || !is_dir($dir)) {
  106. return false;
  107. }
  108. return rmdirs($dir);
  109. }
  110. function system_template_ch_name() {
  111. $result = array(
  112. 'default' => '白色',
  113. 'black' => '黑色',
  114. 'classical' => '经典',
  115. );
  116. return $result;
  117. }
  118. function system_site_info() {
  119. load()->classs('cloudapi');
  120. $api = new CloudApi();
  121. $site_info = $api->get('site', 'info');
  122. return $site_info;
  123. }