Ejemplo n.º 1
0
 /**
  * Method to transform a type to publish it in the WSDL file
  *
  * @param   array             $field             Field definition.
  * @param   SimpleXMLElement  &$sequence         XML with the fields sequence
  * @param   SimpleXMLElement  &$typeSchema       XML of the typeSchema in case new derived types need to be added
  * @param   string            $elementName       Parent element name to add the new derived types with unique names
  * @param   boolean           $validateOptional  Optional parameter to validate if the field is optional.  Otherwise it's always set as required
  * @param   array             $extraFields       Array of extra fields to process - in case of array types
  * @param   SimpleXMLElmenet  $complexArrays     Complex arrays definitions
  *
  * @return void
  */
 public function wsdlField($field, &$sequence, &$typeSchema, $elementName, $validateOptional = false, $extraFields = array(), $complexArrays = null)
 {
     if (!isset($this->element)) {
         $this->element = $sequence->addChild('element', null, 'http://www.w3.org/2001/XMLSchema');
     }
     if (!isset($this->element['minOccurs'])) {
         $this->element->addAttribute('minOccurs', $validateOptional && RApiHalHelper::isAttributeTrue($field, 'isRequiredField') || !$validateOptional ? '1' : '0');
     }
     $this->element->addAttribute('maxOccurs', 'unbounded');
     if (!isset($this->element['name']) && isset($field['name'])) {
         $this->element->addAttribute('name', $field['name']);
     }
     $this->element->addAttribute('type', 'tns:' . $elementName . '_' . $field['name']);
     if (!empty($extraFields)) {
         RApiSoapHelper::addElementFields($extraFields, $typeSchema, $elementName . '_' . $field['name'], true, '', $complexArrays);
     }
 }
Ejemplo n.º 2
0
Archivo: base.php Proyecto: 810/redCORE
 /**
  * Method to transform a type to publish it in the WSDL file
  *
  * @param   array             $field             Field definition.
  * @param   SimpleXMLElement  &$sequence         XML with the fields sequence
  * @param   SimpleXMLElement  &$typeSchema       XML of the typeSchema in case new derived types need to be added
  * @param   string            $elementName       Parent element name to add the new derived types with unique names
  * @param   boolean           $validateOptional  Optional parameter to validate if the field is optional.  Otherwise it's always set as required
  * @param   array             $extraFields       Array of extra fields to process - in case of array types
  *
  * @return void
  */
 public function wsdlField($field, &$sequence, &$typeSchema, $elementName, $validateOptional = false, $extraFields = array())
 {
     if (!isset($this->element)) {
         $this->element = $sequence->addChild('element', null, 'http://www.w3.org/2001/XMLSchema');
     }
     if (!isset($this->element['minOccurs'])) {
         $this->element->addAttribute('minOccurs', $validateOptional && RApiHalHelper::isAttributeTrue($field, 'isRequiredField') || !$validateOptional ? '1' : '0');
     }
     if (!isset($this->element['maxOccurs'])) {
         $this->element->addAttribute('maxOccurs', RApiHalHelper::attributeToString($field, 'maxOccurs', 1));
     }
     if (!isset($this->element['name']) && isset($field['name'])) {
         $this->element->addAttribute('name', $field['name']);
     }
     if ($this->type != '') {
         $this->element->addAttribute('type', $this->type);
     }
 }
Ejemplo n.º 3
0
											data-remote-format="doc"
											data-remote="../index.php?api=Hal&format=doc&option=<?php 
            echo $item->xml->config->name . $webserviceClientUri;
            ?>
"
											data-target="#webservicePreview">
											<i class="icon-file-text"></i>
											<?php 
            echo JText::_('COM_REDCORE_WEBSERVICES_WEBSERVICE_DOCUMENTATION');
            ?>
										</button>
										<button
											class="btn btn-xs btn-primary"
											type="button"
											<?php 
            if (RApiHalHelper::isAttributeTrue($item->xml->operations->read, 'authorizationNeeded', true)) {
                ?>
												disabled="disabled"
											<?php 
            }
            ?>
											data-remote-format="json"
											data-remote="../index.php?api=Hal&option=<?php 
            echo $item->xml->config->name . $webserviceClientUri;
            ?>
"
											data-target="#webservicePreview">
											<i class="icon-file-text"></i>
											<?php 
            echo JText::_('COM_REDCORE_WEBSERVICES_WEBSERVICE_PREVIEW_JSON');
            ?>
Ejemplo n.º 4
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;
 }
Ejemplo n.º 5
0
							<?php 
                if ($isOperationRead) {
                    ?>
								<td><?php 
                    echo RApiHalHelper::isAttributeTrue($field, 'isFilterField') ? JText::_('JYES') : JText::_('JNO');
                    ?>
</td>
								<td><?php 
                    echo RApiHalHelper::isAttributeTrue($field, 'isSearchableField') ? JText::_('JYES') : JText::_('JNO');
                    ?>
</td>
							<?php 
                } else {
                    ?>
								<td><?php 
                    echo RApiHalHelper::isAttributeTrue($field, 'isRequiredField') ? JText::_('JYES') : JText::_('JNO');
                    ?>
</td>
							<?php 
                }
                ?>
							<td><?php 
                echo !empty($field->description) ? $field->description : '';
                ?>
