Example #1
0
 public function testDataAsObjectProperties()
 {
     $this->assertFalse(isset($this->object->test2));
     $this->assertTrue(isset($this->object->test));
     $this->assertEquals('testValue', $this->object->test);
     $this->assertFalse($this->object->__isset('test2'));
     $this->assertTrue($this->object->__isset('test'));
     $this->assertEquals('testValue', $this->object->__get('test'));
     $this->object->__set('test2', 'testValue2');
     $this->assertTrue($this->object->__isset('test2'));
 }
 public function __set($name, $value)
 {
     switch ($name) {
         case "start":
             // Set start time to 23:59:59
             $dateArr = getdate($value);
             $value = mktime(23, 59, 59, $dateArr['mon'], $dateArr['mday'], $dateArr['year']);
             $this->{$name} = $value;
             break;
         case "showWithWalks":
         case "showWithSocials":
         case "showWithWeekends":
             $this->{$name} = (bool) $value;
             break;
         default:
             parent::__set($name, $value);
     }
 }
 public function __set($name, $value)
 {
     switch ($name) {
         case "name":
         case "description":
         case "bookingsInfo":
         case "clipartFilename":
         case "cost":
         case "location":
             $this->{$name} = $value;
             break;
         case "okToPublish":
         case "showNormal":
         case "showNewMember":
             $this->{$name} = (bool) $value;
             break;
         case "start":
         case "newMemberStart":
         case "end":
         case "newMemberEnd":
             if (!empty($value) && is_numeric($value)) {
                 $this->{$name} = $value;
             } else {
                 if ($value == "") {
                     $this->{$name} = null;
                 } else {
                     var_dump($name);
                     var_dump($value);
                 }
             }
             break;
         case "latLng":
             if ($value instanceof LatLng) {
                 $this->{$name} = $value;
             } else {
                 if (is_string($value)) {
                     // Is it in JSON?
                     if (substr($value, 0, 2) == "[{") {
                         $value = json_decode($value);
                         $value = $value[0];
                         $this->{$name} = new LatLng($value->lat, $value->lon);
                     } else {
                         $this->{$name} = SWG::parseLatLongTuple($this->value);
                     }
                 } else {
                     if (is_array($value)) {
                         // Convert to LatLng - deliberate fallthrough
                         if (isset($value['lat']) && isset($value['lng'])) {
                             if (is_numeric($value['lat']) && isset($value['lng']) && is_numeric($value['lng'])) {
                                 $this->{$name} = new LatLng($value['lat'], $value['lng']);
                             } else {
                                 if ($value['lat'] == "" && $value['lng'] == "") {
                                     $this->{$name} = null;
                                 }
                             }
                         }
                     } else {
                         if ($value == null) {
                             $this->{$name} = null;
                         }
                     }
                 }
             }
             break;
         case "postcode":
             // Geolocate this postcode
             // TODO: This will wipe any existing latLng...
             // Get the postcode passed in
             if (preg_match("/^([A-Z]{1,2}[0-9]{1,2}[A-Z]?[ ]?[0-9][A-Z]{2})\$/", $value)) {
                 $postcode = str_replace(" ", "", $value);
                 $curl = curl_init("http://www.uk-postcodes.com/postcode/" . $postcode . ".json");
                 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                 $res = json_decode(curl_exec($curl));
                 if (isset($res->geo)) {
                     $this->latLng = new LatLng($res->geo->lat, $res->geo->lng);
                 }
             }
             $this->postcode = $value;
             break;
         default:
             // All others - fall through to Event
             parent::__set($name, $value);
     }
 }
