PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.0
Independent Analytics – WordPress Analytics Plugin v2.15.0
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / mlocati / ip-lib / src / Address / AssignedRange.php
independent-analytics / vendor / mlocati / ip-lib / src / Address Last commit date
AddressInterface.php 4 days ago AssignedRange.php 1 year ago IPv4.php 4 days ago IPv6.php 4 days ago Type.php 4 days ago
AssignedRange.php
131 lines
1 <?php
2
3 namespace IAWPSCOPED\IPLib\Address;
4
5 use IAWPSCOPED\IPLib\Range\RangeInterface;
6 /**
7 * Represents an IP address range with an assigned range type.
8 *
9 * @since 1.5.0
10 * @internal
11 */
12 class AssignedRange
13 {
14 /**
15 * The range definition.
16 *
17 * @var \IPLib\Range\RangeInterface
18 */
19 protected $range;
20 /**
21 * The range type.
22 *
23 * @var int one of the \IPLib\Range\Type::T_ constants
24 */
25 protected $type;
26 /**
27 * The list of exceptions for this range type.
28 *
29 * @var \IPLib\Address\AssignedRange[]
30 */
31 protected $exceptions;
32 /**
33 * Initialize the instance.
34 *
35 * @param \IPLib\Range\RangeInterface $range the range definition
36 * @param int $type The range type (one of the \IPLib\Range\Type::T_ constants)
37 * @param \IPLib\Address\AssignedRange[] $exceptions the list of exceptions for this range type
38 */
39 public function __construct(RangeInterface $range, $type, array $exceptions = array())
40 {
41 $this->range = $range;
42 $this->type = $type;
43 $this->exceptions = $exceptions;
44 }
45 /**
46 * Get the range definition.
47 *
48 * @return \IPLib\Range\RangeInterface
49 */
50 public function getRange()
51 {
52 return $this->range;
53 }
54 /**
55 * Get the range type.
56 *
57 * @return int one of the \IPLib\Range\Type::T_ constants
58 */
59 public function getType()
60 {
61 return $this->type;
62 }
63 /**
64 * Get the list of exceptions for this range type.
65 *
66 * @return \IPLib\Address\AssignedRange[]
67 */
68 public function getExceptions()
69 {
70 return $this->exceptions;
71 }
72 /**
73 * Get the assigned type for a specific address.
74 *
75 * @param \IPLib\Address\AddressInterface $address
76 *
77 * @return int|null return NULL of the address is outside this address; a \IPLib\Range\Type::T_ constant otherwise
78 */
79 public function getAddressType(AddressInterface $address)
80 {
81 $result = null;
82 if ($this->range->contains($address)) {
83 foreach ($this->exceptions as $exception) {
84 $result = $exception->getAddressType($address);
85 if ($result !== null) {
86 break;
87 }
88 }
89 if ($result === null) {
90 $result = $this->type;
91 }
92 }
93 return $result;
94 }
95 /**
96 * Get the assigned type for a specific address range.
97 *
98 * @param \IPLib\Range\RangeInterface $range
99 *
100 * @return int|false|null return NULL of the range is fully outside this range; false if it's partly crosses this range (or it contains mixed types); a \IPLib\Range\Type::T_ constant otherwise
101 */
102 public function getRangeType(RangeInterface $range)
103 {
104 $myStart = $this->range->getComparableStartString();
105 $rangeEnd = $range->getComparableEndString();
106 if ($myStart > $rangeEnd) {
107 $result = null;
108 } else {
109 $myEnd = $this->range->getComparableEndString();
110 $rangeStart = $range->getComparableStartString();
111 if ($myEnd < $rangeStart) {
112 $result = null;
113 } elseif ($rangeStart < $myStart || $rangeEnd > $myEnd) {
114 $result = \false;
115 } else {
116 $result = null;
117 foreach ($this->exceptions as $exception) {
118 $result = $exception->getRangeType($range);
119 if ($result !== null) {
120 break;
121 }
122 }
123 if ($result === null) {
124 $result = $this->getType();
125 }
126 }
127 }
128 return $result;
129 }
130 }
131