You are here

abstract class ParserIcalFeeds in iCal feed parser 7.2

Parent class for Feeds integration.

Hierarchy

Expanded class hierarchy of ParserIcalFeeds

1 string reference to 'ParserIcalFeeds'
parser_ical_feeds_plugins in ./parser_ical.module
Implementation of ctools plugin for feeds hook_feeds_plugins().

File

includes/ParserIcal.inc, line 10

View source
abstract class ParserIcalFeeds extends FeedsParser {

  /**
   * The output sources the parser offers.
   *
   * array(
   *  'feeds_output_key' => array(
   *    'name' => 'Human readable name of output source.',
   *    'description' => 'Longer description of source.',
   *    'parser_ical_handler' => 'Method callback for parsing source before handing to feeds.',
   *  ),
   * );
   */
  protected static $sources;

  /**
   * Implementation of FeedsParser::getMappingSources().
   */
  public function getMappingSources() {

    // Quirky work around.
    // Want to have the sources as a property of the class,
    // but can't declare them with t().
    $sources = $this::$sources;
    foreach ($sources as $key => &$value) {
      if ($key == 'name' || $key == 'description') {
        $value = t($value);
      }
    }

    // parent::getMappingSources() triggers target creation too.
    return $sources + parent::getMappingSources();
  }

  /**
   * Override FeedsParser::getSourceElement().
   */
  public function getSourceElement(FeedsSource $source, FeedsParserResult $result, $property_key) {

    // Allow parent method to handle any mappings based on the parent node.
    if (substr($property_key, 0, 7) == 'parent:') {
      return parent::getSourceElement($source, $result, $property_key);
    }

    // Otherwise retrieve the current ParserIcalCreatorComponent
    // from the ParserIcalResult
    if ($item = $result
      ->currentItem()) {
      if ($position = strpos($property_key, ':')) {
        $key = substr($property_key, 0, $position);
        $attribute = substr($property_key, ++$position);
      }
      else {
        $key = $property_key;
      }

      // and use listed handler to get source output
      $handler = $this::$sources[$property_key]['parser_ical_handler'];
      $property = $item
        ->getProperty($key);
      return $this
        ->{$handler}($property_key, $property, $item, $result, $source);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ParserIcalFeeds::$sources protected static property The output sources the parser offers. 2
ParserIcalFeeds::getMappingSources public function Implementation of FeedsParser::getMappingSources().
ParserIcalFeeds::getSourceElement public function Override FeedsParser::getSourceElement().