コード例 #1
0
    public function export(Export\ExportStream $stream, Export\ExportContext $context) {
        $this->datasourceName = $context->get('datasourceName');

        $dashboards = array();
        foreach (gd_dashboard_findall_by_datasource(LOAD_ENTITY,$this->datasourceName) as $dashboard) {
            $export = new stdClass();

            $export->id = (int) $dashboard->nid;
            $export->title = $dashboard->title;

            $export->uuid = get_node_field_value($dashboard,'field_dashboard_uuid',0,'value',true);
            $export->description = get_node_field_value($dashboard,'field_dashboard_desc');
            $export->public = (int) get_node_field_value($dashboard,'field_dashboard_public');
            $export->custom_view = get_node_field_value($dashboard,'field_dashboard_custom_view');
            $export->reports = (array) get_node_field_node_ref($dashboard,'field_dashboard_reports',null);
            $export->config = json_decode(get_node_field_value($dashboard,'field_dashboard_config',0,'value',true));

            $export->alias = array();
            if (!empty($dashboard->field_dashboard_alias)) {
                foreach($dashboard->field_dashboard_alias[$dashboard->language] as $alias) {
                    $export->alias[] = $alias['value'];
                }
            }

            $export->tags = array();
            if (!empty($dashboard->field_dashboard_tags)) {
                foreach($dashboard->field_dashboard_tags[$dashboard->language] as $tag) {
                    $export->tags[] = $tag['tid'];
                }
            }

            // replace report nid with report uuid
            $reportNodes = gd_report_load_multiple($export->reports);
            foreach ( $export->reports as $key => $value ) {
                foreach ( $reportNodes as $node ) {
                    if ( $node->nid == $value ) {
                        $export->reports[$key] = get_node_field_value($node,'field_report_uuid',0,'value',true);
                    }
                }
            }

            // replace references with uuid
            $this->processConfig($export);

            $dashboards[] = $export;
        }
        $stream->set('dashboards',$dashboards);
    }
コード例 #2
0
    public function getReports () {
        if ( empty($this->reports) ) {
            $reportNodeIds = array();
            foreach ( $this->items as $item ) {
                if ( $item->type == 'report' ) {
                    $reportNodeIds[$item->content] = $item->content;
                }
            }
            if ( !empty($reportNodeIds) ) {
                $this->reports = gd_report_load_multiple($reportNodeIds);
            }
        }

        return $this->reports;
    }