You are here

function eck_get_property_type_class in Entity Construction Kit (ECK) 7.3

Get the class for a specific property type.

Parameters

string $property_type_name: The property type to retreive the class for.

Return value

object An instance of the property type class or FALSE if the class could not be loaded.

See also

eck_get_property_types()

3 calls to eck_get_property_type_class()
ECKEntity::__set in ./eck.classes.inc
Magic set.
eck_get_property_type_schema in ./eck.property_type.inc
Get property type schema.
eck__entity_type__properties_schema in ./eck.entity_type.inc
Property schema.

File

./eck.property_type.inc, line 76
Property types.

Code

function eck_get_property_type_class($property_type_name = '') {
  $property_classes =& drupal_static(__FUNCTION__, array());
  $load_types = NULL;
  if ($property_type_name && empty($property_classes[$property_type_name])) {

    // Just load the class of the property type we're looking for.
    if ($property_type = eck_get_property_types($property_type_name)) {
      $load_types = array(
        $property_type_name => $property_type,
      );
    }
  }
  elseif (!$property_type_name) {

    // Load all the classes we haven't yet loaded.
    $load_types = array_diff_key(eck_get_property_types(), $property_classes);
  }
  if ($load_types) {

    // Loop through all the property type classes to load and load them.
    // if they exist.
    foreach ($load_types as $property_type => $property_type_info) {
      if ($class = $property_type_info['class']) {
        $class_loaded = class_exists($class);
        if (!$class_loaded) {
          if (function_exists('drupal_get_path') && $property_type_info['file']) {
            $file = DRUPAL_ROOT . '/' . drupal_get_path('module', $property_type_info['module']) . '/' . $property_type_info['file'];
            if (is_file($file)) {
              require_once $file;
              $class_loaded = class_exists($class);
            }
          }
        }
        $property_classes[$property_type] = $class_loaded ? $class : FALSE;
      }
    }
  }

  // Return an array of all the property type classes.
  if (!$property_type_name) {
    return $property_classes;
  }

  // Only return the class for a specific property type.
  if (isset($property_classes[$property_type_name])) {
    return $property_classes[$property_type_name];
  }
}