function testJSON2Obj()
 {
     $val = '{"Joe":"Bloggs","Tom":"Jones","My":{"Complicated":"Structure"}}';
     $obj = Convert::json2obj($val);
     $this->assertEquals('Bloggs', $obj->Joe);
     $this->assertEquals('Jones', $obj->Tom);
     $this->assertEquals('Structure', $obj->My->Complicated);
 }
 /**
  * Child classes should call $list = parent::get();
  */
 public static function get()
 {
     $list = parent::get();
     $result = self::service()->request('/RestDataObject');
     if ($result->getStatusCode() == 200) {
         $body = Convert::json2obj($result->getBody());
         if (isset($body->items)) {
             foreach ($body->items as $item) {
                 $list->push(new ExternalRestDataObject((array) $item));
             }
         }
     }
     return $list;
 }
 /**
  * @param $id
  * @return array
  */
 public static function vimeo_video_details($id)
 {
     $url = sprintf('http://vimeo.com/api/v2/video/%s.json', $id);
     $ch = curl_init();
     curl_setopt_array($ch, array(CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_TIMEOUT => 30));
     $response = Convert::json2obj(curl_exec($ch));
     curl_close($ch);
     $iTime = $response[0]->duration;
     $iHours = intval($iTime / (60 * 60));
     $iMinutes = intval(($iTime - $iHours * 60 * 60) / 60);
     $iSeconds = $iTime - $iHours * 60 * 60 - $iMinutes * 60;
     if ($response) {
         $return = array('title' => $response[0]->title, 'duration' => sprintf("%02d", $iHours) . ':' . sprintf("%02d", $iMinutes) . ':' . sprintf("%02d", $iSeconds));
         return $return;
     }
 }
 public static function youtube_video_details($id)
 {
     $url = 'https://www.googleapis.com/youtube/v3/videos?';
     $url .= sprintf('key=%s', Config::inst()->get('YoutubeVideo', 'youtube_api_key'));
     $url .= sprintf('&id=%s', $id);
     $url .= '&fields=items(snippet(title),contentDetails(duration))';
     $url .= '&part=snippet,contentDetails';
     $ch = curl_init();
     curl_setopt_array($ch, array(CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_BINARYTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 5));
     $response = Convert::json2obj(curl_exec($ch));
     if ($response) {
         $snippet = $response->items[0]->snippet;
         $contentDetails = $response->items[0]->contentDetails;
         curl_close($ch);
         $arrDuration = preg_split('/[^0-9]/', $contentDetails->duration);
         //PT1M26S
         $iHours = isset($arrDuration[2]) ? $arrDuration[2] : 0;
         $iMinutes = isset($arrDuration[3]) ? $arrDuration[3] : 0;
         $iSeconds = isset($arrDuration[4]) ? $arrDuration[4] : 0;
         $return = array('title' => $snippet->title, 'duration' => sprintf("%02d", $iHours) . ':' . sprintf("%02d", $iMinutes) . ':' . sprintf("%02d", $iSeconds));
         return $return;
     }
 }
 /**
  * @param QueuedJobDescriptor $jobDescriptor
  * @param QueuedJob $job
  */
 protected function copyDescriptorToJob($jobDescriptor, $job)
 {
     $jobData = null;
     $messages = null;
     // switching to php's serialize methods... not sure why this wasn't done from the start!
     $jobData = @unserialize($jobDescriptor->SavedJobData);
     $messages = @unserialize($jobDescriptor->SavedJobMessages);
     if (!$jobData) {
         // SS's convert:: function doesn't do this detection for us!!
         if (function_exists('json_decode')) {
             $jobData = json_decode($jobDescriptor->SavedJobData);
             $messages = json_decode($jobDescriptor->SavedJobMessages);
         } else {
             $jobData = Convert::json2obj($jobDescriptor->SavedJobData);
             $messages = Convert::json2obj($jobDescriptor->SavedJobMessages);
         }
     }
     $job->setJobData($jobDescriptor->TotalSteps, $jobDescriptor->StepsProcessed, $jobDescriptor->JobStatus == QueuedJob::STATUS_COMPLETE, $jobData, $messages);
 }
 public function testHTTPAcceptAndContentType()
 {
     $comment1 = $this->objFromFixture('RestfulServerTest_Comment', 'comment1');
     $url = "/api/v1/RestfulServerTest_Comment/" . $comment1->ID;
     $headers = array('Accept' => 'application/json');
     $response = Director::test($url, null, null, 'GET', null, $headers);
     $this->assertEquals($response->getStatusCode(), 200);
     // Success
     $obj = Convert::json2obj($response->getBody());
     $this->assertEquals($obj->ID, $comment1->ID);
     $this->assertEquals($response->getHeader('Content-Type'), 'application/json');
 }
 function validate($value)
 {
     if (!$value) {
         return true;
     }
     $this->params[$this->field->getName()] = $value;
     $query = http_build_query($this->params);
     $url = $this->method == 'GET' ? $this->url . '?' . $query : $this->url;
     // If the url is a relative one, use Director::test() to get the response
     if (Director::is_relative_url($url)) {
         $url = Director::makeRelative($url);
         $postVars = $this->method == 'POST' ? $this->params : null;
         $response = Director::test($url, $postVars = null, Controller::curr()->getSession(), $this->method);
         $result = $response->getStatusCode() == 200 ? $response->getBody() : 0;
         // Otherwise CURL to remote url
     } else {
         $ch = curl_init();
         if ($this->method == 'POST') {
             curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
         }
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($ch, CURLOPT_USERAGENT, 'ZENVALIDATOR');
         $result = curl_exec($ch);
         curl_close($ch);
     }
     // validate result
     if ($result == '1' || $result == 'true') {
         if ($this->validator == 'reverse') {
             return false;
         } else {
             return true;
         }
     }
     $isJson = is_string($result) && (is_object(json_decode($result)) || is_array(json_decode($result))) ? true : false;
     if ($isJson) {
         $result = Convert::json2obj($result);
         if (isset($result->success)) {
             return true;
         } else {
             if (isset($result->message)) {
                 $this->setMessage($result->message);
             } elseif (isset($result->error)) {
                 $this->setMessage($result->error);
             }
         }
     }
     return false;
 }
 public function receiveChangeset($changes, $deletes, $rels)
 {
     Versioned::reading_stage('Stage');
     //		$changes = $changes ? Convert::json2obj($changes) : array();
     //		$deletes = $deletes ? Convert::json2obj($deletes) : array();
     //		$rels = $rels ? Convert::json2obj($rels) : array();
     if ($changes) {
         $all = array_merge($changes, $deletes, $rels);
         $obj = Convert::array2json($all);
         $obj = Convert::json2obj($obj);
         $this->processUpdateData($obj);
         return $all;
     }
     return '';
 }
 public function searchEvents()
 {
     $fields = "?fields=" . implode(',', $this->eventFields);
     $url = $this->endpoint . $this->eventsSearchPath . $fields;
     $client = new RestfulService($url, -1);
     $client = $client->request();
     $response = $client->getBody();
     $events = Convert::json2obj($response);
     return $events;
 }