PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.6
Independent Analytics – WordPress Analytics Plugin v2.14.6
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 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 / Range / AbstractRange.php
independent-analytics / vendor / mlocati / ip-lib / src / Range Last commit date
AbstractRange.php 1 year ago Pattern.php 1 year ago RangeInterface.php 1 year ago Single.php 1 year ago Subnet.php 1 year ago Type.php 1 year ago
AbstractRange.php
117 lines
1 <?php
2
3 namespace IAWPSCOPED\IPLib\Range;
4
5 use IAWPSCOPED\IPLib\Address\AddressInterface;
6 use IAWPSCOPED\IPLib\Address\IPv4;
7 use IAWPSCOPED\IPLib\Address\IPv6;
8 use IAWPSCOPED\IPLib\Address\Type as AddressType;
9 use IAWPSCOPED\IPLib\Factory;
10 /**
11 * Base class for range classes.
12 * @internal
13 */
14 abstract class AbstractRange implements RangeInterface
15 {
16 /**
17 * {@inheritdoc}
18 *
19 * @see \IPLib\Range\RangeInterface::getRangeType()
20 */
21 public function getRangeType()
22 {
23 if ($this->rangeType === null) {
24 $addressType = $this->getAddressType();
25 if ($addressType === AddressType::T_IPv6 && Subnet::get6to4()->containsRange($this)) {
26 $this->rangeType = Factory::getRangeFromBoundaries($this->fromAddress->toIPv4(), $this->toAddress->toIPv4())->getRangeType();
27 } else {
28 switch ($addressType) {
29 case AddressType::T_IPv4:
30 $defaultType = IPv4::getDefaultReservedRangeType();
31 $reservedRanges = IPv4::getReservedRanges();
32 break;
33 case AddressType::T_IPv6:
34 $defaultType = IPv6::getDefaultReservedRangeType();
35 $reservedRanges = IPv6::getReservedRanges();
36 break;
37 default:
38 throw new \Exception('@todo');
39 }
40 $rangeType = null;
41 foreach ($reservedRanges as $reservedRange) {
42 $rangeType = $reservedRange->getRangeType($this);
43 if ($rangeType !== null) {
44 break;
45 }
46 }
47 $this->rangeType = $rangeType === null ? $defaultType : $rangeType;
48 }
49 }
50 return $this->rangeType === \false ? null : $this->rangeType;
51 }
52 /**
53 * {@inheritdoc}
54 *
55 * @see \IPLib\Range\RangeInterface::getAddressAtOffset()
56 */
57 public function getAddressAtOffset($n)
58 {
59 if (!\is_int($n)) {
60 return null;
61 }
62 $address = null;
63 if ($n >= 0) {
64 $start = Factory::parseAddressString($this->getComparableStartString());
65 $address = $start->getAddressAtOffset($n);
66 } else {
67 $end = Factory::parseAddressString($this->getComparableEndString());
68 $address = $end->getAddressAtOffset($n + 1);
69 }
70 if ($address === null) {
71 return null;
72 }
73 return $this->contains($address) ? $address : null;
74 }
75 /**
76 * {@inheritdoc}
77 *
78 * @see \IPLib\Range\RangeInterface::contains()
79 */
80 public function contains(AddressInterface $address)
81 {
82 $result = \false;
83 if ($address->getAddressType() === $this->getAddressType()) {
84 $cmp = $address->getComparableString();
85 $from = $this->getComparableStartString();
86 if ($cmp >= $from) {
87 $to = $this->getComparableEndString();
88 if ($cmp <= $to) {
89 $result = \true;
90 }
91 }
92 }
93 return $result;
94 }
95 /**
96 * {@inheritdoc}
97 *
98 * @see \IPLib\Range\RangeInterface::containsRange()
99 */
100 public function containsRange(RangeInterface $range)
101 {
102 $result = \false;
103 if ($range->getAddressType() === $this->getAddressType()) {
104 $myStart = $this->getComparableStartString();
105 $itsStart = $range->getComparableStartString();
106 if ($itsStart >= $myStart) {
107 $myEnd = $this->getComparableEndString();
108 $itsEnd = $range->getComparableEndString();
109 if ($itsEnd <= $myEnd) {
110 $result = \true;
111 }
112 }
113 }
114 return $result;
115 }
116 }
117