Package.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. <?php
  2. namespace MGModule\DNSManager2\models\custom\package;
  3. use MGModule\DNSManager2 as main;
  4. use \MGModule\DNSManager2\models\custom\package\setting\PackageSettingEnum;
  5. use MGModule\DNSManager2\mgLibs\MySQL as mysql;
  6. /**
  7. * Log class
  8. *
  9. * @Table(name=package)
  10. */
  11. class Package extends main\mgLibs\models\orm
  12. {
  13. /**
  14. * ID field
  15. *
  16. * @Column(id)
  17. * @var int
  18. */
  19. public $id;
  20. /**
  21. *
  22. * @Column(varchar)
  23. * @var string
  24. */
  25. public $name;
  26. /**
  27. *
  28. * @Column(int=11, refrence=models\custom\set\Set::id)
  29. * @var int
  30. */
  31. public $defaultset;
  32. /**
  33. *
  34. * @Column(varchar)
  35. * @var string
  36. */
  37. public $status;
  38. public function setSetting($key, $value) {
  39. if(!$setting = $this->getSettings($key)) {
  40. $setting = new setting\PackageSetting();
  41. $setting->packageid = $this->id;
  42. $setting->key = $key;
  43. }
  44. $setting->value = $value;
  45. $setting->save();
  46. return $setting;
  47. }
  48. public function getSettings($key = false) {
  49. return $key === false?setting\Repository::factory()->byPackageID($this->id)->getWithKeys()
  50. : setting\PackageSetting::factory()->byPackageAndKey($this->id, $key);
  51. }
  52. public function getItems($type = false, $relid = false)
  53. {
  54. $rep = item\Repository::factory()->byPackageID($this->id);
  55. if($type === false)
  56. {
  57. $out = array();
  58. foreach($rep->get() as $item)
  59. {
  60. $out[$item->type][] = $item;
  61. }
  62. return $out;
  63. }
  64. elseif($relid === false)
  65. {
  66. return $rep->byType($type)->get();
  67. }
  68. else
  69. {
  70. return $rep->byType($type)->byRelID($relid)->one();
  71. }
  72. }
  73. public function addItem($type, $relid, $limit) {
  74. if(!$item = $this->getItems($type, $relid)) {
  75. $item = new item\PackageItem();
  76. $item->packageid = $this->id;
  77. $item->type = $type;
  78. $item->relid = $relid;
  79. }
  80. $item->limit = $limit;
  81. $item->save();
  82. return $item;
  83. }
  84. public function removeItem($type, $relid) {
  85. if($item = $this->getItems($type, $relid)) {
  86. $item->delete();
  87. }
  88. }
  89. /** zwraca PackageServer, które ma metodę getServer */
  90. public function getServers($serverid = false) {
  91. $rep = server\Repository::factory()->byPackageID($this->id);
  92. if($serverid === false) {
  93. return $rep->get();
  94. } else {
  95. return $rep->byServerID($serverid)->one();
  96. }
  97. }
  98. public function addServer($serverid, $isMaster = false) {
  99. if(!$ps = $this->getServers($serverid)) {
  100. $ps = new server\PackageServer();
  101. $ps->packageid = $this->id;
  102. $ps->serverid = $serverid;
  103. $ps->setMaster($isMaster);
  104. $ps->save();
  105. } else {
  106. $ps->setMaster($isMaster);
  107. $ps->save();
  108. }
  109. return $ps;
  110. }
  111. public function removeServer($serverid) {
  112. if($ps = $this->getServers($serverid)) {
  113. $ps->delete();
  114. }
  115. }
  116. public function getSets($setid = false) {
  117. $rep = set\Repository::factory()->byPackageID($this->id);
  118. if($setid === false) {
  119. return $rep->get();
  120. } else {
  121. return $rep->bySetID($setid)->one();
  122. }
  123. }
  124. public function getAdminSets( )
  125. {
  126. $setConfig = setting\Repository::factory()->byPackageID( $this->id )->byKey( PackageSettingEnum::DNS_RECORD_SET )->one();
  127. return unserialize( $setConfig->value );
  128. }
  129. public function addSet($setid) {
  130. if(!$ps = $this->getSets($setid)) {
  131. $ps = new set\PackageSet();
  132. $ps->packageid = $this->id;
  133. $ps->setid = $setid;
  134. $ps->save();
  135. }
  136. return $ps;
  137. }
  138. public function removeSet($setid) {
  139. if($ps = $this->getSets($setid)) {
  140. $ps->delete();
  141. }
  142. }
  143. public function setDefaultSet($setid) {
  144. $this->defaultset = $setid;
  145. $this->save();
  146. return $this;
  147. }
  148. public function getDefaultSet()
  149. {
  150. try
  151. {
  152. $set = $this->defaultset > 0 ? new main\models\custom\set\Set($this->defaultset) : false;
  153. }
  154. catch(\Exception $ex)
  155. {
  156. main\mgLibs\error\register::register($ex);
  157. }
  158. return $set;
  159. }
  160. public function delete() {
  161. mysql\query::startTransaction();
  162. item\Repository::factory()->byPackageID($this->id)->delete();
  163. server\Repository::factory()->byPackageID($this->id)->delete();
  164. set\Repository::factory()->byPackageID($this->id)->delete();
  165. setting\Repository::factory()->byPackageID($this->id)->delete();
  166. parent::delete();
  167. mysql\query::endTransaction();
  168. }
  169. public function enable() {
  170. $this->status = 1;
  171. $this->save();
  172. }
  173. public function disable() {
  174. $this->status = 0;
  175. $this->save();
  176. }
  177. public function isEnabled() {
  178. return $this->status == 1;
  179. }
  180. /**
  181. *
  182. * @return main\models\custom\server\Server
  183. */
  184. public function getFirstActiveServer() {
  185. foreach($this->getServers() as $server) {
  186. $server = $server->getServer();
  187. if($server->isEnabled()) {
  188. return $server;
  189. }
  190. }
  191. return false;
  192. }
  193. public function getRegistrarDomain($packageId=null, $tld=null)
  194. {
  195. $regDomain = registrar\Repository::factory();
  196. if($packageId)
  197. {
  198. $regDomain->byPackageID($packageId);
  199. }
  200. if($tld)
  201. {
  202. $regDomain->byTld($tld);
  203. }
  204. return $regDomain->get();
  205. }
  206. public function addRegistrarDomain($tld)
  207. {
  208. if(!$this->getRegistrarDomain($this->id, $tld))
  209. {
  210. $regDomain = new registrar\PackageRegistrar();
  211. $regDomain->packageid = $this->id;
  212. $regDomain->tld = $tld;
  213. $itemId = $this->getItems(item\PackageItemTypeEnum::DOMAIN, $tld);
  214. $regDomain->itemid = $itemId->id;
  215. $regDomain->save();
  216. }
  217. }
  218. public function removeRegistrarDomain($tld)
  219. {
  220. $regDomain = $this->getRegistrarDomain($this->id, $tld);
  221. if(!empty($regDomain))
  222. {
  223. foreach ($regDomain as $value)
  224. {
  225. $value->delete();
  226. }
  227. }
  228. }
  229. }