Exemple #1
0
 /**
  * Read item
  *
  * @param   object  $data  Primary keys and $language
  *
  * @return  array
  */
 public function readItem($data)
 {
     // We are setting the operation of the webservice to Read
     $this->setOperation('read');
     $dataGet = $this->webservice->options->get('dataGet', array());
     $primaryKeysFromFields = RApiHalHelper::getFieldsArray($this->webservice->configuration->operations->read->item, true);
     // If there are no primary keys defined we will use id field as default
     if (empty($primaryKeysFromFields)) {
         $primaryKeysFromFields['id'] = array('transform' => 'int');
     }
     foreach ($primaryKeysFromFields as $primaryKey => $primaryKeyField) {
         $keyData = '';
         if (isset($data->{$primaryKey}) && $data->{$primaryKey} != '') {
             $keyData = $data->{$primaryKey};
         }
         $dataGet->{$primaryKey} = $this->webservice->transformField($primaryKeyField['transform'], $keyData, false);
     }
     // Handle different language switch
     $this->setLanguage((string) (isset($data->language) ? $data->language : ''));
     $this->webservice->options->set('dataGet', $dataGet);
     $this->webservice->options->set('task', '');
     $this->webservice->options->set('filterOutResourcesGroups', array('_links', '_messages'));
     $this->webservice->execute();
     $arr = $this->webservice->hal->toArray();
     $outputResources = RApiSoapHelper::getOutputResources($this->webservice->configuration->operations->read->item, '', true);
     $response = RApiSoapHelper::selectListResources($outputResources, array($arr));
     $final = new stdClass();
     $final->item = empty($response) ? array() : $response[0];
     $match = true;
     if (RApiHalHelper::isAttributeTrue($this->webservice->configuration->operations->read->item, 'enforcePKs', true)) {
         foreach ($primaryKeysFromFields as $primaryKey => $primaryKeyField) {
             if ($dataGet->{$primaryKey} != $final->item->{$primaryKey}) {
                 $match = false;
             }
         }
     }
     if (!$match) {
         $final = array();
     }
     if (!count((array) $final->item)) {
         $final = array();
     }
     return $final;
 }