</td>
						</tr>
					<?php 
            }
            ?>
				<?php 
        }
Ejemplo n.º 6
0
 /**
  * Load model class for data manipulation
  *
  * @param   string            $elementName    Element name
  * @param   SimpleXMLElement  $configuration  Configuration for current action
  *
  * @return  mixed  Model class for data manipulation
  *
  * @since   1.2
  */
 public function loadModel($elementName, $configuration)
 {
     $this->setOptionViewName($elementName, $configuration);
     $isAdmin = RApiHalHelper::isAttributeTrue($configuration, 'isAdminClass');
     $this->addModelIncludePaths($isAdmin, $this->optionName);
     $this->loadExtensionLanguage($this->optionName, $isAdmin ? JPATH_ADMINISTRATOR : JPATH_SITE);
     $this->triggerFunction('loadExtensionLibrary', $this->optionName);
     $dataMode = strtolower(RApiHalHelper::attributeToString($configuration, 'dataMode', 'model'));
     if ($dataMode == 'helper') {
         return $this->getHelperObject();
     }
     if ($dataMode == 'table') {
         return $this->getDynamicModelObject($configuration);
     }
     if (!empty($configuration['modelClassName'])) {
         $modelClass = (string) $configuration['modelClassName'];
         if (!empty($configuration['modelClassPath'])) {
             require_once JPATH_SITE . '/' . $configuration['modelClassPath'];
             if (class_exists($modelClass)) {
                 return new $modelClass();
             }
         } else {
             $componentName = ucfirst(strtolower(substr($this->optionName, 4)));
             $prefix = $componentName . 'Model';
             $model = RModel::getInstance($modelClass, $prefix);
             if ($model) {
                 return $model;
             }
         }
     }
     if (!empty($this->viewName)) {
         $elementName = $this->viewName;
     }
     if ($isAdmin) {
         return RModel::getAdminInstance($elementName, array(), $this->optionName);
     }
     return RModel::getFrontInstance($elementName, array(), $this->optionName);
 }
Ejemplo n.º 7
0
            }
            if ($operationName == 'read list') {
                if (RApiHalHelper::isAttributeTrue($field, 'isFilterField')) {
                    $field['name'] = 'filter[' . $field['name'] . ']';
                } else {
                    continue;
                }
            }
            if ($operationName == 'read item') {
                if (!RApiHalHelper::isAttributeTrue($field, 'isPrimaryField')) {
                    continue;
                }
                // We set it as a required field for read item
                $field['isRequiredField'] = 'true';
            }
            $fieldsContainer[] = '<strong>' . $field['name'] . '</strong> ' . '(<em>' . (!empty($field['transform']) ? $field['transform'] : 'string') . ', ' . (RApiHalHelper::isAttributeTrue($field, 'isRequiredField') ? JText::_('LIB_REDCORE_API_HAL_WEBSERVICE_DOCUMENTATION_FIELD_REQUIRED') : JText::_('LIB_REDCORE_API_HAL_WEBSERVICE_DOCUMENTATION_FIELD_OPTIONAL')) . '</em>)';
        }
        echo implode(',<br />', $fieldsContainer);
    }
}
?>
			</small>
		</div>
		<div class="col-xs4 col-md-4 well" style="border: 2px solid #fff;">
			<h5 style="border-bottom: 1px solid #ddd"><strong><?php 
echo JText::_('LIB_REDCORE_API_HAL_WEBSERVICE_DOCUMENTATION_RESPONSE');
?>
</strong></h5>
			<small>
				<?php 
if (!empty($resources)) {
Ejemplo n.º 8
0
 /**
  * Gets an array of fields ready for SOAP documentation purposes
  *
  * @param   array    $fields       Array of fields using their xml properties (using 'name' for the field name itself)
  * @param   boolean  $allRequired  Mark all the fields as required
  * @param   string   $assignation  Assignation operation
  *
  * @return  array
  *
  * @since   1.4
  */
 public static function documentationFields($fields, $allRequired = false, $assignation = '=')
 {
     $fieldsArray = array();
     if ($fields && is_array($fields)) {
         foreach ($fields as $field) {
             $transform = RApiHalHelper::attributeToString($field, 'transform', 'string');
             $defaultValue = RApiHalHelper::attributeToString($field, 'defaultValue', 'null');
             if ($defaultValue == 'null' && ($allRequired || RApiHalHelper::isAttributeTrue($field, 'isRequiredField'))) {
                 $transformClass = 'RApiSoapTransform' . ucfirst($transform);
                 if (!class_exists($transformClass)) {
                     $transformClass = 'RApiSoapTransformBase';
                 }
                 $transformObject = new $transformClass();
                 $defaultValue = $transformObject->defaultValue;
             }
             $fieldsArray[] = '$' . RApiHalHelper::attributeToString($field, 'name') . ' ' . $assignation . ' (' . $transform . ') ' . $defaultValue;
         }
     }
     return $fieldsArray;
 }