/**
  * @param  array $data
  * @return DrupalTermContentItem
  */
 public static function factory($source, $data)
 {
     $linkData = $data['link'];
     $item = new self($source, 'menulink:' . $linkData['mlid']);
     $item->DrupalID = $linkData['mlid'];
     $item->Title = html_entity_decode($linkData['title']);
     $item->MenuTitle = $item->Title;
     $item->Description = $linkData['description'];
     $item->Path = $linkData['path'];
     $item->PathAlias = $linkData['path_alias'];
     $item->Href = $linkData['href'];
     $item->Hidden = $linkData['hidden'];
     $item->External = $linkData['external'];
     $item->HasChildren = $linkData['has_children'];
     $item->Weight = $linkData['weight'];
     $item->Depth = $linkData['depth'];
     $options = new ArrayData(array());
     if (isset($linkData['options'])) {
         foreach ($linkData['options'] as $key => $value) {
             $options->setField($key, $value);
         }
     }
     $item->Options = $options;
     // Set the name for the tree.
     $item->Name = $item->MenuTitle;
     // Check if we have to load any node content
     $item->Node = NULL;
     if (strlen($item->Path) > 5 && substr($item->Path, 0, 5) == 'node/') {
         $nodeId = 'node:' . substr($item->Path, 5);
         $item->Node = $source->getObject($source->encodeId($nodeId));
         $item->Title = $item->Node->Title;
     }
     return $item;
 }
Esempio n. 2
0
 function testSetField()
 {
     $arrayData = new ArrayData(array());
     $arrayData->setField('d', 'Delta');
     $this->assertTrue($arrayData->hasField('d'));
     $this->assertEquals('Delta', $arrayData->getField('d'));
 }
 /**
  * @param  array $data
  * @return DrupalTermContentItem
  */
 public static function factory($source, $data)
 {
     $item = new self($source, 'taxonomyterm:' . $data['tid']);
     $item->DrupalID = $data['tid'];
     $item->VocabularyID = $data['vid'];
     $item->TermName = html_entity_decode($data['name']);
     $item->Title = $item->TermName;
     $item->Description = html_entity_decode($data['description']);
     $item->Weight = $data['weight'];
     if (isset($data['language'])) {
         $item->Language = $data['language'];
     }
     if (isset($data['trid'])) {
         $item->TRID = $data['trid'];
     }
     $item->Depth = $data['depth'];
     $parents = new ArrayData(array());
     foreach ($data['parents'] as $key => $value) {
         $parents->setField($key, $value);
     }
     $item->Parents = $parents;
     // Set the name for the tree.
     $item->Name = $item->TermName;
     return $item;
 }
 protected function loadData($data)
 {
     if (isset($data['link'])) {
         $linkData = $data['link'];
         $this->DrupalMenuLinkID = $linkData['mlid'];
         $this->MenuTitle = html_entity_decode($linkData['title']);
         $this->Description = $linkData['description'];
         $this->Path = $linkData['path'];
         $this->PathAlias = $linkData['path_alias'];
         $this->Href = $linkData['href'];
         $this->Hidden = $linkData['hidden'];
         $this->External = $linkData['external'];
         $this->HasChildren = $linkData['has_children'];
         $this->Weight = $linkData['weight'];
         $this->Depth = $linkData['depth'];
         $options = new ArrayData(array());
         foreach ($linkData['options'] as $key => $value) {
             $options->setField($key, $value);
         }
         $this->Options = $options;
     }
     // Set the name for the tree.
     $this->Name = $this->MenuTitle;
     // Set up this default. It will get overridden by the DrupalNodeContentItem base class.
     $this->Title = $this->MenuTitle;
 }
 private static function _convertNode($node)
 {
     $data = new ArrayData(array('Id' => $node['id'], 'Title' => $node['title']));
     if (isset($node['children'])) {
         $data->setField('Children', self::_convertChildren($node['children']));
     }
     return $data;
 }
 public function render(Controller $controller, ArrayData $data)
 {
     // Require js library
     Requirements::javascript(CONSULTATION_MODULE_DIR . '/js/justGage/raphael.2.1.0.min.js');
     Requirements::javascript(CONSULTATION_MODULE_DIR . '/js/justGage/justgage.1.0.1.min.js');
     // Customise data
     $data->setField('jsData', $this->jsData($data));
     // Perform rendering
     return $controller->customise($data)->renderWith($this->template);
 }
 public function render(Controller $controller, ArrayData $data)
 {
     // Require js library
     Requirements::javascript(CONSULTATION_MODULE_DIR . '/js/chart.js');
     Requirements::javascript(CONSULTATION_MODULE_DIR . '/js/doughnut.init.js');
     Requirements::css(CONSULTATION_MODULE_DIR . '/css/doughnut_report.css');
     // Customise data
     $data->setField('jsData', $this->jsData($data));
     // Perform rendering
     return $controller->customise($data)->renderWith($this->template);
 }
