website_alias.inc.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <?php
  2. /**
  3. * Website alias management
  4. *
  5. * @package siteadm
  6. */
  7. class website_alias_manager extends db_object_manager
  8. {
  9. static protected $name = "website_alias";
  10. }
  11. /**
  12. * Website alias
  13. *
  14. * @package siteadm
  15. */
  16. class website_alias extends db_object
  17. {
  18. static protected $_name = "website_alias";
  19. static protected $_db_table = "website_alias";
  20. static public $_f = array
  21. (
  22. "domain_id" => array("type"=>"object", "otype"=>"domain"),
  23. "alias_name" => array("type"=>"string", "nonempty"=>true),
  24. "website_id" => array("type"=>"object", "otype"=>"website"),
  25. "website_redirect" => array("type"=>"boolean", "nonempty"=>true),
  26. "redirect_url" => array("type"=>"string"),
  27. );
  28. /**
  29. * @see db_object::__toString()
  30. */
  31. function __toString()
  32. {
  33. if ($domain=$this->domain())
  34. return $this->alias_name.".".$domain->name;
  35. else
  36. return "";
  37. }
  38. /**
  39. * @see db_object::url()
  40. */
  41. function url()
  42. {
  43. if ($this->id)
  44. return "website.php?domain_id=$this->domain_id&alias_id=$this->id";
  45. else
  46. return "website.php?domain_id=$this->domain_id&alias_add";
  47. }
  48. // ACCESS
  49. function alias()
  50. {
  51. return website()->get($this->website_id);
  52. }
  53. function alias_url()
  54. {
  55. if ($website=$this->website())
  56. {
  57. return (string)$website;
  58. }
  59. else
  60. {
  61. return (string)$this->website_url;
  62. }
  63. }
  64. function domain()
  65. {
  66. return domain()->get($this->domain_id);
  67. }
  68. function account()
  69. {
  70. if ($domain=$this->domain())
  71. return $domain->account();
  72. else
  73. return account_common();
  74. }
  75. // PERM
  76. static public function insert_perm()
  77. {
  78. // Admin
  79. if (login()->perm("admin"))
  80. {
  81. return "admin";
  82. }
  83. // Special account access
  84. elseif (login()->perm("manager"))
  85. {
  86. return "domain_manager";
  87. }
  88. // Domain User
  89. elseif (login()->id)
  90. {
  91. return "domain_user";
  92. }
  93. else
  94. {
  95. return false;
  96. }
  97. }
  98. /**
  99. * @see db_object::update_perm()
  100. */
  101. public function update_perm()
  102. {
  103. // Admin
  104. if (login()->perm("admin"))
  105. {
  106. return "admin";
  107. }
  108. // Special account access
  109. elseif ($account=$this->account())
  110. {
  111. if ($this->account_id == login()->id)
  112. return "user";
  113. elseif ($account->manager_id == login()->id)
  114. return "manager";
  115. else
  116. return false;
  117. }
  118. // Domain Manager
  119. elseif (($domain=$this->domain()) && ($account=$domain->account()) && $account->manager_id == login()->id)
  120. {
  121. return "domain_manager";
  122. }
  123. // Domain User
  124. elseif (($domain=$this->domain()) && $domain->account_id == login()->id)
  125. {
  126. return "domain_user";
  127. }
  128. else
  129. {
  130. return false;
  131. }
  132. }
  133. // DB
  134. /**
  135. * @see db_object::insert()
  136. */
  137. function insert($infos=array())
  138. {
  139. if (!isset($infos["alias_name"]))
  140. return false;
  141. if ((!isset($infos["domain_id"]) || !(domain($infos["domain_id"]))) && $this->insert_perm() != "admin")
  142. return false;
  143. if (!isset($infos["website_redirect"]))
  144. $infos["website_redirect"] = "0";
  145. return db_object::insert($infos);
  146. }
  147. /**
  148. * @see db_object::update()
  149. */
  150. function update($infos=array())
  151. {
  152. if (!($perm=$this->update_perm()))
  153. return false;
  154. if (isset($infos["account_id"]) && $perm != "admin" && ($perm != "manager" || !isset($infos["account_id"]) || !($account=account($infos["account_id"])) || $account->manager_id != login()->id) && ($infos["account_id"] != login()->id))
  155. {
  156. unset($infos["account_id"]);
  157. }
  158. if (isset($infos["domain_id"]))
  159. unset($infos["domain_id"]);
  160. if (isset($infos["alias_name"]))
  161. unset($infos["alias_name"]);
  162. return db_object::update($infos);
  163. }
  164. }
  165. ?>