- static private $v_values = array('public' => array('public'),
- 'ax' => array('ax', 'public'),
- 'private' => array('private', 'ax', 'public'));
+ static private $v_values = array(self::VIS_PUBLIC => array(self::VIS_PUBLIC),
+ self::VIS_AX => array(self::VIS_AX, self::VIS_PUBLIC),
+ self::VIS_PRIVATE => array(self::VIS_PRIVATE, self::VIS_AX, self::VIS_PUBLIC));
+
+ const VIS_PUBLIC = 'public';
+ const VIS_AX = 'ax';
+ const VIS_PRIVATE = 'private';
+
+ private $level;
+
+ public function __construct($level = null)
+ {
+ $this->setLevel($level);
+ }
+
+ public function setLevel($level = self::VIS_PUBLIC)
+ {
+ if ($level != null && $level != self::VIS_PRIVATE && $level != self::VIS_AX && $level != self::VIS_PUBLIC) {
+ Platal::page()->kill("Invalid visibility: " . $level);
+ }
+
+ if (!S::logged()) {
+ $level = self::VIS_PUBLIC;
+ } else if ($level == null) {
+ $level = self::VIS_PRIVATE;
+ }
+
+ if ($this->level == null || $this->level == self::VIS_PRIVATE) {
+ $this->level = $level;
+ } else if ($this->level == self::VIS_AX && $level == self::VIS_PRIVATE) {
+ return;
+ } else {
+ $this->level = self::VIS_PUBLIC;
+ }
+ }
+
+ public function level()
+ {
+ if ($this->level == null) {
+ return self::VIS_PUBLIC;
+ } else {
+ return $this->level;
+ }
+ }
+
+ public function levels()
+ {
+ return self::$v_values[$this->level()];
+ }