DB.class.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. /**
  3. * DB
  4. *
  5. * @author vesta, http://vestacp.com/
  6. * @author Dmitry Malishev <dima.malishev@gmail.com>
  7. * @author Dmitry Naumov-Socolov <naumov.socolov@gmail.com>
  8. * @copyright vesta 2010-2011
  9. */
  10. class DB extends AjaxHandler
  11. {
  12. /**
  13. * Get DB entries
  14. *
  15. * @param Request $request
  16. * @return string - Ajax Reply
  17. */
  18. public function getListExecute(Request $request)
  19. {
  20. $user = $this->getLoggedUser();
  21. $reply = array();
  22. $result = Vesta::execute(Vesta::V_LIST_DB_BASES, array($user['uid'], Config::get('response_type')));
  23. foreach ($result['data'] as $db => $record) {
  24. $type = $record['TYPE'];
  25. if (!isset($reply[$type])) {
  26. $reply[$type] = array();
  27. }
  28. $reply[$type][] = array(
  29. 'DB' => $db,
  30. 'OWNER' => $record['USER'],
  31. 'USER' => $record['USER'],
  32. 'USERS' => (array)$record['USER'],
  33. 'HOST' => $record['HOST'],
  34. 'TYPE' => $record['TYPE'],
  35. 'U_DISK' => $record['U_DISK'],
  36. 'DISK' => 2024,
  37. 'ENCODING' => "utf-8",//$record['ENCODING'],
  38. // 'ENCODING' => $record['ENCODING'],
  39. 'SUSPEND' => $record['SUSPEND'],
  40. 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE'])))
  41. );
  42. }
  43. if (!$result['status']) {
  44. $this->errors[] = array($result['error_code'] => $result['error_message']);
  45. }
  46. return $this->reply($result['status'], $reply);
  47. }
  48. /**
  49. * Add DB entry
  50. *
  51. * @param Request $request
  52. * @return string - Ajax Reply
  53. */
  54. public function addExecute(Request $request)
  55. {
  56. $user = $this->getLoggedUser();
  57. $_s = $request->getParameter('spell');
  58. $params = array(
  59. 'USER' => $user['uid'],
  60. 'DB' => $_s['DB'],
  61. 'DB_USER' => $_s['USER'],
  62. 'DB_PASSWORD' => $_s['PASSWORD'],
  63. 'TYPE' => $_s['TYPE'],
  64. 'HOST' => ''
  65. // 'ENCODING' => $_s['ENCODING']
  66. );
  67. $result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params);
  68. if (!$result['status']) {
  69. $this->errors[] = array($result['error_code'] => $result['error_message']);
  70. }
  71. if (Utils::getCheckboxBooleanValue($_s['SUSPEND'])) {
  72. if($result['status']){
  73. $result = array();
  74. $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, array('USER' => $user['uid'], 'JOB' => $_s['DB']));
  75. if (!$result['status']) {
  76. $this->status = FALSE;
  77. $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
  78. }
  79. }
  80. }
  81. return $this->reply($result['status'], $result['data']);
  82. }
  83. /**
  84. * Delete DB entry
  85. *
  86. * @param Request $request
  87. * @return string - Ajax Reply
  88. */
  89. public function deleteExecute(Request $request)
  90. {
  91. $_s = $request->getParameter('spell');
  92. $user = $this->getLoggedUser();
  93. $params = array(
  94. 'USER' => $user['uid'],
  95. 'DB' => $_s['DB']
  96. );
  97. $result = Vesta::execute(Vesta::V_DEL_DB_BASE, $params);
  98. if (!$result['status']) {
  99. $this->errors[] = array($result['error_code'] => $result['error_message']);
  100. }
  101. return $this->reply($result['status'], $result['data']);
  102. }
  103. /**
  104. * Change Password
  105. *
  106. * @param Request $request
  107. * @return string - Ajax Reply
  108. */
  109. public function changeExecute(Request $request)
  110. {
  111. $_s = $request->getParameter('spell');
  112. $_old = $request->getParameter('old');
  113. $_new = $request->getParameter('new');
  114. $user = $this->getLoggedUser();
  115. $result = array();
  116. $result = array();
  117. if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){
  118. $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB']));
  119. return $this->reply($result['status'], $result['error_message']);
  120. }
  121. elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){
  122. $result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB']));
  123. if (!$result['status']) {
  124. $this->status = FALSE;
  125. $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
  126. return $this->reply($result['status'], $result['error_message']);
  127. }
  128. }
  129. if ($_new['PASSWORD'] != Vesta::SAME_PASSWORD && $_new['PASSWORD'] != $_old['PASSWORD']) {
  130. $params = array(
  131. 'USER' => $user['uid'],
  132. 'DB' => $_new['DB'],
  133. 'PASSWORD' => $_new['PASSWORD']
  134. );
  135. $result = Vesta::execute(Vesta::V_CHANGE_DB_PASSWORD, $params);
  136. if (!$result['status']) {
  137. $this->errors[] = array($result['error_code'] => $result['error_message']);
  138. }
  139. }
  140. return $this->reply($result['status'], $result['data']);
  141. }
  142. public function massiveSuspendExecute(Request $request)
  143. {
  144. $user = $this->getLoggedUser();
  145. $_entities = $request->getParameter('entities');
  146. foreach($_entities as $entity){
  147. $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, array('USER' => $user['uid'], $entity['DB']));
  148. }
  149. return $this->reply($result['status'], $result['data']);
  150. }
  151. public function massiveUnsuspendExecute(Request $request)
  152. {
  153. $user = $this->getLoggedUser();
  154. $_entities = $request->getParameter('entities');
  155. foreach($_entities as $entity){
  156. $result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, array('USER' => $user['uid'], $entity['DB']));
  157. }
  158. return $this->reply($result['status'], $result['data']);
  159. }
  160. public function massiveDeleteExecute(Request $request)
  161. {
  162. $user = $this->getLoggedUser();
  163. $_entities = $request->getParameter('entities');
  164. foreach($_entities as $entity){
  165. $result = Vesta::execute(Vesta::V_DEL_DB_BASE, array('USER' => $user['uid'], $entity['DB']));
  166. }
  167. return $this->reply($result['status'], $result['data']);
  168. }
  169. }