Esempio n. 8
0
 /**
  * Helper function to convert a multi-dimensional array (associative or indexed) to an {@link ArrayList} or
  * {@link ArrayData} object structure, so that values can be used in templates.
  *
  * @param array $array The (single- or multi-dimensional) array to convert
  * @return object Either an {@link ArrayList} or {@link ArrayData} object, or the original item ($array) if $array
  * isn't an array.
  */
 public static function array_to_viewabledata($array)
 {
     // Don't transform non-arrays
     if (!is_array($array)) {
         return $array;
     }
     // Figure out whether this is indexed or associative
     $keys = array_keys($array);
     $assoc = $keys != array_keys($keys);
     if ($assoc) {
         // Treat as viewable data
         $data = new ArrayData(array());
         foreach ($array as $key => $value) {
             $data->setField($key, self::array_to_viewabledata($value));
         }
         return $data;
     } else {
         // Treat this as basic non-associative list
         $list = new ArrayList();
         foreach ($array as $value) {
             $list->push(self::array_to_viewabledata($value));
         }
         return $list;
     }
 }
Esempio n. 9
0
 /**
  * Allows the use of field values in email body.
  *
  * @param ArrayList fields
  * @return ArrayData
  */
 private function getMergeFieldsMap($fields = array())
 {
     $data = new ArrayData(array());
     foreach ($fields as $field) {
         $data->setField($field->Name, DBField::create_field('Text', $field->Value));
     }
     return $data;
 }
    public function DetailedForecast($days = 5, $render = true)
    {
        $forecast = OpenWeatherMapAPI::detailed_forecast($this->OpenWeatherMapStationID, $days);
        $forecasts = array();
        $list = $forecast->list;
        $result = new ArrayList();
        $ctr = 0;
        $ctrmax = 8 * $days;
        // chart data
        $labels = array();
        $temperaturedata = array();
        $rainfalldata = array();
        $humiditydata = array();
        $cloudcoverdata = array();
        foreach ($list as $forecastdata) {
            error_log('Iterating list for forecast data');
            $fc = $this->json_weather_to_data_object($forecastdata);
            if (isset($forecastdata->rain)) {
                $fc->Rain3Hours = $forecastdata->rain->{'3h'};
            } else {
                $fc->Rain3Hours = 0;
            }
            $dt = $forecastdata->dt;
            $ssdt = new SS_Datetime();
            $ssdt->setValue($dt);
            $fc->DateTime = $ssdt;
            $result->push($fc);
            $q = '"';
            array_push($labels, $q . $ssdt->Format('H:i') . $q);
            array_push($temperaturedata, $q . $fc->TemperatureCurrent . $q);
            error_log('RAIN - pushing ' . $fc->Rain3Hours);
            array_push($rainfalldata, $q . $fc->Rain3Hours . $q);
            array_push($humiditydata, $q . $fc->Humidity . $q);
            array_push($cloudcoverdata, $q . $fc->CloudCoverPercentage . $q);
            $ctr++;
            if ($ctr >= $ctrmax) {
                break;
            }
        }
        $labelcsv = implode(',', $labels);
        $temperaturecsv = implode(',', $temperaturedata);
        $rainfallcsv = implode(',', $rainfalldata);
        $cloudcovercsv = implode(',', $cloudcoverdata);
        $humiditycsv = implode(',', $humiditydata);
        error_log($rainfallcsv);
        // initialise variables for templates
        $varsarray = array('Labels' => $labelcsv, 'Temperatures' => $temperaturecsv, 'Rainfall' => $rainfallcsv, 'Humidity' => $humiditycsv, 'CloudCover' => $cloudcovercsv, 'Forecasts' => $result, 'Station' => $this);
        $vars = new ArrayData($varsarray);
        // get the temperature JavaScript from a template.  Override in your own theme as desired
        $chartOptions = $vars->renderWith('ChartOptionsJS');
        $vars->setField('ChartOptions', $chartOptions);
        $temperatureJS = $vars->renderWith('TemperatureChartJS');
        $rainfallJS = $vars->renderWith('RainfallChartJS');
        $cloudhumidyJS = $vars->renderWith('CloudCoverHumidityChartJS');
        if ($render) {
            Requirements::css('openweathermap/css/openweathermap.css');
            Requirements::javascript('openweathermap/javascript/chart.min.js');
            Requirements::customScript(<<<JS
\t\t\t{$temperatureJS}
\t\t\t{$rainfallJS}
\t\t\t{$cloudhumidyJS}
JS
);
            return $vars->renderWith('ForecastDetailed');
        } else {
            $vars->setField('ChartsJavascript', $temperatureJS . "\n" . $rainfallJS . "\n" . $cloudhumidyJS . "\n");
        }
        $this->TemplateVars = $vars;
    }