Example #4
0
 function __set($var, $value)
 {
     if ($var === 'thisown') {
         return swig_uscxmlNativePHP_alter_newobject($this->_cPtr, $value);
     }
     Event::__set($var, $value);
 }
 public function __set($name, $value)
 {
     switch ($name) {
         // Strings - just save them (TODO: Safety checks?)
         case "startPlaceName":
         case "endPlaceName":
             $this->{$name} = $value;
             break;
             // Integer
         // Integer
         case "headCount":
         case "distance":
             $this->{$name} = (int) $value;
             break;
             // Booleans
         // Booleans
         case "isLinear":
         case "dogFriendly":
         case "childFriendly":
         case "speedy":
         case "challenge":
             $this->{$name} = (bool) $value;
             break;
             // More specific processing
         // More specific processing
         case "distanceGrade":
             $value = strtoupper($value);
             if (empty($value)) {
                 $this->{$name} = null;
             } else {
                 if ($value == "A" || $value == "B" || $value == "C") {
                     $this->{$name} = $value;
                 } else {
                     throw new UnexpectedValueException("Distance grade must be A, B or C");
                 }
             }
             break;
         case "difficultyGrade":
             $value = (int) $value;
             if (empty($value)) {
                 $this->{$name} = null;
             } else {
                 if ($value == 1 || $value == 2 || $value == 3) {
                     $this->{$name} = $value;
                 } else {
                     throw new UnexpectedValueException("Difficulty grade must be 1, 2 or 3");
                 }
             }
             break;
         case "miles":
             $value = (double) $value;
             if ($value >= 0) {
                 $this->{$name} = $value;
                 $this->distanceGrade = $this->getDistanceGrade($value);
             } else {
                 throw new UnexpectedValueException("Distance must be positive");
             }
             // TODO: Validate >0 when saving
             break;
             // Grid references - start with two letters, then an even number of digits - at least 6
         // Grid references - start with two letters, then an even number of digits - at least 6
         case "startGridRef":
         case "endGridRef":
             $value = strtoupper(str_replace(" ", "", $value));
             if (empty($value)) {
                 $this->{$name} = null;
                 if ($name == "startGridRef") {
                     $this->startLatLng = null;
                 } else {
                     $this->endLatLng = null;
                 }
             } else {
                 if (preg_match("/[A-Z][A-Z]([0-9][0-9]){3,}/", $value)) {
                     $this->{$name} = $value;
                     // Also set the lat/lng
                     $osRef = getOSRefFromSixFigureReference($value);
                     $latLng = $osRef->toLatLng();
                     $latLng->OSGB36ToWGS84();
                     if ($name == "startGridRef") {
                         $this->startLatLng = $latLng;
                     } else {
                         $this->endLatLng = $latLng;
                     }
                 } else {
                     throw new UnexpectedValueException("Grid references must be at least 6-figures, with the grid square letters before (e.g. SK123456)");
                 }
             }
             break;
             // Connected objects
         // Connected objects
         case "leader":
         case "leaderId":
             if (empty($value)) {
                 $this->leader = null;
                 $this->leaderId = null;
             } else {
                 if ($value instanceof Leader) {
                     $this->leader = $value;
                     $this->leaderId = $value->id;
                 } else {
                     if (is_int($value) || ctype_digit($value)) {
                         $this->leaderId = (int) $value;
                         $this->leader = null;
                         // Will be loaded when needed
                     } else {
                         throw new UnexpectedValueException("Leader or Leader ID must be a Leader or an integer");
                     }
                 }
             }
             break;
         case "backmarker":
         case "backmarkerId":
             if (empty($value)) {
                 $this->backmarker = null;
                 $this->backmarkerId = null;
             }
             if ($value instanceof Leader) {
                 $this->backmarker = $value;
                 $this->backmarkerId = $value->id;
             } else {
                 if (is_int($value) || ctype_digit($value)) {
                     $this->backmarkerId = (int) $value;
                     $this->backmarker = null;
                     // Will be loaded when needed
                 } else {
                     throw new UnexpectedValueException("Backmarker or backmarker ID must be a Leader or an integer");
                 }
             }
             break;
         case "meetPoint":
         case "meetPointId":
             if (empty($value)) {
                 $this->meetPoint = null;
                 $this->meetPointId = null;
             } elseif ($value instanceof WalkMeetingPoint) {
                 $this->meetPoint = $value;
                 $this->meetPointId = $value->id;
             } else {
                 if (is_int($value) || ctype_digit($value)) {
                     $this->meetPointId = (int) $value;
                     $this->meetPoint = null;
                 } else {
                     throw new UnexpectedValueException("Meetpoint or MeetPointID must be a WalkMeetingPoint or an integer");
                 }
             }
             if (isset($this->meetPoint) && !empty($this->meetPlaceTime)) {
                 $this->meetPoint->setExtra($this->meetPlaceTime);
             }
             break;
         case "walkid":
             $this->walkid = (int) $value;
             break;
         case "meetPlaceTime":
             $this->meetPlaceTime = $value;
             if (isset($this->meetPoint)) {
                 $this->meetPoint->setExtra($value);
             }
             break;
             // Checks TODO
         // Checks TODO
         case "location":
         case "suggestedBy":
         case "status":
         case "specialTBC":
             $this->{$name} = $value;
             break;
         case "routeVisibility":
             $this->{$name} = (int) $value;
             break;
         default:
             // All others - fall through to Event
             parent::__set($name, $value);
     }
 }
 public function __set($name, $value)
 {
     switch ($name) {
         case "name":
         case "placeName":
         case "area":
         case "description":
         case "url":
         case "contact":
         case "bookingsOpen":
         case "cost":
             $this->{$name} = $value;
             break;
         case "places":
             $this->{$name} = (int) $value;
             break;
         case "okToPublish":
         case "challenge":
         case "swg":
             $this->{$name} = (bool) $value;
             break;
         case "start":
             if (!empty($value)) {
                 $this->{$name} = $value;
                 // Calculate the payment due date.
                 // Payment is due by the end of the month before the date 2 weeks before the weekend
                 // Looks like "last day of -1 month" is only supported by PHP 5.3, so let's do this the old-fashioned way
                 $threeWeeksBefore = $value - 86400 * 14;
                 // Looks like "last day of -1 month" is only supported by PHP 5.3, so let's do this the old-fashioned way
                 $this->paymentDue = strtotime(strftime("%Y-%m-01", $threeWeeksBefore)) - 86400;
             } else {
                 $this->{$name} = null;
                 $this->paymentDue = null;
             }
             break;
         case "endDate":
             if (!empty($value)) {
                 $this->{$name} = $value;
             } else {
                 $this->{$name} = null;
             }
             break;
         case "latLng":
             if ($value instanceof LatLng) {
                 $this->{$name} = $value;
             } else {
                 if (is_string($value)) {
                     // Is it in JSON?
                     if (substr($value, 0, 2) == "[{") {
                         $value = json_decode($value);
                         $value = $value[0];
                         $this->{$name} = new LatLng($value->lat, $value->lon);
                     } else {
                         $this->{$name} = SWG::parseLatLongTuple($this->value);
                     }
                 } else {
                     if (is_array($value)) {
                         // Convert to LatLng
                         if (isset($value['lat']) && isset($value['lng'])) {
                             if (is_numeric($value['lat']) && is_numeric($value['lng'])) {
                                 $this->{$name} = new LatLng($value['lat'], $value['lng']);
                             } else {
                                 $this->{$name} = null;
                             }
                         }
                     }
                 }
             }
             break;
         default:
             // All others - fall through to Event
             parent::__set($name, $value);
     }
 }